Merge branch 'main' into teste2e-allQuestionsCollective

This commit is contained in:
GitStart-Cal.com 2023-11-13 03:02:29 +05:45 committed by GitHub
commit efa7c253ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 308 additions and 28 deletions

View File

@ -1,10 +1,11 @@
import type { IncomingMessage, OutgoingMessage } from "http"; import type { IncomingMessage, OutgoingMessage } from "http";
import type { NextRequest, NextResponse } from "next/server";
import { z } from "zod"; import { z } from "zod";
import { IS_PRODUCTION } from "@calcom/lib/constants"; import { IS_PRODUCTION } from "@calcom/lib/constants";
import { WEBAPP_URL } from "@calcom/lib/constants"; import { WEBAPP_URL } from "@calcom/lib/constants";
import { buildNonce } from "@lib/buildNonce"; import { buildNonce } from "./buildNonce";
function getCspPolicy(nonce: string) { function getCspPolicy(nonce: string) {
//TODO: Do we need to explicitly define it in turbo.json //TODO: Do we need to explicitly define it in turbo.json
@ -46,11 +47,12 @@ const isPagePathRequest = (url: URL) => {
return !isNonPagePathPrefix.test(pathname) && !isFile.test(pathname); return !isNonPagePathPrefix.test(pathname) && !isFile.test(pathname);
}; };
export function csp(req: IncomingMessage | null, res: OutgoingMessage | null) { export function csp(req: IncomingMessage | NextRequest | null, res: OutgoingMessage | NextResponse | null) {
if (!req) { if (!req) {
return { nonce: undefined }; return { nonce: undefined };
} }
const existingNonce = req.headers["x-nonce"]; const existingNonce = "cache" in req ? req.headers.get("x-nonce") : req.headers["x-nonce"];
if (existingNonce) { if (existingNonce) {
const existingNoneParsed = z.string().safeParse(existingNonce); const existingNoneParsed = z.string().safeParse(existingNonce);
return { nonce: existingNoneParsed.success ? existingNoneParsed.data : "" }; return { nonce: existingNoneParsed.success ? existingNoneParsed.data : "" };
@ -71,17 +73,28 @@ export function csp(req: IncomingMessage | null, res: OutgoingMessage | null) {
} }
// Set x-nonce request header to be used by `getServerSideProps` or similar fns and `Document.getInitialProps` to read the nonce from // Set x-nonce request header to be used by `getServerSideProps` or similar fns and `Document.getInitialProps` to read the nonce from
// It is generated for all page requests but only used by pages that need CSP // It is generated for all page requests but only used by pages that need CSP
req.headers["x-nonce"] = nonce;
if ("cache" in req) {
req.headers.set("x-nonce", nonce);
} else {
req.headers["x-nonce"] = nonce;
}
if (res) { if (res) {
res.setHeader( const enforced =
req.headers["x-csp-enforce"] === "true" "cache" in req ? req.headers.get("x-csp-enforce") === "true" : req.headers["x-csp-enforce"] === "true";
? "Content-Security-Policy"
: "Content-Security-Policy-Report-Only", const name = enforced ? "Content-Security-Policy" : "Content-Security-Policy-Report-Only";
getCspPolicy(nonce)
.replace(/\s{2,}/g, " ") const value = getCspPolicy(nonce)
.trim() .replace(/\s{2,}/g, " ")
); .trim();
if ("body" in res) {
res.headers.set(name, value);
} else {
res.setHeader(name, value);
}
} }
return { nonce }; return { nonce };

View File

@ -5,10 +5,14 @@ import { NextResponse } from "next/server";
import { extendEventData, nextCollectBasicSettings } from "@calcom/lib/telemetry"; import { extendEventData, nextCollectBasicSettings } from "@calcom/lib/telemetry";
import { csp } from "@lib/csp";
const middleware: NextMiddleware = async (req) => { const middleware: NextMiddleware = async (req) => {
const url = req.nextUrl; const url = req.nextUrl;
const requestHeaders = new Headers(req.headers); const requestHeaders = new Headers(req.headers);
requestHeaders.set("x-url", req.url);
if (!url.pathname.startsWith("/api")) { if (!url.pathname.startsWith("/api")) {
// //
// NOTE: When tRPC hits an error a 500 is returned, when this is received // NOTE: When tRPC hits an error a 500 is returned, when this is received
@ -32,6 +36,18 @@ const middleware: NextMiddleware = async (req) => {
} }
const res = routingForms.handle(url); const res = routingForms.handle(url);
const { nonce } = csp(req, res ?? null);
if (!process.env.CSP_POLICY) {
req.headers.set("x-csp", "not-opted-in");
} else if (!req.headers.get("x-csp")) {
// If x-csp not set by gSSP, then it's initialPropsOnly
req.headers.set("x-csp", "initialPropsOnly");
} else {
req.headers.set("x-csp", nonce ?? "");
}
if (res) { if (res) {
return res; return res;
} }

View File

@ -386,7 +386,7 @@ export const EventTypeList = ({ group, groupIndex, readOnly, types }: EventTypeL
type.metadata?.managedEventConfig !== undefined && type.schedulingType !== SchedulingType.MANAGED; type.metadata?.managedEventConfig !== undefined && type.schedulingType !== SchedulingType.MANAGED;
return ( return (
<li key={type.id}> <li key={type.id}>
<div className="hover:bg-muted flex w-full items-center justify-between"> <div className="hover:bg-muted flex w-full items-center justify-between transition">
<div className="group flex w-full max-w-full items-center justify-between overflow-hidden px-4 py-4 sm:px-6"> <div className="group flex w-full max-w-full items-center justify-between overflow-hidden px-4 py-4 sm:px-6">
{!(firstItem && firstItem.id === type.id) && ( {!(firstItem && firstItem.id === type.id) && (
<ArrowButton onClick={() => moveEventType(index, -1)} arrowDirection="up" /> <ArrowButton onClick={() => moveEventType(index, -1)} arrowDirection="up" />

View File

@ -268,6 +268,7 @@
"set_availability": "تحديد الوقت الذي تكون فيه متاحًا", "set_availability": "تحديد الوقت الذي تكون فيه متاحًا",
"availability_settings": "إعدادات التوافرية", "availability_settings": "إعدادات التوافرية",
"continue_without_calendar": "المتابعة من دون تقويم", "continue_without_calendar": "المتابعة من دون تقويم",
"continue_with": "الاستمرار مع {{appName}}",
"connect_your_calendar": "ربط التقويم لديك", "connect_your_calendar": "ربط التقويم لديك",
"connect_your_video_app": "اربط تطبيقات الفيديو لديك", "connect_your_video_app": "اربط تطبيقات الفيديو لديك",
"connect_your_video_app_instructions": "قم بتوصيل تطبيقات الفيديو لديك لاستخدامها في أنواع الأحداث الخاصة بك.", "connect_your_video_app_instructions": "قم بتوصيل تطبيقات الفيديو لديك لاستخدامها في أنواع الأحداث الخاصة بك.",
@ -288,6 +289,8 @@
"when": "متى", "when": "متى",
"where": "أين", "where": "أين",
"add_to_calendar": "إضافة إلى التقويم", "add_to_calendar": "إضافة إلى التقويم",
"add_to_calendar_description": "اختر أين ستُضاف الأحداث الجديدة عندما يتم الحجز لديك.",
"add_events_to": "إضافة أحداث إلى",
"add_another_calendar": "إضافة تقويم آخر", "add_another_calendar": "إضافة تقويم آخر",
"other": "آخر", "other": "آخر",
"email_sign_in_subject": "رابط تسجيل الدخول بك لـ{{appName}}", "email_sign_in_subject": "رابط تسجيل الدخول بك لـ{{appName}}",
@ -422,6 +425,7 @@
"booking_created": "تم إنشاء الحجز", "booking_created": "تم إنشاء الحجز",
"booking_rejected": "تم رفض الحجز", "booking_rejected": "تم رفض الحجز",
"booking_requested": "تم طلب الحجز", "booking_requested": "تم طلب الحجز",
"booking_payment_initiated": "بدء الدفع للحجز",
"meeting_ended": "انتهى الاجتماع", "meeting_ended": "انتهى الاجتماع",
"form_submitted": "تم إرسال النموذج", "form_submitted": "تم إرسال النموذج",
"booking_paid": "تم الدفع لقاء الحجز", "booking_paid": "تم الدفع لقاء الحجز",
@ -456,6 +460,7 @@
"no_event_types_have_been_setup": "لم يقم هذا المستخدم بإعداد أي أنواع للحدث حتى الآن.", "no_event_types_have_been_setup": "لم يقم هذا المستخدم بإعداد أي أنواع للحدث حتى الآن.",
"edit_logo": "تعديل الشعار", "edit_logo": "تعديل الشعار",
"upload_a_logo": "تحميل شعار", "upload_a_logo": "تحميل شعار",
"upload_logo": "تحميل شعار",
"remove_logo": "إزالة الشعار", "remove_logo": "إزالة الشعار",
"enable": "تمكين", "enable": "تمكين",
"code": "الرمز", "code": "الرمز",
@ -568,6 +573,7 @@
"your_team_name": "اسم فريقك", "your_team_name": "اسم فريقك",
"team_updated_successfully": "تم تحديث الفريق بنجاح", "team_updated_successfully": "تم تحديث الفريق بنجاح",
"your_team_updated_successfully": "تم تحديث فريقك بنجاح.", "your_team_updated_successfully": "تم تحديث فريقك بنجاح.",
"your_org_updated_successfully": "تم تحديث منظمتك بنجاح.",
"about": "حول", "about": "حول",
"team_description": "بضع جمل عن فريقك. ستظهر على صفحة رابط فريقك.", "team_description": "بضع جمل عن فريقك. ستظهر على صفحة رابط فريقك.",
"org_description": "بضع جمل عن منظمتك. ستظهر على صفحة رابط منظمتك.", "org_description": "بضع جمل عن منظمتك. ستظهر على صفحة رابط منظمتك.",
@ -599,6 +605,7 @@
"hide_book_a_team_member": "إخفاء الزر \"حجز عضو فريق\"", "hide_book_a_team_member": "إخفاء الزر \"حجز عضو فريق\"",
"hide_book_a_team_member_description": "إخفاء الزر \"حجز عضو فريق\" من صفحاتك العامة.", "hide_book_a_team_member_description": "إخفاء الزر \"حجز عضو فريق\" من صفحاتك العامة.",
"danger_zone": "منطقة خطر", "danger_zone": "منطقة خطر",
"account_deletion_cannot_be_undone": "احترس. لا يمكن التراجع عن حذف الحساب.",
"back": "عودة", "back": "عودة",
"cancel": "إلغاء", "cancel": "إلغاء",
"cancel_all_remaining": "إلغاء كل ما تبقى", "cancel_all_remaining": "إلغاء كل ما تبقى",
@ -688,6 +695,7 @@
"people": "الأشخاص", "people": "الأشخاص",
"your_email": "بريدك الإلكتروني", "your_email": "بريدك الإلكتروني",
"change_avatar": "تغيير الصورة الرمزية", "change_avatar": "تغيير الصورة الرمزية",
"upload_avatar": "تحميل صورة رمزية",
"language": "اللغة", "language": "اللغة",
"timezone": "المنطقة الزمنية", "timezone": "المنطقة الزمنية",
"first_day_of_week": "أول يوم في الأسبوع", "first_day_of_week": "أول يوم في الأسبوع",
@ -778,6 +786,7 @@
"disable_guests": "تعطيل خاصية الضيوف", "disable_guests": "تعطيل خاصية الضيوف",
"disable_guests_description": "قم بتعطيل إضافة مزيد من الضيوف أثناء الحجز.", "disable_guests_description": "قم بتعطيل إضافة مزيد من الضيوف أثناء الحجز.",
"private_link": "إنشاء رابط خاص", "private_link": "إنشاء رابط خاص",
"enable_private_url": "تمكين عنوان URL خاص",
"private_link_label": "رابط خاص", "private_link_label": "رابط خاص",
"private_link_hint": "سيتم إعادة توليد الرابط الخاص بك بعد كل استخدام", "private_link_hint": "سيتم إعادة توليد الرابط الخاص بك بعد كل استخدام",
"copy_private_link": "نسخ الرابط الخاص", "copy_private_link": "نسخ الرابط الخاص",
@ -1213,6 +1222,7 @@
"organizer_name_variable": "اسم المنظم", "organizer_name_variable": "اسم المنظم",
"app_upgrade_description": "لاستخدام هذه الميزة، تحتاج إلى الترقية إلى حساب Pro.", "app_upgrade_description": "لاستخدام هذه الميزة، تحتاج إلى الترقية إلى حساب Pro.",
"invalid_number": "رقم الهاتف غير صالح", "invalid_number": "رقم الهاتف غير صالح",
"invalid_url_error_message": "عنوان URL غير صالح من أجل {{label}}. عنوان URL للعينة: {{sampleUrl}}",
"navigate": "تنقّل", "navigate": "تنقّل",
"open": "فتح", "open": "فتح",
"close": "إغلاق", "close": "إغلاق",
@ -1276,6 +1286,7 @@
"personal_cal_url": "عنوان {{appName}} URL الخاص بي", "personal_cal_url": "عنوان {{appName}} URL الخاص بي",
"bio_hint": "اكتب بضع جمل عن نفسك، والتي ستظهر على صفحة عنوان Url الشخصية لديك.", "bio_hint": "اكتب بضع جمل عن نفسك، والتي ستظهر على صفحة عنوان Url الشخصية لديك.",
"user_has_no_bio": "لم يُضف هذا المستخدم لمحة عنه بعد.", "user_has_no_bio": "لم يُضف هذا المستخدم لمحة عنه بعد.",
"bio": "سيرة ذاتية",
"delete_account_modal_title": "حذف الحساب", "delete_account_modal_title": "حذف الحساب",
"confirm_delete_account_modal": "هل أنت متأكد من أنك تريد حذف حساب {{appName}} الخاص بك؟", "confirm_delete_account_modal": "هل أنت متأكد من أنك تريد حذف حساب {{appName}} الخاص بك؟",
"delete_my_account": "حذف حسابي", "delete_my_account": "حذف حسابي",
@ -1286,6 +1297,7 @@
"select_calendars": "حدد الرزنامات التي تريد التحقق منها بحثًا عن تضاربات لمنع الحجوزات المزدوجة.", "select_calendars": "حدد الرزنامات التي تريد التحقق منها بحثًا عن تضاربات لمنع الحجوزات المزدوجة.",
"check_for_conflicts": "التحقق من وجود تضاربات", "check_for_conflicts": "التحقق من وجود تضاربات",
"view_recordings": "عرض التسجيلات", "view_recordings": "عرض التسجيلات",
"check_for_recordings": "تحقق من وجود تسجيلات",
"adding_events_to": "إضافة أحداث إلى", "adding_events_to": "إضافة أحداث إلى",
"follow_system_preferences": "اتبع تفضيلات النظام", "follow_system_preferences": "اتبع تفضيلات النظام",
"custom_brand_colors": "ألوان العلامة التجارية المخصصة", "custom_brand_colors": "ألوان العلامة التجارية المخصصة",
@ -1530,6 +1542,7 @@
"problem_registering_domain": "حدثت مشكلة في تسجيل المجال الفرعي، يُرجى المحاولة لاحقاً أو الاتصال بالمشرف", "problem_registering_domain": "حدثت مشكلة في تسجيل المجال الفرعي، يُرجى المحاولة لاحقاً أو الاتصال بالمشرف",
"team_publish": "نشر فريق", "team_publish": "نشر فريق",
"number_text_notifications": "رقم الهاتف (إشعارات الرسائل النصية)", "number_text_notifications": "رقم الهاتف (إشعارات الرسائل النصية)",
"number_sms_notifications": "رقم الهاتف (إشعارات الرسائل النصية)",
"attendee_email_variable": "اسم الحاضر", "attendee_email_variable": "اسم الحاضر",
"attendee_email_info": "البريد الإلكتروني للشخص الحجز", "attendee_email_info": "البريد الإلكتروني للشخص الحجز",
"kbar_search_placeholder": "اكتب أمرًا أو بحثًا...", "kbar_search_placeholder": "اكتب أمرًا أو بحثًا...",
@ -1594,6 +1607,7 @@
"options": "خيارات", "options": "خيارات",
"enter_option": "أدخل خيار {{index}}", "enter_option": "أدخل خيار {{index}}",
"add_an_option": "إضافة خيار", "add_an_option": "إضافة خيار",
"location_already_exists": "هذا الموقع موجود بالفعل. الرجاء اختيار موقع جديد",
"radio": "الراديو", "radio": "الراديو",
"google_meet_warning": "من أجل استخدام Google Meet، يجب عليك تعيين تقويم وجهتك على تقويم Google", "google_meet_warning": "من أجل استخدام Google Meet، يجب عليك تعيين تقويم وجهتك على تقويم Google",
"individual": "فرد", "individual": "فرد",
@ -1613,6 +1627,7 @@
"date_overrides_mark_all_day_unavailable_other": "وضع علامة غير متاح على التواريخ المحددة", "date_overrides_mark_all_day_unavailable_other": "وضع علامة غير متاح على التواريخ المحددة",
"date_overrides_add_btn": "إضافة تجاوز", "date_overrides_add_btn": "إضافة تجاوز",
"date_overrides_update_btn": "تحديث التجاوز", "date_overrides_update_btn": "تحديث التجاوز",
"date_successfully_added": "تم إضافة تخطّي التاريخ بنجاح",
"event_type_duplicate_copy_text": "{{slug}}-نسخ", "event_type_duplicate_copy_text": "{{slug}}-نسخ",
"set_as_default": "تعيين كافتراضي", "set_as_default": "تعيين كافتراضي",
"hide_eventtype_details": "إخفاء تفاصيل نوع الحدث", "hide_eventtype_details": "إخفاء تفاصيل نوع الحدث",
@ -1639,6 +1654,7 @@
"minimum_round_robin_hosts_count": "عدد المضيفين المطلوب حضورهم", "minimum_round_robin_hosts_count": "عدد المضيفين المطلوب حضورهم",
"hosts": "المضيفون", "hosts": "المضيفون",
"upgrade_to_enable_feature": "تحتاج إلى إنشاء فريق لتمكين هذه الميزة. انقر لإنشاء فريق.", "upgrade_to_enable_feature": "تحتاج إلى إنشاء فريق لتمكين هذه الميزة. انقر لإنشاء فريق.",
"orgs_upgrade_to_enable_feature": "تحتاج إلى الترقية إلى خطة enterprise لتفعيل هذه الميزة.",
"new_attendee": "حضور جديد", "new_attendee": "حضور جديد",
"awaiting_approval": "في انتظار الموافقة", "awaiting_approval": "في انتظار الموافقة",
"requires_google_calendar": "يتطلب هذا التطبيق اتصال تقويم Google", "requires_google_calendar": "يتطلب هذا التطبيق اتصال تقويم Google",
@ -1743,6 +1759,7 @@
"show_on_booking_page": "إظهار في صفحة الحجز", "show_on_booking_page": "إظهار في صفحة الحجز",
"get_started_zapier_templates": "البدء في استخدام قوالب Zapier", "get_started_zapier_templates": "البدء في استخدام قوالب Zapier",
"team_is_unpublished": "لم يُنشر {{team}}", "team_is_unpublished": "لم يُنشر {{team}}",
"org_is_unpublished_description": "رابط هذه المنظمة غير متاح حاليًا. يرجى الاتصال بمالك المنظمة أو طلب النشر منه.",
"team_is_unpublished_description": "رابط هذا {{entity}} غير متاح حاليًا. يرجى الاتصال بمالك {{entity}} أو طلب نشره منه.", "team_is_unpublished_description": "رابط هذا {{entity}} غير متاح حاليًا. يرجى الاتصال بمالك {{entity}} أو طلب نشره منه.",
"team_member": "عضو الفريق", "team_member": "عضو الفريق",
"a_routing_form": "نموذج توجيه", "a_routing_form": "نموذج توجيه",
@ -1877,6 +1894,7 @@
"edit_invite_link": "تعديل إعدادات الرابط", "edit_invite_link": "تعديل إعدادات الرابط",
"invite_link_copied": "تم نسخ رابط الدعوة", "invite_link_copied": "تم نسخ رابط الدعوة",
"invite_link_deleted": "تم حذف رابط الدعوة", "invite_link_deleted": "تم حذف رابط الدعوة",
"api_key_deleted": "تم حذف مفتاح API",
"invite_link_updated": "تم حفظ إعدادات رابط الدعوة", "invite_link_updated": "تم حفظ إعدادات رابط الدعوة",
"link_expires_after": "تم تعيين انتهاء صلاحية الروابط بعد...", "link_expires_after": "تم تعيين انتهاء صلاحية الروابط بعد...",
"one_day": "1 يوم", "one_day": "1 يوم",
@ -2009,7 +2027,13 @@
"attendee_last_name_variable": "اسم العائلة للحاضر", "attendee_last_name_variable": "اسم العائلة للحاضر",
"attendee_first_name_info": "الاسم الأول للشخص صاحب الحجز", "attendee_first_name_info": "الاسم الأول للشخص صاحب الحجز",
"attendee_last_name_info": "اسم العائلة للشخص صاحب الحجز", "attendee_last_name_info": "اسم العائلة للشخص صاحب الحجز",
"your_monthly_digest": "موجزك الشهري",
"member_name": "اسم العضو",
"most_popular_events": "الأحداث الأكثر شعبية",
"summary_of_events_for_your_team_for_the_last_30_days": "إليك ملخصك للأحداث الشعبية لفريقك {{teamName}} خلال آخر 30 يومًا",
"me": "أنا", "me": "أنا",
"monthly_digest_email": "الرسالة الإلكترونية للموجز الشهري",
"monthly_digest_email_for_teams": "رسالة إلكترونية بالموجز الشهري للفرق",
"verify_team_tooltip": "تأكيد فريقك لتمكين إرسال الرسائل إلى الحاضرين", "verify_team_tooltip": "تأكيد فريقك لتمكين إرسال الرسائل إلى الحاضرين",
"member_removed": "تمت إزالة العضو", "member_removed": "تمت إزالة العضو",
"my_availability": "أوقاتي المتاحة", "my_availability": "أوقاتي المتاحة",
@ -2039,12 +2063,40 @@
"team_no_event_types": "ليس لدى هذا الفريق أنواع من الفعاليات", "team_no_event_types": "ليس لدى هذا الفريق أنواع من الفعاليات",
"seat_options_doesnt_multiple_durations": "لا يدعم خيار المقعد فترات متعددة", "seat_options_doesnt_multiple_durations": "لا يدعم خيار المقعد فترات متعددة",
"include_calendar_event": "إدراج فعاليات في التقويم", "include_calendar_event": "إدراج فعاليات في التقويم",
"oAuth": "OAuth",
"recently_added": "تمت الإضافة مؤخراً", "recently_added": "تمت الإضافة مؤخراً",
"no_members_found": "لم يُعثر على أعضاء", "no_members_found": "لم يُعثر على أعضاء",
"event_setup_length_error": "إعداد الفعالية: يجب أن تكون المدة لدقيقة على الأقل.", "event_setup_length_error": "إعداد الفعالية: يجب أن تكون المدة لدقيقة على الأقل.",
"availability_schedules": "جدولة التوافر", "availability_schedules": "جدولة التوافر",
"unauthorized": "غير مصرح به",
"access_cal_account": "يرغب {{clientName}} في الوصول إلى حسابك على {{appName}}",
"select_account_team": "اختر حسابًا أو فريق",
"allow_client_to": "سيمنح هذا {{clientName}} القدرة على",
"associate_with_cal_account": "رافق نفسك بمعلوماتك الشخصية من {{clientName}}",
"see_personal_info": "شاهد معلوماتك الشخصية، بما في ذلك أي معلومات شخصية جعلتها متاحة للجمهور",
"see_primary_email_address": "طالع عنوان بريدك الإلكتروني الأساسي",
"connect_installed_apps": "قم بالارتباط بتطبيقاتك المثبتة",
"access_event_type": "اقرأ وعدّل واحذف أنواع الأحداث لديك",
"access_availability": "اقرأ وعّدل واحذف توافرك",
"access_bookings": "اقرأ وعدّل واحذف الحجوزات لديك",
"allow_client_to_do": "السماح لـ {{clientName}} بالقيام بهذا؟",
"oauth_access_information": "عبر نقرك على السماح، ستسمح لهذا التطبيق باستخدام معلوماتك وفقاً لشروط الخدمة وسياسة الخصوصية لديه. يمكنك إزالة هذا الوصول من متجر التطبيقات {{appName}}.",
"allow": "السماح",
"view_only_edit_availability_not_onboarded": "لم يكمل هذا المستخدم عملية الانضمام. لن تتمكن من تعيين توافره حتى يكتمل انضمامه.", "view_only_edit_availability_not_onboarded": "لم يكمل هذا المستخدم عملية الانضمام. لن تتمكن من تعيين توافره حتى يكتمل انضمامه.",
"view_only_edit_availability": "أنت تشاهد توافر هذا المستخدم. يمكنك تعديل توافرك فقط.", "view_only_edit_availability": "أنت تشاهد توافر هذا المستخدم. يمكنك تعديل توافرك فقط.",
"you_can_override_calendar_in_advanced_tab": "يمكنك تجاوز هذا لكل حدث على حدة في الإعدادات المتقدمة في كل نوع من أنواع الأحداث.",
"edit_users_availability": "تعديل توافر المستخدم: {{username}}", "edit_users_availability": "تعديل توافر المستخدم: {{username}}",
"resend_invitation": "إعادة إرسال الدعوة",
"invitation_resent": "تم إعادة إرسال الدعوة.",
"add_client": "إضافة عميل",
"copy_client_secret_info": "لن تتمكن من مطالعة السر بعد نسخه بعد الآن",
"add_new_client": "إضافة عميل جديد",
"this_app_is_not_setup_already": "لم يتم إعداد هذا التطبيق بعد",
"as_csv": "كـ CSV",
"overlay_my_calendar": "تركيب تقويمي",
"overlay_my_calendar_toc": "من خلال الارتباط بتقويمك، أنت تقبل سياسة الخصوصية وشروط الاستخدام. يمكنك إلغاء الوصول في أي وقت.",
"view_overlay_calendar_events": "طالع أحداث تقويمك لمنع التضارب بين الحجوزات.",
"lock_timezone_toggle_on_booking_page": "قفل المنطقة الزمنية في صفحة الحجز",
"description_lock_timezone_toggle_on_booking_page": "تقفل المنطقة الزمنية على صفحة الحجز، وهذا مفيد للأحداث وجهاً لوجه.",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
} }

View File

@ -268,6 +268,7 @@
"set_availability": "언제 여유가 있는지 설정하세요.", "set_availability": "언제 여유가 있는지 설정하세요.",
"availability_settings": "사용 가능한 설정", "availability_settings": "사용 가능한 설정",
"continue_without_calendar": "캘린더 없이 계속하기", "continue_without_calendar": "캘린더 없이 계속하기",
"continue_with": "{{appName}}에서 계속",
"connect_your_calendar": "캘린더 연결하기", "connect_your_calendar": "캘린더 연결하기",
"connect_your_video_app": "비디오 앱 연결", "connect_your_video_app": "비디오 앱 연결",
"connect_your_video_app_instructions": "해당 이벤트 타입에서 사용하기 위한 비디오 앱을 연결해주세요.", "connect_your_video_app_instructions": "해당 이벤트 타입에서 사용하기 위한 비디오 앱을 연결해주세요.",
@ -288,6 +289,8 @@
"when": "언제", "when": "언제",
"where": "어디서", "where": "어디서",
"add_to_calendar": "캘린더에 추가하기", "add_to_calendar": "캘린더에 추가하기",
"add_to_calendar_description": "예약 시 이벤트를 추가할 위치를 선택합니다.",
"add_events_to": "이벤트 추가:",
"add_another_calendar": "다른 캘린더 추가", "add_another_calendar": "다른 캘린더 추가",
"other": "더 보기", "other": "더 보기",
"email_sign_in_subject": "{{appName}}의 로그인 링크", "email_sign_in_subject": "{{appName}}의 로그인 링크",
@ -422,6 +425,7 @@
"booking_created": "예약 생성", "booking_created": "예약 생성",
"booking_rejected": "예약 거부됨", "booking_rejected": "예약 거부됨",
"booking_requested": "예약 요청됨", "booking_requested": "예약 요청됨",
"booking_payment_initiated": "예약 결제가 시작되었습니다",
"meeting_ended": "회의 종료됨", "meeting_ended": "회의 종료됨",
"form_submitted": "양식 제출됨", "form_submitted": "양식 제출됨",
"booking_paid": "예약 결제됨", "booking_paid": "예약 결제됨",
@ -456,6 +460,7 @@
"no_event_types_have_been_setup": "사용자가 이벤트 타입을 설정하지 않았습니다.", "no_event_types_have_been_setup": "사용자가 이벤트 타입을 설정하지 않았습니다.",
"edit_logo": "로고 수정하기", "edit_logo": "로고 수정하기",
"upload_a_logo": "로고 업로드", "upload_a_logo": "로고 업로드",
"upload_logo": "로고 업로드",
"remove_logo": "로고 제거", "remove_logo": "로고 제거",
"enable": "활성화", "enable": "활성화",
"code": "코드", "code": "코드",
@ -568,6 +573,7 @@
"your_team_name": "팀 이름", "your_team_name": "팀 이름",
"team_updated_successfully": "팀이 성공적으로 업데이트되었습니다.", "team_updated_successfully": "팀이 성공적으로 업데이트되었습니다.",
"your_team_updated_successfully": "Your team has been updated successfully.", "your_team_updated_successfully": "Your team has been updated successfully.",
"your_org_updated_successfully": "조직이 성공적으로 업데이트되었습니다.",
"about": "대하여", "about": "대하여",
"team_description": "팀 URL 페이지에 나타날 팀 소개를 해주세요.", "team_description": "팀 URL 페이지에 나타날 팀 소개를 해주세요.",
"org_description": "귀하의 조직에 대한 몇 자 남겨주세요. 이 내용은 귀하 조직의 URL 페이지에 표시됩니다.", "org_description": "귀하의 조직에 대한 몇 자 남겨주세요. 이 내용은 귀하 조직의 URL 페이지에 표시됩니다.",
@ -599,6 +605,7 @@
"hide_book_a_team_member": "팀원 예약 버튼 숨기기", "hide_book_a_team_member": "팀원 예약 버튼 숨기기",
"hide_book_a_team_member_description": "공개 페이지에서 팀원 예약 버튼을 숨깁니다.", "hide_book_a_team_member_description": "공개 페이지에서 팀원 예약 버튼을 숨깁니다.",
"danger_zone": "위험 구역", "danger_zone": "위험 구역",
"account_deletion_cannot_be_undone": "주의하세요. 계정 삭제 후에는 되돌릴 수 없습니다.",
"back": "뒤로 가기", "back": "뒤로 가기",
"cancel": "취소", "cancel": "취소",
"cancel_all_remaining": "나머지 모두 취소", "cancel_all_remaining": "나머지 모두 취소",
@ -688,6 +695,7 @@
"people": "인원", "people": "인원",
"your_email": "이메일 주소", "your_email": "이메일 주소",
"change_avatar": "아바타 변경하기", "change_avatar": "아바타 변경하기",
"upload_avatar": "아바타 업로드",
"language": "언어", "language": "언어",
"timezone": "시간대", "timezone": "시간대",
"first_day_of_week": "첫 번째 요일", "first_day_of_week": "첫 번째 요일",
@ -778,6 +786,7 @@
"disable_guests": "게스트 비활성화", "disable_guests": "게스트 비활성화",
"disable_guests_description": "예약하는 동안 손님 추가를 비활성화하십시오.", "disable_guests_description": "예약하는 동안 손님 추가를 비활성화하십시오.",
"private_link": "비공개 링크 생성", "private_link": "비공개 링크 생성",
"enable_private_url": "비공개 URL 활성화",
"private_link_label": "비공개 링크", "private_link_label": "비공개 링크",
"private_link_hint": "비공개 링크는 매 사용 시마다 다시 생성됩니다", "private_link_hint": "비공개 링크는 매 사용 시마다 다시 생성됩니다",
"copy_private_link": "비공개 링크 복사", "copy_private_link": "비공개 링크 복사",
@ -1213,6 +1222,7 @@
"organizer_name_variable": "주최자 이름", "organizer_name_variable": "주최자 이름",
"app_upgrade_description": "이 기능을 사용하려면 Pro 계정으로 업그레이드해야 합니다.", "app_upgrade_description": "이 기능을 사용하려면 Pro 계정으로 업그레이드해야 합니다.",
"invalid_number": "유효하지 않은 전화 번호", "invalid_number": "유효하지 않은 전화 번호",
"invalid_url_error_message": "{{label}}에 대한 URL이 유효하지 않습니다. 샘플 URL: {{sampleUrl}}",
"navigate": "탐색하기", "navigate": "탐색하기",
"open": "열기", "open": "열기",
"close": "닫기", "close": "닫기",
@ -1276,6 +1286,7 @@
"personal_cal_url": "내 개인 {{appName}} URL", "personal_cal_url": "내 개인 {{appName}} URL",
"bio_hint": "자신에 대해 몇 마디를 써보세요. 개인 URL 페이지에 보이는 내용입니다.", "bio_hint": "자신에 대해 몇 마디를 써보세요. 개인 URL 페이지에 보이는 내용입니다.",
"user_has_no_bio": "이 사용자는 아직 사용자 정보를 추가하지 않았습니다.", "user_has_no_bio": "이 사용자는 아직 사용자 정보를 추가하지 않았습니다.",
"bio": "사용자 정보",
"delete_account_modal_title": "계정 삭제", "delete_account_modal_title": "계정 삭제",
"confirm_delete_account_modal": "{{appName}} 계정을 삭제하시겠습니까?", "confirm_delete_account_modal": "{{appName}} 계정을 삭제하시겠습니까?",
"delete_my_account": "내 계정 삭제", "delete_my_account": "내 계정 삭제",
@ -1286,6 +1297,7 @@
"select_calendars": "중복 예약을 방지하기 위해 충돌을 확인하려는 캘린더를 선택합니다.", "select_calendars": "중복 예약을 방지하기 위해 충돌을 확인하려는 캘린더를 선택합니다.",
"check_for_conflicts": "충돌 확인", "check_for_conflicts": "충돌 확인",
"view_recordings": "녹음 보기", "view_recordings": "녹음 보기",
"check_for_recordings": "기록 확인",
"adding_events_to": "이벤트 추가:", "adding_events_to": "이벤트 추가:",
"follow_system_preferences": "시스템 추적 기본 설정", "follow_system_preferences": "시스템 추적 기본 설정",
"custom_brand_colors": "사용자 정의 브랜드 색상", "custom_brand_colors": "사용자 정의 브랜드 색상",
@ -1530,6 +1542,7 @@
"problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하세요.", "problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하세요.",
"team_publish": "팀 게시", "team_publish": "팀 게시",
"number_text_notifications": "전화번호(문자 알림)", "number_text_notifications": "전화번호(문자 알림)",
"number_sms_notifications": "전화번호(SMS 알림)",
"attendee_email_variable": "참석자 이메일", "attendee_email_variable": "참석자 이메일",
"attendee_email_info": "예약자 이메일", "attendee_email_info": "예약자 이메일",
"kbar_search_placeholder": "명령어를 입력하거나 검색하세요...", "kbar_search_placeholder": "명령어를 입력하거나 검색하세요...",
@ -1594,6 +1607,7 @@
"options": "선택사항", "options": "선택사항",
"enter_option": "선택사항 {{index}} 입력", "enter_option": "선택사항 {{index}} 입력",
"add_an_option": "선택사항 추가", "add_an_option": "선택사항 추가",
"location_already_exists": "이 위치는 이미 존재합니다. 새 위치를 선택하세요.",
"radio": "라디오", "radio": "라디오",
"google_meet_warning": "Google Meet을 사용하려면 대상 캘린더를 Google Calendar로 설정해야 합니다", "google_meet_warning": "Google Meet을 사용하려면 대상 캘린더를 Google Calendar로 설정해야 합니다",
"individual": "개인", "individual": "개인",
@ -1613,6 +1627,7 @@
"date_overrides_mark_all_day_unavailable_other": "선택 날짜에 이용 불가로 표시", "date_overrides_mark_all_day_unavailable_other": "선택 날짜에 이용 불가로 표시",
"date_overrides_add_btn": "재정의 추가", "date_overrides_add_btn": "재정의 추가",
"date_overrides_update_btn": "재정의 업데이트", "date_overrides_update_btn": "재정의 업데이트",
"date_successfully_added": "날짜 재정의가 추가되었습니다",
"event_type_duplicate_copy_text": "{{slug}}-카피", "event_type_duplicate_copy_text": "{{slug}}-카피",
"set_as_default": "기본값으로 설정", "set_as_default": "기본값으로 설정",
"hide_eventtype_details": "이벤트 타입 세부정보 숨기기", "hide_eventtype_details": "이벤트 타입 세부정보 숨기기",
@ -1639,6 +1654,7 @@
"minimum_round_robin_hosts_count": "참석에 필요한 호스트 수", "minimum_round_robin_hosts_count": "참석에 필요한 호스트 수",
"hosts": "호스트", "hosts": "호스트",
"upgrade_to_enable_feature": "이 기능을 사용하려면 팀을 만들어야 합니다. 팀을 만들려면 클릭하세요.", "upgrade_to_enable_feature": "이 기능을 사용하려면 팀을 만들어야 합니다. 팀을 만들려면 클릭하세요.",
"orgs_upgrade_to_enable_feature": "이 기능을 활성화하려면 엔터프라이즈 플랜으로 업그레이드해야 합니다.",
"new_attendee": "새 참석자", "new_attendee": "새 참석자",
"awaiting_approval": "승인 기다리는 중", "awaiting_approval": "승인 기다리는 중",
"requires_google_calendar": "이 앱은 Google Calendar 연결이 필요합니다", "requires_google_calendar": "이 앱은 Google Calendar 연결이 필요합니다",
@ -1743,6 +1759,7 @@
"show_on_booking_page": "예약 페이지에 표시", "show_on_booking_page": "예약 페이지에 표시",
"get_started_zapier_templates": "Zapier 템플릿 시작하기", "get_started_zapier_templates": "Zapier 템플릿 시작하기",
"team_is_unpublished": "{{team}} 팀은 게시되지 않았습니다", "team_is_unpublished": "{{team}} 팀은 게시되지 않았습니다",
"org_is_unpublished_description": "이 조직 링크는 현재 사용할 수 없습니다. 조직 소유자에게 문의하거나 게시해 달라고 요청하세요.",
"team_is_unpublished_description": "이 {{entity}} 링크는 현재 사용할 수 없습니다. {{entity}} 소유자에게 연락하거나 게시하라고 요청하십시오.", "team_is_unpublished_description": "이 {{entity}} 링크는 현재 사용할 수 없습니다. {{entity}} 소유자에게 연락하거나 게시하라고 요청하십시오.",
"team_member": "팀원", "team_member": "팀원",
"a_routing_form": "라우팅 양식", "a_routing_form": "라우팅 양식",
@ -1877,6 +1894,7 @@
"edit_invite_link": "링크 설정 편집", "edit_invite_link": "링크 설정 편집",
"invite_link_copied": "초대 링크가 복사되었습니다", "invite_link_copied": "초대 링크가 복사되었습니다",
"invite_link_deleted": "초대 링크가 삭제되었습니다", "invite_link_deleted": "초대 링크가 삭제되었습니다",
"api_key_deleted": "API 키 삭제됨",
"invite_link_updated": "초대 링크 설정이 저장되었습니다", "invite_link_updated": "초대 링크 설정이 저장되었습니다",
"link_expires_after": "링크 만료 기한...", "link_expires_after": "링크 만료 기한...",
"one_day": "1일", "one_day": "1일",
@ -2009,7 +2027,13 @@
"attendee_last_name_variable": "참석자 성", "attendee_last_name_variable": "참석자 성",
"attendee_first_name_info": "예약자 이름", "attendee_first_name_info": "예약자 이름",
"attendee_last_name_info": "예약자 성", "attendee_last_name_info": "예약자 성",
"your_monthly_digest": "내 월간 다이제스트",
"member_name": "구성원 이름",
"most_popular_events": "가장 인기 있는 이벤트",
"summary_of_events_for_your_team_for_the_last_30_days": "지난 30일간 {{teamName}} 팀의 인기 이벤트 요약은 다음과 같습니다",
"me": "나", "me": "나",
"monthly_digest_email": "월간 다이제스트 이메일",
"monthly_digest_email_for_teams": "팀의 월간 다이제스트 이메일",
"verify_team_tooltip": "참석자에게 메시지를 보낼 수 있도록 팀을 인증하세요", "verify_team_tooltip": "참석자에게 메시지를 보낼 수 있도록 팀을 인증하세요",
"member_removed": "구성원 제거됨", "member_removed": "구성원 제거됨",
"my_availability": "내 가용성", "my_availability": "내 가용성",
@ -2039,12 +2063,40 @@
"team_no_event_types": "이 팀에는 이벤트 유형이 없습니다", "team_no_event_types": "이 팀에는 이벤트 유형이 없습니다",
"seat_options_doesnt_multiple_durations": "좌석 옵션은 여러 기간을 지원하지 않습니다", "seat_options_doesnt_multiple_durations": "좌석 옵션은 여러 기간을 지원하지 않습니다",
"include_calendar_event": "캘린더 이벤트 포함", "include_calendar_event": "캘린더 이벤트 포함",
"oAuth": "OAuth",
"recently_added": "최근 추가됨", "recently_added": "최근 추가됨",
"no_members_found": "구성원 없음", "no_members_found": "구성원 없음",
"event_setup_length_error": "이벤트 설정: 지속 시간은 1분 이상이어야 합니다.", "event_setup_length_error": "이벤트 설정: 지속 시간은 1분 이상이어야 합니다.",
"availability_schedules": "사용 가능한 일정", "availability_schedules": "사용 가능한 일정",
"unauthorized": "미승인",
"access_cal_account": "{{clientName}} 님이 귀하의 {{appName}} 계정에 액세스하려고 합니다",
"select_account_team": "계정 또는 팀 선택",
"allow_client_to": "이것으로 {{clientName}} 님이 다음 작업을 수행할 수 있습니다",
"associate_with_cal_account": "귀하를 {{clientName}} 님의 개인 정보와 연결하세요",
"see_personal_info": "공개적으로 사용 가능한 개인 정보를 포함한 개인 정보를 확인하세요",
"see_primary_email_address": "기본 이메일 주소 보기",
"connect_installed_apps": "설치된 앱에 연결",
"access_event_type": "이벤트 유형 읽기, 편집, 삭제",
"access_availability": "가용 여부 읽기, 편집, 삭제",
"access_bookings": "예약 읽기, 편집, 삭제",
"allow_client_to_do": "{{clientName}}님이 이 작업을 수행하도록 허용하시겠습니까?",
"oauth_access_information": "허용을 클릭하면 이 앱이 서비스 약관 및 개인정보 보호정책에 따라 귀하의 정보를 사용할 수 있도록 허용하게 됩니다. 액세스 권한은 {{appName}} App Store에서 삭제할 수 있습니다.",
"allow": "허용",
"view_only_edit_availability_not_onboarded": "이 사용자는 온보딩을 완료하지 않았습니다. 온보딩이 완료될 때까지는 가용성을 설정할 수 없습니다.", "view_only_edit_availability_not_onboarded": "이 사용자는 온보딩을 완료하지 않았습니다. 온보딩이 완료될 때까지는 가용성을 설정할 수 없습니다.",
"view_only_edit_availability": "이 사용자의 가용성을 보고 계십니다. 본인의 가용성만 편집할 수 있습니다.", "view_only_edit_availability": "이 사용자의 가용성을 보고 계십니다. 본인의 가용성만 편집할 수 있습니다.",
"you_can_override_calendar_in_advanced_tab": "이것은 각 이벤트 유형의 고급 설정에서 이벤트별로 재정의할 수 있습니다.",
"edit_users_availability": "사용자 가용성 편집: {{username}}", "edit_users_availability": "사용자 가용성 편집: {{username}}",
"resend_invitation": "초대장 다시 보내기",
"invitation_resent": "초대장을 다시 보냈습니다.",
"add_client": "클라이언트 추가",
"copy_client_secret_info": "비밀글을 복사한 후에는 더 이상 볼 수 없습니다",
"add_new_client": "새 클라이언트 추가",
"this_app_is_not_setup_already": "이 앱은 아직 설정되지 않았습니다",
"as_csv": "CSV 형식",
"overlay_my_calendar": "내 캘린더 오버레이",
"overlay_my_calendar_toc": "캘린더에 연결하면 당사의 개인정보 보호정책 및 이용 약관에 동의하게 됩니다. 액세스 권한은 언제든 취소할 수 있습니다.",
"view_overlay_calendar_events": "예약 충돌을 방지하려면 캘린더 이벤트를 확인하십시오.",
"lock_timezone_toggle_on_booking_page": "예약 페이지의 시간대 잠금",
"description_lock_timezone_toggle_on_booking_page": "예약 페이지에서 시간대를 잠그는 기능은 대면 이벤트에 유용합니다.",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
} }

View File

@ -268,6 +268,7 @@
"set_availability": "Podesite svoju dostupnost", "set_availability": "Podesite svoju dostupnost",
"availability_settings": "Podešavanja dostuposti", "availability_settings": "Podešavanja dostuposti",
"continue_without_calendar": "Nastavite bez kalendara", "continue_without_calendar": "Nastavite bez kalendara",
"continue_with": "Nastavite sa {{appName}}",
"connect_your_calendar": "Povežite vaš kalendar", "connect_your_calendar": "Povežite vaš kalendar",
"connect_your_video_app": "Povežite svoje video aplikacije", "connect_your_video_app": "Povežite svoje video aplikacije",
"connect_your_video_app_instructions": "Povežite svoje video aplikacije da biste ih koristili u vašim tipovima događaja.", "connect_your_video_app_instructions": "Povežite svoje video aplikacije da biste ih koristili u vašim tipovima događaja.",
@ -288,6 +289,8 @@
"when": "Kad", "when": "Kad",
"where": "Gde", "where": "Gde",
"add_to_calendar": "Dodaj u kalendar", "add_to_calendar": "Dodaj u kalendar",
"add_to_calendar_description": "Izaberite gde da dodate događaje kada ste rezervisani.",
"add_events_to": "Dodajte događaje u",
"add_another_calendar": "Dodaj još jedan kalendar", "add_another_calendar": "Dodaj još jedan kalendar",
"other": "Drugo", "other": "Drugo",
"email_sign_in_subject": "Vaša veza za prijavu na {{appName}}", "email_sign_in_subject": "Vaša veza za prijavu na {{appName}}",
@ -422,6 +425,7 @@
"booking_created": "Rezervacija Napravljena", "booking_created": "Rezervacija Napravljena",
"booking_rejected": "Rezevacija je odbijena", "booking_rejected": "Rezevacija je odbijena",
"booking_requested": "Zahtev za rezervaciju je poslat", "booking_requested": "Zahtev za rezervaciju je poslat",
"booking_payment_initiated": "Plaćanje rezervisanja je inicirano",
"meeting_ended": "Sastanak se završio", "meeting_ended": "Sastanak se završio",
"form_submitted": "Formular poslat", "form_submitted": "Formular poslat",
"booking_paid": "Rezervacija je plaćena", "booking_paid": "Rezervacija je plaćena",
@ -456,6 +460,7 @@
"no_event_types_have_been_setup": "Ovaj korisnik još nije podesio tipove događaja.", "no_event_types_have_been_setup": "Ovaj korisnik još nije podesio tipove događaja.",
"edit_logo": "Uredi logo", "edit_logo": "Uredi logo",
"upload_a_logo": "Prikači logo", "upload_a_logo": "Prikači logo",
"upload_logo": "Otpremite logotip",
"remove_logo": "Ukloni logo", "remove_logo": "Ukloni logo",
"enable": "Omogući", "enable": "Omogući",
"code": "Kod", "code": "Kod",
@ -568,6 +573,7 @@
"your_team_name": "Ime vašeg tima", "your_team_name": "Ime vašeg tima",
"team_updated_successfully": "Tim uspešno ažuriran", "team_updated_successfully": "Tim uspešno ažuriran",
"your_team_updated_successfully": "Vaš tim je uspešno ažuriran.", "your_team_updated_successfully": "Vaš tim je uspešno ažuriran.",
"your_org_updated_successfully": "Vaša Organizacija je uspešno ažurirana.",
"about": "Opis", "about": "Opis",
"team_description": "Par rečenica o vašem timu. Ovo će se pojaviti na stranici URL adrese vašeg tima.", "team_description": "Par rečenica o vašem timu. Ovo će se pojaviti na stranici URL adrese vašeg tima.",
"org_description": "Nekoliko rečenica o vašoj organizaciji. Ovo će se pojaviti na url stranici vaše organizacije.", "org_description": "Nekoliko rečenica o vašoj organizaciji. Ovo će se pojaviti na url stranici vaše organizacije.",
@ -599,6 +605,7 @@
"hide_book_a_team_member": "Sakrij dugme „Rezerviši člana tima”", "hide_book_a_team_member": "Sakrij dugme „Rezerviši člana tima”",
"hide_book_a_team_member_description": "Sakrij sa javnih strana dugme „Rezerviši člana tima”.", "hide_book_a_team_member_description": "Sakrij sa javnih strana dugme „Rezerviši člana tima”.",
"danger_zone": "Opasna Zona", "danger_zone": "Opasna Zona",
"account_deletion_cannot_be_undone": "Budite pažljivi. Brisanje naloga ne može da se opozove.",
"back": "Nazad", "back": "Nazad",
"cancel": "Otkaži", "cancel": "Otkaži",
"cancel_all_remaining": "Otkaži sve preostalo", "cancel_all_remaining": "Otkaži sve preostalo",
@ -688,6 +695,7 @@
"people": "Ljudi", "people": "Ljudi",
"your_email": "Vaša E-pošta", "your_email": "Vaša E-pošta",
"change_avatar": "Promenite Avatara", "change_avatar": "Promenite Avatara",
"upload_avatar": "Otpremite avatar",
"language": "Jezik", "language": "Jezik",
"timezone": "Vremenska zona", "timezone": "Vremenska zona",
"first_day_of_week": "Prvi dan u nedelji", "first_day_of_week": "Prvi dan u nedelji",
@ -778,6 +786,7 @@
"disable_guests": "Onemogući Goste", "disable_guests": "Onemogući Goste",
"disable_guests_description": "Onemogući dodavanje dodatnih gostiju prilikom rezervacije.", "disable_guests_description": "Onemogući dodavanje dodatnih gostiju prilikom rezervacije.",
"private_link": "Generiši privatni link", "private_link": "Generiši privatni link",
"enable_private_url": "Omogućite privatni URL",
"private_link_label": "Privatni link", "private_link_label": "Privatni link",
"private_link_hint": "Vaš privatni link će se ponovo generisati nakon svake upotrebe", "private_link_hint": "Vaš privatni link će se ponovo generisati nakon svake upotrebe",
"copy_private_link": "Kopiraj privatni link", "copy_private_link": "Kopiraj privatni link",
@ -1213,6 +1222,7 @@
"organizer_name_variable": "Ime organizatora", "organizer_name_variable": "Ime organizatora",
"app_upgrade_description": "Da biste koristili ovu funkciju, morate izvršiti nadogradnju na Pro nalog.", "app_upgrade_description": "Da biste koristili ovu funkciju, morate izvršiti nadogradnju na Pro nalog.",
"invalid_number": "Neispravan broj telefona", "invalid_number": "Neispravan broj telefona",
"invalid_url_error_message": "Neispravan URL za {{label}}. Primer URL-a: {{sampleUrl}}",
"navigate": "Navigacija", "navigate": "Navigacija",
"open": "Otvori", "open": "Otvori",
"close": "Zatvori", "close": "Zatvori",
@ -1276,6 +1286,7 @@
"personal_cal_url": "Moj lični {{appName}} URL", "personal_cal_url": "Moj lični {{appName}} URL",
"bio_hint": "Par rečenica o vama. Ovo će se pojaviti na vašoj ličnoj url stranici.", "bio_hint": "Par rečenica o vama. Ovo će se pojaviti na vašoj ličnoj url stranici.",
"user_has_no_bio": "Ovaj korisnik još nije dodao svoju biografiju.", "user_has_no_bio": "Ovaj korisnik još nije dodao svoju biografiju.",
"bio": "Biografija",
"delete_account_modal_title": "Izbriši nalog", "delete_account_modal_title": "Izbriši nalog",
"confirm_delete_account_modal": "Jeste li sigurni da želite da izbrišete vaš {{appName}} nalog?", "confirm_delete_account_modal": "Jeste li sigurni da želite da izbrišete vaš {{appName}} nalog?",
"delete_my_account": "Izbriši moj nalog", "delete_my_account": "Izbriši moj nalog",
@ -1286,6 +1297,7 @@
"select_calendars": "Izaberite kalendare koje želite da proverite da li imaju konflikta da biste sprečili dvostruka zakazivanja.", "select_calendars": "Izaberite kalendare koje želite da proverite da li imaju konflikta da biste sprečili dvostruka zakazivanja.",
"check_for_conflicts": "Proverite konflikte", "check_for_conflicts": "Proverite konflikte",
"view_recordings": "Pregledaj snimke", "view_recordings": "Pregledaj snimke",
"check_for_recordings": "Proverite snimke",
"adding_events_to": "Dodavanje događaja u", "adding_events_to": "Dodavanje događaja u",
"follow_system_preferences": "Prati sistemska podešavanja", "follow_system_preferences": "Prati sistemska podešavanja",
"custom_brand_colors": "Prilagođene boje brenda", "custom_brand_colors": "Prilagođene boje brenda",
@ -1530,6 +1542,7 @@
"problem_registering_domain": "Postoji problem sa registracijom poddomena, pokušajte ponovo ili se obratite administratoru", "problem_registering_domain": "Postoji problem sa registracijom poddomena, pokušajte ponovo ili se obratite administratoru",
"team_publish": "Objavite tim", "team_publish": "Objavite tim",
"number_text_notifications": "Broj telefona (obaveštenja putem SMS-a)", "number_text_notifications": "Broj telefona (obaveštenja putem SMS-a)",
"number_sms_notifications": "Broj telefona (obaveštenja putem SMS-a)",
"attendee_email_variable": "Imejl polaznika", "attendee_email_variable": "Imejl polaznika",
"attendee_email_info": "Imejl osobe koja rezerviše", "attendee_email_info": "Imejl osobe koja rezerviše",
"kbar_search_placeholder": "Unesite komandu ili pretražite...", "kbar_search_placeholder": "Unesite komandu ili pretražite...",
@ -1594,6 +1607,7 @@
"options": "Opcije", "options": "Opcije",
"enter_option": "Unesite opciju {{index}}", "enter_option": "Unesite opciju {{index}}",
"add_an_option": "Dodajte opciju", "add_an_option": "Dodajte opciju",
"location_already_exists": "Ova lokacija već postoji. Izaberite novu lokaciju",
"radio": "Radio", "radio": "Radio",
"google_meet_warning": "Da biste koristili Google Meet morate da podesite Google Calendar kao odredišni kalendar", "google_meet_warning": "Da biste koristili Google Meet morate da podesite Google Calendar kao odredišni kalendar",
"individual": "Pojedinac", "individual": "Pojedinac",
@ -1613,6 +1627,7 @@
"date_overrides_mark_all_day_unavailable_other": "Označi kao nedostupno za sledeće datume", "date_overrides_mark_all_day_unavailable_other": "Označi kao nedostupno za sledeće datume",
"date_overrides_add_btn": "Dodaj zamenu", "date_overrides_add_btn": "Dodaj zamenu",
"date_overrides_update_btn": "Ažuriraj zamenu", "date_overrides_update_btn": "Ažuriraj zamenu",
"date_successfully_added": "Datum zamene je uspešno dodat",
"event_type_duplicate_copy_text": "{{slug}}-kopija", "event_type_duplicate_copy_text": "{{slug}}-kopija",
"set_as_default": "Postavi kao podrazumevano", "set_as_default": "Postavi kao podrazumevano",
"hide_eventtype_details": "Sakrij detalje tipa događaja", "hide_eventtype_details": "Sakrij detalje tipa događaja",
@ -1639,6 +1654,7 @@
"minimum_round_robin_hosts_count": "Broj domaćina potrebnih da učestvuju", "minimum_round_robin_hosts_count": "Broj domaćina potrebnih da učestvuju",
"hosts": "Domaćini", "hosts": "Domaćini",
"upgrade_to_enable_feature": "Potrebno je da kreirate tim da biste omogućili ovu funkciju. Kliknite da kreirate tim.", "upgrade_to_enable_feature": "Potrebno je da kreirate tim da biste omogućili ovu funkciju. Kliknite da kreirate tim.",
"orgs_upgrade_to_enable_feature": "Morate da nadogradite na naš Enterprise plan da biste omogućili ovu funkciju.",
"new_attendee": "Novi učesnik", "new_attendee": "Novi učesnik",
"awaiting_approval": "Čeka na odobrenje", "awaiting_approval": "Čeka na odobrenje",
"requires_google_calendar": "Ova aplikacija zahteva vezu sa Google kalendarom", "requires_google_calendar": "Ova aplikacija zahteva vezu sa Google kalendarom",
@ -1743,6 +1759,7 @@
"show_on_booking_page": "Prikaži na stranici zakazivanja", "show_on_booking_page": "Prikaži na stranici zakazivanja",
"get_started_zapier_templates": "Započnite sa Zapier predlošcima", "get_started_zapier_templates": "Započnite sa Zapier predlošcima",
"team_is_unpublished": "Opozvano je objavljivanje tima {{team}}", "team_is_unpublished": "Opozvano je objavljivanje tima {{team}}",
"org_is_unpublished_description": "Ovaj link Organizacije trenutno nije dostupan. Obratite se vlasniku Organizacije i zamolite ga da ga objavi.",
"team_is_unpublished_description": "Ovaj link {{entity}} više nije dostupan. Obratite se vlasniku {{entity}} i zamolite ga da objavi.", "team_is_unpublished_description": "Ovaj link {{entity}} više nije dostupan. Obratite se vlasniku {{entity}} i zamolite ga da objavi.",
"team_member": "Član tima", "team_member": "Član tima",
"a_routing_form": "Obrazac za usmeravanje", "a_routing_form": "Obrazac za usmeravanje",
@ -1877,6 +1894,7 @@
"edit_invite_link": "Izmeni podešavanja linka", "edit_invite_link": "Izmeni podešavanja linka",
"invite_link_copied": "Link pozivnice je kopiran", "invite_link_copied": "Link pozivnice je kopiran",
"invite_link_deleted": "Link pozivnice je izbrisan", "invite_link_deleted": "Link pozivnice je izbrisan",
"api_key_deleted": "API ključ je obrisan",
"invite_link_updated": "Podešavanja linka pozivnice su sačuvana", "invite_link_updated": "Podešavanja linka pozivnice su sačuvana",
"link_expires_after": "Linkovi su podešeni da isteknu za...", "link_expires_after": "Linkovi su podešeni da isteknu za...",
"one_day": "1 dan", "one_day": "1 dan",
@ -2009,7 +2027,13 @@
"attendee_last_name_variable": "Prezime učesnika", "attendee_last_name_variable": "Prezime učesnika",
"attendee_first_name_info": "Ime osobe koja rezerviše", "attendee_first_name_info": "Ime osobe koja rezerviše",
"attendee_last_name_info": "Prezime osobe koja rezerviše", "attendee_last_name_info": "Prezime osobe koja rezerviše",
"your_monthly_digest": "Vaš mesečni presek",
"member_name": "Ime člana",
"most_popular_events": "Najpopularniji događaji",
"summary_of_events_for_your_team_for_the_last_30_days": "Evo preseka popularnih događaja za vaš tim {{teamName}} u poslednjih 30 dana",
"me": "Ja", "me": "Ja",
"monthly_digest_email": "Imejl sa mesečnih presekom",
"monthly_digest_email_for_teams": "Imejl sa mesečnim presekom za timove",
"verify_team_tooltip": "Verifikujte svoj tim da biste omogućili slanje poruka učesnicima", "verify_team_tooltip": "Verifikujte svoj tim da biste omogućili slanje poruka učesnicima",
"member_removed": "Član je uklonjen", "member_removed": "Član je uklonjen",
"my_availability": "Moja dostupnost", "my_availability": "Moja dostupnost",
@ -2039,12 +2063,40 @@
"team_no_event_types": "Ovaj tim nema tipove događaja", "team_no_event_types": "Ovaj tim nema tipove događaja",
"seat_options_doesnt_multiple_durations": "Opcije za mesta ne podržavaju višestruko trajanje", "seat_options_doesnt_multiple_durations": "Opcije za mesta ne podržavaju višestruko trajanje",
"include_calendar_event": "Uključite događaj u kalendaru", "include_calendar_event": "Uključite događaj u kalendaru",
"oAuth": "OAuth",
"recently_added": "Nedavno dodato", "recently_added": "Nedavno dodato",
"no_members_found": "Članovi nisu pronađeni", "no_members_found": "Članovi nisu pronađeni",
"event_setup_length_error": "Podešavanje događaja: Trajanje mora da bude barem 1 minut.", "event_setup_length_error": "Podešavanje događaja: Trajanje mora da bude barem 1 minut.",
"availability_schedules": "Raspored dostupnosti", "availability_schedules": "Raspored dostupnosti",
"unauthorized": "Neovlašćeno",
"access_cal_account": "{{clientName}} bi želeo da pristupi vašem {{appName}} nalogu",
"select_account_team": "Izaberite nalog ili tim",
"allow_client_to": "Ovo će dozvoliti {{clientName}} da",
"associate_with_cal_account": "Da vas poveže sa vašim ličnim informacijama na {{clientName}}",
"see_personal_info": "Da vidi vaše lične informacije, uključujući bilo koje privatne informacije koje ste učili javno dostupnim",
"see_primary_email_address": "Da vidi vašu primarnu imejl adresu",
"connect_installed_apps": "Da se poveže sa vašim instaliranim aplikacijiama",
"access_event_type": "Da pročita, izmeni i izbriše vaše tipove događaja",
"access_availability": "Da pročita, izmeni i izbriše vašu dostupnost",
"access_bookings": "Da pročita, izmeni i izbriše vaša zakazivanja",
"allow_client_to_do": "Da li dozvoljavate {{clientName}} da to uradi?",
"oauth_access_information": "Klikom na „Dozvoli”, dozvoljavate ovoj aplikaciji da koristi vaše informacije u skladu sa njihovim Uslovima usluge i Politikom privatnosti. Možete da uklonite pristup u {{appName}} prodavnici aplikacija.",
"allow": "Dozvoli",
"view_only_edit_availability_not_onboarded": "Ovaj korisnik nije završio uvodnu obuku. Nećete moći da podesite dostupnost dok ne dovrši uvodnu obuku.", "view_only_edit_availability_not_onboarded": "Ovaj korisnik nije završio uvodnu obuku. Nećete moći da podesite dostupnost dok ne dovrši uvodnu obuku.",
"view_only_edit_availability": "Pregledate dostupnost ovog korisnika. Možete da uredite samo svoju dostupnost.", "view_only_edit_availability": "Pregledate dostupnost ovog korisnika. Možete da uredite samo svoju dostupnost.",
"you_can_override_calendar_in_advanced_tab": "Možete da promenite ovo za svaki događaj u Napredim podešavanjima u svakom tipu događaja.",
"edit_users_availability": "Uredi dostupnost korisnika: {{username}}", "edit_users_availability": "Uredi dostupnost korisnika: {{username}}",
"resend_invitation": "Ponovo pošaljite pozivnicu",
"invitation_resent": "Pozivnica je ponovo poslata.",
"add_client": "Dodajte klijenta",
"copy_client_secret_info": "Nakon kopiranja tajne, nećete moći više da je vidite",
"add_new_client": "Dodajte novog klijenta",
"this_app_is_not_setup_already": "Ova aplikacija još uvek nije podešena",
"as_csv": "kao CSV",
"overlay_my_calendar": "Prikaži preko mog kalendara",
"overlay_my_calendar_toc": "Povezivanjem sa vašim kalendarom, prihvatate našu Politiku privatnosti i Uslove korišćenja. Možete da povučete pristup u bilo kom trenutku.",
"view_overlay_calendar_events": "Pregledajte događaje u vašem kalendaru da biste sprečili dvostruka zakazivanja.",
"lock_timezone_toggle_on_booking_page": "Zaključajte vremensku zonu na stranici za zakazivanja",
"description_lock_timezone_toggle_on_booking_page": "Za zaključavanje vremenske zone na stranici za zakazivanja, korisno za događaje licem u lice.",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodajte svoje nove stringove iznad ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodajte svoje nove stringove iznad ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
} }

View File

@ -268,6 +268,7 @@
"set_availability": "Ställ in din tillgänglighet", "set_availability": "Ställ in din tillgänglighet",
"availability_settings": "Tillgänglighetsinställningar", "availability_settings": "Tillgänglighetsinställningar",
"continue_without_calendar": "Fortsätt utan kalender", "continue_without_calendar": "Fortsätt utan kalender",
"continue_with": "Fortsätt med {{appName}}",
"connect_your_calendar": "Anslut din kalender", "connect_your_calendar": "Anslut din kalender",
"connect_your_video_app": "Anslut dina videoappar", "connect_your_video_app": "Anslut dina videoappar",
"connect_your_video_app_instructions": "Anslut dina videoappar för att använda dem i dina händelsetyper.", "connect_your_video_app_instructions": "Anslut dina videoappar för att använda dem i dina händelsetyper.",
@ -288,6 +289,8 @@
"when": "När", "when": "När",
"where": "Var", "where": "Var",
"add_to_calendar": "Lägg till i kalender", "add_to_calendar": "Lägg till i kalender",
"add_to_calendar_description": "Välj var du vill lägga till händelser när du är bokad.",
"add_events_to": "Lägg till händelser till",
"add_another_calendar": "Lägg till en annan kalender", "add_another_calendar": "Lägg till en annan kalender",
"other": "Annat", "other": "Annat",
"email_sign_in_subject": "Din inloggningslänk för {{appName}}", "email_sign_in_subject": "Din inloggningslänk för {{appName}}",
@ -422,6 +425,7 @@
"booking_created": "Bokning skapad", "booking_created": "Bokning skapad",
"booking_rejected": "Bokning avvisad", "booking_rejected": "Bokning avvisad",
"booking_requested": "Bokning begärd", "booking_requested": "Bokning begärd",
"booking_payment_initiated": "Bokningsbetalning initierad",
"meeting_ended": "Mötet avslutat", "meeting_ended": "Mötet avslutat",
"form_submitted": "Formulär skickat", "form_submitted": "Formulär skickat",
"booking_paid": "Bokning betald", "booking_paid": "Bokning betald",
@ -456,6 +460,7 @@
"no_event_types_have_been_setup": "Den här användaren har inte skapat några händelsetyper ännu.", "no_event_types_have_been_setup": "Den här användaren har inte skapat några händelsetyper ännu.",
"edit_logo": "Ändra logotyp", "edit_logo": "Ändra logotyp",
"upload_a_logo": "Ladda upp en logotyp", "upload_a_logo": "Ladda upp en logotyp",
"upload_logo": "Ladda upp logotyp",
"remove_logo": "Ta bort logotyp", "remove_logo": "Ta bort logotyp",
"enable": "Aktivera", "enable": "Aktivera",
"code": "Kod", "code": "Kod",
@ -568,6 +573,7 @@
"your_team_name": "Ditt team-namn", "your_team_name": "Ditt team-namn",
"team_updated_successfully": "Teamet har uppdaterats", "team_updated_successfully": "Teamet har uppdaterats",
"your_team_updated_successfully": "Ditt team har uppdaterats.", "your_team_updated_successfully": "Ditt team har uppdaterats.",
"your_org_updated_successfully": "Din organisation har uppdaterats.",
"about": "Om", "about": "Om",
"team_description": "Några meningar om ditt team. Detta visas på ditt teams URL-sida.", "team_description": "Några meningar om ditt team. Detta visas på ditt teams URL-sida.",
"org_description": "Några meningar om din organisation. Detta kommer att visas på din organisations webbsida.", "org_description": "Några meningar om din organisation. Detta kommer att visas på din organisations webbsida.",
@ -599,6 +605,7 @@
"hide_book_a_team_member": "Dölj knappen Boka en teammedlem", "hide_book_a_team_member": "Dölj knappen Boka en teammedlem",
"hide_book_a_team_member_description": "Dölj knappen Boka en teammedlem från dina offentliga sidor.", "hide_book_a_team_member_description": "Dölj knappen Boka en teammedlem från dina offentliga sidor.",
"danger_zone": "Farozon", "danger_zone": "Farozon",
"account_deletion_cannot_be_undone": "Var försiktig. Borttagning av konto kan inte ångras.",
"back": "Tillbaka", "back": "Tillbaka",
"cancel": "Avbryt", "cancel": "Avbryt",
"cancel_all_remaining": "Avbryt alla återstående", "cancel_all_remaining": "Avbryt alla återstående",
@ -688,6 +695,7 @@
"people": "Personer", "people": "Personer",
"your_email": "Din e-postadress", "your_email": "Din e-postadress",
"change_avatar": "Ändra avatar", "change_avatar": "Ändra avatar",
"upload_avatar": "Ladda upp avatar",
"language": "Språk", "language": "Språk",
"timezone": "Tidszon", "timezone": "Tidszon",
"first_day_of_week": "Första dagen i veckan", "first_day_of_week": "Första dagen i veckan",
@ -778,6 +786,7 @@
"disable_guests": "Inaktivera gäster", "disable_guests": "Inaktivera gäster",
"disable_guests_description": "Inaktivera möjligheten att lägga till ytterligare gäster vid bokning.", "disable_guests_description": "Inaktivera möjligheten att lägga till ytterligare gäster vid bokning.",
"private_link": "Generera privat länk", "private_link": "Generera privat länk",
"enable_private_url": "Aktivera privat URL",
"private_link_label": "Privat länk", "private_link_label": "Privat länk",
"private_link_hint": "Din privata länk kommer att regenerera efter varje användning", "private_link_hint": "Din privata länk kommer att regenerera efter varje användning",
"copy_private_link": "Kopiera privat länk", "copy_private_link": "Kopiera privat länk",
@ -1213,6 +1222,7 @@
"organizer_name_variable": "Arrangörens namn", "organizer_name_variable": "Arrangörens namn",
"app_upgrade_description": "För att kunna använda den här funktionen måste du uppgradera till ett Pro-konto.", "app_upgrade_description": "För att kunna använda den här funktionen måste du uppgradera till ett Pro-konto.",
"invalid_number": "Ogiltigt telefonnummer", "invalid_number": "Ogiltigt telefonnummer",
"invalid_url_error_message": "Ogiltig URL för {{label}}. Exempel-URL: {{sampleUrl}}",
"navigate": "Navigera", "navigate": "Navigera",
"open": "Öppna", "open": "Öppna",
"close": "Stäng", "close": "Stäng",
@ -1276,6 +1286,7 @@
"personal_cal_url": "Min personliga {{appName}}-URL", "personal_cal_url": "Min personliga {{appName}}-URL",
"bio_hint": "Några meningar om dig själv. Detta kommer att visas på din personliga webbsida.", "bio_hint": "Några meningar om dig själv. Detta kommer att visas på din personliga webbsida.",
"user_has_no_bio": "Den här användaren har inte lagt till en biografi ännu.", "user_has_no_bio": "Den här användaren har inte lagt till en biografi ännu.",
"bio": "Bio",
"delete_account_modal_title": "Radera konto", "delete_account_modal_title": "Radera konto",
"confirm_delete_account_modal": "Är du säker på att du vill radera ditt {{appName}}-konto?", "confirm_delete_account_modal": "Är du säker på att du vill radera ditt {{appName}}-konto?",
"delete_my_account": "Radera mitt konto", "delete_my_account": "Radera mitt konto",
@ -1286,6 +1297,7 @@
"select_calendars": "Välj vilka kalendrar du vill kontrollera för konflikter för att förhindra dubbelbokningar.", "select_calendars": "Välj vilka kalendrar du vill kontrollera för konflikter för att förhindra dubbelbokningar.",
"check_for_conflicts": "Kontrollera om konflikter", "check_for_conflicts": "Kontrollera om konflikter",
"view_recordings": "Visa inspelningar", "view_recordings": "Visa inspelningar",
"check_for_recordings": "Sök efter inspelningar",
"adding_events_to": "Lägger till händelser till", "adding_events_to": "Lägger till händelser till",
"follow_system_preferences": "Följ systeminställningar", "follow_system_preferences": "Följ systeminställningar",
"custom_brand_colors": "Anpassade märkesfärger", "custom_brand_colors": "Anpassade märkesfärger",
@ -1530,6 +1542,7 @@
"problem_registering_domain": "Ett problem inträffade när underdomänen registrerades, försök igen eller kontakta en administratör", "problem_registering_domain": "Ett problem inträffade när underdomänen registrerades, försök igen eller kontakta en administratör",
"team_publish": "Publicera team", "team_publish": "Publicera team",
"number_text_notifications": "Telefonnummer (SMS-aviseringar)", "number_text_notifications": "Telefonnummer (SMS-aviseringar)",
"number_sms_notifications": "Telefonnummer (SMS-aviseringar)",
"attendee_email_variable": "Deltagarens e-postadress", "attendee_email_variable": "Deltagarens e-postadress",
"attendee_email_info": "Personens e-postadress för bokning", "attendee_email_info": "Personens e-postadress för bokning",
"kbar_search_placeholder": "Ange ett kommando eller sök ...", "kbar_search_placeholder": "Ange ett kommando eller sök ...",
@ -1594,6 +1607,7 @@
"options": "Alternativ", "options": "Alternativ",
"enter_option": "Ange alternativ {{index}}", "enter_option": "Ange alternativ {{index}}",
"add_an_option": "Lägg till ett alternativ", "add_an_option": "Lägg till ett alternativ",
"location_already_exists": "Platsen finns redan. Välj en ny plats",
"radio": "Menyknapp", "radio": "Menyknapp",
"google_meet_warning": "För att använda Google Meet måste du ställa in din målkalender till en Google Kalender", "google_meet_warning": "För att använda Google Meet måste du ställa in din målkalender till en Google Kalender",
"individual": "Individ", "individual": "Individ",
@ -1613,6 +1627,7 @@
"date_overrides_mark_all_day_unavailable_other": "Markera som otillgänglig på valda datum", "date_overrides_mark_all_day_unavailable_other": "Markera som otillgänglig på valda datum",
"date_overrides_add_btn": "Lägg till åsidosättning", "date_overrides_add_btn": "Lägg till åsidosättning",
"date_overrides_update_btn": "Uppdatera åsidosättning", "date_overrides_update_btn": "Uppdatera åsidosättning",
"date_successfully_added": "Åsidosättande av datum har lagts till",
"event_type_duplicate_copy_text": "{{slug}}-kopia", "event_type_duplicate_copy_text": "{{slug}}-kopia",
"set_as_default": "Ange som standard", "set_as_default": "Ange som standard",
"hide_eventtype_details": "Dölj information om händelse", "hide_eventtype_details": "Dölj information om händelse",
@ -1639,6 +1654,7 @@
"minimum_round_robin_hosts_count": "Antal värdar som krävs för att delta", "minimum_round_robin_hosts_count": "Antal värdar som krävs för att delta",
"hosts": "Värdar", "hosts": "Värdar",
"upgrade_to_enable_feature": "Du måste skapa ett team för att aktivera den här funktionen. Klicka för att skapa ett team.", "upgrade_to_enable_feature": "Du måste skapa ett team för att aktivera den här funktionen. Klicka för att skapa ett team.",
"orgs_upgrade_to_enable_feature": "Du behöver uppgradera till vår företagsplan för att aktivera den här funktionen.",
"new_attendee": "Ny deltagare", "new_attendee": "Ny deltagare",
"awaiting_approval": "Väntar på godkännande", "awaiting_approval": "Väntar på godkännande",
"requires_google_calendar": "Den här appen kräver en Google Kalender-anslutning", "requires_google_calendar": "Den här appen kräver en Google Kalender-anslutning",
@ -1743,6 +1759,7 @@
"show_on_booking_page": "Visa på bokningssidan", "show_on_booking_page": "Visa på bokningssidan",
"get_started_zapier_templates": "Kom igång med Zapier-mallar", "get_started_zapier_templates": "Kom igång med Zapier-mallar",
"team_is_unpublished": "{{team}} har avpublicerats", "team_is_unpublished": "{{team}} har avpublicerats",
"org_is_unpublished_description": "Den här organisationslänken är för närvarande inte tillgänglig. Kontakta organisationens ägare eller be denne att publicera den.",
"team_is_unpublished_description": "Den här {{entity}}-länken är för närvarande inte tillgänglig. Kontakta ägaren till {{entity}} eller be vederbörande att publicera den.", "team_is_unpublished_description": "Den här {{entity}}-länken är för närvarande inte tillgänglig. Kontakta ägaren till {{entity}} eller be vederbörande att publicera den.",
"team_member": "Teammedlem", "team_member": "Teammedlem",
"a_routing_form": "Ett omdirigeringsformulär", "a_routing_form": "Ett omdirigeringsformulär",
@ -1877,6 +1894,7 @@
"edit_invite_link": "Redigera länkinställningar", "edit_invite_link": "Redigera länkinställningar",
"invite_link_copied": "Inbjudningslänk kopierad", "invite_link_copied": "Inbjudningslänk kopierad",
"invite_link_deleted": "Inbjudningslänk borttagen", "invite_link_deleted": "Inbjudningslänk borttagen",
"api_key_deleted": "API nyckel borttagen",
"invite_link_updated": "Inställningar för inbjudningslänk har sparats", "invite_link_updated": "Inställningar för inbjudningslänk har sparats",
"link_expires_after": "Länkarna upphör att gälla efter ...", "link_expires_after": "Länkarna upphör att gälla efter ...",
"one_day": "1 dag", "one_day": "1 dag",
@ -2009,7 +2027,13 @@
"attendee_last_name_variable": "Deltagarens efternamn", "attendee_last_name_variable": "Deltagarens efternamn",
"attendee_first_name_info": "Förnamnet på personen som bokat", "attendee_first_name_info": "Förnamnet på personen som bokat",
"attendee_last_name_info": "Efternamnet på personen som bokat", "attendee_last_name_info": "Efternamnet på personen som bokat",
"your_monthly_digest": "Din månatliga sammanfattning",
"member_name": "Medlemsnamn",
"most_popular_events": "Mest populära händelser",
"summary_of_events_for_your_team_for_the_last_30_days": "Här är din sammanfattning av populära händelser för ditt team {{teamName}} de senaste 30 dagarna",
"me": "Jag", "me": "Jag",
"monthly_digest_email": "E-post med månadssammandrag",
"monthly_digest_email_for_teams": "E-post med månadssammandrag för teams",
"verify_team_tooltip": "Verifiera ditt team för att aktivera att skicka meddelanden till deltagare", "verify_team_tooltip": "Verifiera ditt team för att aktivera att skicka meddelanden till deltagare",
"member_removed": "Medlem borttagen", "member_removed": "Medlem borttagen",
"my_availability": "Min tillgänglighet", "my_availability": "Min tillgänglighet",
@ -2039,12 +2063,40 @@
"team_no_event_types": "Detta team har inga händelsetyper", "team_no_event_types": "Detta team har inga händelsetyper",
"seat_options_doesnt_multiple_durations": "Platsalternativet stöder inte flera varaktigheter", "seat_options_doesnt_multiple_durations": "Platsalternativet stöder inte flera varaktigheter",
"include_calendar_event": "Inkludera kalenderhändelse", "include_calendar_event": "Inkludera kalenderhändelse",
"oAuth": "OAuth",
"recently_added": "Nyligen tillagda", "recently_added": "Nyligen tillagda",
"no_members_found": "Inga medlemmar hittades", "no_members_found": "Inga medlemmar hittades",
"event_setup_length_error": "Konfigurering av evenemang: Längden måste vara minst 1 minut.", "event_setup_length_error": "Konfigurering av evenemang: Längden måste vara minst 1 minut.",
"availability_schedules": "Scheman för tillgänglighet", "availability_schedules": "Scheman för tillgänglighet",
"unauthorized": "Obehörig",
"access_cal_account": "{{clientName}} vill ha tillgång till ditt {{appName}}-konto",
"select_account_team": "Välj konto eller team",
"allow_client_to": "Detta tillåter {{clientName}} att",
"associate_with_cal_account": "Koppla dig till dina personuppgifter från {{clientName}}",
"see_personal_info": "Se dina personuppgifter, inklusive personuppgifter som du har gjort tillgängliga för allmänheten",
"see_primary_email_address": "Se din primära e-postadress",
"connect_installed_apps": "Ansluta till dina installerade appar",
"access_event_type": "Läsa, redigera, ta bort dina händelsetyper",
"access_availability": "Läsa, redigera, ta bort din tillgänglighet",
"access_bookings": "Läsa, redigera, ta bort dina bokningar",
"allow_client_to_do": "Tillåt {{clientName}} att göra detta?",
"oauth_access_information": "Genom att klicka på tillåt tillåter du denna app att använda dina uppgifter i enlighet med deras användarvillkor och integritetspolicy. Du kan ta bort åtkomst i {{appName}} App Store.",
"allow": "Tillåt",
"view_only_edit_availability_not_onboarded": "Den här användaren har inte slutfört introduktionen. Du kommer inte att kunna ange deras tillgänglighet förrän de har slutfört introduktionen.", "view_only_edit_availability_not_onboarded": "Den här användaren har inte slutfört introduktionen. Du kommer inte att kunna ange deras tillgänglighet förrän de har slutfört introduktionen.",
"view_only_edit_availability": "Du tittar på användarens tillgänglighet. Du kan bara redigera din egen tillgänglighet.", "view_only_edit_availability": "Du tittar på användarens tillgänglighet. Du kan bara redigera din egen tillgänglighet.",
"you_can_override_calendar_in_advanced_tab": "Du kan åsidosätta det här för varje enskild händelse i Avancerade inställningar för varje händelsetyp.",
"edit_users_availability": "Redigera användarens tillgänglighet: {{username}}", "edit_users_availability": "Redigera användarens tillgänglighet: {{username}}",
"resend_invitation": "Skicka inbjudan igen",
"invitation_resent": "Inbjudan skickades på nytt.",
"add_client": "Lägg till kund",
"copy_client_secret_info": "När du har kopierat hemligheten kommer du inte att kunna se den längre",
"add_new_client": "Lägg till ny kund",
"this_app_is_not_setup_already": "Den här appen har inte installerats än",
"as_csv": "som CSV",
"overlay_my_calendar": "Lägg över min kalender",
"overlay_my_calendar_toc": "Genom att ansluta till din kalender godkänner du vår sekretesspolicy och våra användarvillkor. Du kan när som helst återkalla åtkomsten.",
"view_overlay_calendar_events": "Se dina kalenderhändelser för att förhindra krockade bokningar.",
"lock_timezone_toggle_on_booking_page": "Lås tidszon på bokningssidan",
"description_lock_timezone_toggle_on_booking_page": "För att låsa tidszonen på bokningssidan, användbart för personliga händelser.",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
} }

View File

@ -2032,6 +2032,8 @@
"most_popular_events": "Найпопулярніші заходи", "most_popular_events": "Найпопулярніші заходи",
"summary_of_events_for_your_team_for_the_last_30_days": "Ось зведена інформація про популярні заходи для вашої команди «{{teamName}}» за останні 30 днів", "summary_of_events_for_your_team_for_the_last_30_days": "Ось зведена інформація про популярні заходи для вашої команди «{{teamName}}» за останні 30 днів",
"me": "Я", "me": "Я",
"monthly_digest_email": "Ел. лист із місячним дайджестом",
"monthly_digest_email_for_teams": "Ел. лист із місячним дайджестом для команд",
"verify_team_tooltip": "Верифікуйте свою команду, щоб увімкнути надсилання повідомлень відвідувачам", "verify_team_tooltip": "Верифікуйте свою команду, щоб увімкнути надсилання повідомлень відвідувачам",
"member_removed": "Учасника вилучено", "member_removed": "Учасника вилучено",
"my_availability": "Моя доступність", "my_availability": "Моя доступність",
@ -2061,12 +2063,40 @@
"team_no_event_types": "У цієї команди немає типів заходів", "team_no_event_types": "У цієї команди немає типів заходів",
"seat_options_doesnt_multiple_durations": "Параметр «Місця» не підтримує декілька варіантів тривалості", "seat_options_doesnt_multiple_durations": "Параметр «Місця» не підтримує декілька варіантів тривалості",
"include_calendar_event": "Включити календарний захід", "include_calendar_event": "Включити календарний захід",
"oAuth": "OAuth",
"recently_added": "Нещодавно додані", "recently_added": "Нещодавно додані",
"no_members_found": "Учасників не знайдено", "no_members_found": "Учасників не знайдено",
"event_setup_length_error": "Налаштування заходу: мінімальна тривалість — 1 хвилина.", "event_setup_length_error": "Налаштування заходу: мінімальна тривалість — 1 хвилина.",
"availability_schedules": "Розклад доступності", "availability_schedules": "Розклад доступності",
"unauthorized": "Неавторизовано",
"access_cal_account": "{{clientName}} хоче отримати доступ до вашого облікового запису {{appName}}",
"select_account_team": "Виберіть обліковий запис або команду",
"allow_client_to": "Це дозволить клієнту {{clientName}} робити таке:",
"associate_with_cal_account": "Пов’язувати вас із персональною інформацією, отриманою від {{clientName}}.",
"see_personal_info": "Переглядати особисту інформацію, включно з інформацією, яку ви зробили загальнодоступною.",
"see_primary_email_address": "Встановити основну електронну адресу.",
"connect_installed_apps": "Під’єднатися до встановлених додатків.",
"access_event_type": "Читати, змінювати, видаляти типи заходів.",
"access_availability": "Читати, змінювати, видаляти інформацію про доступність.",
"access_bookings": "Читати, змінювати, видаляти ваші бронювання.",
"allow_client_to_do": "Дозволити {{clientName}} це робити?",
"oauth_access_information": "Натискаючи кнопку «Дозволити», ви дозволяєте цьому застосунку використовувати вашу інформацію відповідно до його умов використання і політики конфіденційності. Ви можете видалити доступ в магазині застосунків {{appName}}.",
"allow": "Дозволити",
"view_only_edit_availability_not_onboarded": "Цей користувач не завершив ознайомлення. Доки він не зробить цього, ви не зможете налаштувати доступність для нього.", "view_only_edit_availability_not_onboarded": "Цей користувач не завершив ознайомлення. Доки він не зробить цього, ви не зможете налаштувати доступність для нього.",
"view_only_edit_availability": "Ви переглядаєте доступність цього користувача. Ви можете редагувати лише свою доступність.", "view_only_edit_availability": "Ви переглядаєте доступність цього користувача. Ви можете редагувати лише свою доступність.",
"you_can_override_calendar_in_advanced_tab": "Ви можете перевизначити це для кожного заходу в додаткових параметрах кожного типу заходу.",
"edit_users_availability": "Редагувати доступність користувача: {{username}}", "edit_users_availability": "Редагувати доступність користувача: {{username}}",
"resend_invitation": "Повторно надіслати запрошення",
"invitation_resent": "Запрошення надіслано повторно.",
"add_client": "Додати клієнта",
"copy_client_secret_info": "Скопіювавши секрет, ви більше не зможете його переглянути",
"add_new_client": "Додати нового клієнта",
"this_app_is_not_setup_already": "Цей застосунок ще не налаштовано",
"as_csv": "як CSV",
"overlay_my_calendar": "Накласти мій календар",
"overlay_my_calendar_toc": "Під’єднуючи свій календар, ви приймаєте нашу політику конфіденційності й правила використання. Ви можете відкликати доступ будь-коли.",
"view_overlay_calendar_events": "Переглядайте заходи у своєму календарі, щоб уникнути накладання бронювань.",
"lock_timezone_toggle_on_booking_page": "Заблокуйте часовий пояс на сторінці бронювання",
"description_lock_timezone_toggle_on_booking_page": "Для блокування часового поясу на сторінці бронювання (корисне для окремих заходів)",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
} }

View File

@ -4,6 +4,7 @@ import dayjs from "@calcom/dayjs";
import { Calendar } from "@calcom/features/calendars/weeklyview"; import { Calendar } from "@calcom/features/calendars/weeklyview";
import type { CalendarEvent } from "@calcom/features/calendars/weeklyview/types/events"; import type { CalendarEvent } from "@calcom/features/calendars/weeklyview/types/events";
import type { CalendarAvailableTimeslots } from "@calcom/features/calendars/weeklyview/types/state"; import type { CalendarAvailableTimeslots } from "@calcom/features/calendars/weeklyview/types/state";
import { localStorage } from "@calcom/lib/webstorage";
import { useBookerStore } from "../store"; import { useBookerStore } from "../store";
import { useEvent, useScheduleForEvent } from "../utils/event"; import { useEvent, useScheduleForEvent } from "../utils/event";

View File

@ -8,6 +8,7 @@ import { useIsEmbed } from "@calcom/embed-core/embed-iframe";
import { useTimePreferences } from "@calcom/features/bookings/lib"; import { useTimePreferences } from "@calcom/features/bookings/lib";
import { classNames } from "@calcom/lib"; import { classNames } from "@calcom/lib";
import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useLocale } from "@calcom/lib/hooks/useLocale";
import { localStorage } from "@calcom/lib/webstorage";
import { trpc } from "@calcom/trpc/react"; import { trpc } from "@calcom/trpc/react";
import { Button, Switch } from "@calcom/ui"; import { Button, Switch } from "@calcom/ui";
import { Settings } from "@calcom/ui/components/icon"; import { Settings } from "@calcom/ui/components/icon";

View File

@ -1,5 +1,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { localStorage } from "@calcom/lib/webstorage";
export interface HasExternalId { export interface HasExternalId {
externalId: string; externalId: string;
} }

View File

@ -8,6 +8,7 @@ import dayjs from "@calcom/dayjs";
import type { Slots } from "@calcom/features/schedules"; import type { Slots } from "@calcom/features/schedules";
import { classNames } from "@calcom/lib"; import { classNames } from "@calcom/lib";
import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useLocale } from "@calcom/lib/hooks/useLocale";
import { localStorage } from "@calcom/lib/webstorage";
import { Button, SkeletonText } from "@calcom/ui"; import { Button, SkeletonText } from "@calcom/ui";
import { useBookerStore } from "../Booker/store"; import { useBookerStore } from "../Booker/store";

View File

@ -273,7 +273,7 @@ export const KBarTrigger = () => {
<button <button
color="minimal" color="minimal"
onClick={query.toggle} onClick={query.toggle}
className="text-default hover:bg-subtle lg:hover:bg-emphasis lg:hover:text-emphasis group flex rounded-md px-3 py-2 text-sm font-medium lg:px-2"> className="text-default hover:bg-subtle lg:hover:bg-emphasis lg:hover:text-emphasis group flex rounded-md px-3 py-2 text-sm font-medium transition lg:px-2">
<Search className="h-4 w-4 flex-shrink-0 text-inherit" /> <Search className="h-4 w-4 flex-shrink-0 text-inherit" />
</button> </button>
</Tooltip> </Tooltip>

View File

@ -41,7 +41,7 @@ export function ScheduleListItem({
return ( return (
<li key={schedule.id}> <li key={schedule.id}>
<div className="hover:bg-muted flex items-center justify-between py-5 ltr:pl-4 rtl:pr-4 sm:ltr:pl-0 sm:rtl:pr-0"> <div className="hover:bg-muted flex items-center justify-between py-5 transition ltr:pl-4 rtl:pr-4 sm:ltr:pl-0 sm:rtl:pr-0">
<div className="group flex w-full items-center justify-between sm:px-6"> <div className="group flex w-full items-center justify-between sm:px-6">
<Link <Link
href={`/availability/${schedule.id}`} href={`/availability/${schedule.id}`}

View File

@ -362,7 +362,7 @@ function UserDropdown({ small }: UserDropdownProps) {
<DropdownMenuTrigger asChild onClick={() => setMenuOpen((menuOpen) => !menuOpen)}> <DropdownMenuTrigger asChild onClick={() => setMenuOpen((menuOpen) => !menuOpen)}>
<button <button
className={classNames( className={classNames(
"hover:bg-emphasis group mx-0 flex cursor-pointer appearance-none items-center rounded-full text-left outline-none focus:outline-none focus:ring-0 md:rounded-none lg:rounded", "hover:bg-emphasis group mx-0 flex cursor-pointer appearance-none items-center rounded-full text-left outline-none transition focus:outline-none focus:ring-0 md:rounded-none lg:rounded",
small ? "p-2" : "px-2 py-1.5" small ? "p-2" : "px-2 py-1.5"
)}> )}>
<span <span
@ -658,7 +658,7 @@ const NavigationItem: React.FC<{
href={item.href} href={item.href}
aria-label={t(item.name)} aria-label={t(item.name)}
className={classNames( className={classNames(
"text-default group flex items-center rounded-md px-2 py-1.5 text-sm font-medium", "text-default group flex items-center rounded-md px-2 py-1.5 text-sm font-medium transition",
item.child ? `[&[aria-current='page']]:bg-transparent` : `[&[aria-current='page']]:bg-emphasis`, item.child ? `[&[aria-current='page']]:bg-transparent` : `[&[aria-current='page']]:bg-emphasis`,
isChild isChild
? `[&[aria-current='page']]:text-emphasis [&[aria-current='page']]:bg-emphasis hidden h-8 pl-16 lg:flex lg:pl-11 ${ ? `[&[aria-current='page']]:text-emphasis [&[aria-current='page']]:bg-emphasis hidden h-8 pl-16 lg:flex lg:pl-11 ${
@ -761,7 +761,7 @@ const MobileNavigationMoreItem: React.FC<{
return ( return (
<li className="border-subtle border-b last:border-b-0" key={item.name}> <li className="border-subtle border-b last:border-b-0" key={item.name}>
<Link href={item.href} className="hover:bg-subtle flex items-center justify-between p-5"> <Link href={item.href} className="hover:bg-subtle flex items-center justify-between p-5 transition">
<span className="text-default flex items-center font-semibold "> <span className="text-default flex items-center font-semibold ">
{item.icon && <item.icon className="h-5 w-5 flex-shrink-0 ltr:mr-3 rtl:ml-3" aria-hidden="true" />} {item.icon && <item.icon className="h-5 w-5 flex-shrink-0 ltr:mr-3 rtl:ml-3" aria-hidden="true" />}
{isLocaleReady ? t(item.name) : <SkeletonText />} {isLocaleReady ? t(item.name) : <SkeletonText />}
@ -897,7 +897,7 @@ function SideBar({ bannersHeight, user }: SideBarProps) {
target={item.target} target={item.target}
className={classNames( className={classNames(
"text-left", "text-left",
"[&[aria-current='page']]:bg-emphasis text-default justify-right group flex items-center rounded-md px-2 py-1.5 text-sm font-medium", "[&[aria-current='page']]:bg-emphasis text-default justify-right group flex items-center rounded-md px-2 py-1.5 text-sm font-medium transition",
"[&[aria-current='page']]:text-emphasis mt-0.5 w-full text-sm", "[&[aria-current='page']]:text-emphasis mt-0.5 w-full text-sm",
isLocaleReady ? "hover:bg-emphasis hover:text-emphasis" : "", isLocaleReady ? "hover:bg-emphasis hover:text-emphasis" : "",
index === 0 && "mt-3" index === 0 && "mt-3"

View File

@ -1,5 +1,5 @@
/** /**
* Provides a wrapper around localStorage to avoid errors in case of restricted storage access. * Provides a wrapper around localStorage(and sessionStorage(TODO when needed)) to avoid errors in case of restricted storage access.
* *
* TODO: In case of an embed if localStorage is not available(third party), use localStorage of parent(first party) that contains the iframe. * TODO: In case of an embed if localStorage is not available(third party), use localStorage of parent(first party) that contains the iframe.
*/ */
@ -25,4 +25,12 @@ export const localStorage = {
return; return;
} }
}, },
removeItem: (key: string) => {
try {
// eslint-disable-next-line @calcom/eslint/avoid-web-storage
window.localStorage.removeItem(key);
} catch (e) {
return;
}
},
}; };

View File

@ -13,7 +13,7 @@ import { SkeletonText } from "../skeleton";
const SliderButton: FC<ComponentProps<"button">> = (props) => { const SliderButton: FC<ComponentProps<"button">> = (props) => {
const { children, ...rest } = props; const { children, ...rest } = props;
return ( return (
<button className="hover:bg-subtle text-default rounded p-2.5" {...rest}> <button className="hover:bg-subtle text-default rounded p-2.5 transition" {...rest}>
{children} {children}
</button> </button>
); );

View File

@ -38,13 +38,13 @@ export type ButtonProps = ButtonBaseProps &
); );
export const buttonClasses = cva( export const buttonClasses = cva(
"whitespace-nowrap inline-flex items-center text-sm font-medium relative rounded-md transition-colors disabled:cursor-not-allowed", "whitespace-nowrap inline-flex items-center text-sm font-medium relative rounded-md transition disabled:cursor-not-allowed",
{ {
variants: { variants: {
variant: { variant: {
button: "", button: "",
icon: "flex justify-center", icon: "flex justify-center",
fab: "rounded-full justify-center md:rounded-md radix-state-open:rotate-45 md:radix-state-open:rotate-0 transition-transform radix-state-open:shadown-none radix-state-open:ring-0 !shadow-none", fab: "rounded-full justify-center md:rounded-md radix-state-open:rotate-45 md:radix-state-open:rotate-0 radix-state-open:shadown-none radix-state-open:ring-0 !shadow-none",
}, },
color: { color: {
primary: primary:

View File

@ -137,7 +137,7 @@ export const DropdownItem = (props: DropdownItemProps) => {
<ButtonOrLink <ButtonOrLink
{...rest} {...rest}
className={classNames( className={classNames(
"hover:text-emphasis text-default inline-flex w-full items-center space-x-2 px-3 py-2 disabled:cursor-not-allowed", "hover:text-emphasis text-default inline-flex w-full items-center space-x-2 px-3 py-2 transition disabled:cursor-not-allowed",
color === "destructive" color === "destructive"
? "hover:bg-error hover:text-red-700 dark:hover:text-red-100" ? "hover:bg-error hover:text-red-700 dark:hover:text-red-100"
: "hover:bg-subtle", : "hover:bg-subtle",

View File

@ -99,7 +99,7 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(function
ref={ref} ref={ref}
{...props} {...props}
className={classNames( className={classNames(
"hover:border-emphasis border-default bg-default placeholder:text-muted text-emphasis disabled:hover:border-default disabled:bg-subtle focus:ring-brand-default mb-2 block w-full rounded-md border px-3 py-2 text-sm focus:border-neutral-300 focus:outline-none focus:ring-2 focus:ring-offset-1 disabled:cursor-not-allowed", "hover:border-emphasis border-default bg-default placeholder:text-muted text-emphasis disabled:hover:border-default disabled:bg-subtle focus:ring-brand-default mb-2 block w-full rounded-md border px-3 py-2 text-sm transition focus:border-neutral-300 focus:outline-none focus:ring-2 focus:ring-offset-1 disabled:cursor-not-allowed",
props.className props.className
)} )}
/> />

View File

@ -18,7 +18,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
{...props} {...props}
ref={ref} ref={ref}
className={classNames( className={classNames(
"hover:border-emphasis dark:focus:border-emphasis border-default bg-default placeholder:text-muted text-emphasis disabled:hover:border-default disabled:bg-subtle focus:ring-brand-default mb-2 block h-9 rounded-md border px-3 py-2 text-sm leading-4 focus:border-neutral-300 focus:outline-none focus:ring-2 disabled:cursor-not-allowed", "hover:border-emphasis dark:focus:border-emphasis border-default bg-default placeholder:text-muted text-emphasis disabled:hover:border-default disabled:bg-subtle focus:ring-brand-default mb-2 block h-9 rounded-md border px-3 py-2 text-sm leading-4 transition focus:border-neutral-300 focus:outline-none focus:ring-2 disabled:cursor-not-allowed",
isFullWidth && "w-full", isFullWidth && "w-full",
props.className props.className
)} )}

View File

@ -39,7 +39,7 @@ const HorizontalTabItem = function ({
scroll={linkScroll} scroll={linkScroll}
className={classNames( className={classNames(
isCurrent ? "bg-emphasis text-emphasis" : "hover:bg-subtle hover:text-emphasis text-default", isCurrent ? "bg-emphasis text-emphasis" : "hover:bg-subtle hover:text-emphasis text-default",
"inline-flex items-center justify-center whitespace-nowrap rounded-[6px] p-2 text-sm font-medium leading-4 md:mb-0", "inline-flex items-center justify-center whitespace-nowrap rounded-[6px] p-2 text-sm font-medium leading-4 transition md:mb-0",
props.disabled && "pointer-events-none !opacity-30", props.disabled && "pointer-events-none !opacity-30",
props.className props.className
)} )}

View File

@ -53,7 +53,7 @@ const VerticalTabItem = ({
target={props.isExternalLink ? "_blank" : "_self"} target={props.isExternalLink ? "_blank" : "_self"}
className={classNames( className={classNames(
props.textClassNames || "text-default text-sm font-medium leading-none", props.textClassNames || "text-default text-sm font-medium leading-none",
"min-h-8 hover:bg-subtle [&[aria-current='page']]:bg-emphasis [&[aria-current='page']]:text-emphasis group-hover:text-default group flex w-64 flex-row items-center rounded-md px-3 py-[10px]", "min-h-8 hover:bg-subtle [&[aria-current='page']]:bg-emphasis [&[aria-current='page']]:text-emphasis group-hover:text-default group flex w-64 flex-row items-center rounded-md px-3 py-[10px] transition",
props.disabled && "pointer-events-none !opacity-30", props.disabled && "pointer-events-none !opacity-30",
(isChild || !props.icon) && "ml-7 w-auto ltr:mr-5 rtl:ml-5", (isChild || !props.icon) && "ml-7 w-auto ltr:mr-5 rtl:ml-5",
!info ? "h-6" : "h-14", !info ? "h-6" : "h-14",