mirror of
https://github.com/plankanban/planka.git
synced 2026-08-28 10:00:39 +08:00
feat: Add Pro features discovery banner
Adds a dismissible banner in the topbar that informs users about PLANKA Pro features. - Dismissible per-user (stored in localStorage) - Reappears after 30 days - Rotates between main message and 3 feature highlights - Links to planka.app/pro (with ref parameter for anonymous source attribution)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2024 PLANKA Software GmbH
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,7 @@ import { useSelector } from 'react-redux';
|
||||
|
||||
import selectors from '../../../selectors';
|
||||
import Header from '../Header';
|
||||
import PromoBanner from '../PromoBanner/PromoBanner';
|
||||
import Favorites from '../Favorites';
|
||||
import HomeActions from '../HomeActions';
|
||||
import Project from '../../projects/Project';
|
||||
@@ -22,6 +23,7 @@ const Fixed = React.memo(() => {
|
||||
return (
|
||||
<div className={styles.wrapper}>
|
||||
<Header />
|
||||
<PromoBanner />
|
||||
<Favorites />
|
||||
{projectId === undefined && <HomeActions />}
|
||||
{projectId && <Project />}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
/*!
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import selectors from '../../../selectors';
|
||||
|
||||
import styles from './PromoBanner.module.scss';
|
||||
|
||||
const PRO_URL = 'https://planka.app/pro?ref=app-banner';
|
||||
const DISMISS_DURATION_MS = 30 * 24 * 60 * 60 * 1000;
|
||||
const CYCLE_INTERVAL_MS = 8000;
|
||||
const CSS_VAR = '--promo-banner-height';
|
||||
|
||||
const FEATURES = ['proFeatureCalendar', 'proFeatureRecurringCards', 'proFeatureGuestRoles'];
|
||||
|
||||
// Alternates: main, sub1, main, sub2, main, sub3
|
||||
const TEXTS = [
|
||||
'discoverPlankaPro',
|
||||
FEATURES[0],
|
||||
'discoverPlankaPro',
|
||||
FEATURES[1],
|
||||
'discoverPlankaPro',
|
||||
FEATURES[2],
|
||||
];
|
||||
|
||||
function getDismissKey(userId) {
|
||||
return `planka_proBannerDismissed_${userId}`;
|
||||
}
|
||||
|
||||
function isBannerDismissed(userId) {
|
||||
const stored = localStorage.getItem(getDismissKey(userId));
|
||||
if (!stored) return false;
|
||||
return Date.now() - Date.parse(stored) < DISMISS_DURATION_MS;
|
||||
}
|
||||
|
||||
const PromoBanner = React.memo(() => {
|
||||
const userId = useSelector(selectors.selectCurrentUserId);
|
||||
|
||||
const [dismissed, setDismissed] = useState(() => isBannerDismissed(userId));
|
||||
const [textIndex, setTextIndex] = useState(0);
|
||||
const [visible, setVisible] = useState(true);
|
||||
|
||||
const wrapperRef = useRef(null);
|
||||
const [t] = useTranslation();
|
||||
|
||||
useEffect(() => {
|
||||
if (dismissed) {
|
||||
document.documentElement.style.removeProperty(CSS_VAR);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const height = wrapperRef.current ? wrapperRef.current.offsetHeight : 0;
|
||||
document.documentElement.style.setProperty(CSS_VAR, `${height}px`);
|
||||
|
||||
return () => document.documentElement.style.removeProperty(CSS_VAR);
|
||||
}, [dismissed]);
|
||||
|
||||
useEffect(() => {
|
||||
if (dismissed) return undefined;
|
||||
|
||||
const interval = setInterval(() => {
|
||||
setVisible(false);
|
||||
setTimeout(() => {
|
||||
setTextIndex((i) => (i + 1) % TEXTS.length);
|
||||
setVisible(true);
|
||||
}, 400);
|
||||
}, CYCLE_INTERVAL_MS);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [dismissed]);
|
||||
|
||||
const handleDismiss = useCallback(
|
||||
(e) => {
|
||||
e.preventDefault();
|
||||
localStorage.setItem(getDismissKey(userId), new Date().toISOString());
|
||||
setDismissed(true);
|
||||
},
|
||||
[userId],
|
||||
);
|
||||
|
||||
if (dismissed) return null;
|
||||
|
||||
return (
|
||||
<div ref={wrapperRef} className={styles.wrapper}>
|
||||
<a
|
||||
href={PRO_URL}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className={`${styles.textLink} ${visible ? styles.textVisible : styles.textHidden}`}
|
||||
>
|
||||
{t(`common.${TEXTS[textIndex]}`)}
|
||||
<span className={styles.externalIcon}>↗</span>
|
||||
</a>
|
||||
<button
|
||||
type="button"
|
||||
title={t('common.dismissProBannerFor30Days')}
|
||||
className={styles.closeButton}
|
||||
onClick={handleDismiss}
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
});
|
||||
|
||||
export default PromoBanner;
|
||||
@@ -0,0 +1,60 @@
|
||||
/*!
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
:global(#app) {
|
||||
.wrapper {
|
||||
align-items: center;
|
||||
background: rgba(0, 0, 0, 0.18);
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
justify-content: center;
|
||||
padding: 5px 16px;
|
||||
}
|
||||
|
||||
.textLink {
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
flex: 1 1 auto;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: #bdff22;
|
||||
}
|
||||
}
|
||||
|
||||
.externalIcon {
|
||||
font-size: 11px;
|
||||
margin-left: 4px;
|
||||
opacity: 0.7;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
.textVisible {
|
||||
opacity: 1;
|
||||
transition: opacity 0.4s ease;
|
||||
}
|
||||
|
||||
.textHidden {
|
||||
opacity: 0;
|
||||
transition: opacity 0.4s ease;
|
||||
}
|
||||
|
||||
.closeButton {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
cursor: pointer;
|
||||
flex: 0 0 auto;
|
||||
font-size: 18px;
|
||||
line-height: 1;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.closeButton:hover {
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2024 PLANKA Software GmbH
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
@@ -37,15 +37,15 @@
|
||||
|
||||
.wrapper {
|
||||
height: 100%;
|
||||
margin-top: 116px;
|
||||
margin-top: calc(116px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
|
||||
.wrapperBoard {
|
||||
margin-top: 174px;
|
||||
margin-top: calc(174px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
|
||||
.wrapperBoardWithFavorites {
|
||||
margin-top: 264px;
|
||||
margin-top: calc(264px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
|
||||
.wrapperFlex {
|
||||
@@ -57,11 +57,11 @@
|
||||
}
|
||||
|
||||
.wrapperProject {
|
||||
margin-top: 98px;
|
||||
margin-top: calc(98px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
|
||||
.wrapperProjectWithFavorites {
|
||||
margin-top: 188px;
|
||||
margin-top: calc(188px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
|
||||
.wrapperTransitioning {
|
||||
@@ -73,6 +73,6 @@
|
||||
}
|
||||
|
||||
.wrapperWithFavorites {
|
||||
margin-top: 206px;
|
||||
margin-top: calc(206px + var(--promo-banner-height, 0px));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2024 PLANKA Software GmbH
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
@@ -104,6 +104,17 @@ const UserActionsStep = React.memo(({ onClose }) => {
|
||||
context: 'title',
|
||||
})}
|
||||
</Menu.Item>
|
||||
<Menu.Item
|
||||
href="https://planka.app/pro?ref=app-menu"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className={styles.proMenuItem}
|
||||
>
|
||||
<Icon name="gem" className={styles.proMenuItemIcon} />
|
||||
{withAdministration
|
||||
? t('common.upgradeTeamToPro', { context: 'title' })
|
||||
: t('common.discoverPlankaPro', { context: 'title' })}
|
||||
</Menu.Item>
|
||||
<hr className={styles.divider} />
|
||||
<Menu.Item
|
||||
{...logoutMenuItemProps} // eslint-disable-line react/jsx-props-no-spreading
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2024 PLANKA Software GmbH
|
||||
* Copyright (c) 2026 PLANKA Software GmbH
|
||||
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
@@ -25,4 +25,14 @@
|
||||
float: left;
|
||||
margin: 0 0.5em 0 0;
|
||||
}
|
||||
|
||||
.proMenuItem {
|
||||
margin: 0;
|
||||
padding-left: 14px;
|
||||
}
|
||||
|
||||
.proMenuItemIcon {
|
||||
float: left;
|
||||
margin: 0 0.5em 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,6 +138,13 @@ export default {
|
||||
customFieldGroups_title: 'مجموعات الحقول المخصصة',
|
||||
customField_title: 'الحقل المخصص',
|
||||
customFields_title: 'الحقول المخصصة',
|
||||
discoverPlankaPro: '✨ المزيد من الميزات لألواحك: اكتشف PLANKA Pro',
|
||||
discoverPlankaPro_title: 'اكتشف PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'ترقية الفريق إلى Pro',
|
||||
proFeatureCalendar: '✨ عرض التقويم للوحاتك',
|
||||
proFeatureRecurringCards: '✨ البطاقات المتكررة والأتمتة',
|
||||
proFeatureGuestRoles: '✨ أدوار الضيف والتعاون الخارجي',
|
||||
dismissProBannerFor30Days: 'إغلاق لمدة 30 يومًا',
|
||||
customerPanel_title: 'لوحة العملاء',
|
||||
dangerZone_title: 'منطقة الخطر',
|
||||
date: 'تاريخ',
|
||||
|
||||
@@ -149,6 +149,13 @@ export default {
|
||||
customFieldGroups_title: 'Групи персонализирани полета',
|
||||
customField_title: 'Персонализирано поле',
|
||||
customFields_title: 'Персонализирани полета',
|
||||
discoverPlankaPro: '✨ Повече функции за вашите дъски: Открийте PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Открийте PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Надградете екипа до Pro',
|
||||
proFeatureCalendar: '✨ Изглед Календар за вашите дъски',
|
||||
proFeatureRecurringCards: '✨ Повтарящи се карти и автоматизация',
|
||||
proFeatureGuestRoles: '✨ Роли за гости и външно сътрудничество',
|
||||
dismissProBannerFor30Days: 'Скрий за 30 дни',
|
||||
customerPanel_title: 'Панел на клиента',
|
||||
dangerZone_title: 'Опасна зона',
|
||||
date: 'Дата',
|
||||
|
||||
@@ -148,6 +148,13 @@ export default {
|
||||
customFieldGroups_title: 'Grups de camps personalitzats',
|
||||
customField_title: 'Camp personalitzat',
|
||||
customFields_title: 'Camps personalitzats',
|
||||
discoverPlankaPro: '✨ Més funcions per als vostres taulers: Descobriu PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Descobriu PLANKA Pro',
|
||||
upgradeTeamToPro_title: "Actualitzeu l'equip a Pro",
|
||||
proFeatureCalendar: '✨ Vista de calendari per als vostres taulers',
|
||||
proFeatureRecurringCards: '✨ Targetes recurrents i automatització',
|
||||
proFeatureGuestRoles: '✨ Rols de convidat i col·laboració externa',
|
||||
dismissProBannerFor30Days: 'Tanca durant 30 dies',
|
||||
customerPanel_title: 'Panell del client',
|
||||
dangerZone_title: 'Zona de perill',
|
||||
date: 'Data',
|
||||
|
||||
@@ -140,6 +140,13 @@ export default {
|
||||
customFieldGroups_title: 'Skupina vlastních polí',
|
||||
customField_title: 'Vlastní pole',
|
||||
customFields_title: 'Vlastní pole',
|
||||
discoverPlankaPro: '✨ Více funkcí pro vaše tabule: Objevte PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Objevte PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Upgradovat tým na Pro',
|
||||
proFeatureCalendar: '✨ Zobrazení kalendáře pro vaše tabule',
|
||||
proFeatureRecurringCards: '✨ Opakující se karty a automatizace',
|
||||
proFeatureGuestRoles: '✨ Role hosta a externí spolupráce',
|
||||
dismissProBannerFor30Days: 'Zavřít na 30 dní',
|
||||
customerPanel_title: 'Panel zákazníka',
|
||||
dangerZone_title: 'Nebezpečná zóna',
|
||||
date: 'Datum',
|
||||
|
||||
@@ -144,6 +144,13 @@ export default {
|
||||
customFieldGroups_title: 'Brugerdefinerede feltgrupper',
|
||||
customField_title: 'Brugerdefineret felt',
|
||||
customFields_title: 'Brugerdefinerede felter',
|
||||
discoverPlankaPro: '✨ Flere funktioner til dine boards: Opdag PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Opdag PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Opgrader team til Pro',
|
||||
proFeatureCalendar: '✨ Kalendervisning til dine boards',
|
||||
proFeatureRecurringCards: '✨ Tilbagevendende kort og automatisering',
|
||||
proFeatureGuestRoles: '✨ Gæsteroller og eksternt samarbejde',
|
||||
dismissProBannerFor30Days: 'Luk i 30 dage',
|
||||
customerPanel_title: 'Kundepanel',
|
||||
dangerZone_title: 'Farezone',
|
||||
date: 'Dato',
|
||||
|
||||
@@ -161,6 +161,13 @@ export default {
|
||||
customFields_title: 'Feldgruppen',
|
||||
customerPanel_title: 'Kundenpanel',
|
||||
dangerZone_title: 'Gefahrenbereich',
|
||||
discoverPlankaPro: '✨ Mehr Features für eure Boards: PLANKA Pro entdecken',
|
||||
discoverPlankaPro_title: 'PLANKA Pro entdecken',
|
||||
dismissProBannerFor30Days: 'Für 30 Tage schließen',
|
||||
upgradeTeamToPro_title: 'Team auf Pro upgraden',
|
||||
proFeatureCalendar: '✨ Kalenderansicht für eure Boards',
|
||||
proFeatureRecurringCards: '✨ Wiederkehrende Karten',
|
||||
proFeatureGuestRoles: '✨ Gastrollen & externe Zusammenarbeit',
|
||||
date: 'Datum',
|
||||
deactivateUser_title: 'Benutzer deaktivieren',
|
||||
defaultCardType_title: 'Standard-Kartentyp',
|
||||
|
||||
@@ -157,6 +157,14 @@ export default {
|
||||
customFieldGroups_title: 'Ομάδες προσαρμοσμένων πεδίων',
|
||||
customField_title: 'Προσαρμοσμένο πεδίο',
|
||||
customFields_title: 'Προσαρμοσμένα πεδία',
|
||||
discoverPlankaPro:
|
||||
'✨ Περισσότερες λειτουργίες για τους πίνακές σας: Ανακαλύψτε το PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Ανακαλύψτε το PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Αναβαθμίστε την ομάδα σε Pro',
|
||||
proFeatureCalendar: '✨ Προβολή ημερολογίου για τους πίνακές σας',
|
||||
proFeatureRecurringCards: '✨ Επαναλαμβανόμενες κάρτες και αυτοματισμός',
|
||||
proFeatureGuestRoles: '✨ Ρόλοι επισκεπτών και εξωτερική συνεργασία',
|
||||
dismissProBannerFor30Days: 'Κλείσιμο για 30 ημέρες',
|
||||
customerPanel_title: 'Πίνακας πελάτη',
|
||||
dangerZone_title: 'Επικίνδυνη ζώνη',
|
||||
date: 'Ημερομηνία',
|
||||
|
||||
@@ -143,6 +143,13 @@ export default {
|
||||
customFieldGroups_title: 'Custom Field Groups',
|
||||
customField_title: 'Custom Field',
|
||||
customFields_title: 'Custom Fields',
|
||||
discoverPlankaPro: '✨ More features for your boards: Discover PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Discover PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Upgrade Team to Pro',
|
||||
proFeatureCalendar: '✨ Calendar View for your boards',
|
||||
proFeatureRecurringCards: '✨ Recurring Cards & Automation',
|
||||
proFeatureGuestRoles: '✨ Guest Roles & External Collaboration',
|
||||
dismissProBannerFor30Days: 'Dismiss for 30 days',
|
||||
customerPanel_title: 'Customer Panel',
|
||||
dangerZone_title: 'Danger Zone',
|
||||
date: 'Date',
|
||||
|
||||
@@ -140,6 +140,13 @@ export default {
|
||||
customFields_title: 'Custom Fields',
|
||||
customerPanel_title: 'Customer Panel',
|
||||
dangerZone_title: 'Danger Zone',
|
||||
discoverPlankaPro: '✨ More features for your boards: Discover PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Discover PLANKA Pro',
|
||||
dismissProBannerFor30Days: 'Dismiss for 30 days',
|
||||
upgradeTeamToPro_title: 'Upgrade Team to Pro',
|
||||
proFeatureCalendar: '✨ Calendar View for your boards',
|
||||
proFeatureRecurringCards: '✨ Recurring Cards',
|
||||
proFeatureGuestRoles: '✨ Guest Roles & External Collaboration',
|
||||
date: 'Date',
|
||||
deactivateUser_title: 'Deactivate User',
|
||||
defaultCardType_title: 'Default Card Type',
|
||||
|
||||
@@ -149,6 +149,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupos de campos personalizados',
|
||||
customField_title: 'Campo personalizado',
|
||||
customFields_title: 'Campos personalizados',
|
||||
discoverPlankaPro: '✨ Más funciones para tus tableros: Descubre PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Descubre PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Actualizar equipo a Pro',
|
||||
proFeatureCalendar: '✨ Vista de calendario para tus tableros',
|
||||
proFeatureRecurringCards: '✨ Tarjetas recurrentes y automatización',
|
||||
proFeatureGuestRoles: '✨ Roles de invitado y colaboración externa',
|
||||
dismissProBannerFor30Days: 'Cerrar durante 30 días',
|
||||
customerPanel_title: 'Panel del cliente',
|
||||
dangerZone_title: 'Zona de peligro',
|
||||
date: 'Fecha',
|
||||
|
||||
@@ -144,6 +144,13 @@ export default {
|
||||
customFieldGroups_title: 'Kohandatud väljade grupid',
|
||||
customField_title: 'Kohandatud väli',
|
||||
customFields_title: 'Kohandatud väljad',
|
||||
discoverPlankaPro: '✨ Rohkem funktsioone oma tahvlite jaoks: Avasta PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Avasta PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Uuenda meeskond Pro-ks',
|
||||
proFeatureCalendar: '✨ Kalendervaade oma tahvlite jaoks',
|
||||
proFeatureRecurringCards: '✨ Korduvad kaardid ja automatiseerimine',
|
||||
proFeatureGuestRoles: '✨ Külalisrollid ja väline koostöö',
|
||||
dismissProBannerFor30Days: 'Sulge 30 päevaks',
|
||||
customerPanel_title: 'Kliendi paneel',
|
||||
dangerZone_title: 'Ohtliku ala',
|
||||
date: 'Kuupäev',
|
||||
|
||||
@@ -147,6 +147,13 @@ export default {
|
||||
customFieldGroups_title: 'گروههای فیلد سفارشی',
|
||||
customField_title: 'فیلد سفارشی',
|
||||
customFields_title: 'فیلدهای سفارشی',
|
||||
discoverPlankaPro: '✨ ویژگیهای بیشتر برای تابلوهای شما: PLANKA Pro را کشف کنید',
|
||||
discoverPlankaPro_title: 'PLANKA Pro را کشف کنید',
|
||||
upgradeTeamToPro_title: 'ارتقای تیم به Pro',
|
||||
proFeatureCalendar: '✨ نمای تقویم برای تابلوهای شما',
|
||||
proFeatureRecurringCards: '✨ کارتهای تکرارشونده و خودکارسازی',
|
||||
proFeatureGuestRoles: '✨ نقشهای مهمان و همکاری خارجی',
|
||||
dismissProBannerFor30Days: 'بستن برای ۳۰ روز',
|
||||
customerPanel_title: 'پنل مشتری',
|
||||
dangerZone_title: 'منطقه خطر',
|
||||
date: 'تاریخ',
|
||||
|
||||
@@ -140,6 +140,13 @@ export default {
|
||||
customFieldGroups_title: 'Mukautettujen kenttien ryhmät',
|
||||
customField_title: 'Mukautettu kenttä',
|
||||
customFields_title: 'Mukautetut kentät',
|
||||
discoverPlankaPro: '✨ Lisää ominaisuuksia tauluillesi: Tutustu PLANKA Pro:hon',
|
||||
discoverPlankaPro_title: 'Tutustu PLANKA Pro:hon',
|
||||
upgradeTeamToPro_title: 'Päivitä tiimi Pro-versioon',
|
||||
proFeatureCalendar: '✨ Kalenterinäkymä tauluillesi',
|
||||
proFeatureRecurringCards: '✨ Toistuvat kortit ja automaatio',
|
||||
proFeatureGuestRoles: '✨ Vierasroolit ja ulkoinen yhteistyö',
|
||||
dismissProBannerFor30Days: 'Sulje 30 päiväksi',
|
||||
customerPanel_title: 'Asiakaspaneeli',
|
||||
dangerZone_title: 'Vaaravyöhyke',
|
||||
date: 'Päivämäärä',
|
||||
|
||||
@@ -148,6 +148,13 @@ export default {
|
||||
customFieldGroups_title: 'Groupes de champs personnalisés',
|
||||
customField_title: 'Champ personnalisé',
|
||||
customFields_title: 'Champs personnalisés',
|
||||
discoverPlankaPro: '✨ Plus de fonctionnalités pour vos tableaux : Découvrez PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Découvrez PLANKA Pro',
|
||||
upgradeTeamToPro_title: "Passer l'équipe à Pro",
|
||||
proFeatureCalendar: '✨ Vue calendrier pour vos tableaux',
|
||||
proFeatureRecurringCards: '✨ Cartes récurrentes et automatisation',
|
||||
proFeatureGuestRoles: '✨ Rôles invités et collaboration externe',
|
||||
dismissProBannerFor30Days: 'Fermer pendant 30 jours',
|
||||
customerPanel_title: 'Panneau client',
|
||||
dangerZone_title: 'Zone dangereuse',
|
||||
date: 'Date',
|
||||
|
||||
@@ -138,6 +138,13 @@ export default {
|
||||
customFieldGroups_title: 'Egyedi mezőcsoportok',
|
||||
customField_title: 'Egyedi mező',
|
||||
customFields_title: 'Egyedi mezők',
|
||||
discoverPlankaPro: '✨ Több funkció a tábláidhoz: Fedezd fel a PLANKA Pro-t',
|
||||
discoverPlankaPro_title: 'Fedezd fel a PLANKA Pro-t',
|
||||
upgradeTeamToPro_title: 'Csapat frissítése Pro-ra',
|
||||
proFeatureCalendar: '✨ Naptár nézet a tábláidhoz',
|
||||
proFeatureRecurringCards: '✨ Ismétlődő kártyák és automatizálás',
|
||||
proFeatureGuestRoles: '✨ Vendég szerepkörök és külső együttműködés',
|
||||
dismissProBannerFor30Days: 'Bezárás 30 napra',
|
||||
customerPanel_title: 'Ügyfélpanel',
|
||||
dangerZone_title: 'Veszélyzóna',
|
||||
date: 'Dátum',
|
||||
|
||||
@@ -145,6 +145,13 @@ export default {
|
||||
customFieldGroups_title: 'Grup bidang kustom',
|
||||
customField_title: 'Bidang kustom',
|
||||
customFields_title: 'Bidang kustom',
|
||||
discoverPlankaPro: '✨ Lebih banyak fitur untuk papan Anda: Temukan PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Temukan PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Tingkatkan tim ke Pro',
|
||||
proFeatureCalendar: '✨ Tampilan Kalender untuk papan Anda',
|
||||
proFeatureRecurringCards: '✨ Kartu Berulang & Otomatisasi',
|
||||
proFeatureGuestRoles: '✨ Peran Tamu & Kolaborasi Eksternal',
|
||||
dismissProBannerFor30Days: 'Tutup selama 30 hari',
|
||||
customerPanel_title: 'Panel pelanggan',
|
||||
dangerZone_title: 'Zona berbahaya',
|
||||
date: 'Tanggal',
|
||||
|
||||
@@ -145,6 +145,13 @@ export default {
|
||||
customFieldGroups_title: 'Campi personalizzati',
|
||||
customField_title: 'Campo personalizzato',
|
||||
customFields_title: 'Campi personalizzati',
|
||||
discoverPlankaPro: '✨ Più funzionalità per le tue bacheche: Scopri PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Scopri PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Aggiorna il team a Pro',
|
||||
proFeatureCalendar: '✨ Vista calendario per le tue bacheche',
|
||||
proFeatureRecurringCards: '✨ Schede ricorrenti e automazione',
|
||||
proFeatureGuestRoles: '✨ Ruoli ospite e collaborazione esterna',
|
||||
dismissProBannerFor30Days: 'Chiudi per 30 giorni',
|
||||
customerPanel_title: 'Pannello cliente',
|
||||
dangerZone_title: 'Zona pericolosa',
|
||||
date: 'Data',
|
||||
|
||||
@@ -141,6 +141,13 @@ export default {
|
||||
customFieldGroups_title: 'カスタムフィールドグループ',
|
||||
customField_title: 'カスタムフィールド',
|
||||
customFields_title: 'カスタムフィールド',
|
||||
discoverPlankaPro: '✨ ボードのさらなる機能: PLANKA Proを発見',
|
||||
discoverPlankaPro_title: 'PLANKA Proを発見',
|
||||
upgradeTeamToPro_title: 'チームをProにアップグレード',
|
||||
proFeatureCalendar: '✨ ボード用カレンダービュー',
|
||||
proFeatureRecurringCards: '✨ 繰り返しカードと自動化',
|
||||
proFeatureGuestRoles: '✨ ゲストロールと外部コラボレーション',
|
||||
dismissProBannerFor30Days: '30日間閉じる',
|
||||
customerPanel_title: '顧客パネル',
|
||||
dangerZone_title: '危険ゾーン',
|
||||
date: '日付',
|
||||
|
||||
@@ -136,6 +136,13 @@ export default {
|
||||
customFieldGroups_title: '사용자 정의 필드 그룹들',
|
||||
customField_title: '사용자 정의 필드',
|
||||
customFields_title: '사용자 정의 필드들',
|
||||
discoverPlankaPro: '✨ 보드를 위한 더 많은 기능: PLANKA Pro 알아보기',
|
||||
discoverPlankaPro_title: 'PLANKA Pro 알아보기',
|
||||
upgradeTeamToPro_title: '팀을 Pro로 업그레이드',
|
||||
proFeatureCalendar: '✨ 보드용 캘린더 뷰',
|
||||
proFeatureRecurringCards: '✨ 반복 카드 및 자동화',
|
||||
proFeatureGuestRoles: '✨ 게스트 역할 및 외부 협업',
|
||||
dismissProBannerFor30Days: '30일 동안 닫기',
|
||||
customerPanel_title: '고객 패널',
|
||||
dangerZone_title: '위험 구역',
|
||||
date: '날짜',
|
||||
|
||||
@@ -144,6 +144,13 @@ export default {
|
||||
customFieldGroups_title: 'Aangepaste veldgroepen',
|
||||
customField_title: 'Aangepast veld',
|
||||
customFields_title: 'Aangepaste velden',
|
||||
discoverPlankaPro: '✨ Meer functies voor uw borden: Ontdek PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Ontdek PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Team upgraden naar Pro',
|
||||
proFeatureCalendar: '✨ Kalenderweergave voor uw borden',
|
||||
proFeatureRecurringCards: '✨ Terugkerende kaarten en automatisering',
|
||||
proFeatureGuestRoles: '✨ Gastrol en externe samenwerking',
|
||||
dismissProBannerFor30Days: 'Sluiten voor 30 dagen',
|
||||
customerPanel_title: 'Klantenpaneel',
|
||||
dangerZone_title: 'Gevaarlijke zone',
|
||||
date: 'Datum',
|
||||
|
||||
@@ -143,6 +143,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupy pól własnych',
|
||||
customField_title: 'Własne pole',
|
||||
customFields_title: 'Własne pola',
|
||||
discoverPlankaPro: '✨ Więcej funkcji dla Twoich tablic: Odkryj PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Odkryj PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Uaktualnij zespół do Pro',
|
||||
proFeatureCalendar: '✨ Widok kalendarza dla Twoich tablic',
|
||||
proFeatureRecurringCards: '✨ Powtarzające się karty i automatyzacja',
|
||||
proFeatureGuestRoles: '✨ Role gościa i zewnętrzna współpraca',
|
||||
dismissProBannerFor30Days: 'Zamknij na 30 dni',
|
||||
customerPanel_title: 'Panel klienta',
|
||||
dangerZone_title: 'Strefa niebezpieczeństwa',
|
||||
date: 'Data',
|
||||
|
||||
@@ -146,6 +146,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupos de campo personalizado',
|
||||
customField_title: 'Campo personalizado',
|
||||
customFields_title: 'Campos personalizados',
|
||||
discoverPlankaPro: '✨ Mais recursos para seus quadros: Descubra o PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Descubra o PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Atualizar equipe para Pro',
|
||||
proFeatureCalendar: '✨ Visualização de calendário para seus quadros',
|
||||
proFeatureRecurringCards: '✨ Cartões recorrentes e automação',
|
||||
proFeatureGuestRoles: '✨ Funções de convidado e colaboração externa',
|
||||
dismissProBannerFor30Days: 'Fechar por 30 dias',
|
||||
customerPanel_title: 'Painel do cliente',
|
||||
dangerZone_title: 'Zona de perigo',
|
||||
date: 'Data',
|
||||
|
||||
@@ -148,6 +148,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupos de campos personalizados',
|
||||
customField_title: 'Campo personalizado',
|
||||
customFields_title: 'Campos personalizados',
|
||||
discoverPlankaPro: '✨ Mais funcionalidades para os seus quadros: Descubra o PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Descubra o PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Atualizar equipa para Pro',
|
||||
proFeatureCalendar: '✨ Vista de calendário para os seus quadros',
|
||||
proFeatureRecurringCards: '✨ Cartões recorrentes e automatização',
|
||||
proFeatureGuestRoles: '✨ Funções de convidado e colaboração externa',
|
||||
dismissProBannerFor30Days: 'Fechar durante 30 dias',
|
||||
customerPanel_title: 'Painel do cliente',
|
||||
dangerZone_title: 'Zona perigosa',
|
||||
date: 'Data',
|
||||
|
||||
@@ -142,6 +142,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupuri de câmpuri personalizate',
|
||||
customField_title: 'Câmp personalizat',
|
||||
customFields_title: 'Câmpuri personalizate',
|
||||
discoverPlankaPro: '✨ Mai multe funcții pentru panourile tale: Descoperă PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Descoperă PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Actualizează echipa la Pro',
|
||||
proFeatureCalendar: '✨ Vizualizare calendar pentru panourile tale',
|
||||
proFeatureRecurringCards: '✨ Carduri recurente și automatizare',
|
||||
proFeatureGuestRoles: '✨ Roluri invitat și colaborare externă',
|
||||
dismissProBannerFor30Days: 'Închide pentru 30 de zile',
|
||||
customerPanel_title: 'Panoul clientului',
|
||||
dangerZone_title: 'Zona periculoasă',
|
||||
date: 'Data',
|
||||
|
||||
@@ -145,6 +145,13 @@ export default {
|
||||
customFieldGroups_title: 'Группы настраиваемых полей',
|
||||
customField_title: 'Настраиваемое поле',
|
||||
customFields_title: 'Настраиваемые поля',
|
||||
discoverPlankaPro: '✨ Больше возможностей для ваших досок: Откройте PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Откройте PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Улучшить команду до Pro',
|
||||
proFeatureCalendar: '✨ Вид календаря для ваших досок',
|
||||
proFeatureRecurringCards: '✨ Повторяющиеся карточки и автоматизация',
|
||||
proFeatureGuestRoles: '✨ Роли гостей и внешнее сотрудничество',
|
||||
dismissProBannerFor30Days: 'Закрыть на 30 дней',
|
||||
customerPanel_title: 'Панель клиента',
|
||||
dangerZone_title: 'Опасная зона',
|
||||
date: 'Дата',
|
||||
|
||||
@@ -139,6 +139,13 @@ export default {
|
||||
customFieldGroups_title: 'Skupiny vlastných polí',
|
||||
customField_title: 'Vlastné pole',
|
||||
customFields_title: 'Vlastné polia',
|
||||
discoverPlankaPro: '✨ Viac funkcií pre vaše tabule: Objavte PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Objavte PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Inovovať tím na Pro',
|
||||
proFeatureCalendar: '✨ Zobrazenie kalendára pre vaše tabule',
|
||||
proFeatureRecurringCards: '✨ Opakujúce sa karty a automatizácia',
|
||||
proFeatureGuestRoles: '✨ Roly hosťa a externá spolupráca',
|
||||
dismissProBannerFor30Days: 'Zavrieť na 30 dní',
|
||||
customerPanel_title: 'Panel zákazníka',
|
||||
dangerZone_title: 'Nebezpečná zóna',
|
||||
date: 'Dátum',
|
||||
|
||||
@@ -142,6 +142,13 @@ export default {
|
||||
customFieldGroups_title: 'Групе прилагођених поља',
|
||||
customField_title: 'Прилагођено поље',
|
||||
customFields_title: 'Прилагођена поља',
|
||||
discoverPlankaPro: '✨ Више функција за ваше табле: Откријте PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Откријте PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Надоградите тим на Pro',
|
||||
proFeatureCalendar: '✨ Приказ календара за ваше табле',
|
||||
proFeatureRecurringCards: '✨ Понављајуће картице и аутоматизација',
|
||||
proFeatureGuestRoles: '✨ Гостујуће улоге и спољна сарадња',
|
||||
dismissProBannerFor30Days: 'Затвори на 30 дана',
|
||||
customerPanel_title: 'Панел купца',
|
||||
dangerZone_title: 'Опасна зона',
|
||||
date: 'Датум',
|
||||
|
||||
@@ -143,6 +143,13 @@ export default {
|
||||
customFieldGroups_title: 'Grupe prilagođenih polja',
|
||||
customField_title: 'Prilagođeno polje',
|
||||
customFields_title: 'Prilagođena polja',
|
||||
discoverPlankaPro: '✨ Više funkcija za vaše table: Otkrijte PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Otkrijte PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Nadogradite tim na Pro',
|
||||
proFeatureCalendar: '✨ Prikaz kalendara za vaše table',
|
||||
proFeatureRecurringCards: '✨ Ponavljajuće kartice i automatizacija',
|
||||
proFeatureGuestRoles: '✨ Gostujuće uloge i spoljna saradnja',
|
||||
dismissProBannerFor30Days: 'Zatvori na 30 dana',
|
||||
customerPanel_title: 'Panel kupca',
|
||||
dangerZone_title: 'Opasna zona',
|
||||
date: 'Datum',
|
||||
|
||||
@@ -149,6 +149,13 @@ export default {
|
||||
customFieldGroups_title: 'Anpassade fältgrupper',
|
||||
customField_title: 'Anpassat fält',
|
||||
customFields_title: 'Anpassade fält',
|
||||
discoverPlankaPro: '✨ Fler funktioner för dina bräden: Upptäck PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Upptäck PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Uppgradera teamet till Pro',
|
||||
proFeatureCalendar: '✨ Kalendervy för dina bräden',
|
||||
proFeatureRecurringCards: '✨ Återkommande kort och automatisering',
|
||||
proFeatureGuestRoles: '✨ Gästroller och externt samarbete',
|
||||
dismissProBannerFor30Days: 'Stäng i 30 dagar',
|
||||
customerPanel_title: 'Kundpanel',
|
||||
dangerZone_title: 'Farozon',
|
||||
date: 'Datum',
|
||||
|
||||
@@ -146,6 +146,13 @@ export default {
|
||||
customFieldGroups_title: 'özel alan grupları',
|
||||
customField_title: 'Özel alan',
|
||||
customFields_title: 'Özel alanlar',
|
||||
discoverPlankaPro: "✨ Panolarınız için daha fazla özellik: PLANKA Pro'yu keşfedin",
|
||||
discoverPlankaPro_title: "PLANKA Pro'yu keşfedin",
|
||||
upgradeTeamToPro_title: "Ekibi Pro'ya yükseltin",
|
||||
proFeatureCalendar: '✨ Panolarınız için takvim görünümü',
|
||||
proFeatureRecurringCards: '✨ Yinelenen kartlar ve otomasyon',
|
||||
proFeatureGuestRoles: '✨ Misafir rolleri ve harici iş birliği',
|
||||
dismissProBannerFor30Days: '30 gün için kapat',
|
||||
customerPanel_title: 'Müşteri paneli',
|
||||
dangerZone_title: 'Tehlikeli bölge',
|
||||
date: 'tarih',
|
||||
|
||||
@@ -144,6 +144,13 @@ export default {
|
||||
customFieldGroups_title: 'Користувацькі групи полів',
|
||||
customField_title: 'Користувацьке поле',
|
||||
customFields_title: 'Користувацькі поля',
|
||||
discoverPlankaPro: '✨ Більше можливостей для ваших дощок: Відкрийте PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Відкрийте PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Оновити команду до Pro',
|
||||
proFeatureCalendar: '✨ Вигляд календаря для ваших дощок',
|
||||
proFeatureRecurringCards: '✨ Повторювані картки та автоматизація',
|
||||
proFeatureGuestRoles: '✨ Ролі гостей та зовнішня співпраця',
|
||||
dismissProBannerFor30Days: 'Закрити на 30 днів',
|
||||
customerPanel_title: 'Панель клієнта',
|
||||
dangerZone_title: 'Небезпечна зона',
|
||||
date: 'Дата',
|
||||
|
||||
@@ -140,6 +140,13 @@ export default {
|
||||
customFieldGroups_title: 'Maxsus maydon guruhlari',
|
||||
customField_title: 'Maxsus maydon',
|
||||
customFields_title: 'Maxsus maydonlar',
|
||||
discoverPlankaPro: "✨ Doskalaringiz uchun ko'proq imkoniyatlar: PLANKA Pro ni kashf eting",
|
||||
discoverPlankaPro_title: 'PLANKA Pro ni kashf eting',
|
||||
upgradeTeamToPro_title: 'Jamoani Pro ga yangilash',
|
||||
proFeatureCalendar: "✨ Doskalaringiz uchun kalendar ko'rinishi",
|
||||
proFeatureRecurringCards: '✨ Takrorlanuvchi kartalar va avtomatlashtirish',
|
||||
proFeatureGuestRoles: '✨ Mehmon rollari va tashqi hamkorlik',
|
||||
dismissProBannerFor30Days: '30 kunga yopish',
|
||||
customerPanel_title: 'Mijoz paneli',
|
||||
dangerZone_title: 'Xavfli hudud',
|
||||
date: 'Sana',
|
||||
|
||||
@@ -145,6 +145,13 @@ export default {
|
||||
customFieldGroups_title: 'Các nhóm trường tùy chỉnh',
|
||||
customField_title: 'Trường tùy chỉnh',
|
||||
customFields_title: 'Các trường tùy chỉnh',
|
||||
discoverPlankaPro: '✨ Nhiều tính năng hơn cho bảng của bạn: Khám phá PLANKA Pro',
|
||||
discoverPlankaPro_title: 'Khám phá PLANKA Pro',
|
||||
upgradeTeamToPro_title: 'Nâng cấp nhóm lên Pro',
|
||||
proFeatureCalendar: '✨ Chế độ xem lịch cho bảng của bạn',
|
||||
proFeatureRecurringCards: '✨ Thẻ định kỳ và tự động hóa',
|
||||
proFeatureGuestRoles: '✨ Vai trò khách và cộng tác bên ngoài',
|
||||
dismissProBannerFor30Days: 'Đóng trong 30 ngày',
|
||||
customerPanel_title: 'Bảng điều khiển khách hàng',
|
||||
dangerZone_title: 'Khu vực nguy hiểm',
|
||||
date: 'Ngày',
|
||||
|
||||
@@ -125,6 +125,13 @@ export default {
|
||||
customFieldGroups_title: '自定义字段组',
|
||||
customField_title: '自定义字段',
|
||||
customFields_title: '自定义字段',
|
||||
discoverPlankaPro: '✨ 为您的看板提供更多功能:探索 PLANKA Pro',
|
||||
discoverPlankaPro_title: '探索 PLANKA Pro',
|
||||
upgradeTeamToPro_title: '将团队升级到 Pro',
|
||||
proFeatureCalendar: '✨ 看板的日历视图',
|
||||
proFeatureRecurringCards: '✨ 重复卡片与自动化',
|
||||
proFeatureGuestRoles: '✨ 访客角色与外部协作',
|
||||
dismissProBannerFor30Days: '关闭 30 天',
|
||||
customerPanel_title: '客户面板',
|
||||
dangerZone_title: '危险区域',
|
||||
date: '日期',
|
||||
|
||||
@@ -125,6 +125,13 @@ export default {
|
||||
customFieldGroups_title: '自定義欄位群組',
|
||||
customField_title: '自定義欄位',
|
||||
customFields_title: '自定義欄位',
|
||||
discoverPlankaPro: '✨ 為您的看板提供更多功能:探索 PLANKA Pro',
|
||||
discoverPlankaPro_title: '探索 PLANKA Pro',
|
||||
upgradeTeamToPro_title: '將團隊升級至 Pro',
|
||||
proFeatureCalendar: '✨ 看板的日曆檢視',
|
||||
proFeatureRecurringCards: '✨ 重複卡片與自動化',
|
||||
proFeatureGuestRoles: '✨ 訪客角色與外部協作',
|
||||
dismissProBannerFor30Days: '關閉 30 天',
|
||||
customerPanel_title: '客戶面板',
|
||||
dangerZone_title: '危險區域',
|
||||
date: '日期',
|
||||
|
||||
Reference in New Issue
Block a user