diff --git a/src/admin/AdminAppMenu.tsx b/src/admin/AdminAppMenu.tsx
index 7e3e8024..cfd61fe8 100644
--- a/src/admin/AdminAppMenu.tsx
+++ b/src/admin/AdminAppMenu.tsx
@@ -28,6 +28,7 @@ import IconLock from '@/components/icons/IconLock';
import { IoMdCheckboxOutline } from 'react-icons/io';
import Spinner from '@/components/Spinner';
import IconBroom from '@/components/icons/IconBroom';
+import InsightsIndicatorDot from './insights/InsightsIndicatorDot';
export default function AdminAppMenu({
active,
@@ -82,7 +83,15 @@ export default function AdminAppMenu({
if (photosCountNeedSync) {
items.push({
label: 'Updates',
- annotation: `${photosCountNeedSync}`,
+ annotation: <>
+
+ {photosCountNeedSync}
+
+
+ >,
icon: }
,
icon: ,
diff --git a/src/app/paths.ts b/src/app/paths.ts
index b81cfec2..1c3d0465 100644
--- a/src/app/paths.ts
+++ b/src/app/paths.ts
@@ -7,35 +7,39 @@ import { TAG_HIDDEN } from '@/tag';
import { Lens } from '@/lens';
// Core paths
-export const PATH_ROOT = '/';
-export const PATH_GRID = '/grid';
-export const PATH_FEED = '/feed';
-export const PATH_ADMIN = '/admin';
-export const PATH_API = '/api';
-export const PATH_SIGN_IN = '/sign-in';
-export const PATH_OG = '/og';
-// eslint-disable-next-line max-len
-export const PATH_GRID_INFERRED = GRID_HOMEPAGE_ENABLED ? PATH_ROOT : PATH_GRID;
-// eslint-disable-next-line max-len
-export const PATH_FEED_INFERRED = GRID_HOMEPAGE_ENABLED ? PATH_FEED : PATH_ROOT;
+export const PATH_ROOT = '/';
+export const PATH_GRID = '/grid';
+export const PATH_FEED = '/feed';
+export const PATH_ADMIN = '/admin';
+export const PATH_API = '/api';
+export const PATH_SIGN_IN = '/sign-in';
+export const PATH_OG = '/og';
+
+export const PATH_GRID_INFERRED = GRID_HOMEPAGE_ENABLED
+ ? PATH_ROOT
+ : PATH_GRID;
+
+export const PATH_FEED_INFERRED = GRID_HOMEPAGE_ENABLED
+ ? PATH_FEED
+ : PATH_ROOT;
// Path prefixes
-export const PREFIX_PHOTO = '/p';
-export const PREFIX_CAMERA = '/shot-on';
-export const PREFIX_LENS = '/lens';
-export const PREFIX_TAG = '/tag';
-export const PREFIX_RECIPE = '/recipe';
-export const PREFIX_FILM = '/film';
-export const PREFIX_FOCAL_LENGTH = '/focal';
+export const PREFIX_PHOTO = '/p';
+export const PREFIX_CAMERA = '/shot-on';
+export const PREFIX_LENS = '/lens';
+export const PREFIX_TAG = '/tag';
+export const PREFIX_RECIPE = '/recipe';
+export const PREFIX_FILM = '/film';
+export const PREFIX_FOCAL_LENGTH = '/focal';
// Dynamic paths
-const PATH_PHOTO_DYNAMIC = `${PREFIX_PHOTO}/[photoId]`;
-const PATH_CAMERA_DYNAMIC = `${PREFIX_CAMERA}/[make]/[model]`;
-const PATH_LENS_DYNAMIC = `${PREFIX_LENS}/[make]/[model]`;
-const PATH_TAG_DYNAMIC = `${PREFIX_TAG}/[tag]`;
-const PATH_FILM_DYNAMIC = `${PREFIX_FILM}/[film]`;
-const PATH_FOCAL_LENGTH_DYNAMIC = `${PREFIX_FOCAL_LENGTH}/[focal]`;
-const PATH_RECIPE_DYNAMIC = `${PREFIX_RECIPE}/[recipe]`;
+const PATH_PHOTO_DYNAMIC = `${PREFIX_PHOTO}/[photoId]`;
+const PATH_CAMERA_DYNAMIC = `${PREFIX_CAMERA}/[make]/[model]`;
+const PATH_LENS_DYNAMIC = `${PREFIX_LENS}/[make]/[model]`;
+const PATH_TAG_DYNAMIC = `${PREFIX_TAG}/[tag]`;
+const PATH_FILM_DYNAMIC = `${PREFIX_FILM}/[film]`;
+const PATH_FOCAL_LENGTH_DYNAMIC = `${PREFIX_FOCAL_LENGTH}/[focal]`;
+const PATH_RECIPE_DYNAMIC = `${PREFIX_RECIPE}/[recipe]`;
// Admin paths
export const PATH_ADMIN_PHOTOS = `${PATH_ADMIN}/photos`;
@@ -49,8 +53,8 @@ export const PATH_ADMIN_BASELINE = `${PATH_ADMIN}/baseline`;
export const PATH_ADMIN_COMPONENTS = `${PATH_ADMIN}/components`;
// Debug paths
-export const PATH_OG_ALL = `${PATH_OG}/all`;
-export const PATH_OG_SAMPLE = `${PATH_OG}/sample`;
+export const PATH_OG_ALL = `${PATH_OG}/all`;
+export const PATH_OG_SAMPLE = `${PATH_OG}/sample`;
// API paths
export const PATH_API_STORAGE = `${PATH_API}/storage`;
@@ -95,9 +99,6 @@ type PhotoPathParams = { photo: PhotoOrPhotoId } & PhotoSetCategory & {
showRecipe?: boolean
};
-// Absolute paths
-export const ABSOLUTE_PATH_FOR_HOME_IMAGE = `${BASE_URL}/home-image`;
-
export const pathForAdminUploadUrl = (url: string) =>
`${PATH_ADMIN_UPLOADS}/${encodeURIComponent(url)}`;
@@ -165,6 +166,9 @@ export const pathForFocalLength = (focal: number) =>
export const pathForRecipe = (recipe: string) =>
`${PREFIX_RECIPE}/${recipe}`;
+// Absolute paths
+export const ABSOLUTE_PATH_FOR_HOME_IMAGE = `${BASE_URL}/home-image`;
+
export const absolutePathForPhoto = (params: PhotoPathParams) =>
`${BASE_URL}${pathForPhoto(params)}`;
diff --git a/src/components/more/MoreMenuItem.tsx b/src/components/more/MoreMenuItem.tsx
index f021b70b..9a86cf44 100644
--- a/src/components/more/MoreMenuItem.tsx
+++ b/src/components/more/MoreMenuItem.tsx
@@ -21,7 +21,7 @@ export default function MoreMenuItem({
}: {
label: string
labelComplex?: ReactNode
- annotation?: string
+ annotation?: ReactNode
icon?: ReactNode
href?: string
hrefDownloadName?: string