@mashka818/exam-de-template 1.0.0 → 1.0.2

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 (145) hide show
  1. package/exam-guides/EXAM_COMMANDS.txt +1 -1
  2. package/exam-guides/commented-code/client/index.html +7 -0
  3. package/exam-guides/commented-code/client/package-lock.json +541 -6
  4. package/exam-guides/commented-code/client/package.json +1 -0
  5. package/exam-guides/commented-code/client/public/images/README.txt +4 -24
  6. package/exam-guides/commented-code/client/public/images/about-cleaning.png +0 -0
  7. package/exam-guides/commented-code/client/public/images/admin-banner.png +0 -0
  8. package/exam-guides/commented-code/client/public/images/empty-requests.png +0 -0
  9. package/exam-guides/commented-code/client/public/images/footer-photo-1.png +0 -0
  10. package/exam-guides/commented-code/client/public/images/footer-photo-2.png +0 -0
  11. package/exam-guides/commented-code/client/public/images/footer-photo-3.png +0 -0
  12. package/exam-guides/commented-code/client/public/images/home-hero.png +0 -0
  13. package/exam-guides/commented-code/client/public/images/login-banner.png +0 -0
  14. package/exam-guides/commented-code/client/public/images/logo.png +0 -0
  15. package/exam-guides/commented-code/client/public/images/new-request-banner.png +0 -0
  16. package/exam-guides/commented-code/client/public/images/register-banner.png +0 -0
  17. package/exam-guides/commented-code/client/public/images/requests-banner.png +0 -0
  18. package/exam-guides/commented-code/client/public/images/slide-1.png +0 -0
  19. package/exam-guides/commented-code/client/public/images/slide-2.png +0 -0
  20. package/exam-guides/commented-code/client/public/images/slide-3.png +0 -0
  21. package/exam-guides/commented-code/client/src/App.jsx +14 -0
  22. package/exam-guides/commented-code/client/src/api.js +16 -2
  23. package/exam-guides/commented-code/client/src/components/FormField.jsx +7 -0
  24. package/exam-guides/commented-code/client/src/components/Layout.jsx +8 -0
  25. package/exam-guides/commented-code/client/src/components/PageImage.jsx +7 -0
  26. package/exam-guides/commented-code/client/src/components/ProtectedRoute.jsx +7 -0
  27. package/exam-guides/commented-code/client/src/components/UserNav.jsx +7 -0
  28. package/exam-guides/commented-code/client/src/components/landing/HeroSlider.jsx +7 -0
  29. package/exam-guides/commented-code/client/src/components/landing/LandingLayout.jsx +7 -0
  30. package/exam-guides/commented-code/client/src/components/landing/SiteFooter.jsx +7 -0
  31. package/exam-guides/commented-code/client/src/config/images.js +26 -28
  32. package/exam-guides/commented-code/client/src/constants/services.js +7 -0
  33. package/exam-guides/commented-code/client/src/context/AuthContext.jsx +8 -0
  34. package/exam-guides/commented-code/client/src/index.css +8 -0
  35. package/exam-guides/commented-code/client/src/main.jsx +8 -0
  36. package/exam-guides/commented-code/client/src/pages/AdminPage.jsx +59 -24
  37. package/exam-guides/commented-code/client/src/pages/LandingPage.jsx +7 -0
  38. package/exam-guides/commented-code/client/src/pages/LoginPage.jsx +8 -0
  39. package/exam-guides/commented-code/client/src/pages/RegisterPage.jsx +8 -0
  40. package/exam-guides/commented-code/client/src/pages/RequestFormPage.jsx +7 -0
  41. package/exam-guides/commented-code/client/src/pages/RequestsPage.jsx +7 -0
  42. package/exam-guides/commented-code/client/src/utils/validation.js +8 -0
  43. package/exam-guides/commented-code/client/vite.config.js +7 -0
  44. package/exam-guides/commented-code/server/.env.example +8 -0
  45. package/exam-guides/commented-code/server/db/init.js +7 -0
  46. package/exam-guides/commented-code/server/db/pool.js +7 -0
  47. package/exam-guides/commented-code/server/db/schema.sql +5 -0
  48. package/exam-guides/commented-code/server/db/seed.sql +5 -0
  49. package/exam-guides/commented-code/server/index.js +7 -0
  50. package/exam-guides/commented-code/server/middleware/auth.js +7 -0
  51. package/exam-guides/commented-code/server/routes/admin.js +23 -3
  52. package/exam-guides/commented-code/server/routes/auth.js +7 -0
  53. package/exam-guides/commented-code/server/routes/requests.js +7 -0
  54. package/exam-guides/commented-code/server/routes/services.js +7 -0
  55. package/exam-guides/commented-code/server/utils/validation.js +7 -0
  56. package/exam-project/EXAM_COMMANDS.txt +47 -0
  57. package/exam-project/README.md +4 -7
  58. package/exam-project/THEME_BANQUETAM_NET.md +106 -0
  59. package/exam-project/client/index.html +7 -0
  60. package/exam-project/client/package-lock.json +541 -6
  61. package/exam-project/client/package.json +1 -0
  62. package/exam-project/client/public/images/README.txt +4 -24
  63. package/exam-project/client/public/images/about-cleaning.png +0 -0
  64. package/exam-project/client/public/images/admin-banner.png +0 -0
  65. package/exam-project/client/public/images/empty-requests.png +0 -0
  66. package/exam-project/client/public/images/footer-photo-1.png +0 -0
  67. package/exam-project/client/public/images/footer-photo-2.png +0 -0
  68. package/exam-project/client/public/images/footer-photo-3.png +0 -0
  69. package/exam-project/client/public/images/home-hero.png +0 -0
  70. package/exam-project/client/public/images/login-banner.png +0 -0
  71. package/exam-project/client/public/images/logo.png +0 -0
  72. package/exam-project/client/public/images/new-request-banner.png +0 -0
  73. package/exam-project/client/public/images/register-banner.png +0 -0
  74. package/exam-project/client/public/images/requests-banner.png +0 -0
  75. package/exam-project/client/public/images/slide-1.png +0 -0
  76. package/exam-project/client/public/images/slide-2.png +0 -0
  77. package/exam-project/client/public/images/slide-3.png +0 -0
  78. package/exam-project/client/src/App.jsx +35 -1
  79. package/exam-project/client/src/api.js +37 -2
  80. package/exam-project/client/src/components/FormField.jsx +22 -1
  81. package/exam-project/client/src/components/Layout.jsx +34 -4
  82. package/exam-project/client/src/components/PageImage.jsx +24 -1
  83. package/exam-project/client/src/components/ProtectedRoute.jsx +23 -1
  84. package/exam-project/client/src/components/UserNav.jsx +20 -0
  85. package/exam-project/client/src/components/landing/HeroSlider.jsx +23 -2
  86. package/exam-project/client/src/components/landing/LandingLayout.jsx +23 -1
  87. package/exam-project/client/src/components/landing/SiteFooter.jsx +20 -0
  88. package/exam-project/client/src/config/images.js +45 -26
  89. package/exam-project/client/src/constants/services.js +20 -1
  90. package/exam-project/client/src/context/AuthContext.jsx +26 -1
  91. package/exam-project/client/src/index.css +28 -1
  92. package/exam-project/client/src/main.jsx +20 -1
  93. package/exam-project/client/src/pages/AdminPage.jsx +65 -7
  94. package/exam-project/client/src/pages/LandingPage.jsx +23 -0
  95. package/exam-project/client/src/pages/LoginPage.jsx +28 -2
  96. package/exam-project/client/src/pages/RegisterPage.jsx +29 -1
  97. package/exam-project/client/src/pages/RequestFormPage.jsx +28 -3
  98. package/exam-project/client/src/pages/RequestsPage.jsx +26 -1
  99. package/exam-project/client/src/utils/validation.js +26 -1
  100. package/exam-project/client/vite.config.js +22 -1
  101. package/exam-project/scripts/unpack-template.js +2 -1
  102. package/exam-project/server/.env.example +8 -0
  103. package/exam-project/server/db/init.js +27 -3
  104. package/exam-project/server/db/pool.js +20 -1
  105. package/exam-project/server/db/schema.sql +17 -0
  106. package/exam-project/server/db/seed.sql +8 -0
  107. package/exam-project/server/index.js +24 -1
  108. package/exam-project/server/middleware/auth.js +22 -1
  109. package/exam-project/server/routes/admin.js +44 -4
  110. package/exam-project/server/routes/auth.js +27 -1
  111. package/exam-project/server/routes/requests.js +27 -4
  112. package/exam-project/server/routes/services.js +21 -1
  113. package/exam-project/server/utils/validation.js +27 -2
  114. package/package.json +1 -1
  115. package/scripts/unpack-template.js +2 -1
  116. package/exam-guides/commented-code/client/public/images/about-cleaning.svg +0 -4
  117. package/exam-guides/commented-code/client/public/images/admin-banner.svg +0 -1
  118. package/exam-guides/commented-code/client/public/images/empty-requests.svg +0 -1
  119. package/exam-guides/commented-code/client/public/images/footer-photo-1.svg +0 -4
  120. package/exam-guides/commented-code/client/public/images/footer-photo-2.svg +0 -4
  121. package/exam-guides/commented-code/client/public/images/footer-photo-3.svg +0 -4
  122. package/exam-guides/commented-code/client/public/images/home-hero.svg +0 -4
  123. package/exam-guides/commented-code/client/public/images/login-banner.svg +0 -1
  124. package/exam-guides/commented-code/client/public/images/logo.svg +0 -4
  125. package/exam-guides/commented-code/client/public/images/new-request-banner.svg +0 -1
  126. package/exam-guides/commented-code/client/public/images/register-banner.svg +0 -1
  127. package/exam-guides/commented-code/client/public/images/requests-banner.svg +0 -1
  128. package/exam-guides/commented-code/client/public/images/slide-1.svg +0 -6
  129. package/exam-guides/commented-code/client/public/images/slide-2.svg +0 -5
  130. package/exam-guides/commented-code/client/public/images/slide-3.svg +0 -5
  131. package/exam-project/client/public/images/about-cleaning.svg +0 -4
  132. package/exam-project/client/public/images/admin-banner.svg +0 -1
  133. package/exam-project/client/public/images/empty-requests.svg +0 -1
  134. package/exam-project/client/public/images/footer-photo-1.svg +0 -4
  135. package/exam-project/client/public/images/footer-photo-2.svg +0 -4
  136. package/exam-project/client/public/images/footer-photo-3.svg +0 -4
  137. package/exam-project/client/public/images/home-hero.svg +0 -4
  138. package/exam-project/client/public/images/login-banner.svg +0 -1
  139. package/exam-project/client/public/images/logo.svg +0 -4
  140. package/exam-project/client/public/images/new-request-banner.svg +0 -1
  141. package/exam-project/client/public/images/register-banner.svg +0 -1
  142. package/exam-project/client/public/images/requests-banner.svg +0 -1
  143. package/exam-project/client/public/images/slide-1.svg +0 -6
  144. package/exam-project/client/public/images/slide-2.svg +0 -5
  145. package/exam-project/client/public/images/slide-3.svg +0 -5
