diff --git a/eslint.config.mjs b/eslint.config.mjs
index 927fb05f..9a536467 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -14,7 +14,7 @@ const eslintConfig = [
rules: {
'@next/next/no-img-element': 'off',
'@typescript-eslint/no-explicit-any': 'off',
- 'no-unused-expressions': 'warn',
+ 'no-unused-expressions': ['warn'],
'@typescript-eslint/no-unused-vars': [
'warn', {
'argsIgnorePattern': '^_',
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 8b229bd6..feeadc9a 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -19,6 +19,7 @@ import Footer from '@/site/Footer';
import CommandK from '@/site/CommandK';
import SwrConfigClient from '../state/SwrConfigClient';
import AdminBatchEditPanel from '@/admin/AdminBatchEditPanel';
+import ShareModals from '@/share/ShareModals';
import '../site/globals.css';
import '../site/sonner.css';
@@ -97,6 +98,7 @@ export default function RootLayout({
'min-h-[16rem] sm:min-h-[30rem]',
'mb-12',
)}>
+
{children}
diff --git a/src/share/ShareModals.tsx b/src/share/ShareModals.tsx
new file mode 100644
index 00000000..2e0ea8fe
--- /dev/null
+++ b/src/share/ShareModals.tsx
@@ -0,0 +1,38 @@
+'use client';
+
+import PhotoShareModal from '@/photo/PhotoShareModal';
+import TagShareModal from '@/tag/TagShareModal';
+import CameraShareModal from '@/camera/CameraShareModal';
+import FilmSimulationShareModal from '@/simulation/FilmSimulationShareModal';
+import FocalLengthShareModal from '@/focal/FocalLengthShareModal';
+import { useAppState } from '@/state/AppState';
+
+export default function ShareModals() {
+ const { shareModalProps = {} } = useAppState();
+
+ const {
+ photo,
+ photos,
+ count,
+ dateRange,
+ tag,
+ camera,
+ simulation,
+ focal,
+ } = shareModalProps;
+
+ if (photo) {
+ return ;
+ } else if (photos) {
+ const attributes = {photos, count, dateRange};
+ if (tag) {
+ return ;
+ } else if (camera) {
+ return ;
+ } else if (simulation) {
+ return ;
+ } else if (focal !== undefined) {
+ return ;
+ }
+ }
+}
diff --git a/src/share/index.ts b/src/share/index.ts
new file mode 100644
index 00000000..9ba4ffd3
--- /dev/null
+++ b/src/share/index.ts
@@ -0,0 +1,6 @@
+import { Photo, PhotoSetAttributes, PhotoSetCategory } from '@/photo';
+
+export type ShareModalProps = Omit & {
+ photo?: Photo
+ photos?: Photo[]
+} & PhotoSetCategory;
diff --git a/src/state/AppState.ts b/src/state/AppState.ts
index 2ccd7675..733df7a0 100644
--- a/src/state/AppState.ts
+++ b/src/state/AppState.ts
@@ -1,5 +1,6 @@
import { Dispatch, SetStateAction, createContext, useContext } from 'react';
import { AnimationConfig } from '@/components/AnimateItems';
+import { ShareModalProps } from '@/share';
export interface AppStateContext {
// GLOBAL
@@ -16,6 +17,8 @@ export interface AppStateContext {
// MODAL
isCommandKOpen?: boolean
setIsCommandKOpen?: Dispatch>
+ shareModalProps?: ShareModalProps
+ setShareModalProps?: Dispatch>
// ADMIN
userEmail?: string
setUserEmail?: Dispatch>