diff --git a/package.json b/package.json index 1214589..640b8d2 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "next-auth": "^5.0.0-beta.25", "next-themes": "^0.4.6", "react": "^19.1.0", - "react-calendar": "^5.1.0", + "react-big-calendar": "^1.18.0", "react-dom": "^19.0.0", "react-hook-form": "^7.56.4", "swagger-ui-react": "^5.24.1", @@ -57,6 +57,7 @@ "@tailwindcss/postcss": "4.1.10", "@types/node": "22.15.32", "@types/react": "19.1.8", + "@types/react-big-calendar": "^1", "@types/react-dom": "19.1.6", "@types/swagger-ui-react": "5", "@types/webpack-env": "1.18.8", diff --git a/src/app/home/page.tsx b/src/app/home/page.tsx index 527b231..b20d042 100644 --- a/src/app/home/page.tsx +++ b/src/app/home/page.tsx @@ -1,114 +1,31 @@ -import React from 'react'; +"use client"; -const Calendar: React.FC = () => { - const today = new Date(); - const currentYear = today.getFullYear(); - const currentMonth = today.getMonth(); - const currentDate = today.getDate(); +import { Calendar, momentLocalizer } from 'react-big-calendar'; +import moment from 'moment'; +import 'react-big-calendar/lib/css/react-big-calendar.css'; +import 'react-big-calendar/lib/addons/dragAndDrop/styles.css'; - const firstDayMonth = new Date(currentYear, currentMonth, 1); - const lastDayMonth = new Date(currentYear, currentMonth + 1, 0); - const startDay = (firstDayMonth.getDay() + 6) % 7; - const daysMonth = lastDayMonth.getDate(); +moment.updateLocale('en', { + week: { + dow: 1, + doy: 4, + }, +}); - const weeks: (number | null)[][] = []; - let currentDay = 1; +const localizer = momentLocalizer(moment) - const firstWeek: (number | null)[] = []; - for (let i = 0; i < 7; i++) { - if (i < startDay) { - firstWeek.push(null); - } else { - firstWeek.push(currentDay); - currentDay++; - } - } - weeks.push(firstWeek); +const MyCalendar = (props) => ( +
+ +
+) - while (currentDay <= daysMonth) { - const week: (number | null)[] = []; - for (let i = 0; i < 7; i++) { - if (currentDay <= daysMonth) { - week.push(currentDay); - currentDay++; - } else { - week.push(null); - } - } - weeks.push(week); - } - - const weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; - - return ( -
-

- {new Date(currentYear, currentMonth).toLocaleString('en-EN', { - month: 'long', - year: 'numeric' - })} -

- - - - {weekdays.map((day, index) => ( - - ))} - - - - {weeks.map((week, weekIndex) => ( - - {week.map((day, dayIndex) => ( - - ))} - - ))} - -
- {day} -
- {day && ( -
- {day} -
- )} -
-
- ); -}; - -export default Calendar; \ No newline at end of file +export default MyCalendar; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 705a064..f747c59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -128,7 +128,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.3.1": +"@babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.7": version: 7.27.6 resolution: "@babel/runtime@npm:7.27.6" checksum: 10c0/89726be83f356f511dcdb74d3ea4d873a5f0cf0017d4530cb53aa27380c01ca102d573eff8b8b77815e624b1f8c24e7f0311834ad4fb632c90a770fda00bd4c8 @@ -1196,6 +1196,13 @@ __metadata: languageName: node linkType: hard +"@popperjs/core@npm:^2.11.6": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 + languageName: node + linkType: hard + "@prisma/client@npm:^6.9.0": version: 6.10.1 resolution: "@prisma/client@npm:6.10.1" @@ -1945,6 +1952,17 @@ __metadata: languageName: node linkType: hard +"@restart/hooks@npm:^0.4.7": + version: 0.4.16 + resolution: "@restart/hooks@npm:0.4.16" + dependencies: + dequal: "npm:^2.0.3" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/b6a0f1db046cdec28737092ab5defdfb25fad498d37d218646f7f123aed02a5078b1c89ae631bda14d9ee35f7bb8c9e0f15379b1a45003144dc30cd15e8ba668 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -3045,6 +3063,13 @@ __metadata: languageName: node linkType: hard +"@types/date-arithmetic@npm:*": + version: 4.1.4 + resolution: "@types/date-arithmetic@npm:4.1.4" + checksum: 10c0/4ee68b5a422bd5f1cf08923d18a08db558e653bbdc597677e0465a330f1e807da0e79b06b72651b62b19b4b922a779470f84657cbd765805f84f33af518b408f + languageName: node + linkType: hard + "@types/es-aggregate-error@npm:^1.0.2": version: 1.0.6 resolution: "@types/es-aggregate-error@npm:1.0.6" @@ -3111,6 +3136,13 @@ __metadata: languageName: node linkType: hard +"@types/prop-types@npm:*": + version: 15.7.15 + resolution: "@types/prop-types@npm:15.7.15" + checksum: 10c0/b59aad1ad19bf1733cf524fd4e618196c6c7690f48ee70a327eb450a42aab8e8a063fbe59ca0a5701aebe2d92d582292c0fb845ea57474f6a15f6994b0e260b2 + languageName: node + linkType: hard + "@types/ramda@npm:~0.30.0": version: 0.30.2 resolution: "@types/ramda@npm:0.30.2" @@ -3120,6 +3152,17 @@ __metadata: languageName: node linkType: hard +"@types/react-big-calendar@npm:^1": + version: 1.16.2 + resolution: "@types/react-big-calendar@npm:1.16.2" + dependencies: + "@types/date-arithmetic": "npm:*" + "@types/prop-types": "npm:*" + "@types/react": "npm:*" + checksum: 10c0/a2ea4116b999cf8dac014fdc4a9f0c10fb2fd9d9886857e93649c0a601057e93e73e3d9096a756b76e227e08f68e4c979f91bf4cfd96692aea3ab7f3df0745d0 + languageName: node + linkType: hard + "@types/react-dom@npm:19.1.6": version: 19.1.6 resolution: "@types/react-dom@npm:19.1.6" @@ -3129,7 +3172,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:19.1.8": +"@types/react@npm:*, @types/react@npm:19.1.8, @types/react@npm:>=16.9.11": version: 19.1.8 resolution: "@types/react@npm:19.1.8" dependencies: @@ -3182,6 +3225,13 @@ __metadata: languageName: node linkType: hard +"@types/warning@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/warning@npm:3.0.3" + checksum: 10c0/82c1235bd05d7f6940f80012404844e225d589ad338aa4585b231a2c8deacc695b683f4168757c82c10047b81854cbeaaeefd60536dd67bb48f8a65e20410652 + languageName: node + linkType: hard + "@types/webpack-env@npm:1.18.8": version: 1.18.8 resolution: "@types/webpack-env@npm:1.18.8" @@ -3460,13 +3510,6 @@ __metadata: languageName: node linkType: hard -"@wojtekmaj/date-utils@npm:^1.1.3": - version: 1.5.1 - resolution: "@wojtekmaj/date-utils@npm:1.5.1" - checksum: 10c0/7c213cca5ab6b84ef61b9aea2b9fb8a04bf4c9764b28a97ffc4ee46a3e81560532a74d106a6f8aeef4792e1aaa6ea3dfd3c4a639dddbea560eb3f33cd62b8d7d - languageName: node - linkType: hard - "abbrev@npm:^3.0.0": version: 3.0.1 resolution: "abbrev@npm:3.0.1" @@ -4058,7 +4101,14 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^2.0.0, clsx@npm:^2.1.1": +"clsx@npm:^1.2.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 + languageName: node + linkType: hard + +"clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 @@ -4219,6 +4269,20 @@ __metadata: languageName: node linkType: hard +"date-arithmetic@npm:^4.1.0": + version: 4.1.0 + resolution: "date-arithmetic@npm:4.1.0" + checksum: 10c0/697774a1a6a1b226004b5527326599c01a095bf715a0d43089e0493a565a91e7f4342b1b73b855c0e7b0caaf4bc947a61bc35ec60d162d52ef3c3c08eab26b6e + languageName: node + linkType: hard + +"dayjs@npm:^1.11.7": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: 10c0/a3caf6ac8363c7dade9d1ee797848ddcf25c1ace68d9fe8678ecf8ba0675825430de5d793672ec87b24a69bf04a1544b176547b2539982275d5542a7955f35b7 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0": version: 4.4.1 resolution: "debug@npm:4.4.1" @@ -4297,6 +4361,13 @@ __metadata: languageName: node linkType: hard +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + "detect-libc@npm:^2.0.3, detect-libc@npm:^2.0.4": version: 2.0.4 resolution: "detect-libc@npm:2.0.4" @@ -4336,6 +4407,16 @@ __metadata: languageName: node linkType: hard +"dom-helpers@npm:^5.2.0, dom-helpers@npm:^5.2.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": "npm:^7.8.7" + csstype: "npm:^3.0.2" + checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c + languageName: node + linkType: hard + "dompurify@npm:=3.2.4": version: 3.2.4 resolution: "dompurify@npm:3.2.4" @@ -5366,15 +5447,6 @@ __metadata: languageName: node linkType: hard -"get-user-locale@npm:^2.2.1": - version: 2.3.2 - resolution: "get-user-locale@npm:2.3.2" - dependencies: - mem: "npm:^8.0.0" - checksum: 10c0/2796b3fc3782b1f4826f31e899642cf72eeb23e296e1cf55280aab5caf7a25f4b906491ee1508a001519d6a410902ccf8fa8edaa895b7aee5dfd422ffe5523b9 - languageName: node - linkType: hard - "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -5409,6 +5481,13 @@ __metadata: languageName: node linkType: hard +"globalize@npm:^0.1.1": + version: 0.1.1 + resolution: "globalize@npm:0.1.1" + checksum: 10c0/6d4687e7c52a38e7f16f77339aef9b3364c34ce8cc1c8b8495b76418013252eaf5b2453fbc2d8bb9e6e56c739262665484dc7ac51b729501ff0a3b822730116b + languageName: node + linkType: hard + "globals@npm:^14.0.0": version: 14.0.0 resolution: "globals@npm:14.0.0" @@ -5672,7 +5751,7 @@ __metadata: languageName: node linkType: hard -"invariant@npm:^2.2.2": +"invariant@npm:^2.2.2, invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" dependencies: @@ -6365,6 +6444,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 + languageName: node + linkType: hard + "lodash.debounce@npm:^4": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" @@ -6486,6 +6572,13 @@ __metadata: languageName: node linkType: hard +"luxon@npm:^3.2.1": + version: 3.6.1 + resolution: "luxon@npm:3.6.1" + checksum: 10c0/906d57a9dc4d1de9383f2e9223e378c298607c1b4d17b6657b836a3cd120feb1c1de3b5d06d846a3417e1ca764de8476e8c23b3cd4083b5cdb870adcb06a99d5 + languageName: node + linkType: hard + "magic-string@npm:^0.30.17": version: 0.30.17 resolution: "magic-string@npm:0.30.17" @@ -6521,15 +6614,6 @@ __metadata: languageName: node linkType: hard -"map-age-cleaner@npm:^0.1.3": - version: 0.1.3 - resolution: "map-age-cleaner@npm:0.1.3" - dependencies: - p-defer: "npm:^1.0.0" - checksum: 10c0/7495236c7b0950956c144fd8b4bc6399d4e78072a8840a4232fe1c4faccbb5eb5d842e5c0a56a60afc36d723f315c1c672325ca03c1b328650f7fcc478f385fd - languageName: node - linkType: hard - "markdown-it@npm:^14.1.0": version: 14.1.0 resolution: "markdown-it@npm:14.1.0" @@ -6587,6 +6671,7 @@ __metadata: "@tanstack/react-query": "npm:^5.80.7" "@types/node": "npm:22.15.32" "@types/react": "npm:19.1.8" + "@types/react-big-calendar": "npm:^1" "@types/react-dom": "npm:19.1.6" "@types/swagger-ui-react": "npm:5" "@types/webpack-env": "npm:1.18.8" @@ -6606,7 +6691,7 @@ __metadata: prettier: "npm:3.5.3" prisma: "npm:6.10.1" react: "npm:^19.1.0" - react-calendar: "npm:^5.1.0" + react-big-calendar: "npm:^1.18.0" react-dom: "npm:^19.0.0" react-hook-form: "npm:^7.56.4" swagger-ui-react: "npm:^5.24.1" @@ -6620,13 +6705,10 @@ __metadata: languageName: unknown linkType: soft -"mem@npm:^8.0.0": - version: 8.1.1 - resolution: "mem@npm:8.1.1" - dependencies: - map-age-cleaner: "npm:^0.1.3" - mimic-fn: "npm:^3.1.0" - checksum: 10c0/5829c404d024c1accaf76ebacbc7eae9b59e5ce5722d184aa24e8387a8097a499f6aa7e181021003c51eb87b2dcdc9a2270050c58753cce761de206643cba91c +"memoize-one@npm:^6.0.0": + version: 6.0.0 + resolution: "memoize-one@npm:6.0.0" + checksum: 10c0/45c88e064fd715166619af72e8cf8a7a17224d6edf61f7a8633d740ed8c8c0558a4373876c9b8ffc5518c2b65a960266adf403cc215cb1e90f7e262b58991f54 languageName: node linkType: hard @@ -6677,13 +6759,6 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-fn@npm:3.1.0" - checksum: 10c0/a07cdd8ed6490c2dff5b11f889b245d9556b80f5a653a552a651d17cff5a2d156e632d235106c2369f00cccef4071704589574cf3601bc1b1400a1f620dff067 - languageName: node - linkType: hard - "minim@npm:~0.23.8": version: 0.23.8 resolution: "minim@npm:0.23.8" @@ -6821,6 +6896,22 @@ __metadata: languageName: node linkType: hard +"moment-timezone@npm:^0.5.40": + version: 0.5.48 + resolution: "moment-timezone@npm:0.5.48" + dependencies: + moment: "npm:^2.29.4" + checksum: 10c0/ab14ec9d94bc33f29ac18e5417b7f8aca0b17130b952c5cc9697b8fea839e5ece9313af5fd3c9703a05db472b1560ddbfc7ad2aa24aac9afd047d6da6c3c6033 + languageName: node + linkType: hard + +"moment@npm:^2.29.4": + version: 2.30.1 + resolution: "moment@npm:2.30.1" + checksum: 10c0/865e4279418c6de666fca7786607705fd0189d8a7b7624e2e56be99290ac846f90878a6f602e34b4e0455c549b85385b1baf9966845962b313699e7cb847543a + languageName: node + linkType: hard + "ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -7346,13 +7437,6 @@ __metadata: languageName: node linkType: hard -"p-defer@npm:^1.0.0": - version: 1.0.0 - resolution: "p-defer@npm:1.0.0" - checksum: 10c0/ed603c3790e74b061ac2cb07eb6e65802cf58dce0fbee646c113a7b71edb711101329ad38f99e462bd2e343a74f6e9366b496a35f1d766c187084d3109900487 - languageName: node - linkType: hard - "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -7590,7 +7674,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.8.1": +"prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -7680,22 +7764,30 @@ __metadata: languageName: node linkType: hard -"react-calendar@npm:^5.1.0": - version: 5.1.0 - resolution: "react-calendar@npm:5.1.0" +"react-big-calendar@npm:^1.18.0": + version: 1.19.4 + resolution: "react-big-calendar@npm:1.19.4" dependencies: - "@wojtekmaj/date-utils": "npm:^1.1.3" - clsx: "npm:^2.0.0" - get-user-locale: "npm:^2.2.1" - warning: "npm:^4.0.0" + "@babel/runtime": "npm:^7.20.7" + clsx: "npm:^1.2.1" + date-arithmetic: "npm:^4.1.0" + dayjs: "npm:^1.11.7" + dom-helpers: "npm:^5.2.1" + globalize: "npm:^0.1.1" + invariant: "npm:^2.2.4" + lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + luxon: "npm:^3.2.1" + memoize-one: "npm:^6.0.0" + moment: "npm:^2.29.4" + moment-timezone: "npm:^0.5.40" + prop-types: "npm:^15.8.1" + react-overlays: "npm:^5.2.1" + uncontrollable: "npm:^7.2.1" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/27673f639c5d6296342a2a888436b31a5d602faeaae01be83b2beb98ff568b0a3d1514f5cc50fcacf3ac50b9c0b9d2fb423b0c001a8f5f1a22816671409e2616 + react: ^16.14.0 || ^17 || ^18 || ^19 + react-dom: ^16.14.0 || ^17 || ^18 || ^19 + checksum: 10c0/78730e6396c06a27b24af860fa64d063f6407ccd12546116eb8cb2f274d827891c68a701b9c83f9903f63e5dea03fb6a3dd46d6a0a9186b3ab2f7e1d994fe86b languageName: node linkType: hard @@ -7781,6 +7873,32 @@ __metadata: languageName: node linkType: hard +"react-lifecycles-compat@npm:^3.0.4": + version: 3.0.4 + resolution: "react-lifecycles-compat@npm:3.0.4" + checksum: 10c0/1d0df3c85af79df720524780f00c064d53a9dd1899d785eddb7264b378026979acbddb58a4b7e06e7d0d12aa1494fd5754562ee55d32907b15601068dae82c27 + languageName: node + linkType: hard + +"react-overlays@npm:^5.2.1": + version: 5.2.1 + resolution: "react-overlays@npm:5.2.1" + dependencies: + "@babel/runtime": "npm:^7.13.8" + "@popperjs/core": "npm:^2.11.6" + "@restart/hooks": "npm:^0.4.7" + "@types/warning": "npm:^3.0.0" + dom-helpers: "npm:^5.2.0" + prop-types: "npm:^15.7.2" + uncontrollable: "npm:^7.2.1" + warning: "npm:^4.0.3" + peerDependencies: + react: ">=16.3.0" + react-dom: ">=16.3.0" + checksum: 10c0/61836490040cfcdebc792b6eddcfac47b7b7e159f99304165371e9eb389a6875f20ddba3433421413ccfb918e8da6042ab2829f9b1f6f5dd9f8476aa16ddcfbe + languageName: node + linkType: hard + "react-redux@npm:^9.2.0": version: 9.2.0 resolution: "react-redux@npm:9.2.0" @@ -9193,6 +9311,20 @@ __metadata: languageName: node linkType: hard +"uncontrollable@npm:^7.2.1": + version: 7.2.1 + resolution: "uncontrollable@npm:7.2.1" + dependencies: + "@babel/runtime": "npm:^7.6.3" + "@types/react": "npm:>=16.9.11" + invariant: "npm:^2.2.4" + react-lifecycles-compat: "npm:^3.0.4" + peerDependencies: + react: ">=15.0.0" + checksum: 10c0/81473e892027a99f1ead6b9afd16db65097651cd36c4b6db710728f206f1fc4b82ba9170ecb4a1127a23857e01ba51c0194d0a7cfeecfea61ba9418e0276cb56 + languageName: node + linkType: hard + "undici-types@npm:~6.21.0": version: 6.21.0 resolution: "undici-types@npm:6.21.0" @@ -9393,7 +9525,7 @@ __metadata: languageName: node linkType: hard -"warning@npm:^4.0.0": +"warning@npm:^4.0.3": version: 4.0.3 resolution: "warning@npm:4.0.3" dependencies: