navigate(`/admin/events/${event.id}`)}
+ >
+ | e.stopPropagation()}>
handleSelectEvent(event.id)}
- className="w-4 h-4 text-primary-600 border-neutral-300 rounded focus:ring-primary-500"
+ className="w-4 h-4 text-primary-600 border-neutral-300 dark:border-neutral-600 rounded focus:ring-primary-500 dark:bg-neutral-700"
/>
|
- {event.event_name}
- {event.customer_email}
+ {event.event_name}
+ {event.customer_email}
{isGalleryPublic(event.require_password) ? t('events.publicAccess', 'Public access') : t('events.passwordProtected', 'Password protected')}
@@ -442,10 +446,10 @@ export const EventsListPage: React.FC = () => {
|
-
+ |
{event.event_type}
|
-
+ |
{event.event_date ? format(parseISO(event.event_date), 'MMM d, yyyy') : 'N/A'}
|
@@ -453,105 +457,131 @@ export const EventsListPage: React.FC = () => {
{status.label}
|
-
+ |
{event.expires_at ? format(parseISO(event.expires_at), 'MMM d, yyyy') : 'N/A'}
|
-
-
-
-
- {activeDropdown === event.id && dropdownPosition && (
- e.stopPropagation()}>
+
+ {/* Inline action buttons - hidden on mobile */}
+
+
|
diff --git a/frontend/src/pages/public/AcceptInvitePage.tsx b/frontend/src/pages/public/AcceptInvitePage.tsx
index 150c7750..4e491922 100644
--- a/frontend/src/pages/public/AcceptInvitePage.tsx
+++ b/frontend/src/pages/public/AcceptInvitePage.tsx
@@ -192,9 +192,10 @@ export const AcceptInvitePage: React.FC = () => {
if (!formData.password) {
newErrors.password = t('acceptInvitation.errors.passwordRequired');
} else {
- const allRequirementsMet = passwordRequirements.every(req => req.test(formData.password));
- if (!allRequirementsMet) {
- newErrors.password = t('acceptInvitation.errors.passwordTooShort');
+ // Find the first failing requirement and show its specific error
+ const failingRequirement = passwordRequirements.find(req => !req.test(formData.password));
+ if (failingRequirement) {
+ newErrors.password = failingRequirement.label;
}
}