diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index 5cd6cb0a..c1739e1d 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -14,6 +14,7 @@ import {ToastContainer} from "react-toastify";
import 'react-toastify/dist/ReactToastify.css';
import {dom} from "@fortawesome/fontawesome-svg-core";
import {AnnouncementBannerProvider} from "@/components/announcement-banner/AnnouncementBannerProvider";
+import {ImageZoom} from "@/components/ImageZoom";
function onRouteChange() {
useMobileNavigationStore.getState().close()
@@ -42,6 +43,7 @@ export default function App({ Component, pageProps }) {
+
>
)
}
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
index 83a8b516..f6c81cfc 100644
--- a/src/styles/tailwind.css
+++ b/src/styles/tailwind.css
@@ -120,4 +120,97 @@
.Toastify__close-button {
color: var(--toastify-text-color-light) !important;
+}
+
+/* Image Zoom / Lightbox Styles */
+.imagewrapper,
+.imagewrapper-big {
+ cursor: zoom-in;
+}
+
+.image-zoom-overlay {
+ position: fixed;
+ inset: 0;
+ z-index: 9999;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: rgba(0, 0, 0, 0.9);
+ backdrop-filter: blur(4px);
+ animation: fadeIn 0.2s ease-out;
+}
+
+.image-zoom-overlay.closing {
+ animation: fadeOut 0.2s ease-out;
+}
+
+.image-zoom-content {
+ max-width: 80vw;
+ max-height: 80vh;
+ object-fit: contain;
+ border-radius: 4px;
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
+ animation: zoomIn 0.2s ease-out;
+ cursor: zoom-out;
+}
+
+.image-zoom-content.closing {
+ animation: zoomOut 0.2s ease-out;
+}
+
+.image-zoom-close {
+ position: absolute;
+ top: 1rem;
+ right: 1rem;
+ padding: 0.5rem;
+ color: white;
+ background-color: rgba(255, 255, 255, 0.1);
+ border: none;
+ border-radius: 50%;
+ cursor: pointer;
+ transition: background-color 0.2s ease;
+}
+
+.image-zoom-close:hover {
+ background-color: rgba(255, 255, 255, 0.2);
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeOut {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+
+@keyframes zoomIn {
+ from {
+ transform: scale(0.9);
+ opacity: 0;
+ }
+ to {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+
+@keyframes zoomOut {
+ from {
+ transform: scale(1);
+ opacity: 1;
+ }
+ to {
+ transform: scale(0.9);
+ opacity: 0;
+ }
}
\ No newline at end of file