@@ -11,7 +11,7 @@
11
11
 
12
12
  mkdir C:\DE\work
13
13
  cd C:\DE\work
14
- npx @mashka818/exam-de-template@1.0.0 init
14
+ npx @mashka818/exam-de-template@1.0.1 init
15
15
 
16
16
  Появятся:
17
17
  exam-project\ — правите и запускаете ЗДЕСЬ
@@ -1,3 +1,10 @@
1
+ /**
2
+ * =============================================================================
3
+ * ФАЙЛ: client/index.html
4
+ * <title> — название вкладки браузера
5
+ * =============================================================================
6
+ */
7
+
1
8
  <!DOCTYPE html>
2
9
  <html lang="ru">
3
10
  <head>
@@ -6,7 +6,6 @@
6
6
  "": {
7
7
  "name": "exam-template-client",
8
8
  "dependencies": {
9
- "exam-template-moy-ne-sam": "file:..",
10
9
  "react": "^19.1.0",
11
10
  "react-dom": "^19.1.0",
12
11
  "react-router-dom": "^7.6.1"
@@ -14,12 +13,14 @@
14
13
  "devDependencies": {
15
14
  "@tailwindcss/vite": "^4.1.7",
16
15
  "@vitejs/plugin-react": "^4.5.0",
16
+ "sharp": "^0.34.5",
17
17
  "tailwindcss": "^4.1.7",
18
18
  "vite": "^6.3.5"
19
19
  }
20
20
  },
21
21
  "..": {
22
- "name": "exam-template-moy-ne-sam",
22
+ "name": "exam-template-repo",
23
+ "extraneous": true,
23
24
  "devDependencies": {
24
25
  "concurrently": "^9.1.2"
25
26
  }
@@ -287,6 +288,16 @@
287
288
  "node": ">=6.9.0"
288
289
  }
289
290
  },
