= ({
{!showSecondModal ? (
{!isInModal && (
-
+
We'll test your microphone to ensure the best experience for
everyone in the session.
@@ -419,8 +419,7 @@ const MicrophoneTest: React.FC = ({
@@ -91,7 +89,6 @@ export const StopRecordingConfirmationModal = ({
{
@@ -62,7 +50,6 @@ export const useOnboardingCards = () => {
cta: "Los geht's!",
extraHelp:
"Dies ist ein Mini-Tutorial. Nutzen Sie die Vor- und Zurück-Tasten zur Navigation. Nach Abschluss gelangen Sie zum Aufnahmeportal.",
- icon: PartyPopper,
title: "Willkommen bei Dembrane!",
},
{
@@ -71,7 +58,6 @@ export const useOnboardingCards = () => {
cta: "Mehr erfahren",
extraHelp:
"Ob Feedback für eine Kommune, Input im Arbeitsumfeld oder Teilnahme an Forschung – Ihre Stimme zählt!",
- icon: Orbit,
title: "Was ist Dembrane?",
},
{
@@ -80,7 +66,6 @@ export const useOnboardingCards = () => {
cta: "Weiter",
extraHelp:
"Spracheingabe ist unser bevorzugter Modus, da sie natürlichere und detailliertere Antworten ermöglicht. Tippen steht immer als Alternative zur Verfügung.",
- icon: Speech,
title: "Sagen Sie einfach Ihre Meinung",
},
{
@@ -88,7 +73,6 @@ export const useOnboardingCards = () => {
cta: "Weiter",
extraHelp:
"Dembrane macht mehr Spaß, wenn Sie jemanden finden, um die Fragen gemeinsam zu besprechen und Ihr Gespräch aufzunehmen. Wir können nicht sagen, wer was gesagt hat, nur welche Ideen geteilt wurden.",
- icon: MessagesSquare,
title: "Allein oder in der Gruppe",
},
],
@@ -102,7 +86,6 @@ export const useOnboardingCards = () => {
cta: "Verstanden",
extraHelp:
"Die Fragen variieren je nach den Bedürfnissen des Gastgebers. Sie können sich auf kommunale Themen, Arbeitserfahrungen oder Forschungsthemen beziehen. Wenn es keine spezifischen Fragen gibt, können Sie gerne alle Gedanken oder Anliegen teilen.",
- icon: HelpCircle,
title: "Fragerunde",
},
],
@@ -116,7 +99,6 @@ export const useOnboardingCards = () => {
cta: "Mehr erfahren",
extraHelp:
"Vermeiden Sie die Weitergabe von Details, die Sie dem Gastgeber nicht mitteilen möchten. Seien Sie achtsam und nehmen Sie andere nicht ohne deren Zustimmung auf.",
- icon: Lock,
title: "Datenschutz ist wichtig",
},
],
@@ -132,7 +114,6 @@ export const useOnboardingCards = () => {
cta: "Let's go!",
extraHelp:
"This is a mini-tutorial. Use the previous and next buttons to navigate. Once completed, you'll enter the recording portal.",
- icon: PartyPopper,
title: "Welcome to Dembrane!",
},
{
@@ -141,7 +122,6 @@ export const useOnboardingCards = () => {
cta: "Tell me more",
extraHelp:
"Whether it's feedback for a local municipality, input in a work setting, or participation in research, your voice matters!",
- icon: Orbit,
title: "What is Dembrane?",
},
{
@@ -150,7 +130,6 @@ export const useOnboardingCards = () => {
cta: "Next",
extraHelp:
"Voice input is our primary mode, allowing for more natural and detailed responses. Typing is always available as a backup.",
- icon: Speech,
title: "Just Speak Your Mind",
},
{
@@ -158,7 +137,6 @@ export const useOnboardingCards = () => {
cta: "Next",
extraHelp:
"Dembrane is more fun when you find someone to discuss the questions together and record your conversation. We can't tell who said what, just what ideas were shared.",
- icon: MessagesSquare,
title: "Solo or in a Group",
},
],
@@ -172,7 +150,6 @@ export const useOnboardingCards = () => {
cta: "Got it",
extraHelp:
"Questions vary based on the host's needs. They could be about community issues, work experiences, or research topics. If there are no specific questions, you're free to share any thoughts or concerns.",
- icon: HelpCircle,
title: "Question Time",
},
],
@@ -185,7 +162,6 @@ export const useOnboardingCards = () => {
cta: "Tell me more",
extraHelp:
"Avoid sharing details you don't want the host to know. Be mindful and don't record others without their consent.",
- icon: Lock,
title: "Privacy Matters",
},
],
@@ -201,7 +177,6 @@ export const useOnboardingCards = () => {
cta: "¡Vamos!",
extraHelp:
"Este es un mini-tutorial. Usa los botones de anterior y siguiente para navegar. Una vez completado, entrarás al portal de grabación.",
- icon: PartyPopper,
title: "¡Bienvenido a Dembrane!",
},
{
@@ -210,7 +185,6 @@ export const useOnboardingCards = () => {
cta: "Cuéntame más",
extraHelp:
"Ya sea retroalimentación para una municipalidad local, aportaciones en el trabajo o participación en investigación, ¡tu voz importa!",
- icon: Orbit,
title: "¿Qué es Dembrane?",
},
{
@@ -219,7 +193,6 @@ export const useOnboardingCards = () => {
cta: "Siguiente",
extraHelp:
"La entrada de voz es nuestro modo principal, permitiendo respuestas más naturales y detalladas. Escribir siempre está disponible como respaldo.",
- icon: Speech,
title: "Solo Di Lo Que Piensas",
},
{
@@ -227,7 +200,6 @@ export const useOnboardingCards = () => {
cta: "Siguiente",
extraHelp:
"Dembrane es más divertido cuando encuentras a alguien para discutir las preguntas juntos y grabar su conversación. No podemos distinguir quién dijo qué, solo qué ideas se compartieron.",
- icon: MessagesSquare,
title: "Solo o en Grupo",
},
],
@@ -241,7 +213,6 @@ export const useOnboardingCards = () => {
cta: "Entendido",
extraHelp:
"Las preguntas varían según las necesidades del anfitrión. Pueden ser sobre temas comunitarios, experiencias laborales o temas de investigación. Si no hay preguntas específicas, eres libre de compartir cualquier pensamiento o inquietud.",
- icon: HelpCircle,
title: "Hora de Preguntas",
},
],
@@ -254,7 +225,6 @@ export const useOnboardingCards = () => {
cta: "Cuéntame más",
extraHelp:
"Evita compartir detalles que no quieras que el anfitrión conozca. Sé consciente y no grabes a otros sin su consentimiento.",
- icon: Lock,
title: "La Privacidad Importa",
},
],
@@ -270,7 +240,6 @@ export const useOnboardingCards = () => {
cta: "C'est parti !",
extraHelp:
"Ceci est un mini-tutoriel. Utilisez les boutons précédent et suivant pour naviguer. Une fois terminé, vous entrerez dans le portail d'enregistrement.",
- icon: PartyPopper,
title: "Bienvenue sur Dembrane !",
},
{
@@ -279,7 +248,6 @@ export const useOnboardingCards = () => {
cta: "Dites-m'en plus",
extraHelp:
"Qu'il s'agisse de commentaires pour une municipalité locale, de contributions dans un cadre professionnel ou de participation à une recherche, votre voix compte !",
- icon: Orbit,
title: "Qu'est-ce que Dembrane ?",
},
{
@@ -288,7 +256,6 @@ export const useOnboardingCards = () => {
cta: "Suivant",
extraHelp:
"La saisie vocale est notre mode principal, permettant des réponses plus naturelles et détaillées. La saisie au clavier est toujours disponible en secours.",
- icon: Speech,
title: "Dites Simplement Ce Que Vous Pensez",
},
{
@@ -296,7 +263,6 @@ export const useOnboardingCards = () => {
cta: "Suivant",
extraHelp:
"Dembrane est plus amusant lorsque vous trouvez quelqu'un pour discuter des questions ensemble et enregistrer votre conversation. Nous ne pouvons pas dire qui a dit quoi, juste quelles idées ont été partagées.",
- icon: MessagesSquare,
title: "Seul ou en Groupe",
},
],
@@ -310,7 +276,6 @@ export const useOnboardingCards = () => {
cta: "Compris",
extraHelp:
"Les questions varient en fonction des besoins de l'hôte. Elles peuvent concerner des problèmes communautaires, des expériences professionnelles ou des sujets de recherche. S'il n'y a pas de questions spécifiques, vous êtes libre de partager vos pensées ou préoccupations.",
- icon: HelpCircle,
title: "Heure des Questions",
},
],
@@ -324,7 +289,6 @@ export const useOnboardingCards = () => {
cta: "Dites-m'en plus",
extraHelp:
"Évitez de partager des détails que vous ne voulez pas que l'hôte connaisse. Soyez attentif et n'enregistrez pas les autres sans leur consentement.",
- icon: Lock,
title: "La Confidentialité Compte",
},
],
@@ -340,7 +304,6 @@ export const useOnboardingCards = () => {
cta: "Andiamo!",
extraHelp:
"Questo è un mini-tutorial. Usa i pulsanti precedente e successivo per navigare. Al termine entrerai nel portale di registrazione.",
- icon: PartyPopper,
title: "Benvenuto su Dembrane!",
},
{
@@ -349,7 +312,6 @@ export const useOnboardingCards = () => {
cta: "Dimmi di più",
extraHelp:
"Che si tratti di feedback per un comune, di input sul lavoro o di partecipazione a una ricerca, la tua voce conta!",
- icon: Orbit,
title: "Cos'è Dembrane?",
},
{
@@ -358,7 +320,6 @@ export const useOnboardingCards = () => {
cta: "Avanti",
extraHelp:
"La voce è la modalità principale perché permette risposte più naturali e ricche. Scrivere è sempre disponibile come alternativa.",
- icon: Speech,
title: "Dì semplicemente ciò che pensi",
},
{
@@ -366,7 +327,6 @@ export const useOnboardingCards = () => {
cta: "Avanti",
extraHelp:
"È ancora meglio se trovi qualcuno con cui discutere le domande e registrare la conversazione. Non possiamo sapere chi ha detto cosa, solo quali idee sono state condivise.",
- icon: MessagesSquare,
title: "Da soli o in gruppo",
},
],
@@ -380,7 +340,6 @@ export const useOnboardingCards = () => {
cta: "Capito",
extraHelp:
"Le domande variano in base alle esigenze dell'host. Possono riguardare temi della comunità, esperienze di lavoro o ricerca. Se non ci sono domande specifiche, puoi condividere qualsiasi pensiero o preoccupazione.",
- icon: HelpCircle,
title: "È il momento delle domande",
},
],
@@ -393,7 +352,6 @@ export const useOnboardingCards = () => {
cta: "Dimmi di più",
extraHelp:
"Evita di condividere dettagli che non vuoi rendere noti all'host. Chiedi sempre il consenso prima di registrare altre persone.",
- icon: Lock,
title: "La privacy conta",
},
],
@@ -409,7 +367,6 @@ export const useOnboardingCards = () => {
cta: "Aan de slag!",
extraHelp:
"Dit is een mini-handleiding. Gebruik de knoppen om te navigeren. Na afloop van de handleiding kom je in de opnameportaal terecht.",
- icon: PartyPopper,
title: "Welkom bij Dembrane!",
},
{
@@ -418,7 +375,6 @@ export const useOnboardingCards = () => {
cta: "Vertel me meer",
extraHelp:
"Of het nu gaat om feedback voor de gemeente, input op het werk, of deelname aan onderzoek, jouw stem telt!",
- icon: Orbit,
title: "Wat is Dembrane?",
},
{
@@ -427,7 +383,6 @@ export const useOnboardingCards = () => {
cta: "Volgende",
extraHelp:
"Spraak is onze voorkeursmethode, omdat het natuurlijker en gedetailleerder is. Typen kan natuurlijk ook altijd.",
- icon: Speech,
title: "Zeg het maar",
},
{
@@ -435,7 +390,6 @@ export const useOnboardingCards = () => {
cta: "Volgende",
extraHelp:
"Dembrane is leuker als je iemand vindt om de vragen samen te bespreken en jullie gesprek op te nemen. We kunnen niet horen wie wat zei, alleen welke ideeën er gedeeld zijn.",
- icon: MessagesSquare,
title: "Alleen of in een groep",
},
],
@@ -449,7 +403,6 @@ export const useOnboardingCards = () => {
cta: "Begrepen",
extraHelp:
"Vragen variëren afhankelijk van wat de organisator wil weten. Het kan gaan over de buurt, werkervaringen, of onderzoeksonderwerpen. Als er geen specifieke vragen zijn, kun je gewoon je gedachten of zorgen delen.",
- icon: HelpCircle,
title: "Vragenronde",
},
],
@@ -462,7 +415,6 @@ export const useOnboardingCards = () => {
cta: "Vertel me meer",
extraHelp:
"Vermijd het delen van details die je niet met de organisator wilt delen. Wees voorzichtig en neem anderen niet op zonder hun toestemming.",
- icon: Lock,
title: "Privacy is belangrijk",
},
],
@@ -486,7 +438,6 @@ export const useOnboardingCards = () => {
cta: "Los geht's!",
extraHelp:
"Dies ist ein Mini-Tutorial. Nutzen Sie die Vor- und Zurück-Tasten zur Navigation. Nach Abschluss gelangen Sie zum Aufnahmeportal.",
- icon: PartyPopper,
title: "Willkommen bei Dembrane!",
},
{
@@ -495,7 +446,6 @@ export const useOnboardingCards = () => {
cta: "Mehr erfahren",
extraHelp:
"Ob Feedback für eine Kommune, Input im Arbeitsumfeld oder Teilnahme an Forschung – Ihre Stimme zählt!",
- icon: Orbit,
title: "Was ist Dembrane?",
},
{
@@ -504,7 +454,6 @@ export const useOnboardingCards = () => {
cta: "Weiter",
extraHelp:
"Spracheingabe ist unser bevorzugter Modus, da sie natürlichere und detailliertere Antworten ermöglicht. Tippen steht immer als Alternative zur Verfügung.",
- icon: Speech,
title: "Sagen Sie einfach Ihre Meinung",
},
{
@@ -512,7 +461,6 @@ export const useOnboardingCards = () => {
cta: "Weiter",
extraHelp:
"Dembrane macht mehr Spaß, wenn Sie jemanden finden, um die Fragen gemeinsam zu besprechen und Ihr Gespräch aufzunehmen. Wir können nicht sagen, wer was gesagt hat, nur welche Ideen geteilt wurden.",
- icon: MessagesSquare,
title: "Allein oder in der Gruppe",
},
],
@@ -526,7 +474,6 @@ export const useOnboardingCards = () => {
cta: "Verstanden",
extraHelp:
"Die Fragen variieren je nach den Bedürfnissen des Gastgebers. Sie können sich auf kommunale Themen, Arbeitserfahrungen oder Forschungsthemen beziehen. Wenn es keine spezifischen Fragen gibt, können Sie gerne alle Gedanken oder Anliegen teilen.",
- icon: HelpCircle,
title: "Fragerunde",
},
],
@@ -540,7 +487,6 @@ export const useOnboardingCards = () => {
cta: "Mehr erfahren",
extraHelp:
"Vermeiden Sie die Weitergabe von Details, die Sie dem Gastgeber nicht mitteilen möchten. Seien Sie achtsam und nehmen Sie andere nicht ohne deren Zustimmung auf.",
- icon: Lock,
title: "Datenschutz ist wichtig",
},
...(getPrivacyCard("de-DE")?.slides || []),
@@ -555,7 +501,6 @@ export const useOnboardingCards = () => {
cta: "Verstanden",
extraHelp:
"Etwas Hintergrundgeräusch ist in Ordnung, solange klar ist, wer spricht.",
- icon: Volume2,
title: "Hintergrundgeräusche reduzieren",
},
{
@@ -564,7 +509,6 @@ export const useOnboardingCards = () => {
cta: "Bereit!",
extraHelp:
"WLAN oder gute mobile Daten funktionieren am besten. Wenn Ihre Verbindung abbricht, keine Sorge. Sie können immer dort weitermachen, wo Sie aufgehört haben.",
- icon: Wifi,
title: "Starke Internetverbindung",
},
{
@@ -573,7 +517,6 @@ export const useOnboardingCards = () => {
cta: "Okay",
extraHelp:
"Dembrane versucht, Ihr Gerät aktiv zu halten, aber manchmal können Geräte dies überschreiben. Sie können Ihre Geräteeinstellungen anpassen, um länger entsperrt zu bleiben, wenn nötig.",
- icon: Smartphone,
title: "Gerät nicht sperren!",
},
],
@@ -589,7 +532,6 @@ export const useOnboardingCards = () => {
cta: "Let's go!",
extraHelp:
"This is a mini-tutorial. Use the previous and next buttons to navigate. Once completed, you'll enter the recording portal.",
- icon: PartyPopper,
title: "Welcome to Dembrane!",
},
{
@@ -598,7 +540,6 @@ export const useOnboardingCards = () => {
cta: "Tell me more",
extraHelp:
"Whether it's feedback for a local municipality, input in a work setting, or participation in research, your voice matters!",
- icon: Orbit,
title: "What is Dembrane?",
},
{
@@ -607,7 +548,6 @@ export const useOnboardingCards = () => {
cta: "Next",
extraHelp:
"Voice input is our primary mode, allowing for more natural and detailed responses. Typing is always available as a backup.",
- icon: Speech,
title: "Just Speak Your Mind",
},
{
@@ -615,7 +555,6 @@ export const useOnboardingCards = () => {
cta: "Next",
extraHelp:
"Dembrane is more fun when you find someone to discuss the questions together and record your conversation. We can't tell who said what, just what ideas were shared.",
- icon: MessagesSquare,
title: "Solo or in a Group",
},
],
@@ -629,7 +568,6 @@ export const useOnboardingCards = () => {
cta: "Got it",
extraHelp:
"Questions vary based on the host's needs. They could be about community issues, work experiences, or research topics. If there are no specific questions, you're free to share any thoughts or concerns.",
- icon: HelpCircle,
title: "Question Time",
},
],
@@ -642,7 +580,6 @@ export const useOnboardingCards = () => {
cta: "Tell me more",
extraHelp:
"Avoid sharing details you don't want the host to know. Be mindful and don't record others without their consent.",
- icon: Lock,
title: "Privacy Matters",
},
...(getPrivacyCard("en-US")?.slides || []),
@@ -657,7 +594,6 @@ export const useOnboardingCards = () => {
cta: "Noted",
extraHelp:
"Some background noise is okay, as long as who is speaking is clear.",
- icon: Volume2,
title: "Reduce Background Noise",
},
{
@@ -665,7 +601,6 @@ export const useOnboardingCards = () => {
cta: "Ready!",
extraHelp:
"Wi-Fi or good mobile data works best. If your connection drops, don't worry. You can always restart where you left off.",
- icon: Wifi,
title: "Strong Internet Connection",
},
{
@@ -674,7 +609,6 @@ export const useOnboardingCards = () => {
cta: "Okay",
extraHelp:
"Dembrane tries to keep your device active, but sometimes devices can override it, for example if you have low power mode active. You can adjust your device settings to stay unlocked longer if needed.",
- icon: Smartphone,
title: "Don't lock your device!",
},
],
@@ -690,7 +624,6 @@ export const useOnboardingCards = () => {
cta: "¡Vamos!",
extraHelp:
"Este es un mini-tutorial. Usa los botones de anterior y siguiente para navegar. Una vez completado, entrarás al portal de grabación.",
- icon: PartyPopper,
title: "¡Bienvenido a Dembrane!",
},
{
@@ -699,7 +632,6 @@ export const useOnboardingCards = () => {
cta: "Cuéntame más",
extraHelp:
"Ya sea retroalimentación para una municipalidad local, aportaciones en el trabajo o participación en investigación, ¡tu voz importa!",
- icon: Orbit,
title: "¿Qué es Dembrane?",
},
{
@@ -708,7 +640,6 @@ export const useOnboardingCards = () => {
cta: "Siguiente",
extraHelp:
"La entrada de voz es nuestro modo principal, permitiendo respuestas más naturales y detalladas. Escribir siempre está disponible como respaldo.",
- icon: Speech,
title: "Solo Di Lo Que Piensas",
},
{
@@ -716,7 +647,6 @@ export const useOnboardingCards = () => {
cta: "Siguiente",
extraHelp:
"Dembrane es más divertido cuando encuentras a alguien para discutir las preguntas juntos y grabar su conversación. No podemos distinguir quién dijo qué, solo qué ideas se compartieron.",
- icon: MessagesSquare,
title: "Solo o en Grupo",
},
],
@@ -730,7 +660,6 @@ export const useOnboardingCards = () => {
cta: "Entendido",
extraHelp:
"Las preguntas varían según las necesidades del anfitrión. Pueden ser sobre temas comunitarios, experiencias laborales o temas de investigación. Si no hay preguntas específicas, eres libre de compartir cualquier pensamiento o inquietud.",
- icon: HelpCircle,
title: "Hora de Preguntas",
},
],
@@ -743,7 +672,6 @@ export const useOnboardingCards = () => {
cta: "Cuéntame más",
extraHelp:
"Evita compartir detalles que no quieras que el anfitrión conozca. Sé consciente y no grabes a otros sin su consentimiento.",
- icon: Lock,
title: "La Privacidad Importa",
},
...(getPrivacyCard("es-ES")?.slides || []),
@@ -758,7 +686,6 @@ export const useOnboardingCards = () => {
cta: "Entendido",
extraHelp:
"Un poco de ruido de fondo está bien, siempre que se entienda quién está hablando.",
- icon: Volume2,
title: "Reduce el Ruido de Fondo",
},
{
@@ -767,7 +694,6 @@ export const useOnboardingCards = () => {
cta: "¡Listo!",
extraHelp:
"Wi-Fi o buenos datos móviles funcionan mejor. Si se cae tu conexión, no te preocupes. Siempre puedes reiniciar donde lo dejaste.",
- icon: Wifi,
title: "Conexión a Internet Fuerte",
},
{
@@ -776,7 +702,6 @@ export const useOnboardingCards = () => {
cta: "De acuerdo",
extraHelp:
"Dembrane intenta mantener tu dispositivo activo, pero a veces los dispositivos pueden anularlo. Puedes ajustar la configuración de tu dispositivo para permanecer desbloqueado más tiempo si es necesario.",
- icon: Smartphone,
title: "¡No bloquees tu dispositivo!",
},
],
@@ -792,7 +717,6 @@ export const useOnboardingCards = () => {
cta: "C'est parti !",
extraHelp:
"Ceci est un mini-tutoriel. Utilisez les boutons précédent et suivant pour naviguer. Une fois terminé, vous entrerez dans le portail d'enregistrement.",
- icon: PartyPopper,
title: "Bienvenue sur Dembrane !",
},
{
@@ -801,7 +725,6 @@ export const useOnboardingCards = () => {
cta: "Dites-m'en plus",
extraHelp:
"Qu'il s'agisse de commentaires pour une municipalité locale, de contributions dans un cadre professionnel ou de participation à une recherche, votre voix compte !",
- icon: Orbit,
title: "Qu'est-ce que Dembrane ?",
},
{
@@ -810,7 +733,6 @@ export const useOnboardingCards = () => {
cta: "Suivant",
extraHelp:
"La saisie vocale est notre mode principal, permettant des réponses plus naturelles et détaillées. La saisie au clavier est toujours disponible en secours.",
- icon: Speech,
title: "Dites Simplement Ce Que Vous Pensez",
},
{
@@ -818,7 +740,6 @@ export const useOnboardingCards = () => {
cta: "Suivant",
extraHelp:
"Dembrane est plus amusant lorsque vous trouvez quelqu'un pour discuter des questions ensemble et enregistrer votre conversation. Nous ne pouvons pas dire qui a dit quoi, juste quelles idées ont été partagées.",
- icon: MessagesSquare,
title: "Seul ou en Groupe",
},
],
@@ -832,7 +753,6 @@ export const useOnboardingCards = () => {
cta: "Compris",
extraHelp:
"Les questions varient en fonction des besoins de l'hôte. Elles peuvent concerner des problèmes communautaires, des expériences professionnelles ou des sujets de recherche. S'il n'y a pas de questions spécifiques, vous êtes libre de partager vos pensées ou préoccupations.",
- icon: HelpCircle,
title: "Heure des Questions",
},
],
@@ -846,7 +766,6 @@ export const useOnboardingCards = () => {
cta: "Dites-m'en plus",
extraHelp:
"Évitez de partager des détails que vous ne voulez pas que l'hôte connaisse. Soyez attentif et n'enregistrez pas les autres sans leur consentement.",
- icon: Lock,
title: "La Confidentialité Compte",
},
...(getPrivacyCard("fr-FR")?.slides || []),
@@ -861,7 +780,6 @@ export const useOnboardingCards = () => {
cta: "Noté",
extraHelp:
"Un peu de bruit de fond est acceptable, tant qu'on sait qui parle.",
- icon: Volume2,
title: "Réduire le Bruit de Fond",
},
{
@@ -870,7 +788,6 @@ export const useOnboardingCards = () => {
cta: "Prêt !",
extraHelp:
"Le Wi-Fi ou de bonnes données mobiles fonctionnent mieux. Si votre connexion tombe, ne vous inquiétez pas. Vous pouvez toujours reprendre là où vous vous êtes arrêté.",
- icon: Wifi,
title: "Connexion Internet Forte",
},
{
@@ -879,7 +796,6 @@ export const useOnboardingCards = () => {
cta: "D'accord",
extraHelp:
"Dembrane essaie de garder votre appareil actif, mais parfois les appareils peuvent l'annuler. Vous pouvez ajuster les paramètres de votre appareil pour rester déverrouillé plus longtemps si nécessaire.",
- icon: Smartphone,
title: "Ne verrouillez pas votre appareil !",
},
],
@@ -895,7 +811,6 @@ export const useOnboardingCards = () => {
cta: "Andiamo!",
extraHelp:
"Questo è un mini-tutorial. Usa i pulsanti precedente e successivo per navigare. Al termine entrerai nel portale di registrazione.",
- icon: PartyPopper,
title: "Benvenuto su Dembrane!",
},
{
@@ -904,7 +819,6 @@ export const useOnboardingCards = () => {
cta: "Dimmi di più",
extraHelp:
"Che si tratti di feedback per un comune, di input sul lavoro o di partecipazione a una ricerca, la tua voce conta!",
- icon: Orbit,
title: "Cos'è Dembrane?",
},
{
@@ -913,7 +827,6 @@ export const useOnboardingCards = () => {
cta: "Avanti",
extraHelp:
"La voce è la modalità principale perché permette risposte più naturali e ricche. Scrivere è sempre disponibile come alternativa.",
- icon: Speech,
title: "Dì semplicemente ciò che pensi",
},
{
@@ -921,7 +834,6 @@ export const useOnboardingCards = () => {
cta: "Avanti",
extraHelp:
"È ancora meglio se trovi qualcuno con cui discutere le domande e registrare la conversazione. Non possiamo sapere chi ha detto cosa, solo quali idee sono state condivise.",
- icon: MessagesSquare,
title: "Da soli o in gruppo",
},
],
@@ -935,7 +847,6 @@ export const useOnboardingCards = () => {
cta: "Capito",
extraHelp:
"Le domande variano in base alle esigenze dell'host. Possono riguardare temi della comunità, esperienze di lavoro o ricerca. Se non ci sono domande specifiche, puoi condividere qualsiasi pensiero o preoccupazione.",
- icon: HelpCircle,
title: "È il momento delle domande",
},
],
@@ -948,7 +859,6 @@ export const useOnboardingCards = () => {
cta: "Dimmi di più",
extraHelp:
"Evita di condividere dettagli che non vuoi rendere noti all'host. Chiedi sempre il consenso prima di registrare altre persone.",
- icon: Lock,
title: "La privacy conta",
},
...(getPrivacyCard("it-IT")?.slides || []),
@@ -963,7 +873,6 @@ export const useOnboardingCards = () => {
cta: "Capito",
extraHelp:
"Un po' di rumore di fondo va bene, purché sia chiaro chi sta parlando.",
- icon: Volume2,
title: "Riduci il Rumore di Fondo",
},
{
@@ -972,7 +881,6 @@ export const useOnboardingCards = () => {
cta: "Pronto!",
extraHelp:
"Wi-Fi o buoni dati mobili funzionano meglio. Se la connessione cade, non preoccuparti. Puoi sempre riprendere da dove avevi interrotto.",
- icon: Wifi,
title: "Connessione Internet Forte",
},
{
@@ -981,7 +889,6 @@ export const useOnboardingCards = () => {
cta: "Okay",
extraHelp:
"Dembrane cerca di mantenere il dispositivo attivo, ma a volte i dispositivi possono sovrascrivere questa impostazione. Puoi regolare le impostazioni del dispositivo per rimanere sbloccato più a lungo se necessario.",
- icon: Smartphone,
title: "Non bloccare il dispositivo!",
},
],
@@ -997,7 +904,6 @@ export const useOnboardingCards = () => {
cta: "Aan de slag!",
extraHelp:
"Dit is een mini-handleiding. Gebruik de knoppen om te navigeren. Na afloop van de handleiding kom je in de opnameportaal terecht.",
- icon: PartyPopper,
title: "Welkom bij Dembrane!",
},
{
@@ -1006,7 +912,6 @@ export const useOnboardingCards = () => {
cta: "Vertel me meer",
extraHelp:
"Of het nu gaat om feedback voor de gemeente, input op het werk, of deelname aan onderzoek, jouw stem telt!",
- icon: Orbit,
title: "Wat is Dembrane?",
},
{
@@ -1015,7 +920,6 @@ export const useOnboardingCards = () => {
cta: "Volgende",
extraHelp:
"Spraak is onze voorkeursmethode, omdat het natuurlijker en gedetailleerder is. Typen kan natuurlijk ook altijd.",
- icon: Speech,
title: "Zeg het maar",
},
{
@@ -1023,7 +927,6 @@ export const useOnboardingCards = () => {
cta: "Volgende",
extraHelp:
"Dembrane is leuker als je iemand vindt om de vragen samen te bespreken en jullie gesprek op te nemen. We kunnen niet horen wie wat zei, alleen welke ideeën er gedeeld zijn.",
- icon: MessagesSquare,
title: "Alleen of in een groep",
},
],
@@ -1037,7 +940,6 @@ export const useOnboardingCards = () => {
cta: "Begrepen",
extraHelp:
"Vragen variëren afhankelijk van wat de organisator wil weten. Het kan gaan over de buurt, werkervaringen, of onderzoeksonderwerpen. Als er geen specifieke vragen zijn, kun je gewoon je gedachten of zorgen delen.",
- icon: HelpCircle,
title: "Vragenronde",
},
],
@@ -1050,7 +952,6 @@ export const useOnboardingCards = () => {
cta: "Vertel me meer",
extraHelp:
"Vermijd het delen van details die je niet met de organisator wilt delen. Wees voorzichtig en neem anderen niet op zonder hun toestemming.",
- icon: Lock,
title: "Privacy is belangrijk",
},
...(getPrivacyCard("nl-NL")?.slides || []),
@@ -1065,7 +966,6 @@ export const useOnboardingCards = () => {
cta: "Begrepen",
extraHelp:
"Een beetje achtergrondgeluid is geen probleem, zolang duidelijk is wie er spreekt.",
- icon: Volume2,
title: "Verminder achtergrondgeluid",
},
{
@@ -1074,7 +974,6 @@ export const useOnboardingCards = () => {
cta: "Klaar!",
extraHelp:
"Wi-Fi of een goede mobiele verbinding werkt het beste. Valt je verbinding weg? Geen zorgen, je kunt altijd opnieuw beginnen waar je gebleven was.",
- icon: Wifi,
title: "Goede internetverbinding",
},
{
@@ -1083,7 +982,6 @@ export const useOnboardingCards = () => {
cta: "Oké",
extraHelp:
"Dembrane probeert je apparaat actief te houden, maar soms kunnen apparaten dit overrulen. Je kunt de instellingen van je apparaat aanpassen om langer ontgrendeld te blijven als dat nodig is.",
- icon: Smartphone,
title: "Vergrendel je apparaat niet!",
},
],
@@ -1112,12 +1010,11 @@ export const useOnboardingCards = () => {
cta: "Ich verstehe.",
extraHelp:
"Aufnahmen werden transkribiert und aufschlussreich analysiert, anschließend nach 30 Tagen gelöscht. Für spezifische Details wenden Sie sich bitte an den Host, der Ihnen den QR-Code zur Verfügung gestellt hat.",
- icon: Server,
link: {
label: "Die vollständige Datenschutzrichtlinie lesen",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Datenverwendung & Sicherheit",
+ title: "Datenverwendung und Sicherheit.",
},
],
},
@@ -1134,12 +1031,11 @@ export const useOnboardingCards = () => {
cta: "I understand",
extraHelp:
"Recordings are transcribed and analyzed for insights, then deleted after 30 days. For specific details, consult the host who provided your QR code.",
- icon: Server,
link: {
label: "Read the full privacy policy",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Data Usage & Security",
+ title: "Data usage and security.",
},
],
},
@@ -1156,12 +1052,11 @@ export const useOnboardingCards = () => {
cta: "Entiendo",
extraHelp:
"Las grabaciones se transcriben y analizan para obtener información, luego se eliminan después de 30 días. Para detalles específicos, consulte al anfitrión que le proporcionó su código QR.",
- icon: Server,
link: {
label: "Lea la política de privacidad completa",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Uso de Datos y Seguridad",
+ title: "Uso de datos y seguridad.",
},
],
},
@@ -1178,12 +1073,11 @@ export const useOnboardingCards = () => {
cta: "Je comprends",
extraHelp:
"Les enregistrements sont transcrits et analysés pour obtenir des informations, puis supprimés après 30 jours. Pour des détails spécifiques, consultez l'hôte qui vous a fourni votre code QR.",
- icon: Server,
link: {
label: "Lire la politique de confidentialité complète",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Utilisation des Données et Sécurité",
+ title: "Utilisation des données et sécurité.",
},
],
},
@@ -1200,12 +1094,11 @@ export const useOnboardingCards = () => {
cta: "Ho capito",
extraHelp:
"Le registrazioni vengono trascritte e analizzate per ottenere insight, poi eliminate dopo 30 giorni. Per dettagli specifici, contatta l'host che ti ha fornito il QR code.",
- icon: Server,
link: {
label: "Leggi l'informativa completa sulla privacy",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Uso dei dati e sicurezza",
+ title: "Uso dei dati e sicurezza.",
},
],
},
@@ -1222,12 +1115,11 @@ export const useOnboardingCards = () => {
cta: "Ik begrijp het",
extraHelp:
"Opnames worden getranscribeerd en geanalyseerd voor inzichten, en na 30 dagen verwijderd. Voor specifieke details, raadpleeg de organisator die je de QR-code heeft gegeven.",
- icon: Server,
link: {
label: "Lees het privacybeleid",
url: "https://dembrane.notion.site/Privacy-Statement-Dembrane-1439cd84270580748046cc589861d115",
},
- title: "Gegevensgebruik & Beveiliging",
+ title: "Gegevensgebruik en beveiliging.",
},
],
},
diff --git a/echo/frontend/src/components/participant/verify/VerifiedArtefactItem.tsx b/echo/frontend/src/components/participant/verify/VerifiedArtefactItem.tsx
index d91ca14c..453d5460 100644
--- a/echo/frontend/src/components/participant/verify/VerifiedArtefactItem.tsx
+++ b/echo/frontend/src/components/participant/verify/VerifiedArtefactItem.tsx
@@ -1,5 +1,5 @@
import { ActionIcon, Box, Group, Paper, Text } from "@mantine/core";
-import { IconRosetteDiscountCheckFilled } from "@tabler/icons-react";
+import { IconRosetteDiscountCheck } from "@tabler/icons-react";
import { format } from "date-fns";
import type { VerificationArtifact } from "@/lib/api";
import { testId } from "@/lib/testUtils";
@@ -46,7 +46,7 @@ export const VerifiedArtefactItem = ({
aria-label="concrete artefact"
size={22}
>
-
+
diff --git a/echo/frontend/src/components/participant/verify/VerifyArtefact.tsx b/echo/frontend/src/components/participant/verify/VerifyArtefact.tsx
index a82c493d..61fdc09b 100644
--- a/echo/frontend/src/components/participant/verify/VerifyArtefact.tsx
+++ b/echo/frontend/src/components/participant/verify/VerifyArtefact.tsx
@@ -369,7 +369,7 @@ export const VerifyArtefact = () => {
{
{
{
}
loading={cloneProjectByIdMutation.isPending}
@@ -149,7 +148,7 @@ export const ProjectDangerZone = ({ project }: { project: Project }) => {
{...testId("project-clone-name-input")}
/>
-
+ Cancel {
-
+ Cancel = ({
setShowPreview(!showPreview)}
- leftSection={
+ rightSection={
showPreview ? :
}
{...testId("portal-editor-preview-toggle")}
@@ -1155,7 +1155,7 @@ const ProjectPortalEditorComponent: React.FC = ({
variant="subtle"
size="compact-sm"
onClick={refreshPreview}
- leftSection={}
+ rightSection={}
>
Refresh
diff --git a/echo/frontend/src/components/project/ProjectQRCode.tsx b/echo/frontend/src/components/project/ProjectQRCode.tsx
index 8ab5b894..8bc89350 100644
--- a/echo/frontend/src/components/project/ProjectQRCode.tsx
+++ b/echo/frontend/src/components/project/ProjectQRCode.tsx
@@ -13,6 +13,7 @@ import {
import { IconCheck, IconCopy, IconShare } from "@tabler/icons-react";
import { useMemo } from "react";
import { PARTICIPANT_BASE_URL } from "@/config";
+import { useAppPreferences } from "@/hooks/useAppPreferences";
import { testId } from "@/lib/testUtils";
import { QRCode } from "../common/QRCode";
@@ -22,6 +23,8 @@ interface ProjectQRCodeProps {
// eslint-disable-next-line react-refresh/only-export-components
export const useProjectSharingLink = (project?: Project) => {
+ const { preferences } = useAppPreferences();
+
// biome-ignore lint/correctness/useExhaustiveDependencies: not an issue
return useMemo(() => {
if (!project) {
@@ -58,9 +61,12 @@ export const useProjectSharingLink = (project?: Project) => {
| "it-IT"
];
- const link = `${PARTICIPANT_BASE_URL}/${languageCode}/${project.id}/start`;
+ // Include theme in URL so participant portal uses the same theme
+ const baseLink = `${PARTICIPANT_BASE_URL}/${languageCode}/${project.id}/start`;
+ const theme = preferences.fontFamily;
+ const link = `${baseLink}?theme=${theme}`;
return link;
- }, [project?.language, project?.id]);
+ }, [project?.language, project?.id, preferences.fontFamily]);
};
export const ProjectQRCode = ({ project }: ProjectQRCodeProps) => {
diff --git a/echo/frontend/src/components/project/ProjectSidebar.tsx b/echo/frontend/src/components/project/ProjectSidebar.tsx
index 44715c10..6a530e94 100644
--- a/echo/frontend/src/components/project/ProjectSidebar.tsx
+++ b/echo/frontend/src/components/project/ProjectSidebar.tsx
@@ -9,12 +9,13 @@ import {
Title,
Tooltip,
} from "@mantine/core";
+import { GraphIcon, HouseIcon, QuestionIcon } from "@phosphor-icons/react";
import { useRef } from "react";
import { useLocation, useParams } from "react-router";
import { useInitializeChatModeMutation } from "@/components/chat/hooks";
import { useProjectById } from "@/components/project/hooks";
import { useI18nNavigate } from "@/hooks/useI18nNavigate";
-import { Icons } from "@/icons";
+
import { testId } from "@/lib/testUtils";
import { Breadcrumbs } from "../common/Breadcrumbs";
import { I18nLink } from "../common/i18nLink";
@@ -94,7 +95,7 @@ export const ProjectSidebar = () => {
variant="transparent"
{...testId("project-breadcrumb-home")}
>
-
+
),
@@ -140,7 +141,7 @@ export const ProjectSidebar = () => {
}
+ rightIcon={}
active={pathname.includes("chat")}
{...testId("sidebar-ask-button")}
>
@@ -150,7 +151,7 @@ export const ProjectSidebar = () => {
}
+ rightIcon={}
active={pathname.includes("library")}
{...testId("sidebar-library-button")}
>
diff --git a/echo/frontend/src/components/project/webhooks/WebhookSettingsCard.tsx b/echo/frontend/src/components/project/webhooks/WebhookSettingsCard.tsx
index 31a85375..1cb4a33f 100644
--- a/echo/frontend/src/components/project/webhooks/WebhookSettingsCard.tsx
+++ b/echo/frontend/src/components/project/webhooks/WebhookSettingsCard.tsx
@@ -797,7 +797,7 @@ export const WebhookSection = ({ projectId }: WebhookSectionProps) => {
}
+ rightSection={}
variant="filled"
onClick={handleAddWebhook}
>
diff --git a/echo/frontend/src/components/report/ReportModalNavigationButton.tsx b/echo/frontend/src/components/report/ReportModalNavigationButton.tsx
index 5543ca7f..7f788892 100644
--- a/echo/frontend/src/components/report/ReportModalNavigationButton.tsx
+++ b/echo/frontend/src/components/report/ReportModalNavigationButton.tsx
@@ -2,7 +2,7 @@ import { t } from "@lingui/core/macro";
import { Trans } from "@lingui/react/macro";
import { Modal, Stack, Text } from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
-import { IconEdit } from "@tabler/icons-react";
+import { NotePencilIcon } from "@phosphor-icons/react";
import { useCallback } from "react";
import { useLocation, useParams } from "react-router";
import { useI18nNavigate } from "@/hooks/useI18nNavigate";
@@ -60,7 +60,7 @@ export const ReportModalNavigationButton = () => {
loading={isLoadingProjectReport}
loadingTooltip={t`Connecting to report services...`}
onClick={handleClick}
- rightIcon={}
+ rightIcon={}
active={pathname.includes("report")}
{...testId("sidebar-report-button")}
>
diff --git a/echo/frontend/src/components/report/UpdateReportModalButton.tsx b/echo/frontend/src/components/report/UpdateReportModalButton.tsx
index 899a47c3..4ccf70b9 100644
--- a/echo/frontend/src/components/report/UpdateReportModalButton.tsx
+++ b/echo/frontend/src/components/report/UpdateReportModalButton.tsx
@@ -6,6 +6,7 @@ import {
Modal,
NativeSelect,
Stack,
+ Text,
Tooltip,
} from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
@@ -62,12 +63,20 @@ export const UpdateReportModalButton = ({
return (
<>
-
+ Update
-
+
+ Update Report
+
+ }
+ >
{isPending ? (
@@ -118,6 +127,8 @@ export const UpdateReportModalButton = ({
}}
loading={isPending}
disabled={isPending}
+ size="md"
+ mt="xs"
>
Update Report
diff --git a/echo/frontend/src/components/settings/AuditLogsCard.tsx b/echo/frontend/src/components/settings/AuditLogsCard.tsx
index 947e80b4..a11b3bd3 100644
--- a/echo/frontend/src/components/settings/AuditLogsCard.tsx
+++ b/echo/frontend/src/components/settings/AuditLogsCard.tsx
@@ -395,7 +395,7 @@ export const AuditLogsCard = () => {
radius="md"
p="lg"
className="shadow-sm dark:bg-dark-6"
- style={{ backgroundColor: "var(--app-background)" }}
+ style={{ backgroundColor: "var(--app-background)" }}
>
@@ -430,7 +430,7 @@ export const AuditLogsCard = () => {