diff --git a/web/components/layout/modal.tsx b/web/components/layout/modal.tsx index 7129f9b7..8fb995bd 100644 --- a/web/components/layout/modal.tsx +++ b/web/components/layout/modal.tsx @@ -4,7 +4,7 @@ import clsx from 'clsx' import {Fragment, ReactNode, useEffect, useRef} from 'react' export const MODAL_CLASS = - 'items-center gap-4 rounded-md bg-canvas-50 sm:px-8 px-4 pt-6 pb-2 text-ink-1000 h-[calc(100dvh-var(--hloss)-120px)] sm:h-[calc(95dvh-var(--hloss)-120px)] ' + 'items-center gap-4 rounded-xl bg-canvas-50 sm:px-8 px-4 pt-6 pb-2 text-ink-1000 h-[calc(100dvh-var(--hloss)-120px)] sm:h-[calc(95dvh-var(--hloss)-120px)] ' export const SCROLLABLE_MODAL_CLASS = '!overflow-auto' // From https://tailwindui.com/components/application-ui/overlays/modals diff --git a/web/components/searches/button.tsx b/web/components/searches/button.tsx index 8a66f7b3..7626c52a 100644 --- a/web/components/searches/button.tsx +++ b/web/components/searches/button.tsx @@ -89,47 +89,58 @@ function ButtonModal(props: { size={'lg'} > -

{t('saved_searches.title', 'Saved Searches')}

+

+ {t('saved_searches.title', 'Saved Searches')} +

{bookmarkedSearches?.length ? ( <> -

+

{t( 'saved_searches.notification_note', "We'll notify you daily when new people match your searches below.", )}

- + {(bookmarkedSearches || []).map((search) => ( - -
- {formatFilters( - search.search_filters as Partial, - search.location as locationType, - choicesIdsToLabels, - measurementSystem, - t, - )?.join(' • ')} +
+
+ +
+
+ {formatFilters( + search.search_filters as Partial, + search.location as locationType, + choicesIdsToLabels, + measurementSystem, + t, + )?.join(' • ')} +
+
+ +
- - +
))} ) : ( -

- {t( - 'saved_searches.empty_state', - "You haven't saved any search. To save one, click on Get Notified and we'll notify you daily when new people match it.", - )} -

+
+
You haven't saved any search.
+
+ {t( + 'saved_searches.empty_state', + "To save one, click on Get Notified and we'll notify you daily when new people match it.", + )} +
+
)} {/* -

{t('saved_people.title', 'Saved People')}

+

+ {t('saved_people.title', 'Saved People')} +

{visibleUsers?.length ? ( <> -

{t('saved_people.list_header', 'Here are the people you saved:')}

- +

+ {t('saved_people.list_header', 'Here are the people you saved:')} +

+ {visibleUsers.map((u) => ( - - - - - -
{u.name}
-
@{u.username}
- -
- - -
+ .then(() => { + // Sync with server state + refreshStars() + }) + .catch(() => { + toast.error("Couldn't remove saved profile. Please try again.") + // Revert optimistic removal on failure + setRemovingIds((prev) => { + const next = new Set(prev) + next.delete(u.id) + return next + }) + }) + }} + className="inline-flex items-center justify-center h-8 w-8 rounded-lg border border-canvas-300 bg-canvas-0 text-ink-500 hover:border-red-300 hover:bg-red-50 hover:text-red-600 transition-all focus:outline-none focus:ring-2 focus:ring-red-400 focus:ring-offset-1" + > + + + +
+ ))} ) : ( -

- You haven't saved any profile. To save one, click on the star on their profile page. -

+
+
You haven't saved any profile.
+
+ To save one, click on the star on their profile page. +
+
)} {/*