-
-
-
Create a new gallery
-
-
-
+
+
setTitle(e.target.value)}
+ placeholder="Enter gallery title"
+ className="w-full rounded-lg border mt-10 border-gray-300 p-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:focus-visible:outline-[#e6dfd6] dark:border-[#504b46] dark:bg-[#1d1c1a] dark:text-[#f3f0ea] dark:placeholder:text-gray-400"
+ />
+
+ {error && (
+
+ {error}
+
+ )}
+
);
}
diff --git a/frontend/src/components/gallery/DeleteGalleryDialog.tsx b/frontend/src/components/gallery/DeleteGalleryDialog.tsx
index 9e7d6f8..6b4bb22 100644
--- a/frontend/src/components/gallery/DeleteGalleryDialog.tsx
+++ b/frontend/src/components/gallery/DeleteGalleryDialog.tsx
@@ -66,7 +66,7 @@ export default function DeleteGalleryDialog({
type="button"
onClick={onCancel}
disabled={deleting}
- className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:opacity-50 dark:border-[#504b46] dark:hover:bg-[#302e2a]"
+ className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:opacity-50 dark:border-[#504b46] dark:hover:bg-[#302e2a] dark:focus-visible:outline-[#e6dfd6]"
>
Cancel
@@ -75,7 +75,7 @@ export default function DeleteGalleryDialog({
type="button"
onClick={onConfirm}
disabled={deleting}
- className="min-h-11 cursor-pointer rounded bg-red-700 px-4 py-2 text-sm text-white hover:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-700 disabled:cursor-wait disabled:opacity-50"
+ className="min-h-11 cursor-pointer rounded bg-red-700 px-4 py-2 text-sm text-white hover:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-700 disabled:cursor-wait disabled:opacity-50 dark:focus-visible:outline-red-400 "
>
{deleting ? "Deleting..." : "Delete gallery"}
diff --git a/frontend/src/components/gallery/GalleryCard.tsx b/frontend/src/components/gallery/GalleryCard.tsx
index 5ba070b..9866b24 100644
--- a/frontend/src/components/gallery/GalleryCard.tsx
+++ b/frontend/src/components/gallery/GalleryCard.tsx
@@ -16,7 +16,7 @@ export default function GalleryCard({
return (
{imageUrls.length === 0 ? (
diff --git a/frontend/src/components/gallery/GalleryHeader.tsx b/frontend/src/components/gallery/GalleryHeader.tsx
index b14de6a..dd1e5a3 100644
--- a/frontend/src/components/gallery/GalleryHeader.tsx
+++ b/frontend/src/components/gallery/GalleryHeader.tsx
@@ -60,13 +60,13 @@ export default function GalleryHeader({
onChange={(event) => onTitleChange(event.target.value)}
required
disabled={renaming}
- className="min-h-11 w-full rounded border border-gray-300 bg-white px-3 py-2 font-serif text-3xl text-gray-900 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:opacity-50 dark:border-[#504b46] dark:bg-[#242321] dark:text-[#e6dfd6] sm:text-4xl"
+ className="min-h-11 w-full rounded border border-gray-300 bg-white px-3 py-2 font-serif text-3xl text-gray-900 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:focus-visible:outline-[#e6dfd6] disabled:opacity-50 dark:border-[#504b46] dark:bg-[#242321] dark:text-[#e6dfd6] sm:text-4xl"
/>
@@ -75,7 +75,7 @@ export default function GalleryHeader({
type="button"
onClick={onCancelRenaming}
disabled={renaming}
- className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:opacity-50 dark:hover:bg-[#302e2a]"
+ className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:focus-visible:outline-[#e6dfd6] disabled:opacity-50 dark:hover:bg-[#302e2a]"
>
Cancel
@@ -92,7 +92,7 @@ export default function GalleryHeader({
onClick={() => onStartRenaming(title)}
aria-label="Rename gallery"
title="Rename gallery"
- className="inline-flex min-h-11 min-w-11 shrink-0 cursor-pointer items-center justify-center rounded-full text-gray-600 hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:text-gray-300 dark:hover:bg-[#302e2a]"
+ className="inline-flex min-h-11 min-w-11 shrink-0 cursor-pointer items-center justify-center rounded-full text-gray-600 hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:focus-visible:outline-[#e6dfd6] dark:text-gray-300 dark:hover:bg-[#302e2a]"
>
@@ -111,7 +111,7 @@ export default function GalleryHeader({
-
+
{totalCount} {totalCount === 1 ? "artwork" : "artworks"}
@@ -120,7 +120,7 @@ export default function GalleryHeader({
onClick={onToggleEditing}
disabled={renaming}
aria-pressed={isEditing}
- className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700"
+ className="min-h-11 cursor-pointer rounded border border-gray-300 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:focus-visible:outline-[#e6dfd6] dark:border-[#504b46] dark:text-[#e6dfd6] dark:hover:bg-[#302e2a]"
>
{isEditing ? "Done" : "Edit gallery"}
diff --git a/frontend/src/pages/ArtworkDetailPage.tsx b/frontend/src/pages/ArtworkDetailPage.tsx
index 05792fc..40852b4 100644
--- a/frontend/src/pages/ArtworkDetailPage.tsx
+++ b/frontend/src/pages/ArtworkDetailPage.tsx
@@ -75,7 +75,7 @@ export default function ArtworkDetailPage() {
type="button"
aria-label="Add artwork to gallery"
onClick={() => setShowGalleryModal(true)}
- className="flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-gray-300 text-2xl font-light text-gray-500 transition cursor-pointer hover:border-gray-500 hover:text-black dark:border-[#504b46] dark:text-gray-300 dark:hover:border-gray-400 dark:hover:text-white"
+ className="flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-full border border-gray-300 text-2xl font-light text-gray-500 transition-[background-color,border-color,color] hover:border-gray-500 hover:text-black focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:border-[#504b46] dark:text-gray-300 dark:hover:border-gray-400 dark:hover:text-white dark:focus-visible:outline-[#e6dfd6]"
>
+
diff --git a/frontend/src/pages/GalleryPage.tsx b/frontend/src/pages/GalleryPage.tsx
index 2dd36b8..e028846 100644
--- a/frontend/src/pages/GalleryPage.tsx
+++ b/frontend/src/pages/GalleryPage.tsx
@@ -114,14 +114,14 @@ export default function GalleryPage() {
className="pointer-events-none fixed bottom-8 left-4 right-4 z-50 sm:bottom-12 sm:left-auto sm:right-8 sm:w-full sm:max-w-md"
>
{successMessage && (
-
+
{successMessage}
)}
{removeError && (
-
+
Could not remove artwork: {removeError}
)}
@@ -131,7 +131,7 @@ export default function GalleryPage() {
Loading gallery...
) : error ? (
-
+
Could not load gallery: {error}
) : !gallery ? (
@@ -167,7 +167,7 @@ export default function GalleryPage() {
type="button"
onClick={() => setShowDeleteDialog(true)}
disabled={renaming || removingId !== null}
- className="min-h-11 shrink-0 cursor-pointer self-start rounded border border-red-300 px-4 py-2 text-sm text-red-700 hover:bg-red-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-700 disabled:cursor-not-allowed disabled:opacity-50 dark:border-red-800 dark:text-red-400 dark:hover:bg-red-950"
+ className="min-h-11 shrink-0 cursor-pointer self-start rounded border border-red-300 px-4 py-2 text-sm text-red-700 hover:bg-red-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-700 disabled:cursor-not-allowed disabled:opacity-50 dark:border-red-800 dark:text-red-400 dark:hover:bg-red-950 dark:focus-visible:outline-red-400"
>
Delete gallery
@@ -193,7 +193,7 @@ export default function GalleryPage() {
disabled={removingId !== null}
aria-label={`Remove ${artwork.title} from this gallery`}
title="Remove from this gallery"
- className="absolute right-3 top-3 z-10 inline-flex min-h-11 min-w-11 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-gray-600 shadow-sm hover:border-red-300 hover:bg-red-50 hover:text-red-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:cursor-wait disabled:opacity-50"
+ className="absolute right-3 top-3 z-10 inline-flex min-h-11 min-w-11 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-gray-600 shadow-sm hover:border-red-300 hover:bg-red-50 hover:text-red-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 disabled:cursor-wait disabled:opacity-50 dark:border-[#504b46] dark:bg-[#242321] dark:text-[#e6dfd6] dark:hover:border-red-800 dark:hover:bg-red-950 dark:hover:text-red-300 dark:focus-visible:outline-[#e6dfd6]"
>
{removingId === artwork.id ? (
Removing...
diff --git a/frontend/src/pages/ProfilePage.tsx b/frontend/src/pages/ProfilePage.tsx
index 6102d28..8296572 100644
--- a/frontend/src/pages/ProfilePage.tsx
+++ b/frontend/src/pages/ProfilePage.tsx
@@ -145,7 +145,7 @@ export default function ProfilePage() {
type="button"
onClick={() => setShowCreateGallery(true)}
aria-label="Create gallery"
- className="flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border-2 border-gray-200 bg-white/90 transition-colors hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#80766f] dark:border-[#504b46] dark:bg-[#242321] dark:hover:bg-[#302e2a]"
+ className="flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border-2 border-gray-200 bg-white/90 transition-[background-color,border-color,color] hover:bg-gray-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-700 dark:border-[#504b46] dark:bg-[#242321] dark:hover:bg-[#302e2a] dark:focus-visible:outline-[#e6dfd6]"
>