Compare commits
18 Commits
v0.6.0
...
fix/react-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2ac3acfb6 | ||
|
|
e9ebd06eaa | ||
|
|
b4e9dd3811 | ||
|
|
d6aa82e070 | ||
|
|
4291d7bc8c | ||
|
|
5c72968d44 | ||
|
|
5b586f4871 | ||
|
|
fee82e5e73 | ||
|
|
03a043784a | ||
|
|
395dbfae04 | ||
|
|
9ec4bedd9a | ||
|
|
ca694595c7 | ||
|
|
0500d5171d | ||
|
|
a15e193f66 | ||
|
|
019ecbc364 | ||
|
|
82b2b4a8e1 | ||
|
|
c1adb2d4dd | ||
|
|
25ed4e39b3 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -55,4 +55,7 @@ i18n.cache
|
||||
# pgdata
|
||||
/apps/web/pgdata
|
||||
|
||||
# local scripts
|
||||
scripts/
|
||||
|
||||
.claude
|
||||
@@ -384,6 +384,9 @@ checksums:
|
||||
i0ZMQl/message: f739058266a2cb6a3d7cca14de09c69a
|
||||
i0ZMQl/origin/0/0: 0ad2af981579a62b084b3d41462c5546
|
||||
i0ZMQl/translation: f739058266a2cb6a3d7cca14de09c69a
|
||||
wE3hGS/message: 1b3bccc465ad34111956b1c705c52031
|
||||
wE3hGS/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
wE3hGS/translation: 1b3bccc465ad34111956b1c705c52031
|
||||
wewm3j/message: 985c0177744ec56d8dac84f66ec284ca
|
||||
wewm3j/origin/0/0: bcd95e286f12800a3e7ee0a71feb3ca5
|
||||
wewm3j/translation: 985c0177744ec56d8dac84f66ec284ca
|
||||
@@ -536,19 +539,20 @@ checksums:
|
||||
dEgA5A/origin/1/0: a50c4fbde8da6e0a77c4e0aef0b44dea
|
||||
dEgA5A/origin/2/0: 97bd206a05414e2a571020d64e166093
|
||||
dEgA5A/origin/3/0: 522726bb62051656dc0d165185d6b451
|
||||
dEgA5A/origin/4/0: b2059fa4b8b99cc10440da26475b234c
|
||||
dEgA5A/origin/5/0: 2a382c1cdf010f01a8e95c3e05f6df53
|
||||
dEgA5A/origin/6/0: d55f532bb5ae247e3a018978be0da463
|
||||
dEgA5A/origin/7/0: 4b4f55c033add8db69178563832227c6
|
||||
dEgA5A/origin/8/0: 68450df287fb46ea629e818732c1291a
|
||||
dEgA5A/origin/9/0: 15ea2dfd5eae4e05b226b1320103476e
|
||||
dEgA5A/origin/10/0: 03c00909b41be01231cd3e843c8ee44e
|
||||
dEgA5A/origin/11/0: 0627e0040ca4939c9a57349e98c51797
|
||||
dEgA5A/origin/12/0: 15792234f408027822ee71ccddde6f9b
|
||||
dEgA5A/origin/13/0: 5c60161e173f5eae9276d8e4c70b4ebb
|
||||
dEgA5A/origin/14/0: a1fde3fcce608870830f168f027727ff
|
||||
dEgA5A/origin/15/0: 83911e3eacbad4583e2b1647a784d154
|
||||
dEgA5A/origin/16/0: dbad0c8d7863cb41f5495264f82e7081
|
||||
dEgA5A/origin/4/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
dEgA5A/origin/5/0: b2059fa4b8b99cc10440da26475b234c
|
||||
dEgA5A/origin/6/0: 2a382c1cdf010f01a8e95c3e05f6df53
|
||||
dEgA5A/origin/7/0: d55f532bb5ae247e3a018978be0da463
|
||||
dEgA5A/origin/8/0: 4b4f55c033add8db69178563832227c6
|
||||
dEgA5A/origin/9/0: 68450df287fb46ea629e818732c1291a
|
||||
dEgA5A/origin/10/0: 15ea2dfd5eae4e05b226b1320103476e
|
||||
dEgA5A/origin/11/0: 03c00909b41be01231cd3e843c8ee44e
|
||||
dEgA5A/origin/12/0: 0627e0040ca4939c9a57349e98c51797
|
||||
dEgA5A/origin/13/0: 15792234f408027822ee71ccddde6f9b
|
||||
dEgA5A/origin/14/0: 5c60161e173f5eae9276d8e4c70b4ebb
|
||||
dEgA5A/origin/15/0: a1fde3fcce608870830f168f027727ff
|
||||
dEgA5A/origin/16/0: 83911e3eacbad4583e2b1647a784d154
|
||||
dEgA5A/origin/17/0: dbad0c8d7863cb41f5495264f82e7081
|
||||
dEgA5A/translation: 2e2a849c2223911717de8caa2c71bade
|
||||
kryGs%2B/message: bba0beaced7ea954ceb980f2b022ffee
|
||||
kryGs%2B/origin/0/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
|
||||
@@ -560,6 +564,9 @@ checksums:
|
||||
9trBXW/message: 0035c67fb6f70992effb263b0b30e6d4
|
||||
9trBXW/origin/0/0: 1b05beba6bdd908015fa8e798717f024
|
||||
9trBXW/translation: 0035c67fb6f70992effb263b0b30e6d4
|
||||
AgE2vR/message: a295a7050379531f9f56ada01c32e8e1
|
||||
AgE2vR/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
AgE2vR/translation: a295a7050379531f9f56ada01c32e8e1
|
||||
fEY2vP/message: 91509e2f92b0b3b11330b6983139fdbf
|
||||
fEY2vP/origin/0/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
|
||||
fEY2vP/origin/1/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
|
||||
@@ -932,6 +939,9 @@ checksums:
|
||||
f8fH8W/message: 991b75727b6784c1a063a7462b76186d
|
||||
f8fH8W/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
|
||||
f8fH8W/translation: 991b75727b6784c1a063a7462b76186d
|
||||
Uf%2B1DF/message: e5b4d2df65d6676318682404de4e38d3
|
||||
Uf%2B1DF/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
Uf%2B1DF/translation: e5b4d2df65d6676318682404de4e38d3
|
||||
Odv3J6/message: f3cc49ba2dc3f9c33917f8a749d68bf5
|
||||
Odv3J6/origin/0/0: 9d4260644f1a12f41d6b72574eeb111c
|
||||
Odv3J6/translation: f3cc49ba2dc3f9c33917f8a749d68bf5
|
||||
@@ -1675,12 +1685,21 @@ checksums:
|
||||
vneRvS/message: e228107df80015377112d41f4f155cb3
|
||||
vneRvS/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
|
||||
vneRvS/translation: e228107df80015377112d41f4f155cb3
|
||||
sZ%2FWDz/message: 4ae9f1cf0c53ebe8852574353d83d252
|
||||
sZ%2FWDz/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
sZ%2FWDz/translation: 4ae9f1cf0c53ebe8852574353d83d252
|
||||
VvCMyU/message: a70262481fb1e9e3ff2506b5c3efa03d
|
||||
VvCMyU/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
VvCMyU/translation: a70262481fb1e9e3ff2506b5c3efa03d
|
||||
51UCsN/message: ce14fde5e972c2b5276c25ddded817c4
|
||||
51UCsN/origin/0/0: 0eeeb7e68164ff118040918f1ef00a7a
|
||||
51UCsN/translation: ce14fde5e972c2b5276c25ddded817c4
|
||||
J4%2BOTA/message: 6ad27e803483208b5313660b7b5791d3
|
||||
J4%2BOTA/origin/0/0: fd0e66cef8d46e96bcf3143a12f9b6db
|
||||
J4%2BOTA/translation: 6ad27e803483208b5313660b7b5791d3
|
||||
S3wq2O/message: 9268b9b2e31373e5ac2e29c19d08e1ef
|
||||
S3wq2O/origin/0/0: 0ad2af981579a62b084b3d41462c5546
|
||||
S3wq2O/translation: 9268b9b2e31373e5ac2e29c19d08e1ef
|
||||
BOqTi5/message: 11edf0427766c26db541d46379dc3c16
|
||||
BOqTi5/placeholders/0/0: 9db68a4b386b9fa1fd1d5797c32be100
|
||||
BOqTi5/placeholders/1/0: b837a9e8bd06b58be95699b3ee663f43
|
||||
@@ -2216,6 +2235,9 @@ checksums:
|
||||
zYRVNp/message: 8b36455dd5b43e56d2ab06e522c3bacc
|
||||
zYRVNp/origin/0/0: 97bd206a05414e2a571020d64e166093
|
||||
zYRVNp/translation: 8b36455dd5b43e56d2ab06e522c3bacc
|
||||
NM2hyD/message: dfd9e9abdca731ba9ca3fcff645b575e
|
||||
NM2hyD/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
NM2hyD/translation: dfd9e9abdca731ba9ca3fcff645b575e
|
||||
wgNoIs/message: eedc7cdb02de467c15dc418a066a77f2
|
||||
wgNoIs/origin/0/0: 3c57a918258af4b44c187f58d203345f
|
||||
wgNoIs/origin/1/0: 3c57a918258af4b44c187f58d203345f
|
||||
@@ -2373,6 +2395,9 @@ checksums:
|
||||
uAQUqI/message: 4e1fcce15854d824919b4a582c697c90
|
||||
uAQUqI/origin/0/0: dc1a240d2d0cccb102c67ca311d4e457
|
||||
uAQUqI/translation: 4e1fcce15854d824919b4a582c697c90
|
||||
hQRttt/message: 7c91ef5f747eea9f77a9c4f23e19fb2e
|
||||
hQRttt/origin/0/0: b1f4eb6768222ea825703105f6014486
|
||||
hQRttt/translation: 7c91ef5f747eea9f77a9c4f23e19fb2e
|
||||
WYDptz/message: 05f2b4abfc36def17756a6969983cf86
|
||||
WYDptz/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
|
||||
WYDptz/translation: 05f2b4abfc36def17756a6969983cf86
|
||||
@@ -2459,6 +2484,10 @@ checksums:
|
||||
NcFrgC/message: bd15a7b3d8b4bce18cd42682ea1ec164
|
||||
NcFrgC/origin/0/0: 0ad2af981579a62b084b3d41462c5546
|
||||
NcFrgC/translation: bd15a7b3d8b4bce18cd42682ea1ec164
|
||||
ZWk38w/message: 0a6b07963240d329f206e280282e36da
|
||||
ZWk38w/placeholders/0/0: 9622afa3aca4038b79417d808a505c87
|
||||
ZWk38w/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
ZWk38w/translation: 0a6b07963240d329f206e280282e36da
|
||||
C6gv54/message: 1573c77059bc92df17e661befda8d9b7
|
||||
C6gv54/origin/0/0: 0ad2af981579a62b084b3d41462c5546
|
||||
C6gv54/translation: 1573c77059bc92df17e661befda8d9b7
|
||||
@@ -2644,6 +2673,9 @@ checksums:
|
||||
Oo4E6p/origin/0/0: 97bd206a05414e2a571020d64e166093
|
||||
Oo4E6p/origin/1/0: 1b05beba6bdd908015fa8e798717f024
|
||||
Oo4E6p/translation: af985cf72c47df76e2f2139a427d9948
|
||||
d196%2F6/message: 64c37452b5ff985b44f1347ce0ef659f
|
||||
d196%2F6/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
d196%2F6/translation: 64c37452b5ff985b44f1347ce0ef659f
|
||||
K7k9u3/message: 1cf9d227042f6a65adba38cb7296830d
|
||||
K7k9u3/origin/0/0: fd0e66cef8d46e96bcf3143a12f9b6db
|
||||
K7k9u3/translation: 1cf9d227042f6a65adba38cb7296830d
|
||||
@@ -3030,6 +3062,9 @@ checksums:
|
||||
vAj6xG/message: a6152a41b2d8f64d5a657e5b8bc808a9
|
||||
vAj6xG/origin/0/0: 4980d8e27a628e7cd9a70b839d844083
|
||||
vAj6xG/translation: a6152a41b2d8f64d5a657e5b8bc808a9
|
||||
tUL16u/message: 9064ca54e8a3ad28c03a173bc7b01184
|
||||
tUL16u/origin/0/0: f8e87f3fc3dc63bc7961601feb860fa8
|
||||
tUL16u/translation: 9064ca54e8a3ad28c03a173bc7b01184
|
||||
h2FKMV/message: 11d928b1993d95d54a95f85f8ae5016d
|
||||
h2FKMV/origin/0/0: 6812b79a8fdc3527586b523d4c137340
|
||||
h2FKMV/origin/1/0: 85d0a3237fa9329fba3f0278a2cd7284
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
"@kan/api": "workspace:*",
|
||||
"@kan/auth": "workspace:*",
|
||||
"@kan/db": "workspace:^",
|
||||
"@kan/email": "workspace:^",
|
||||
"@kan/logger": "workspace:^",
|
||||
"@kan/shared": "workspace:^",
|
||||
"@lingui/babel-preset-react": "^2.9.2",
|
||||
"@lingui/conf": "^5.3.2",
|
||||
"@lingui/macro": "^5.3.2",
|
||||
"@lingui/react": "^5.3.2",
|
||||
"@novu/api": "^3.11.0",
|
||||
"@t3-oss/env-nextjs": "^0.11.1",
|
||||
"@tailwindcss/typography": "^0.5.16",
|
||||
"@tanstack/react-query": "catalog:",
|
||||
|
||||
@@ -10,6 +10,7 @@ import { t } from "@lingui/core/macro";
|
||||
import Link from "@tiptap/extension-link";
|
||||
import Mention from "@tiptap/extension-mention";
|
||||
import Placeholder from "@tiptap/extension-placeholder";
|
||||
import Typography from "@tiptap/extension-typography";
|
||||
import {
|
||||
BubbleMenu,
|
||||
EditorContent,
|
||||
@@ -17,7 +18,6 @@ import {
|
||||
ReactRenderer,
|
||||
useEditor,
|
||||
} from "@tiptap/react";
|
||||
import Typography from "@tiptap/extension-typography";
|
||||
import StarterKit from "@tiptap/starter-kit";
|
||||
import Suggestion from "@tiptap/suggestion";
|
||||
import {
|
||||
@@ -180,13 +180,13 @@ const RenderSuggestions = () => {
|
||||
|
||||
if (!props.clientRect) return;
|
||||
|
||||
popup[0]?.setProps({
|
||||
popup?.[0]?.setProps({
|
||||
getReferenceClientRect: props.clientRect,
|
||||
});
|
||||
},
|
||||
onKeyDown(props: SuggestionKeyDownProps): boolean {
|
||||
if (props.event.key === "Escape") {
|
||||
popup[0]?.hide();
|
||||
popup?.[0]?.hide();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ const RenderSuggestions = () => {
|
||||
);
|
||||
},
|
||||
onExit() {
|
||||
popup[0]?.destroy();
|
||||
popup?.[0]?.destroy();
|
||||
reactRenderer.destroy();
|
||||
},
|
||||
};
|
||||
@@ -308,11 +308,11 @@ const renderMentionSuggestions = () => {
|
||||
onUpdate(props: any) {
|
||||
reactRenderer.updateProps(props);
|
||||
if (!props.clientRect) return;
|
||||
popup[0]?.setProps({ getReferenceClientRect: props.clientRect });
|
||||
popup?.[0]?.setProps({ getReferenceClientRect: props.clientRect });
|
||||
},
|
||||
onKeyDown(props: SuggestionKeyDownProps) {
|
||||
if (props.event.key === "Escape") {
|
||||
popup[0]?.hide();
|
||||
popup?.[0]?.hide();
|
||||
return true;
|
||||
}
|
||||
return (
|
||||
@@ -324,7 +324,7 @@ const renderMentionSuggestions = () => {
|
||||
);
|
||||
},
|
||||
onExit() {
|
||||
popup[0]?.destroy();
|
||||
popup?.[0]?.destroy();
|
||||
reactRenderer.destroy();
|
||||
},
|
||||
};
|
||||
@@ -440,6 +440,7 @@ export default function Editor({
|
||||
content,
|
||||
onChange,
|
||||
onBlur,
|
||||
onSubmit,
|
||||
readOnly = false,
|
||||
workspaceMembers,
|
||||
enableYouTubeEmbed = true,
|
||||
@@ -449,6 +450,7 @@ export default function Editor({
|
||||
content: string | null;
|
||||
onChange?: (value: string) => void;
|
||||
onBlur?: () => void;
|
||||
onSubmit?: () => void;
|
||||
readOnly?: boolean;
|
||||
workspaceMembers: WorkspaceMember[];
|
||||
enableYouTubeEmbed?: boolean;
|
||||
@@ -461,12 +463,16 @@ export default function Editor({
|
||||
// in refs to avoid the editor capturing stale closures on re-render.
|
||||
const onChangeRef = useRef(onChange);
|
||||
const onBlurRef = useRef(onBlur);
|
||||
const onSubmitRef = useRef(onSubmit);
|
||||
useEffect(() => {
|
||||
onChangeRef.current = onChange;
|
||||
}, [onChange]);
|
||||
useEffect(() => {
|
||||
onBlurRef.current = onBlur;
|
||||
}, [onBlur]);
|
||||
useEffect(() => {
|
||||
onSubmitRef.current = onSubmit;
|
||||
}, [onSubmit]);
|
||||
|
||||
const editor = useEditor(
|
||||
{
|
||||
@@ -489,8 +495,8 @@ export default function Editor({
|
||||
Placeholder.configure({
|
||||
placeholder: readOnly
|
||||
? ""
|
||||
: placeholder ??
|
||||
t`Add description... (type '/' to open commands or '@' to mention)`,
|
||||
: (placeholder ??
|
||||
t`Add description... (type '/' to open commands or '@' to mention)`),
|
||||
}),
|
||||
SlashCommands.configure({
|
||||
commandItems: getCommandItems(disableHeadings),
|
||||
@@ -508,24 +514,26 @@ export default function Editor({
|
||||
suggestion: {
|
||||
char: "@",
|
||||
items: ({ query }: { query: string }) => {
|
||||
const withEmail = workspaceMembers.filter((member) => member.email);
|
||||
|
||||
const withEmail = workspaceMembers.filter(
|
||||
(member) => member.email,
|
||||
);
|
||||
|
||||
const mapped = withEmail.map((member: WorkspaceMember) => ({
|
||||
id: member.publicId,
|
||||
label: member?.user?.name?.trim() || member.email || "",
|
||||
image: member?.user?.image ?? null,
|
||||
}));
|
||||
|
||||
|
||||
const all: MentionItem[] = mapped.filter(
|
||||
(item) => item.label && item.label.length > 0,
|
||||
);
|
||||
|
||||
|
||||
const q = query.toLowerCase().trim();
|
||||
|
||||
|
||||
if (q === "") {
|
||||
return all;
|
||||
}
|
||||
|
||||
|
||||
const filtered = all.filter((u) =>
|
||||
u.label.toLowerCase().includes(q),
|
||||
);
|
||||
@@ -551,15 +559,15 @@ export default function Editor({
|
||||
},
|
||||
}),
|
||||
Typography.configure({
|
||||
openDoubleQuote: false,
|
||||
closeDoubleQuote: false,
|
||||
openSingleQuote: false,
|
||||
closeSingleQuote: false,
|
||||
oneHalf: false,
|
||||
oneQuarter: false,
|
||||
threeQuarters: false,
|
||||
superscriptTwo: false,
|
||||
superscriptThree: false,
|
||||
openDoubleQuote: false,
|
||||
closeDoubleQuote: false,
|
||||
openSingleQuote: false,
|
||||
closeSingleQuote: false,
|
||||
oneHalf: false,
|
||||
oneQuarter: false,
|
||||
threeQuarters: false,
|
||||
superscriptTwo: false,
|
||||
superscriptThree: false,
|
||||
}),
|
||||
...(enableYouTubeEmbed ? [YouTubeNode] : []),
|
||||
],
|
||||
@@ -581,6 +589,13 @@ export default function Editor({
|
||||
attributes: {
|
||||
class: "outline-none focus:outline-none focus-visible:ring-0",
|
||||
},
|
||||
handleKeyDown: (_view, event) => {
|
||||
if ((event.metaKey || event.ctrlKey) && event.key === "Enter") {
|
||||
onSubmitRef.current?.();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
},
|
||||
editable: !readOnly,
|
||||
injectCSS: false,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Button } from "@headlessui/react";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
import { useTheme } from "next-themes";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { HiBolt } from "react-icons/hi2";
|
||||
import {
|
||||
TbLayoutSidebarLeftCollapse,
|
||||
@@ -92,56 +92,59 @@ export default function SideNavigation({
|
||||
href: string;
|
||||
icon: object;
|
||||
keyboardShortcut: KeyboardShortcut;
|
||||
}[] = [
|
||||
{
|
||||
name: t`Boards`,
|
||||
href: "/boards",
|
||||
icon: isDarkMode ? boardsIconDark : boardsIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "B" }],
|
||||
action: () => router.push("/boards"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to boards`,
|
||||
}[] = useMemo(
|
||||
() => [
|
||||
{
|
||||
name: t`Boards`,
|
||||
href: "/boards",
|
||||
icon: isDarkMode ? boardsIconDark : boardsIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "B" }],
|
||||
action: () => router.push("/boards"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to boards`,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: t`Templates`,
|
||||
href: "/templates",
|
||||
icon: isDarkMode ? templatesIconDark : templatesIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "T" }],
|
||||
action: () => router.push("/templates"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to templates`,
|
||||
{
|
||||
name: t`Templates`,
|
||||
href: "/templates",
|
||||
icon: isDarkMode ? templatesIconDark : templatesIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "T" }],
|
||||
action: () => router.push("/templates"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to templates`,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: t`Members`,
|
||||
href: "/members",
|
||||
icon: isDarkMode ? membersIconDark : membersIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "M" }],
|
||||
action: () => router.push("/members"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to members`,
|
||||
{
|
||||
name: t`Members`,
|
||||
href: "/members",
|
||||
icon: isDarkMode ? membersIconDark : membersIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "M" }],
|
||||
action: () => router.push("/members"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to members`,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: t`Settings`,
|
||||
href: "/settings",
|
||||
icon: isDarkMode ? settingsIconDark : settingsIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "S" }],
|
||||
action: () => router.push("/settings"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to settings`,
|
||||
{
|
||||
name: t`Settings`,
|
||||
href: "/settings",
|
||||
icon: isDarkMode ? settingsIconDark : settingsIconLight,
|
||||
keyboardShortcut: {
|
||||
type: "SEQUENCE",
|
||||
strokes: [{ key: "G" }, { key: "S" }],
|
||||
action: () => router.push("/settings"),
|
||||
group: "NAVIGATION",
|
||||
description: t`Go to settings`,
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
],
|
||||
[isDarkMode],
|
||||
);
|
||||
|
||||
const toggleCollapse = () => {
|
||||
setIsCollapsed(!isCollapsed);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { ReactNode } from "react";
|
||||
import type { Root } from "react-dom/client";
|
||||
import type { Placement } from "tippy.js";
|
||||
import type { Placement, Instance as TippyInstance } from "tippy.js";
|
||||
import { useEffect, useRef } from "react";
|
||||
import { createRoot } from "react-dom/client";
|
||||
import tippy from "tippy.js";
|
||||
@@ -20,16 +20,16 @@ export function Tooltip({
|
||||
}: TooltipProps) {
|
||||
const triggerRef = useRef<HTMLDivElement>(null);
|
||||
const rootRef = useRef<Root | null>(null);
|
||||
const tippyRef = useRef<TippyInstance | null>(null);
|
||||
const contentRef = useRef(content);
|
||||
contentRef.current = content;
|
||||
|
||||
useEffect(() => {
|
||||
if (!triggerRef.current) return;
|
||||
|
||||
if (!content) return;
|
||||
|
||||
const container = document.createElement("div");
|
||||
const root = createRoot(container);
|
||||
rootRef.current = root;
|
||||
root.render(content);
|
||||
|
||||
const instance = tippy(triggerRef.current, {
|
||||
content: container,
|
||||
@@ -39,12 +39,33 @@ export function Tooltip({
|
||||
theme: "tooltip",
|
||||
touch: false,
|
||||
});
|
||||
tippyRef.current = instance;
|
||||
|
||||
if (contentRef.current) {
|
||||
root.render(contentRef.current);
|
||||
} else {
|
||||
instance.disable();
|
||||
}
|
||||
|
||||
return () => {
|
||||
instance.destroy();
|
||||
rootRef.current?.unmount();
|
||||
tippyRef.current = null;
|
||||
root.unmount();
|
||||
rootRef.current = null;
|
||||
};
|
||||
}, [content, placement, delay]);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [placement, delay]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!content) {
|
||||
tippyRef.current?.disable();
|
||||
return;
|
||||
}
|
||||
if (tippyRef.current) {
|
||||
tippyRef.current.enable();
|
||||
rootRef.current?.render(content);
|
||||
}
|
||||
}, [content]);
|
||||
|
||||
return (
|
||||
<div ref={triggerRef} className="inline-flex">
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useRouter } from "next/navigation";
|
||||
import { Button, Menu, Transition } from "@headlessui/react";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
import { Fragment, useState } from "react";
|
||||
import { Fragment, useMemo, useState } from "react";
|
||||
import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2";
|
||||
import { twMerge } from "tailwind-merge";
|
||||
|
||||
@@ -26,17 +26,22 @@ export default function WorkspaceMenu({
|
||||
const router = useRouter();
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
const { tooltipContent: commandPaletteShortcutTooltipContent } =
|
||||
useKeyboardShortcut({
|
||||
type: "PRESS",
|
||||
const commandPaletteShortcut = useMemo(
|
||||
() => ({
|
||||
type: "PRESS" as const,
|
||||
stroke: {
|
||||
key: "k",
|
||||
modifiers: ["META"],
|
||||
modifiers: ["META"] as ("META" | "CONTROL" | "ALT" | "SHIFT")[],
|
||||
},
|
||||
action: () => setIsOpen(true),
|
||||
description: t`Open command menu`,
|
||||
group: "GENERAL",
|
||||
});
|
||||
group: "GENERAL" as const,
|
||||
}),
|
||||
[],
|
||||
);
|
||||
|
||||
const { tooltipContent: commandPaletteShortcutTooltipContent } =
|
||||
useKeyboardShortcut(commandPaletteShortcut);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -52,8 +52,9 @@ export const env = createEnv({
|
||||
VK_CLIENT_SECRET: z.string().optional(),
|
||||
LINKEDIN_CLIENT_ID: z.string().optional(),
|
||||
LINKEDIN_CLIENT_SECRET: z.string().optional(),
|
||||
NOVU_API_KEY: z.string().optional(),
|
||||
EMAIL_UNSUBSCRIBE_SECRET: z.string().optional(),
|
||||
SUBSCRIBER_API_URL: z.string().url().optional(),
|
||||
SUBSCRIBER_API_KEY: z.string().optional(),
|
||||
SUBSCRIBER_ENVIRONMENT_ID: z.string().optional(),
|
||||
// Generic OIDC Provider
|
||||
OIDC_CLIENT_ID: z.string().optional(),
|
||||
OIDC_CLIENT_SECRET: z.string().optional(),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useEffect } from "react";
|
||||
import { useCallback, useEffect, useRef } from "react";
|
||||
|
||||
import { useModal } from "~/providers/modal";
|
||||
|
||||
interface UseModalFormStateOptions<T> {
|
||||
@@ -12,25 +13,43 @@ export function useModalFormState<T extends Record<string, any>>({
|
||||
initialValues,
|
||||
resetOnClose = false,
|
||||
}: UseModalFormStateOptions<T>) {
|
||||
const { modalContentType, isOpen, getModalState, setModalState, clearModalState } = useModal();
|
||||
|
||||
const {
|
||||
modalContentType,
|
||||
isOpen,
|
||||
getModalState,
|
||||
setModalState,
|
||||
clearModalState,
|
||||
} = useModal();
|
||||
|
||||
const isCurrentModal = modalContentType === modalType;
|
||||
const savedState = getModalState(modalType) as T | undefined;
|
||||
|
||||
|
||||
// get current form state (using the saved values if available, otherwise the initial values)
|
||||
const formState = savedState || initialValues;
|
||||
|
||||
const saveFormState = (state: Partial<T>) => {
|
||||
if (!isCurrentModal) return;
|
||||
|
||||
const currentState = getModalState(modalType) || initialValues;
|
||||
const newState = { ...currentState, ...state };
|
||||
setModalState(modalType, newState);
|
||||
};
|
||||
// Keep refs so the callbacks below stay stable across re-renders.
|
||||
const modalTypeRef = useRef(modalType);
|
||||
const initialValuesRef = useRef(initialValues);
|
||||
const getModalStateRef = useRef(getModalState);
|
||||
modalTypeRef.current = modalType;
|
||||
initialValuesRef.current = initialValues;
|
||||
getModalStateRef.current = getModalState;
|
||||
|
||||
const clearFormState = () => {
|
||||
clearModalState(modalType);
|
||||
};
|
||||
const saveFormState = useCallback(
|
||||
(state: Partial<T>) => {
|
||||
const type = modalTypeRef.current;
|
||||
const currentState =
|
||||
getModalStateRef.current(type) ?? initialValuesRef.current;
|
||||
const newState = { ...currentState, ...state };
|
||||
setModalState(type, newState);
|
||||
},
|
||||
// setModalState is stable (useCallback with [] deps in ModalProvider)
|
||||
[setModalState],
|
||||
);
|
||||
|
||||
const clearFormState = useCallback(() => {
|
||||
clearModalState(modalTypeRef.current);
|
||||
}, [clearModalState]);
|
||||
|
||||
useEffect(() => {
|
||||
if (resetOnClose && !isOpen && savedState) {
|
||||
@@ -45,4 +64,4 @@ export function useModalFormState<T extends Record<string, any>>({
|
||||
isCurrentModal,
|
||||
hasSavedState: !!savedState,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} wurde zu deinen Favoriten hinzugefügt."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} wurde aus deinen Favoriten entfernt."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} nicht gefunden"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Kommentar hinzufügen... (‚/' für Befehle oder ‚@' zum Erwähnen eingeben)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Beschreibung hinzufügen... (‚/' für Befehle oder ‚@' zum Erwähnen eingeben)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Zu Favoriten hinzufügen"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Zu Favoriten hinzugefügt"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Jährlich"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Board archivieren"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Ideal für kleine Teams, die gemeinsam arbeiten und schneller vorankommen möchten."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Board archiviert"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Board verschoben"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Board wiederhergestellt"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Karte erfolgreich dupliziert."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Kartenmitgliederzuweisungen werden beim Verschieben in einen anderen Workspace gelöscht."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Tarif wählen"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Weiter"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Neue Liste erstellen"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Board löschen"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Vorlage löschen"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Ziel-Workspace"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Board-URL bearbeiten"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Legen Sie los, indem Sie eine neue Liste erstellen"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Gut geeignet für Einsteiger, die nur die wichtigsten Funktionen benötigen."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Vorlage erstellen"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "Monatliche Abrechnung"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Board verschieben"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Board in einen anderen Workspace verschieben"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "In Liste verschieben"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "In Workspace verschieben"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Neue Liste"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Keine Listen"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Es wurden noch keine Listen erstellt"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Wählen Sie einen Tarif, um loszulegen. Alle kostenpflichtigen Tarife beinhalten eine 14-tägige kostenlose Testphase."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Aus Favoriten entfernen"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Aus Favoriten entfernt"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Liste auswählen"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Workspace auswählen"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Abmelden"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Status"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Absenden"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Team"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Vorlage"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "Das Board wurde archiviert."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "Das Board wurde nach {0} verschoben."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "Das Board wurde wiederhergestellt."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Kommentar konnte nicht hinzugefügt werden"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Karte konnte nicht dupliziert werden"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Board konnte nicht verschoben werden"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Board konnte nicht aktualisiert werden"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Karte konnte nicht aktualisiert werden"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Liste konnte nicht aktualisiert werden"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Board wiederherstellen"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Unbegrenzte Mitglieder und ein individueller Workspace-Benutzername für Teams, die wachsen möchten."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Upgrade"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Sie können selbst hosten, indem Sie den Anweisungen in unserem <0>Repo</0> folgen."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Sie haben keine anderen Workspaces, in die Sie dieses Board verschieben können."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Ihr Avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -75,7 +75,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
59
|
||||
60
|
||||
]
|
||||
],
|
||||
"translation": "{0} has been added to your favorites."
|
||||
@@ -91,7 +91,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
60
|
||||
61
|
||||
]
|
||||
],
|
||||
"translation": "{0} has been removed from your favorites."
|
||||
@@ -123,7 +123,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
557
|
||||
565
|
||||
]
|
||||
],
|
||||
"translation": "{0} not found"
|
||||
@@ -483,7 +483,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/card/components/NewCommentForm.tsx",
|
||||
68
|
||||
85
|
||||
]
|
||||
],
|
||||
"translation": "Add comment... (type '/' to open commands or '@' to mention)"
|
||||
@@ -495,7 +495,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/components/Editor.tsx",
|
||||
493
|
||||
499
|
||||
]
|
||||
],
|
||||
"translation": "Add description... (type '/' to open commands or '@' to mention)"
|
||||
@@ -551,7 +551,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
125
|
||||
137
|
||||
]
|
||||
],
|
||||
"translation": "Add to favorites"
|
||||
@@ -718,7 +718,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
56
|
||||
57
|
||||
]
|
||||
],
|
||||
"translation": "Added to favorites"
|
||||
@@ -973,7 +973,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
64
|
||||
68
|
||||
]
|
||||
],
|
||||
"translation": "Annual"
|
||||
@@ -1109,7 +1109,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
114
|
||||
115
|
||||
]
|
||||
],
|
||||
"translation": "Archive board"
|
||||
@@ -1393,7 +1393,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
87
|
||||
91
|
||||
]
|
||||
],
|
||||
"translation": "Best for small teams who want to collaborate and move faster together."
|
||||
@@ -1485,7 +1485,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
530
|
||||
538
|
||||
],
|
||||
[
|
||||
"src/views/card/index.tsx",
|
||||
@@ -1517,11 +1517,23 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
46
|
||||
47
|
||||
]
|
||||
],
|
||||
"translation": "Board archived"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
33
|
||||
]
|
||||
],
|
||||
"translation": "Board moved"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -1577,7 +1589,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
46
|
||||
47
|
||||
]
|
||||
],
|
||||
"translation": "Board unarchived"
|
||||
@@ -2131,6 +2143,10 @@
|
||||
"src/views/board/components/DeleteBoardConfirmation.tsx",
|
||||
44
|
||||
],
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
99
|
||||
],
|
||||
[
|
||||
"src/views/card/components/Comment.tsx",
|
||||
195
|
||||
@@ -2153,7 +2169,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
236
|
||||
240
|
||||
],
|
||||
[
|
||||
"src/views/settings/components/Avatar.tsx",
|
||||
@@ -2226,6 +2242,18 @@
|
||||
],
|
||||
"translation": "Card duplicated successfully."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
92
|
||||
]
|
||||
],
|
||||
"translation": "Card member assignments will be cleared when moving to a different workspace."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -2261,7 +2289,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
308
|
||||
309
|
||||
],
|
||||
[
|
||||
"src/views/card/components/Dropdown.tsx",
|
||||
@@ -2409,7 +2437,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
149
|
||||
153
|
||||
]
|
||||
],
|
||||
"translation": "Choose a plan"
|
||||
@@ -2857,7 +2885,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
242
|
||||
246
|
||||
],
|
||||
[
|
||||
"src/views/onboarding/workspace-details/index.tsx",
|
||||
@@ -3177,11 +3205,11 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
92
|
||||
93
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
671
|
||||
679
|
||||
]
|
||||
],
|
||||
"translation": "Create new list"
|
||||
@@ -3558,7 +3586,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
136
|
||||
148
|
||||
]
|
||||
],
|
||||
"translation": "Delete board"
|
||||
@@ -3610,7 +3638,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
136
|
||||
148
|
||||
]
|
||||
],
|
||||
"translation": "Delete template"
|
||||
@@ -3715,6 +3743,18 @@
|
||||
],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
76
|
||||
]
|
||||
],
|
||||
"translation": "Destination workspace"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -4082,7 +4122,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
105
|
||||
106
|
||||
],
|
||||
[
|
||||
"src/views/board/components/UpdateBoardSlugForm.tsx",
|
||||
@@ -5019,11 +5059,11 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
78
|
||||
82
|
||||
],
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
79
|
||||
83
|
||||
],
|
||||
[
|
||||
"src/views/pricing/components/FeatureComparisonTable.tsx",
|
||||
@@ -5223,7 +5263,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
656
|
||||
664
|
||||
]
|
||||
],
|
||||
"translation": "Get started by creating a new list"
|
||||
@@ -5415,7 +5455,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
80
|
||||
84
|
||||
]
|
||||
],
|
||||
"translation": "Good for individuals starting out who just need the essentials."
|
||||
@@ -6293,7 +6333,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
306
|
||||
307
|
||||
],
|
||||
[
|
||||
"src/views/card/components/Dropdown.tsx",
|
||||
@@ -6465,7 +6505,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
94
|
||||
95
|
||||
]
|
||||
],
|
||||
"translation": "Make template"
|
||||
@@ -6673,7 +6713,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
63
|
||||
67
|
||||
],
|
||||
[
|
||||
"src/views/pricing/components/Pricing.tsx",
|
||||
@@ -6698,6 +6738,30 @@
|
||||
],
|
||||
"translation": "monthly billing"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
107
|
||||
]
|
||||
],
|
||||
"translation": "Move board"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
64
|
||||
]
|
||||
],
|
||||
"translation": "Move board to another workspace"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -6722,6 +6786,18 @@
|
||||
],
|
||||
"translation": "Move to list"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
126
|
||||
]
|
||||
],
|
||||
"translation": "Move to workspace"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -6920,7 +6996,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
620
|
||||
628
|
||||
]
|
||||
],
|
||||
"translation": "New list"
|
||||
@@ -7140,7 +7216,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
652
|
||||
660
|
||||
]
|
||||
],
|
||||
"translation": "No lists"
|
||||
@@ -7152,7 +7228,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
657
|
||||
665
|
||||
]
|
||||
],
|
||||
"translation": "No lists have been created yet"
|
||||
@@ -7672,7 +7748,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
152
|
||||
156
|
||||
]
|
||||
],
|
||||
"translation": "Pick a plan to get started. All paid plans include a 14-day free trial."
|
||||
@@ -7836,7 +7912,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
68
|
||||
69
|
||||
],
|
||||
[
|
||||
"src/views/board/components/NewCardForm.tsx",
|
||||
@@ -7864,11 +7940,11 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
218
|
||||
219
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
274
|
||||
275
|
||||
],
|
||||
[
|
||||
"src/views/boards/components/ImportBoardsForm.tsx",
|
||||
@@ -7940,7 +8016,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/card/components/NewCommentForm.tsx",
|
||||
37
|
||||
38
|
||||
],
|
||||
[
|
||||
"src/views/card/index.tsx",
|
||||
@@ -8052,7 +8128,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
315
|
||||
316
|
||||
],
|
||||
[
|
||||
"src/views/card/components/Dropdown.tsx",
|
||||
@@ -8176,7 +8252,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
92
|
||||
96
|
||||
],
|
||||
[
|
||||
"src/views/pricing/components/FeatureComparisonTable.tsx",
|
||||
@@ -8356,7 +8432,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
124
|
||||
136
|
||||
]
|
||||
],
|
||||
"translation": "Remove from favorites"
|
||||
@@ -8451,7 +8527,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
57
|
||||
58
|
||||
]
|
||||
],
|
||||
"translation": "Removed from favorites"
|
||||
@@ -8860,6 +8936,18 @@
|
||||
],
|
||||
"translation": "Select a list"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
84
|
||||
]
|
||||
],
|
||||
"translation": "Select a workspace"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -9223,7 +9311,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
315
|
||||
319
|
||||
],
|
||||
[
|
||||
"src/views/onboarding/workspace-details/index.tsx",
|
||||
@@ -9379,7 +9467,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
77
|
||||
81
|
||||
]
|
||||
],
|
||||
"translation": "Solo"
|
||||
@@ -9488,6 +9576,18 @@
|
||||
],
|
||||
"translation": "Status"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/card/components/NewCommentForm.tsx",
|
||||
60
|
||||
]
|
||||
],
|
||||
"translation": "Submit"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -9587,7 +9687,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
84
|
||||
88
|
||||
]
|
||||
],
|
||||
"translation": "Team"
|
||||
@@ -9639,11 +9739,11 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
530
|
||||
538
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
566
|
||||
574
|
||||
]
|
||||
],
|
||||
"translation": "Template"
|
||||
@@ -9827,11 +9927,27 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
48
|
||||
49
|
||||
]
|
||||
],
|
||||
"translation": "The board has been archived."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": [
|
||||
"targetWorkspace?.name ?? \"the workspace\""
|
||||
]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
34
|
||||
]
|
||||
],
|
||||
"translation": "The board has been moved to {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
@@ -9839,7 +9955,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
49
|
||||
50
|
||||
]
|
||||
],
|
||||
"translation": "The board has been unarchived."
|
||||
@@ -10339,7 +10455,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/card/components/NewCommentForm.tsx",
|
||||
36
|
||||
37
|
||||
]
|
||||
],
|
||||
"translation": "Unable to add comment"
|
||||
@@ -10387,7 +10503,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
313
|
||||
314
|
||||
],
|
||||
[
|
||||
"src/views/card/components/Dropdown.tsx",
|
||||
@@ -10572,6 +10688,18 @@
|
||||
],
|
||||
"translation": "Unable to duplicate card"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
45
|
||||
]
|
||||
],
|
||||
"translation": "Unable to move board"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -10667,7 +10795,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
67
|
||||
68
|
||||
]
|
||||
],
|
||||
"translation": "Unable to update board"
|
||||
@@ -10703,7 +10831,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
273
|
||||
274
|
||||
],
|
||||
[
|
||||
"src/views/card/index.tsx",
|
||||
@@ -10779,7 +10907,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
217
|
||||
218
|
||||
],
|
||||
[
|
||||
"src/views/card/components/ListSelector.tsx",
|
||||
@@ -10847,7 +10975,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/BoardDropdown.tsx",
|
||||
114
|
||||
115
|
||||
]
|
||||
],
|
||||
"translation": "Unarchive board"
|
||||
@@ -11055,7 +11183,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
95
|
||||
99
|
||||
]
|
||||
],
|
||||
"translation": "Unlimited members and a custom workspace username for teams ready to scale."
|
||||
@@ -11215,7 +11343,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
241
|
||||
245
|
||||
]
|
||||
],
|
||||
"translation": "Upgrade"
|
||||
@@ -11767,7 +11895,7 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
530
|
||||
538
|
||||
],
|
||||
[
|
||||
"src/views/boards/index.tsx",
|
||||
@@ -12117,6 +12245,18 @@
|
||||
],
|
||||
"translation": "You can self-host by following the instructions in our <0>repo</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
[
|
||||
"src/views/board/components/MoveBoardForm.tsx",
|
||||
68
|
||||
]
|
||||
],
|
||||
"translation": "You don't have any other workspaces to move this board to."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -12136,11 +12276,11 @@
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
604
|
||||
612
|
||||
],
|
||||
[
|
||||
"src/views/board/index.tsx",
|
||||
662
|
||||
670
|
||||
],
|
||||
[
|
||||
"src/views/boards/components/BoardsList.tsx",
|
||||
@@ -12301,7 +12441,7 @@
|
||||
"origin": [
|
||||
[
|
||||
"src/views/onboarding/select-plan/index.tsx",
|
||||
260
|
||||
264
|
||||
]
|
||||
],
|
||||
"translation": "Your avatar"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} se ha añadido a tus favoritos."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} se ha eliminado de tus favoritos."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} no encontrado"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Añadir comentario... (escribe '/' para abrir comandos o '@' para mencionar)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Añadir descripción... (escribe '/' para abrir comandos o '@' para mencionar)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Añadir a favoritos"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Añadido a favoritos"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Anual"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Archivar tablero"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Ideal para equipos pequeños que desean colaborar y avanzar más rápido juntos."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tablero archivado"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Tablero movido"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tablero desarchivado"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Tarjeta duplicada correctamente."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Las asignaciones de miembros de la tarjeta se borrarán al mover a un espacio de trabajo diferente."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Elige un plan"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Continuar"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Crear nueva lista"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Eliminar tablero"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Eliminar plantilla"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Diseño"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Espacio de trabajo de destino"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Editar URL del tablero"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Comienza creando una nueva lista"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Ideal para personas que comienzan y solo necesitan lo esencial."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Crear plantilla"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "facturación mensual"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Mover tablero"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Mover tablero a otro espacio de trabajo"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Mover a lista"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Mover al espacio de trabajo"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nueva lista"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Sin listas"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Aún no se han creado listas"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Elige un plan para comenzar. Todos los planes de pago incluyen una prueba gratuita de 14 días."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Eliminar de favoritos"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Eliminado de favoritos"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Seleccionar una lista"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Selecciona un espacio de trabajo"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Cerrar sesión"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Individual"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Estado"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Enviar"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Equipo"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Plantilla"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "El tablero ha sido archivado."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "El tablero se ha movido a {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "El tablero ha sido desarchivado."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "No se pudo agregar el comentario"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "No se puede duplicar la tarjeta"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "No se pudo mover el tablero"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "No se pudo actualizar el tablero"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "No se pudo actualizar la tarjeta"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "No se pudo actualizar la lista"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Desarchivar tablero"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Miembros ilimitados y un nombre de usuario personalizado para el espacio de trabajo para equipos listos para escalar."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Actualizar"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Puedes auto-alojar siguiendo las instrucciones en nuestro <0>repositorio</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "No tienes ningún otro espacio de trabajo al que mover este tablero."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Tu avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} a été ajouté à vos favoris."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} a été retiré de vos favoris."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} introuvable"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Ajouter un commentaire... (tapez « / » pour ouvrir les commandes ou « @ » pour mentionner)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Ajouter une description... (tapez « / » pour ouvrir les commandes ou « @ » pour mentionner)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Ajouter aux favoris"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Ajouté aux favoris"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Annuel"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Archiver le tableau"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Idéal pour les petites équipes qui souhaitent collaborer et avancer plus rapidement ensemble."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tableau archivé"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Tableau déplacé"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tableau désarchivé"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Carte dupliquée avec succès."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Les membres affectés aux cartes seront supprimés lors du déplacement vers un autre espace de travail."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Choisir un forfait"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Continuer"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Créer une nouvelle liste"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Supprimer le tableau"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Supprimer le modèle"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Espace de travail de destination"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Modifier l'URL du tableau"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Commencez en créant une nouvelle liste"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Idéal pour les particuliers qui débutent et qui ont simplement besoin de l'essentiel."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Créer un modèle"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "facturation mensuelle"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Déplacer le tableau"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Déplacer le tableau vers un autre espace de travail"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Déplacer vers la liste"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Déplacer vers l'espace de travail"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nouvelle liste"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Aucune liste"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Aucune liste n'a encore été créée"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Choisissez un forfait pour commencer. Tous les forfaits payants incluent un essai gratuit de 14 jours."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Retirer des favoris"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Retiré des favoris"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Sélectionner une liste"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Sélectionnez un espace de travail"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Se déconnecter"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Statut"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Soumettre"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Équipe"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Modèle"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "Le tableau a été archivé."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "Le tableau a été déplacé vers {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "Le tableau a été désarchivé."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Impossible d'ajouter le commentaire"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Impossible de dupliquer la carte"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Impossible de déplacer le tableau"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Impossible de mettre à jour le tableau"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Impossible de mettre à jour la carte"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Impossible de mettre à jour la liste"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Désarchiver le tableau"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Membres illimités et un nom d'utilisateur d'espace de travail personnalisé pour les équipes prêtes à évoluer."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Mettre à niveau"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Vous pouvez auto-héberger en suivant les instructions de notre <0>dépôt</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Vous n'avez aucun autre espace de travail vers lequel déplacer ce tableau."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Votre avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} è stato aggiunto ai tuoi preferiti."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} è stato rimosso dai tuoi preferiti."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} non trovato"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Aggiungi commento... (digita '/' per aprire i comandi o '@' per menzionare)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Aggiungi descrizione... (digita '/' per aprire i comandi o '@' per menzionare)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Aggiungi ai preferiti"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Aggiunto ai preferiti"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Annuale"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Archivia bacheca"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Ideale per piccoli team che vogliono collaborare e muoversi più velocemente insieme."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Bacheca archiviata"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Bacheca spostata"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Bacheca ripristinata"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Scheda duplicata con successo."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Le assegnazioni dei membri della scheda verranno cancellate quando si sposta in un'area di lavoro diversa."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Scegli un piano"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Continua"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Crea nuova lista"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Elimina board"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Elimina template"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Area di lavoro di destinazione"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Modifica URL bacheca"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Inizia creando una nuova lista"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Perfetto per chi inizia e ha bisogno solo delle funzionalità essenziali."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Crea template"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "fatturazione mensile"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Sposta bacheca"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Sposta la bacheca in un'altra area di lavoro"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Sposta nell'elenco"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Sposta nell'area di lavoro"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nuova lista"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Nessuna lista"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Nessuna lista è stata ancora creata"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Scegli un piano per iniziare. Tutti i piani a pagamento includono una prova gratuita di 14 giorni."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Rimuovi dai preferiti"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Rimosso dai preferiti"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Seleziona un elenco"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Seleziona un'area di lavoro"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Esci"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Stato"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Invia"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Team"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Template"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "La bacheca è stata archiviata."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "La bacheca è stata spostata in {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "La bacheca è stata ripristinata."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Impossibile aggiungere il commento"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Impossibile duplicare la scheda"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Impossibile spostare la bacheca"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Impossibile aggiornare la board"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Impossibile aggiornare la card"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Impossibile aggiornare la lista"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Ripristina bacheca"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Membri illimitati e un nome utente workspace personalizzato per i team pronti a crescere."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Aggiorna"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Puoi effettuare il self-hosting seguendo le istruzioni nel nostro <0>repo</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Non hai altre aree di lavoro in cui spostare questa bacheca."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Il tuo avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} is toegevoegd aan je favorieten."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} is verwijderd uit je favorieten."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} niet gevonden"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Voeg opmerking toe... (typ '/' om commando's te openen of '@' om te vermelden)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Voeg beschrijving toe... (typ '/' om commando's te openen of '@' om te vermelden)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Toevoegen aan favorieten"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Toegevoegd aan favorieten"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Jaarlijks"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Board archiveren"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Het beste voor kleine teams die willen samenwerken en sneller vooruit willen komen."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Board gearchiveerd"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Bord verplaatst"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Board gedearchiveerd"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Kaart succesvol gedupliceerd."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Kaartleden worden verwijderd bij het verplaatsen naar een andere werkruimte."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Kies een abonnement"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Doorgaan"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Maak nieuwe lijst"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Bord verwijderen"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Sjabloon verwijderen"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Ontwerp"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Bestemmingswerkruimte"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Bord-URL bewerken"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Ga aan de slag door een nieuwe lijst te maken"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Geschikt voor individuen die net beginnen en alleen de basisbehoeften hebben."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Sjabloon maken"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "maandelijkse facturering"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Bord verplaatsen"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Bord naar een andere werkruimte verplaatsen"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Verplaats naar lijst"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Verplaatsen naar werkruimte"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nieuwe lijst"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Geen lijsten"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Er zijn nog geen lijsten aangemaakt"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Kies een abonnement om te beginnen. Alle betaalde abonnementen hebben een gratis proefperiode van 14 dagen."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Verwijderen uit favorieten"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Verwijderd uit favorieten"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Selecteer een lijst"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Selecteer een werkruimte"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Uitloggen"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Status"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Verzenden"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Team"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Sjabloon"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "Het board is gearchiveerd."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "Het bord is verplaatst naar {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "Het board is gedearchiveerd."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Kan opmerking niet toevoegen"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Kan kaart niet dupliceren"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Kan bord niet verplaatsen"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Kan bord niet bijwerken"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Kan kaart niet bijwerken"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Kan lijst niet bijwerken"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Board dearchiveren"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Onbeperkt aantal leden en een aangepaste werkruimte-URL voor teams die klaar zijn om te groeien."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Upgraden"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Je kunt zelf hosten door de instructies in onze <0>repo</0> te volgen."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Je hebt geen andere werkruimtes waar je dit bord naartoe kunt verplaatsen."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Jouw avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} został dodany do ulubionych."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} został usunięty z ulubionych."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} nie znaleziono"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Dodaj komentarz... (wpisz '/' aby otworzyć polecenia lub '@', aby wspomnieć)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Dodaj opis... (wpisz '/' aby otworzyć polecenia lub '@', aby wspomnieć)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Dodaj do ulubionych"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Dodano do ulubionych"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Rocznie"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Zarchiwizuj tablicę"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Najlepszy dla małych zespołów, które chcą współpracować i działać szybciej razem."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tablica zarchiwizowana"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Tablica przeniesiona"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Tablica przywrócona z archiwum"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Karta została pomyślnie zduplikowana."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "Przypisania członków do kart zostaną usunięte podczas przenoszenia do innego obszaru roboczego."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Wybierz plan"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Kontynuuj"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Utwórz nową listę"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Usuń tablicę"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Usuń szablon"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Docelowy obszar roboczy"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Edytuj URL tablicy"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Rozpocznij, tworząc nową listę"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Dobry dla osób zaczynających, które potrzebują tylko podstaw."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Utwórz szablon"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "rozliczenie miesięczne"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Przenieś tablicę"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Przenieś tablicę do innego obszaru roboczego"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Przenieś do listy"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Przenieś do obszaru roboczego"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nowa lista"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Brak list"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Nie utworzono jeszcze żadnych list"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Wybierz plan, aby rozpocząć. Wszystkie płatne plany zawierają 14-dniowy bezpłatny okres próbny."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Usuń z ulubionych"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Usunięto z ulubionych"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Wybierz listę"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Wybierz obszar roboczy"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Wyloguj się"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Status"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Prześlij"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Zespół"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Szablon"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "Tablica została zarchiwizowana."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "Tablica została przeniesiona do {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "Tablica została przywrócona z archiwum."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Nie można dodać komentarza"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Nie można zduplikować karty"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Nie można przenieść tablicy"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Nie można zaktualizować tablicy"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Nie można zaktualizować karty"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Nie można zaktualizować listy"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Przywróć tablicę z archiwum"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Nieograniczona liczba członków i niestandardowa nazwa użytkownika przestrzeni roboczej dla zespołów gotowych do rozwoju."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Uaktualnij"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Możesz samodzielnie hostować, postępując zgodnie z instrukcjami w naszym <0>repozytorium</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Nie masz żadnych innych obszarów roboczych, do których można przenieść tę tablicę."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Twój awatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} foi adicionado aos seus favoritos."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} foi removido dos seus favoritos."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} não encontrado"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Adicionar comentário... (digite '/' para abrir comandos ou '@' para mencionar)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Adicionar descrição... (digite '/' para abrir comandos ou '@' para mencionar)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Adicionar aos favoritos"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Adicionado aos favoritos"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Anual"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Arquivar quadro"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Ideal para pequenas equipes que desejam colaborar e avançar mais rápido juntas."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Quadro arquivado"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Quadro movido"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Quadro desarquivado"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Card duplicado com sucesso."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "As atribuições de membros do cartão serão removidas ao mover para um workspace diferente."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Escolha um plano"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Continuar"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Criar nova lista"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Excluir quadro"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Excluir modelo"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Design"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Workspace de destino"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Editar URL do quadro"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Comece criando uma nova lista"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Bom para indivíduos começando que precisam apenas do essencial."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Criar modelo"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "cobrança mensal"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Mover quadro"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Mover quadro para outro workspace"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Mover para lista"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Mover para workspace"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Nova lista"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Nenhuma lista"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Nenhuma lista foi criada ainda"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Escolha um plano para começar. Todos os planos pagos incluem 14 dias de teste grátis."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Remover dos favoritos"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Removido dos favoritos"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Selecione uma lista"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Selecione um workspace"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Sair"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Solo"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Status"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Enviar"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Equipe"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Modelo"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "O quadro foi arquivado."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "O quadro foi movido para {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "O quadro foi desarquivado."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Não foi possível adicionar comentário"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Não foi possível duplicar o cartão"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Não foi possível mover o quadro"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Não foi possível atualizar o quadro"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Não foi possível atualizar o cartão"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Não foi possível atualizar a lista"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Desarquivar quadro"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Membros ilimitados e um nome de usuário personalizado para equipes prontas para crescer."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Atualizar"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Você pode fazer self-host seguindo as instruções em nosso <0>repositório</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "Você não tem outros workspaces para mover este quadro."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Seu avatar"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 59]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"translation": "{0} добавлен в избранное."
|
||||
},
|
||||
"bDI6VI": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"0": ["boardName ?? \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 60]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 61]],
|
||||
"translation": "{0} удалён из избранного."
|
||||
},
|
||||
"CJukzS": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"0": ["isTemplate ? \"Template\" : \"Board\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 557]],
|
||||
"origin": [["src/views/board/index.tsx", 565]],
|
||||
"translation": "{0} не найдено"
|
||||
},
|
||||
"0xWkkH": {
|
||||
@@ -286,7 +286,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/card/components/Comment.tsx", 185],
|
||||
["src/views/card/components/NewCommentForm.tsx", 68]
|
||||
["src/views/card/components/NewCommentForm.tsx", 85]
|
||||
],
|
||||
"translation": "Добавить комментарий... (введите '/' для открытия команд или '@' для упоминания)"
|
||||
},
|
||||
@@ -294,7 +294,7 @@
|
||||
"message": "Add description... (type '/' to open commands or '@' to mention)",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/components/Editor.tsx", 493]],
|
||||
"origin": [["src/components/Editor.tsx", 499]],
|
||||
"translation": "Добавить описание... (введите '/' для открытия команд или '@' для упоминания)"
|
||||
},
|
||||
"abUZlY": {
|
||||
@@ -328,7 +328,7 @@
|
||||
"message": "Add to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 125]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 137]],
|
||||
"translation": "Добавить в избранное"
|
||||
},
|
||||
"cWXW+7": {
|
||||
@@ -423,7 +423,7 @@
|
||||
"message": "Added to favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 56]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"translation": "Добавлено в избранное"
|
||||
},
|
||||
"14Xi3Z": {
|
||||
@@ -577,7 +577,7 @@
|
||||
"message": "Annual",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
|
||||
"translation": "Ежегодно"
|
||||
},
|
||||
"3bqt9U": {
|
||||
@@ -657,7 +657,7 @@
|
||||
"message": "Archive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Архивировать доску"
|
||||
},
|
||||
"TdfEV7": {
|
||||
@@ -833,7 +833,7 @@
|
||||
"message": "Best for small teams who want to collaborate and move faster together.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
|
||||
"translation": "Идеально для небольших команд, которые хотят сотрудничать и работать быстрее вместе."
|
||||
},
|
||||
"qaS+1/": {
|
||||
@@ -887,7 +887,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/card/index.tsx", 321],
|
||||
["src/views/public/board/index.tsx", 125]
|
||||
],
|
||||
@@ -906,9 +906,16 @@
|
||||
"message": "Board archived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Доска архивирована"
|
||||
},
|
||||
"wE3hGS": {
|
||||
"message": "Board moved",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 33]],
|
||||
"translation": "Доска перемещена"
|
||||
},
|
||||
"wewm3j": {
|
||||
"message": "Board name cannot exceed 100 characters",
|
||||
"placeholders": {},
|
||||
@@ -943,7 +950,7 @@
|
||||
"message": "Board unarchived",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 46]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 47]],
|
||||
"translation": "Доска восстановлена из архива"
|
||||
},
|
||||
"Xid3K6": {
|
||||
@@ -1281,12 +1288,13 @@
|
||||
["src/components/YouTubeEmbed/EditYouTubeModal.tsx", 176],
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 267],
|
||||
["src/views/board/components/DeleteBoardConfirmation.tsx", 44],
|
||||
["src/views/board/components/MoveBoardForm.tsx", 99],
|
||||
["src/views/card/components/Comment.tsx", 195],
|
||||
["src/views/card/components/DeleteCardConfirmation.tsx", 86],
|
||||
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
|
||||
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
|
||||
["src/views/onboarding/select-plan/index.tsx", 236],
|
||||
["src/views/onboarding/select-plan/index.tsx", 240],
|
||||
["src/views/settings/components/Avatar.tsx", 287],
|
||||
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
|
||||
[
|
||||
@@ -1324,6 +1332,13 @@
|
||||
"origin": [["src/views/card/components/Dropdown.tsx", 48]],
|
||||
"translation": "Карточка успешно продублирована."
|
||||
},
|
||||
"AgE2vR": {
|
||||
"message": "Card member assignments will be cleared when moving to a different workspace.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 92]],
|
||||
"translation": "При перемещении в другой рабочий пространство назначения участников карточек будут очищены."
|
||||
},
|
||||
"fEY2vP": {
|
||||
"message": "Card not found",
|
||||
"placeholders": {},
|
||||
@@ -1346,7 +1361,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 308],
|
||||
["src/views/board/index.tsx", 309],
|
||||
["src/views/card/components/Dropdown.tsx", 74],
|
||||
["src/views/public/board/CardModal.tsx", 38]
|
||||
],
|
||||
@@ -1429,7 +1444,7 @@
|
||||
"message": "Choose a plan",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
|
||||
"translation": "Выберите тариф"
|
||||
},
|
||||
"5EMoSo": {
|
||||
@@ -1704,7 +1719,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 242],
|
||||
["src/views/onboarding/select-plan/index.tsx", 246],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 315]
|
||||
],
|
||||
"translation": "Продолжить"
|
||||
@@ -1899,8 +1914,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 92],
|
||||
["src/views/board/index.tsx", 671]
|
||||
["src/views/board/index.tsx", 93],
|
||||
["src/views/board/index.tsx", 679]
|
||||
],
|
||||
"translation": "Создать новый список"
|
||||
},
|
||||
@@ -2118,7 +2133,7 @@
|
||||
"message": "Delete board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Удалить доску"
|
||||
},
|
||||
"nabda1": {
|
||||
@@ -2149,7 +2164,7 @@
|
||||
"message": "Delete template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 148]],
|
||||
"translation": "Удалить шаблон"
|
||||
},
|
||||
"snMaH4": {
|
||||
@@ -2211,6 +2226,13 @@
|
||||
"origin": [["src/views/boards/components/TemplateBoards.tsx", 45]],
|
||||
"translation": "Дизайн"
|
||||
},
|
||||
"Uf+1DF": {
|
||||
"message": "Destination workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 76]],
|
||||
"translation": "Рабочее пространство назначения"
|
||||
},
|
||||
"Odv3J6": {
|
||||
"message": "Disconnect GitHub",
|
||||
"placeholders": {},
|
||||
@@ -2416,7 +2438,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/BoardDropdown.tsx", 105],
|
||||
["src/views/board/components/BoardDropdown.tsx", 106],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 116]
|
||||
],
|
||||
"translation": "Изменить URL доски"
|
||||
@@ -2994,8 +3016,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 78],
|
||||
["src/views/onboarding/select-plan/index.tsx", 79],
|
||||
["src/views/onboarding/select-plan/index.tsx", 82],
|
||||
["src/views/onboarding/select-plan/index.tsx", 83],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
["src/views/pricing/components/Pricing.tsx", 32],
|
||||
@@ -3103,7 +3125,7 @@
|
||||
"message": "Get started by creating a new list",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 656]],
|
||||
"origin": [["src/views/board/index.tsx", 664]],
|
||||
"translation": "Начните с создания нового списка"
|
||||
},
|
||||
"oW13KZ": {
|
||||
@@ -3217,7 +3239,7 @@
|
||||
"message": "Good for individuals starting out who just need the essentials.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"translation": "Подходит для начинающих пользователей, которым нужны только базовые функции."
|
||||
},
|
||||
"cdyS7J": {
|
||||
@@ -3743,7 +3765,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
|
||||
["src/views/board/index.tsx", 306],
|
||||
["src/views/board/index.tsx", 307],
|
||||
["src/views/card/components/Dropdown.tsx", 72],
|
||||
["src/views/public/board/CardModal.tsx", 36],
|
||||
["src/views/public/board/index.tsx", 77]
|
||||
@@ -3843,7 +3865,7 @@
|
||||
"message": "Make template",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 94]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 95]],
|
||||
"translation": "Создать шаблон"
|
||||
},
|
||||
"hB02vO": {
|
||||
@@ -3964,7 +3986,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 63],
|
||||
["src/views/onboarding/select-plan/index.tsx", 67],
|
||||
["src/views/pricing/components/Pricing.tsx", 14],
|
||||
["src/views/pricing/index.tsx", 20]
|
||||
],
|
||||
@@ -3977,6 +3999,20 @@
|
||||
"origin": [["src/views/members/components/InviteMemberForm.tsx", 170]],
|
||||
"translation": "ежемесячная оплата"
|
||||
},
|
||||
"sZ/WDz": {
|
||||
"message": "Move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 107]],
|
||||
"translation": "Переместить доску"
|
||||
},
|
||||
"VvCMyU": {
|
||||
"message": "Move board to another workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 64]],
|
||||
"translation": "Переместить доску в другое рабочее пространство"
|
||||
},
|
||||
"51UCsN": {
|
||||
"message": "Move to another list",
|
||||
"placeholders": {},
|
||||
@@ -3991,6 +4027,13 @@
|
||||
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
|
||||
"translation": "Переместить в список"
|
||||
},
|
||||
"S3wq2O": {
|
||||
"message": "Move to workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 126]],
|
||||
"translation": "Переместить в рабочее пространство"
|
||||
},
|
||||
"BOqTi5": {
|
||||
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
|
||||
"placeholders": {
|
||||
@@ -4102,7 +4145,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/components/NewListForm.tsx", 113],
|
||||
["src/views/board/index.tsx", 620]
|
||||
["src/views/board/index.tsx", 628]
|
||||
],
|
||||
"translation": "Новый список"
|
||||
},
|
||||
@@ -4235,14 +4278,14 @@
|
||||
"message": "No lists",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 652]],
|
||||
"origin": [["src/views/board/index.tsx", 660]],
|
||||
"translation": "Нет списков"
|
||||
},
|
||||
"fvLNDy": {
|
||||
"message": "No lists have been created yet",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/index.tsx", 657]],
|
||||
"origin": [["src/views/board/index.tsx", 665]],
|
||||
"translation": "Списки ещё не созданы"
|
||||
},
|
||||
"i30J2U": {
|
||||
@@ -4559,7 +4602,7 @@
|
||||
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
|
||||
"translation": "Выберите тариф, чтобы начать. Все платные тарифы включают 14-дневный бесплатный пробный период."
|
||||
},
|
||||
"GdgCoi": {
|
||||
@@ -4657,15 +4700,15 @@
|
||||
["src/components/DeleteLabelConfirmation.tsx", 26],
|
||||
["src/components/FeedbackModal.tsx", 41],
|
||||
["src/components/NewWorkspaceForm.tsx", 110],
|
||||
["src/views/board/components/BoardDropdown.tsx", 68],
|
||||
["src/views/board/components/BoardDropdown.tsx", 69],
|
||||
["src/views/board/components/NewCardForm.tsx", 193],
|
||||
["src/views/board/components/NewListForm.tsx", 79],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 61],
|
||||
["src/views/board/components/NewTemplateForm.tsx", 77],
|
||||
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
|
||||
["src/views/board/components/VisibilityButton.tsx", 57],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/board/index.tsx", 219],
|
||||
["src/views/board/index.tsx", 275],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 243],
|
||||
["src/views/boards/components/ImportBoardsForm.tsx", 395],
|
||||
["src/views/card/components/AttachmentThumbnails.tsx", 74],
|
||||
@@ -4683,7 +4726,7 @@
|
||||
["src/views/card/components/MemberSelector.tsx", 82],
|
||||
["src/views/card/components/NewChecklistForm.tsx", 71],
|
||||
["src/views/card/components/NewChecklistItemForm.tsx", 90],
|
||||
["src/views/card/components/NewCommentForm.tsx", 37],
|
||||
["src/views/card/components/NewCommentForm.tsx", 38],
|
||||
["src/views/card/index.tsx", 236],
|
||||
["src/views/card/index.tsx", 249],
|
||||
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
|
||||
@@ -4723,7 +4766,7 @@
|
||||
"origin": [
|
||||
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
|
||||
["src/views/board/components/CardContextMoveListModal.tsx", 42],
|
||||
["src/views/board/index.tsx", 315],
|
||||
["src/views/board/index.tsx", 316],
|
||||
["src/views/card/components/Dropdown.tsx", 55],
|
||||
["src/views/card/components/Dropdown.tsx", 81],
|
||||
["src/views/card/components/Dropdown.tsx", 100],
|
||||
@@ -4786,7 +4829,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 92],
|
||||
["src/views/onboarding/select-plan/index.tsx", 96],
|
||||
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
|
||||
["src/views/pricing/components/PricingTiers.tsx", 70]
|
||||
],
|
||||
@@ -4892,7 +4935,7 @@
|
||||
"message": "Remove from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 124]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 136]],
|
||||
"translation": "Удалить из избранного"
|
||||
},
|
||||
"99VIgC": {
|
||||
@@ -4946,7 +4989,7 @@
|
||||
"message": "Removed from favorites",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 57]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 58]],
|
||||
"translation": "Удалено из избранного"
|
||||
},
|
||||
"YVT40D": {
|
||||
@@ -5193,6 +5236,13 @@
|
||||
],
|
||||
"translation": "Выберите список"
|
||||
},
|
||||
"NM2hyD": {
|
||||
"message": "Select a workspace",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 84]],
|
||||
"translation": "Выберите рабочее пространство"
|
||||
},
|
||||
"wgNoIs": {
|
||||
"message": "Select all",
|
||||
"placeholders": {},
|
||||
@@ -5404,7 +5454,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/onboarding/select-plan/index.tsx", 315],
|
||||
["src/views/onboarding/select-plan/index.tsx", 319],
|
||||
["src/views/onboarding/workspace-details/index.tsx", 386]
|
||||
],
|
||||
"translation": "Выйти"
|
||||
@@ -5498,7 +5548,7 @@
|
||||
"message": "Solo",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
|
||||
"translation": "Индивидуальный"
|
||||
},
|
||||
"J9+zIR": {
|
||||
@@ -5565,6 +5615,13 @@
|
||||
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
|
||||
"translation": "Статус"
|
||||
},
|
||||
"hQRttt": {
|
||||
"message": "Submit",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
|
||||
"translation": "Отправить"
|
||||
},
|
||||
"WYDptz": {
|
||||
"message": "Subscription Required",
|
||||
"placeholders": {},
|
||||
@@ -5628,7 +5685,7 @@
|
||||
"message": "Team",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
|
||||
"translation": "Команда"
|
||||
},
|
||||
"bff61F": {
|
||||
@@ -5658,8 +5715,8 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 566]
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/board/index.tsx", 574]
|
||||
],
|
||||
"translation": "Шаблон"
|
||||
},
|
||||
@@ -5770,14 +5827,23 @@
|
||||
"message": "The board has been archived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 48]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"translation": "Доска была архивирована."
|
||||
},
|
||||
"ZWk38w": {
|
||||
"message": "The board has been moved to {0}.",
|
||||
"placeholders": {
|
||||
"0": ["targetWorkspace?.name ?? \"the workspace\""]
|
||||
},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 34]],
|
||||
"translation": "Доска была перемещена в {0}."
|
||||
},
|
||||
"C6gv54": {
|
||||
"message": "The board has been unarchived.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 49]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 50]],
|
||||
"translation": "Доска была восстановлена из архива."
|
||||
},
|
||||
"nKBUeF": {
|
||||
@@ -6088,7 +6154,7 @@
|
||||
"message": "Unable to add comment",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
|
||||
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
|
||||
"translation": "Не удалось добавить комментарий"
|
||||
},
|
||||
"2Q871c": {
|
||||
@@ -6117,7 +6183,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 313],
|
||||
["src/views/board/index.tsx", 314],
|
||||
["src/views/card/components/Dropdown.tsx", 79],
|
||||
["src/views/public/board/CardModal.tsx", 43],
|
||||
["src/views/public/board/index.tsx", 84]
|
||||
@@ -6228,6 +6294,13 @@
|
||||
],
|
||||
"translation": "Невозможно дублировать карточку"
|
||||
},
|
||||
"d196/6": {
|
||||
"message": "Unable to move board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 45]],
|
||||
"translation": "Не удалось переместить доску"
|
||||
},
|
||||
"K7k9u3": {
|
||||
"message": "Unable to move card",
|
||||
"placeholders": {},
|
||||
@@ -6288,7 +6361,7 @@
|
||||
"message": "Unable to update board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 67]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 68]],
|
||||
"translation": "Не удалось обновить доску"
|
||||
},
|
||||
"XpcjLO": {
|
||||
@@ -6310,7 +6383,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 273],
|
||||
["src/views/board/index.tsx", 274],
|
||||
["src/views/card/index.tsx", 235]
|
||||
],
|
||||
"translation": "Не удалось обновить карточку"
|
||||
@@ -6355,7 +6428,7 @@
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/board/index.tsx", 217],
|
||||
["src/views/board/index.tsx", 218],
|
||||
["src/views/card/components/ListSelector.tsx", 54]
|
||||
],
|
||||
"translation": "Не удалось обновить список"
|
||||
@@ -6395,7 +6468,7 @@
|
||||
"message": "Unarchive board",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 114]],
|
||||
"origin": [["src/views/board/components/BoardDropdown.tsx", 115]],
|
||||
"translation": "Восстановить доску из архива"
|
||||
},
|
||||
"E8zYtd": {
|
||||
@@ -6508,7 +6581,7 @@
|
||||
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
|
||||
"translation": "Неограниченное количество участников и персональное имя рабочего пространства для команд, готовых к масштабированию."
|
||||
},
|
||||
"i5yNAO": {
|
||||
@@ -6598,7 +6671,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/views/members/index.tsx", 295],
|
||||
["src/views/onboarding/select-plan/index.tsx", 241]
|
||||
["src/views/onboarding/select-plan/index.tsx", 245]
|
||||
],
|
||||
"translation": "Обновить"
|
||||
},
|
||||
@@ -6931,7 +7004,7 @@
|
||||
"comments": [],
|
||||
"origin": [
|
||||
["src/components/SettingsLayout.tsx", 47],
|
||||
["src/views/board/index.tsx", 530],
|
||||
["src/views/board/index.tsx", 538],
|
||||
["src/views/boards/index.tsx", 48],
|
||||
["src/views/members/index.tsx", 278],
|
||||
["src/views/public/board/index.tsx", 125],
|
||||
@@ -7146,6 +7219,13 @@
|
||||
"origin": [["src/views/home/components/Faqs.tsx", 127]],
|
||||
"translation": "Вы можете развернуть сервис самостоятельно, следуя инструкциям в нашем <0>репозитории</0>."
|
||||
},
|
||||
"tUL16u": {
|
||||
"message": "You don't have any other workspaces to move this board to.",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/board/components/MoveBoardForm.tsx", 68]],
|
||||
"translation": "У вас нет других рабочих пространств для перемещения этой доски."
|
||||
},
|
||||
"h2FKMV": {
|
||||
"message": "You don't have permission",
|
||||
"placeholders": {},
|
||||
@@ -7154,8 +7234,8 @@
|
||||
["src/views/board/components/List.tsx", 117],
|
||||
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
|
||||
["src/views/board/components/VisibilityButton.tsx", 72],
|
||||
["src/views/board/index.tsx", 604],
|
||||
["src/views/board/index.tsx", 662],
|
||||
["src/views/board/index.tsx", 612],
|
||||
["src/views/board/index.tsx", 670],
|
||||
["src/views/boards/components/BoardsList.tsx", 71],
|
||||
["src/views/boards/index.tsx", 59],
|
||||
["src/views/boards/index.tsx", 80]
|
||||
@@ -7250,7 +7330,7 @@
|
||||
"message": "Your avatar",
|
||||
"placeholders": {},
|
||||
"comments": [],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
|
||||
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
|
||||
"translation": "Ваш аватар"
|
||||
},
|
||||
"evg7+A": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,108 +0,0 @@
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { Novu } from "@novu/api";
|
||||
import { jwtVerify } from "jose";
|
||||
import { z } from "zod";
|
||||
|
||||
import { withApiLogging } from "@kan/api/utils/apiLogging";
|
||||
import { withRateLimit } from "@kan/api/utils/rateLimit";
|
||||
|
||||
import { env } from "~/env";
|
||||
|
||||
const requestSchema = z.object({
|
||||
token: z.string().min(1),
|
||||
});
|
||||
|
||||
const tokenPayloadSchema = z.object({
|
||||
subscriberId: z.string(),
|
||||
});
|
||||
|
||||
type ResponseData =
|
||||
| { success: true }
|
||||
| { success: false; error: string; code?: string };
|
||||
|
||||
const textEncoder = new TextEncoder();
|
||||
|
||||
export default withRateLimit(
|
||||
{ points: 100, duration: 60 },
|
||||
withApiLogging(
|
||||
async (req: NextApiRequest, res: NextApiResponse<ResponseData>) => {
|
||||
if (process.env.NEXT_PUBLIC_KAN_ENV !== "cloud") {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
error: "Unsubscribe endpoint is not available.",
|
||||
code: "UNAVAILABLE",
|
||||
});
|
||||
}
|
||||
|
||||
if (req.method !== "POST") {
|
||||
res.setHeader("Allow", "POST");
|
||||
return res.status(405).json({
|
||||
success: false,
|
||||
error: "Method not allowed.",
|
||||
code: "METHOD_NOT_ALLOWED",
|
||||
});
|
||||
}
|
||||
|
||||
const parsedBody = requestSchema.safeParse(req.body);
|
||||
|
||||
if (!parsedBody.success) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
error: "Invalid request payload.",
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
}
|
||||
|
||||
if (!env.EMAIL_UNSUBSCRIBE_SECRET || !env.NOVU_API_KEY) {
|
||||
return res.status(500).json({
|
||||
success: false,
|
||||
error: "Unsubscribe service is not configured.",
|
||||
code: "NOT_CONFIGURED",
|
||||
});
|
||||
}
|
||||
|
||||
let payload: z.infer<typeof tokenPayloadSchema>;
|
||||
|
||||
try {
|
||||
const verified = await jwtVerify(
|
||||
parsedBody.data.token,
|
||||
textEncoder.encode(env.EMAIL_UNSUBSCRIBE_SECRET),
|
||||
{
|
||||
// We intentionally do not use exp/iat claims –
|
||||
// tokens are long-lived and validated only by signature + payload.
|
||||
clockTolerance: "0s",
|
||||
},
|
||||
);
|
||||
payload = tokenPayloadSchema.parse(verified.payload);
|
||||
} catch {
|
||||
return res.status(401).json({
|
||||
success: false,
|
||||
error: "Your unsubscribe link is invalid or has expired.",
|
||||
code: "INVALID_TOKEN",
|
||||
});
|
||||
}
|
||||
|
||||
const novu = new Novu({ secretKey: env.NOVU_API_KEY });
|
||||
|
||||
try {
|
||||
await novu.subscribers.preferences.update(
|
||||
{
|
||||
channels: {
|
||||
email: false,
|
||||
},
|
||||
},
|
||||
payload.subscriberId,
|
||||
);
|
||||
} catch (error) {
|
||||
return res.status(502).json({
|
||||
success: false,
|
||||
error:
|
||||
"We could not update your email preferences right now. Please try again later.",
|
||||
code: "NOVU_ERROR",
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(200).json({ success: true });
|
||||
},
|
||||
),
|
||||
);
|
||||
@@ -1,110 +0,0 @@
|
||||
import { useRouter } from "next/router";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import Button from "~/components/Button";
|
||||
import { PageHead } from "~/components/PageHead";
|
||||
import PatternedBackground from "~/components/PatternedBackground";
|
||||
|
||||
type UnsubscribeStatus = "idle" | "processing" | "success" | "error";
|
||||
|
||||
export default function UnsubscribePage() {
|
||||
const router = useRouter();
|
||||
const [token, setToken] = useState("");
|
||||
const [status, setStatus] = useState<UnsubscribeStatus>("idle");
|
||||
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (!router.isReady) return;
|
||||
const value = router.query.token;
|
||||
if (typeof value === "string") {
|
||||
setToken(value);
|
||||
} else if (Array.isArray(value)) {
|
||||
setToken(value[0] ?? "");
|
||||
} else {
|
||||
setToken("");
|
||||
}
|
||||
}, [router.isReady, router.query.token]);
|
||||
|
||||
const handleUnsubscribe = async () => {
|
||||
if (!token) {
|
||||
setStatus("error");
|
||||
setErrorMessage(
|
||||
t`Your unsubscribe link is missing a token. Please open the latest email and try again.`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
setStatus("processing");
|
||||
setErrorMessage(null);
|
||||
|
||||
try {
|
||||
const response = await fetch("/api/unsubscribe", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ token }),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const payload = (await response.json().catch(() => null)) as {
|
||||
error?: string;
|
||||
} | null;
|
||||
|
||||
throw new Error(
|
||||
payload?.error ??
|
||||
"We couldn't update your preferences. Please try again.",
|
||||
);
|
||||
}
|
||||
|
||||
setStatus("success");
|
||||
} catch (error) {
|
||||
setStatus("error");
|
||||
setErrorMessage(
|
||||
t`We couldn't update your preferences. Please try again.`,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const title = t`Unsubscribe`;
|
||||
|
||||
return (
|
||||
<>
|
||||
<PageHead title={`${title} | kan.bn`} />
|
||||
<div className="relative flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
|
||||
<PatternedBackground />
|
||||
<div className="z-10 w-full max-w-md space-y-6">
|
||||
<div>
|
||||
<h1 className="mt-6 text-center text-3xl font-bold tracking-tight text-light-1000 dark:text-dark-1000">
|
||||
{t`Do you want to unsubscribe?`}
|
||||
</h1>
|
||||
<p className="mt-4 text-center text-sm text-light-900 dark:text-dark-800">
|
||||
{t`Confirm your email preferences:`}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Button
|
||||
onClick={handleUnsubscribe}
|
||||
disabled={status === "success"}
|
||||
isLoading={status === "processing"}
|
||||
variant="primary"
|
||||
size="md"
|
||||
>
|
||||
{t`Unsubscribe`}
|
||||
</Button>
|
||||
</div>
|
||||
{status === "success" && (
|
||||
<p className="text-center text-sm text-light-900 dark:text-dark-800">
|
||||
{t`You have been unsubscribed!`}
|
||||
</p>
|
||||
)}
|
||||
{status === "error" && (
|
||||
<p className="mx-auto max-w-[300px] text-center text-sm font-medium text-red-600 dark:text-red-400">
|
||||
{errorMessage}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createContext, useContext, useState } from "react";
|
||||
import { createContext, useCallback, useContext, useState } from "react";
|
||||
|
||||
interface PopupContextType {
|
||||
isOpen: boolean;
|
||||
@@ -25,24 +25,27 @@ export const PopupProvider: React.FC<Props> = ({ children }) => {
|
||||
const [popupMessage, setPopupMessage] = useState("");
|
||||
const [popupIcon, setPopupIcon] = useState("");
|
||||
|
||||
const showPopup = ({
|
||||
header,
|
||||
message,
|
||||
icon,
|
||||
}: {
|
||||
header: string;
|
||||
message: string;
|
||||
icon: string;
|
||||
}) => {
|
||||
setIsOpen(true);
|
||||
setPopupHeader(header);
|
||||
setPopupMessage(message);
|
||||
setPopupIcon(icon);
|
||||
};
|
||||
const showPopup = useCallback(
|
||||
({
|
||||
header,
|
||||
message,
|
||||
icon,
|
||||
}: {
|
||||
header: string;
|
||||
message: string;
|
||||
icon: string;
|
||||
}) => {
|
||||
setIsOpen(true);
|
||||
setPopupHeader(header);
|
||||
setPopupMessage(message);
|
||||
setPopupIcon(icon);
|
||||
},
|
||||
[],
|
||||
);
|
||||
|
||||
const hidePopup = () => {
|
||||
const hidePopup = useCallback(() => {
|
||||
setIsOpen(false);
|
||||
};
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<PopupContext.Provider
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useRouter } from "next/router";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import {
|
||||
HiArrowRightOnRectangle,
|
||||
HiEllipsisHorizontal,
|
||||
HiLink,
|
||||
HiOutlineDocumentDuplicate,
|
||||
@@ -88,7 +89,7 @@ export default function BoardDropdown({
|
||||
const isArchiveActionPending = updateBoard.isPending;
|
||||
|
||||
const items = [
|
||||
...(isTemplate && canCreateBoard
|
||||
...(!isTemplate && canCreateBoard
|
||||
? [
|
||||
{
|
||||
label: t`Make template`,
|
||||
@@ -119,6 +120,17 @@ export default function BoardDropdown({
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(!isTemplate && canEditBoard
|
||||
? [
|
||||
{
|
||||
label: t`Move to workspace`,
|
||||
action: () => openModal("MOVE_BOARD"),
|
||||
icon: (
|
||||
<HiArrowRightOnRectangle className="h-[16px] w-[16px] text-dark-900" />
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
{
|
||||
label: isFavorite
|
||||
? t`Remove from favorites`
|
||||
|
||||
113
apps/web/src/views/board/components/MoveBoardForm.tsx
Normal file
113
apps/web/src/views/board/components/MoveBoardForm.tsx
Normal file
@@ -0,0 +1,113 @@
|
||||
import { useRouter } from "next/navigation";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { useState } from "react";
|
||||
|
||||
import Button from "~/components/Button";
|
||||
import { useModal } from "~/providers/modal";
|
||||
import { usePopup } from "~/providers/popup";
|
||||
import { useWorkspace } from "~/providers/workspace";
|
||||
import { api } from "~/utils/api";
|
||||
|
||||
export function MoveBoardForm({
|
||||
boardPublicId,
|
||||
}: {
|
||||
boardPublicId: string;
|
||||
}) {
|
||||
const router = useRouter();
|
||||
const { closeModal } = useModal();
|
||||
const { showPopup } = usePopup();
|
||||
const { workspace, availableWorkspaces, switchWorkspace } = useWorkspace();
|
||||
const [targetWorkspacePublicId, setTargetWorkspacePublicId] = useState("");
|
||||
|
||||
const otherWorkspaces = availableWorkspaces.filter(
|
||||
(ws) => ws.publicId !== workspace.publicId && ws.role !== "guest",
|
||||
);
|
||||
|
||||
const moveBoard = api.board.move.useMutation({
|
||||
onSuccess: () => {
|
||||
const targetWorkspace = availableWorkspaces.find(
|
||||
(ws) => ws.publicId === targetWorkspacePublicId,
|
||||
);
|
||||
closeModal();
|
||||
showPopup({
|
||||
header: t`Board moved`,
|
||||
message: t`The board has been moved to ${targetWorkspace?.name ?? "the workspace"}.`,
|
||||
icon: "success",
|
||||
});
|
||||
if (targetWorkspace) {
|
||||
switchWorkspace(targetWorkspace);
|
||||
} else {
|
||||
router.push("/boards");
|
||||
}
|
||||
},
|
||||
onError: (error) => {
|
||||
showPopup({
|
||||
header: t`Unable to move board`,
|
||||
message: error.message,
|
||||
icon: "error",
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
const handleMoveBoard = () => {
|
||||
if (!targetWorkspacePublicId) return;
|
||||
moveBoard.mutate({
|
||||
boardPublicId,
|
||||
targetWorkspacePublicId,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="p-5">
|
||||
<div className="flex w-full flex-col justify-between pb-4">
|
||||
<h2 className="text-md pb-4 font-medium text-neutral-900 dark:text-dark-1000">
|
||||
{t`Move board to another workspace`}
|
||||
</h2>
|
||||
{otherWorkspaces.length === 0 ? (
|
||||
<p className="text-sm font-medium text-light-900 dark:text-dark-900">
|
||||
{t`You don't have any other workspaces to move this board to.`}
|
||||
</p>
|
||||
) : (
|
||||
<>
|
||||
<label
|
||||
htmlFor="target-workspace"
|
||||
className="mb-2 text-sm font-medium text-light-900 dark:text-dark-900"
|
||||
>
|
||||
{t`Destination workspace`}
|
||||
</label>
|
||||
<select
|
||||
id="target-workspace"
|
||||
value={targetWorkspacePublicId}
|
||||
onChange={(e) => setTargetWorkspacePublicId(e.target.value)}
|
||||
className="block w-full rounded-md border-0 bg-dark-300 bg-white/5 py-1.5 text-sm shadow-sm ring-1 ring-inset ring-light-600 placeholder:text-dark-800 focus:ring-2 focus:ring-inset focus:ring-light-700 dark:text-dark-1000 dark:ring-dark-700 dark:focus:ring-dark-700 sm:leading-6"
|
||||
>
|
||||
<option value="">{t`Select a workspace`}</option>
|
||||
{otherWorkspaces.map((ws) => (
|
||||
<option key={ws.publicId} value={ws.publicId}>
|
||||
{ws.name}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<p className="mt-3 text-sm text-light-800 dark:text-dark-800">
|
||||
{t`Card member assignments will be cleared when moving to a different workspace.`}
|
||||
</p>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div className="mt-5 flex justify-end space-x-2 sm:mt-6">
|
||||
<Button onClick={() => closeModal()} variant="secondary">
|
||||
{t`Cancel`}
|
||||
</Button>
|
||||
{otherWorkspaces.length > 0 && (
|
||||
<Button
|
||||
onClick={handleMoveBoard}
|
||||
isLoading={moveBoard.isPending}
|
||||
disabled={!targetWorkspacePublicId}
|
||||
>
|
||||
{t`Move board`}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import { useRouter } from "next/router";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { keepPreviousData } from "@tanstack/react-query";
|
||||
import { env } from "next-runtime-env";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { DragDropContext, Draggable } from "react-beautiful-dnd";
|
||||
import { useForm } from "react-hook-form";
|
||||
import {
|
||||
@@ -49,6 +49,7 @@ import { DeleteBoardConfirmation } from "./components/DeleteBoardConfirmation";
|
||||
import { DeleteListConfirmation } from "./components/DeleteListConfirmation";
|
||||
import Filters from "./components/Filters";
|
||||
import List from "./components/List";
|
||||
import { MoveBoardForm } from "./components/MoveBoardForm";
|
||||
import { NewCardForm } from "./components/NewCardForm";
|
||||
import { NewListForm } from "./components/NewListForm";
|
||||
import { NewTemplateForm } from "./components/NewTemplateForm";
|
||||
@@ -84,21 +85,26 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
const { canCreateList, canEditList, canEditCard, canEditBoard } =
|
||||
usePermissions();
|
||||
|
||||
const { tooltipContent: createListShortcutTooltipContent } =
|
||||
useKeyboardShortcut({
|
||||
type: "PRESS",
|
||||
stroke: { key: "C" },
|
||||
action: () => boardId && canCreateList && openNewListForm(boardId),
|
||||
description: t`Create new list`,
|
||||
group: "ACTIONS",
|
||||
});
|
||||
|
||||
const boardId = params?.boardId
|
||||
? Array.isArray(params.boardId)
|
||||
? params.boardId[0]
|
||||
: params.boardId
|
||||
: null;
|
||||
|
||||
const createListShortcut = useMemo(
|
||||
() => ({
|
||||
type: "PRESS" as const,
|
||||
stroke: { key: "C" },
|
||||
action: () => boardId && canCreateList && openNewListForm(boardId),
|
||||
description: t`Create new list`,
|
||||
group: "ACTIONS" as const,
|
||||
}),
|
||||
[boardId, canCreateList],
|
||||
);
|
||||
|
||||
const { tooltipContent: createListShortcutTooltipContent } =
|
||||
useKeyboardShortcut(createListShortcut);
|
||||
|
||||
const updateBoard = api.board.update.useMutation();
|
||||
|
||||
const { register, handleSubmit, setValue } = useForm<UpdateBoardInput>({
|
||||
@@ -460,6 +466,13 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
/>
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
modalSize="sm"
|
||||
isVisible={isOpen && modalContentType === "MOVE_BOARD"}
|
||||
>
|
||||
<MoveBoardForm boardPublicId={boardId ?? ""} />
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
modalSize="sm"
|
||||
isVisible={isOpen && modalContentType === "CREATE_TEMPLATE"}
|
||||
|
||||
@@ -5,8 +5,12 @@ import {
|
||||
ListboxOptions,
|
||||
} from "@headlessui/react";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { HiArrowDownTray, HiChevronDown, HiOutlinePlusSmall } from "react-icons/hi2";
|
||||
import { useState } from "react";
|
||||
import { useMemo, useState } from "react";
|
||||
import {
|
||||
HiArrowDownTray,
|
||||
HiChevronDown,
|
||||
HiOutlinePlusSmall,
|
||||
} from "react-icons/hi2";
|
||||
|
||||
import Button from "~/components/Button";
|
||||
import FeedbackModal from "~/components/FeedbackModal";
|
||||
@@ -33,14 +37,19 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
const [activeTab, setActiveTab] = useState<"boards" | "archived">("boards");
|
||||
const { canCreateBoard } = usePermissions();
|
||||
|
||||
const { tooltipContent: createModalShortcutTooltipContent } =
|
||||
useKeyboardShortcut({
|
||||
type: "PRESS",
|
||||
const createBoardShortcut = useMemo(
|
||||
() => ({
|
||||
type: "PRESS" as const,
|
||||
stroke: { key: "C" },
|
||||
action: () => canCreateBoard && openModal("NEW_BOARD"),
|
||||
description: t`Create new ${isTemplate ? "template" : "board"}`,
|
||||
group: "ACTIONS",
|
||||
});
|
||||
group: "ACTIONS" as const,
|
||||
}),
|
||||
[canCreateBoard, isTemplate, openModal],
|
||||
);
|
||||
|
||||
const { tooltipContent: createModalShortcutTooltipContent } =
|
||||
useKeyboardShortcut(createBoardShortcut);
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -137,7 +146,7 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
onChange={(tab) => setActiveTab(tab)}
|
||||
>
|
||||
<div className="relative mb-4">
|
||||
<ListboxButton className="w-full appearance-none rounded-md border-0 bg-light-50 py-3 pl-3 pr-10 text-left text-sm font-semibold text-light-1000 shadow-sm ring-1 ring-inset ring-light-300 dark:bg-dark-50 dark:text-dark-1000 dark:ring-dark-300 dark:focus:ring-dark-500">
|
||||
<ListboxButton className="w-full appearance-none rounded-md border-0 bg-light-50 py-3 pl-3 pr-10 text-left text-sm font-semibold text-light-1000 shadow-sm ring-1 ring-inset ring-light-300 dark:bg-dark-50 dark:text-dark-1000 dark:ring-dark-300 dark:focus:ring-dark-500">
|
||||
{boardsTabs.find((tab) => tab.key === activeTab)?.label ??
|
||||
"Select a tab"}
|
||||
<HiChevronDown
|
||||
@@ -151,9 +160,10 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
key={tab.key}
|
||||
value={tab.key}
|
||||
className={({ selected }) =>
|
||||
`relative cursor-pointer select-none py-2 pl-3 pr-9 ${selected
|
||||
? "font-bold text-light-1000 dark:text-dark-1000"
|
||||
: "font-normal text-light-1000 dark:text-dark-1000"
|
||||
`relative cursor-pointer select-none py-2 pl-3 pr-9 ${
|
||||
selected
|
||||
? "font-bold text-light-1000 dark:text-dark-1000"
|
||||
: "font-normal text-light-1000 dark:text-dark-1000"
|
||||
}`
|
||||
}
|
||||
>
|
||||
@@ -175,10 +185,11 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
|
||||
key={tab.key}
|
||||
type="button"
|
||||
onClick={() => setActiveTab(tab.key)}
|
||||
className={`whitespace-nowrap px-1 py-0 mt-2 mb-8 text-sm font-semibold transition-colors focus:outline-none ${activeTab === tab.key
|
||||
? "border-light-1000 text-light-1000 dark:border-dark-1000 dark:text-dark-1000"
|
||||
: "border-transparent text-light-900 hover:border-light-950 hover:text-light-950 dark:text-dark-900 dark:hover:border-white/20 dark:hover:text-dark-950"
|
||||
}`}
|
||||
className={`mb-8 mt-2 whitespace-nowrap px-1 py-0 text-sm font-semibold transition-colors focus:outline-none ${
|
||||
activeTab === tab.key
|
||||
? "border-light-1000 text-light-1000 dark:border-dark-1000 dark:text-dark-1000"
|
||||
: "border-transparent text-light-900 hover:border-light-950 hover:text-light-950 dark:text-dark-900 dark:hover:border-white/20 dark:hover:text-dark-950"
|
||||
}`}
|
||||
>
|
||||
{tab.label}
|
||||
</button>
|
||||
|
||||
@@ -2,9 +2,10 @@ import { t } from "@lingui/core/macro";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { HiOutlineArrowUp } from "react-icons/hi2";
|
||||
|
||||
import Editor from "~/components/Editor";
|
||||
import type { WorkspaceMember } from "~/components/Editor";
|
||||
import Editor from "~/components/Editor";
|
||||
import LoadingSpinner from "~/components/LoadingSpinner";
|
||||
import { Tooltip } from "~/components/Tooltip";
|
||||
import { usePermissions } from "~/hooks/usePermissions";
|
||||
import { usePopup } from "~/providers/popup";
|
||||
import { api } from "~/utils/api";
|
||||
@@ -51,6 +52,21 @@ const NewCommentForm = ({
|
||||
});
|
||||
};
|
||||
|
||||
const isMac =
|
||||
typeof navigator !== "undefined" && navigator.userAgent.includes("Mac");
|
||||
|
||||
const submitTooltip = (
|
||||
<div className="flex flex-row items-center gap-2 text-[11px]">
|
||||
{t`Submit`}
|
||||
<span className="inline-flex items-center justify-center rounded border border-light-400 bg-light-200 px-1.5 py-0.5 font-mono text-[8px] font-semibold text-neutral-900 dark:border-dark-400 dark:bg-dark-200 dark:text-dark-950">
|
||||
{isMac ? "⌘" : "Ctrl"}
|
||||
</span>
|
||||
<span className="inline-flex items-center justify-center rounded border border-light-400 bg-light-200 px-1.5 py-0.5 font-mono text-[8px] font-semibold text-neutral-900 dark:border-dark-400 dark:bg-dark-200 dark:text-dark-950">
|
||||
Enter
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
|
||||
if (!canCreateComment) {
|
||||
return null;
|
||||
}
|
||||
@@ -63,23 +79,26 @@ const NewCommentForm = ({
|
||||
<Editor
|
||||
content={watch("comment")}
|
||||
onChange={(value) => setValue("comment", value)}
|
||||
onSubmit={handleSubmit(onSubmit)}
|
||||
workspaceMembers={workspaceMembers}
|
||||
enableYouTubeEmbed={false}
|
||||
placeholder={t`Add comment... (type '/' to open commands or '@' to mention)`}
|
||||
disableHeadings={true}
|
||||
/>
|
||||
<div className="flex justify-end">
|
||||
<button
|
||||
type="submit"
|
||||
disabled={addCommentMutation.isPending}
|
||||
className="flex h-8 w-8 items-center justify-center rounded-full border border-light-600 bg-light-300 hover:bg-light-400 disabled:opacity-50 dark:border-dark-400 dark:bg-dark-200 dark:hover:bg-dark-400"
|
||||
>
|
||||
{addCommentMutation.isPending ? (
|
||||
<LoadingSpinner size="sm" />
|
||||
) : (
|
||||
<HiOutlineArrowUp />
|
||||
)}
|
||||
</button>
|
||||
<Tooltip content={submitTooltip} placement="top">
|
||||
<button
|
||||
type="submit"
|
||||
disabled={addCommentMutation.isPending}
|
||||
className="flex h-8 w-8 items-center justify-center rounded-full border border-light-600 bg-light-300 hover:bg-light-400 disabled:opacity-50 dark:border-dark-400 dark:bg-dark-200 dark:hover:bg-dark-400"
|
||||
>
|
||||
{addCommentMutation.isPending ? (
|
||||
<LoadingSpinner size="sm" />
|
||||
) : (
|
||||
<HiOutlineArrowUp />
|
||||
)}
|
||||
</button>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
||||
@@ -48,7 +48,11 @@ export default function SelectPlanView() {
|
||||
(searchParams.get("billing") as Billing | null) ?? "annual",
|
||||
);
|
||||
const returnUrl = searchParams.get("returnUrl") ?? "/boards";
|
||||
const workspacePublicId = searchParams.get("workspacePublicId");
|
||||
const workspacePublicId =
|
||||
searchParams.get("workspacePublicId") ??
|
||||
(typeof window !== "undefined"
|
||||
? localStorage.getItem("workspacePublicId")
|
||||
: null);
|
||||
const { data: workspaces } = api.workspace.all.useQuery();
|
||||
const { data: session } = authClient.useSession();
|
||||
const { data: user } = api.user.getUser.useQuery(undefined, {
|
||||
|
||||
@@ -61,9 +61,9 @@ services:
|
||||
- SMTP_REJECT_UNAUTHORIZED=${SMTP_REJECT_UNAUTHORIZED}
|
||||
|
||||
# Notifications
|
||||
- NOVU_API_KEY=${NOVU_API_KEY}
|
||||
- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
|
||||
- EMAIL_UNSUBSCRIBE_SECRET=${EMAIL_UNSUBSCRIBE_SECRET}
|
||||
- SUBSCRIBER_API_URL=${SUBSCRIBER_API_URL}
|
||||
- SUBSCRIBER_API_KEY=${SUBSCRIBER_API_KEY}
|
||||
- SUBSCRIBER_ENVIRONMENT_ID=${SUBSCRIBER_ENVIRONMENT_ID}
|
||||
|
||||
# S3 storage
|
||||
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
|
||||
|
||||
268
packages/api/src/routers/board-move.test.ts
Normal file
268
packages/api/src/routers/board-move.test.ts
Normal file
@@ -0,0 +1,268 @@
|
||||
import { describe, it, expect, vi, beforeEach } from "vitest";
|
||||
import { TRPCError } from "@trpc/server";
|
||||
|
||||
// Mock all imports used by board.ts before importing the router
|
||||
vi.mock("@kan/db/repository/board.repo", () => ({
|
||||
getBoardForMove: vi.fn(),
|
||||
isBoardSlugAvailable: vi.fn(),
|
||||
moveToWorkspace: vi.fn(),
|
||||
getIdByPublicId: vi.fn(),
|
||||
getByPublicId: vi.fn(),
|
||||
getWithListIdsByPublicId: vi.fn(),
|
||||
getWithLatestListIndexByPublicId: vi.fn(),
|
||||
getWorkspaceAndBoardIdByBoardPublicId: vi.fn(),
|
||||
create: vi.fn(),
|
||||
update: vi.fn(),
|
||||
updatePositions: vi.fn(),
|
||||
archive: vi.fn(),
|
||||
deleteBoard: vi.fn(),
|
||||
getAllByWorkspaceId: vi.fn(),
|
||||
createFavorite: vi.fn(),
|
||||
deleteFavorite: vi.fn(),
|
||||
getFavorite: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/db/repository/workspace.repo", () => ({
|
||||
getByPublicId: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/db/repository/card.repo", () => ({
|
||||
getByPublicId: vi.fn(),
|
||||
create: vi.fn(),
|
||||
update: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/db/repository/cardActivity.repo", () => ({
|
||||
create: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/db/repository/label.repo", () => ({
|
||||
create: vi.fn(),
|
||||
getById: vi.fn(),
|
||||
getByPublicId: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/db/repository/list.repo", () => ({
|
||||
create: vi.fn(),
|
||||
getByPublicId: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("../utils/permissions", () => ({
|
||||
assertCanEdit: vi.fn(),
|
||||
assertCanDelete: vi.fn(),
|
||||
assertPermission: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/shared/utils", () => ({
|
||||
generateSlug: vi.fn((name: string) => name.toLowerCase().replace(/\s+/g, "-")),
|
||||
generateUID: vi.fn(() => "abc123"),
|
||||
generateAvatarUrl: vi.fn(),
|
||||
convertDueDateFiltersToRanges: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/shared/constants", () => ({
|
||||
colours: [],
|
||||
}));
|
||||
|
||||
import * as boardRepo from "@kan/db/repository/board.repo";
|
||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||
import { assertCanEdit, assertPermission } from "../utils/permissions";
|
||||
|
||||
const mockGetBoardForMove = boardRepo.getBoardForMove as ReturnType<typeof vi.fn>;
|
||||
const mockIsBoardSlugAvailable = boardRepo.isBoardSlugAvailable as ReturnType<typeof vi.fn>;
|
||||
const mockMoveToWorkspace = boardRepo.moveToWorkspace as ReturnType<typeof vi.fn>;
|
||||
const mockWorkspaceGetByPublicId = workspaceRepo.getByPublicId as ReturnType<typeof vi.fn>;
|
||||
const mockAssertCanEdit = assertCanEdit as ReturnType<typeof vi.fn>;
|
||||
const mockAssertPermission = assertPermission as ReturnType<typeof vi.fn>;
|
||||
|
||||
describe("board.move", () => {
|
||||
const mockDb = {} as never;
|
||||
const mockUser = { id: "user-123", name: "Test User", email: "test@example.com" };
|
||||
const mockInput = {
|
||||
boardPublicId: "brd-123456789",
|
||||
targetWorkspacePublicId: "ws-target-789",
|
||||
};
|
||||
const mockBoard = {
|
||||
id: 1,
|
||||
name: "My Board",
|
||||
slug: "my-board",
|
||||
type: "board" as const,
|
||||
isArchived: false,
|
||||
workspaceId: 10,
|
||||
createdBy: "user-123",
|
||||
};
|
||||
const mockTargetWorkspace = { id: 20, publicId: "ws-target-789" };
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
mockAssertCanEdit.mockResolvedValue(undefined);
|
||||
mockAssertPermission.mockResolvedValue(undefined);
|
||||
});
|
||||
|
||||
it("throws UNAUTHORIZED when user is not authenticated", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
const ctx = { user: null, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("throws NOT_FOUND when board does not exist", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(null);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("throws BAD_REQUEST for template boards", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce({ ...mockBoard, type: "template" });
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("throws BAD_REQUEST for archived boards", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce({ ...mockBoard, isArchived: true });
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("checks board:edit permission on source workspace", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockAssertCanEdit.mockRejectedValueOnce(
|
||||
new TRPCError({ code: "FORBIDDEN", message: "No permission" }),
|
||||
);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
|
||||
expect(mockAssertCanEdit).toHaveBeenCalledWith(
|
||||
mockDb,
|
||||
mockUser.id,
|
||||
mockBoard.workspaceId,
|
||||
"board:edit",
|
||||
mockBoard.createdBy,
|
||||
);
|
||||
});
|
||||
|
||||
it("throws NOT_FOUND when target workspace does not exist", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce(null);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("throws NOT_FOUND when target workspace is soft-deleted", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce({
|
||||
...mockTargetWorkspace,
|
||||
deletedAt: new Date(),
|
||||
});
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("throws BAD_REQUEST when target is the same workspace", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce({
|
||||
id: mockBoard.workspaceId,
|
||||
publicId: "ws-target-789",
|
||||
});
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
});
|
||||
|
||||
it("checks board:create permission on target workspace", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce(mockTargetWorkspace);
|
||||
mockAssertPermission.mockRejectedValueOnce(
|
||||
new TRPCError({ code: "FORBIDDEN", message: "No permission" }),
|
||||
);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await expect(
|
||||
boardRouter.createCaller(ctx).move(mockInput),
|
||||
).rejects.toThrow(TRPCError);
|
||||
|
||||
expect(mockAssertPermission).toHaveBeenCalledWith(
|
||||
mockDb,
|
||||
mockUser.id,
|
||||
mockTargetWorkspace.id,
|
||||
"board:create",
|
||||
);
|
||||
});
|
||||
|
||||
it("appends UID suffix when slug conflicts in target workspace", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce(mockTargetWorkspace);
|
||||
mockIsBoardSlugAvailable.mockResolvedValueOnce(false);
|
||||
mockMoveToWorkspace.mockResolvedValueOnce(undefined);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
await boardRouter.createCaller(ctx).move(mockInput);
|
||||
|
||||
expect(mockMoveToWorkspace).toHaveBeenCalledWith(
|
||||
mockDb,
|
||||
mockBoard.id,
|
||||
mockTargetWorkspace.id,
|
||||
"my-board-abc123",
|
||||
);
|
||||
});
|
||||
|
||||
it("moves board successfully with available slug", async () => {
|
||||
const { boardRouter } = await import("./board");
|
||||
mockGetBoardForMove.mockResolvedValueOnce(mockBoard);
|
||||
mockWorkspaceGetByPublicId.mockResolvedValueOnce(mockTargetWorkspace);
|
||||
mockIsBoardSlugAvailable.mockResolvedValueOnce(true);
|
||||
mockMoveToWorkspace.mockResolvedValueOnce(undefined);
|
||||
|
||||
const ctx = { user: mockUser, db: mockDb } as never;
|
||||
|
||||
const result = await boardRouter.createCaller(ctx).move(mockInput);
|
||||
|
||||
expect(result).toEqual({ success: true });
|
||||
expect(mockMoveToWorkspace).toHaveBeenCalledWith(
|
||||
mockDb,
|
||||
mockBoard.id,
|
||||
mockTargetWorkspace.id,
|
||||
"my-board",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -644,6 +644,119 @@ export const boardRouter = createTRPCRouter({
|
||||
}
|
||||
}
|
||||
|
||||
return { success: true };
|
||||
}),
|
||||
move: protectedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: "POST",
|
||||
path: "/boards/{boardPublicId}/move",
|
||||
summary: "Move board to another workspace",
|
||||
description:
|
||||
"Moves a board and all its contents to a different workspace",
|
||||
tags: ["Boards"],
|
||||
protect: true,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
boardPublicId: z.string().min(12),
|
||||
targetWorkspacePublicId: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(z.object({ success: z.boolean() }))
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const userId = ctx.user?.id;
|
||||
|
||||
if (!userId)
|
||||
throw new TRPCError({
|
||||
message: `User not authenticated`,
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
// Get source board
|
||||
const board = await boardRepo.getBoardForMove(
|
||||
ctx.db,
|
||||
input.boardPublicId,
|
||||
);
|
||||
|
||||
if (!board)
|
||||
throw new TRPCError({
|
||||
message: `Board with public ID ${input.boardPublicId} not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
if (board.type === "template")
|
||||
throw new TRPCError({
|
||||
message: `Templates cannot be moved between workspaces`,
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
|
||||
if (board.isArchived)
|
||||
throw new TRPCError({
|
||||
message: `Archived boards cannot be moved. Unarchive the board first.`,
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
|
||||
// Check permission to edit board in source workspace
|
||||
await assertCanEdit(
|
||||
ctx.db,
|
||||
userId,
|
||||
board.workspaceId,
|
||||
"board:edit",
|
||||
board.createdBy ?? null,
|
||||
);
|
||||
|
||||
// Get target workspace. workspaceRepo.getByPublicId does not yet
|
||||
// filter soft-deleted workspaces (legacy: same is true for several
|
||||
// peer callers); guard at this call site so we never move a board
|
||||
// into a tombstoned workspace. A wider fix to make the repo treat
|
||||
// deleted-as-not-found is a separate concern.
|
||||
const targetWorkspace = await workspaceRepo.getByPublicId(
|
||||
ctx.db,
|
||||
input.targetWorkspacePublicId,
|
||||
);
|
||||
|
||||
if (!targetWorkspace || targetWorkspace.deletedAt)
|
||||
throw new TRPCError({
|
||||
message: `Target workspace not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
if (targetWorkspace.id === board.workspaceId)
|
||||
throw new TRPCError({
|
||||
message: `Board is already in this workspace`,
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
|
||||
// Check permission to create boards in target workspace
|
||||
await assertPermission(
|
||||
ctx.db,
|
||||
userId,
|
||||
targetWorkspace.id,
|
||||
"board:create",
|
||||
);
|
||||
|
||||
let slug = board.slug ?? generateSlug(board.name);
|
||||
|
||||
const isSlugAvailable = await boardRepo.isBoardSlugAvailable(
|
||||
ctx.db,
|
||||
slug,
|
||||
targetWorkspace.id,
|
||||
);
|
||||
|
||||
if (!isSlugAvailable) {
|
||||
slug = `${slug}-${generateUID()}`;
|
||||
}
|
||||
|
||||
// Move the board
|
||||
await boardRepo.moveToWorkspace(
|
||||
ctx.db,
|
||||
board.id,
|
||||
targetWorkspace.id,
|
||||
slug,
|
||||
);
|
||||
|
||||
return { success: true };
|
||||
}),
|
||||
checkSlugAvailability: publicProcedure
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { describe, it, expect, vi, beforeEach } from "vitest";
|
||||
import { env } from "next-runtime-env";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import * as memberRepo from "@kan/db/repository/member.repo";
|
||||
|
||||
import { createDatabaseHooks } from "./hooks";
|
||||
|
||||
vi.mock("next-runtime-env", () => ({
|
||||
env: vi.fn(),
|
||||
@@ -15,11 +20,11 @@ vi.mock("@kan/db/repository/user.repo", () => ({
|
||||
}));
|
||||
|
||||
vi.mock("@kan/email", () => ({
|
||||
notificationClient: null,
|
||||
createSubscriber: vi.fn(),
|
||||
triggerSubscriberWorkflow: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@kan/shared", () => ({
|
||||
createEmailUnsubscribeLink: vi.fn(),
|
||||
createS3Client: vi.fn(),
|
||||
}));
|
||||
|
||||
@@ -27,17 +32,10 @@ vi.mock("@aws-sdk/client-s3", () => ({
|
||||
PutObjectCommand: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@novu/api/models/components", () => ({
|
||||
ChatOrPushProviderEnum: { Discord: "discord" },
|
||||
}));
|
||||
|
||||
import { env } from "next-runtime-env";
|
||||
import * as memberRepo from "@kan/db/repository/member.repo";
|
||||
import { createDatabaseHooks } from "./hooks";
|
||||
|
||||
const mockEnv = env as ReturnType<typeof vi.fn>;
|
||||
const mockGetByEmailAndStatus =
|
||||
memberRepo.getByEmailAndStatus as ReturnType<typeof vi.fn>;
|
||||
const mockGetByEmailAndStatus = memberRepo.getByEmailAndStatus as ReturnType<
|
||||
typeof vi.fn
|
||||
>;
|
||||
|
||||
const db = {} as Parameters<typeof createDatabaseHooks>[0];
|
||||
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
import { PutObjectCommand } from "@aws-sdk/client-s3";
|
||||
import { ChatOrPushProviderEnum } from "@novu/api/models/components";
|
||||
import { createAuthMiddleware } from "better-auth/api";
|
||||
import { env } from "next-runtime-env";
|
||||
|
||||
import type { dbClient } from "@kan/db/client";
|
||||
import * as memberRepo from "@kan/db/repository/member.repo";
|
||||
import * as userRepo from "@kan/db/repository/user.repo";
|
||||
import { notificationClient } from "@kan/email";
|
||||
import { createSubscriber, triggerSubscriberWorkflow } from "@kan/email";
|
||||
import { createLogger } from "@kan/logger";
|
||||
import { createEmailUnsubscribeLink, createS3Client } from "@kan/shared";
|
||||
|
||||
const log = createLogger("auth");
|
||||
import { createS3Client } from "@kan/shared";
|
||||
|
||||
import { downloadImage } from "./utils";
|
||||
|
||||
const log = createLogger("auth");
|
||||
|
||||
type BetterAuthUser = {
|
||||
id: string;
|
||||
createdAt: Date;
|
||||
@@ -94,53 +93,49 @@ export function createDatabaseHooks(db: dbClient) {
|
||||
}
|
||||
}
|
||||
|
||||
if (notificationClient) {
|
||||
try {
|
||||
const [firstName, ...rest] = (user.name || "")
|
||||
.split(" ")
|
||||
.filter(Boolean);
|
||||
const lastName = rest.length ? rest.join(" ") : undefined;
|
||||
const avatarUrl = avatarKey
|
||||
? `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${avatarKey}`
|
||||
: undefined;
|
||||
const [firstName, ...rest] = (user.name || "")
|
||||
.split(" ")
|
||||
.filter(Boolean);
|
||||
const lastName = rest.length ? rest.join(" ") : undefined;
|
||||
|
||||
const unsubscribeUrl = await createEmailUnsubscribeLink(user.id);
|
||||
try {
|
||||
const avatarUrl = avatarKey
|
||||
? `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${avatarKey}`
|
||||
: undefined;
|
||||
|
||||
log.info({ workflowId: "user-signup", userId: user.id, email: user.email }, "Triggering Novu workflow");
|
||||
await notificationClient.trigger({
|
||||
to: {
|
||||
subscriberId: user.id,
|
||||
firstName: firstName,
|
||||
lastName: lastName,
|
||||
email: user.email,
|
||||
avatar: avatarUrl,
|
||||
data: {
|
||||
emailVerified: user.emailVerified,
|
||||
stripeCustomerId: user.stripeCustomerId,
|
||||
createdAt: user.createdAt,
|
||||
updatedAt: user.updatedAt,
|
||||
},
|
||||
},
|
||||
payload: {
|
||||
emailUnsubscribeUrl: unsubscribeUrl,
|
||||
},
|
||||
workflowId: "user-signup",
|
||||
});
|
||||
log.info({ workflowId: "user-signup", userId: user.id }, "Novu workflow triggered");
|
||||
await createSubscriber({
|
||||
publicId: user.id,
|
||||
email: user.email,
|
||||
externalId: user.id,
|
||||
firstName,
|
||||
lastName,
|
||||
name: user.name,
|
||||
attributes: {
|
||||
avatarUrl,
|
||||
emailVerified: user.emailVerified,
|
||||
stripeCustomerId: user.stripeCustomerId,
|
||||
createdAt: user.createdAt,
|
||||
updatedAt: user.updatedAt,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
log.error({ err: error }, "Error creating subscriber");
|
||||
}
|
||||
|
||||
await notificationClient.subscribers.credentials.update(
|
||||
{
|
||||
providerId: ChatOrPushProviderEnum.Discord,
|
||||
credentials: {
|
||||
webhookUrl: env("DISCORD_WEBHOOK_URL"),
|
||||
},
|
||||
integrationIdentifier: "discord",
|
||||
},
|
||||
user.id,
|
||||
);
|
||||
} catch (error) {
|
||||
log.error({ err: error }, "Error adding user to notification client");
|
||||
}
|
||||
try {
|
||||
log.info(
|
||||
{ workflowId: "user-signup", userId: user.id, email: user.email },
|
||||
"Triggering user-signup workflow",
|
||||
);
|
||||
await triggerSubscriberWorkflow("user-signup", {
|
||||
publicId: user.id,
|
||||
});
|
||||
log.info(
|
||||
{ workflowId: "user-signup", userId: user.id },
|
||||
"user-signup workflow triggered",
|
||||
);
|
||||
} catch (error) {
|
||||
log.error({ err: error }, "Error triggering user-signup workflow");
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -3,9 +3,8 @@ import type Stripe from "stripe";
|
||||
|
||||
import type { dbClient } from "@kan/db/client";
|
||||
import * as userRepo from "@kan/db/repository/user.repo";
|
||||
import { notificationClient } from "@kan/email";
|
||||
import { triggerSubscriberWorkflow } from "@kan/email";
|
||||
import { createLogger } from "@kan/logger";
|
||||
import { createEmailUnsubscribeLink } from "@kan/shared";
|
||||
|
||||
const log = createLogger("auth");
|
||||
|
||||
@@ -24,30 +23,22 @@ export async function triggerWorkflow(
|
||||
cancellationDetails?: Stripe.Subscription.CancellationDetails | null,
|
||||
) {
|
||||
try {
|
||||
if (!subscription.stripeCustomerId || !notificationClient) return;
|
||||
if (!subscription.stripeCustomerId) return;
|
||||
|
||||
const user = await userRepo.getByStripeCustomerId(
|
||||
db,
|
||||
subscription.stripeCustomerId,
|
||||
);
|
||||
|
||||
if (!user || !notificationClient) return;
|
||||
if (!user) return;
|
||||
|
||||
const unsubscribeUrl = await createEmailUnsubscribeLink(user.id);
|
||||
|
||||
log.info({ workflowId, userId: user.id }, "Triggering Novu workflow");
|
||||
await notificationClient.trigger({
|
||||
to: {
|
||||
subscriberId: user.id,
|
||||
},
|
||||
payload: {
|
||||
...subscription,
|
||||
cancellationDetails,
|
||||
emailUnsubscribeUrl: unsubscribeUrl,
|
||||
},
|
||||
log.info({ workflowId, userId: user.id }, "Triggering workflow");
|
||||
await triggerSubscriberWorkflow(
|
||||
workflowId,
|
||||
});
|
||||
log.info({ workflowId, userId: user.id }, "Novu workflow triggered");
|
||||
{ publicId: user.id },
|
||||
{ ...subscription, cancellationDetails },
|
||||
);
|
||||
log.info({ workflowId, userId: user.id }, "Workflow triggered");
|
||||
} catch (error) {
|
||||
log.error({ err: error, workflowId }, "Error triggering workflow");
|
||||
}
|
||||
|
||||
@@ -724,6 +724,30 @@ export const getWorkspaceAndBoardIdByBoardPublicId = async (
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetches the board fields needed by the move mutation:
|
||||
* identity, naming, type guards, and workspace ownership.
|
||||
* Soft-deleted boards are excluded — moving a tombstoned board has
|
||||
* no defensible semantics.
|
||||
*/
|
||||
export const getBoardForMove = async (
|
||||
db: dbClient,
|
||||
boardPublicId: string,
|
||||
) => {
|
||||
return db.query.boards.findFirst({
|
||||
columns: {
|
||||
id: true,
|
||||
name: true,
|
||||
slug: true,
|
||||
type: true,
|
||||
isArchived: true,
|
||||
workspaceId: true,
|
||||
createdBy: true,
|
||||
},
|
||||
where: and(eq(boards.publicId, boardPublicId), isNull(boards.deletedAt)),
|
||||
});
|
||||
};
|
||||
|
||||
export const isBoardSlugAvailable = async (
|
||||
db: dbClient,
|
||||
boardSlug: string,
|
||||
@@ -969,6 +993,61 @@ export const createFromSnapshot = async (
|
||||
});
|
||||
};
|
||||
|
||||
export const moveToWorkspace = async (
|
||||
db: dbClient,
|
||||
boardId: number,
|
||||
targetWorkspaceId: number,
|
||||
newSlug?: string,
|
||||
) => {
|
||||
return db.transaction(async (tx) => {
|
||||
// Update the board's workspace (and slug if provided)
|
||||
const [updatedBoard] = await tx
|
||||
.update(boards)
|
||||
.set({
|
||||
workspaceId: targetWorkspaceId,
|
||||
...(newSlug && { slug: newSlug }),
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(eq(boards.id, boardId))
|
||||
.returning({
|
||||
publicId: boards.publicId,
|
||||
name: boards.name,
|
||||
});
|
||||
|
||||
if (!updatedBoard) throw new Error("Failed to move board");
|
||||
|
||||
// Get every card ID ever belonging to this board, including
|
||||
// soft-deleted cards under soft-deleted lists. Member assignments
|
||||
// point at workspace-scoped members that no longer exist after
|
||||
// the move; if we leave assignments on soft-deleted cards, a later
|
||||
// restore would resurrect rogue references to the old workspace.
|
||||
const boardLists = await tx
|
||||
.select({ id: lists.id })
|
||||
.from(lists)
|
||||
.where(eq(lists.boardId, boardId));
|
||||
|
||||
if (boardLists.length > 0) {
|
||||
const listIds = boardLists.map((l) => l.id);
|
||||
|
||||
const boardCards = await tx
|
||||
.select({ id: cards.id })
|
||||
.from(cards)
|
||||
.where(inArray(cards.listId, listIds));
|
||||
|
||||
if (boardCards.length > 0) {
|
||||
const cardIds = boardCards.map((c) => c.id);
|
||||
|
||||
// Clear all card member assignments (they reference workspace-scoped members)
|
||||
await tx
|
||||
.delete(cardToWorkspaceMembers)
|
||||
.where(inArray(cardToWorkspaceMembers.cardId, cardIds));
|
||||
}
|
||||
}
|
||||
|
||||
return updatedBoard;
|
||||
});
|
||||
};
|
||||
|
||||
export const addUserFavorite = async (
|
||||
db: dbClient,
|
||||
userId: string,
|
||||
|
||||
@@ -176,6 +176,7 @@ export const getByPublicId = (db: dbClient, workspacePublicId: string) => {
|
||||
name: true,
|
||||
plan: true,
|
||||
slug: true,
|
||||
deletedAt: true,
|
||||
createdBy: true,
|
||||
},
|
||||
where: eq(workspaces.publicId, workspacePublicId),
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@kan/logger": "workspace:^",
|
||||
"@novu/api": "^3.11.0",
|
||||
"@react-email/components": "^1.0.1",
|
||||
"nodemailer": "^7.0.3",
|
||||
"react-email": "^5.0.6"
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
export const name = "email";
|
||||
|
||||
export { sendEmail } from "./sendEmail";
|
||||
export { notificationClient } from "./notificationClient";
|
||||
export {
|
||||
createSubscriber,
|
||||
updateSubscriberPreferences,
|
||||
triggerSubscriberWorkflow,
|
||||
} from "./subscriberClient";
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
import { Novu } from "@novu/api";
|
||||
|
||||
export const notificationClient =
|
||||
process.env.NEXT_PUBLIC_KAN_ENV === "cloud" && process.env.NOVU_API_KEY
|
||||
? new Novu({ secretKey: process.env.NOVU_API_KEY })
|
||||
: null;
|
||||
115
packages/email/src/subscriberClient.ts
Normal file
115
packages/email/src/subscriberClient.ts
Normal file
@@ -0,0 +1,115 @@
|
||||
import { createLogger } from "@kan/logger";
|
||||
|
||||
const log = createLogger("subscriberClient");
|
||||
|
||||
export const subscriberClient =
|
||||
process.env.NEXT_PUBLIC_KAN_ENV === "cloud" &&
|
||||
process.env.SUBSCRIBER_API_URL &&
|
||||
process.env.SUBSCRIBER_API_KEY &&
|
||||
process.env.SUBSCRIBER_ENVIRONMENT_ID
|
||||
? {
|
||||
apiUrl: process.env.SUBSCRIBER_API_URL,
|
||||
apiKey: process.env.SUBSCRIBER_API_KEY,
|
||||
environmentId: process.env.SUBSCRIBER_ENVIRONMENT_ID,
|
||||
}
|
||||
: null;
|
||||
|
||||
async function subscriberRequest(
|
||||
method: string,
|
||||
path: string,
|
||||
body: unknown,
|
||||
errorMessage: string,
|
||||
) {
|
||||
if (!subscriberClient) return;
|
||||
|
||||
const url = `${subscriberClient.apiUrl}${path}`;
|
||||
|
||||
log.debug({ method, url, body }, "subscriber.dev request");
|
||||
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
method,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-API-Key": subscriberClient.apiKey,
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
|
||||
const responseBody = await response.text().catch(() => undefined);
|
||||
|
||||
log.debug(
|
||||
{ method, url, status: response.status, body: responseBody },
|
||||
"subscriber.dev response",
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
log.error(
|
||||
{ status: response.status, body: responseBody },
|
||||
errorMessage,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
log.error({ err: error }, errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
interface CreateSubscriberInput {
|
||||
publicId: string;
|
||||
email: string;
|
||||
externalId: string;
|
||||
firstName?: string;
|
||||
lastName?: string;
|
||||
name?: string;
|
||||
attributes?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export async function createSubscriber(input: CreateSubscriberInput) {
|
||||
if (!subscriberClient) return;
|
||||
|
||||
await subscriberRequest(
|
||||
"POST",
|
||||
`/environments/${subscriberClient.environmentId}/subscribers`,
|
||||
input,
|
||||
"Failed to create subscriber.dev subscriber",
|
||||
);
|
||||
}
|
||||
|
||||
interface UpdateSubscriberPreferencesInput {
|
||||
email: boolean;
|
||||
}
|
||||
|
||||
export async function updateSubscriberPreferences(
|
||||
subscriberId: string,
|
||||
input: UpdateSubscriberPreferencesInput,
|
||||
) {
|
||||
if (!subscriberClient) return;
|
||||
|
||||
await subscriberRequest(
|
||||
"PATCH",
|
||||
`/environments/${subscriberClient.environmentId}/subscribers/${subscriberId}/preferences`,
|
||||
input,
|
||||
"Failed to update subscriber preferences",
|
||||
);
|
||||
}
|
||||
|
||||
interface TriggerWorkflowSubscriberInput {
|
||||
publicId?: string;
|
||||
externalId?: string;
|
||||
email?: string;
|
||||
}
|
||||
|
||||
export async function triggerSubscriberWorkflow(
|
||||
key: string,
|
||||
subscriber: TriggerWorkflowSubscriberInput,
|
||||
payload?: Record<string, unknown>,
|
||||
) {
|
||||
if (!subscriberClient) return;
|
||||
|
||||
await subscriberRequest(
|
||||
"POST",
|
||||
`/environments/${subscriberClient.environmentId}/workflows/trigger`,
|
||||
{ key, subscriber, payload },
|
||||
"Failed to trigger subscriber.dev workflow",
|
||||
);
|
||||
}
|
||||
@@ -119,7 +119,7 @@ export function registerCardTools(server: McpServer): void {
|
||||
content: z.string().describe("Comment text"),
|
||||
},
|
||||
async ({ cardPublicId, content }) => {
|
||||
const data = await kanRequest("POST", `/cards/${cardPublicId}/comments`, { content });
|
||||
const data = await kanRequest("POST", `/cards/${cardPublicId}/comments`, { comment: content });
|
||||
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
||||
},
|
||||
);
|
||||
@@ -136,7 +136,7 @@ export function registerCardTools(server: McpServer): void {
|
||||
const data = await kanRequest(
|
||||
"PUT",
|
||||
`/cards/${cardPublicId}/comments/${commentPublicId}`,
|
||||
{ content },
|
||||
{ comment: content },
|
||||
);
|
||||
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
||||
},
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
import { SignJWT } from "jose";
|
||||
import { env } from "next-runtime-env";
|
||||
|
||||
const encoder = new TextEncoder();
|
||||
|
||||
/**
|
||||
* Creates a long‑lived unsubscribe link for a given user/subscriber.
|
||||
*
|
||||
* `${NEXT_PUBLIC_BASE_URL}/unsubscribe?token=<jwt>`
|
||||
*
|
||||
* The JWT payload only contains the subscriberId. There is no expiry
|
||||
* on purpose – unsubscribe links should remain valid indefinitely.
|
||||
*
|
||||
*/
|
||||
export async function createEmailUnsubscribeLink(
|
||||
userId: string,
|
||||
): Promise<string | null> {
|
||||
const baseUrl = env("NEXT_PUBLIC_BASE_URL");
|
||||
const secret = process.env.EMAIL_UNSUBSCRIBE_SECRET;
|
||||
|
||||
if (!baseUrl || !secret) {
|
||||
// Environment not configured for unsubscribe links.
|
||||
return null;
|
||||
}
|
||||
|
||||
const token = await new SignJWT({ subscriberId: userId })
|
||||
.setProtectedHeader({ alg: "HS256" })
|
||||
// No expiration on purpose; unsubscribe links are long‑lived.
|
||||
.sign(encoder.encode(secret));
|
||||
|
||||
return `${baseUrl}/unsubscribe?token=${encodeURIComponent(token)}`;
|
||||
}
|
||||
@@ -2,7 +2,6 @@ export * from "./generateUID";
|
||||
export * from "./generateSlug";
|
||||
export * from "./generateWorkspacePrefix";
|
||||
export * from "./subscriptions";
|
||||
export * from "./email";
|
||||
export * from "./dueDateFilters";
|
||||
export * from "./s3";
|
||||
export * from "./mentions";
|
||||
|
||||
43
pnpm-lock.yaml
generated
43
pnpm-lock.yaml
generated
@@ -103,6 +103,9 @@ importers:
|
||||
'@kan/db':
|
||||
specifier: workspace:^
|
||||
version: link:../../packages/db
|
||||
'@kan/email':
|
||||
specifier: workspace:^
|
||||
version: link:../../packages/email
|
||||
'@kan/logger':
|
||||
specifier: workspace:^
|
||||
version: link:../../packages/logger
|
||||
@@ -121,9 +124,6 @@ importers:
|
||||
'@lingui/react':
|
||||
specifier: ^5.3.2
|
||||
version: 5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2))(react@18.3.1)
|
||||
'@novu/api':
|
||||
specifier: ^3.11.0
|
||||
version: 3.11.0
|
||||
'@t3-oss/env-nextjs':
|
||||
specifier: ^0.11.1
|
||||
version: 0.11.1(typescript@5.9.2)(zod@3.25.76)
|
||||
@@ -467,9 +467,6 @@ importers:
|
||||
'@kan/logger':
|
||||
specifier: workspace:^
|
||||
version: link:../logger
|
||||
'@novu/api':
|
||||
specifier: ^3.11.0
|
||||
version: 3.11.0
|
||||
'@react-email/components':
|
||||
specifier: ^1.0.1
|
||||
version: 1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
@@ -1541,11 +1538,11 @@ packages:
|
||||
|
||||
'@esbuild-kit/core-utils@3.3.2':
|
||||
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
|
||||
deprecated: 'Merged into tsx: https://tsx.is'
|
||||
deprecated: 'Merged into tsx: https://tsx.hirok.io'
|
||||
|
||||
'@esbuild-kit/esm-loader@2.6.5':
|
||||
resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
|
||||
deprecated: 'Merged into tsx: https://tsx.is'
|
||||
deprecated: 'Merged into tsx: https://tsx.hirok.io'
|
||||
|
||||
'@esbuild/aix-ppc64@0.19.12':
|
||||
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
|
||||
@@ -2998,9 +2995,6 @@ packages:
|
||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
'@novu/api@3.11.0':
|
||||
resolution: {integrity: sha512-8u0mB5VThL7MhdxoN0UoA4CS9eu2k3Xa6iulauMhCHENuJNxUNuirJWq5t8jDoH4bFTQTfMN0VRkC0qodKR2qA==}
|
||||
|
||||
'@octokit/auth-token@3.0.4':
|
||||
resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==}
|
||||
engines: {node: '>= 14'}
|
||||
@@ -3097,95 +3091,111 @@ packages:
|
||||
|
||||
'@react-email/body@0.2.0':
|
||||
resolution: {integrity: sha512-9GCWmVmKUAoRfloboCd+RKm6X17xn7eGL7HnpAZUnjBXBilWCxsKnLMTC/ixSHDKS/A/057M1Tx6ZUXd89sVBw==}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/button@0.2.0':
|
||||
resolution: {integrity: sha512-8i+v6cMxr2emz4ihCrRiYJPp2/sdYsNNsBzXStlcA+/B9Umpm5Jj3WJKYpgTPM+aeyiqlG/MMI1AucnBm4f1oQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/code-block@0.2.0':
|
||||
resolution: {integrity: sha512-eIrPW9PIFgDopQU0e/OPpwCW2QWQDtNZDSsiN4sJO8KdMnWWnXJicnRfzrit5rHwFo+Y98i+w/Y5ScnBAFr1dQ==}
|
||||
engines: {node: '>=22.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/code-inline@0.0.5':
|
||||
resolution: {integrity: sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/column@0.0.13':
|
||||
resolution: {integrity: sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/components@1.0.1':
|
||||
resolution: {integrity: sha512-HnL0Y/up61sOBQT2cQg9N/kCoW0bP727gDs2MkFWQYELg6+iIHidMDvENXFC0f1ZE6hTB+4t7sszptvTcJWsDA==}
|
||||
engines: {node: '>=22.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/container@0.0.15':
|
||||
resolution: {integrity: sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/font@0.0.9':
|
||||
resolution: {integrity: sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/head@0.0.12':
|
||||
resolution: {integrity: sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/heading@0.0.15':
|
||||
resolution: {integrity: sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/hr@0.0.11':
|
||||
resolution: {integrity: sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/html@0.0.11':
|
||||
resolution: {integrity: sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/img@0.0.11':
|
||||
resolution: {integrity: sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/link@0.0.12':
|
||||
resolution: {integrity: sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/markdown@0.0.17':
|
||||
resolution: {integrity: sha512-6op3AfsBC9BJKkhG+eoMFRFWlr0/f3FYbtQrK+VhGzJocEAY0WINIFN+W8xzXr//3IL0K/aKtnH3FtpIuescQQ==}
|
||||
engines: {node: '>=22.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/preview@0.0.13':
|
||||
resolution: {integrity: sha512-F7j9FJ0JN/A4d7yr+aw28p4uX7VLWs7hTHtLo7WRyw4G+Lit6Zucq4UWKRxJC8lpsUdzVmG7aBJnKOT+urqs/w==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
@@ -3199,18 +3209,21 @@ packages:
|
||||
'@react-email/row@0.0.12':
|
||||
resolution: {integrity: sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/section@0.0.16':
|
||||
resolution: {integrity: sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
'@react-email/tailwind@2.0.1':
|
||||
resolution: {integrity: sha512-/xq0IDYVY7863xPY7cdI45Xoz7M6CnIQBJcQvbqN7MNVpopfH9f+mhjayV1JGfKaxlGWuxfLKhgi9T2shsnEFg==}
|
||||
engines: {node: '>=22.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
'@react-email/body': 0.2.0
|
||||
'@react-email/button': 0.2.0
|
||||
@@ -3249,6 +3262,7 @@ packages:
|
||||
'@react-email/text@0.1.5':
|
||||
resolution: {integrity: sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
react: ^18.0 || ^19.0 || ^19.0.0-rc
|
||||
|
||||
@@ -4296,6 +4310,7 @@ packages:
|
||||
|
||||
'@ungap/structured-clone@1.3.0':
|
||||
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
||||
deprecated: Potential CWE-502 - Update to 1.3.1 or higher
|
||||
|
||||
'@vitest/expect@3.2.4':
|
||||
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
|
||||
@@ -4618,6 +4633,7 @@ packages:
|
||||
basic-ftp@5.0.5:
|
||||
resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
deprecated: Security vulnerability fixed in 5.2.1, please upgrade
|
||||
|
||||
before-after-hook@2.2.3:
|
||||
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
|
||||
@@ -8734,6 +8750,7 @@ packages:
|
||||
|
||||
uuid@9.0.1:
|
||||
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
|
||||
deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
|
||||
hasBin: true
|
||||
|
||||
uvu@0.5.6:
|
||||
@@ -11479,10 +11496,6 @@ snapshots:
|
||||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.19.1
|
||||
|
||||
'@novu/api@3.11.0':
|
||||
dependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
'@octokit/auth-token@3.0.4': {}
|
||||
|
||||
'@octokit/core@4.2.4':
|
||||
|
||||
@@ -123,7 +123,6 @@
|
||||
"NEXT_PUBLIC_KAN_ENV",
|
||||
"NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BY",
|
||||
"STRIPE_SECRET_KEY",
|
||||
"DISCORD_WEBHOOK_URL",
|
||||
"STRIPE_WEBHOOK_SECRET",
|
||||
"STRIPE_WEBHOOK_SECRET_LEGACY",
|
||||
"STRIPE_PRO_PLAN_MONTHLY_PRICE_ID",
|
||||
@@ -148,8 +147,6 @@
|
||||
"PORT",
|
||||
"BETTER_AUTH_SECRET",
|
||||
"BETTER_AUTH_TRUSTED_ORIGINS",
|
||||
"NOVU_API_KEY",
|
||||
"EMAIL_UNSUBSCRIBE_SECRET",
|
||||
"REDIS_URL",
|
||||
"LOG_LEVEL",
|
||||
"AXIOM_TOKEN",
|
||||
|
||||
Reference in New Issue
Block a user