Merge branch 'feat/organizations' into feat/organizations-banner

This commit is contained in:
Leo Giovanetti 2023-06-12 10:57:02 -03:00
commit db0a5b3f0b
28 changed files with 73 additions and 35 deletions

View File

@ -1183,7 +1183,6 @@
"start_of_week": "بداية الأسبوع",
"recordings_title": "التسجيلات",
"recording": "التسجيل",
"happy_scheduling": "جدولة سعيدة",
"select_calendars": "حدد الرزنامات التي تريد التحقق منها بحثًا عن تضاربات لمنع الحجوزات المزدوجة.",
"check_for_conflicts": "التحقق من وجود تضاربات",
"view_recordings": "عرض التسجيلات",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Začátek týdne",
"recordings_title": "Nahrávky",
"recording": "Nahrávka",
"happy_scheduling": "Hodně štěstí s plánováním",
"select_calendars": "Vyberte kalendáře, u kterých chcete kontrolovat konflikty v zájmu prevence dvojích rezervací.",
"check_for_conflicts": "Zkontrolovat konflikty",
"view_recordings": "Zobrazit nahrávky",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Wochenstart",
"recordings_title": "Aufnahmen",
"recording": "Aufnahme",
"happy_scheduling": "Fröhliche Terminplanung",
"select_calendars": "Wählen Sie aus, in welchen Kalendern Sie nach Konflikten suchen wollen, um Doppelbuchungen zu vermeiden.",
"check_for_conflicts": "Auf Konflikte prüfen",
"view_recordings": "Aufnahmen anzeigen",

View File

@ -18,7 +18,7 @@
"verify_email_email_header": "Verify your email address",
"verify_email_email_button": "Verify email",
"verify_email_email_body": "Please verify your email address by clicking the button below.",
"verify_email_email_link_text": "Here's the link incase you don't like clicking buttons:",
"verify_email_email_link_text": "Here's the link in case you don't like clicking buttons:",
"email_sent": "Email sent successfully",
"event_declined_subject": "Declined: {{title}} at {{date}}",
"event_cancelled_subject": "Cancelled: {{title}} at {{date}}",
@ -856,6 +856,7 @@
"installed_app_payment_description": "Configure which payment processing services to use when charging your clients.",
"installed_app_analytics_description": "Configure which analytics apps to use for your booking pages",
"installed_app_other_description": "All your installed apps from other categories.",
"installed_app_conferencing_description": "Configure which conferencing apps to use",
"installed_app_automation_description": "Configure which automation apps to use",
"installed_app_web3_description": "Configure which web3 apps to use for your booking pages",
"analytics": "Analytics",
@ -1211,7 +1212,7 @@
"start_of_week": "Start of week",
"recordings_title": "Recordings",
"recording": "Recording",
"happy_scheduling": "Happy Scheduling",
"happy_scheduling": "Happy scheduling",
"select_calendars": "Select which calendars you want to check for conflicts to prevent double bookings.",
"check_for_conflicts": "Check for conflicts",
"view_recordings": "View recordings",
@ -1859,5 +1860,6 @@
"duplicated_slugs_warning": "The following teams couldn't be created due to duplicated slugs: {{slugs}}",
"team_names_empty": "Team names can't be empty",
"team_names_repeated": "Team names can't be repeated",
"sender_id_info": "Name or number shown as the sender of an SMS (some countries do not allow alphanumeric sender IDs)",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Inicio de la semana",
"recordings_title": "Grabaciones",
"recording": "Grabación",
"happy_scheduling": "Feliz programación",
"select_calendars": "Seleccione los calendarios en los que desee comprobar conflictos para evitar reservas dobles.",
"check_for_conflicts": "Comprobar conflictos",
"view_recordings": "Ver grabaciones",

View File

