diff --git a/app/Competences/page.jsx b/app/Competences/page.jsx index 7ea4b2c..252e85f 100644 --- a/app/Competences/page.jsx +++ b/app/Competences/page.jsx @@ -3,6 +3,7 @@ import { useEffect, useState } from "react"; import Link from "next/link"; import { getApiUrl } from "../utils/getApiUrl"; // đŸ”„ Import de l'URL dynamique +import CarouselCompetences from "../components/CarouselCompetences"; // đŸ”„ Import du composant CarouselCompetences export default function Page() { const [competences, setCompetences] = useState([]); // đŸ”„ Stocker les compĂ©tences une seule fois @@ -28,34 +29,31 @@ export default function Page() { return (
- {/* Titre de la page */} -

Mes Compétences

{/* Affichage d'un message si aucune compétence n'est trouvée */} {competences.length === 0 ? (

Aucune compétence disponible.

) : ( -
+
{competences.map((competence) => { - const picture = competence.picture?.[0]; - const imageUrl = picture?.url ? `${apiUrl}${picture.url}` : "/placeholder.jpg"; + const pictures = competence.picture || []; + const images = pictures.map(picture => ({ + url: picture.url ? `${apiUrl}${picture.url}` : "/placeholder.jpg", + alt: picture.name || "Competence image" + })); return (
{/* Lien vers la page de détail de la compétence */} -
- {picture?.name +
+
-

{competence.name}

+

{competence.name}

{competence.description}

@@ -68,4 +66,4 @@ export default function Page() { )}
); -} +} \ No newline at end of file diff --git a/app/admin/messages/page.tsx b/app/admin/messages/page.tsx index 8a28499..1ab7aec 100644 --- a/app/admin/messages/page.tsx +++ b/app/admin/messages/page.tsx @@ -1,11 +1,13 @@ -// Composant principal de la page des messages +import { getApiUrl } from "../../utils/getApiUrl"; // đŸ”„ Import de l'URL dynamique +// // Composant principal de la page des messages export default async function MessagesPage() { // RĂ©cupĂ©ration des messages depuis l'API Strapi - const res = await fetch("http://localhost:1337/api/messages"); + const apiUrl = getApiUrl(); + const res = await fetch(`${apiUrl}/api/messages`); const { data } = await res.json(); return ( -
+
{/* Titre de la page */}

📬 Messages reçus

diff --git a/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307.png b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307.png new file mode 100644 index 0000000..98913e2 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307.png differ diff --git a/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63.png b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63.png new file mode 100644 index 0000000..75d5258 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63.png differ diff --git a/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0.png b/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0.png new file mode 100644 index 0000000..84e32cf Binary files /dev/null and b/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0.png differ diff --git a/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887.png b/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887.png new file mode 100644 index 0000000..4ae8472 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887.png differ diff --git a/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e.png b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e.png new file mode 100644 index 0000000..0098526 Binary files /dev/null and b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e.png differ diff --git a/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485.png b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485.png new file mode 100644 index 0000000..a5e073b Binary files /dev/null and b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485.png differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8.png b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8.png new file mode 100644 index 0000000..b86f7f0 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8.png differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908.png b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908.png new file mode 100644 index 0000000..56de096 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908.png differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902.png b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902.png new file mode 100644 index 0000000..93fbe63 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902.png differ diff --git a/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372.png b/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372.png new file mode 100644 index 0000000..276536b Binary files /dev/null and b/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372.png differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b.png b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b.png new file mode 100644 index 0000000..75b5492 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b.png differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b.png b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b.png new file mode 100644 index 0000000..859efb6 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b.png differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1.png b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1.png new file mode 100644 index 0000000..b4ce586 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1.png differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336.png b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336.png new file mode 100644 index 0000000..463f03f Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336.png differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab.png b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab.png new file mode 100644 index 0000000..455bb16 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab.png differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824.png b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824.png new file mode 100644 index 0000000..ef42105 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824.png differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780.png b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780.png new file mode 100644 index 0000000..5993145 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780.png differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9.png b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9.png new file mode 100644 index 0000000..5a7da01 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9.png differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664.png b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664.png new file mode 100644 index 0000000..b790160 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664.png differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c.png b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c.png new file mode 100644 index 0000000..943c1b3 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c.png differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9.png b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9.png new file mode 100644 index 0000000..c217a3d Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9.png differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918.png b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918.png new file mode 100644 index 0000000..8516c38 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918.png differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37.png b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37.png new file mode 100644 index 0000000..7edb2d2 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37.png differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344.png b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344.png new file mode 100644 index 0000000..b71c004 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344.png differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5.png b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5.png new file mode 100644 index 0000000..d970c34 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5.png differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1.png b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1.png new file mode 100644 index 0000000..a6ba3be Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1.png differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640.png b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640.png new file mode 100644 index 0000000..cdb848c Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640.png differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b.png b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b.png new file mode 100644 index 0000000..348f9cd Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b.png differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8.png b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8.png new file mode 100644 index 0000000..b1b472f Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8.png differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0.png b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0.png new file mode 100644 index 0000000..fe4e390 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0.png differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466.png b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466.png new file mode 100644 index 0000000..ab0f7d8 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466.png differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366.png b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366.png new file mode 100644 index 0000000..ba5e6f3 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366.png differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c.png b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c.png new file mode 100644 index 0000000..74fd8e2 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c.png differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1.png b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1.png new file mode 100644 index 0000000..06c0575 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1.png differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9.png b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9.png new file mode 100644 index 0000000..b60102e Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9.png differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd.png b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd.png new file mode 100644 index 0000000..52bbea7 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd.png differ diff --git a/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f.png b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f.png new file mode 100644 index 0000000..4d8ddff Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f.png differ diff --git a/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd.png b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd.png new file mode 100644 index 0000000..d3e09fb Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd.png differ diff --git a/app/assets/images/impressions/agencement.jpg b/app/assets/images/impressions/agencement.jpg new file mode 100644 index 0000000..829febb Binary files /dev/null and b/app/assets/images/impressions/agencement.jpg differ diff --git a/app/assets/images/impressions/agencement2.jpg b/app/assets/images/impressions/agencement2.jpg new file mode 100644 index 0000000..13e58cf Binary files /dev/null and b/app/assets/images/impressions/agencement2.jpg differ diff --git a/app/assets/images/impressions/agencement3.jpg b/app/assets/images/impressions/agencement3.jpg new file mode 100644 index 0000000..75833dc Binary files /dev/null and b/app/assets/images/impressions/agencement3.jpg differ diff --git a/app/assets/images/impressions/agencement4.jpg b/app/assets/images/impressions/agencement4.jpg new file mode 100644 index 0000000..6be7c99 Binary files /dev/null and b/app/assets/images/impressions/agencement4.jpg differ diff --git a/app/assets/images/impressions/casque2.jpg b/app/assets/images/impressions/casque2.jpg new file mode 100644 index 0000000..380c162 Binary files /dev/null and b/app/assets/images/impressions/casque2.jpg differ diff --git a/app/assets/images/impressions/casque3.jpg b/app/assets/images/impressions/casque3.jpg new file mode 100644 index 0000000..c505840 Binary files /dev/null and b/app/assets/images/impressions/casque3.jpg differ diff --git a/app/assets/images/impressions/casque4.jpg b/app/assets/images/impressions/casque4.jpg new file mode 100644 index 0000000..da2d664 Binary files /dev/null and b/app/assets/images/impressions/casque4.jpg differ diff --git a/app/assets/images/impressions/casque5.jpg b/app/assets/images/impressions/casque5.jpg new file mode 100644 index 0000000..f811ff1 Binary files /dev/null and b/app/assets/images/impressions/casque5.jpg differ diff --git a/app/assets/images/impressions/cybersabre.jpg b/app/assets/images/impressions/cybersabre.jpg new file mode 100644 index 0000000..f5793d6 Binary files /dev/null and b/app/assets/images/impressions/cybersabre.jpg differ diff --git a/app/assets/images/impressions/gravure.jpg b/app/assets/images/impressions/gravure.jpg new file mode 100644 index 0000000..d6d0b62 Binary files /dev/null and b/app/assets/images/impressions/gravure.jpg differ diff --git a/app/assets/images/impressions/gravurevegeta.jpg b/app/assets/images/impressions/gravurevegeta.jpg new file mode 100644 index 0000000..c32dc33 Binary files /dev/null and b/app/assets/images/impressions/gravurevegeta.jpg differ diff --git a/app/assets/images/impressions/hautbureau.jpg b/app/assets/images/impressions/hautbureau.jpg new file mode 100644 index 0000000..8b93420 Binary files /dev/null and b/app/assets/images/impressions/hautbureau.jpg differ diff --git a/app/assets/images/impressions/hautbureau2.jpg b/app/assets/images/impressions/hautbureau2.jpg new file mode 100644 index 0000000..d8032f5 Binary files /dev/null and b/app/assets/images/impressions/hautbureau2.jpg differ diff --git a/app/assets/images/impressions/hautbureau3.jpg b/app/assets/images/impressions/hautbureau3.jpg new file mode 100644 index 0000000..0067ce9 Binary files /dev/null and b/app/assets/images/impressions/hautbureau3.jpg differ diff --git a/app/assets/images/impressions/pc.jpg b/app/assets/images/impressions/pc.jpg new file mode 100644 index 0000000..c830423 Binary files /dev/null and b/app/assets/images/impressions/pc.jpg differ diff --git a/app/assets/images/impressions/ring.png b/app/assets/images/impressions/ring.png new file mode 100644 index 0000000..35ba2b2 Binary files /dev/null and b/app/assets/images/impressions/ring.png differ diff --git a/app/assets/images/impressions/sauron.jpg b/app/assets/images/impressions/sauron.jpg new file mode 100644 index 0000000..e30c0ba Binary files /dev/null and b/app/assets/images/impressions/sauron.jpg differ diff --git a/app/assets/images/impressions/supportcasque.jpg b/app/assets/images/impressions/supportcasque.jpg new file mode 100644 index 0000000..5cf29b6 Binary files /dev/null and b/app/assets/images/impressions/supportcasque.jpg differ diff --git a/app/assets/images/impressions/vase.png b/app/assets/images/impressions/vase.png new file mode 100644 index 0000000..8efdc0f Binary files /dev/null and b/app/assets/images/impressions/vase.png differ diff --git a/app/assets/images/impressions/vase2.png b/app/assets/images/impressions/vase2.png new file mode 100644 index 0000000..3a65352 Binary files /dev/null and b/app/assets/images/impressions/vase2.png differ diff --git a/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective.jpg b/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective.jpg new file mode 100644 index 0000000..00138cd Binary files /dev/null and b/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective.jpg differ diff --git a/app/assets/images/imprimante/lampdeath.jpg b/app/assets/images/imprimante/lampdeath.jpg new file mode 100644 index 0000000..76b83c5 Binary files /dev/null and b/app/assets/images/imprimante/lampdeath.jpg differ diff --git a/app/assets/images/imprimante/sidewinderx2.png b/app/assets/images/imprimante/sidewinderx2.png new file mode 100644 index 0000000..fc522af Binary files /dev/null and b/app/assets/images/imprimante/sidewinderx2.png differ diff --git a/app/assets/images/imprimante/x1c.jpg b/app/assets/images/imprimante/x1c.jpg new file mode 100644 index 0000000..91d1999 Binary files /dev/null and b/app/assets/images/imprimante/x1c.jpg differ diff --git a/app/assets/images/imprimante/x1c2.jpg b/app/assets/images/imprimante/x1c2.jpg new file mode 100644 index 0000000..64bdb9e Binary files /dev/null and b/app/assets/images/imprimante/x1c2.jpg differ diff --git a/app/assets/images/imprimante/x1c3.jpg b/app/assets/images/imprimante/x1c3.jpg new file mode 100644 index 0000000..9b9d5ff Binary files /dev/null and b/app/assets/images/imprimante/x1c3.jpg differ diff --git a/app/assets/images/imprimante/x1c4.jpg b/app/assets/images/imprimante/x1c4.jpg new file mode 100644 index 0000000..820d8f1 Binary files /dev/null and b/app/assets/images/imprimante/x1c4.jpg differ diff --git a/app/assets/images/imprimante/x1c5.jpg b/app/assets/images/imprimante/x1c5.jpg new file mode 100644 index 0000000..892da29 Binary files /dev/null and b/app/assets/images/imprimante/x1c5.jpg differ diff --git a/app/assets/images/imprimante/x1cseche.jpg b/app/assets/images/imprimante/x1cseche.jpg new file mode 100644 index 0000000..8582867 Binary files /dev/null and b/app/assets/images/imprimante/x1cseche.jpg differ diff --git a/app/assets/images/photo2.jpg b/app/assets/images/photo2.jpg new file mode 100644 index 0000000..12b3989 Binary files /dev/null and b/app/assets/images/photo2.jpg differ diff --git a/app/assets/images/photo3.png b/app/assets/images/photo3.png new file mode 100644 index 0000000..0615557 Binary files /dev/null and b/app/assets/images/photo3.png differ diff --git a/app/assets/main.css b/app/assets/main.css index 31fefc0..0d4c217 100644 --- a/app/assets/main.css +++ b/app/assets/main.css @@ -5,6 +5,102 @@ @import url('https://fonts.googleapis.com/css2?family=Exo+2:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Audiowide&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@400;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap'); + +.font-orbitron-24 { + font-family: 'Orbitron', sans-serif; + font-size: 24px; + color: #333333; +} + +.font-orbitron-16 { + font-family: 'Orbitron', sans-serif; + font-size: 16px; + color: #333333; +} + +.font-orbitron-12 { + font-family: 'Orbitron', sans-serif; + font-size: 12px; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 24px en gras */ +.font-orbitron-24-bold { + font-family: 'Orbitron', sans-serif; + font-size: 24px; + font-weight: bold; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 24px en italique */ +.font-orbitron-24-italic { + font-family: 'Orbitron', sans-serif; + font-size: 24px; + font-style: italic; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 24px en gras et italique */ +.font-orbitron-24-bold-italic { + font-family: 'Orbitron', sans-serif; + font-size: 24px; + font-weight: bold; + font-style: italic; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 16px en gras */ +.font-orbitron-16-bold { + font-family: 'Orbitron', sans-serif; + font-size: 16px; + font-weight: bold; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 16px en italique */ +.font-orbitron-16-italic { + font-family: 'Orbitron', sans-serif; + font-size: 16px; + font-style: italic; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 16px en gras et italique */ +.font-orbitron-16-bold-italic { + font-family: 'Orbitron', sans-serif; + font-size: 16px; + font-weight: bold; + font-style: italic; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 12px en gras */ +.font-orbitron-12-bold { + font-family: 'Orbitron', sans-serif; + font-size: 12px; + font-weight: bold; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 12px en italique */ +.font-orbitron-12-italic { + font-family: 'Orbitron', sans-serif; + font-size: 12px; + font-style: italic; + color: #333333; +} + +/* Classe pour la police Orbitron avec taille 12px en gras et italique */ +.font-orbitron-12-bold-italic { + font-family: 'Orbitron', sans-serif; + font-size: 12px; + font-weight: bold; + font-style: italic; + color: #333333; +} /* Importation des styles de base, des composants et des utilitaires de Tailwind CSS */ @tailwind base; @@ -98,4 +194,4 @@ .show-scrollbar:hover::-webkit-scrollbar { display: block; /* WebKit (Chrome, Safari, Edge) */ -} \ No newline at end of file +} diff --git a/app/components/Carousel.tsx b/app/components/Carousel.tsx index dd9dfcc..0f07b81 100644 --- a/app/components/Carousel.tsx +++ b/app/components/Carousel.tsx @@ -54,7 +54,7 @@ export default function Carousel({ images, className }: CarouselProps) {
{/* Bouton de fermeture */} -

+

© {new Date().getFullYear()} Gras-Calvet Fernand

); diff --git a/app/contact/page.js b/app/contact/page.js index d3a9652..b6ec507 100644 --- a/app/contact/page.js +++ b/app/contact/page.js @@ -1,25 +1,47 @@ -import ContactForm from "../components/ContactForm"; // Importation du composant ContactForm +// Importation de ContactForm et getApiUrl +import ContactForm from "../components/ContactForm"; +import { getApiUrl } from "../utils/getApiUrl"; export default function ContactPage() { + // Définition de l'URL API dynamique + const apiUrl = getApiUrl(); + return (
- {/* Titre de la page */} -

Contactez-moi

- + {/* Titre avec un cadre */} +

+ 📬 Correspondance +

+ {/* Texte d'introduction */} -

+

Vous pouvez me contacter via ce formulaire ou sur mes réseaux sociaux.

- - {/* Liens vers les réseaux sociaux */} -
- LinkedIn - Twitter - Email + + {/* Liens vers les réseaux sociaux mis à jour */} +
+ + LinkedIn + + + Facebook + + + Email +
- {/* Formulaire de contact */} - + {/* Formulaire de contact amélioré */} +
+ +
); -} \ No newline at end of file +} diff --git a/app/globals.css b/app/globals.css index 875bf95..0f75502 100644 --- a/app/globals.css +++ b/app/globals.css @@ -39,4 +39,4 @@ body { /* Classe utilitaire pour appliquer l'animation de fondu en entrée */ .animate-fade-in { animation: fade-in 0.5s ease-out; /* Animation de 0.5s avec une courbe de transition */ -} \ No newline at end of file +} diff --git a/app/layout.tsx b/app/layout.tsx index 0a374c2..35dc329 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -12,9 +12,9 @@ export default function RootLayout({ children }) {
-

Portfolio Gras-Calvet Fernand

+

Portfolio Gras-Calvet Fernand