diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx index c9d7d890b48..135167d96ef 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx @@ -8,9 +8,10 @@ import { observer } from "mobx-react"; import { useRouter } from "next/navigation"; import useSWR from "swr"; // ui -import { Banner } from "@plane/propel/banner"; -import { Button } from "@plane/propel/button"; +import { Banner } from "@makeplane/propel/components/banner"; import { ArchiveOutline } from "@makeplane/propel/icons"; +import { useTranslation } from "@plane/i18n"; +import { Button } from "@plane/propel/button"; import { Loader } from "@plane/ui"; // components import { PageHead } from "@/components/core/page-title"; @@ -27,6 +28,7 @@ function ArchivedIssueDetailsPage({ params }: Route.ComponentProps) { const router = useRouter(); // states // hooks + const { t } = useTranslation(); const { fetchIssue, issue: { getIssueById }, @@ -68,18 +70,18 @@ function ArchivedIssueDetailsPage({ params }: Route.ComponentProps) { ) : ( <> } - action={ + title={t("issue.archive.banner_message")} + icon={} + actions={ } - className="border-b border-subtle" />
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx index 1636bc8ae07..0344f8a5696 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx @@ -8,10 +8,10 @@ import { observer } from "mobx-react"; import useSWR from "swr"; // components import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; import { NotAuthorizedView } from "@/components/auth-screens/not-authorized-view"; import { PageHead } from "@/components/core/page-title"; import { SingleIntegrationCard } from "@/components/integration/single-integration-card"; -import { IntegrationAndImportExportBanner } from "@/components/ui/integration-and-import-export-banner"; import { IntegrationsSettingsLoader } from "@/components/ui/loader/settings/integration"; // constants import { APP_INTEGRATIONS } from "@plane/constants"; @@ -24,6 +24,8 @@ import { IntegrationService } from "@/services/integrations"; const integrationService = new IntegrationService(); function WorkspaceIntegrationsPage() { + // translation + const { t } = useTranslation(); // store hooks const { currentWorkspace } = useWorkspace(); const { allowPermissions } = useUserPermissions(); @@ -41,7 +43,9 @@ function WorkspaceIntegrationsPage() { <>
- +
+

{t("integrations.integrations")}

+
{appIntegrations ? ( appIntegrations.map((integration) => ( diff --git a/apps/web/app/error/dev.tsx b/apps/web/app/error/dev.tsx index ca49d0189ad..b9b1d4843ce 100644 --- a/apps/web/app/error/dev.tsx +++ b/apps/web/app/error/dev.tsx @@ -6,10 +6,10 @@ // plane imports import { isRouteErrorResponse } from "react-router"; -import { Banner } from "@plane/propel/banner"; +import { Banner } from "@makeplane/propel/components/banner"; +import { InfoFilled } from "@makeplane/propel/icons"; import { Button } from "@plane/propel/button"; import { Card, ECardVariant } from "@plane/propel/card"; -import { InfoFilled } from "@makeplane/propel/icons"; interface ErrorActionsProps { onGoHome: () => void; @@ -42,12 +42,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone return (
- } - title="Route Error Response" - animationDuration={0} - /> + } title="Route Error Response" />
@@ -77,12 +72,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone return (
- } - title="Runtime Error" - animationDuration={0} - /> + } title="Runtime Error" />
@@ -132,7 +122,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone return (
- } title="Unknown Error" animationDuration={0} /> + } title="Unknown Error" />
diff --git a/apps/web/core/components/account/auth-forms/auth-banner.tsx b/apps/web/core/components/account/auth-forms/auth-banner.tsx deleted file mode 100644 index dd29a1f85a0..00000000000 --- a/apps/web/core/components/account/auth-forms/auth-banner.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { CloseOutline, InfoOutline } from "@makeplane/propel/icons"; -// plane imports -import { useTranslation } from "@plane/i18n"; -// helpers -import type React from "react"; - -type TAuthBanner = { - message: React.ReactNode; - handleBannerData?: (bannerData: undefined) => void; -}; - -export function AuthBanner(props: TAuthBanner) { - const { message, handleBannerData } = props; - // translation - const { t } = useTranslation(); - - if (!message) return <>; - return ( -
-
- -
-

{message}

