Fix admin tag editor icon alignment

This commit is contained in:
Sam Becker 2024-01-08 23:27:13 -06:00
parent 7868f70c95
commit dba4e534fb
3 changed files with 24 additions and 6 deletions

View File

@ -6,6 +6,8 @@ import { PATH_ADMIN, PATH_ADMIN_TAGS, pathForTag } from '@/site/paths';
import PhotoTag from '@/tag/PhotoTag'; import PhotoTag from '@/tag/PhotoTag';
import { photoLabelForCount } from '@/photo'; import { photoLabelForCount } from '@/photo';
import PhotoLightbox from '@/photo/PhotoLightbox'; import PhotoLightbox from '@/photo/PhotoLightbox';
import FavsTag from '@/tag/FavsTag';
import { isTagFavs } from '@/tag';
const MAX_PHOTO_TO_SHOW = 6; const MAX_PHOTO_TO_SHOW = 6;
@ -28,8 +30,14 @@ export default async function PhotoPageEdit({ params: { tag } }: Props) {
<AdminChildPage <AdminChildPage
backPath={PATH_ADMIN_TAGS} backPath={PATH_ADMIN_TAGS}
backLabel="Tags" backLabel="Tags"
breadcrumb={<div className="flex item gap-2"> breadcrumb={<div className="flex items-center gap-2">
<PhotoTag {...{ tag }} /> {isTagFavs(tag)
? <div className="[&>*>*>*>svg]:translate-y-[0.5px]">
<FavsTag />
</div>
: <div className="[&>*>*>*>svg]:translate-y-[1.5px]">
<PhotoTag {...{ tag }} />
</div>}
<div className="text-dim uppercase"> <div className="text-dim uppercase">
<span>{count}</span> <span>{count}</span>
<span className="hidden xs:inline-block"> <span className="hidden xs:inline-block">

View File

@ -7,10 +7,11 @@ import DeleteButton from '@/admin/DeleteButton';
import { photoQuantityText } from '@/photo'; import { photoQuantityText } from '@/photo';
import { getUniqueTagsHiddenCached } from '@/cache'; import { getUniqueTagsHiddenCached } from '@/cache';
import PhotoTag from '@/tag/PhotoTag'; import PhotoTag from '@/tag/PhotoTag';
import { formatTag } from '@/tag'; import { formatTag, isTagFavs, sortTagsObject } from '@/tag';
import EditButton from '@/admin/EditButton'; import EditButton from '@/admin/EditButton';
import { pathForAdminTagEdit } from '@/site/paths'; import { pathForAdminTagEdit } from '@/site/paths';
import { clsx } from 'clsx/lite'; import { clsx } from 'clsx/lite';
import FavsTag from '@/tag/FavsTag';
export default async function AdminTagsPage() { export default async function AdminTagsPage() {
const tags = await getUniqueTagsHiddenCached(); const tags = await getUniqueTagsHiddenCached();
@ -21,10 +22,12 @@ export default async function AdminTagsPage() {
<div className="space-y-6"> <div className="space-y-6">
<div className="space-y-4"> <div className="space-y-4">
<AdminGrid> <AdminGrid>
{tags.map(({ tag, count }) => {sortTagsObject(tags).map(({ tag, count }) =>
<Fragment key={tag}> <Fragment key={tag}>
<div className="pr-2 -translate-y-0.5"> <div className="pr-2 -translate-y-0.5">
<PhotoTag {...{ tag }} /> {isTagFavs(tag)
? <FavsTag />
: <PhotoTag {...{ tag }} />}
</div> </div>
<div className="text-dim uppercase"> <div className="text-dim uppercase">
{photoQuantityText(count, false)} {photoQuantityText(count, false)}

View File

@ -33,9 +33,16 @@ export const sortTags = (
tags: string[], tags: string[],
tagToHide?: string, tagToHide?: string,
) => tags ) => tags
.filter(t => t !== tagToHide) .filter(tag => tag !== tagToHide)
.sort((a, b) => isTagFavs(a) ? -1 : a.localeCompare(b)); .sort((a, b) => isTagFavs(a) ? -1 : a.localeCompare(b));
export const sortTagsObject = (
tags: Tags,
tagToHide?: string,
) => tags
.filter(({ tag }) => tag!== tagToHide)
.sort(({ tag: a }, { tag: b }) => isTagFavs(a) ? -1 : a.localeCompare(b));
export const descriptionForTaggedPhotos = ( export const descriptionForTaggedPhotos = (
photos: Photo[], photos: Photo[],
dateBased?: boolean, dateBased?: boolean,