@ -18,7 +18,6 @@
"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}}",
@ -1209,7 +1208,6 @@
"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",
@ -1819,5 +1817,6 @@
"first_event_type_webhook_description": "Créez votre premier webhook pour ce type d'événement",
"create_for": "Créer pour",
"additional_url_parameters": "Paramètres d'URL supplémentaires",
"sender_id_info": "Nom ou numéro affiché comme expéditeur d'un SMS (certains pays n'autorisent pas les ID d'expéditeur alphanumériques)",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Ajoutez vos nouvelles chaînes ci-dessus ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}

View File

@ -18,7 +18,6 @@
"verify_email_email_header": "אמת את חשבון הדוא״ל שלך",
"verify_email_email_button": "אמת דוא״ל",
"verify_email_email_body": "אנא אמת את חשבון הדוא״ל שלך על ידי לחיצה על הכפתור מטה.",
"verify_email_email_link_text": "הנה הקישור, אם אתה לא אוהב ללחוץ על כפתורים:",
"email_sent": "מייל נשלח בהצלחה",
"event_declined_subject": "נדחה: {{title}} ב- {{date}}",
"event_cancelled_subject": "בוטל: {{title}} ב- {{date}}",
@ -1197,7 +1196,6 @@
"start_of_week": "תחילת השבוע",
"recordings_title": "הקלטות",
"recording": "הקלטה",
"happy_scheduling": "תזמון נעים!",
"select_calendars": "בחר את לוחות השנה שבהם ברצונך לבדוק אם יש התנגשויות, כדי למנוע כפל הזמנות.",
"check_for_conflicts": "בדיקת התנגשויות",
"view_recordings": "צפייה בהקלטות",

View File

