diff --git a/src/photo/PhotoGridSidebar.tsx b/src/photo/PhotoGridSidebar.tsx
index b8ca861e..5af0a37c 100644
--- a/src/photo/PhotoGridSidebar.tsx
+++ b/src/photo/PhotoGridSidebar.tsx
@@ -21,6 +21,8 @@ import {
safelyParseFormattedHtml,
} from '@/utility/html';
import { clsx } from 'clsx/lite';
+import { convertTagToRecipe, isTagRecipe } from '@/recipe';
+import PhotoRecipe from '@/recipe/PhotoRecipe';
export default function PhotoGridSidebar({
tags,
@@ -51,35 +53,47 @@ export default function PhotoGridSidebar({
className="text-icon translate-y-[1px]"
/>}
items={tagsIncludingHidden.map(({ tag, count }) => {
- switch (tag) {
- case TAG_FAVS:
- return ;
- case TAG_HIDDEN:
- return ;
- default:
- return ;
+ } else {
+ switch (tag) {
+ case TAG_FAVS:
+ return ;
+ case TAG_HIDDEN:
+ return ;
+ default:
+ return ;
+ }
}
})}
/>
diff --git a/src/recipe/PhotoRecipe.tsx b/src/recipe/PhotoRecipe.tsx
index 81b9a4d5..fe1b4fed 100644
--- a/src/recipe/PhotoRecipe.tsx
+++ b/src/recipe/PhotoRecipe.tsx
@@ -1,4 +1,4 @@
-import { pathForTag } from '@/app/paths';
+import { pathForRecipe } from '@/app/paths';
import EntityLink, {
EntityLinkExternalProps,
} from '@/components/primitives/EntityLink';
@@ -25,8 +25,13 @@ export default function PhotoRecipe({
}
+ href={pathForRecipe(recipe)}
+ icon={}
className={className}
type={type}
badged={badged}
@@ -34,15 +39,17 @@ export default function PhotoRecipe({
prefetch={prefetch}
hoverEntity={countOnHover}
/>
-
+ {recipeOnClick &&
+ }
);
}
diff --git a/src/recipe/RecipeModal.tsx b/src/recipe/RecipeModal.tsx
index 78b0a452..5c6576a3 100644
--- a/src/recipe/RecipeModal.tsx
+++ b/src/recipe/RecipeModal.tsx
@@ -2,7 +2,7 @@
import Modal from '@/components/Modal';
import { useAppState } from '@/state/AppState';
-import PhotoRecipeOGTile from './PhotoRecipeOGTile';
+import PhotoRecipeGrid from './PhotoRecipeGrid';
export default function ShareModals() {
const {
@@ -15,7 +15,10 @@ export default function ShareModals() {
onClose={() => setRecipeModalProps?.(undefined)}
container={false}
>
-
+ setRecipeModalProps?.(undefined),
+ }}/>
;
}
}
diff --git a/src/recipe/index.ts b/src/recipe/index.ts
index 7fbc7f1c..9499a3b5 100644
--- a/src/recipe/index.ts
+++ b/src/recipe/index.ts
@@ -1,13 +1,8 @@
import { absolutePathForRecipe, absolutePathForRecipeImage } from '@/app/paths';
-import { Photo, photoQuantityText } from '@/photo';
+import { descriptionForPhotoSet, Photo, photoQuantityText } from '@/photo';
import { PhotoDateRange } from '@/photo';
-import {
- descriptionForTaggedPhotos,
- isTagFavs,
- isTagHidden,
- Tags,
-} from '../tag';
-import { convertStringToArray, parameterize } from '@/utility/string';
+import { Tags } from '../tag';
+import { parameterize } from '@/utility/string';
import { capitalizeWords } from '@/utility/string';
import { FujifilmRecipe } from '@/platforms/fujifilm/recipe';
import { FilmSimulation } from '@/simulation';
@@ -21,8 +16,11 @@ export interface RecipeProps {
exposure?: string
}
+export const isTagRecipe = (tag: string) =>
+ (new RegExp(`^${KEY_RECIPE}-?`).test(tag));
+
export const convertTagsToRecipes = (tags: Tags) =>
- tags.filter(({ tag }) => tag.startsWith(KEY_RECIPE))
+ tags.filter(({ tag }) => isTagRecipe(tag))
.map(({ tag }) => convertTagToRecipe(tag));
export const convertRecipeToTag = (recipe: string) =>
@@ -34,15 +32,6 @@ export const convertTagToRecipe = (tag: string) =>
export const formatRecipe = (recipe?: string) =>
capitalizeWords(recipe?.replaceAll('-', ' '));
-export const getValidationMessageForTags = (tags?: string) => {
- const reservedTags = (convertStringToArray(tags) ?? [])
- .filter(tag => isTagFavs(tag) || isTagHidden(tag))
- .map(tag => tag.toLocaleUpperCase());
- return reservedTags.length
- ? `Reserved tags: ${reservedTags.join(', ').toLocaleLowerCase()}`
- : undefined;
-};
-
export const titleForRecipe = (
recipe: string,
photos:Photo[] = [],
@@ -52,6 +41,20 @@ export const titleForRecipe = (
photoQuantityText(explicitCount ?? photos.length),
].join(' ');
+export const descriptionForRecipePhotos = (
+ photos: Photo[] = [],
+ dateBased?: boolean,
+ explicitCount?: number,
+ explicitDateRange?: PhotoDateRange,
+) =>
+ descriptionForPhotoSet(
+ photos,
+ undefined,
+ dateBased,
+ explicitCount,
+ explicitDateRange,
+ );
+
export const generateMetaForRecipe = (
recipe: string,
photos: Photo[],
@@ -61,6 +64,6 @@ export const generateMetaForRecipe = (
url: absolutePathForRecipe(recipe),
title: titleForRecipe(recipe, photos, explicitCount),
description:
- descriptionForTaggedPhotos(photos, true, explicitCount, explicitDateRange),
+ descriptionForRecipePhotos(photos, true, explicitCount, explicitDateRange),
images: absolutePathForRecipeImage(recipe),
});
diff --git a/src/tag/PhotoTags.tsx b/src/tag/PhotoTags.tsx
index 802f76ee..9b0a3217 100644
--- a/src/tag/PhotoTags.tsx
+++ b/src/tag/PhotoTags.tsx
@@ -3,6 +3,8 @@ import { isTagFavs } from '.';
import FavsTag from './FavsTag';
import { EntityLinkExternalProps } from '@/components/primitives/EntityLink';
import { Fragment } from 'react';
+import { convertTagToRecipe, isTagRecipe } from '@/recipe';
+import PhotoRecipe from '@/recipe/PhotoRecipe';
export default function PhotoTags({
tags,
@@ -15,9 +17,14 @@ export default function PhotoTags({
{tags.map(tag =>
- {isTagFavs(tag)
- ?
- : }
+ {isTagRecipe(tag)
+ ? console.log('clicked'),
+ }} />
+ : isTagFavs(tag)
+ ?
+ : }
)}
);