Merge branch 'main' into feat/organizations
This commit is contained in:
commit
e91b908f2a
|
@ -50,6 +50,6 @@
|
|||
"storybook-react-i18next": "^1.1.2",
|
||||
"tailwindcss": "^3.2.1",
|
||||
"typescript": "^4.9.4",
|
||||
"vite": "^2.9.15"
|
||||
"vite": "^4.1.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -263,7 +263,8 @@ const AppearanceView = () => {
|
|||
type="submit"
|
||||
loading={mutation.isLoading}
|
||||
color="primary"
|
||||
className="mt-8">
|
||||
className="mt-8"
|
||||
data-testid="update-theme-btn">
|
||||
{t("update")}
|
||||
</Button>
|
||||
</Form>
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
import { expect } from "@playwright/test";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
|
||||
test.describe("Change Theme Test", () => {
|
||||
test("change theme to dark", async ({ page, users }) => {
|
||||
const pro = await users.create();
|
||||
await pro.apiLogin();
|
||||
|
||||
await page.goto("/settings/my-account/appearance");
|
||||
|
||||
await page.waitForLoadState("networkidle");
|
||||
//Click the "Dark" theme label
|
||||
await page.click('[data-testid="theme-dark"]');
|
||||
//Click the update button
|
||||
await page.click('[data-testid="update-theme-btn"]');
|
||||
//Wait for the toast to appear
|
||||
const toast = await page.waitForSelector("div[class*='data-testid-toast-success']");
|
||||
expect(toast).toBeTruthy();
|
||||
//Go to the profile page and check if the theme is dark
|
||||
await page.goto(`/${pro.username}`);
|
||||
const darkModeClass = await page.getAttribute("html", "class");
|
||||
expect(darkModeClass).toContain("dark");
|
||||
});
|
||||
|
||||
test("change theme to light", async ({ page, users }) => {
|
||||
const pro = await users.create();
|
||||
await pro.apiLogin();
|
||||
|
||||
await page.goto("/settings/my-account/appearance");
|
||||
|
||||
await page.waitForLoadState("networkidle");
|
||||
//Click the "Light" theme label
|
||||
await page.click('[data-testid="theme-light"]');
|
||||
//Click the update theme button
|
||||
await page.click('[data-testid="update-theme-btn"]');
|
||||
//Wait for the toast to appear
|
||||
const toast = await page.waitForSelector("div[class*='data-testid-toast-success']");
|
||||
expect(toast).toBeTruthy();
|
||||
//Go to the profile page and check if the theme is light
|
||||
await page.goto(`/${pro.username}`);
|
||||
const darkModeClass = await page.getAttribute("html", "class");
|
||||
expect(darkModeClass).toContain("light");
|
||||
});
|
||||
});
|
|
@ -18,6 +18,7 @@
|
|||
"verify_email_email_header": "Vérifiez votre adresse e-mail",
|
||||
"verify_email_email_button": "Vérifier l'adresse e-mail",
|
||||
"verify_email_email_body": "Veuillez vérifier votre adresse e-mail en cliquant sur le bouton ci-dessous.",
|
||||
"verify_email_email_link_text": "Si vous n'aimez pas cliquer sur les boutons, voici le lien :",
|
||||
"email_sent": "E-mail envoyé avec succès",
|
||||
"event_declined_subject": "Refusé : {{title}} le {{date}}",
|
||||
"event_cancelled_subject": "Annulé : {{title}} le {{date}}",
|
||||
|
@ -853,6 +854,7 @@
|
|||
"installed_app_payment_description": "Configurez les services de traitement de paiement à utiliser lors de la facturation de vos clients.",
|
||||
"installed_app_analytics_description": "Configurez les applications d'analyse à utiliser pour vos pages de réservation.",
|
||||
"installed_app_other_description": "Toutes vos applications installées à partir d'autres catégories.",
|
||||
"installed_app_conferencing_description": "Configurez les applications de conférence à utiliser.",
|
||||
"installed_app_automation_description": "Configurez les applications d'automatisation à utiliser.",
|
||||
"installed_app_web3_description": "Configurez les applications Web3 à utiliser pour vos pages de réservation.",
|
||||
"analytics": "Analytiques",
|
||||
|
@ -1208,6 +1210,7 @@
|
|||
"start_of_week": "Début de la semaine",
|
||||
"recordings_title": "Enregistrements",
|
||||
"recording": "Enregistrement",
|
||||
"happy_scheduling": "Bonne planification",
|
||||
"select_calendars": "Sélectionnez les calendriers dont vous souhaitez vérifier les conflits afin d'éviter les doubles réservations.",
|
||||
"check_for_conflicts": "Vérifier les conflits",
|
||||
"view_recordings": "Voir les enregistrements",
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
"verify_email_email_header": "Verifica il tuo indirizzo e-mail",
|
||||
"verify_email_email_button": "Verifica l'e-mail",
|
||||
"verify_email_email_body": "Verifica il tuo indirizzo e-mail cliccando sul pulsante qui in basso.",
|
||||
"verify_email_email_link_text": "Ecco il link nel caso tu non voglia fare clic su pulsanti:",
|
||||
"email_sent": "Email inviata con successo",
|
||||
"event_declined_subject": "Rifiutato: {{title}} il {{date}}",
|
||||
"event_cancelled_subject": "Cancellato: {{title}} il {{date}}",
|
||||
|
@ -390,6 +391,8 @@
|
|||
"booking_rescheduled": "Prenotazione Riprogrammata",
|
||||
"recording_ready": "Link per scaricare la registrazione pronto",
|
||||
"booking_created": "Prenotazione Creata",
|
||||
"booking_rejected": "Prenotazione Rifiutata",
|
||||
"booking_requested": "Prenotazione Richiesta",
|
||||
"meeting_ended": "Riunione terminata",
|
||||
"form_submitted": "Modulo inviato",
|
||||
"event_triggers": "Attivatori Evento",
|
||||
|
@ -851,6 +854,7 @@
|
|||
"installed_app_payment_description": "Configura quale servizio di elaborazione dei pagamenti usare per addebitare i clienti.",
|
||||
"installed_app_analytics_description": "Imposta quali app di analisi usare per le tue pagine di prenotazione",
|
||||
"installed_app_other_description": "Tutte le app installate appartenenti ad altre categorie.",
|
||||
"installed_app_conferencing_description": "Configura quali app di conferenza utilizzare",
|
||||
"installed_app_automation_description": "Imposta quali app di automazione usare",
|
||||
"installed_app_web3_description": "Imposta quali app Web3 usare per le tue pagine di prenotazione",
|
||||
"analytics": "Analisi",
|
||||
|
@ -1047,6 +1051,7 @@
|
|||
"new_event_trigger": "quando viene prenotato un nuovo evento",
|
||||
"email_host_action": "invia e-mail all'organizzatore",
|
||||
"email_attendee_action": "invia e-mail ai partecipanti",
|
||||
"sms_attendee_action": "Invia SMS al partecipante",
|
||||
"sms_number_action": "invia SMS a un numero specifico",
|
||||
"workflows": "Flussi di lavoro",
|
||||
"new_workflow_btn": "Nuovo flusso di lavoro",
|
||||
|
@ -1205,6 +1210,7 @@
|
|||
"start_of_week": "Inizio della settimana",
|
||||
"recordings_title": "Registrazioni",
|
||||
"recording": "Registrazione",
|
||||
"happy_scheduling": "Buona pianificazione",
|
||||
"select_calendars": "Seleziona su quali calendari desideri controllare i conflitti per evitare doppie prenotazioni.",
|
||||
"check_for_conflicts": "Controlla conflitti",
|
||||
"view_recordings": "Visualizza registrazioni",
|
||||
|
@ -1246,6 +1252,7 @@
|
|||
"conferencing_description": "Aggiungi le tue app di videoconferenza preferite per le tue riunioni",
|
||||
"add_conferencing_app": "Aggiungi app di videoconferenza",
|
||||
"password_description": "Gestisci le impostazioni relative alle password del tuo account",
|
||||
"set_up_two_factor_authentication": "Imposta l'autenticazione a due fattori",
|
||||
"we_just_need_basic_info": "Abbiamo bisogno di alcune semplici informazioni per completare la configurazione del tuo profilo.",
|
||||
"skip": "Salta",
|
||||
"do_this_later": "Più tardi",
|
||||
|
@ -1277,6 +1284,7 @@
|
|||
"download_responses_description": "Scarica tutte le risposte al tuo modulo in formato CSV.",
|
||||
"download": "Scarica",
|
||||
"download_recording": "Scarica registrazione",
|
||||
"recording_from_your_recent_call": "Una registrazione della tua recente chiamata su {{appName}} è pronta per il download",
|
||||
"create_your_first_form": "Crea il tuo primo modulo",
|
||||
"create_your_first_form_description": "I Moduli di instradamento consentono di porre domande qualificanti agli utenti per indirizzarli a persone o eventi pertinenti.",
|
||||
"create_your_first_webhook": "Crea il tuo primo Webhook",
|
||||
|
@ -1462,6 +1470,8 @@
|
|||
"find_the_best_person": "Trova la persona più adatta disponibile e fai ruotare i membri del team.",
|
||||
"fixed_round_robin": "Round robin fisso",
|
||||
"add_one_fixed_attendee": "Aggiungi un partecipante fisso e fai intervenire a turno altri partecipanti.",
|
||||
"calcom_is_better_with_team": "{{appName}} funziona meglio in team",
|
||||
"the_calcom_team": "Il team {{companyName}}",
|
||||
"add_your_team_members": "Aggiungi i membri del tuo team ai tuoi tipi di eventi. Usa la pianificazione collettiva per includere tutti o trova la persona più adatta con la pianificazione round robin.",
|
||||
"booking_limit_reached": "È stato raggiunto il limite di prenotazione per questo tipo di evento",
|
||||
"duration_limit_reached": "È stato raggiunto il limite di durata per questo tipo di evento",
|
||||
|
@ -1480,6 +1490,7 @@
|
|||
"navigate_installed_apps": "Vai alle app installate",
|
||||
"disabled_calendar": "Se hai un altro calendario installato, le nuove prenotazioni saranno aggiunte a quel calendario. Altrimenti, collega un nuovo calendario in modo da non perdere nessuna nuova prenotazione.",
|
||||
"enable_apps": "Abilita app",
|
||||
"enable_apps_description": "Abilita le app che gli utenti possono integrare con {{appName}}",
|
||||
"purchase_license": "Acquista una licenza",
|
||||
"already_have_key": "Ho già una chiave:",
|
||||
"already_have_key_suggestion": "Copia qui la variabile di ambiente CALCOM_LICENSE_KEY esistente.",
|
||||
|
@ -1634,6 +1645,7 @@
|
|||
"booking_questions_title": "Domande per la prenotazione",
|
||||
"booking_questions_description": "Personalizza le domande poste nella pagina di prenotazione",
|
||||
"add_a_booking_question": "Aggiungi una domanda",
|
||||
"identifier": "Identificatore",
|
||||
"duplicate_email": "Indirizzo e-mail duplicato",
|
||||
"booking_with_payment_cancelled": "Non è più possibile pagare per questo evento",
|
||||
"booking_with_payment_cancelled_already_paid": "È in corso il rimborso del pagamento per questa prenotazione.",
|
||||
|
@ -1674,6 +1686,7 @@
|
|||
"spot_popular_event_types": "Individua i tipi di evento popolari",
|
||||
"spot_popular_event_types_description": "Scopri quali tipi di evento ricevono più clic e prenotazioni",
|
||||
"no_responses_yet": "Per ora non ci sono risposte",
|
||||
"no_routes_defined": "Nessun percorso definito",
|
||||
"this_will_be_the_placeholder": "Questo sarà il segnaposto",
|
||||
"error_booking_event": "Si è verificato un errore durante la prenotazione dell'evento. Aggiornare la pagina e riprovare",
|
||||
"timeslot_missing_title": "Nessuna fascia oraria selezionata",
|
||||
|
@ -1682,6 +1695,7 @@
|
|||
"switch_monthly": "Passa alla vista mensile",
|
||||
"switch_weekly": "Passa alla vista settimanale",
|
||||
"switch_multiday": "Passa alla vista giornaliera",
|
||||
"switch_columnview": "Passa alla vista colonna",
|
||||
"num_locations": "{{num}} opzioni di luogo",
|
||||
"select_on_next_step": "Seleziona nel passaggio successivo",
|
||||
"this_meeting_has_not_started_yet": "Questa riunione non è ancora iniziata",
|
||||
|
@ -1770,6 +1784,16 @@
|
|||
"complete_your_booking": "Completa la prenotazione",
|
||||
"complete_your_booking_subject": "Completa la prenotazione: {{title}} del {{date}}",
|
||||
"confirm_your_details": "Conferma i tuoi dati",
|
||||
"copy_invite_link": "Copia link d'invito",
|
||||
"edit_invite_link": "Modifica impostazioni link",
|
||||
"invite_link_copied": "Link d'invito copiato",
|
||||
"invite_link_deleted": "Link d'invito eliminato",
|
||||
"invite_link_updated": "Impostazioni link d'invito salvate",
|
||||
"link_expires_after": "La scadenza dei link è impostata dopo...",
|
||||
"one_day": "1 giorno",
|
||||
"seven_days": "7 giorni",
|
||||
"thirty_days": "30 giorni",
|
||||
"team_invite_received": "Hai ricevuto un invito a unirti al team {{teamName}}",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
"charge_card_dialog_body": "Stai per addebitare {{amount, currency}} al partecipante. Continuare?",
|
||||
"charge_attendee": "Addebita {{amount, currency}} al partecipante",
|
||||
|
@ -1778,6 +1802,7 @@
|
|||
"email_invite_team_bulk": "{{userCount}} utenti sono stati invitati",
|
||||
"error_collecting_card": "Errore durante la raccolta dei dati della carta",
|
||||
"image_size_limit_exceed": "Le dimensioni delle immagini caricate non devono superare il limite di 5 MB",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: Non hai l'autorizzazione ad abilitare o disabilitare questo flusso di lavoro",
|
||||
"inline_embed": "Incorporamento inline",
|
||||
"load_inline_content": "Carica il tuo tipo di evento direttamente inline con altri contenuti del sito web.",
|
||||
"floating_pop_up_button": "Pulsante a comparsa mobile",
|
||||
|
@ -1798,5 +1823,8 @@
|
|||
"connect_google_workspace": "Collega Google Workspace",
|
||||
"google_workspace_admin_tooltip": "Per usare questa funzione è necessario essere un amministratore di Workspace",
|
||||
"first_event_type_webhook_description": "Crea il primo webhook per questo tipo di evento",
|
||||
"create_for": "Crea per"
|
||||
"create_for": "Crea per",
|
||||
"additional_url_parameters": "Parametri URL aggiuntivi",
|
||||
"sender_id_info": "Nome o numero mostrato come mittente di un SMS (alcuni paesi non consentono ID alfanumerici dei mittenti)",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi qui le tue nuove stringhe al di sopra di questa riga ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑"
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"@vitejs/plugin-react": "^2.2.0",
|
||||
"rollup-plugin-node-builtins": "^2.1.2",
|
||||
"typescript": "^4.9.3",
|
||||
"vite": "^3.2.4"
|
||||
"vite": "^4.1.2"
|
||||
},
|
||||
"main": "./index"
|
||||
}
|
||||
|
|
|
@ -73,8 +73,8 @@ export default function ApiKeyDialogForm({
|
|||
showToast(t("api_key_copied"), "success");
|
||||
}}
|
||||
type="button"
|
||||
className="rounded-l-none py-[19px] text-base ">
|
||||
<Clipboard className="h-5 w-5 text-gray-100 ltr:mr-2 rtl:ml-2" />
|
||||
className="rounded-l-none text-base"
|
||||
StartIcon={Clipboard}>
|
||||
{t("copy")}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
|
|
|
@ -12,7 +12,8 @@ export default function ThemeLabel(props: ThemeLabelProps) {
|
|||
return (
|
||||
<label
|
||||
className="relative mb-4 flex-1 cursor-pointer text-center last:mb-0 last:mr-0 sm:mr-4 sm:mb-0"
|
||||
htmlFor={`theme-${variant}`}>
|
||||
htmlFor={`theme-${variant}`}
|
||||
data-testid={`theme-${variant}`}>
|
||||
<input
|
||||
className="peer absolute top-8 left-8"
|
||||
type="radio"
|
||||
|
|
Loading…
Reference in New Issue
Block a user