@ -18,7 +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}}",
"event_request_declined": "La tua richiesta per l'evento è stata rifiutata",
@ -201,6 +201,7 @@
"page_doesnt_exist": "Questa pagina non esiste.",
"check_spelling_mistakes_or_go_back": "Controlla gli errori di ortografia o torna alla pagina precedente.",
"404_page_not_found": "404: Questa pagina non è stata trovata.",
"booker_event_not_found": "Non siamo riusciti a trovare l'evento che stai cercando di fissare.",
"getting_started": "Stiamo iniziando",
"15min_meeting": "Meeting di 15 minuti",
"30min_meeting": "Meeting di 30 minuti",
@ -297,6 +298,18 @@
"success": "Riuscito",
"failed": "Fallito",
"password_has_been_reset_login": "La tua password è stata reimpostata. Ora puoi accedere con la tua password appena creata.",
"bookerlayout_title": "Layout",
"bookerlayout_default_title": "Vista predefinita",
"bookerlayout_description": "È possibile selezionarne vari e chi fissa gli appuntamenti può cambiare visualizzazione.",
"bookerlayout_user_settings_title": "Layout di programmazione appuntamenti",
"bookerlayout_user_settings_description": "È possibile selezionare più librerie e chi fissa gli appuntamenti può cambiare vista. Il tutto può poi essere cambiato in base agli eventi.",
"bookerlayout_month_view": "Mese",
"bookerlayout_week_view": "Settimanale",
"bookerlayout_column_view": "Colonna",
"bookerlayout_error_min_one_enabled": "Deve essere abilitato almeno un layout.",
"bookerlayout_error_default_not_enabled": "Il layout selezionato come vista predefinita non fa parte dei layout abilitati.",
"bookerlayout_error_unknown_layout": "Il layout selezionato non è un layout valido.",
"bookerlayout_override_global_settings": "Puoi gestirlo per tutti i tipi di eventi in <2>impostazioni / aspetto</2> o <6>sostituire solo per questo evento</6>.",
"unexpected_error_try_again": "Si è verificato un errore imprevisto. Riprova.",
"sunday_time_error": "Ora non valida la domenica",
"monday_time_error": "Ora non valida il lunedì",
@ -366,6 +379,7 @@
"user_dynamic_booking_disabled": "Alcuni degli utenti del gruppo hanno attualmente disabilitato le prenotazioni di gruppo dinamiche",
"allow_dynamic_booking_tooltip": "È possibile creare dinamicamente collegamenti a prenotazioni di gruppo inserendo più nomi utente separati da '+'. Esempio: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Consenti ai partecipanti di prenotare per te utilizzando le prenotazioni di gruppo dinamiche",
"dynamic_booking": "Collegamenti dinamici di gruppo",
"email": "Email",
"email_placeholder": "jdoe@example.com",
"full_name": "Nome completo",
@ -1191,7 +1205,6 @@
"start_of_week": "Inizio della settimana",
"recordings_title": "Registrazioni",
"recording": "Registrazione",
"happy_scheduling": "Ti auguriamo una piacevole esperienza di pianificazione",
"select_calendars": "Seleziona su quali calendari desideri controllare i conflitti per evitare doppie prenotazioni.",
"check_for_conflicts": "Controlla conflitti",
"view_recordings": "Visualizza registrazioni",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "週の始まり",
"recordings_title": "録音",
"recording": "録音",
"happy_scheduling": "スケジュール設定をお楽しみください",
"select_calendars": "ダブルブッキングを防ぐために、スケジュールの重なりをチェックするカレンダーを選択してください。",
"check_for_conflicts": "スケジュールの重なりをチェック",
"view_recordings": "録音を表示",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "주의 시작",
"recordings_title": "녹음",
"recording": "녹음",
"happy_scheduling": "즐겁게 일정 관리하세요",
"select_calendars": "중복 예약을 방지하기 위해 충돌을 확인하려는 캘린더를 선택합니다.",
"check_for_conflicts": "충돌 확인",
"view_recordings": "녹음 보기",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Begin van de week",
"recordings_title": "Opnames",
"recording": "Opname",
"happy_scheduling": "Veel plezier met plannen",
"select_calendars": "Selecteer de agenda's die u wilt controleren op conflicten om dubbele boekingen te voorkomen.",
"check_for_conflicts": "Controleer op conflicten",
"view_recordings": "Opnames weergeven",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Początek tygodnia",
"recordings_title": "Nagrania",
"recording": "Nagranie",
"happy_scheduling": "Miłego planowania",
"select_calendars": "Wybierz kalendarze, które chcesz sprawdzić pod kątem konfliktów, aby uniknąć podwójnych rezerwacji.",
"check_for_conflicts": "Sprawdź konflikty",
"view_recordings": "Wyświetl nagrania",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Início da semana",
"recordings_title": "Gravações",
"recording": "Gravação",
"happy_scheduling": "Bom agendamento",
"select_calendars": "Selecionar em quais calendários você deseja verificar se há conflitos para evitar dupla reserva.",
"check_for_conflicts": "Verificar se há conflitos",
"view_recordings": "Ver gravações",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Início da semana",
"recordings_title": "Gravações",
"recording": "Gravação",
"happy_scheduling": "Votos de bons agendamentos",
"select_calendars": "Selecione os calendários nos quais pretende procurar por conflitos para evitar sobreposição de reservas.",
"check_for_conflicts": "Verificar se existem conflitos",
"view_recordings": "Ver gravações",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Începutul săptămânii",
"recordings_title": "Înregistrări",
"recording": "Înregistrare",
"happy_scheduling": "Programări cu spor",
"select_calendars": "Selectați pe ce calendare vreți să verificați dacă există conflicte pentru a preveni rezervările suprapuse.",
"check_for_conflicts": "Verifică dacă există conflicte",
"view_recordings": "Vezi înregistrările",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Начало недели",
"recordings_title": "Записи",
"recording": "Запись",
"happy_scheduling": "Счастливого планирования",
"select_calendars": "Выберите, в каких календарях нужно проверить наличие конфликтов и дублированного бронирования.",
"check_for_conflicts": "Проверить наличие конфликтов",
"view_recordings": "Просмотреть записи",

View File

