Add indicator dot to menu updates
This commit is contained in:
parent
61f358b73b
commit
c9fe29286b
@ -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: <>
|
||||
<span className="mr-3">
|
||||
{photosCountNeedSync}
|
||||
</span>
|
||||
<InsightsIndicatorDot
|
||||
className="inline-block translate-y-[-0.5px]"
|
||||
size="small"
|
||||
/>
|
||||
</>,
|
||||
icon: <IconBroom
|
||||
size={17}
|
||||
className="translate-y-[0.5px]"
|
||||
|
||||
@ -82,7 +82,8 @@ export default function AdminPhotoMenu({
|
||||
{photoNeedsToBeSynced(photo) &&
|
||||
<InsightsIndicatorDot
|
||||
colorOverride="blue"
|
||||
className="translate-y-[1.5px]"
|
||||
className="ml-1 translate-y-[1.5px]"
|
||||
size="small"
|
||||
/>}
|
||||
</span>,
|
||||
icon: <IconGrSync className="translate-x-[-1px]" />,
|
||||
|
||||
@ -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)}`;
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ export default function MoreMenuItem({
|
||||
}: {
|
||||
label: string
|
||||
labelComplex?: ReactNode
|
||||
annotation?: string
|
||||
annotation?: ReactNode
|
||||
icon?: ReactNode
|
||||
href?: string
|
||||
hrefDownloadName?: string
|
||||
|
||||
Loading…
Reference in New Issue
Block a user