- -
- ); -} diff --git a/apps/web/core/components/account/auth-forms/auth-root.tsx b/apps/web/core/components/account/auth-forms/auth-root.tsx index 5cba8a178e9..46ae2c46157 100644 --- a/apps/web/core/components/account/auth-forms/auth-root.tsx +++ b/apps/web/core/components/account/auth-forms/auth-root.tsx @@ -8,6 +8,7 @@ import { useEffect, useState } from "react"; import { observer } from "mobx-react"; import { useSearchParams } from "next/navigation"; // plane imports +import { Banner } from "@makeplane/propel/components/banner"; import { OAuthOptions } from "@plane/ui"; // helpers import type { TAuthErrorInfo } from "@/helpers/authentication.helper"; @@ -23,7 +24,6 @@ import { useOAuthConfig } from "@/hooks/oauth"; import { useInstance } from "@/hooks/store/use-instance"; // local imports import { TermsAndConditions } from "../terms-and-conditions"; -import { AuthBanner } from "./auth-banner"; import { AuthHeader, AuthHeaderBase } from "./auth-header"; import { AuthFormRoot } from "./form-root"; @@ -116,7 +116,13 @@ export const AuthRoot = observer(function AuthRoot(props: TAuthRoot) { return ( {errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && ( - setErrorInfo(value)} /> + setErrorInfo(undefined)} + /> )} {isBannerMessage && mode === EAuthModes.SIGN_UP && ( -
-
- -
-
- {t("auth.sign_up.errors.password.strength")} -
- -
+ setBannerMessage(false)} + /> )}
{errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && ( - setErrorInfo(value)} /> + setErrorInfo(undefined)} + /> )} ; + return ( +
+ + } + /> + } + render={
} + /> +
+ ); }); diff --git a/apps/web/core/components/issues/bulk-operations/upgrade-banner.tsx b/apps/web/core/components/issues/bulk-operations/upgrade-banner.tsx deleted file mode 100644 index bfd33369020..00000000000 --- a/apps/web/core/components/issues/bulk-operations/upgrade-banner.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { MARKETING_PLANE_ONE_PAGE_LINK } from "@plane/constants"; -import { getButtonStyling } from "@plane/propel/button"; -import { cn } from "@plane/utils"; - -type Props = { - className?: string; -}; - -export function BulkOperationsUpgradeBanner(props: Props) { - const { className } = props; - - return ( -
-
-

- Change state, priority, and more for several work items at once. Save three minutes on an average per - operation. -

- - Upgrade to One - -
-
- ); -} diff --git a/apps/web/core/components/pages/editor/content-limit-banner.tsx b/apps/web/core/components/pages/editor/content-limit-banner.tsx deleted file mode 100644 index efc630bbfe2..00000000000 --- a/apps/web/core/components/pages/editor/content-limit-banner.tsx +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { WarningTriangleOutline } from "@makeplane/propel/icons"; -import { cn } from "@plane/utils"; - -type Props = { - className?: string; - onDismiss?: () => void; -}; - -export function ContentLimitBanner({ className, onDismiss }: Props) { - return ( -
-
- - - - - Content limit reached and live sync is off. Create a new page or use nested pages to continue syncing. - -
- {onDismiss && ( - - )} -
- ); -} diff --git a/apps/web/core/components/pages/editor/page-root.tsx b/apps/web/core/components/pages/editor/page-root.tsx index c7c90844668..dab67febc01 100644 --- a/apps/web/core/components/pages/editor/page-root.tsx +++ b/apps/web/core/components/pages/editor/page-root.tsx @@ -8,6 +8,7 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; // plane imports import type { CollaborationState, EditorRefApi } from "@plane/editor"; +import { useTranslation } from "@plane/i18n"; import type { TDocumentPayload, TPage, TPageVersion, TWebhookConnectionQueryParams } from "@plane/types"; // hooks import { usePageFallback } from "@/hooks/use-page-fallback"; @@ -16,11 +17,12 @@ import { usePagesPaneExtensions, useExtendedEditorProps } from "@/hooks/pages"; import type { EPageStoreType } from "@/hooks/store"; // store import type { TPageInstance } from "@/store/pages/base-page"; +// ui +import { Banner } from "@makeplane/propel/components/banner"; // local imports import { PageNavigationPaneRoot } from "../navigation-pane"; import { PageVersionsOverlay } from "../version"; import { PagesVersionEditor } from "../version/editor"; -import { ContentLimitBanner } from "./content-limit-banner"; import { PageEditorBody } from "./editor-body"; import type { TEditorBodyConfig, TEditorBodyHandlers } from "./editor-body"; import { PageEditorToolbarRoot } from "./toolbar"; @@ -62,6 +64,8 @@ export const PageRoot = observer(function PageRoot(props: TPageRootProps) { const [editorReady, setEditorReady] = useState(false); const [collaborationState, setCollaborationState] = useState(null); const [showContentTooLargeBanner, setShowContentTooLargeBanner] = useState(false); + // translation + const { t } = useTranslation(); // refs const editorRef = useRef(null); // derived values @@ -166,7 +170,14 @@ export const PageRoot = observer(function PageRoot(props: TPageRootProps) { isNavigationPaneOpen={isNavigationPaneOpen} page={page} /> - {showContentTooLargeBanner && } + {showContentTooLargeBanner && ( + } + /> + )} -

{bannerName}