@ -18,7 +18,6 @@
"verify_email_email_header": "Potvrdite svoju imejl adresu",
"verify_email_email_button": "Potvrdi imejl",
"verify_email_email_body": "Potvrdite svoju imejl adresu klikom na dugme ispod.",
"verify_email_email_link_text": "U slučaju da ne volite da klikćete na dugmad, evo linka:",
"email_sent": "Imejl je uspešno poslat",
"event_declined_subject": "Odbijeno: {{title}} datuma {{date}}",
"event_cancelled_subject": "Otkazano: {{title}} datuma {{date}}",
@ -1209,7 +1208,6 @@
"start_of_week": "Početak nedelje",
"recordings_title": "Snimci",
"recording": "Snimanje",
"happy_scheduling": "Srećno planiranje",
"select_calendars": "Izaberite kalendare koje želite da proverite da li imaju konflikta da biste sprečili dvostruka zakazivanja.",
"check_for_conflicts": "Proverite konflikte",
"view_recordings": "Pregledaj snimke",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Början av veckan",
"recordings_title": "Inspelningar",
"recording": "Inspelning",
"happy_scheduling": "Lycka till med schemaläggningen",
"select_calendars": "Välj vilka kalendrar du vill kontrollera för konflikter för att förhindra dubbelbokningar.",
"check_for_conflicts": "Kontrollera om konflikter",
"view_recordings": "Visa inspelningar",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Haftanın başlangıcı",
"recordings_title": "Kayıtlar",
"recording": "Kayıt",
"happy_scheduling": "İyi Planlamalar",
"select_calendars": "Çifte rezervasyonu önlemek için çakışmaları kontrol etmek istediğiniz takvimleri seçin.",
"check_for_conflicts": "Çakışmaları kontrol edin",
"view_recordings": "Kayıtları görüntüle",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Початок тижня",
"recordings_title": "Записи",
"recording": "Запис",
"happy_scheduling": "Вдалого планування",
"select_calendars": "Виберіть, які календарі потрібно перевірити на наявність конфліктів, щоб уникнути подвійних бронювань.",
"check_for_conflicts": "Перевірка конфліктів",
"view_recordings": "Переглянути записи",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "Khởi đầu tuần",
"recordings_title": "Bản ghi âm",
"recording": "Bản ghi âm",
"happy_scheduling": "Chúc bạn đặt lịch vui vẻ",
"select_calendars": "Chọn lịch nào mà bạn muốn kiểm tra xung đột nhằm tránh đặt lịch hẹn trùng.",
"check_for_conflicts": "Kiểm tra xung đột",
"view_recordings": "Xem các bản ghi âm",

View File

@ -1195,7 +1195,6 @@
"start_of_week": "一周开始",
"recordings_title": "录制",
"recording": "录制",
"happy_scheduling": "祝日程安排愉快",
"select_calendars": "选择要检查冲突的日历,以防止重复预约。",
"check_for_conflicts": "检查冲突",
"view_recordings": "查看录制",

View File

@ -1183,7 +1183,6 @@
"start_of_week": "一週開始",
"recordings_title": "錄製",
"recording": "錄製",
"happy_scheduling": "祝排程愉快",
"select_calendars": "選擇您想要檢查衝突的行事曆來避免重複預約。",
"check_for_conflicts": "檢查衝突",
"view_recordings": "檢視錄製內容",

View File