291
+ "node_modules/@emnapi/runtime": {
292
+ "version": "1.10.0",
293
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
294
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
295
+ "dev": true,
296
+ "optional": true,
297
+ "dependencies": {
298
+ "tslib": "^2.4.0"
299
+ }
300
+ },
290
301
  "node_modules/@esbuild/aix-ppc64": {
291
302
  "version": "0.25.12",
292
303
  "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
@@ -703,6 +714,471 @@
703
714
  "node": ">=18"
704
715
  }
705
716
  },
717
+ "node_modules/@img/colour": {
718
+ "version": "1.1.0",
719
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
720
+ "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
721
+ "dev": true,
722
+ "engines": {
723
+ "node": ">=18"
724
+ }
725
+ },
726
+ "node_modules/@img/sharp-darwin-arm64": {
727
+ "version": "0.34.5",
728
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
729
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
730
+ "cpu": [
731
+ "arm64"
732
+ ],
733
+ "dev": true,
734
+ "optional": true,
735
+ "os": [
736
+ "darwin"
737
+ ],
738
+ "engines": {
739
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
740
+ },
741
+ "funding": {
742
+ "url": "https://opencollective.com/libvips"
743
+ },
744
+ "optionalDependencies": {
745
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
746
+ }
747
+ },
748
+ "node_modules/@img/sharp-darwin-x64": {
749
+ "version": "0.34.5",
750
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
751
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
752
+ "cpu": [
753
+ "x64"
754
+ ],
755
+ "dev": true,
756
+ "optional": true,
757
+ "os": [
758
+ "darwin"
759
+ ],
760
+ "engines": {
761
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
762
+ },
763
+ "funding": {
764
+ "url": "https://opencollective.com/libvips"
765
+ },
766
+ "optionalDependencies": {
767
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
768
+ }
769
+ },
770
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
771
+ "version": "1.2.4",
772
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
773
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
774
+ "cpu": [
775
+ "arm64"
776
+ ],
777
+ "dev": true,
778
+ "optional": true,
779
+ "os": [
780
+ "darwin"
781
+ ],
782
+ "funding": {
783
+ "url": "https://opencollective.com/libvips"
784
+ }
785
+ },
786
+ "node_modules/@img/sharp-libvips-darwin-x64": {
787
+ "version": "1.2.4",
788
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
789
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
790
+ "cpu": [
791
+ "x64"
792
+ ],
793
+ "dev": true,
794
+ "optional": true,
795
+ "os": [
796
+ "darwin"
797
+ ],
798
+ "funding": {
799
+ "url": "https://opencollective.com/libvips"
800
+ }
801
+ },
802
+ "node_modules/@img/sharp-libvips-linux-arm": {
803
+ "version": "1.2.4",
804
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
805
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
806
+ "cpu": [
807
+ "arm"
808
+ ],
809
+ "dev": true,
810
+ "optional": true,
811
+ "os": [
812
+ "linux"
813
+ ],
814
+ "funding": {
815
+ "url": "https://opencollective.com/libvips"
816
+ }
817
+ },
818
+ "node_modules/@img/sharp-libvips-linux-arm64": {
819
+ "version": "1.2.4",
820
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
821
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
822
+ "cpu": [
823
+ "arm64"
824
+ ],
825
+ "dev": true,
826
+ "optional": true,
827
+ "os": [
828
+ "linux"
829
+ ],
830
+ "funding": {
831
+ "url": "https://opencollective.com/libvips"
832
+ }
833
+ },
834
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
835
+ "version": "1.2.4",
836
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
837
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
838
+ "cpu": [
839
+ "ppc64"
840
+ ],
841
+ "dev": true,
842
+ "optional": true,
843
+ "os": [
844
+ "linux"
845
+ ],
846
+ "funding": {
847
+ "url": "https://opencollective.com/libvips"
848
+ }
849
+ },
850
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
851
+ "version": "1.2.4",
852
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
853
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
854
+ "cpu": [
855
+ "riscv64"
856
+ ],
857
+ "dev": true,
858
+ "optional": true,
859
+ "os": [
860
+ "linux"
861
+ ],
862
+ "funding": {
863
+ "url": "https://opencollective.com/libvips"
864
+ }
865
+ },
866
+ "node_modules/@img/sharp-libvips-linux-s390x": {
867
+ "version": "1.2.4",
868
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
869
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
870
+ "cpu": [
871
+ "s390x"
872
+ ],
873
+ "dev": true,
874
+ "optional": true,
875
+ "os": [
876
+ "linux"
877
+ ],
878
+ "funding": {
879
+ "url": "https://opencollective.com/libvips"
880
+ }
881
+ },
882
+ "node_modules/@img/sharp-libvips-linux-x64": {
883
+ "version": "1.2.4",
884
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
885
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
886
+ "cpu": [
887
+ "x64"
888
+ ],
889
+ "dev": true,
890
+ "optional": true,
891
+ "os": [
892
+ "linux"
893
+ ],
894
+ "funding": {
895
+ "url": "https://opencollective.com/libvips"
896
+ }
897
+ },
898
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
899
+ "version": "1.2.4",
900
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
901
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
902
+ "cpu": [
903
+ "arm64"
904
+ ],
905
+ "dev": true,
906
+ "optional": true,
907
+ "os": [
908
+ "linux"
909
+ ],
910
+ "funding": {
911
+ "url": "https://opencollective.com/libvips"
912
+ }
913
+ },
914
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
915
+ "version": "1.2.4",
916
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
917
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
918
+ "cpu": [
919
+ "x64"
920
+ ],
921
+ "dev": true,
922
+ "optional": true,
923
+ "os": [
924
+ "linux"
925
+ ],
926
+ "funding": {
927
+ "url": "https://opencollective.com/libvips"
928
+ }
929
+ },
930
+ "node_modules/@img/sharp-linux-arm": {
931
+ "version": "0.34.5",
932
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
933
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
934
+ "cpu": [
935
+ "arm"
936
+ ],
937
+ "dev": true,
938
+ "optional": true,
939
+ "os": [
940
+ "linux"
941
+ ],
942
+ "engines": {
943
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
944
+ },
945
+ "funding": {
946
+ "url": "https://opencollective.com/libvips"
947
+ },
948
+ "optionalDependencies": {
949
+ "@img/sharp-libvips-linux-arm": "1.2.4"
950
+ }
951
+ },
952
+ "node_modules/@img/sharp-linux-arm64": {
953
+ "version": "0.34.5",
954
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
955
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
956
+ "cpu": [
957
+ "arm64"
958
+ ],
959
+ "dev": true,
960
+ "optional": true,
961
+ "os": [
962
+ "linux"
963
+ ],
964
+ "engines": {
965
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
966
+ },
967
+ "funding": {
968
+ "url": "https://opencollective.com/libvips"
969
+ },
970
+ "optionalDependencies": {
971
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
972
+ }
973
+ },
974
+ "node_modules/@img/sharp-linux-ppc64": {
975
+ "version": "0.34.5",
976
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
977
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
978
+ "cpu": [
979
+ "ppc64"
980
+ ],
981
+ "dev": true,
982
+ "optional": true,
983
+ "os": [
984
+ "linux"
985
+ ],
986
+ "engines": {
987
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
988
+ },
989
+ "funding": {
990
+ "url": "https://opencollective.com/libvips"
991
+ },
992
+ "optionalDependencies": {
993
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
994
+ }
995
+ },
996
+ "node_modules/@img/sharp-linux-riscv64": {
997
+ "version": "0.34.5",
998
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
999
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
1000
+ "cpu": [
1001
+ "riscv64"
1002
+ ],
1003
+ "dev": true,
1004
+ "optional": true,
1005
+ "os": [
1006
+ "linux"
1007
+ ],
1008
+ "engines": {
1009
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1010
+ },
1011
+ "funding": {
1012
+ "url": "https://opencollective.com/libvips"
1013
+ },
1014
+ "optionalDependencies": {
1015
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
1016
+ }
1017
+ },
1018
+ "node_modules/@img/sharp-linux-s390x": {
1019
+ "version": "0.34.5",
1020
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
1021
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
1022
+ "cpu": [
1023
+ "s390x"
1024
+ ],
1025
+ "dev": true,
1026
+ "optional": true,
1027
+ "os": [
1028
+ "linux"
1029
+ ],
1030
+ "engines": {
1031
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1032
+ },
1033
+ "funding": {
1034
+ "url": "https://opencollective.com/libvips"
1035
+ },
1036
+ "optionalDependencies": {
1037
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
1038
+ }
1039
+ },
1040
+ "node_modules/@img/sharp-linux-x64": {
1041
+ "version": "0.34.5",
1042
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
1043
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
1044
+ "cpu": [
1045
+ "x64"
1046
+ ],
1047
+ "dev": true,
1048
+ "optional": true,
1049
+ "os": [
1050
+ "linux"
1051
+ ],
1052
+ "engines": {
1053
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1054
+ },
1055
+ "funding": {
1056
+ "url": "https://opencollective.com/libvips"
1057
+ },
1058
+ "optionalDependencies": {
1059
+ "@img/sharp-libvips-linux-x64": "1.2.4"
1060
+ }
1061
+ },
1062
+ "node_modules/@img/sharp-linuxmusl-arm64": {
1063
+ "version": "0.34.5",
1064
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
1065
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
1066
+ "cpu": [
1067
+ "arm64"
1068
+ ],
1069
+ "dev": true,
1070
+ "optional": true,
1071
+ "os": [
1072
+ "linux"
1073
+ ],
1074
+ "engines": {
1075
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1076
+ },
1077
+ "funding": {
1078
+ "url": "https://opencollective.com/libvips"
1079
+ },
1080
+ "optionalDependencies": {
1081
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
1082
+ }
1083
+ },
1084
+ "node_modules/@img/sharp-linuxmusl-x64": {
1085
+ "version": "0.34.5",
1086
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
1087
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
1088
+ "cpu": [
1089
+ "x64"
1090
+ ],
1091
+ "dev": true,
1092
+ "optional": true,
1093
+ "os": [
1094
+ "linux"
1095
+ ],
1096
+ "engines": {
1097
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1098
+ },
1099
+ "funding": {
1100
+ "url": "https://opencollective.com/libvips"
1101
+ },
1102
+ "optionalDependencies": {
1103
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
1104
+ }
1105
+ },
1106
+ "node_modules/@img/sharp-wasm32": {
1107
+ "version": "0.34.5",
1108
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
1109
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
1110
+ "cpu": [
1111
+ "wasm32"
1112
+ ],
1113
+ "dev": true,
1114
+ "optional": true,
1115
+ "dependencies": {
1116
+ "@emnapi/runtime": "^1.7.0"
1117
+ },
1118
+ "engines": {
1119
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1120
+ },
1121
+ "funding": {
1122
+ "url": "https://opencollective.com/libvips"
1123
+ }
1124
+ },
1125
+ "node_modules/@img/sharp-win32-arm64": {
1126
+ "version": "0.34.5",
1127
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
1128
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
1129
+ "cpu": [
1130
+ "arm64"
1131
+ ],
1132
+ "dev": true,
1133
+ "optional": true,
1134
+ "os": [
1135
+ "win32"
1136
+ ],
1137
+ "engines": {
1138
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1139
+ },
1140
+ "funding": {
1141
+ "url": "https://opencollective.com/libvips"
1142
+ }
1143
+ },
1144
+ "node_modules/@img/sharp-win32-ia32": {
1145
+ "version": "0.34.5",
1146
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
1147
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
1148
+ "cpu": [
1149
+ "ia32"
1150
+ ],
1151
+ "dev": true,
1152
+ "optional": true,
1153
+ "os": [
1154
+ "win32"
1155
+ ],
1156
+ "engines": {
1157
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1158
+ },
1159
+ "funding": {
1160
+ "url": "https://opencollective.com/libvips"
1161
+ }
1162
+ },
1163
+ "node_modules/@img/sharp-win32-x64": {
1164
+ "version": "0.34.5",
1165
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
1166
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
1167
+ "cpu": [
1168
+ "x64"
1169
+ ],
1170
+ "dev": true,
1171
+ "optional": true,
1172
+ "os": [
1173
+ "win32"
1174
+ ],
1175
+ "engines": {
1176
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1177
+ },
1178
+ "funding": {
1179
+ "url": "https://opencollective.com/libvips"
1180
+ }
1181
+ },
706
1182
  "node_modules/@jridgewell/gen-mapping": {
707
1183
  "version": "0.3.13",
708
1184
  "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -1581,10 +2057,6 @@
1581
2057
  "node": ">=6"
1582
2058
  }