- {description && ( -
- -

{description}

-
- )} -
- ); -} diff --git a/packages/i18n/src/locales/cs/page.json b/packages/i18n/src/locales/cs/page.json index 2688d02bde3..8e20586f6b8 100644 --- a/packages/i18n/src/locales/cs/page.json +++ b/packages/i18n/src/locales/cs/page.json @@ -111,5 +111,8 @@ "success_message": "Stránka byla odebrána z kolekce.", "error_message": "Stránku se nepodařilo odebrat z kolekce. Zkuste to prosím znovu." } + }, + "page_content_limit_banner": { + "message": "Byl dosažen limit obsahu a živá synchronizace je vypnutá. Vytvořte novou stránku nebo použijte vnořené stránky a pokračujte v synchronizaci." } } diff --git a/packages/i18n/src/locales/cs/work-item.json b/packages/i18n/src/locales/cs/work-item.json index 2fe97ce830d..78196a6bb69 100644 --- a/packages/i18n/src/locales/cs/work-item.json +++ b/packages/i18n/src/locales/cs/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Archivace pracovní položky se nezdařila. Zkuste to prosím znovu." - } + }, + "banner_message": "Tato pracovní položka byla archivována. Přejděte do sekce Archivy a obnovte ji.", + "go_to_archives": "Přejít do archivů" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Nelze aktualizovat pracovní položky", "message": "Změna stavu není povolena pro některé pracovní položky. Ujistěte se, že je změna stavu povolena." } + }, + "upgrade_banner": { + "message": "Měňte stav, prioritu a další vlastnosti u více pracovních položek najednou. V průměru ušetříte tři minuty na operaci.", + "cta": "Upgradovat na One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/de/page.json b/packages/i18n/src/locales/de/page.json index 10af7310003..4d97bef02cc 100644 --- a/packages/i18n/src/locales/de/page.json +++ b/packages/i18n/src/locales/de/page.json @@ -111,5 +111,8 @@ "success_message": "Seite aus Sammlung entfernt.", "error_message": "Die Seite konnte nicht aus der Sammlung entfernt werden. Bitte versuchen Sie es erneut." } + }, + "page_content_limit_banner": { + "message": "Inhaltslimit erreicht, Live-Synchronisierung ist deaktiviert. Neue Seite erstellen oder verschachtelte Seiten verwenden, um die Synchronisierung fortzusetzen." } } diff --git a/packages/i18n/src/locales/de/work-item.json b/packages/i18n/src/locales/de/work-item.json index 9c235f60554..ddc105e4d61 100644 --- a/packages/i18n/src/locales/de/work-item.json +++ b/packages/i18n/src/locales/de/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Archivierung des Arbeitselements fehlgeschlagen. Bitte versuchen Sie es erneut." - } + }, + "banner_message": "Dieses Arbeitselement wurde archiviert. Rufen Sie den Bereich „Archive“ auf, um es wiederherzustellen.", + "go_to_archives": "Zu den Archiven" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Arbeitsaufgaben können nicht aktualisiert werden", "message": "Statusänderung ist für einige Arbeitsaufgaben nicht erlaubt. Stellen Sie sicher, dass die Statusänderung zulässig ist." } + }, + "upgrade_banner": { + "message": "Status, Priorität und mehr für mehrere Arbeitselemente gleichzeitig ändern. Im Schnitt drei Minuten pro Vorgang sparen.", + "cta": "Upgrade auf One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/en/page.json b/packages/i18n/src/locales/en/page.json index f14a4b017b3..ca2a384ee83 100644 --- a/packages/i18n/src/locales/en/page.json +++ b/packages/i18n/src/locales/en/page.json @@ -111,5 +111,8 @@ "success_message": "Page removed from collection.", "error_message": "Page could not be removed from the collection. Please try again." } + }, + "page_content_limit_banner": { + "message": "Content limit reached and live sync is off. Create a new page or use nested pages to continue syncing." } } diff --git a/packages/i18n/src/locales/en/work-item.json b/packages/i18n/src/locales/en/work-item.json index b7935a125c3..6acb2439841 100644 --- a/packages/i18n/src/locales/en/work-item.json +++ b/packages/i18n/src/locales/en/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Work item could not be archived. Please try again." - } + }, + "banner_message": "This work item has been archived. Visit the Archives section to restore it.", + "go_to_archives": "Go to archives" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Unable to update work items", "message": "State change is not allowed for some work items. Ensure the state change is allowed." } + }, + "upgrade_banner": { + "message": "Change state, priority, and more for several work items at once. Save three minutes on an average per operation.", + "cta": "Upgrade to One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/es/page.json b/packages/i18n/src/locales/es/page.json index c013497b230..89be775aa9a 100644 --- a/packages/i18n/src/locales/es/page.json +++ b/packages/i18n/src/locales/es/page.json @@ -111,5 +111,8 @@ "success_message": "Página quitada de la colección.", "error_message": "No se pudo quitar la página de la colección. Inténtalo de nuevo." } + }, + "page_content_limit_banner": { + "message": "Se alcanzó el límite de contenido y la sincronización en vivo está desactivada. Cree una página nueva o utilice páginas anidadas para continuar sincronizando." } } diff --git a/packages/i18n/src/locales/es/work-item.json b/packages/i18n/src/locales/es/work-item.json index 738fff249c7..b721959b15b 100644 --- a/packages/i18n/src/locales/es/work-item.json +++ b/packages/i18n/src/locales/es/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "No se pudo archivar el elemento de trabajo. Por favor, inténtalo de nuevo." - } + }, + "banner_message": "Este elemento de trabajo ha sido archivado. Visite la sección Archivos para restaurarlo.", + "go_to_archives": "Ir a archivos" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "No se pueden actualizar elementos de trabajo", "message": "El cambio de estado no está permitido para algunos elementos de trabajo. Asegúrese de que el cambio de estado esté permitido." } + }, + "upgrade_banner": { + "message": "Cambie el estado, la prioridad y más para varios elementos de trabajo a la vez. Ahorre en promedio tres minutos por operación.", + "cta": "Actualizar a One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/fr/page.json b/packages/i18n/src/locales/fr/page.json index 576ecb00c3b..a3bb95716ec 100644 --- a/packages/i18n/src/locales/fr/page.json +++ b/packages/i18n/src/locales/fr/page.json @@ -111,5 +111,8 @@ "success_message": "Page retirée de la collection.", "error_message": "La page n'a pas pu être retirée de la collection. Veuillez réessayer." } + }, + "page_content_limit_banner": { + "message": "Limite de contenu atteinte et la synchronisation en direct est désactivée. Créez une nouvelle page ou utilisez des pages imbriquées pour continuer la synchronisation." } } diff --git a/packages/i18n/src/locales/fr/work-item.json b/packages/i18n/src/locales/fr/work-item.json index 04a5958092b..49d15f32435 100644 --- a/packages/i18n/src/locales/fr/work-item.json +++ b/packages/i18n/src/locales/fr/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "L’élément de travail n’a pas pu être archivé. Veuillez réessayer." - } + }, + "banner_message": "Cet élément de travail a été archivé. Accédez à la section Archives pour le restaurer.", + "go_to_archives": "Accéder aux archives" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Impossible de mettre à jour les éléments de travail", "message": "Le changement d'état n'est pas autorisé pour certains éléments de travail. Assurez-vous que le changement d'état est autorisé." } + }, + "upgrade_banner": { + "message": "Modifiez l’état, la priorité et bien plus pour plusieurs éléments de travail à la fois. Économisez en moyenne trois minutes par opération.", + "cta": "Mettre à niveau vers One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/id/page.json b/packages/i18n/src/locales/id/page.json index 3e6fcdb3b0e..92175995960 100644 --- a/packages/i18n/src/locales/id/page.json +++ b/packages/i18n/src/locales/id/page.json @@ -111,5 +111,8 @@ "success_message": "Halaman dihapus dari koleksi.", "error_message": "Halaman tidak dapat dihapus dari koleksi. Silakan coba lagi." } + }, + "page_content_limit_banner": { + "message": "Batas konten tercapai dan sinkronisasi langsung nonaktif. Buat halaman baru atau gunakan halaman bertingkat untuk melanjutkan sinkronisasi." } } diff --git a/packages/i18n/src/locales/id/work-item.json b/packages/i18n/src/locales/id/work-item.json index 917fdeb1b6a..0e2abacf61a 100644 --- a/packages/i18n/src/locales/id/work-item.json +++ b/packages/i18n/src/locales/id/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Item kerja tidak dapat diarsipkan. Silakan coba lagi." - } + }, + "banner_message": "Item kerja ini telah diarsipkan. Kunjungi bagian Arsip untuk memulihkannya.", + "go_to_archives": "Buka arsip" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Tidak dapat memperbarui item kerja", "message": "Perubahan status tidak diizinkan untuk beberapa item kerja. Pastikan perubahan status diizinkan." } + }, + "upgrade_banner": { + "message": "Ubah status, prioritas, dan lainnya untuk beberapa item kerja sekaligus. Hemat rata-rata tiga menit per operasi.", + "cta": "Tingkatkan ke One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/it/page.json b/packages/i18n/src/locales/it/page.json index 7898785aec2..1dbc06e3eb3 100644 --- a/packages/i18n/src/locales/it/page.json +++ b/packages/i18n/src/locales/it/page.json @@ -111,5 +111,8 @@ "success_message": "Pagina rimossa dalla raccolta.", "error_message": "Non è stato possibile rimuovere la pagina dalla raccolta. Riprova." } + }, + "page_content_limit_banner": { + "message": "Limite di contenuto raggiunto e la sincronizzazione in tempo reale è disattivata. Crea una nuova pagina o usa pagine annidate per continuare la sincronizzazione." } } diff --git a/packages/i18n/src/locales/it/work-item.json b/packages/i18n/src/locales/it/work-item.json index 7622c815bb8..aeb3ea5cb38 100644 --- a/packages/i18n/src/locales/it/work-item.json +++ b/packages/i18n/src/locales/it/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Impossibile archiviare l'elemento di lavoro. Per favore, riprova." - } + }, + "banner_message": "Questo elemento di lavoro è stato archiviato. Vai alla sezione Archivi per ripristinarlo.", + "go_to_archives": "Vai agli archivi" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Impossibile aggiornare gli elementi di lavoro", "message": "Il cambiamento di stato non è consentito per alcuni elementi di lavoro. Assicurati che il cambiamento di stato sia consentito." } + }, + "upgrade_banner": { + "message": "Cambia stato, priorità e altro per più elementi di lavoro contemporaneamente. Risparmia in media tre minuti per operazione.", + "cta": "Aggiorna a One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ja/page.json b/packages/i18n/src/locales/ja/page.json index 10b45a38f06..d6cee44f67b 100644 --- a/packages/i18n/src/locales/ja/page.json +++ b/packages/i18n/src/locales/ja/page.json @@ -111,5 +111,8 @@ "success_message": "ページをコレクションから削除しました。", "error_message": "ページをコレクションから削除できませんでした。もう一度お試しください。" } + }, + "page_content_limit_banner": { + "message": "コンテンツの上限に達したため、リアルタイム同期がオフになっています。新しいページを作成するか、ネストされたページを使用して同期を続けてください。" } } diff --git a/packages/i18n/src/locales/ja/work-item.json b/packages/i18n/src/locales/ja/work-item.json index ca6ed7ffc96..41bcdaddf42 100644 --- a/packages/i18n/src/locales/ja/work-item.json +++ b/packages/i18n/src/locales/ja/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "作業項目をアーカイブできませんでした。もう一度お試しください。" - } + }, + "banner_message": "この作業項目はアーカイブされました。復元するには、アーカイブセクションをご確認ください。", + "go_to_archives": "アーカイブに移動" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "作業項目を更新できません", "message": "一部の作業項目では状態の変更が許可されていません。状態の変更が許可されていることを確認してください。" } + }, + "upgrade_banner": { + "message": "複数の作業項目の状態や優先度などを一括で変更できます。1回の操作につき平均3分を節約できます。", + "cta": "One にアップグレード" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ka-ge/page.json b/packages/i18n/src/locales/ka-ge/page.json index 0f47ed1844f..6e5930a3823 100644 --- a/packages/i18n/src/locales/ka-ge/page.json +++ b/packages/i18n/src/locales/ka-ge/page.json @@ -111,5 +111,8 @@ "success_message": "Page removed from collection.", "error_message": "Page could not be removed from the collection. Please try again." } + }, + "page_content_limit_banner": { + "message": "კონტენტის ლიმიტი ამოწურულია და რეალურ დროში სინქრონიზაცია გამორთულია. შექმენით ახალი გვერდი ან გამოიყენეთ ჩალაგებული გვერდები სინქრონიზაციის გასაგრძელებლად." } } diff --git a/packages/i18n/src/locales/ka-ge/work-item.json b/packages/i18n/src/locales/ka-ge/work-item.json index 00867103322..d28ab081541 100644 --- a/packages/i18n/src/locales/ka-ge/work-item.json +++ b/packages/i18n/src/locales/ka-ge/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "სამუშაო ელემენტის არქივირება ვერ მოხერხდა. გთხოვთ, სცადოთ ხელახლა." - } + }, + "banner_message": "ეს სამუშაო ელემენტი დაარქივებულია. მის აღსადგენად ეწვიეთ არქივების სექციას.", + "go_to_archives": "არქივებზე გადასვლა" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Unable to update work items", "message": "State change is not allowed for some work items. Ensure the state change is allowed." } + }, + "upgrade_banner": { + "message": "შეცვალეთ მდგომარეობა, პრიორიტეტი და სხვა რამდენიმე სამუშაო ელემენტისთვის ერთდროულად. საშუალოდ დაზოგეთ სამი წუთი თითოეულ ოპერაციაზე.", + "cta": "განახლება One-ზე" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ko/page.json b/packages/i18n/src/locales/ko/page.json index bfc60e4de75..079864c7910 100644 --- a/packages/i18n/src/locales/ko/page.json +++ b/packages/i18n/src/locales/ko/page.json @@ -111,5 +111,8 @@ "success_message": "페이지가 컬렉션에서 제거되었습니다.", "error_message": "페이지를 컬렉션에서 제거할 수 없습니다. 다시 시도해 주세요." } + }, + "page_content_limit_banner": { + "message": "콘텐츠 한도에 도달하여 실시간 동기화가 꺼졌습니다. 동기화를 계속하려면 새 페이지를 만들거나 중첩 페이지를 사용하세요." } } diff --git a/packages/i18n/src/locales/ko/work-item.json b/packages/i18n/src/locales/ko/work-item.json index 259adc2fc57..66007d29c70 100644 --- a/packages/i18n/src/locales/ko/work-item.json +++ b/packages/i18n/src/locales/ko/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "작업 항목을 아카이브할 수 없습니다. 다시 시도해주세요." - } + }, + "banner_message": "이 작업 항목은 아카이브되었습니다. 복원하려면 아카이브 섹션으로 이동하세요.", + "go_to_archives": "아카이브로 이동" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "작업 항목을 업데이트할 수 없습니다", "message": "일부 작업 항목에 대해 상태 변경이 허용되지 않습니다. 상태 변경이 허용되는지 확인하세요." } + }, + "upgrade_banner": { + "message": "여러 작업 항목의 상태, 우선순위 등을 한 번에 변경할 수 있습니다. 작업당 평균 3분을 절약합니다.", + "cta": "One으로 업그레이드" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/pl/page.json b/packages/i18n/src/locales/pl/page.json index 676a197ab11..fb7ca0b779c 100644 --- a/packages/i18n/src/locales/pl/page.json +++ b/packages/i18n/src/locales/pl/page.json @@ -111,5 +111,8 @@ "success_message": "Strona została usunięta z kolekcji.", "error_message": "Nie udało się usunąć strony z kolekcji. Spróbuj ponownie." } + }, + "page_content_limit_banner": { + "message": "Osiągnięto limit treści, a synchronizacja na żywo jest wyłączona. Utwórz nową stronę lub użyj zagnieżdżonych stron, aby kontynuować synchronizację." } } diff --git a/packages/i18n/src/locales/pl/work-item.json b/packages/i18n/src/locales/pl/work-item.json index f9c6a284957..b3759399ee5 100644 --- a/packages/i18n/src/locales/pl/work-item.json +++ b/packages/i18n/src/locales/pl/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Nie udało się zarchiwizować elementu pracy. Spróbuj ponownie." - } + }, + "banner_message": "Ten element pracy został zarchiwizowany. Przejdź do sekcji Archiwa, aby go przywrócić.", + "go_to_archives": "Przejdź do archiwów" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Nie można zaktualizować elementów pracy", "message": "Zmiana stanu nie jest dozwolona dla niektórych elementów pracy. Upewnij się, że zmiana stanu jest dozwolona." } + }, + "upgrade_banner": { + "message": "Zmieniaj stan, priorytet i inne właściwości wielu elementów pracy jednocześnie. Zaoszczędź średnio trzy minuty na operację.", + "cta": "Uaktualnij do One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/pt-BR/page.json b/packages/i18n/src/locales/pt-BR/page.json index d2c827f3543..aaeb04a39b7 100644 --- a/packages/i18n/src/locales/pt-BR/page.json +++ b/packages/i18n/src/locales/pt-BR/page.json @@ -111,5 +111,8 @@ "success_message": "Página removida da coleção.", "error_message": "Não foi possível remover a página da coleção. Tente novamente." } + }, + "page_content_limit_banner": { + "message": "Limite de conteúdo atingido e a sincronização em tempo real está desativada. Crie uma nova página ou use páginas aninhadas para continuar sincronizando." } } diff --git a/packages/i18n/src/locales/pt-BR/work-item.json b/packages/i18n/src/locales/pt-BR/work-item.json index 614a34a21d8..7436c408eb3 100644 --- a/packages/i18n/src/locales/pt-BR/work-item.json +++ b/packages/i18n/src/locales/pt-BR/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Não foi possível arquivar o item de trabalho. Por favor, tente novamente." - } + }, + "banner_message": "Este item de trabalho foi arquivado. Acesse a seção Arquivos para restaurá-lo.", + "go_to_archives": "Ir para arquivos" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Não é possível atualizar itens de trabalho", "message": "A mudança de estado não é permitida para alguns itens de trabalho. Certifique-se de que a mudança de estado seja permitida." } + }, + "upgrade_banner": { + "message": "Altere o estado, a prioridade e muito mais para vários itens de trabalho de uma vez. Economize em média três minutos por operação.", + "cta": "Upgrade para One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ro/page.json b/packages/i18n/src/locales/ro/page.json index d8f1602a27f..be1dad492f8 100644 --- a/packages/i18n/src/locales/ro/page.json +++ b/packages/i18n/src/locales/ro/page.json @@ -111,5 +111,8 @@ "success_message": "Pagina a fost eliminată din colecție.", "error_message": "Pagina nu a putut fi eliminată din colecție. Te rugăm să încerci din nou." } + }, + "page_content_limit_banner": { + "message": "Limita de conținut a fost atinsă, iar sincronizarea live este dezactivată. Creează o pagină nouă sau folosește pagini imbricate pentru a continua sincronizarea." } } diff --git a/packages/i18n/src/locales/ro/work-item.json b/packages/i18n/src/locales/ro/work-item.json index a989e537093..b9d56bd76e3 100644 --- a/packages/i18n/src/locales/ro/work-item.json +++ b/packages/i18n/src/locales/ro/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Activitatea nu a putut fi arhivată. Te rugăm să încerci din nou." - } + }, + "banner_message": "Această activitate a fost arhivată. Accesează secțiunea Arhive pentru a o restaura.", + "go_to_archives": "Accesează arhivele" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Imposibil de actualizat elementele de lucru", "message": "Schimbarea stării nu este permisă pentru unele elemente de lucru. Asigură-te că schimbarea stării este permisă." } + }, + "upgrade_banner": { + "message": "Schimbă starea, prioritatea și multe altele pentru mai multe activități simultan. Economisește în medie trei minute per operațiune.", + "cta": "Treci la One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ru/page.json b/packages/i18n/src/locales/ru/page.json index fa4e0db84a4..f92020d5090 100644 --- a/packages/i18n/src/locales/ru/page.json +++ b/packages/i18n/src/locales/ru/page.json @@ -111,5 +111,8 @@ "success_message": "Страница удалена из коллекции.", "error_message": "Не удалось удалить страницу из коллекции. Повторите попытку." } + }, + "page_content_limit_banner": { + "message": "Достигнут лимит контента, живая синхронизация отключена. Создайте новую страницу или используйте вложенные страницы, чтобы продолжить синхронизацию." } } diff --git a/packages/i18n/src/locales/ru/work-item.json b/packages/i18n/src/locales/ru/work-item.json index df676a95bd1..014478fbc47 100644 --- a/packages/i18n/src/locales/ru/work-item.json +++ b/packages/i18n/src/locales/ru/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Ошибка архивации рабочего элемента. Попробуйте позже." - } + }, + "banner_message": "Этот рабочий элемент архивирован. Перейдите в раздел «Архивы», чтобы восстановить его.", + "go_to_archives": "Перейти в архивы" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Не удалось обновить рабочие элементы", "message": "Изменение состояния не разрешено для некоторых рабочих элементов. Убедитесь, что изменение состояния разрешено." } + }, + "upgrade_banner": { + "message": "Изменяйте статус, приоритет и другие параметры сразу для нескольких рабочих элементов. В среднем экономьте три минуты на операцию.", + "cta": "Обновить до One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/sk/page.json b/packages/i18n/src/locales/sk/page.json index 7b5f029cf9b..b5833f0cf89 100644 --- a/packages/i18n/src/locales/sk/page.json +++ b/packages/i18n/src/locales/sk/page.json @@ -111,5 +111,8 @@ "success_message": "Stránka bola odstránená z kolekcie.", "error_message": "Stránku sa nepodarilo odstrániť z kolekcie. Skúste to prosím znova." } + }, + "page_content_limit_banner": { + "message": "Bol dosiahnutý limit obsahu a živá synchronizácia je vypnutá. Vytvorte novú stránku alebo použite vnorené stránky na pokračovanie synchronizácie." } } diff --git a/packages/i18n/src/locales/sk/work-item.json b/packages/i18n/src/locales/sk/work-item.json index f015c780f38..803aab56d3a 100644 --- a/packages/i18n/src/locales/sk/work-item.json +++ b/packages/i18n/src/locales/sk/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Archivácia pracovnej položky zlyhala. Skúste to prosím znova." - } + }, + "banner_message": "Táto pracovná položka bola archivovaná. Prejdite do sekcie Archívy a obnovte ju.", + "go_to_archives": "Prejsť do archívov" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Nemožno aktualizovať pracovné položky", "message": "Zmena stavu nie je povolená pre niektoré pracovné položky. Uistite sa, že zmena stavu je povolená." } + }, + "upgrade_banner": { + "message": "Menite stav, prioritu a ďalšie vlastnosti viacerých pracovných položiek naraz. V priemere ušetríte tri minúty na operáciu.", + "cta": "Upgradovať na One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/tr-TR/page.json b/packages/i18n/src/locales/tr-TR/page.json index 8ab72c06bd4..a2cf0e1785e 100644 --- a/packages/i18n/src/locales/tr-TR/page.json +++ b/packages/i18n/src/locales/tr-TR/page.json @@ -111,5 +111,8 @@ "success_message": "Sayfa koleksiyondan kaldırıldı.", "error_message": "Sayfa koleksiyondan kaldırılamadı. Lütfen tekrar deneyin." } + }, + "page_content_limit_banner": { + "message": "İçerik sınırına ulaşıldı ve canlı senkronizasyon kapalı. Senkronizasyona devam etmek için yeni bir sayfa oluşturun veya iç içe sayfalar kullanın." } } diff --git a/packages/i18n/src/locales/tr-TR/work-item.json b/packages/i18n/src/locales/tr-TR/work-item.json index 0cf70387523..27ef7de45d1 100644 --- a/packages/i18n/src/locales/tr-TR/work-item.json +++ b/packages/i18n/src/locales/tr-TR/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "İş öğesi arşivlenemedi. Lütfen tekrar deneyin." - } + }, + "banner_message": "Bu iş öğesi arşivlendi. Geri yüklemek için Arşivler bölümüne gidin.", + "go_to_archives": "Arşivlere git" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "İş öğeleri güncellenemiyor", "message": "Bazı iş öğeleri için durum değişikliğine izin verilmiyor. Durum değişikliğine izin verildiğinden emin olun." } + }, + "upgrade_banner": { + "message": "Birden fazla iş öğesinin durumunu, önceliğini ve daha fazlasını tek seferde değiştirin. İşlem başına ortalama üç dakika kazanın.", + "cta": "One'a yükseltin" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/ua/page.json b/packages/i18n/src/locales/ua/page.json index 23bc52b13c1..9605d8e1a07 100644 --- a/packages/i18n/src/locales/ua/page.json +++ b/packages/i18n/src/locales/ua/page.json @@ -111,5 +111,8 @@ "success_message": "Сторінку видалено з колекції.", "error_message": "Не вдалося видалити сторінку з колекції. Спробуйте ще раз." } + }, + "page_content_limit_banner": { + "message": "Досягнуто ліміту вмісту, і живу синхронізацію вимкнено. Створіть нову сторінку або використайте вкладені сторінки, щоб продовжити синхронізацію." } } diff --git a/packages/i18n/src/locales/ua/work-item.json b/packages/i18n/src/locales/ua/work-item.json index 158f41610b0..c799374be43 100644 --- a/packages/i18n/src/locales/ua/work-item.json +++ b/packages/i18n/src/locales/ua/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Не вдалося заархівувати робочу одиницю. Спробуйте ще раз." - } + }, + "banner_message": "Цю робочу одиницю заархівовано. Перейдіть до розділу «Архіви», щоб відновити її.", + "go_to_archives": "Перейти до архівів" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Неможливо оновити робочі елементи", "message": "Зміна стану не дозволена для деяких робочих елементів. Переконайтеся, що зміна стану дозволена." } + }, + "upgrade_banner": { + "message": "Змінюйте стан, пріоритет та інше одразу для кількох робочих одиниць. У середньому економте три хвилини на операцію.", + "cta": "Підвищити до One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/vi-VN/page.json b/packages/i18n/src/locales/vi-VN/page.json index b54340fab29..c2543741926 100644 --- a/packages/i18n/src/locales/vi-VN/page.json +++ b/packages/i18n/src/locales/vi-VN/page.json @@ -111,5 +111,8 @@ "success_message": "Đã xóa trang khỏi bộ sưu tập.", "error_message": "Không thể xóa trang khỏi bộ sưu tập. Vui lòng thử lại." } + }, + "page_content_limit_banner": { + "message": "Đã đạt giới hạn nội dung và đồng bộ trực tiếp đã tắt. Tạo trang mới hoặc dùng trang lồng nhau để tiếp tục đồng bộ." } } diff --git a/packages/i18n/src/locales/vi-VN/work-item.json b/packages/i18n/src/locales/vi-VN/work-item.json index 848fd48ae34..fea748bc199 100644 --- a/packages/i18n/src/locales/vi-VN/work-item.json +++ b/packages/i18n/src/locales/vi-VN/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "Không thể lưu trữ mục công việc. Vui lòng thử lại." - } + }, + "banner_message": "Mục công việc này đã được lưu trữ. Truy cập mục Lưu trữ để khôi phục.", + "go_to_archives": "Đi đến lưu trữ" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "Không thể cập nhật mục công việc", "message": "Thay đổi trạng thái không được phép cho một số mục công việc. Đảm bảo thay đổi trạng thái được cho phép." } + }, + "upgrade_banner": { + "message": "Thay đổi trạng thái, mức ưu tiên và nhiều thứ khác cho nhiều mục công việc cùng lúc. Tiết kiệm trung bình ba phút cho mỗi thao tác.", + "cta": "Nâng cấp lên One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/zh-CN/page.json b/packages/i18n/src/locales/zh-CN/page.json index aab6a25cd85..55d0ddcb2c9 100644 --- a/packages/i18n/src/locales/zh-CN/page.json +++ b/packages/i18n/src/locales/zh-CN/page.json @@ -111,5 +111,8 @@ "success_message": "页面已从集合中移除。", "error_message": "无法将页面从集合中移除。请重试。" } + }, + "page_content_limit_banner": { + "message": "已达到内容上限,实时同步已关闭。请创建新页面或使用嵌套页面以继续同步。" } } diff --git a/packages/i18n/src/locales/zh-CN/work-item.json b/packages/i18n/src/locales/zh-CN/work-item.json index 0617955699e..bfa3e5e2c7b 100644 --- a/packages/i18n/src/locales/zh-CN/work-item.json +++ b/packages/i18n/src/locales/zh-CN/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "无法归档工作项。请重试。" - } + }, + "banner_message": "此工作项已归档。请前往归档部分以恢复它。", + "go_to_archives": "前往归档" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "无法更新工作项", "message": "某些工作项的状态更改不被允许。请确保状态更改是被允许的。" } + }, + "upgrade_banner": { + "message": "一次性更改多个工作项的状态、优先级等。平均每次操作可节省三分钟。", + "cta": "升级到 One" } }, "recurring_work_items": { diff --git a/packages/i18n/src/locales/zh-TW/page.json b/packages/i18n/src/locales/zh-TW/page.json index f0e876a9641..885e31c4647 100644 --- a/packages/i18n/src/locales/zh-TW/page.json +++ b/packages/i18n/src/locales/zh-TW/page.json @@ -111,5 +111,8 @@ "success_message": "頁面已從集合中移除。", "error_message": "無法將頁面從集合中移除。請再試一次。" } + }, + "page_content_limit_banner": { + "message": "已達到內容上限,即時同步已關閉。請建立新頁面或使用巢狀頁面以繼續同步。" } } diff --git a/packages/i18n/src/locales/zh-TW/work-item.json b/packages/i18n/src/locales/zh-TW/work-item.json index 450b65a1131..4d59f7b3044 100644 --- a/packages/i18n/src/locales/zh-TW/work-item.json +++ b/packages/i18n/src/locales/zh-TW/work-item.json @@ -172,7 +172,9 @@ }, "failed": { "message": "無法封存工作事項。請再試一次。" - } + }, + "banner_message": "此工作事項已封存。請前往封存區段以還原它。", + "go_to_archives": "前往封存" }, "restore": { "success": { @@ -326,6 +328,10 @@ "title": "無法更新工作項目", "message": "某些工作項目不允許狀態變更。請確保狀態變更是允許的。" } + }, + "upgrade_banner": { + "message": "一次性變更多個工作事項的狀態、優先順序等。平均每次操作可節省三分鐘。", + "cta": "升級到 One" } }, "recurring_work_items": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7e8251a913..c1091fa51f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -876,7 +876,7 @@ importers: version: 2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@makeplane/propel': specifier: 'catalog:' - version: 0.2.0(@date-fns/tz@1.4.1)(@types/react@19.2.17)(date-fns@4.1.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.1.17) + version: 0.3.0(@date-fns/tz@1.4.1)(@types/react@19.2.17)(date-fns@4.1.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.1.17) '@plane/constants': specifier: workspace:* version: link:../../packages/constants