From 91dab5506d9b68c70ddcee4a57f277a0260285cf Mon Sep 17 00:00:00 2001 From: Gerard Date: Tue, 14 Jan 2025 09:03:48 +0100 Subject: [PATCH 01/10] gradient home --- src/components/Home/Benefits.tsx | 1 - src/components/Home/Clients.tsx | 9 +--- src/components/Home/ContactUs.tsx | 2 + src/components/Home/CreateProcess.tsx | 3 +- src/components/Home/Features.tsx | 1 - src/components/Home/Process.tsx | 1 - src/components/Home/Solutions.tsx | 1 - src/components/Home/Support.tsx | 12 +++-- src/components/Layout/ColorModeSwitcher.tsx | 6 +-- src/components/Navbar/index.tsx | 2 + src/theme/colors.ts | 54 +++++++++++++-------- src/theme/components/button.ts | 10 ++-- src/theme/components/card.ts | 24 ++++----- 13 files changed, 68 insertions(+), 58 deletions(-) diff --git a/src/components/Home/Benefits.tsx b/src/components/Home/Benefits.tsx index 9ef0f4b66..c1b4875de 100644 --- a/src/components/Home/Benefits.tsx +++ b/src/components/Home/Benefits.tsx @@ -61,7 +61,6 @@ const Benefits = () => { {t('home.benefits.title')} { return ( <> - + {t('home.clients_title')} diff --git a/src/components/Home/ContactUs.tsx b/src/components/Home/ContactUs.tsx index 951f877fb..6b484e383 100644 --- a/src/components/Home/ContactUs.tsx +++ b/src/components/Home/ContactUs.tsx @@ -87,6 +87,8 @@ const ContactUs = () => { mx='auto' as={ReactRouterLink} to='mailto:info@vocdoni.org' + colorScheme={'gradient'} + variant={'primary'} aria-label={t('home.contactus.btn')} title={t('home.contactus.btn')} target='_blank' diff --git a/src/components/Home/CreateProcess.tsx b/src/components/Home/CreateProcess.tsx index 28a988774..667ee9574 100644 --- a/src/components/Home/CreateProcess.tsx +++ b/src/components/Home/CreateProcess.tsx @@ -36,7 +36,6 @@ const CreateProcess = () => { {t('home.create_process.title')} { @@ -156,7 +156,7 @@ const SignIn = ({ email: emailProp }: { email?: string }) => { {t('not_registred_yet')} - + {t('create_account')} diff --git a/src/components/Auth/SignUp.tsx b/src/components/Auth/SignUp.tsx index cb9e9d17d..3b2d5ce75 100644 --- a/src/components/Auth/SignUp.tsx +++ b/src/components/Auth/SignUp.tsx @@ -137,7 +137,7 @@ const SignUp = ({ invite }: SignupProps) => { {errors?.terms?.message.toString()} - @@ -146,7 +146,7 @@ const SignUp = ({ invite }: SignupProps) => { {t('already_member')} - + {t('signin')} diff --git a/src/components/Dashboard/Menu/index.tsx b/src/components/Dashboard/Menu/index.tsx index 3ac2e99e4..68b655972 100644 --- a/src/components/Dashboard/Menu/index.tsx +++ b/src/components/Dashboard/Menu/index.tsx @@ -19,6 +19,7 @@ const DashboardMenu = ({ isOpen, onClose }: { isOpen: boolean; onClose: () => vo gap={4} bg='dashboard.sidebar.bg.light' _dark={{ bg: 'dashboard.sidebar.bg.dark' }} + boxShadow='3px 0 5px -6px #6c6d75' > @@ -44,7 +45,7 @@ const DashboardMenuContent = () => ( - diff --git a/src/components/Home/Benefits.tsx b/src/components/Home/Benefits.tsx index c1b4875de..2e17ccf06 100644 --- a/src/components/Home/Benefits.tsx +++ b/src/components/Home/Benefits.tsx @@ -72,7 +72,7 @@ const Benefits = () => { - + {t('home.benefits.card_1.title')} {t('home.benefits.card_1.description')} @@ -96,6 +96,7 @@ const Benefits = () => { benefits1: 'home.benefits.light_bg_color', benefits2: 'home.benefits.dark_bg_color', }} + background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.benefits.card_3.title')} @@ -120,7 +121,7 @@ const Benefits = () => { {t('home.benefits.card_4.description')} - + {t('home.benefits.card_5.title')} {t('home.benefits.card_5.description')} diff --git a/src/components/Home/Clients.tsx b/src/components/Home/Clients.tsx index 1a104946d..90cadf5c2 100644 --- a/src/components/Home/Clients.tsx +++ b/src/components/Home/Clients.tsx @@ -16,7 +16,7 @@ const Clients = () => { return ( <> - + {t('home.clients_title')} @@ -27,24 +27,22 @@ const Clients = () => { export const ClientsGrid = (props: GridProps) => ( - + F.C. Barcelona @@ -52,7 +50,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Omnium Cultural @@ -60,7 +58,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament Berga @@ -68,7 +66,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament la Bisbal @@ -76,7 +74,7 @@ export const ClientsGrid = (props: GridProps) => ( - + COEC @@ -84,7 +82,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Esquerra Republicana @@ -92,7 +90,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament Bellpuig @@ -100,7 +98,7 @@ export const ClientsGrid = (props: GridProps) => ( - + TIC Anoia @@ -108,7 +106,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Decidim @@ -116,7 +114,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Bloock diff --git a/src/components/Home/ContactUs.tsx b/src/components/Home/ContactUs.tsx index 6b484e383..d49df1aff 100644 --- a/src/components/Home/ContactUs.tsx +++ b/src/components/Home/ContactUs.tsx @@ -61,7 +61,7 @@ const ContactUs = () => { - + @@ -72,7 +72,7 @@ const ContactUs = () => { - + @@ -95,7 +95,7 @@ const ContactUs = () => { height='52px' fontSize='20px' mt='30px' - px='130px' + px='130px' background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.contactus.btn')} diff --git a/src/components/Home/CreateProcess.tsx b/src/components/Home/CreateProcess.tsx index 667ee9574..6660c2118 100644 --- a/src/components/Home/CreateProcess.tsx +++ b/src/components/Home/CreateProcess.tsx @@ -12,7 +12,7 @@ const CreateProcess = () => { { height='62px' fontSize='20px' minW='300px' + background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.create_process.btn')} diff --git a/src/components/Home/Faqs.tsx b/src/components/Home/Faqs.tsx index d0760ae72..d78b53fe3 100644 --- a/src/components/Home/Faqs.tsx +++ b/src/components/Home/Faqs.tsx @@ -61,66 +61,66 @@ const Faqs = () => { - {t('home.faqs.faq_1.title')} + {t('home.faqs.faq_1.title')} - {t('home.faqs.faq_1.description')} + {t('home.faqs.faq_1.description')} - {t('home.faqs.faq_2.title')} + {t('home.faqs.faq_2.title')} - {t('home.faqs.faq_2.description')} + {t('home.faqs.faq_2.description')} - {t('home.faqs.faq_3.title')} + {t('home.faqs.faq_3.title')} - {t('home.faqs.faq_3.description')} + {t('home.faqs.faq_3.description')} - {t('home.faqs.faq_8.title')} + {t('home.faqs.faq_8.title')} - {t('home.faqs.faq_8.description')} + {t('home.faqs.faq_8.description')} - {t('home.faqs.faq_4.title')} + {t('home.faqs.faq_4.title')} - {t('home.faqs.faq_4.description')} + {t('home.faqs.faq_4.description')} - {t('home.faqs.faq_5.title')} + {t('home.faqs.faq_5.title')} - {t('home.faqs.faq_5.description')} + {t('home.faqs.faq_5.description')} - {t('home.faqs.faq_6.title')} + {t('home.faqs.faq_6.title')} - {t('home.faqs.faq_6.description')} + {t('home.faqs.faq_6.description')} - {t('home.faqs.faq_7.title')} + {t('home.faqs.faq_7.title')} - {t('home.faqs.faq_7.description')} + {t('home.faqs.faq_7.description')} diff --git a/src/components/Home/Features.tsx b/src/components/Home/Features.tsx index 23142ebc3..cf3caf71f 100644 --- a/src/components/Home/Features.tsx +++ b/src/components/Home/Features.tsx @@ -55,7 +55,7 @@ const Features = () => { - + @@ -66,7 +66,7 @@ const Features = () => { - + @@ -77,7 +77,7 @@ const Features = () => { - + @@ -88,7 +88,7 @@ const Features = () => { - + @@ -99,7 +99,7 @@ const Features = () => { - + @@ -110,7 +110,7 @@ const Features = () => { - + @@ -121,7 +121,7 @@ const Features = () => { - + @@ -132,7 +132,7 @@ const Features = () => { - + @@ -143,7 +143,7 @@ const Features = () => { - + diff --git a/src/components/Home/Process.tsx b/src/components/Home/Process.tsx index 73767ffe1..df233f8f4 100644 --- a/src/components/Home/Process.tsx +++ b/src/components/Home/Process.tsx @@ -54,7 +54,7 @@ const Process = () => { - + @@ -65,7 +65,7 @@ const Process = () => { - + @@ -76,7 +76,7 @@ const Process = () => { - + @@ -87,7 +87,7 @@ const Process = () => { - + diff --git a/src/components/Home/Support.tsx b/src/components/Home/Support.tsx index 2832139e1..f16016f72 100644 --- a/src/components/Home/Support.tsx +++ b/src/components/Home/Support.tsx @@ -16,6 +16,7 @@ const Support = () => { backgroundRepeat='no-repeat' backgroundPosition='right' mb='100px' + background='linear-gradient(to bottom, #2C7D57, #22555A)' > { - )} - - + If your organization already have a profile, ask the admin to invite you to your organization. + {canSkip && ( + + )} If you want to login from another account, please logout diff --git a/src/components/Organization/Dashboard/AuthBanner.tsx b/src/components/Organization/Dashboard/AuthBanner.tsx index c07c579fe..d459db28e 100644 --- a/src/components/Organization/Dashboard/AuthBanner.tsx +++ b/src/components/Organization/Dashboard/AuthBanner.tsx @@ -15,7 +15,7 @@ const AuthBanner = ({ children, ...props }: AuthBannerProps) => { return ( { const { t } = useTranslation() @@ -12,18 +12,18 @@ const NoElections = () => { const { organization } = useOrganization() return ( - + - + {t('organization.elections_list_empty.alt')} {areEqualHexStrings(account?.address, organization?.address) ? ( <> - {t('organization.elections_list_empty.title')} + {t('organization.elections_list_empty.title')} {t('organization.elections_list_empty.description')} - diff --git a/src/components/Organization/NoOrganizations.tsx b/src/components/Organization/NoOrganizations.tsx index bf25db162..e39ae66fd 100644 --- a/src/components/Organization/NoOrganizations.tsx +++ b/src/components/Organization/NoOrganizations.tsx @@ -1,16 +1,29 @@ -import { Box, Button, Flex } from '@chakra-ui/react' +import { Box, Button, Flex, Card, CardBody, Img, Text } from '@chakra-ui/react' import { Link as ReactRouterLink } from 'react-router-dom' import { DashboardContents } from '~components/Layout/Dashboard' import { Routes } from '~src/router/routes' +import { Trans } from 'react-i18next' +import empty from '/assets/illustrations/9.png' export const NoOrganizations = () => { return ( - - You don't belong to any organization yet! - - + + + + + + + + You don't belong to any organization yet! + + }}> + + + + + ) } diff --git a/src/components/Organization/Subscription.tsx b/src/components/Organization/Subscription.tsx index e2543a62c..657d53616 100644 --- a/src/components/Organization/Subscription.tsx +++ b/src/components/Organization/Subscription.tsx @@ -87,7 +87,7 @@ export const SubscriptionList = () => { const isFree = subscription.plan.id === PlanId.Free return ( - + {!subscription.subscriptionDetails.active && ( diff --git a/src/components/Organization/Team.tsx b/src/components/Organization/Team.tsx index 556aaf5b9..204b34c04 100644 --- a/src/components/Organization/Team.tsx +++ b/src/components/Organization/Team.tsx @@ -126,9 +126,9 @@ export const TeamMembersList = () => { return ( - + Team members - + {members?.length} diff --git a/src/components/ProcessCreate/Steps/Confirm.tsx b/src/components/ProcessCreate/Steps/Confirm.tsx index dfa4e22a9..9c8f54354 100644 --- a/src/components/ProcessCreate/Steps/Confirm.tsx +++ b/src/components/ProcessCreate/Steps/Confirm.tsx @@ -285,12 +285,12 @@ export const Confirm = () => { )} - diff --git a/src/elements/LayoutAuth.tsx b/src/elements/LayoutAuth.tsx index a5f437303..d822a68f6 100644 --- a/src/elements/LayoutAuth.tsx +++ b/src/elements/LayoutAuth.tsx @@ -151,7 +151,7 @@ const LayoutAuth = () => { margin: '0 auto', maxWidth: '100%', height: 'auto', - marginTop: '50px', + marginTop: '250px', }} /> diff --git a/src/elements/LayoutDashboard.tsx b/src/elements/LayoutDashboard.tsx index 30f949b86..4128c3d40 100644 --- a/src/elements/LayoutDashboard.tsx +++ b/src/elements/LayoutDashboard.tsx @@ -31,6 +31,7 @@ const LayoutDashboard: React.FC = () => { }} templateRows='auto 1fr' minH='100vh' + height='100vh' px={{ base: 2, md: 4, lg: 0 }} bg='dashboard.bg.light' _dark={{ bg: 'dashboard.bg.dark' }} @@ -53,7 +54,7 @@ const LayoutDashboard: React.FC = () => { /> )} {title && ( - + {title} )} @@ -69,7 +70,7 @@ const LayoutDashboard: React.FC = () => { {/* Main Content */} - + diff --git a/src/elements/NotFound.tsx b/src/elements/NotFound.tsx index 9828bf219..6a8358687 100644 --- a/src/elements/NotFound.tsx +++ b/src/elements/NotFound.tsx @@ -35,7 +35,7 @@ const NotFound = () => { {t('error.not_found')} - + {!idx && ( - ) + export default CreateOrganization diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 6eed0cfd3..e8a052196 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -1,13 +1,13 @@ { "actions": { - "save": "Save Changes" + "save": "Guarda els canvis" }, "active": "Actiu", "all": "Tots", "already_member": "Ja ets membre?", "anonymous": { - "description": "Voters will remain anonymous", - "title": "Anonymous" + "description": "Els votants romandran anònims", + "title": "Anònim" }, "aside": { "has_already_voted": "El teu vot s'ha registrat correctament", @@ -19,7 +19,7 @@ "submitting": "Enviant", "verify_vote_on_explorer": "Verifica el vot a l'explorador", "votes_one": "1 votant", - "votes_many": "{{ count }} votants", + "votes_many": "", "votes_other": "{{ count }} votants", "votes_weight_one": "1 vot", "votes_weight_many": "", @@ -35,17 +35,17 @@ "1": "Llança eleccions segures i verificables amb només uns clics.", "2": "Característiques adaptables que es poden escalar amb la teva organització.", "3": "Estalvia fins a 10 vegades en comparació amb els mètodes tradicionals de votació.", - "4": "Organitza vots accessibles en qualsevol dispositiu: mòbil, tauleta o escriptori.", - "5": "La xifra avançada d'encriptació garanteix que les teves eleccions siguin segures i privades.", + "4": "Organitza votacions accessibles en qualsevol dispositiu: mòbil, tauleta o escriptori.", + "5": "L'encriptació garanteix que les teves eleccions siguin segures i privades.", "6": "Fomenta una participació més alta amb eines fàcils d'usar.", - "7": "Incorpora fàcilment la teva marca i els fluxos de treball existents.", + "7": "Incorpora fàcilment la teva imatge corporativa a la votació.", "8": "Els teus processos de votació són segurs, fiables i llestos per funcionar.", - "9": "Gestiona múltiples eleccions sense esforç des d'un únic tauler.", + "9": "Gestiona múltiples eleccions sense esforç des d'un únic lloc.", "10": "Actualitzacions i anàlisis en temps real a les teves mans.", "11": "Augmenta la participació amb fluxos de votació intuïtius.", "12": "Redueix les despeses operatives per a tu i els teus votants.", "13": "Explora opcions avançades com el vot secret o els vots ponderats.", - "14": "Les eleccions transparents i verificables fomenten la confiança en els teus resultats.", + "14": "Les eleccions transparents i verificables fomenten la confiança en els resultats.", "15": "Abraça el futur de la votació. Comença avui!", "16": "Centra't en el que importa més." }, @@ -57,7 +57,7 @@ "5": "Tecnologia fiable:", "6": "Potencia la participació:", "7": "Integració sense fissures:", - "8": "Relaxat, ens encarreguem de tot:", + "8": "Relaxa't, ens encarreguem de tot:", "9": "Optimitza les operacions:", "10": "Mantingue't informat:", "11": "Impulsa la participació:", @@ -154,7 +154,7 @@ "paused_start": "Comença {{ distance }}" }, "spreadsheet": { - "access_button": "Identifica't", + "access_button": "Identificar-se", "anon_sik_helper": "Això garanteix que el teu vot sigui anònim", "anon_sik_label": "Defineix una contrasenya per al teu vot", "close": "Tanca", @@ -223,7 +223,6 @@ "control": "Control:", "copy": { "address": "Copia l'adreça", - "copied": "Copied", "copied_title": "Copiat!" }, "country_selector": { @@ -252,20 +251,20 @@ }, "create_account": "Crea un compte", "create_org": { - "already_profile": " If your organization already have a profile, ask the admin to invite you to your organization.", - "communication": "I want to receive communications and be contacted to tailor my governance experience.", - "credit_card": "No credit card, no automatic renewal.", - "full_access": "Full access to basic features", - "header": "Try Vocdoni for free for 7 days", - "logout": "If you want to login from another account, please logout", - "multiple_administrators": "Multiple administrators", - "private_org": "Private Organization Details", - "private_org_description": "Help us tailor your experience with information about your org. We won't share this info", - "public_info": "Public Organization Information", - "support_during_trial_period": "Support during the trial period", - "title": "Create Your Organization", - "unlimited_voting_processes": "Unlimited creation of voting processes", - "up_to_20_voters": "Up to 20 voters" + "already_profile": "Si la teva organització ja té un perfil, demana a l'administrador que et convidi a l'organització.", + "communication": "Vull rebre comunicacions i ser contactat per adaptar la meva experiència de governança.", + "credit_card": "Sense targeta de crèdit, sense renovació automàtica.", + "full_access": "Accés complet a les funcionalitats bàsiques", + "header": "Prova Vocdoni gratuïtament durant 7 dies", + "logout": "Si vols iniciar sessió des d'un altre compte, si us plau tanca la sessió", + "multiple_administrators": "Múltiples administradors", + "private_org": "Detalls privats de l'organització", + "private_org_description": "Ajuda'ns a adaptar la teva experiència amb informació sobre la teva organització. No compartirem aquesta informació", + "public_info": "Informació pública de l'organització", + "support_during_trial_period": "Suport durant el període de prova", + "title": "Crea la teva organització", + "unlimited_voting_processes": "Creació il·limitada de processos de votació", + "up_to_20_voters": "Fins a 20 votants" }, "csp_census": { "github": { @@ -273,13 +272,13 @@ "selected_users": "Usuaris seleccionats:" } }, - "customization": "Customization", - "delete_my_account": "Delete my account", - "description": "Description", + "customization": "Personalització", + "delete_my_account": "Elimina el meu compte", + "description": "Descripció", "edit_saas_profile": { - "customization_details": "Define the params that will enhance the user experience and customize the voting page", - "edited_successfully": "Updated successfully", - "header_image": "Header Image" + "customization_details": "Defineix els paràmetres que milloraran l'experiència d'usuari i personalitzaran la pàgina de votació", + "edited_successfully": "Actualitzat correctament", + "header_image": "Imatge de capçalera" }, "email": "Correu electrònic", "email_placeholder": "your@email.com", @@ -345,7 +344,9 @@ }, "finished": "Finalitzat", "footer": { + "about_us": "Sobre Nosaltres", "company": "Empresa", + "contact": "Contacte", "demo": "Tipus de Votació", "demo1": "Elecció Simple", "demo2": "Elecció Múltiple", @@ -353,6 +354,7 @@ "demo4": "Votació per Classificació", "demo5": "Pressupostos Participatius", "demo6": "Votació Ponderada", + "developer_portal": "Developer Portal", "footer_subtitle": "El Protocol de Votació Global", "terms_and_privacy": "Termes d'ús i Política de privacitat", "uses_cases": "Casos d'Ús", @@ -372,7 +374,7 @@ "title_placeholder": "El nom de l'organització", "website_placeholder": "https://example.com" }, - "choose_an_option": "Choose an option", + "choose_an_option": "Tria una opció", "error": { "address_already_in_use": "Aquesta adreça ja és al cens", "address_pattern": "Només s'admeten adreces hexadecimals (p. ex. 0x031101A...)", @@ -425,7 +427,7 @@ "census": "Cens", "census_preview_is_shortened": "(la llista prèvia està limitada a {{ limit }} resultats)", "census_total_people_one": "Una persona podrà votar en aquesta votació", - "census_total_people_many": "{{ count }} persones podran votar en aquesta votació", + "census_total_people_many": "", "census_total_people_other": "{{ count }} persones podran votar en aquesta votació", "configuration": "Configuració", "confirmation": "Confirmació", @@ -437,7 +439,7 @@ "edit": "Editar", "election_info": "Informació de la Votació", "questions_one": "Pregunta", - "questions_many": "Preguntes", + "questions_many": "", "questions_other": "Preguntes", "secret_until_the_end": "Secret fins el final", "title": "Vista prèvia i costos de votació", @@ -675,7 +677,7 @@ "description": "Permet als votants emetre els seus vots a través de diversos canals, incloent navegadors web, telèfons, tauletes, etc., assegurant accessibilitat i comoditat per a tots els participants.", "title": "Suport multiplataforma" }, - "subtitle_1": "Desbloqueja el potencial de la plataforma plena de funcionalitats de Vocdoni, oferint un valor excepcional tant per als organitzadors com per als votants. Personalitza els teus processos de votació de manera fluida, assegura eleccions segures i transparents, i capacita els participants amb opcions intuïtives i accessibles. Amb l'aplicació Vocdoni, experimenta el poder d'un compromís millorat, eficiència i confiança en cada experiència de votació.", + "subtitle_1": "Organitza votacions segures i transparents amb Vocdoni, oferint una experiència senzilla tant per als organitzadors com per als votants. Adapta els processos de votació segons les teves necessitats, garantint la seguretat i la transparència en tot moment. Amb Vocdoni, cada votació és accessible i fàcil d'utilitzar, ajudant a augmentar la participació i la confiança sense complicacions.", "title": "Característiques" }, "process": { @@ -763,9 +765,10 @@ "unexpected_error": "", "user_invited": "Email enviat a {{email}}" }, - "invite_people": "Convida Gent", - "keep_me_logged": "Mantén-me connectat", + "invite_people": "Convidar Membres", + "keep_me_logged": "Mantenir-me connectat", "languages": "Languages", + "Light mode": "Light mode", "link": { "discord": "Enllaç al Discord de Vocdoni", "github": "Enllaç al Github de Vocdoni", @@ -806,7 +809,7 @@ "helper": "Provide a clear title and description to help voters understand the vote" }, "more_than_memberships_one": "més d'{{count}} membre", - "more_than_memberships_many": "", + "more_than_memberships_many": "more than {count} memberships", "more_than_memberships_other": "més de {{count}} membres", "name": "Name", "new_organization": { @@ -840,6 +843,7 @@ "not_owner": "Aquesta organització encara no té votacions.", "title": "Crea la teva primera elecció" }, + "no_organization_title": "You don't belong to any organization yet!", "organization": "Organització", "title": { "read_more": "Expandir títol" @@ -877,7 +881,7 @@ }, "success": "Password updated successfully" }, - "passwords_do_not_match": "", + "passwords_do_not_match": "Els passwords no coincideixen", "plan_upgrade": { "dont_limit_yourself": "No et limitis. Uneix-te a la família de 725 organitzacions que confien en <2>Vocdoni.", "feature_available_in": "Funció disponible a:", @@ -895,7 +899,7 @@ "custom_title": "Personalitzat", "date_format": "dd/mm/yy", "dedicated_manager": "Dedicated account manager", - "error": "", + "error": "Error", "essential_subtitle": "Organitzacions petites o mitjanes o grups comunitaris amb necessitats bàsiques de votació.", "essential_title": "Essencial", "features": "Features", @@ -914,7 +918,7 @@ "upgrade_title": "Actualitza el teu pla", "white_label": "White label solution", "yearly_processes_one": "{{ count }} procés anual", - "yearly_processes_many": "", + "yearly_processes_many": "{{ count }} yearly voting process", "yearly_processes_other": "{{ count }} processos anuals", "your_plan": "Actualment estàs subscrit al pla {{ plan }}. Si actualitzes, només et cobrarem la diferència anual. En el següent període de facturació, que comença el {{ billing, format }}, pagaràs íntegrament pel nou pla seleccionat." }, @@ -1163,7 +1167,7 @@ "signup_first_name": "Nom", "signup_last_name": "Cognom", "signup_subtitle": "Introdueix el teu correu electrònic i contrasenya per registrar-te!", - "signup_title": "Registra't", + "signup_title": "Registrar-se", "skip": "Ometre", "submit": "Submit", "subscribe": "Subscribe", @@ -1268,7 +1272,7 @@ }, "total_votes_submitted": "Total Votes Submitted", "update": "Update", - "upgrade": "Amplia-ho", + "upgrade": "Upgrade", "uploader": { "click_or_drag_and_drop": "Fes clic per pujar o arrossega i deixa anar(Formats permesos: {{ formats, list }})", "drop_here": "Deixa anar aquí" @@ -1278,6 +1282,9 @@ "read_more": "Llegeix més" }, "user_management": "Gestió d'usuaris", + "validation": { + "required": "" + }, "verification_code": "Verification Code", "verification_code_placeholder": "Enter the verification code", "verification_code_resent": "Verification code resent!", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 6312e993d..bbda3fc87 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -35,7 +35,7 @@ "4": "Organize votes accessible on any device—mobile, tablet, or desktop.", "5": "Advanced encryption ensures your elections are secure and private.", "6": "Foster higher voter turnout with user-friendly tools.", - "7": "Easily incorporate your branding and existing workflows.", + "7": "Easily incorporate your branding and look'n'feel.", "8": "Your voting processes are safe, secure, and ready to go.", "9": "Manage multiple elections effortlessly from one dashboard.", "10": "Real-time updates and insights at your fingertips.", @@ -220,7 +220,6 @@ "control": "Control:", "copy": { "address": "Copy address", - "copied": "Copied", "copied_title": "Copied!" }, "country_selector": { @@ -342,7 +341,9 @@ }, "finished": "Finished", "footer": { + "about_us": "About Us", "company": "Company", + "contact": "Contact", "demo": "Voting Types", "demo1": "Single Choice", "demo2": "Multiple Choice", @@ -350,6 +351,7 @@ "demo4": "Ranked Voting", "demo5": "Participatory Budgeting", "demo6": "Weighted Voting", + "developer_portal": "Developer Portal", "footer_subtitle": "The Global Voting Protocol", "terms_and_privacy": "Terms of use & Privacy Policy", "uses_cases": "Use Cases", @@ -753,12 +755,13 @@ "success_description": "You can now sign in", "success_title": "Invitation accepted", "title": "Invite people to your team", - "unexpected_error": "", + "unexpected_error": "Error", "user_invited": "Email sent to {{email}}" }, "invite_people": "Invite People", "keep_me_logged": "Keep me logged in", "languages": "Languages", + "Light mode": "Light mode", "link": { "discord": "Link to Vocdoni's discord", "github": "Link to Vocdoni's github", @@ -832,6 +835,7 @@ "not_owner": "This organization has no voting processes yet", "title": "Create your first voting process" }, + "no_organization_title": "You don't belong to any organization yet!", "organization": "Organization", "title": { "read_more": "Expand title" @@ -869,7 +873,7 @@ }, "success": "Password updated successfully" }, - "passwords_do_not_match": "", + "passwords_do_not_match": "Las contraseñas no coinciden", "plan_upgrade": { "dont_limit_yourself": "Don't limit yourself. Join the family of 725 orgs that trust <2>Vocdoni.", "feature_available_in": "Feature available in:", @@ -887,7 +891,7 @@ "custom_title": "Custom", "date_format": "dd/mm/yy", "dedicated_manager": "Dedicated account manager", - "error": "", + "error": "Error", "essential_subtitle": "Small or medium-sized orgs or community groups with basic voting needs.", "essential_title": "Essential", "features": "Features", @@ -1266,6 +1270,9 @@ "read_more": "Read more" }, "user_management": "User Managment", + "validation": { + "required": "" + }, "verification_code": "Verification Code", "verification_code_placeholder": "Enter the verification code", "verification_code_resent": "Verification code resent!", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 9d8fae4e4..945d8d899 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -6,8 +6,8 @@ "all": "Todos", "already_member": "¿Ya eres miembro?", "anonymous": { - "description": "Voters will remain anonymous", - "title": "Anonymous" + "description": "Los votantes permanecerán anónimos", + "title": "Anónimo" }, "aside": { "has_already_voted": "Tu voto ha sido registrado correctamente", @@ -19,7 +19,7 @@ "submitting": "Enviando", "verify_vote_on_explorer": "Verifica el voto en el explorador", "votes_one": "1 votante", - "votes_many": "{{ count }} votantes", + "votes_many": "", "votes_other": "{{ count }} votantes", "votes_weight_one": "1 voto", "votes_weight_many": "", @@ -110,12 +110,12 @@ "voting_process_cost": "Coste del proceso de votación:" }, "calendar": { - "define_active_period": "Define the active period for receiving votes", - "end_date": "End date", - "end_date_description": "Define the exact date and time of completion", - "start_date": "Start date", - "subtitle": "Specify the active period for receiving votes", - "title": "Calendar" + "define_active_period": "Define el período activo para recibir votos", + "end_date": "Fecha de finalización", + "end_date_description": "Define la fecha y hora exacta de finalización", + "start_date": "Fecha de inicio", + "subtitle": "Especifica el período activo para recibir votos", + "title": "Calendario" }, "cc": { "actions": { @@ -223,7 +223,6 @@ "control": "Control:", "copy": { "address": "Copiar dirección", - "copied": "Copied", "copied_title": "¡Copiado!" }, "country_selector": { @@ -252,20 +251,20 @@ }, "create_account": "Crear una cuenta", "create_org": { - "already_profile": " If your organization already have a profile, ask the admin to invite you to your organization.", - "communication": "I want to receive communications and be contacted to tailor my governance experience.", - "credit_card": "No credit card, no automatic renewal.", - "full_access": "Full access to basic features", - "header": "Try Vocdoni for free for 7 days", - "logout": "If you want to login from another account, please logout", - "multiple_administrators": "Multiple administrators", - "private_org": "Private Organization Details", - "private_org_description": "Help us tailor your experience with information about your org. We won't share this info", - "public_info": "Public Organization Information", - "support_during_trial_period": "Support during the trial period", - "title": "Create Your Organization", - "unlimited_voting_processes": "Unlimited creation of voting processes", - "up_to_20_voters": "Up to 20 voters" + "already_profile": "Si tu organización ya tiene un perfil, pide al administrador que te invite a tu organización.", + "communication": "Quiero recibir comunicaciones y ser contactado para adaptar mi experiencia de gobernanza.", + "credit_card": "Sin tarjeta de crédito, sin renovación automática.", + "full_access": "Acceso completo a las funciones básicas", + "header": "Prueba Vocdoni gratis durante 7 días", + "logout": "Si deseas iniciar sesión desde otra cuenta, por favor cierra sesión", + "multiple_administrators": "Múltiples administradores", + "private_org": "Detalles privados de la organización", + "private_org_description": "Ayúdanos a adaptar tu experiencia con información sobre tu organización. No compartiremos esta información", + "public_info": "Información pública de la organización", + "support_during_trial_period": "Soporte durante el período de prueba", + "title": "Crea tu organización", + "unlimited_voting_processes": "Creación ilimitada de procesos de votación", + "up_to_20_voters": "Hasta 20 votantes" }, "csp_census": { "github": { @@ -282,7 +281,7 @@ "header_image": "Header Image" }, "email": "Correo electrónico", - "email_placeholder": "your@email.com", + "email_placeholder": "tu@correo.com", "error": { "go_back": "Volver atrás", "invalid_cell_data": "Algunas filas no contienen direcciones correctas: {{rows, list}}", @@ -316,36 +315,38 @@ "tokens_you_own": "Tienes {{ balance }} tokens." }, "features": { - "anonymous": "Anonymous voting", + "anonymous": "Votación anónima", "approval": "Votación por aprobación", - "cumulative": "Cumulative voting", - "custom_url": "Custom URL", + "cumulative": "Votación acumulativa", + "custom_url": "URL personalizada", "email_reminder": "Recordatorios por correo electrónico", - "interruptible": "Interruptible", - "live_results": "Live results", - "live_streaming": "Live streaming", + "interruptible": "Interrumpible", + "live_results": "Resultados en tiempo real", + "live_streaming": "Transmisión en vivo", "memberships": "Hasta {{ value }} membresías", - "multiple": "Multiple choice voting", - "overwrite": "Vote overwrite", + "multiple": "Votación de opción múltiple", + "overwrite": "Reemplazo de voto", "personalization": "Personalización", "ranked": "Votación por rango", "section": { - "features": "Features", - "organization": "Organization", - "voting_types": "Voting Types" + "features": "Características", + "organization": "Organización", + "voting_types": "Tipos de votación" }, - "single": "Single choice voting", + "single": "Votación de opción única", "sms_notification": "Notificaciones por SMS", "sub_orgs": "Hasta {{ value }} suborganizaciones", "title": "Características", - "total_members": "Total available members", - "total_orgs": "Total available sub-organizations", + "total_members": "Total de miembros disponibles", + "total_orgs": "Total de suborganizaciones disponibles", "weighted": "Votación ponderada", - "white_label": "White label" + "white_label": "Marca blanca" }, "finished": "Finalizado", "footer": { + "about_us": "Sobre Nosotros", "company": "Empresa", + "contact": "Contacto", "demo": "Tipos de Votación", "demo1": "Elección Simple", "demo2": "Elección Múltiple", @@ -353,6 +354,7 @@ "demo4": "Votación por Clasificación", "demo5": "Presupuestos Participativos", "demo6": "Votación Ponderada", + "developer_portal": "Developer Portal", "footer_subtitle": "El Protocolo de Votación Global", "terms_and_privacy": "Términos de uso y Política de privacidad", "uses_cases": "Casos de Uso", @@ -372,15 +374,15 @@ "title_placeholder": "El nombre de la organización", "website_placeholder": "https://example.com" }, - "choose_an_option": "Choose an option", + "choose_an_option": "Elige una opción", "error": { "address_already_in_use": "Esta dirección ya está en el censo", "address_pattern": "Solo se permiten direcciones hexadecimales (p.ej. 0x031101A...)", - "email_invalid": "Invalid email address", + "email_invalid": "Correo electrónico incorrecto", "field_is_required": "Este campo es obligatorio", "min_address": "Por favor, proporciona al menos una dirección", "min_users_address": "Por favor, proporciona al menos una dirección", - "password_min_length": "Min. 8 characters", + "password_min_length": "Min. 8 caracteres", "recipient_address_invalid": "La dirección especificada no parece válida" }, "process_create": { @@ -425,7 +427,7 @@ "census": "Censo", "census_preview_is_shortened": "(la lista previa está limitada a {{ limit }} resultados)", "census_total_people_one": "Una persona podrá votar en esta votación", - "census_total_people_many": "{{ count }} personas podrán votar en esta votación", + "census_total_people_many": "", "census_total_people_other": "{{ count }} personas podrán votar en esta votación", "configuration": "Configuración", "confirmation": "Confirmación", @@ -437,7 +439,7 @@ "edit": "Editar", "election_info": "Información de Votación", "questions_one": "Pregunta", - "questions_many": "Preguntas", + "questions_many": "", "questions_other": "Preguntas", "secret_until_the_end": "Secreto hasta el final", "title": "Vista previa y costos de votación", @@ -508,11 +510,11 @@ }, "process_create_saas": { "steps": { - "census_title": "Census", - "confirm_title": "Confirm", - "features_title": "Features", - "info_title": "Information", - "questions_title": "Questions" + "census_title": "Censo", + "confirm_title": "Confirmar", + "features_title": "Características", + "info_title": "Información", + "questions_title": "Preguntas" } } }, @@ -747,18 +749,18 @@ "title": "¿Estáslisto para una nueva Era en la gobernanza Web3?" }, "invite": { - "account_not_verified": "Your account is not verified. Please verify your account to continue.", - "create_account_subtitle": "You need an account first, in order to accept your invite", - "create_account_title": "Create your account", + "account_not_verified": "Tu cuenta no está verificada. Por favor, verifica tu cuenta para continuar.", + "create_account_subtitle": "Primero necesitas una cuenta para aceptar tu invitación.", + "create_account_title": "Crea tu cuenta", "error": "Error", - "go_to_verify": "Verify Account", - "invalid_link": "Invalid invite link received", - "processing": "Processing your invitation...", + "go_to_verify": "Verificar cuenta", + "invalid_link": "Enlace de invitación no válido", + "processing": "Procesando tu invitación...", "select_option": "Selecciona una opción", "subtitle": "Trabajar junto a otros es la clave para el éxito.", "success": "¡Invitación enviada!", - "success_description": "You can now sign in", - "success_title": "Invitation accepted", + "success_description": "Ahora te puedes logar", + "success_title": "Invitación acceptada", "title": "Invita gente a tu equipo", "unexpected_error": "", "user_invited": "Se ha mandado a {{ email }}" @@ -766,6 +768,7 @@ "invite_people": "Invitar Gente", "keep_me_logged": "Mantenerme conectado", "languages": "Languages", + "Light mode": "Light mode", "link": { "discord": "Enlace al Discord de Vocdoni", "github": "Enlace al Github de Vocdoni", @@ -779,9 +782,9 @@ }, "logout": "Logout", "membership_size": { - "language": "Default Language", - "selector_label": "Membership size", - "timezone": "Timezone" + "language": "Idioma por Defecto", + "selector_label": "Nº de Miembros", + "timezone": "Zona Horaria" }, "menu": { "burger_aria_label": "menú de usuario", @@ -805,9 +808,9 @@ "meta": { "helper": "Provide a clear title and description to help voters understand the vote" }, - "more_than_memberships_one": "más de {{count}} membresía", - "more_than_memberships_many": "", - "more_than_memberships_other": "más de {{count}} membresías", + "more_than_memberships_one": "más de {{count}} miembros", + "more_than_memberships_many": "more than {count} memberships", + "more_than_memberships_other": "más de {{count}} miembros", "name": "Nombre", "new_organization": { "create_organization_btn": "Crear Organización", @@ -815,17 +818,17 @@ "description2": "Como paquete de bienvenida, recibirá {{ faucetAmount }} tokens gratis para comenzar a utilizar nuestra plataforma.", "title": "Nueva Organización" }, - "new_password": "New Password", - "new_password_placeholder": "Enter your new password", + "new_password": "Nueva contraseña", + "new_password_placeholder": "Introduce tu nueva contraseña", "new_voting": "Nueva votación", - "no_results_filtering": "Your current search filter returns no results", + "no_results_filtering": "Tu filtro de búsqueda actual no devuelve resultados", "not_registred_yet": "¿Aún no estás registrado?", - "open_in_explorer": "Abrir en explorador", + "open_in_explorer": "Abrir en el explorador", "or": "o", "org_type_selector": { - "community": "Community", - "company": "Company", - "selector_label": "Select Organization Type" + "community": "Comunidad", + "company": "Empresa", + "selector_label": "Selecciona el tipo de organización" }, "organization": { "avatar_alt": "Imagen de avatar de la organización {{ name }}", @@ -840,6 +843,7 @@ "not_owner": "Esta organización aún no tiene votaciones.", "title": "Crea tu primer proceso de votación" }, + "no_organization_title": "You don't belong to any organization yet!", "organization": "Organización", "title": { "read_more": "Expandir título" @@ -847,35 +851,35 @@ "votings_list": "Lista de procesos de votación" }, "overwrite": { - "description": "Voters will be able to overwrite their vote once", - "title": "Vote overwrite" + "description": "Los votantes podrán modificar su voto una vez", + "title": "Modificación de voto" }, "password": "Contraseña", - "password_placeholder": "Min 8 characters", + "password_placeholder": "Min 8 caracteres", "password_reset": { - "subtitle": "If your email corresponds to an existing account, you'll receive an email with a code to reset your password.", - "title": "Password reset" + "subtitle": "Si tu correo electrónico corresponde a una cuenta existente, recibirás un correo con un código para restablecer tu contraseña.", + "title": "Restablecimiento de contraseña" }, "password_update": { "actions": { - "update": "Update Password" + "update": "Actualizar contraseña" }, "confirm": { - "label": "Confirm Password", - "mismatch": "Passwords don't match", - "required": "Please confirm your password" + "label": "Confirmar contraseña", + "mismatch": "Las contraseñas no coinciden", + "required": "Por favor, confirma tu contraseña" }, - "error": "Failed to update password", + "error": "Error al actualizar la contraseña", "new": { - "label": "New Password", - "minLength": "Password must be at least 8 characters", - "required": "Password is required" + "label": "Nueva contraseña", + "minLength": "La contraseña debe tener al menos 8 caracteres", + "required": "Se requiere una contraseña" }, "old": { - "label": "Current Password", - "required": "Current password is required" + "label": "Contraseña actual", + "required": "Se requiere la contraseña actual" }, - "success": "Password updated successfully" + "success": "Contraseña actualizada con éxito" }, "passwords_do_not_match": "", "plan_upgrade": { @@ -887,18 +891,18 @@ "preview": "Preview", "pricing": { "advanced_analytitcs": "Informes y análisis avanzados", - "all_features": "All features & voting types", + "all_features": "Todas las funciones y tipos de votación", "basic_analytics": "Informes y análisis básicos", - "compare_features": "Compare all features", + "compare_features": "Compara todas las funciones", "core_voting": "Funciones básicas de votación", - "custom_subtitle": "Large organizations enterprises, and institutions requiring extensive customization and support.", - "custom_title": "Personalizado", - "date_format": "dd/mm/yy", - "dedicated_manager": "Dedicated account manager", + "custom_subtitle": "Grandes organizaciones, empresas e instituciones que requieren una personalización y soporte extensivos.", + "custom_title": "Plan personalizado", + "date_format": "dd/mm/aa", + "dedicated_manager": "Gerente de cuenta dedicado", "error": "", "essential_subtitle": "Organizaciones pequeñas o medianas o grupos comunitarios con necesidades básicas de votación.", "essential_title": "Esencial", - "features": "Features", + "features": "Funciones", "free_subtitle": "Organizaciones pequeñas o grupos comunitarios con necesidades básicas de votación.", "free_title": "Gratis", "gpdr_compilance": "Cumplimiento del GDPR", @@ -910,20 +914,20 @@ "priority_support": "Soporte prioritario por tickets", "ticket_support": "Soporte por tickets", "unlimited_yearly_processes": "Procesos anuales ilimitados", - "up_to_admins": "Hasta {{ admin }} admin. y {{ org }} organizaciones", + "up_to_admins": "Hasta {{ admin }} administradores y {{ org }} organizaciones", "upgrade_title": "Actualiza tu plan", - "white_label": "White label solution", + "white_label": "Solución de marca blanca", "yearly_processes_one": "{{ count }} proceso anual", - "yearly_processes_many": "", + "yearly_processes_many": "{{ count }} yearly voting process", "yearly_processes_other": "{{ count }} procesos anuales", "your_plan": "Actualmente estás suscrito al plan {{ plan }}. Si actualizas, solo te cobraremos la diferencia anual. En el próximo período de facturación, que comienza el {{ billing, format }}, pagarás íntegramente por el nuevo plan seleccionado." }, "pricing_card": { "from": "Desde {{price}}/año", - "most_popular_plan": "Most popular plan", + "most_popular_plan": "Plan más popular", "view_features": "Ver todas las características" }, - "privacy_policy": "Privacy Policy", + "privacy_policy": "Política de Privacidad", "privacyPolicy": { "description": "Este documento describe las prácticas de privacidad de la Asociación Vocdoni (\"Vocdoni\") con respecto al uso de sus sitios web y servicios.", "section1": { @@ -1079,7 +1083,7 @@ "title": "Contáctanos" }, "preview": { - "accuracy": "Precisión de los Saldos de Censo Anónimo: " + "accuracy": "Precisión del Balance en Censos Anónimos: " }, "question": { "approval_voting": { @@ -1107,23 +1111,23 @@ "title": "Tipos de Votación" } }, - "title": "Title", - "title_placeholder": "Title of the voting process" + "title": "Título", + "title_placeholder": "Título del proceso de votación" }, "process_list": { - "start_end_date": "Start-end date", - "status": "Status", - "title": "Title", - "type": "Type", - "voters": "Voters" + "start_end_date": "Fecha de inicio y fin", + "status": "Estado", + "title": "Título", + "type": "Tipo", + "voters": "Votantes" }, "profile": { "avatar": { "label": "Avatar" }, - "error": "Failed to update profile", - "success": "Profile updated successfully", - "title": "Profile" + "error": "Error al actualizar el perfil", + "success": "Perfil actualizado con éxito", + "title": "Perfil" }, "rainbow": { "group": { @@ -1131,20 +1135,20 @@ }, "recovery": "Recuperar cuenta" }, - "remove_avatar": "Remove avatar", - "remove_header": "Remove header", - "reset_password_button": "Reset Password", + "remove_avatar": "Eliminar avatar", + "remove_header": "Eliminar encabezado", + "reset_password_button": "Restablecer la contraseña", "rights": "© 2024 Asociación Vocdoni. Todos los derechos reservados.", "role": { - "read_permission": "Read-only access", - "write_permission": "Can create and edit content" + "read_permission": "Acceso solo lectura", + "write_permission": "Puede crear y editar contenido" }, "secret_until_the_end": { - "description": "Vote contents will be encrypted till the end of the voting", - "title": "Secret until the end" + "description": "El contenido del voto estará cifrado hasta el final de la votación", + "title": "Secreto hasta el final" }, - "session_expired": "Session expired", - "session_expired_description": "Session may have been expired and it could not be refreshed, please login again", + "session_expired": "Sesión expirada", + "session_expired_description": "La sesión puede haber expirado y no se pudo actualizar, por favor inicia sesión de nuevo", "settings": "Configuración", "share": { "copy": "Copiar", @@ -1168,17 +1172,17 @@ "submit": "Envía", "subscribe": "Suscribirse", "subscription": { - "change_plan_button": "Change", - "inactive_subscription_description": "Your subscription is currently inactive. Consider <2>contacting us to reactivate it.", - "inactive_subscription_title": "Inactive Subscription", - "next_billing": "Next Billing", - "price": "Price", - "since": "Since", - "title": "Subscription", - "your_subscription": "Your Subscription" + "change_plan_button": "Cambiar", + "inactive_subscription_description": "Tu suscripción está actualmente inactiva. Considera <2>contactarnos para reactivarla.", + "inactive_subscription_title": "Suscripción Inactiva", + "next_billing": "Próxima Facturación", + "price": "Precio", + "since": "Desde", + "title": "Suscripción", + "your_subscription": "Tu Suscripción" }, "support": "Soporte", - "surname": "Surname", + "surname": "Apellido", "team": { "expiration": "Expiración", "member_name": "Nombre", @@ -1253,21 +1257,21 @@ "current_plan": "Tu plan <2>{{ plan, lowercase }} está limitado a seleccionar hasta <6>{{ voters }} votantes.", "dont_limit_yourself": "Don't limit yourself. Join the family of 725 orgs that trust <2>Vocdoni.", "plan": { - "basic": "Basic", + "basic": "Básico", "custom": "Custom", - "free": "Free", + "free": "Gratis", "limit": { - "basic": "Up to 1500", - "custom": "Unlimited", - "free": "50 voters", - "pro": "Up to 3000" + "basic": "Hasta 1500", + "custom": "Ilimitado", + "free": "50 votantes", + "pro": "Hasta 3000" }, "pro": "Pro" }, - "satisfaction_rate": "97% satisfaction rate, starting at 9€/month." + "satisfaction_rate": "97% de tasa de satisfacción, desde 9€/mes." }, - "total_votes_submitted": "Total Votes Submitted", - "update": "Update", + "total_votes_submitted": "Total de votos enviados", + "update": "Actualizar", "upgrade": "Amplíalo", "uploader": { "click_or_drag_and_drop": "Haz clic para subir o arrastra y suelta(Formatos permitidos: {{ formats, list }})", @@ -1278,35 +1282,38 @@ "read_more": "Leer más" }, "user_management": "Gestión de usuarios", - "verification_code": "Verification Code", - "verification_code_placeholder": "Enter the verification code", - "verification_code_resent": "Verification code resent!", + "validation": { + "required": "" + }, + "verification_code": "Código de verificación", + "verification_code_placeholder": "Introduce el código de verificación", + "verification_code_resent": "¡Código de verificación reenviado!", "verify": { - "account_created_succesfully": "Account created successfully!", - "email_sent": "Email sent successfully", - "enter_verification_code": "Enter the verification code sent to your email", - "follow_email_instructions": "Follow the instructions there to activate your account.", - "invalid_verification": "Invalid verification request", - "missing_email": "No email address provided for verification", - "resend_confirmation_mail": "Resend Email", - "verification_email_is_sent": "A verification email has been sent to:", - "verify_code": "Verify", - "verify_your_email": "Verify your email" + "account_created_succesfully": "¡Cuenta creada con éxito!", + "email_sent": "Correo electrónico enviado con éxito", + "enter_verification_code": "Introduce el código de verificación enviado a tu correo", + "follow_email_instructions": "Sigue las instrucciones en el correo para activar tu cuenta.", + "invalid_verification": "Solicitud de verificación inválida", + "missing_email": "No se proporcionó dirección de correo para la verificación", + "resend_confirmation_mail": "Reenviar correo", + "verification_email_is_sent": "Se ha enviado un correo de verificación a:", + "verify_code": "Verificar", + "verify_your_email": "Verifica tu correo electrónico" }, "verify_mail": { - "error_subtitle": "We found an error verifying your email, please check verification mail to ensure all data is correct", - "verifying_subtitle": "Await until we verify your email address. You will be redirect on success.", - "verifying_title": "Verifying {{ email }}" + "error_subtitle": "Encontramos un error al verificar tu correo, por favor revisa el correo de verificación para asegurar que todos los datos sean correctos", + "verifying_subtitle": "Espera mientras verificamos tu dirección de correo electrónico. Serás redirigido con éxito.", + "verifying_title": "Verificando {{ email }}" }, "view_plans_and_pricing": "Ver Planes y Precios", - "view_pricing": "View Pricing", - "view_pricing_plan": "View Pricing Plan", - "view_pricing_plans": "View Pricing Plans", - "vote_details": "Vote details", - "voters": "voters", - "voting_link": "Voting Link", + "view_pricing": "Ver Precios", + "view_pricing_plan": "Ver Plan de Precios", + "view_pricing_plans": "Ver Planes de Precios", + "vote_details": "Detalles de la votación", + "voters": "votantes", + "voting_link": "Enlace de votación", "voting_processes": "Procesos de votación", - "voting_questions": "Voting Questions", - "voting_results": "Voting Results", - "website": "Website" + "voting_questions": "Preguntas de votación", + "voting_results": "Resultados de la votación", + "website": "Sitio web" } diff --git a/src/theme/colors.ts b/src/theme/colors.ts index 5b137d39e..ce2e6000b 100644 --- a/src/theme/colors.ts +++ b/src/theme/colors.ts @@ -8,15 +8,18 @@ export const colorsBase = { dark: '#1A202C', dark2: '#0C0E12', }, - gradient: 'linear-gradient(to right, #2C7D57, #22555A)', - gradientBottom: 'linear-gradient(to bottom, #2C7D57, #22555A)', + gradient: 'linear-gradient(to right, #2E855B, #22555A)', + gradientBottom: 'linear-gradient(to bottom, #2E855B, #22555A)', gray: { light: '#CBD5E0', normal: '#A0AEC0', + dark: '#4A5568', }, green: '#00FF00', orange: '#FFA500', - primary: '#546E39', + primary: '#22555A', + primary_cta: 'linear-gradient(to bottom, #2C7D57, #22555A)', + primary_dark: 'rgba(84, 110, 57, 0.2)', red: '#FC8181', white: { pure: '#ffffff', @@ -35,7 +38,7 @@ export const colorsBase = { } export const colors = { - account_create_text_secondary: colorsBase.gray.normal, + account_create_text_secondary: colorsBase.gray.dark, alert: { bg: { light: colorsBase.white.pure, @@ -104,6 +107,10 @@ export const colors = { outline: { color: colorsBase.white.pure, + bg: { + dark: '#13161b', + light: '#000', + }, }, }, dark: { @@ -466,9 +473,9 @@ export const colors = { 100: '#b3c77f', 200: '#8db13a', 300: '#749c2d', - 400: '#617c29', - 500: '#546E39', - 600: '#476232', + 400: '#22555A', + 500: '#22555A', + 600: '#22555A', 700: '#3a552b', 800: '#2e4924', 900: '#233c1d', diff --git a/src/theme/components/card.ts b/src/theme/components/card.ts index 2020b90a4..af8daeec7 100644 --- a/src/theme/components/card.ts +++ b/src/theme/components/card.ts @@ -181,7 +181,7 @@ export const Card = defineMultiStyleConfig({ fontSize: '12px', fontWeight: 'bold', color: 'home.description.light', - marginTop: '22px', + marginTop: '12px', _dark: { color: 'home.description.dark', }, @@ -421,13 +421,13 @@ export const Card = defineMultiStyleConfig({ borderRadius: 'none', borderBottom: '1px solid rgb(229, 229, 229)', backgroundColor: 'transparent', - fontSize: '22px', }, header: { p: 0, '& p': { fontWeight: 'bold', mb: '18px', + fontSize: '22px' }, }, body: { diff --git a/src/theme/components/link.ts b/src/theme/components/link.ts index fb01666ca..6adaf006c 100644 --- a/src/theme/components/link.ts +++ b/src/theme/components/link.ts @@ -10,6 +10,13 @@ export const Link = defineStyleConfig({ }, }, variants: { + primary: (props) => ({ + color: 'brand.600', + + _dark: { + color: 'brand.100', + } + }), icon: (props) => ({ display: 'flex', justifyContent: 'center', @@ -20,5 +27,13 @@ export const Link = defineStyleConfig({ border: '1px solid', cursor: 'pointer', }), + footer: (props) => ({ + textDecoration: 'none', + color: '#555', + + _hover: { + textDecoration: 'underline', + } + }), }, }) From 13bbad20a3eb64cf03ee1220fc4afd77e14cec60 Mon Sep 17 00:00:00 2001 From: jpa Date: Tue, 21 Jan 2025 13:54:18 +0100 Subject: [PATCH 04/10] Solved lint problems --- src/components/Account/Menu.tsx | 14 ++++++++++--- src/components/Dashboard/Menu/index.tsx | 9 ++++++++- src/components/Home/Benefits.tsx | 7 ++++++- src/components/Home/ContactUs.tsx | 3 ++- src/components/Organization/NoElections.tsx | 13 ++++++++++-- .../Organization/NoOrganizations.tsx | 20 ++++++++++++++++--- .../ProcessCreate/Steps/Navigation.tsx | 4 +++- src/elements/LayoutDashboard.tsx | 9 ++++++++- src/theme/components/card.ts | 2 +- src/theme/components/link.ts | 4 ++-- 10 files changed, 69 insertions(+), 16 deletions(-) diff --git a/src/components/Account/Menu.tsx b/src/components/Account/Menu.tsx index 749888158..1487c6f16 100644 --- a/src/components/Account/Menu.tsx +++ b/src/components/Account/Menu.tsx @@ -11,7 +11,7 @@ import { MenuItem, MenuList, Spinner, - Text + Text, } from '@chakra-ui/react' import { LogOut01, Paperclip, UserSquare } from '@untitled-ui/icons-react' import { Trans } from 'react-i18next' @@ -48,14 +48,22 @@ const AccountMenu: React.FC = (props) => { size='sm' /> } - rightIcon={isOpen ? : } + rightIcon={ + isOpen ? ( + + ) : ( + + ) + } aria-label='User menu' sx={{ '& > span': { m: 0 } }} display={'flex'} alignItems={'center'} variant={'unstyled'} > - {profile.email} + + {profile.email} + diff --git a/src/components/Dashboard/Menu/index.tsx b/src/components/Dashboard/Menu/index.tsx index 68b655972..46c794078 100644 --- a/src/components/Dashboard/Menu/index.tsx +++ b/src/components/Dashboard/Menu/index.tsx @@ -45,7 +45,14 @@ const DashboardMenuContent = () => ( - diff --git a/src/components/Home/Benefits.tsx b/src/components/Home/Benefits.tsx index 2e17ccf06..92fb2a89e 100644 --- a/src/components/Home/Benefits.tsx +++ b/src/components/Home/Benefits.tsx @@ -121,7 +121,12 @@ const Benefits = () => { {t('home.benefits.card_4.description')} - + {t('home.benefits.card_5.title')} {t('home.benefits.card_5.description')} diff --git a/src/components/Home/ContactUs.tsx b/src/components/Home/ContactUs.tsx index d49df1aff..c43a570d4 100644 --- a/src/components/Home/ContactUs.tsx +++ b/src/components/Home/ContactUs.tsx @@ -95,7 +95,8 @@ const ContactUs = () => { height='52px' fontSize='20px' mt='30px' - px='130px' background='linear-gradient(to right, #2C7D57, #22555A)' + px='130px' + background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.contactus.btn')} diff --git a/src/components/Organization/NoElections.tsx b/src/components/Organization/NoElections.tsx index e27ad4abc..de3dfcc20 100644 --- a/src/components/Organization/NoElections.tsx +++ b/src/components/Organization/NoElections.tsx @@ -20,10 +20,19 @@ const NoElections = () => { {areEqualHexStrings(account?.address, organization?.address) ? ( <> - {t('organization.elections_list_empty.title')} + + {t('organization.elections_list_empty.title')} + {t('organization.elections_list_empty.description')} - diff --git a/src/components/Organization/NoOrganizations.tsx b/src/components/Organization/NoOrganizations.tsx index e39ae66fd..a4037fd26 100644 --- a/src/components/Organization/NoOrganizations.tsx +++ b/src/components/Organization/NoOrganizations.tsx @@ -16,10 +16,24 @@ export const NoOrganizations = () => { You don't belong to any organization yet! - }}> - + + }} + > + + + + - diff --git a/src/components/ProcessCreate/Steps/Navigation.tsx b/src/components/ProcessCreate/Steps/Navigation.tsx index b45c96799..42751773c 100644 --- a/src/components/ProcessCreate/Steps/Navigation.tsx +++ b/src/components/ProcessCreate/Steps/Navigation.tsx @@ -18,7 +18,9 @@ export const StepsNavigation = () => { )} diff --git a/src/elements/LayoutDashboard.tsx b/src/elements/LayoutDashboard.tsx index 4128c3d40..59d7ee408 100644 --- a/src/elements/LayoutDashboard.tsx +++ b/src/elements/LayoutDashboard.tsx @@ -70,7 +70,14 @@ const LayoutDashboard: React.FC = () => { {/* Main Content */} - + diff --git a/src/theme/components/card.ts b/src/theme/components/card.ts index af8daeec7..5c04d4abe 100644 --- a/src/theme/components/card.ts +++ b/src/theme/components/card.ts @@ -427,7 +427,7 @@ export const Card = defineMultiStyleConfig({ '& p': { fontWeight: 'bold', mb: '18px', - fontSize: '22px' + fontSize: '22px', }, }, body: { diff --git a/src/theme/components/link.ts b/src/theme/components/link.ts index 6adaf006c..882dcbb03 100644 --- a/src/theme/components/link.ts +++ b/src/theme/components/link.ts @@ -15,7 +15,7 @@ export const Link = defineStyleConfig({ _dark: { color: 'brand.100', - } + }, }), icon: (props) => ({ display: 'flex', @@ -33,7 +33,7 @@ export const Link = defineStyleConfig({ _hover: { textDecoration: 'underline', - } + }, }), }, }) From 786508ae5dea8f9814cb051c4f9e2ba3dcc75bb9 Mon Sep 17 00:00:00 2001 From: jpa Date: Tue, 21 Jan 2025 14:07:07 +0100 Subject: [PATCH 05/10] Solved lintting problems --- src/components/Home/Support.tsx | 1 - src/components/Organization/NoElections.tsx | 2 +- src/components/Organization/NoOrganizations.tsx | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/Home/Support.tsx b/src/components/Home/Support.tsx index f16016f72..664eef413 100644 --- a/src/components/Home/Support.tsx +++ b/src/components/Home/Support.tsx @@ -16,7 +16,6 @@ const Support = () => { backgroundRepeat='no-repeat' backgroundPosition='right' mb='100px' - background='linear-gradient(to bottom, #2C7D57, #22555A)' > { return ( - + {t('organization.elections_list_empty.alt')} diff --git a/src/components/Organization/NoOrganizations.tsx b/src/components/Organization/NoOrganizations.tsx index a4037fd26..afa64afed 100644 --- a/src/components/Organization/NoOrganizations.tsx +++ b/src/components/Organization/NoOrganizations.tsx @@ -9,7 +9,7 @@ export const NoOrganizations = () => { return ( - + From 060cead68debef6787e287803b21323bfd60b5ea Mon Sep 17 00:00:00 2001 From: jpa Date: Wed, 22 Jan 2025 15:31:28 +0100 Subject: [PATCH 06/10] Changed verify button to primary --- src/components/Auth/Verify.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Auth/Verify.tsx b/src/components/Auth/Verify.tsx index 04813b31d..119fcc301 100644 --- a/src/components/Auth/Verify.tsx +++ b/src/components/Auth/Verify.tsx @@ -51,7 +51,7 @@ const VerifyForm = ({ email, initialCode = '', autoSubmit = false }: VerifyFormP return ( <> - Date: Thu, 23 Jan 2025 12:23:30 +0100 Subject: [PATCH 07/10] review --- src/components/Account/Menu.tsx | 11 +---- src/components/Home/Benefits.tsx | 42 +++---------------- src/components/Home/Clients.tsx | 36 ++++++++-------- src/components/Home/ContactUs.tsx | 5 +-- src/components/Home/CreateProcess.tsx | 1 - src/components/Home/Faqs.tsx | 32 +++++++------- src/components/Home/Features.tsx | 20 ++++----- src/components/Home/Process.tsx | 8 ++-- src/components/Organization/Create.tsx | 2 +- .../Organization/Dashboard/AuthBanner.tsx | 2 +- src/components/Organization/NoElections.tsx | 6 +-- .../Organization/NoOrganizations.tsx | 8 ++-- src/components/Organization/Team.tsx | 4 +- .../ProcessCreate/Steps/Confirm.tsx | 2 +- .../ProcessCreate/Steps/Navigation.tsx | 6 +-- src/elements/LayoutAuth.tsx | 2 +- src/elements/LayoutDashboard.tsx | 2 +- src/elements/account/createOrganization.tsx | 1 - src/theme/colors.ts | 1 + src/theme/components/button.ts | 12 ++++++ src/theme/components/card.ts | 8 +++- 21 files changed, 93 insertions(+), 118 deletions(-) diff --git a/src/components/Account/Menu.tsx b/src/components/Account/Menu.tsx index 1487c6f16..22283ef9f 100644 --- a/src/components/Account/Menu.tsx +++ b/src/components/Account/Menu.tsx @@ -48,20 +48,13 @@ const AccountMenu: React.FC = (props) => { size='sm' /> } - rightIcon={ - isOpen ? ( - - ) : ( - - ) - } + rightIcon={isOpen ? : } aria-label='User menu' - sx={{ '& > span': { m: 0 } }} display={'flex'} alignItems={'center'} variant={'unstyled'} > - + {profile.email} diff --git a/src/components/Home/Benefits.tsx b/src/components/Home/Benefits.tsx index 92fb2a89e..5f07126bb 100644 --- a/src/components/Home/Benefits.tsx +++ b/src/components/Home/Benefits.tsx @@ -72,67 +72,37 @@ const Benefits = () => { - + {t('home.benefits.card_1.title')} {t('home.benefits.card_1.description')} - + {t('home.benefits.card_2.title')} {t('home.benefits.card_2.description')} - + {t('home.benefits.card_3.title')} {t('home.benefits.card_3.description')} - + {t('home.benefits.card_4.title')} {t('home.benefits.card_4.description')} - + {t('home.benefits.card_5.title')} {t('home.benefits.card_5.description')} - + {t('home.benefits.card_6.title')} {t('home.benefits.card_6.description')} diff --git a/src/components/Home/Clients.tsx b/src/components/Home/Clients.tsx index 90cadf5c2..b53fa524b 100644 --- a/src/components/Home/Clients.tsx +++ b/src/components/Home/Clients.tsx @@ -27,22 +27,20 @@ const Clients = () => { export const ClientsGrid = (props: GridProps) => ( - + F.C. Barcelona @@ -50,7 +48,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Omnium Cultural @@ -58,7 +56,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament Berga @@ -66,7 +64,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament la Bisbal @@ -74,7 +72,7 @@ export const ClientsGrid = (props: GridProps) => ( - + COEC @@ -82,7 +80,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Esquerra Republicana @@ -90,7 +88,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Ajuntament Bellpuig @@ -98,7 +96,7 @@ export const ClientsGrid = (props: GridProps) => ( - + TIC Anoia @@ -106,7 +104,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Decidim @@ -114,7 +112,7 @@ export const ClientsGrid = (props: GridProps) => ( - + Bloock diff --git a/src/components/Home/ContactUs.tsx b/src/components/Home/ContactUs.tsx index c43a570d4..6b484e383 100644 --- a/src/components/Home/ContactUs.tsx +++ b/src/components/Home/ContactUs.tsx @@ -61,7 +61,7 @@ const ContactUs = () => { - + @@ -72,7 +72,7 @@ const ContactUs = () => { - + @@ -96,7 +96,6 @@ const ContactUs = () => { fontSize='20px' mt='30px' px='130px' - background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.contactus.btn')} diff --git a/src/components/Home/CreateProcess.tsx b/src/components/Home/CreateProcess.tsx index 6660c2118..1f797550e 100644 --- a/src/components/Home/CreateProcess.tsx +++ b/src/components/Home/CreateProcess.tsx @@ -57,7 +57,6 @@ const CreateProcess = () => { height='62px' fontSize='20px' minW='300px' - background='linear-gradient(to right, #2C7D57, #22555A)' > {t('home.create_process.btn')} diff --git a/src/components/Home/Faqs.tsx b/src/components/Home/Faqs.tsx index d78b53fe3..d0760ae72 100644 --- a/src/components/Home/Faqs.tsx +++ b/src/components/Home/Faqs.tsx @@ -61,66 +61,66 @@ const Faqs = () => { - {t('home.faqs.faq_1.title')} + {t('home.faqs.faq_1.title')} - {t('home.faqs.faq_1.description')} + {t('home.faqs.faq_1.description')} - {t('home.faqs.faq_2.title')} + {t('home.faqs.faq_2.title')} - {t('home.faqs.faq_2.description')} + {t('home.faqs.faq_2.description')} - {t('home.faqs.faq_3.title')} + {t('home.faqs.faq_3.title')} - {t('home.faqs.faq_3.description')} + {t('home.faqs.faq_3.description')} - {t('home.faqs.faq_8.title')} + {t('home.faqs.faq_8.title')} - {t('home.faqs.faq_8.description')} + {t('home.faqs.faq_8.description')} - {t('home.faqs.faq_4.title')} + {t('home.faqs.faq_4.title')} - {t('home.faqs.faq_4.description')} + {t('home.faqs.faq_4.description')} - {t('home.faqs.faq_5.title')} + {t('home.faqs.faq_5.title')} - {t('home.faqs.faq_5.description')} + {t('home.faqs.faq_5.description')} - {t('home.faqs.faq_6.title')} + {t('home.faqs.faq_6.title')} - {t('home.faqs.faq_6.description')} + {t('home.faqs.faq_6.description')} - {t('home.faqs.faq_7.title')} + {t('home.faqs.faq_7.title')} - {t('home.faqs.faq_7.description')} + {t('home.faqs.faq_7.description')} diff --git a/src/components/Home/Features.tsx b/src/components/Home/Features.tsx index cf3caf71f..3446e9de9 100644 --- a/src/components/Home/Features.tsx +++ b/src/components/Home/Features.tsx @@ -55,8 +55,8 @@ const Features = () => { - - + + {t('home.features.card_1.title')} @@ -66,7 +66,7 @@ const Features = () => { - + @@ -77,7 +77,7 @@ const Features = () => { - + @@ -88,7 +88,7 @@ const Features = () => { - + @@ -99,7 +99,7 @@ const Features = () => { - + @@ -110,7 +110,7 @@ const Features = () => { - + @@ -121,7 +121,7 @@ const Features = () => { - + @@ -132,7 +132,7 @@ const Features = () => { - + @@ -143,7 +143,7 @@ const Features = () => { - + diff --git a/src/components/Home/Process.tsx b/src/components/Home/Process.tsx index df233f8f4..73767ffe1 100644 --- a/src/components/Home/Process.tsx +++ b/src/components/Home/Process.tsx @@ -54,7 +54,7 @@ const Process = () => { - + @@ -65,7 +65,7 @@ const Process = () => { - + @@ -76,7 +76,7 @@ const Process = () => { - + @@ -87,7 +87,7 @@ const Process = () => { - + diff --git a/src/components/Organization/Create.tsx b/src/components/Organization/Create.tsx index bd1977b36..9575fb997 100644 --- a/src/components/Organization/Create.tsx +++ b/src/components/Organization/Create.tsx @@ -1,4 +1,4 @@ -import { Button, Flex, FlexProps, Stack, Text } from '@chakra-ui/react' +import { Button, Flex, FlexProps, Text } from '@chakra-ui/react' import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query' import { useClient } from '@vocdoni/react-providers' diff --git a/src/components/Organization/Dashboard/AuthBanner.tsx b/src/components/Organization/Dashboard/AuthBanner.tsx index d459db28e..c81d9b639 100644 --- a/src/components/Organization/Dashboard/AuthBanner.tsx +++ b/src/components/Organization/Dashboard/AuthBanner.tsx @@ -15,7 +15,7 @@ const AuthBanner = ({ children, ...props }: AuthBannerProps) => { return ( { return ( - + {t('organization.elections_list_empty.alt')} - + {areEqualHexStrings(account?.address, organization?.address) ? ( <> diff --git a/src/components/Organization/NoOrganizations.tsx b/src/components/Organization/NoOrganizations.tsx index afa64afed..4e055fb5d 100644 --- a/src/components/Organization/NoOrganizations.tsx +++ b/src/components/Organization/NoOrganizations.tsx @@ -1,17 +1,17 @@ -import { Box, Button, Flex, Card, CardBody, Img, Text } from '@chakra-ui/react' +import { Box, Button, Card, CardBody, Flex, Img, Text } from '@chakra-ui/react' +import { Trans } from 'react-i18next' import { Link as ReactRouterLink } from 'react-router-dom' import { DashboardContents } from '~components/Layout/Dashboard' import { Routes } from '~src/router/routes' -import { Trans } from 'react-i18next' import empty from '/assets/illustrations/9.png' export const NoOrganizations = () => { return ( - + - + You don't belong to any organization yet! diff --git a/src/components/Organization/Team.tsx b/src/components/Organization/Team.tsx index 204b34c04..c099bafd9 100644 --- a/src/components/Organization/Team.tsx +++ b/src/components/Organization/Team.tsx @@ -128,9 +128,9 @@ export const TeamMembersList = () => { Team members - + {members?.length} - + diff --git a/src/components/ProcessCreate/Steps/Confirm.tsx b/src/components/ProcessCreate/Steps/Confirm.tsx index 2c1fec5ef..d233e90c0 100644 --- a/src/components/ProcessCreate/Steps/Confirm.tsx +++ b/src/components/ProcessCreate/Steps/Confirm.tsx @@ -285,7 +285,7 @@ export const Confirm = () => { diff --git a/src/components/ProcessCreate/Steps/Navigation.tsx b/src/components/ProcessCreate/Steps/Navigation.tsx index 42751773c..2928ff4af 100644 --- a/src/components/ProcessCreate/Steps/Navigation.tsx +++ b/src/components/ProcessCreate/Steps/Navigation.tsx @@ -13,14 +13,12 @@ export const StepsNavigation = () => { {activeStep !== steps.findIndex((step) => step.first) && ( )} diff --git a/src/elements/LayoutAuth.tsx b/src/elements/LayoutAuth.tsx index d822a68f6..a5f437303 100644 --- a/src/elements/LayoutAuth.tsx +++ b/src/elements/LayoutAuth.tsx @@ -151,7 +151,7 @@ const LayoutAuth = () => { margin: '0 auto', maxWidth: '100%', height: 'auto', - marginTop: '250px', + marginTop: '50px', }} /> diff --git a/src/elements/LayoutDashboard.tsx b/src/elements/LayoutDashboard.tsx index 59d7ee408..bea1c95ce 100644 --- a/src/elements/LayoutDashboard.tsx +++ b/src/elements/LayoutDashboard.tsx @@ -54,7 +54,7 @@ const LayoutDashboard: React.FC = () => { /> )} {title && ( - + {title} )} diff --git a/src/elements/account/createOrganization.tsx b/src/elements/account/createOrganization.tsx index 4fffeaaae..212d0b549 100644 --- a/src/elements/account/createOrganization.tsx +++ b/src/elements/account/createOrganization.tsx @@ -2,7 +2,6 @@ import { Box, Button, Flex, Heading, ListItem, Text, UnorderedList } from '@chak import { useEffect } from 'react' import { Trans, useTranslation } from 'react-i18next' import { useOutletContext } from 'react-router-dom' -import { ClientsGrid } from '~components/Home/Clients' import { OrganizationCreate } from '~components/Organization/Create' import { AuthOutletContextType } from '~elements/LayoutAuth' import { Routes } from '~src/router/routes' diff --git a/src/theme/colors.ts b/src/theme/colors.ts index ce2e6000b..259f17114 100644 --- a/src/theme/colors.ts +++ b/src/theme/colors.ts @@ -53,6 +53,7 @@ export const colors = { box_shadow_dark: colorsBase.blue.dark, }, auth: { + banner_bg: colorsBase.primary_cta, textColorSecondary: colorsBase.gray.normal, }, banner_link: colorsBase.white.pure, diff --git a/src/theme/components/button.ts b/src/theme/components/button.ts index 9b1d9e97b..adc68d74a 100644 --- a/src/theme/components/button.ts +++ b/src/theme/components/button.ts @@ -4,6 +4,10 @@ const primary = defineStyle((props) => { const { colorScheme } = props return { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + gap: '10px', border: '1px solid', bg: `${colorScheme}.500`, borderColor: `${colorScheme}.800`, @@ -43,6 +47,10 @@ const outline = defineStyle((props) => { const { colorScheme } = props return { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + gap: '10px', border: '1px solid', borderColor: colorScheme === 'gray' ? 'button.variant.common.border_color.light' : `${colorScheme}.600`, color: colorScheme === 'gray' ? 'button.variant.common.color.light' : `${colorScheme}.600`, @@ -84,6 +92,10 @@ const outline = defineStyle((props) => { const transparent = defineStyle((props) => { const { colorScheme } = props return { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + gap: '10px', color: colorScheme === 'gray' ? 'black' : `${colorScheme}.700`, _active: { diff --git a/src/theme/components/card.ts b/src/theme/components/card.ts index 5c04d4abe..5f6246c06 100644 --- a/src/theme/components/card.ts +++ b/src/theme/components/card.ts @@ -146,6 +146,7 @@ export const Card = defineMultiStyleConfig({ container: { border: 'none', backgroundColor: 'none', + w: 'full', _hover: { lg: { @@ -154,6 +155,7 @@ export const Card = defineMultiStyleConfig({ }, '& span': { display: 'block', + position: 'relative', }, }, }, @@ -174,6 +176,8 @@ export const Card = defineMultiStyleConfig({ p: 0, fontSize: '10px', minH: '50px', + display: 'flex', + justifyContent: 'center', span: { display: 'none', @@ -427,15 +431,17 @@ export const Card = defineMultiStyleConfig({ '& p': { fontWeight: 'bold', mb: '18px', - fontSize: '22px', + fontSize: 'xl', }, }, body: { p: 0, + mb: '19px', '& p': { color: 'home.description.light !important', + fontSize: 'xl', _dark: { color: 'home.description.dark !important', From 0bc5eba9556c967c3df5157e75205a0e80504e8d Mon Sep 17 00:00:00 2001 From: Gerard Date: Fri, 24 Jan 2025 10:36:25 +0100 Subject: [PATCH 08/10] fixed issues home responsive and layout auth image --- src/components/Account/Menu.tsx | 2 +- src/components/Home/Benefits.tsx | 9 ++++---- src/components/Home/Clients.tsx | 3 ++- src/components/Home/ContactUs.tsx | 6 ++--- src/components/Home/CreateProcess.tsx | 12 +++++----- src/components/Home/Faqs.tsx | 5 ++--- src/components/Home/Features.tsx | 29 ++++++++++++------------ src/components/Home/Process.tsx | 8 +++---- src/components/Home/Solutions.tsx | 21 +++++++++--------- src/elements/LayoutAuth.tsx | 32 ++++++++++++++++----------- 10 files changed, 64 insertions(+), 63 deletions(-) diff --git a/src/components/Account/Menu.tsx b/src/components/Account/Menu.tsx index 22283ef9f..129741208 100644 --- a/src/components/Account/Menu.tsx +++ b/src/components/Account/Menu.tsx @@ -48,7 +48,7 @@ const AccountMenu: React.FC = (props) => { size='sm' /> } - rightIcon={isOpen ? : } + rightIcon={} aria-label='User menu' display={'flex'} alignItems={'center'} diff --git a/src/components/Home/Benefits.tsx b/src/components/Home/Benefits.tsx index 5f07126bb..deb8c5cd4 100644 --- a/src/components/Home/Benefits.tsx +++ b/src/components/Home/Benefits.tsx @@ -47,21 +47,20 @@ const Benefits = () => { sm: '20px', md: '80px', }} - pb={{ base: '60px', lg: '100px' }} - pt={{ base: '60px' }} + mb={{ base: '75px', lg: '100px' }} > {t('home.benefits.title')} { {t('home.benefits.subtitle_1')} - + {t('home.benefits.card_1.title')} diff --git a/src/components/Home/Clients.tsx b/src/components/Home/Clients.tsx index b53fa524b..cf3aba68b 100644 --- a/src/components/Home/Clients.tsx +++ b/src/components/Home/Clients.tsx @@ -16,7 +16,7 @@ const Clients = () => { return ( <> - + {t('home.clients_title')} @@ -29,6 +29,7 @@ export const ClientsGrid = (props: GridProps) => ( as='section' maxWidth={'1400px'} mx='auto' + mb={{ base: '45px', lg: '60px' }} px={{ base: 2, sm: 4, diff --git a/src/components/Home/ContactUs.tsx b/src/components/Home/ContactUs.tsx index 6b484e383..146640af1 100644 --- a/src/components/Home/ContactUs.tsx +++ b/src/components/Home/ContactUs.tsx @@ -13,7 +13,7 @@ const ContactUs = () => { as='section' id='contactus' flexDirection={{ base: 'column', xl: 'row' }} - py={{ base: '60px', xl: 0 }} + mb={{ base: '75px', lg: '100px' }} gap={{ base: '40px', xl: '60px' }} scrollMarginTop='100px' > @@ -36,13 +36,12 @@ const ContactUs = () => { justifyContent={{ base: 'center', xl: 'start' }} display={{ xl: 'flex' }} alignItems='center' - py={{ base: '60px', xl: '100px' }} position='relative' zIndex={10} > { fontSize={{ base: '40px', xl: '60px' }} lineHeight={{ base: '36px', xl: '78px' }} fontWeight='bold' - mb='10px' fontFamily='basier' textAlign={{ base: 'center', xl: 'left' }} > diff --git a/src/components/Home/CreateProcess.tsx b/src/components/Home/CreateProcess.tsx index 1f797550e..a63e2d973 100644 --- a/src/components/Home/CreateProcess.tsx +++ b/src/components/Home/CreateProcess.tsx @@ -12,7 +12,9 @@ const CreateProcess = () => { { lineHeight={{ base: '54px', md: '58px', md2: '64px', lg2: '78px' }} fontWeight='600' fontFamily='basier' - mb='10px' - mt='80px' + mb={'40px'} textAlign={{ base: 'center', lg: 'start' }} > {t('home.create_process.title')} @@ -39,8 +40,7 @@ const CreateProcess = () => { fontSize='24px' lineHeight='35px' fontFamily='basier' - mt='52px' - mb='52px' + mb={'40px'} textAlign={{ base: 'center', lg: 'start' }} > {t('home.create_process.subtitle')} @@ -68,7 +68,7 @@ const CreateProcess = () => { gap={{ sm: 5, lg: 0 }} > - + {t('home.create_process.helper_1')} diff --git a/src/components/Home/Faqs.tsx b/src/components/Home/Faqs.tsx index d0760ae72..64bea562d 100644 --- a/src/components/Home/Faqs.tsx +++ b/src/components/Home/Faqs.tsx @@ -13,7 +13,7 @@ const Faqs = () => { sm: '20px', md: '80px', }} - py={{ base: '60px', lg: '100px' }} + mb={{ base: '75px', lg: '100px' }} > { lineHeight={{ base: '36px', xl: '78px' }} fontWeight='bold' textAlign='center' - mb='25px' + mb='30px' fontFamily='basier' > {t('home.faqs.title')} @@ -53,7 +53,6 @@ const Faqs = () => { fontSize='20px' color='home.description' lineHeight='28px' - margin='0px auto 80px' textAlign='center' > {t('home.faqs.subtitle')} diff --git a/src/components/Home/Features.tsx b/src/components/Home/Features.tsx index 3446e9de9..f1b633aef 100644 --- a/src/components/Home/Features.tsx +++ b/src/components/Home/Features.tsx @@ -26,34 +26,33 @@ const Features = () => { sm: '20px', md: '80px', }} - py={{ base: '60px', lg: '100px' }} + mb={{ base: '75px', lg: '100px' }} > - + {t('home.features.title')} {t('home.features.subtitle_1')} - - + + @@ -64,7 +63,7 @@ const Features = () => { - + @@ -75,7 +74,7 @@ const Features = () => { - + @@ -86,7 +85,7 @@ const Features = () => { - + @@ -97,7 +96,7 @@ const Features = () => { - + @@ -108,7 +107,7 @@ const Features = () => { - + @@ -119,7 +118,7 @@ const Features = () => { - + @@ -130,7 +129,7 @@ const Features = () => { - + @@ -141,7 +140,7 @@ const Features = () => { - + diff --git a/src/components/Home/Process.tsx b/src/components/Home/Process.tsx index 73767ffe1..1cdaf2db0 100644 --- a/src/components/Home/Process.tsx +++ b/src/components/Home/Process.tsx @@ -21,14 +21,13 @@ const Process = () => { sm: '20px', md: '80px', }} - py={{ base: '60px', lg: '100px' }} - mb={{ base: '60px', xl: '120px' }} + mb={{ base: '75px', lg: '100px' }} > @@ -42,12 +41,11 @@ const Process = () => { fontFamily='basier' fontSize='20px' lineHeight='28px' - margin='0px auto' > {t('home.process.description_1')} {t('home.process.description_2')} - + diff --git a/src/components/Home/Solutions.tsx b/src/components/Home/Solutions.tsx index b7ab9fb33..abfbc1f38 100644 --- a/src/components/Home/Solutions.tsx +++ b/src/components/Home/Solutions.tsx @@ -10,24 +10,24 @@ const Solutions = () => { id='solutions' as='section' maxW='1920px' - m='0 auto' + mb={{ base: '75px', lg: '100px' }} + mx='auto' px={{ base: '10px', sm: '20px', md: '80px', }} flexDirection={{ base: 'column', xl: 'row' }} - py={{ base: '60px', xl: '100px' }} gap={{ base: '40px', xl: '60px' }} > - + @@ -37,29 +37,30 @@ const Solutions = () => { maxW={{ base: '100%', sm: '70%', sm2: '80%', lg: '840px' }} textAlign={{ base: 'center', xl: 'left' }} mx='auto' + mb='40px' fontFamily='basier' fontSize='20px' > {t('home.solutions.subtitle_1')} - + - + {t('home.solutions.card_1.title')} {t('home.solutions.card_1.description')} - + - + {t('home.solutions.card_2.title')} {t('home.solutions.card_2.description')} @@ -70,7 +71,7 @@ const Solutions = () => { - + {t('home.solutions.card_3.title')} {t('home.solutions.card_3.description')} @@ -86,7 +87,7 @@ const Solutions = () => { flexDirection='column' gap={3} position='absolute' - bottom={{ base: 10, xl2: '330px' }} + bottom={{ base: 10, xl2: '230px' }} ml={{ base: '50%', xl2: '60%' }} transform={{ base: 'translateX(-60%)', diff --git a/src/elements/LayoutAuth.tsx b/src/elements/LayoutAuth.tsx index a5f437303..ea1147ccc 100644 --- a/src/elements/LayoutAuth.tsx +++ b/src/elements/LayoutAuth.tsx @@ -142,7 +142,14 @@ const LayoutAuth = () => { {sidebar} {/* Random Image Section */} - + Dynamic Illustration { marginTop: '50px', }} /> - - - {/* Random Text Section */} - -
    -
  • - {randomTitle} -
  • -
  • {randomText}
  • -
-
+ {/* Random Text Section */} + +
    +
  • + {randomTitle} +
  • +
  • {randomText}
  • +
+
+
- + {t('auth.title', { defaultValue: 'The global voting platform' })} From 3935d2079b1875a3b920df16df203d25021fcd80 Mon Sep 17 00:00:00 2001 From: Gerard Date: Fri, 24 Jan 2025 10:47:01 +0100 Subject: [PATCH 09/10] unified the color of the descriptions on the home page in dark mode --- src/theme/components/card.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/theme/components/card.ts b/src/theme/components/card.ts index 5f6246c06..cd105e286 100644 --- a/src/theme/components/card.ts +++ b/src/theme/components/card.ts @@ -367,11 +367,7 @@ export const Card = defineMultiStyleConfig({ 'p:last-of-type': { fontSize: '22px', - color: 'home.description.light !important', - - _dark: { - color: 'home.description.dark !important', - }, + color: 'home.description.light', }, }, }, @@ -411,11 +407,7 @@ export const Card = defineMultiStyleConfig({ }, 'p:nth-of-type(2)': { fontSize: '22px', - color: 'home.description.light !important', - - _dark: { - color: 'home.description.dark !important', - }, + color: 'home.description.light', }, }, }, From abd904d26474bcc597a311a644b5fb02982f32c8 Mon Sep 17 00:00:00 2001 From: jpa Date: Fri, 24 Jan 2025 11:49:56 +0100 Subject: [PATCH 10/10] Solved missing trans default keys, lint problems --- src/components/Auth/Verify.tsx | 7 ++++++- src/components/Organization/NoOrganizations.tsx | 12 ++++++++++-- .../ProcessCreate/Steps/AccountCreate.tsx | 13 +++++++++++-- src/i18n/locales/ca.json | 3 --- src/i18n/locales/en.json | 5 +---- src/i18n/locales/es.json | 7 ------- 6 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/components/Auth/Verify.tsx b/src/components/Auth/Verify.tsx index 119fcc301..e3aff04c0 100644 --- a/src/components/Auth/Verify.tsx +++ b/src/components/Auth/Verify.tsx @@ -51,7 +51,12 @@ const VerifyForm = ({ email, initialCode = '', autoSubmit = false }: VerifyFormP return ( <> - { }} - > + > + Set up your{' '} + + organization for free + {' '} + and start creating voting processes to engage with your community. + - + + If your organization already have a profile, ask the admin to invite you to your organization. +