@ -1,6 +1,6 @@
import type { TFunction } from "next-i18next";
import { APP_NAME, COMPANY_NAME, SUPPORT_MAIL_ADDRESS } from "@calcom/lib/constants";
import { APP_NAME, SENDER_NAME, SUPPORT_MAIL_ADDRESS } from "@calcom/lib/constants";
import { BaseEmailHtml, CallToAction } from "../components";
@ -44,13 +44,13 @@ export const VerifyAccountEmail = (
<div style={{ lineHeight: "6px" }}>
<p style={{ fontWeight: 400, lineHeight: "24px" }}>
<>
{props.language("happy_scheduling")} <br />
{props.language("happy_scheduling")}, <br />
<a
href={`mailto:${SUPPORT_MAIL_ADDRESS}`}
style={{ color: "#3E3E3E" }}
target="_blank"
rel="noreferrer">
<>{props.language("the_calcom_team", { companyName: COMPANY_NAME })}</>
<>{props.language("the_calcom_team", { companyName: SENDER_NAME })}</>
</a>
</>
</p>

View File

@ -1,6 +1,7 @@
import { PaperclipIcon, UserIcon, Users } from "lucide-react";
import { Trans } from "next-i18next";
import { useMemo, useState } from "react";
import type { FormEvent } from "react";
import { Controller, useForm } from "react-hook-form";
import { classNames } from "@calcom/lib";
@ -50,6 +51,10 @@ export interface NewMemberForm {
type ModalMode = "INDIVIDUAL" | "BULK";
interface FileEvent<T = Element> extends FormEvent<T> {
target: EventTarget & T;
}
export default function MemberInvitationModal(props: MemberInvitationModalProps) {
const { t } = useLocale();
const trpcContext = trpc.useContext();
@ -90,6 +95,25 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps)
);
};
const handleFileUpload = (e: FileEvent<HTMLInputElement>) => {
if (!e.target.files?.length) {
return;
}
const file = e.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = (e) => {
const contents = e?.target?.result as string;
const values = contents?.split(",").map((email) => email.trim().toLocaleLowerCase());
newMemberFormMethods.setValue("emailOrUsername", values);
};
reader.readAsText(file);
}
};
return (
<Dialog
name="inviteModal"
@ -198,12 +222,20 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps)
}}
/>
<Button
disabled
type="button"
color="secondary"
StartIcon={PaperclipIcon}
className="mt-3 justify-center stroke-2">
Upload a .csv file
<label htmlFor="bulkInvite">
Upload a .csv file
<input
id="bulkInvite"
type="file"
accept=".csv"
style={{ display: "none" }}
onChange={handleFileUpload}
/>
</label>
</Button>
</div>
)}

View File

@ -23,7 +23,9 @@ import {
Label,
PhoneInput,
Select,
Tooltip,
} from "@calcom/ui";
import { Info } from "@calcom/ui/components/icon";
import { WORKFLOW_ACTIONS } from "../lib/constants";
import { onlyLettersNumbersSpaces } from "../pages/workflow";
@ -195,7 +197,12 @@ export const AddActionDialog = (props: IAddActionDialog) => {
{isSenderIdNeeded ? (
<>
<div className="mt-5">
<Label>{t("sender_id")}</Label>
<div className="flex">
<Label>{t("sender_id")}</Label>
<Tooltip content={t("sender_id_info")}>
<Info className="mr-1 mt-0.5 ml-2 h-4 w-4 text-gray-500" />
</Tooltip>
</div>
<Input
type="text"
placeholder={SENDER_ID}

View File

@ -35,6 +35,7 @@ import {
Editor,
AddVariablesDropdown,
Input,
Tooltip,
} from "@calcom/ui";
import { ArrowDown, MoreHorizontal, Trash2, HelpCircle, Info } from "@calcom/ui/components/icon";
@ -558,7 +559,12 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) {
{isSenderIdNeeded ? (
<>
<div className="pt-4">
<Label>{t("sender_id")}</Label>
<div className="flex">
<Label>{t("sender_id")}</Label>
<Tooltip content={t("sender_id_info")}>
<Info className="mr-1 mt-0.5 ml-2 h-4 w-4 text-gray-500" />
</Tooltip>
</div>
<Input
type="text"
placeholder={SENDER_ID}

View File

@ -68,6 +68,7 @@ const publicEventSelect = Prisma.validator<Prisma.EventTypeSelect>()({
weekStart: true,
username: true,
name: true,
theme: true,
},
},
hidden: true,