Vercel/src/admin/AdminAlbumsTable.tsx
Sam Becker ee9f3f4dc2
Album upgrades (#326)
* Add tag-to-album upgrade, introduce tag/album ••• menus

* Refine entity ••• menus

* Add album tagging to "Select ..." mode

* Finalize batch select/upload add album

* Refine final tag/album interactions

* Refine upgradeTagToAlbum capitalization

* Fix batch album upload, z-index issues

* Refine readonly styles
2025-09-18 22:41:12 -05:00

44 lines
1.4 KiB
TypeScript

import FormWithConfirm from '@/components/FormWithConfirm';
import AdminTable from '@/admin/AdminTable';
import { Fragment } from 'react';
import DeleteFormButton from '@/admin/DeleteFormButton';
import EditButton from '@/admin/EditButton';
import { pathForAdminAlbumEdit } from '@/app/path';
import { clsx } from 'clsx/lite';
import { getAppText } from '@/i18n/state/server';
import { Albums, deleteAlbumConfirmationText } from '@/album';
import AdminAlbumBadge from './AdminAlbumBadge';
import { deleteAlbumFormAction } from '@/album/actions';
export default async function AdminAlbumsTable({
albums,
}: {
albums: Albums
}) {
const appText = await getAppText();
return (
<AdminTable>
{albums.map(({ album, count }) =>
<Fragment key={album.slug}>
<div className="pr-2 col-span-2">
<AdminAlbumBadge {...{ album, count }} />
</div>
<div className={clsx(
'flex flex-nowrap',
'gap-2 sm:gap-3 items-center',
)}>
<EditButton path={pathForAdminAlbumEdit(album)} />
<FormWithConfirm
action={deleteAlbumFormAction}
confirmText={deleteAlbumConfirmationText(album, count, appText)}
>
<input type="hidden" name="album" value={album.id} />
<DeleteFormButton clearLocalState />
</FormWithConfirm>
</div>
</Fragment>)}
</AdminTable>
);
}