1583
2059
  },
1584
- "node_modules/exam-template-moy-ne-sam": {
1585
- "resolved": "..",
1586
- "link": true
1587
- },
1588
2060
  "node_modules/fdir": {
1589
2061
  "version": "6.5.0",
1590
2062
  "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -2140,6 +2612,62 @@
2140
2612
  "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
2141
2613
  "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="
2142
2614
  },
2615
+ "node_modules/sharp": {
2616
+ "version": "0.34.5",
2617
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
2618
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
2619
+ "dev": true,
2620
+ "hasInstallScript": true,
2621
+ "dependencies": {
2622
+ "@img/colour": "^1.0.0",
2623
+ "detect-libc": "^2.1.2",
2624
+ "semver": "^7.7.3"
2625
+ },
2626
+ "engines": {
2627
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
2628
+ },
2629
+ "funding": {
2630
+ "url": "https://opencollective.com/libvips"
2631
+ },
2632
+ "optionalDependencies": {
2633
+ "@img/sharp-darwin-arm64": "0.34.5",
2634
+ "@img/sharp-darwin-x64": "0.34.5",
2635
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
2636
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
2637
+ "@img/sharp-libvips-linux-arm": "1.2.4",
2638
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
2639
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
2640
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
2641
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
2642
+ "@img/sharp-libvips-linux-x64": "1.2.4",
2643
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
2644
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
2645
+ "@img/sharp-linux-arm": "0.34.5",
2646
+ "@img/sharp-linux-arm64": "0.34.5",
2647
+ "@img/sharp-linux-ppc64": "0.34.5",
2648
+ "@img/sharp-linux-riscv64": "0.34.5",
2649
+ "@img/sharp-linux-s390x": "0.34.5",
2650
+ "@img/sharp-linux-x64": "0.34.5",
2651
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
2652
+ "@img/sharp-linuxmusl-x64": "0.34.5",
2653
+ "@img/sharp-wasm32": "0.34.5",
2654
+ "@img/sharp-win32-arm64": "0.34.5",
2655
+ "@img/sharp-win32-ia32": "0.34.5",
2656
+ "@img/sharp-win32-x64": "0.34.5"
2657
+ }
2658
+ },
2659
+ "node_modules/sharp/node_modules/semver": {
2660
+ "version": "7.8.1",
2661
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
2662
+ "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
2663
+ "dev": true,
2664
+ "bin": {
2665
+ "semver": "bin/semver.js"
2666
+ },
2667
+ "engines": {
2668
+ "node": ">=10"
2669
+ }
2670
+ },
2143
2671
  "node_modules/source-map-js": {
2144
2672
  "version": "1.2.1",
2145
2673
  "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2184,6 +2712,13 @@
2184
2712
  "url": "https://github.com/sponsors/SuperchupuDev"
2185
2713
  }
