+ {t('profiles.search_intention', 'Compass works best when you search with intention. Try using keywords or filters instead of scrolling.')}
+
+
+ {isMobile && }
+
+
+
+
{t('profiles.interactive_profiles', 'Profiles are interactive — click any card to learn more and reach out.')}
+ {t('profiles.seeing_all_profiles', 'You are seeing all profiles. Use search or filters to narrow it down.')}
+
+ }
- )}
+ >)}
>
)
}
diff --git a/web/components/widgets/select.tsx b/web/components/widgets/select.tsx
index be9a9b6..0311a5c 100644
--- a/web/components/widgets/select.tsx
+++ b/web/components/widgets/select.tsx
@@ -1,10 +1,12 @@
import clsx from 'clsx'
+import {forwardRef} from 'react'
-export const Select = (props: JSX.IntrinsicElements['select']) => {
+export const Select = forwardRef((props, ref) => {
const { className, children, ...rest } = props
return (
)
-}
+})
diff --git a/web/hooks/use-is-cleared-filters.ts b/web/hooks/use-is-cleared-filters.ts
new file mode 100644
index 0000000..9259164
--- /dev/null
+++ b/web/hooks/use-is-cleared-filters.ts
@@ -0,0 +1,12 @@
+import {FilterFields, initialFilters} from "common/filters";
+import {isEqual} from "lodash";
+import {useMemo} from "react";
+
+export function useIsClearedFilters(filters: Partial): boolean {
+ return useMemo(() =>
+ isEqual(
+ {...filters, orderBy: undefined},
+ {...initialFilters, orderBy: undefined}
+ ), [filters]
+ )
+}
\ No newline at end of file
diff --git a/web/messages/de.json b/web/messages/de.json
index bbbb91c..53f379e 100644
--- a/web/messages/de.json
+++ b/web/messages/de.json
@@ -699,6 +699,15 @@
"profile_grid.no_profiles": "Keine Profile gefunden.",
"profile_grid.notification_cta": "Klicken Sie gern auf „Benachrichtigen“, und wir informieren Sie, sobald neue Nutzer Ihrer Suche entsprechen.",
"profiles.title": "Personen",
+ "profiles.search_intention": "Compass funktioniert am besten, wenn Sie mit Absicht suchen. Versuchen Sie, Schlüsselwörter oder Filter anstelle des Scrollens zu verwenden.",
+ "profiles.try_keyword_search": "Schlüsselwortsuche versuchen",
+ "profiles.show_filters": "Filter anzeigen",
+ "profiles.sort_differently": "Anders sortieren",
+ "profiles.interactive_profiles": "Profile sind interaktiv — klicken Sie auf jede Karte, um mehr zu erfahren und Kontakt aufzunehmen.",
+ "profiles.dismiss": "Verwerfen",
+ "profiles.seeing_all_profiles": "Sie sehen alle Profile. Verwenden Sie Suche oder Filter, um einzugrenzen.",
+ "profiles.filter_guide": "Filtern Sie unten nach Absicht, Alter, Standort und mehr",
+ "profiles.search_tip": "Tipp: Suchen Sie zuerst, um bessere Übereinstimmungen zu finden. Endloses Scrollen reduziert die Relevanz.",
"register.agreement.and": " und ",
"register.agreement.prefix": "Mit der Registrierung akzeptiere ich die ",
"register.agreement.suffix": ".",
diff --git a/web/messages/fr.json b/web/messages/fr.json
index 2089c1b..30e0716 100644
--- a/web/messages/fr.json
+++ b/web/messages/fr.json
@@ -699,6 +699,15 @@
"profile_grid.no_profiles": "Aucun profil trouvé.",
"profile_grid.notification_cta": "N'hésitez pas à cliquer sur \"Recevoir notifs\" et nous vous préviendrons quand de nouveaux utilisateurs correspondront à votre recherche !",
"profiles.title": "Personnes",
+ "profiles.search_intention": "Compass fonctionne mieux lorsque vous cherchez avec intention. Essayez d'utiliser des mots-clés ou des filtres au lieu de faire défiler.",
+ "profiles.try_keyword_search": "Essayer une recherche par mot-clé",
+ "profiles.show_filters": "Voir les filtres",
+ "profiles.sort_differently": "Trier différemment",
+ "profiles.interactive_profiles": "Les profils sont interactifs — cliquez sur n'importe quelle carte pour en savoir plus et entrer en contact.",
+ "profiles.dismiss": "Fermer",
+ "profiles.seeing_all_profiles": "Vous voyez tous les profils. Utilisez la recherche ou les filtres pour affiner.",
+ "profiles.filter_guide": "Filtrez ci-dessous par intention, âge, lieu et plus encore",
+ "profiles.search_tip": "Astuce : Cherchez d'abord par filtres et mot-clés pour trouver de meilleures correspondances. Le défilement sans fin réduit la pertinence.",
"register.agreement.and": " et ",
"register.agreement.prefix": "En vous inscrivant, j'accepte les ",
"register.agreement.suffix": ".",
diff --git a/web/styles/globals.css b/web/styles/globals.css
index 989c98d..95b5cdf 100644
--- a/web/styles/globals.css
+++ b/web/styles/globals.css
@@ -491,7 +491,7 @@ ol > li {
ol > li::marker {
font-weight: 600;
font-size: 1em;
- color: #374151; /* pick a visible color */
+ color: #374151; /* pick a visible color */
}
/* Onboarding animations */
@@ -529,3 +529,7 @@ ol > li::marker {
animation: fade-out-slow 3s ease-out forwards;
}
+.guidance {
+ opacity: 0.55;
+ font-size: 14px;
+}