2186
2714
  },
2715
+ "node_modules/tslib": {
2716
+ "version": "2.8.1",
2717
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2718
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2719
+ "dev": true,
2720
+ "optional": true
2721
+ },
2187
2722
  "node_modules/update-browserslist-db": {
2188
2723
  "version": "1.2.3",
2189
2724
  "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
@@ -15,6 +15,7 @@
15
15
  "devDependencies": {
16
16
  "@tailwindcss/vite": "^4.1.7",
17
17
  "@vitejs/plugin-react": "^4.5.0",
18
+ "sharp": "^0.34.5",
18
19
  "tailwindcss": "^4.1.7",
19
20
  "vite": "^6.3.5"
20
21
  }
@@ -1,26 +1,6 @@
1
- ПАПКА КАРТИНОК ДЛЯ ФРОНТА (экзамен / Figma)
2
- ============================================
1
+ Картинки только в формате PNG.
3
2
 
4
- 1. Экспортируйте макеты из Figma в PNG (или оставьте SVG-заглушки).
5
- 2. Кладите файлы СЮДА: client/public/images/
6
- 3. В браузере они доступны как: /images/имя-файла.png
3
+ На экзамене: экспорт из Figma сохранить с ТЕМ ЖЕ именем (logo.png, slide-1.png ).
4
+ Список имён client/src/config/images.js (поле file).
7
5
 
8
- Список файлов (имена менять можно, но тогда правьте client/src/config/images.js):
9
-
10
- logo.png — логотип в шапке (или logo.svg)
11
- home-hero.png — главная страница
12
- register-banner.png — регистрация
13
- login-banner.png — вход
14
- requests-banner.png — список заявок
15
- new-request-banner.png — форма новой заявки
16
- admin-banner.png — панель администратора
17
- empty-requests.png — пустой список заявок
18
-
19
- ЛЕНДИНГ (/):
20
- slide-1.png … slide-3.png — слайдер
21
- about-cleaning.png — блок «О клининге»
22
- footer-photo-1.png … 3.png — круглые фото в футере
23
-
24
- При смене темы: замените картинки на свои, подписи alt — в config/images.js
25
-
26
- БАНКЕТАМ.НЕТ: slide-1…slide-4.png (4 слайда); тексты банкетов в HeroSlider.jsx
6
+ Замена: перезаписать PNG в этой папке, перезапускать npm run dev не обязательно (Vite подхватит).