Compare commits

..

7 Commits

Author SHA1 Message Date
Henry
4ac89ba8c0 Fix build and add dyanmic imports 2025-06-25 17:45:38 +01:00
Henry
a2f7582999 Extend lang support 2025-06-25 13:20:07 +01:00
Henry
8a93951464 Update lang support 2025-06-25 12:12:47 +01:00
Henry
bf2db74528 Extend language support 2025-06-24 22:41:06 +01:00
Henry
f564b52159 Add missing translations and tweak selector styling 2025-06-24 22:15:32 +01:00
Henry
2ef2493bb5 Fix hydration and locale issues 2025-06-24 21:37:03 +01:00
Henry
f105e951e6 feat: setup localisation with lingui 2025-06-23 23:43:16 +01:00
63 changed files with 776 additions and 3344 deletions

View File

@@ -21,7 +21,6 @@ S3_REGION=
S3_ENDPOINT=
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
S3_FORCE_PATH_STYLE=
NEXT_PUBLIC_STORAGE_URL=
NEXT_PUBLIC_AVATAR_BUCKET_NAME=
NEXT_PUBLIC_STORAGE_DOMAIN=

4
.vscode/launch.json vendored
View File

@@ -6,7 +6,7 @@
"type": "node-terminal",
"request": "launch",
"command": "pnpm dev",
"cwd": "${workspaceFolder}/apps/web",
"cwd": "${workspaceFolder}/apps/nextjs",
"skipFiles": ["<node_internals>/**"],
"sourceMaps": true,
"sourceMapPathOverrides": {
@@ -14,4 +14,4 @@
}
}
]
}
}

View File

@@ -1,121 +0,0 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/kanbn/kan/compare/v0.2.4...HEAD)
## [0.2.4](https://github.com/kanbn/kan/compare/v0.2.3...v0.2.4) - 2025-01-14
### Added
- Button to view and update board public URL directly from board page
- Redirect from root to login page for self-hosted instances
### Changed
- Updated all label router endpoints to return consistent structure
- Added verbose error logging to magic link invitation process
### Fixed
- Updated tRPC dependencies and added OpenAPI meta to providers endpoint
## [0.2.3](https://github.com/kanbn/kan/compare/v0.2.2...v0.2.3) - 2025-07-07
### Added
- Mobile support with responsive navigation and layout
- Template selection when creating new boards with predefined lists and labels
- S3_FORCE_PATH_STYLE configuration for MinIO compatibility
### Changed
- Improved mobile UI styling and layout containers
- Enhanced iOS mobile support with viewport fixes and zoom prevention
- Improved card view layout for mobile devices
### Fixed
- Mobile dashboard min-width issues
- Dynamic viewport height on mobile devices
- Scroll functionality on card pages
## [0.2.2](https://github.com/kanbn/kan/compare/v0.2.1...v0.2.2) - 2025-06-28
### Added
- Localization and multi-language support
- URLs are now rendered as clickable links in card descriptions
### Changed
- Improved email configuration with optional SMTP authentication
## [0.2.1](https://github.com/kanbn/kan/compare/v0.2.0...v0.2.1) - 2025-06-19
### Added
- PostHog analytics integration
- Debug logging for email functionality
- Standalone mode support for Next.js
- Environment variable for configuring web port
- Docker Compose setup with PostgreSQL
### Changed
- SMTP authentication is now optional
- Added `SMTP_SECURE` configuration option
- Improved Docker build process with better context handling
### Fixed
- Default output mode for Next.js builds
- Container environment variable configuration
- Docker Compose volume naming
- Build context and static file copying in Docker
- Comment rendering inside contenteditable elements
## [0.2.0](https://github.com/kanbn/kan/compare/v0.1.0...v0.2.0) - 2025-06-10
### Added
- Trello integration with OAuth authentication and user field mapping
- Board visibility controls with dropdown menu and success notifications
- Markdown editor for card descriptions
- Email/password authentication for self-hosters
- Account deletion functionality with cascade delete for workspaces
- Enhanced scrollbar styles for dark mode
### Changed
- Simplified auth configuration to use `NEXT_PUBLIC_BASE_URL` instead of `BETTER_AUTH_URL`
- Updated self-hosting documentation
- Improved database schema with relation names
### Fixed
- List buttons stacking issue
- Editor onChange prop is now optional
- Renamed markdown prop to content in Editor component
- Router navigation for disabled signup redirects
## [0.1.0](https://github.com/kanbn/kan/releases/tag/v0.1.0) - 2025-06-02
### Added
- Initial release of Kan
- Core project management features
- Board, list, and card management
- User authentication system
- Workspace collaboration
- Comment system
- Activity logging
- Docker deployment support
- Self-hosting capabilities
### Changed
- Updated license link in footer

View File

@@ -162,7 +162,6 @@ pnpm dev
| `S3_ENDPOINT` | S3 endpoint URL | For file uploads | `https://xxx.r2.cloudflarestorage.com` |
| `S3_ACCESS_KEY_ID` | S3 access key | For file uploads | `xxx` |
| `S3_SECRET_ACCESS_KEY` | S3 secret key | For file uploads | `xxx` |
| `S3_FORCE_PATH_STYLE` | Use path-style URLs for S3 | For file uploads | `true` |
| `NEXT_PUBLIC_STORAGE_URL` | Storage service URL | For file uploads | `https://storage.kanbn.com` |
| `NEXT_PUBLIC_STORAGE_DOMAIN` | Storage domain name | For file uploads | `kanbn.com` |
| `NEXT_PUBLIC_AVATAR_BUCKET_NAME` | S3 bucket name for avatars | For file uploads | `avatars` |

View File

@@ -6,6 +6,7 @@ checksums:
"%7B0%7D%20%7C%20%7B1%7D/singular": 4628f9c6ec13c2dc2984a6ab80e19f8b
"%7B0%7D%20labels/singular": 785f92bedf786ff3e285adfc07c69d18
"%7BboardCount%2C%20plural%2C%20one%20%7BImport%20board%20(1)%7D%20other%20%7BImport%20boards%20(%7BboardCount%7D)%7D%7D/singular": 72358c550bd1a99fcb6e8952f0f947ef
"%231%20Hacker%20News/singular": de271b412c6c022d5c427d29fc70e0ba
1%20user/singular: 3b547431ab12f0fba84307e6a81109d8
A%20powerful%2C%20flexible%20kanban%20app%20that%20helps%20you%20organise%20work%2C%20track%20progress%2C%20and%20deliver%20results%E2%80%94all%20in%20one%20place./singular: d405b83b0d631cb72f4347c10bcbb643
Account%20deleted/singular: a25da96a1579c4491be0a95669ef18a4
@@ -26,23 +27,15 @@ checksums:
An%20error%20occurred%20while%20disconnecting%20your%20Trello%20account./singular: 0aa3973b860c1faf8d9123aebf567e40
API%20keys/singular: 07f3620a30e08136f0b072c9af8d1eef
API%20Reference/singular: 7dcc877064bfdf889ec55dbc9e06a242
Applicants/singular: 4babd8331a1441e91087f855f43e57f8
Approval/singular: 2f5426445800ecd5a3102aac940d459c
Are%20you%20sure%20want%20to%20remove%20%7BentityLabel%7D%3F/singular: f9b67026c5ef86ac4d5944380d571961
Are%20you%20sure%20you%20want%20to%20delete%20the%20workspace%20%7B0%7D%3F/singular: 27ba2854202dd77c51e78c64e5c93946
Are%20you%20sure%20you%20want%20to%20delete%20this%20card%3F/singular: 131a5a7cccca7be8b32c987d9fa0b0c0
Are%20you%20sure%20you%20want%20to%20delete%20this%20comment%3F/singular: 55fe6f1b52b71b91b2a079cfda3cc7fe
Are%20you%20sure%20you%20want%20to%20delete%20your%20account%3F/singular: 428b74d781063224c3e63980e1094ec3
assigned%20%3C0%3E%7BmemberName%7D%3C%2F0%3E%20to%20the%20card/singular: 4fb1c419a78a0f010a3e5790801551fc
Awaiting%20Customer/singular: 122c108794f321c10e05a08f09b11457
Backlog/singular: 35919fd5b10ad212839a75e72829fe4e
Basic%20Kanban/singular: e46ebc406749486f3907436970d4d6c7
Billing/singular: b01dbdd049ebbd4a349fa64d6ce65a3b
Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525
Blog%20Post/singular: 38e027f212be445dc530e427fc642a20
Board/singular: 101ff39aab674c033c15ab978d0d8bac
Board%20name%20cannot%20exceed%20100%20characters/singular: 985c0177744ec56d8dac84f66ec284ca
Board%20name%20is%20required/singular: dbd0c6cc945ab19e702fc27f970a023b
Board%20not%20found/singular: 5af9844595fa8aed5985066620435515
Board%20URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: ba018946ffdf85e55d701a9c27595b4d
Board%20URL%20cannot%20exceed%2060%20characters/singular: 8fd3417559a56aa42d297b14d480c382
@@ -52,9 +45,6 @@ checksums:
Board%20visibility%20updated/singular: 8e2f5d622fa9c94481e7c1629a154ecf
Boards/singular: 8fff51c5872e051beb9b718336665e80
Boards%20%7C%20%7B0%7D/singular: 70c349df806f4b2d8bd28136a45496f0
Brainstorming/singular: 736332f2e4488609e42d2be8547d296e
Bug/singular: 4509fffdb5931f8905063c80cf802d71
Bug%20Report/singular: e558d1f100e21230c2f495a8913ac5ec
Cancel/singular: 2e2a849c2223911717de8caa2c71bade
Card%20not%20found/singular: 91509e2f92b0b3b11330b6983139fdbf
Card%20title/singular: 7c34f59f4005e6cb3a6ff546ea0b96e3
@@ -62,12 +52,10 @@ checksums:
Check%20your%20inbox/singular: e9a430fcd298def74212238df0f680d6
Clear%20filters/singular: 8f40ab5af527e4b190da94e7b6221379
Click%20on%20the%20link%20we've%20sent%20to%20%7BmagicLinkRecipient%7D%20to%20sign%20in./singular: 210b6ff8727f976182ec3f29ea3c7667
Code%20Review/singular: a2da6c2339301e7c3ddf068c4ff9f7e8
Collaborate%20seamlessly%20with%20your%20team./singular: c5f10e431aaf8b51519bc009a4a4080c
Coming%20soon/singular: ee2b0671e00972773210c5be5a9ccb89
Comments/singular: 502237cd1044491c48494aa60967a985
Company/singular: 9e36d11fa82d1bd4563eef2abc4fcfba
Complete/singular: d3e36d723de0cfdea51c5b4171d30b4d
Complete%20control%20and%20ownership%3A/singular: 0d8b682ba873272217425ccfc96aa9cd
Confirm%20URL%20change/singular: e14b4ce081d1ef6194b37e1814e97b39
Connect%20Trello/singular: 4440a0b9e387ef7136e3958e7a089213
@@ -75,7 +63,6 @@ checksums:
Connect%20your%20Trello%20account%20to%20import%20boards./singular: 84a510a7485f43e43f2191bd161171d7
Contact/singular: 9afa39bc47019ee6dec6c74b6273967c
Contact%20us/singular: 694a45bc5c96f6f3a27873c1cf5a7707
Content%20Creation/singular: 4e6be22ade0188f408471325fe363575
Continue%20with%20/singular: 8ed03cf7c5e60a6edf3470a4558ff058
Continue%20with%20%7B0%7D/singular: 2eaf6e1da91e208f7c5fb6bf862fe8a6
Control%20who%20can%20view%20and%20edit%20your%20boards./singular: 2a7e0bec29bac26280de707e2fe8bce5
@@ -90,10 +77,8 @@ checksums:
Create%20new%20list/singular: ce61ca8be7b3f6c26c32b684a42a2c26
Create%20workspace/singular: 2e6718e79964ea5ce22d76c2189c77ca
created%20the%20card/singular: 605475f5aaeb4dbccbf7c4eb9107b43d
Critical/singular: eb327cd411b50aee954f8d1d215d003a
Custom%20domain/singular: b09e7a9c187b7163b4a6cfc78042fe42
Custom%20URLs%20are%20a%20premium%20feature.%20You'll%20be%20directed%20to%20upgrade%20your%20account./singular: b52e4f6122cf739c9551d29beb89b25e
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
@@ -102,7 +87,6 @@ checksums:
Delete%20comment/singular: a3dae0c9ddbc73677aad9812e3dffd69
Delete%20list/singular: b694f58e4c973d8797a78e746b550b1f
Delete%20workspace/singular: 9017c821209528d9b20d40a488854cdf
Design/singular: 991b75727b6784c1a063a7462b76186d
Disconnect%20Trello/singular: a2dd737d133887d34504728c7e7f05e3
Discuss%20and%20collaborate%20on%20cards./singular: f2e87816709f602130831ead50bba457
Display%20name/singular: 725f331065e9d594d720d07b1ae51a90
@@ -114,15 +98,11 @@ checksums:
Docs/singular: 55fea190a0c0fb32acd3dc986cd3cc91
Documentation/singular: 1563fcb5ddb5037b0709ccd3dd384a92
Don't%20have%20an%20account%3F%20%3C0%3E%3C1%3ESign%20up%3C%2F1%3E%3C%2F0%3E/singular: 6ae8282ab8b4a01b4ce87b119e13714b
Done/singular: ffd408fa29d5bc9039ef8ea1b9b699bb
Edit%20board%20URL/singular: d8276dfc0189f371ec7d80a2047c07aa
Edit%20comment/singular: 7e4b46525fcb6b47b71798e31c46e374
Edit%20label/singular: 0309e0be1512b1e0b0ceb87c69a53d03
Edit%20workspace%20URL/singular: bbae5f2f8a442947d33099979bbbe899
Editing/singular: 3449a7988cd69207b7c6929af1f4abf1
email/singular: f31eb214738e037d58e26149797739df
Email/singular: e7f34943a0c2fb849db1839ff6ef5cb5
Enhancement/singular: 785fe23c0eef0a5b60b5b2a88151de31
Enter%20your%20email%20address/singular: 9bc008365ebe3e404e241c8ca876f56e
Enter%20your%20name/singular: cd95fbdd0533f2c2e8edf9d9bd9aa8df
Enter%20your%20password/singular: ea4fdd034522dead21bae0c0abb52eae
@@ -137,11 +117,8 @@ checksums:
Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71
Everything%20in%20the%20free%20plan%2C%20plus%3A/singular: 62b44c4973b92b806c69a4b15e0256dc
Everything%20you%20need%2C%20free%20forever.%20Unlimited%20boards%2C%20unlimited%20lists%2C%20unlimited%20cards.%20Upgrade%20any%20time./singular: fa21632ab1468edf10acda2fe7b71323
Execution/singular: cbac4a3c721123cbc6a883560bf29800
Failed%20to%20login%20with%20%7B0%7D.%20Please%20try%20again./singular: 669a4b4247a73f53fb9b8b16e42d166f
FAQs/singular: dc36d7992372ccd419b39ef51cf5b16c
Feature/singular: 58f5f3f37862b6312a2f20ec1a1fd0e8
Feature%20Request/singular: c9de91b9a7020213381977f7d147064f
Features/singular: 341ff316a339b106a178f0b8d362951b
Feedback/singular: 6fac88806e0c269a30777b283988c61c
Feedback%20sent/singular: 38a490c7ad5f1aa6013dfa879d2c7818
@@ -150,8 +127,6 @@ checksums:
For%20long-term%20sustainability%2C%20we%20recognise%20all%20good%20open%20source%20projects%20need%20a%20source%20of%20revenue.%20Ours%20comes%20from%20the%20paid%20cloud%20offering%20for%20workspaces%20with%20multiple%20users%20(free%20during%20the%20beta)%20and%20for%20custom%20workspace%20slugs.%20There's%20no%20obligation%20to%20use%20it%2C%20and%20you%20can%20self-host%20the%20software%20on%20your%20own%20infrastructure%20free%20of%20charge./singular: 4eedacd4311ff69bf0fd87083c90a268
Free/singular: 0326365539c004f6088656f692602078
Free%2C%20forever/singular: ae4f2f81e88a50b5f250ef8e8e77e74b
Full-time/singular: fe6e201f6676ae354111435cf6c76910
Fun/singular: 395bdc48e943762b6cde649f4a96771d
Get%20started/singular: 5c783951b0100a168bdd2161ff294833
Get%20Started/singular: 1d5f030c4ec9c869e647ae060518b948
Get%20started%20by%20creating%20a%20new%20board/singular: 8fe63ba47e12bbf950f3eb33d1008993
@@ -162,8 +137,6 @@ checksums:
Getting%20started/singular: 8e5e7bd026b5bec46bbfdce02ab9e0b8
GitHub/singular: 6e1cf3c00fa6fbe24afcc78ea3b5f3e4
Go%20to%20app/singular: 896d0441384dcd2bfb3b23d61ff1944d
High%20Priority/singular: 5d231ff8254aabc875f194c4b4f49c97
Hired/singular: e5a9b1bd409b007141fe3d7890022f9a
Host%20Kan%20on%20your%20own%20infrastructure.%20Ideal%20for%20organisations%20that%20need%20complete%20control%20over%20their%20data./singular: 8e7ae0783d60ef4624d3caf9bfc3747f
How%20do%20I%20get%20a%20custom%20URL%3F/singular: 5b28fb95969c0dd19e1b9c9ab8a5fb29
How%20do%20I%20import%20my%20Trello%20boards%3F/singular: 44b30a727150cb93364af0a10346012a
@@ -172,29 +145,23 @@ checksums:
How%20is%20the%20project%20funded%3F/singular: ba7e936f7b1b5faa47df59a0ef990092
I%20acknowledge%20that%20all%20of%20my%20account%20data%20will%20be%20permanently%20deleted%20and%20want%20to%20proceed./singular: 2ffc824d0b1f9e883c2e87ed4b8b40b6
I%20acknowledge%20that%20all%20of%20the%20workspace%20data%20will%20be%20permanently%20deleted%20and%20want%20to%20proceed./singular: fe1183a7439299210d8ab7379b8f4d01
Ideas/singular: 27c24b56895defecd10b0171b39bc93f
Ideas%20to%20improve%20this%20page.../singular: 285decc2cc28403fae043d9b4de97a00
Import/singular: 348b8ab981de5b7f1fca6d7302263bbd
Import%20complete/singular: 7e749df6f068b9cdf1055ea38c9a80af
Import%20failed/singular: bcec1f271c82ddffc91ebc22021b03cb
Import%20your%20Trello%20boards%20and%20hit%20the%20ground%20running./singular: d66d13649f81342f8b3a4f3b54370c20
Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b
Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c
Importing%20your%20Trello%20boards%20into%20Kan%20is%20easy.%20You%20can%20follow%20our%20step-by-step%20guide%20%3C0%3Ehere%3C%2F0%3E./singular: ca88dc22801fef08fee1ecfb1bf6914e
In%20Progress/singular: 3de9afebcb9d4ce8ac42e14995f79ffd
Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
Interviewing/singular: 4ccdcdc784547e925077c3297bddee95
Invite/singular: 181884cea804cbde665f160811ee7ad0
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
Junior/singular: ed1bd2c59a824fdcdd56fc8a0660fe9f
Kanban%20is%20better%20with%20a%20team.%20Perfect%20for%20small%20and%20growing%20teams%20looking%20to%20collaborate./singular: a77bee43046b260797c8936ad23e9223
Kanban%20reimagined/singular: 613ccfdd9f54c66cbf68cfa313498766
Keep%20in%20mind%20that%20this%20action%20is%20irreversible./singular: 79702b2ad3be71cb8b87f1122a60c199
Labels/singular: 6f15627a90002323eac018274b6922d6
Labels%20%26%20Filters/singular: 8f0bdd6084516f8241cb613178114390
Language/singular: 277fd1a41cc237a437cd1d5e4a80463b
Learning/singular: 90e91da3f870f065f2da9aa9adf53514
Legal/singular: 00d3f08da61a21887009819cf93fb414
License/singular: ac2bcac75151e2fcd9eb768cea275a77
Light/singular: bb78ea2c6edd8662676c81a8a13ecb93
@@ -203,10 +170,7 @@ checksums:
List%20name/singular: e925e2e6ccaf0eb4064a888aaea8d3c2
Login%20%7C%20kan.bn/singular: 42a6c8dcd73e0d46e652646dc86871eb
Logout/singular: 07948fdf20705e04a7bf68ab197512bf
Long-term/singular: 51cb6f0b112250c5a091ca5f0866904b
Low%20Priority/singular: 509b5cb7c1e8a185e0aa6d38c64c90e8
magic%20link/singular: db9d17a5bd98bba8aa0d8068c68579f3
Medium%20Priority/singular: 1f527cd6d1ed602930bcaa303f503b51
Members/singular: 0932e80cba1e3e0a7f52bb67ff31da32
Members%20%7C%20%7B0%7D/singular: a29e3e9f1076acd178c417d047584e88
Monthly/singular: 818f1192e32bb855597f930d3e78806e
@@ -220,27 +184,19 @@ checksums:
New%20import/singular: e8fddfe15dd170277df919e5d37efd47
New%20label/singular: 890040da52a88c16c249a4ac78980f81
New%20list/singular: 146c2e642b11056a0b07ed65733e4178
New%20Ticket/singular: 665ff16ec736cba20e8a1b3beb3baa09
New%20workspace/singular: 8eecf05b4ce29aa880adfed2e11476af
Newsletter/singular: dcfb9666301924431ac8ae88e5b6f9d7
Next%20Steps/singular: 12392fe73ae60b6e5a9d851256b8477e
No%20boards/singular: e4397619e69b105e4317dda4560ff4a6
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6
Offer/singular: 82b4e0c9a3f5b4bd93590847de7c32a1
Onboarding/singular: 52b23f9c62ff199d4c09920e7641829e
Once%20you%20delete%20your%20account%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: 9cf7aa6ef30890e5124e266c081bae1c
Once%20you%20delete%20your%20workspace%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: c9ce6a516ed1f361653e8f8db3dd5ffd
or/singular: 7b133c38bec0d5ee23cc6bcf9a8de50b
Organize%20and%20find%20cards%20quickly%20with%20powerful%20filtering%20tools./singular: 1b9898c4b21e9dff413b4f76dc59db56
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
Part-time/singular: 213d63da450f35dabb3ab0e35e29feed
Payment%20frequency/singular: 63ded0e4ffb462ca8bd33d38e4691d86
Pending/singular: 030a6f3395d5d4efddd3cc67d6009039
per%20user%2Fmonth/singular: 72af182c1ba6df6732640f4d8a78d360
Personal%20Project/singular: d7820b1bf4efecc61ed89234567aaa9c
Planning/singular: 353f58c75248275fe091740607501610
Please%20enter%20a%20valid%20email%20address/singular: 8de4bc8832b11b380bc4cbcedc16e48b
Please%20enter%20a%20valid%20name/singular: f2d741f1b5cae722e35cb5206786f932
Please%20enter%20a%20valid%20password/singular: 4b32c17e19b79bcbf0bb092c06ba310f
@@ -253,35 +209,25 @@ checksums:
Profile%20image%20updated/singular: 1ba6609b50bc217a36ab659563e78dae
Profile%20picture/singular: d9b5e595877ffe2557486a987dd28274
Public/singular: c834f11dab0881632aded3f01d4f8fa9
Publishing/singular: d9c8862c0180d9b7bd1272d5dc0d3ac3
Question/singular: 0576462ce60d4263d7c482463fcc9547
Questions%3F/singular: c7c3a47f8b230ce7a43f3c090f21d683
Quick%20Win/singular: a03ff4c0896f14b87455510bab203511
Recruitment/singular: 78084ee4954aa22efe9ad7463d2a0c72
Remote/singular: dc3e4280dfe5c455b38ba6c8884999cf
Remove/singular: dba2fe5fe9f83f8078c687f28cba4b52
Remove%20member/singular: 1d77c2ca3768e486fd1fb5df30cb60d9
removed%20a%20label%20from%20the%20card/singular: f83ec18850a2a8a3f8242a740a04df06
removed%20a%20member%20from%20the%20card/singular: 0bd7561bb79358fde3d595c3e60a315a
removed%20label%20%3C0%3E%7Blabel%7D%3C%2F0%3E/singular: 1e7ebc1866136352bdc3cd90afc083f0
Research/singular: 3368e9638d1619babd6df9fad592274f
Resolution/singular: 6d8bd9e1bd7dae5ae38c93061d32990e
Resources/singular: ec7fb05ed963bb6781a35782b3475502
Review/singular: 299f75db25382980b2895622d7712927
Revoke/singular: be57685a85b6dfeaeb6eab4e9560b520
Roadmap/singular: c60f4a1acf30e566861bf130f13b9ae7
Role/singular: 53743bbb6ca938f5b893552e839d067f
Run%20on%20your%20own%20infrastructure/singular: eba804911562b8dbf9d69c3e27f1d708
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
Self%20Host/singular: 43fbce2027548b712002e489a20a621a
Self%20host%20with%20Github/singular: 972155419bcc9f8f9bad9f5ad3538774
self-assigned%20the%20card/singular: 24a8d97bcd747643772ebe883be69698
Send/singular: 76a8497d7b546628b03bb81d5c1ce995
Senior/singular: 3fff865dc00435f82896fc302ea45630
Settings/singular: 8df6777277469c1fd88cc18dde2f1cc3
Settings%20%7C%20%7B0%7D/singular: b8fc73080bc9c8f4f1403b2a69bd1ac5
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
@@ -291,8 +237,6 @@ checksums:
Sign%20up%20with%20/singular: 103e5d75506e6835b471695d799ff580
Simple%20pricing/singular: 5aa2bece93a71947b268498a58062937
Simple%2C%20visual%20task%20management%20that%20just%20works.%20Drag%20and%20drop%20cards%2C%20collaborate%20with%20your%20team%2C%20and%20get%20more%20done./singular: f4f138f83017d43dab2882cc08e07bdb
Social%20Media/singular: 2227508afb0d38a027e323207e47d4a2
Software%20Development/singular: 67659097ef6bcb194839858b2c4f3a3c
Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875
Success/singular: c43827becada6750f7a25890905f38b9
Support%20the%20development%20of%20the%20project/singular: c63bab228ab2b1be4370c668a99cd278
@@ -311,12 +255,10 @@ checksums:
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20this%20workspace./singular: a31141558af793635c1ddd2fa0a33499
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20your%20account./singular: b49224632bd6c3b7f5e462912aeb1081
This%20workspace%20username%20has%20already%20been%20taken/singular: b7eadb89c615874f416d9658d0428c4c
To%20Do/singular: d60813ea824f373462471e092d136eed
Toggle%20menu/singular: 29dea3e0b6238874f8c7a27619df8e36
Track%20all%20card%20changes%20with%20detailed%20activity%20history./singular: 0d3bac559c71ec4b8734f9f212320de5
Trello%20disconnected/singular: 54b24a3e6c9a7eedd8c8d1060ab1175d
Trello%20imports/singular: 6827eca403faa8f89891d17827e72af9
Triaging/singular: 1d40799fcae53a8a27688fdae2a48dee
Unable%20to%20add%20comment/singular: 49bb435880817434698f31a6069564d6
Unable%20to%20create%20card/singular: 90112ea12ec6fa42097a6e022ae048a4
Unable%20to%20create%20list/singular: 7fbbf8314f8d08a4123c7daef09fed05
@@ -346,13 +288,10 @@ checksums:
updated%20the%20title/singular: 98cf8f12923ec1a58e767e3a40863b21
updated%20the%20title%20to%20%3C0%3E%7BtoTitle%7D%3C%2F0%3E/singular: 70cdf681ec2b6ef8e14397bc1f93f945
Upgrade/singular: 63c3b52882e0d779859307d672c178c2
Urgent/singular: e79afcd4398e52e10e7e8243a7eecabe
URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a
URL%20cannot%20exceed%2024%20characters/singular: 395c25732b84ac1f5b63ee310da08e93
URL%20must%20be%20at%20least%203%20characters%20long/singular: 1b74ac9ec61fd34b16530ed599009ed1
Use%20template/singular: 33f0ca0aa8f4b0de99aad267a61a094d
User/singular: 61073457a5c3901084b557d065f876be
Video/singular: 8050c90e4289b105a0780f0fdda6ff66
View%20and%20manage%20your%20API%20keys./singular: 88e23ee79056846dd9ce63ceee690549
View%20and%20manage%20your%20billing%20and%20subscription./singular: 7469502543aac6f02149813546d1cb38
View%20docs/singular: 43ce54f27bb1e3f1880b56e03ab38871
@@ -378,7 +317,6 @@ checksums:
Workspace%20name%20updated/singular: 3206ea410ee1ea4182b27ac0d89f92a1
Workspace%20slug%20updated/singular: 527b92711d38cb35b40741df43aef047
Workspace%20URL/singular: f4397a838da0f3a44cbd3ebe408ed6c3
Writing/singular: 4f5f3ee3320c252921f80c42653c5d49
Yearly/singular: 87f43e016c19cb25860f456549a2f431
Yes%2C%20we%20offer%20an%20forever%20free%20plan%20for%20individual%20use.%20No%20restrictions%2C%20no%20paywalls%2C%20no%20limits./singular: 963cee303d0ff13c1719f4575e774fe3
You%20can%20get%20a%20custom%20workspace%20URL%2C%20like%20%3C0%3Ekan.bn%2Fkan%3C%2F0%3E%2C%20by%20going%20into%20your%20%3C1%3Eworkspace%20settings%3C%2F1%3E%20and%20purchasing%20a%20pro%20workspace%20subscription.%20All%20subscriptions%20help%20fund%20the%20development%20of%20the%20project!/singular: 41dd145ef56f539e12dc064a9807c660

View File

@@ -31,12 +31,9 @@ const config = {
images: {
remotePatterns: [
{
protocol: "https",
hostname: process.env.S3_FORCE_PATH_STYLE === "true"
? `${env("NEXT_PUBLIC_STORAGE_DOMAIN")}`
: `*.${env("NEXT_PUBLIC_STORAGE_DOMAIN")}`,
hostname: `*.${env("NEXT_PUBLIC_STORAGE_DOMAIN")}`,
},
{
protocol: "http",

View File

@@ -259,7 +259,6 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
}
return (
<Button
key={key}
onClick={() => handleLoginWithProvider(key as SocialProvider)}
isLoading={isLoginWithProviderPending === key}
iconLeft={<provider.icon />}

View File

@@ -1,74 +1,11 @@
import Link from "next/link";
import { useRef, useState } from "react";
import {
TbLayoutSidebarLeftCollapse,
TbLayoutSidebarLeftExpand,
TbLayoutSidebarRightCollapse,
TbLayoutSidebarRightExpand,
} from "react-icons/tb";
import { authClient } from "@kan/auth/client";
import { useClickOutside } from "~/hooks/useClickOutside";
import { useTheme } from "~/providers/theme";
import { api } from "~/utils/api";
import FeedbackButton from "./FeedbackButton";
import SideNavigation from "./SideNavigation";
interface DashboardProps {
children: React.ReactNode;
rightPanel?: React.ReactNode;
hasRightPanel?: boolean;
}
export default function Dashboard({
children,
rightPanel,
hasRightPanel = false,
}: DashboardProps) {
const theme = useTheme();
const { data: session, isPending: sessionLoading } = authClient.useSession();
const [isSideNavOpen, setIsSideNavOpen] = useState(false);
const [isRightPanelOpen, setIsRightPanelOpen] = useState(false);
const sideNavRef = useRef<HTMLDivElement>(null);
const rightPanelRef = useRef<HTMLDivElement>(null);
const sideNavButtonRef = useRef<HTMLButtonElement>(null);
const rightPanelButtonRef = useRef<HTMLButtonElement>(null);
const toggleSideNav = () => {
setIsSideNavOpen(!isSideNavOpen);
if (!isSideNavOpen) {
setIsRightPanelOpen(false);
}
};
const toggleRightPanel = () => {
setIsRightPanelOpen(!isRightPanelOpen);
if (!isRightPanelOpen) {
setIsSideNavOpen(false);
}
};
useClickOutside(sideNavRef, (event) => {
if (sideNavButtonRef.current?.contains(event.target as Node)) {
return;
}
if (isSideNavOpen) {
setIsSideNavOpen(false);
}
});
useClickOutside(rightPanelRef, (event) => {
if (rightPanelButtonRef.current?.contains(event.target as Node)) {
return;
}
if (isRightPanelOpen) {
setIsRightPanelOpen(false);
}
});
const isDarkMode = theme.activeTheme === "dark";
export default function Dashboard(props: { children: React.ReactNode }) {
const { data, isLoading } = api.user.getUser.useQuery();
return (
<>
@@ -76,95 +13,26 @@ export default function Dashboard({
html {
height: 100vh;
overflow: hidden;
min-width: 320px;
background-color: ${!isDarkMode ? "hsl(0deg 0% 97.3%)" : "#161616"};
}
`}</style>
<div className="flex h-screen flex-col items-center bg-light-100 dark:bg-dark-50 md:min-w-[800px]">
<div className="flex h-12 min-h-12 w-full justify-between border-b border-light-600 px-5 py-2 align-middle dark:border-dark-400 md:h-16 md:min-h-16">
<div className="flex h-screen min-w-[800px] flex-col items-center bg-light-100 dark:bg-dark-50">
<div className="m-auto flex h-16 min-h-16 w-full justify-between border-b border-light-600 px-5 py-2 align-middle dark:border-dark-400">
<div className="my-auto flex w-full items-center justify-between">
<button
ref={sideNavButtonRef}
onClick={toggleSideNav}
className="text-neutral-900 dark:text-dark-1000 md:hidden"
>
{isSideNavOpen ? (
<TbLayoutSidebarLeftCollapse
size={20}
className="text-light-900 dark:text-dark-900"
/>
) : (
<TbLayoutSidebarLeftExpand
size={20}
className="text-light-900 dark:text-dark-900"
/>
)}
</button>
<Link href="/" className="hidden md:block">
<Link href="/">
<h1 className="text-lg font-bold tracking-tight text-neutral-900 dark:text-dark-1000">
kan.bn
</h1>
</Link>
<div className="flex items-center gap-2">
{hasRightPanel && (
<button
ref={rightPanelButtonRef}
onClick={toggleRightPanel}
className="text-neutral-900 dark:text-dark-1000 md:hidden"
>
{isRightPanelOpen ? (
<TbLayoutSidebarRightCollapse
size={20}
className="text-light-900 dark:text-dark-900"
/>
) : (
<TbLayoutSidebarRightExpand
size={20}
className="text-light-900 dark:text-dark-900"
/>
)}
</button>
)}
<div className="hidden md:block">
<FeedbackButton />
</div>
</div>
<FeedbackButton />
</div>
</div>
<div className="flex h-full min-h-0 w-full">
<div
ref={sideNavRef}
className={`fixed left-0 top-12 z-50 h-[calc(100dvh-3rem)] transform transition-transform duration-300 ease-in-out md:relative md:top-0 md:h-full md:translate-x-0 ${isSideNavOpen ? "translate-x-0" : "-translate-x-full md:translate-x-0"} `}
>
<SideNavigation
user={{ email: session?.user.email, image: session?.user.image }}
isLoading={sessionLoading}
/>
</div>
<div className="relative flex min-h-0 w-full overflow-hidden">
<div className="h-full w-full overflow-y-auto">{children}</div>
{/* Mobile Right Panel */}
{hasRightPanel && rightPanel && (
<div
ref={rightPanelRef}
className={`fixed right-0 top-12 z-50 h-[calc(100dvh-3rem)] w-80 transform bg-light-200 transition-transform duration-300 ease-in-out dark:bg-dark-100 md:hidden ${
isRightPanelOpen ? "translate-x-0" : "translate-x-full"
}`}
>
<div className="h-full overflow-y-auto">{rightPanel}</div>
</div>
)}
{/* Desktop Right Panel */}
{hasRightPanel && rightPanel && (
<div className="hidden md:block">{rightPanel}</div>
)}
</div>
<div className="flex h-full w-full">
<SideNavigation
user={{ email: data?.email, image: data?.image }}
isLoading={isLoading}
/>
<div className="w-full overflow-hidden">{props.children}</div>
</div>
</div>
</>

View File

@@ -55,7 +55,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
<div className="flex w-full flex-col gap-1">
<div className="relative flex">
{prefix && (
<div className="flex shrink-0 items-center rounded-l-md border border-r-0 border-light-600 px-3 text-sm dark:border-dark-700 dark:text-dark-1000 sm:text-sm/6">
<div className="flex shrink-0 items-center rounded-l-md border border-r-0 border-light-600 px-3 text-base dark:border-dark-700 dark:text-dark-1000 sm:text-sm/6">
{prefix}
</div>
)}

View File

@@ -19,12 +19,10 @@ export function NewWorkspaceForm() {
const { showPopup } = usePopup();
const { switchWorkspace } = useWorkspace();
const { register, handleSubmit } = useForm<FormValues>();
const utils = api.useUtils();
const createWorkspace = api.workspace.create.useMutation({
onSuccess: (values) => {
if (values.publicId && values.name) {
utils.workspace.all.invalidate();
switchWorkspace({
publicId: values.publicId,
name: values.name,

View File

@@ -4,10 +4,6 @@ export const PageHead = ({ title }: { title: string }) => {
return (
<Head>
<title>{title}</title>
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1"
/>
</Head>
);
};

View File

@@ -54,7 +54,7 @@ export default function SideNavigation({
return (
<>
<nav className="flex h-full w-64 flex-col justify-between border-r border-light-600 bg-light-50 px-3 pb-3 pt-5 dark:border-dark-400 dark:bg-dark-50">
<nav className="flex w-72 flex-col justify-between border-r border-light-600 px-3 pb-3 pt-5 dark:border-dark-400">
<div>
<WorkspaceMenu />
<ul role="list" className="space-y-1">

View File

@@ -69,7 +69,6 @@ export const env = createEnv({
S3_SECRET_ACCESS_KEY: z.string().optional(),
S3_REGION: z.string().optional(),
S3_ENDPOINT: z.string().optional(),
S3_FORCE_PATH_STYLE: z.string().optional(),
EMAIL_FROM: z.string().optional(),
},

View File

@@ -1,59 +0,0 @@
import type { RefObject } from "react";
import { useEventListener } from "./useEventListener";
/** Supported event types. */
type EventType =
| "mousedown"
| "mouseup"
| "touchstart"
| "touchend"
| "focusin"
| "focusout";
/**
* Custom hook that handles clicks outside a specified element.
* @template T - The type of the element's reference.
* @param {RefObject<T> | RefObject<T>[]} ref - The React ref object(s) representing the element(s) to watch for outside clicks.
* @param {(event: MouseEvent | TouchEvent | FocusEvent) => void} handler - The callback function to be executed when a click outside the element occurs.
* @param {EventType} [eventType] - The mouse event type to listen for (optional, default is 'mousedown').
* @param {?AddEventListenerOptions} [eventListenerOptions] - The options object to be passed to the `addEventListener` method (optional).
* @returns {void}
* @example
* ```tsx
* const containerRef = useRef(null);
* useClickOutside([containerRef], () => {
* // Handle clicks outside the container.
* });
* ```
*/
export function useClickOutside<T extends HTMLElement = HTMLElement>(
ref: RefObject<T> | RefObject<T>[],
handler: (event: MouseEvent | TouchEvent | FocusEvent) => void,
eventType: EventType = "mousedown",
eventListenerOptions: AddEventListenerOptions = {},
): void {
useEventListener(
eventType,
(event) => {
const target = event.target as Node;
// Do nothing if the target is not connected element with document
if (!target.isConnected) {
return;
}
const isOutside = Array.isArray(ref)
? ref
.filter((r) => Boolean(r.current))
.every((r) => r.current && !r.current.contains(target))
: ref.current && !ref.current.contains(target);
if (isOutside) {
handler(event);
}
},
undefined,
eventListenerOptions,
);
}

View File

@@ -1,120 +0,0 @@
import type { RefObject } from "react";
import { useEffect, useRef } from "react";
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
// MediaQueryList Event based useEventListener interface
function useEventListener<K extends keyof MediaQueryListEventMap>(
eventName: K,
handler: (event: MediaQueryListEventMap[K]) => void,
element: RefObject<MediaQueryList>,
options?: boolean | AddEventListenerOptions,
): void;
// Window Event based useEventListener interface
function useEventListener<K extends keyof WindowEventMap>(
eventName: K,
handler: (event: WindowEventMap[K]) => void,
element?: undefined,
options?: boolean | AddEventListenerOptions,
): void;
// Element Event based useEventListener interface
function useEventListener<
K extends keyof HTMLElementEventMap & keyof SVGElementEventMap,
T extends Element = K extends keyof HTMLElementEventMap
? HTMLDivElement
: SVGElement,
>(
eventName: K,
handler:
| ((event: HTMLElementEventMap[K]) => void)
| ((event: SVGElementEventMap[K]) => void),
element: RefObject<T>,
options?: boolean | AddEventListenerOptions,
): void;
// Document Event based useEventListener interface
function useEventListener<K extends keyof DocumentEventMap>(
eventName: K,
handler: (event: DocumentEventMap[K]) => void,
element: RefObject<Document>,
options?: boolean | AddEventListenerOptions,
): void;
/**
* Custom hook that attaches event listeners to DOM elements, the window, or media query lists.
* @template KW - The type of event for window events.
* @template KH - The type of event for HTML or SVG element events.
* @template KM - The type of event for media query list events.
* @template T - The type of the DOM element (default is `HTMLElement`).
* @param {KW | KH | KM} eventName - The name of the event to listen for.
* @param {(event: WindowEventMap[KW] | HTMLElementEventMap[KH] | SVGElementEventMap[KH] | MediaQueryListEventMap[KM] | Event) => void} handler - The event handler function.
* @param {RefObject<T>} [element] - The DOM element or media query list to attach the event listener to (optional).
* @param {boolean | AddEventListenerOptions} [options] - An options object that specifies characteristics about the event listener (optional).
* @public
* @see [Documentation](https://usehooks-ts.com/react-hook/use-event-listener)
* @example
* ```tsx
* // Example 1: Attach a window event listener
* useEventListener('resize', handleResize);
* ```
* @example
* ```tsx
* // Example 2: Attach a document event listener with options
* const elementRef = useRef(document);
* useEventListener('click', handleClick, elementRef, { capture: true });
* ```
* @example
* ```tsx
* // Example 3: Attach an element event listener
* const buttonRef = useRef<HTMLButtonElement>(null);
* useEventListener('click', handleButtonClick, buttonRef);
* ```
*/
function useEventListener<
KW extends keyof WindowEventMap,
KH extends keyof HTMLElementEventMap & keyof SVGElementEventMap,
KM extends keyof MediaQueryListEventMap,
T extends HTMLElement | SVGAElement | MediaQueryList = HTMLElement,
>(
eventName: KW | KH | KM,
handler: (
event:
| WindowEventMap[KW]
| HTMLElementEventMap[KH]
| SVGElementEventMap[KH]
| MediaQueryListEventMap[KM]
| Event,
) => void,
element?: RefObject<T>,
options?: boolean | AddEventListenerOptions,
) {
// Create a ref that stores handler
const savedHandler = useRef(handler);
useIsomorphicLayoutEffect(() => {
savedHandler.current = handler;
}, [handler]);
useEffect(() => {
// Define the listening target
const targetElement: T | Window = element?.current ?? window;
if (!(targetElement && targetElement.addEventListener)) return;
// Create event listener that calls handler function stored in ref
const listener: typeof handler = (event) => {
savedHandler.current(event);
};
targetElement.addEventListener(eventName, listener, options);
// Remove event listener on cleanup
return () => {
targetElement.removeEventListener(eventName, listener, options);
};
}, [eventName, element, options]);
}
export { useEventListener };

View File

@@ -1,15 +0,0 @@
import { useEffect, useLayoutEffect } from "react";
/**
* Custom hook that uses either `useLayoutEffect` or `useEffect` based on the environment (client-side or server-side).
* @param {Function} effect - The effect function to be executed.
* @param {Array<any>} [dependencies] - An array of dependencies for the effect (optional).
* @example
* ```tsx
* useIsomorphicLayoutEffect(() => {
* // Code to be executed during the layout phase on the client side
* }, [dependency1, dependency2]);
* ```
*/
export const useIsomorphicLayoutEffect =
typeof window !== "undefined" ? useLayoutEffect : useEffect;

View File

@@ -23,7 +23,7 @@ msgstr ", oder besuche unsere"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,6 +36,10 @@ msgstr "{0} Labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}"
#: src/views/home/index.tsx:51
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 Benutzer"
@@ -49,7 +53,7 @@ msgid "Account deleted"
msgstr "Konto gelöscht"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Aktivität"
@@ -108,11 +112,11 @@ msgstr "Alle Systeme funktionieren"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Du hast bereits ein Konto? <0><1>Anmelden</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "API-Schlüssel"
@@ -120,14 +124,6 @@ msgstr "API-Schlüssel"
msgid "API Reference"
msgstr "API-Referenz"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Bewerber"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Genehmigung"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "Bist du sicher, dass du {entityLabel} entfernen möchtest?"
@@ -153,44 +149,19 @@ msgstr "Bist du sicher, dass du dein Konto löschen möchtest?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "hat <0>{memberName}</0> der Karte zugewiesen"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "Warten auf Kunden"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Backlog"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Einfaches Kanban"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Abrechnung"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Abrechnungsportal"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Blogbeitrag"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Board"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "Der Name des Boards darf 100 Zeichen nicht überschreiten"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "Boardname ist erforderlich"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Board nicht gefunden"
@@ -218,28 +189,16 @@ msgstr "Board-Sichtbarkeit"
msgid "Board visibility updated"
msgstr "Board-Sichtbarkeit aktualisiert"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Boards"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Boards | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Brainstorming"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Bug"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Fehlerbericht"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -250,7 +209,7 @@ msgstr "Fehlerbericht"
msgid "Cancel"
msgstr "Abbrechen"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Karte nicht gefunden"
@@ -258,7 +217,7 @@ msgstr "Karte nicht gefunden"
msgid "Card title"
msgstr "Kartentitel"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Ändere die Sprache der App."
@@ -276,10 +235,6 @@ msgstr "Filter löschen"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Klicke auf den Link, den wir an {magicLinkRecipient} gesendet haben, um dich anzumelden."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Code-Review"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Arbeite nahtlos mit deinem Team zusammen."
@@ -296,10 +251,6 @@ msgstr "Kommentare"
msgid "Company"
msgstr "Unternehmen"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Abgeschlossen"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Vollständige Kontrolle und Eigentum:"
@@ -308,7 +259,7 @@ msgstr "Vollständige Kontrolle und Eigentum:"
msgid "Confirm URL change"
msgstr "URL-Änderung bestätigen"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Trello verbinden"
@@ -317,7 +268,7 @@ msgstr "Trello verbinden"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Verbinde deine Lieblingstools, um deinen Arbeitsablauf zu optimieren."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Verbinde dein Trello-Konto, um Boards zu importieren."
@@ -329,10 +280,6 @@ msgstr "Kontakt"
msgid "Contact us"
msgstr "Kontaktiere uns"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Content-Erstellung"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Fortfahren mit "
@@ -352,7 +299,7 @@ msgstr "Kontrolliere, wer deine Boards ansehen und bearbeiten kann."
msgid "Create another"
msgstr "Weitere erstellen"
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Board erstellen"
@@ -381,12 +328,12 @@ msgstr "Neuen Schlüssel erstellen"
msgid "Create new label"
msgstr "Neues Label erstellen"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Neue Liste erstellen"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Arbeitsbereich erstellen"
@@ -394,10 +341,6 @@ msgstr "Arbeitsbereich erstellen"
msgid "created the card"
msgstr "hat die Karte erstellt"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Kritisch"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Benutzerdefinierte Domain"
@@ -406,10 +349,6 @@ msgstr "Benutzerdefinierte Domain"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Benutzerdefinierte URLs sind eine Premium-Funktion. Du wirst zur Aktualisierung deines Kontos weitergeleitet."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Kundensupport"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Dunkel"
@@ -420,8 +359,8 @@ msgstr "Dunkel"
msgid "Delete"
msgstr "Löschen"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Konto löschen"
@@ -442,17 +381,13 @@ msgstr "Kommentar löschen"
msgid "Delete list"
msgstr "Liste löschen"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Workspace löschen"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Design"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Trello trennen"
@@ -460,7 +395,7 @@ msgstr "Trello trennen"
msgid "Discuss and collaborate on cards."
msgstr "Diskutiere und arbeite gemeinsam an Karten."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Anzeigename"
@@ -489,7 +424,6 @@ msgid "Docs"
msgstr "Dokumente"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Dokumentation"
@@ -497,13 +431,6 @@ msgstr "Dokumentation"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "Du hast noch kein Konto? <0><1>Registrieren</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Erledigt"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -517,14 +444,6 @@ msgstr "Kommentar bearbeiten"
msgid "Edit label"
msgstr "Label bearbeiten"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Workspace-URL bearbeiten"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Bearbeitung"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "E-Mail"
@@ -533,10 +452,6 @@ msgstr "E-Mail"
msgid "Email"
msgstr "E-Mail"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Verbesserung"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Gib deine E-Mail-Adresse ein"
@@ -557,7 +472,7 @@ msgstr "Fehler beim Löschen des Kontos"
msgid "Error deleting workspace"
msgstr "Fehler beim Löschen des Arbeitsbereichs"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Fehler beim Trennen von Trello"
@@ -594,10 +509,6 @@ msgstr "Alles im kostenlosen Plan, plus:"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Alles was du brauchst, für immer kostenlos. Unbegrenzte Boards, unbegrenzte Listen, unbegrenzte Karten. Jederzeit upgraden."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Ausführung"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -608,14 +519,6 @@ msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
msgid "FAQs"
msgstr "Häufig gestellte Fragen"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Feature"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Feature-Anfrage"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -642,6 +545,7 @@ msgstr "Finden Sie Antworten auf häufige Fragen zum Projekt. Nicht gefunden, wo
msgid "For long-term sustainability, we recognise all good open source projects need a source of revenue. Ours comes from the paid cloud offering for workspaces with multiple users (free during the beta) and for custom workspace slugs. There's no obligation to use it, and you can self-host the software on your own infrastructure free of charge."
msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-Source-Projekte eine Einnahmequelle benötigen. Unsere stammt aus dem kostenpflichtigen Cloud-Angebot für Workspaces mit mehreren Benutzern (kostenlos während der Beta-Phase) und für benutzerdefinierte Workspace-Slugs. Es besteht keine Verpflichtung, dieses Angebot zu nutzen, und Sie können die Software kostenlos auf Ihrer eigenen Infrastruktur selbst hosten."
#: src/views/home/components/Pricing.tsx:32
#: src/views/home/components/Pricing.tsx:32
msgid "Free"
msgstr "Kostenlos"
@@ -650,14 +554,6 @@ msgstr "Kostenlos"
msgid "Free, forever"
msgstr "Kostenlos, für immer"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Vollzeit"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Spaß"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -674,7 +570,7 @@ msgstr "Loslegen"
msgid "Get started by creating a new board"
msgstr "Beginne, indem du ein neues Board erstellst"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Beginne mit dem Erstellen einer neuen Liste"
@@ -703,14 +599,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Zur App"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "Hohe Priorität"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Eingestellt"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Hosten Sie Kan auf Ihrer eigenen Infrastruktur. Ideal für Organisationen, die vollständige Kontrolle über ihre Daten benötigen."
@@ -743,15 +631,11 @@ msgstr "Ich bestätige, dass alle meine Kontodaten dauerhaft gelöscht werden, u
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "Ich bestätige, dass alle Daten des Arbeitsbereichs dauerhaft gelöscht werden, und möchte fortfahren."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Ideen"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Ideen zur Verbesserung dieser Seite..."
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Importieren"
@@ -767,10 +651,6 @@ msgstr "Import fehlgeschlagen"
msgid "Import your Trello boards and hit the ground running."
msgstr "Importieren Sie Ihre Trello-Boards und starten Sie sofort durch."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Wichtig"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Import von Trello"
@@ -779,12 +659,6 @@ msgstr "Import von Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Der Import Ihrer Trello-Boards in Kan ist einfach. Sie können unserer Schritt-für-Schritt-Anleitung <0>hier</0> folgen."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "In Bearbeitung"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Einzelpersonen"
@@ -793,11 +667,7 @@ msgstr "Einzelpersonen"
msgid "Integrations"
msgstr "Integrationen"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Vorstellungsgespräch"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Einladen"
@@ -806,10 +676,6 @@ msgstr "Einladen"
msgid "Invite member"
msgstr "Mitglied einladen"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban funktioniert besser im Team. Perfekt für kleine und wachsende Teams, die zusammenarbeiten möchten."
@@ -823,7 +689,7 @@ msgstr "Kanban neu gedacht"
msgid "Keep in mind that this action is irreversible."
msgstr "Beachten Sie, dass diese Aktion nicht rückgängig gemacht werden kann."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -833,14 +699,10 @@ msgstr "Labels"
msgid "Labels & Filters"
msgstr "Labels & Filter"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Sprache"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Lernen"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Rechtliches"
@@ -857,7 +719,7 @@ msgstr "Hell"
msgid "Link copied"
msgstr "Link kopiert"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "Liste"
@@ -873,24 +735,12 @@ msgstr "Login | kan.bn"
msgid "Logout"
msgstr "Abmelden"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "Langfristig"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Niedrige Priorität"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "Magic Link"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Mittlere Priorität"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -898,7 +748,7 @@ msgid "Members"
msgstr "Mitglieder"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Mitglieder | {0}"
@@ -914,7 +764,7 @@ msgstr "hat die Karte von <0>{fromList}</0> nach <1>{toList}</1> verschoben"
msgid "moved the card to another list"
msgstr "hat die Karte in eine andere Liste verschoben"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Name"
@@ -923,11 +773,11 @@ msgstr "Name"
msgid "Need help?"
msgstr "Brauchst du Hilfe?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "Neu"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "Neues Board"
@@ -943,27 +793,15 @@ msgstr "Neuer Import"
msgid "New label"
msgstr "Neues Label"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Neue Liste"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "Neues Ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "Neuer Workspace"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Newsletter"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Nächste Schritte"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "Keine Boards"
@@ -976,23 +814,15 @@ msgstr "Keine Boards gefunden"
msgid "No credit card required"
msgstr "Keine Kreditkarte erforderlich"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "Keine Listen"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Angebot"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Einarbeitung"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Sobald Sie Ihr Konto löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Sobald Sie Ihren Arbeitsbereich löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden."
@@ -1008,15 +838,11 @@ msgstr "Organisiere und finde Karten schnell mit leistungsstarken Filterwerkzeug
msgid "Own your data"
msgstr "Besitze deine Daten"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Teilzeit"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Zahlungshäufigkeit"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "Ausstehend"
@@ -1025,14 +851,6 @@ msgstr "Ausstehend"
msgid "per user/month"
msgstr "pro Benutzer/Monat"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Persönliches Projekt"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Planung"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
@@ -1058,7 +876,7 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1067,13 +885,13 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
@@ -1100,7 +918,7 @@ msgstr "Privat"
msgid "Profile image updated"
msgstr "Profilbild aktualisiert"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Profilbild"
@@ -1108,35 +926,15 @@ msgstr "Profilbild"
msgid "Public"
msgstr "Öffentlich"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Veröffentlichung"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Frage"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "Fragen?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Schneller Erfolg"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Personalbeschaffung"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "Remote"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Entfernen"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Mitglied entfernen"
@@ -1152,22 +950,10 @@ msgstr "hat ein Mitglied von der Karte entfernt"
msgid "removed label <0>{label}</0>"
msgstr "hat Label <0>{label}</0> entfernt"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Recherche"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Lösung"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Ressourcen"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Überprüfung"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Widerrufen"
@@ -1177,7 +963,7 @@ msgstr "Widerrufen"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Rolle"
@@ -1193,10 +979,6 @@ msgstr "Speichern"
msgid "Save time with reusable board templates."
msgstr "Spare Zeit mit wiederverwendbaren Board-Vorlagen."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Vorauswahl"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Alle auswählen"
@@ -1221,17 +1003,13 @@ msgstr "hat sich selbst die Karte zugewiesen"
msgid "Send"
msgstr "Senden"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Einstellungen"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Einstellungen | {0}"
@@ -1265,14 +1043,6 @@ msgstr "Einfache Preisgestaltung"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Einfaches, visuelles Aufgabenmanagement, das einfach funktioniert. Ziehe Karten per Drag-and-drop, arbeite mit deinem Team zusammen und erledige mehr."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Social Media"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Softwareentwicklung"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Stern auf Github"
@@ -1348,11 +1118,6 @@ msgstr "Dies führt zur permanenten Löschung aller mit deinem Konto verbundenen
msgid "This workspace username has already been taken"
msgstr "Dieser Workspace-Benutzername ist bereits vergeben"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "Zu erledigen"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Menü umschalten"
@@ -1361,7 +1126,7 @@ msgstr "Menü umschalten"
msgid "Track all card changes with detailed activity history."
msgstr "Verfolge alle kartenänderungen mit detaillierter aktivitätshistorie."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello getrennt"
@@ -1369,10 +1134,6 @@ msgstr "Trello getrennt"
msgid "Trello imports"
msgstr "Trello-importe"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Priorisierung"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Kommentar konnte nicht hinzugefügt werden"
@@ -1385,7 +1146,7 @@ msgstr "Karte konnte nicht erstellt werden"
msgid "Unable to create list"
msgstr "Liste konnte nicht erstellt werden"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "Workspace konnte nicht erstellt werden"
@@ -1413,8 +1174,8 @@ msgstr "Board-URL kann nicht aktualisiert werden"
msgid "Unable to update board visibility"
msgstr "Board-Sichtbarkeit konnte nicht aktualisiert werden"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "Karte konnte nicht aktualisiert werden"
@@ -1427,7 +1188,7 @@ msgid "Unable to update labels"
msgstr "Labels konnten nicht aktualisiert werden"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "Liste konnte nicht aktualisiert werden"
@@ -1471,7 +1232,7 @@ msgstr "Unbegrenzte listen"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Aktualisieren"
@@ -1495,11 +1256,6 @@ msgstr "hat den Titel zu <0>{toTitle}</0> aktualisiert"
msgid "Upgrade"
msgstr "Upgrade"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Dringend"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
@@ -1512,23 +1268,15 @@ msgstr "URL darf nicht länger als 24 Zeichen sein"
msgid "URL must be at least 3 characters long"
msgstr "URL muss mindestens 3 Zeichen lang sein"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Vorlage verwenden"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "Benutzer"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Video"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "API-Schlüssel anzeigen und verwalten."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "Verwalte deine Abrechnung und dein Abonnement."
@@ -1572,7 +1320,7 @@ msgstr "Als Trello 2011 auf den markt kam, beeindruckte es alle mit seiner sorgf
msgid "Why make an open source Trello?"
msgstr "Warum ein open source Trello entwickeln?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Arbeitsbereich"
@@ -1580,7 +1328,7 @@ msgstr "Arbeitsbereich"
msgid "Workspace deleted"
msgstr "Workspace gelöscht"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Workspace-Beschreibung"
@@ -1601,8 +1349,8 @@ msgstr "Workspace-Beschreibung aktualisiert"
msgid "Workspace members"
msgstr "Workspace-mitglieder"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Name des Workspaces"
@@ -1622,14 +1370,10 @@ msgstr "Workspace-Name aktualisiert"
msgid "Workspace slug updated"
msgstr "Workspace-Slug aktualisiert"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "Workspace-URL"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Schreiben"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Jährlich"
@@ -1674,11 +1418,11 @@ msgstr "Dein Anzeigename wurde aktualisiert."
msgid "Your profile image has been updated."
msgstr "Dein Profilbild wurde aktualisiert."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Dein Trello-Konto wurde getrennt."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Dein Trello-Konto ist verbunden."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", or see our"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -37,8 +37,8 @@ msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardC
msgstr "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
#: src/views/home/index.tsx:51
#~ msgid "#1 Hacker News"
#~ msgstr "#1 Hacker News"
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
@@ -61,7 +61,7 @@ msgid "Account deleted"
msgstr "Account deleted"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Activity"
@@ -120,11 +120,11 @@ msgstr "All systems operational"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Already have an account? <0><1>Sign in</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "An error occurred while disconnecting your Trello account."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "API keys"
@@ -132,18 +132,6 @@ msgstr "API keys"
msgid "API Reference"
msgstr "API Reference"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Applicants"
#: src/views/boards/components/TemplateBoards.tsx:48
#~ msgid "Applicants, Screening, Interviewing, Offer, Onboarding, Hired"
#~ msgstr "Applicants, Screening, Interviewing, Offer, Onboarding, Hired"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Approval"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "Are you sure want to remove {entityLabel}?"
@@ -169,52 +157,19 @@ msgstr "Are you sure you want to delete your account?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "assigned <0>{memberName}</0> to the card"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "Awaiting Customer"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Backlog"
#: src/views/boards/components/TemplateBoards.tsx:33
#~ msgid "Backlog, To Do, In Progress, Code Review, Done"
#~ msgstr "Backlog, To Do, In Progress, Code Review, Done"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Basic Kanban"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Billing"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Billing portal"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Blog Post"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Board"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "Board name cannot exceed 100 characters"
#: src/views/boards/components/NewBoardForm.tsx:21
#~ msgid "Board name cannot exceed 50 characters"
#~ msgstr "Board name cannot exceed 50 characters"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "Board name is required"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Board not found"
@@ -242,32 +197,16 @@ msgstr "Board visibility"
msgid "Board visibility updated"
msgstr "Board visibility updated"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Boards"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Boards | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Brainstorming"
#: src/views/boards/components/TemplateBoards.tsx:38
#~ msgid "Brainstorming, Writing, Editing, Design, Approval, Publishing, Done"
#~ msgstr "Brainstorming, Writing, Editing, Design, Approval, Publishing, Done"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Bug"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Bug Report"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -278,7 +217,7 @@ msgstr "Bug Report"
msgid "Cancel"
msgstr "Cancel"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Card not found"
@@ -286,7 +225,7 @@ msgstr "Card not found"
msgid "Card title"
msgstr "Card title"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Change the language of the app."
@@ -304,10 +243,6 @@ msgstr "Clear filters"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Click on the link we've sent to {magicLinkRecipient} to sign in."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Code Review"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Collaborate seamlessly with your team."
@@ -324,10 +259,6 @@ msgstr "Comments"
msgid "Company"
msgstr "Company"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Complete"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Complete control and ownership:"
@@ -336,7 +267,7 @@ msgstr "Complete control and ownership:"
msgid "Confirm URL change"
msgstr "Confirm URL change"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Connect Trello"
@@ -345,7 +276,7 @@ msgstr "Connect Trello"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connect your favorite tools to streamline your workflow."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Connect your Trello account to import boards."
@@ -357,10 +288,6 @@ msgstr "Contact"
msgid "Contact us"
msgstr "Contact us"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Content Creation"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Continue with "
@@ -388,7 +315,7 @@ msgstr "Create another"
#~ msgid "Create API keys to access the Kan API."
#~ msgstr "Create API keys to access the Kan API."
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Create board"
@@ -417,12 +344,12 @@ msgstr "Create new key"
msgid "Create new label"
msgstr "Create new label"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Create new list"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Create workspace"
@@ -430,10 +357,6 @@ msgstr "Create workspace"
msgid "created the card"
msgstr "created the card"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Critical"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Custom domain"
@@ -442,10 +365,6 @@ msgstr "Custom domain"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Custom URLs are a premium feature. You'll be directed to upgrade your account."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Customer Support"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Dark"
@@ -456,8 +375,8 @@ msgstr "Dark"
msgid "Delete"
msgstr "Delete"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Delete account"
@@ -478,17 +397,13 @@ msgstr "Delete comment"
msgid "Delete list"
msgstr "Delete list"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Delete workspace"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Design"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Disconnect Trello"
@@ -496,7 +411,7 @@ msgstr "Disconnect Trello"
msgid "Discuss and collaborate on cards."
msgstr "Discuss and collaborate on cards."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Display name"
@@ -525,7 +440,6 @@ msgid "Docs"
msgstr "Docs"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Documentation"
@@ -533,13 +447,6 @@ msgstr "Documentation"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "Don't have an account? <0><1>Sign up</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Done"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -553,14 +460,6 @@ msgstr "Edit comment"
msgid "Edit label"
msgstr "Edit label"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Edit workspace URL"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Editing"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "email"
@@ -569,10 +468,6 @@ msgstr "email"
msgid "Email"
msgstr "Email"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Enhancement"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Enter your email address"
@@ -593,7 +488,7 @@ msgstr "Error deleting account"
msgid "Error deleting workspace"
msgstr "Error deleting workspace"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Error disconnecting Trello"
@@ -630,10 +525,6 @@ msgstr "Everything in the free plan, plus:"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Execution"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -644,14 +535,6 @@ msgstr "Failed to login with {0}. Please try again."
msgid "FAQs"
msgstr "FAQs"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Feature"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Feature Request"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -687,14 +570,6 @@ msgstr "Free"
msgid "Free, forever"
msgstr "Free, forever"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Full-time"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Fun"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -711,7 +586,7 @@ msgstr "Get Started"
msgid "Get started by creating a new board"
msgstr "Get started by creating a new board"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Get started by creating a new list"
@@ -740,14 +615,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Go to app"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "High Priority"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Hired"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
@@ -780,19 +647,11 @@ msgstr "I acknowledge that all of my account data will be permanently deleted an
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Ideas"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Ideas to improve this page..."
#: src/views/boards/components/TemplateBoards.tsx:53
#~ msgid "Ideas, Research, Planning, Execution, Review, Next Steps, Complete"
#~ msgstr "Ideas, Research, Planning, Execution, Review, Next Steps, Complete"
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Import"
@@ -808,10 +667,6 @@ msgstr "Import failed"
msgid "Import your Trello boards and hit the ground running."
msgstr "Import your Trello boards and hit the ground running."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Important"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Importing from Trello"
@@ -820,12 +675,6 @@ msgstr "Importing from Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "In Progress"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Individuals"
@@ -834,11 +683,7 @@ msgstr "Individuals"
msgid "Integrations"
msgstr "Integrations"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Interviewing"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Invite"
@@ -847,10 +692,6 @@ msgstr "Invite"
msgid "Invite member"
msgstr "Invite member"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
@@ -864,7 +705,7 @@ msgstr "Kanban reimagined"
msgid "Keep in mind that this action is irreversible."
msgstr "Keep in mind that this action is irreversible."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -874,14 +715,10 @@ msgstr "Labels"
msgid "Labels & Filters"
msgstr "Labels & Filters"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Language"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Learning"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Legal"
@@ -898,7 +735,7 @@ msgstr "Light"
msgid "Link copied"
msgstr "Link copied"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "List"
@@ -914,24 +751,12 @@ msgstr "Login | kan.bn"
msgid "Logout"
msgstr "Logout"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "Long-term"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Low Priority"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "magic link"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Medium Priority"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -939,7 +764,7 @@ msgid "Members"
msgstr "Members"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Members | {0}"
@@ -955,7 +780,7 @@ msgstr "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
msgid "moved the card to another list"
msgstr "moved the card to another list"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Name"
@@ -964,11 +789,11 @@ msgstr "Name"
msgid "Need help?"
msgstr "Need help?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "New"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "New board"
@@ -984,31 +809,15 @@ msgstr "New import"
msgid "New label"
msgstr "New label"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "New list"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "New Ticket"
#: src/views/boards/components/TemplateBoards.tsx:43
#~ msgid "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#~ msgstr "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "New workspace"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Newsletter"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Next Steps"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "No boards"
@@ -1021,23 +830,15 @@ msgstr "No boards found"
msgid "No credit card required"
msgstr "No credit card required"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "No lists"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Offer"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Onboarding"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Once you delete your account, there is no going back. This action cannot be undone."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Once you delete your workspace, there is no going back. This action cannot be undone."
@@ -1053,15 +854,11 @@ msgstr "Organize and find cards quickly with powerful filtering tools."
msgid "Own your data"
msgstr "Own your data"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Part-time"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Payment frequency"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "Pending"
@@ -1070,14 +867,6 @@ msgstr "Pending"
msgid "per user/month"
msgstr "per user/month"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Personal Project"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Planning"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Please enter a valid email address"
@@ -1103,7 +892,7 @@ msgstr "Please select a file to upload."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1112,13 +901,13 @@ msgstr "Please select a file to upload."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Please try again later, or contact customer support."
@@ -1145,7 +934,7 @@ msgstr "Private"
msgid "Profile image updated"
msgstr "Profile image updated"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Profile picture"
@@ -1153,35 +942,15 @@ msgstr "Profile picture"
msgid "Public"
msgstr "Public"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Publishing"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Question"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "Questions?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Quick Win"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Recruitment"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "Remote"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Remove"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Remove member"
@@ -1197,22 +966,10 @@ msgstr "removed a member from the card"
msgid "removed label <0>{label}</0>"
msgstr "removed label <0>{label}</0>"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Research"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Resolution"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Resources"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Review"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Revoke"
@@ -1222,7 +979,7 @@ msgstr "Revoke"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Role"
@@ -1238,10 +995,6 @@ msgstr "Save"
msgid "Save time with reusable board templates."
msgstr "Save time with reusable board templates."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Screening"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Select all"
@@ -1266,17 +1019,13 @@ msgstr "self-assigned the card"
msgid "Send"
msgstr "Send"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Settings"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Settings | {0}"
@@ -1310,14 +1059,6 @@ msgstr "Simple pricing"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Social Media"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Software Development"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Star on Github"
@@ -1393,15 +1134,6 @@ msgstr "This will result in the permanent deletion of all data associated with y
msgid "This workspace username has already been taken"
msgstr "This workspace username has already been taken"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "To Do"
#: src/views/boards/components/TemplateBoards.tsx:28
#~ msgid "To Do, In Progress, Done"
#~ msgstr "To Do, In Progress, Done"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Toggle menu"
@@ -1410,7 +1142,7 @@ msgstr "Toggle menu"
msgid "Track all card changes with detailed activity history."
msgstr "Track all card changes with detailed activity history."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello disconnected"
@@ -1418,10 +1150,6 @@ msgstr "Trello disconnected"
msgid "Trello imports"
msgstr "Trello imports"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Triaging"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Unable to add comment"
@@ -1434,7 +1162,7 @@ msgstr "Unable to create card"
msgid "Unable to create list"
msgstr "Unable to create list"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "Unable to create workspace"
@@ -1462,8 +1190,8 @@ msgstr "Unable to update board URL"
msgid "Unable to update board visibility"
msgstr "Unable to update board visibility"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "Unable to update card"
@@ -1476,7 +1204,7 @@ msgid "Unable to update labels"
msgstr "Unable to update labels"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "Unable to update list"
@@ -1520,7 +1248,7 @@ msgstr "Unlimited lists"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Update"
@@ -1544,11 +1272,6 @@ msgstr "updated the title to <0>{toTitle}</0>"
msgid "Upgrade"
msgstr "Upgrade"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Urgent"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL can only contain letters, numbers, and hyphens"
@@ -1561,23 +1284,15 @@ msgstr "URL cannot exceed 24 characters"
msgid "URL must be at least 3 characters long"
msgstr "URL must be at least 3 characters long"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Use template"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "User"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Video"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "View and manage your API keys."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "View and manage your billing and subscription."
@@ -1625,7 +1340,7 @@ msgstr "When Trello launched in 2011, it blew everyone away with its carefully d
msgid "Why make an open source Trello?"
msgstr "Why make an open source Trello?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Workspace"
@@ -1633,7 +1348,7 @@ msgstr "Workspace"
msgid "Workspace deleted"
msgstr "Workspace deleted"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Workspace description"
@@ -1654,8 +1369,8 @@ msgstr "Workspace description updated"
msgid "Workspace members"
msgstr "Workspace members"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Workspace name"
@@ -1675,14 +1390,10 @@ msgstr "Workspace name updated"
msgid "Workspace slug updated"
msgstr "Workspace slug updated"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "Workspace URL"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Writing"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Yearly"
@@ -1727,11 +1438,11 @@ msgstr "Your display name has been updated."
msgid "Your profile image has been updated."
msgstr "Your profile image has been updated."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Your Trello account has been disconnected."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Your Trello account is connected."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", o consulta nuestra"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,6 +36,10 @@ msgstr "{0} etiquetas"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
#: src/views/home/index.tsx:51
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 usuario"
@@ -49,7 +53,7 @@ msgid "Account deleted"
msgstr "Cuenta eliminada"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Actividad"
@@ -108,11 +112,11 @@ msgstr "Todos los sistemas operativos"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "¿Ya tienes una cuenta? <0><1>Iniciar sesión</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "Ocurrió un error al desconectar tu cuenta de Trello."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "Claves API"
@@ -120,14 +124,6 @@ msgstr "Claves API"
msgid "API Reference"
msgstr "Referencia de API"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Solicitantes"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Aprobación"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "¿Estás seguro de que quieres eliminar {entityLabel}?"
@@ -153,44 +149,19 @@ msgstr "¿Estás seguro de que quieres eliminar tu cuenta?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "asignó a <0>{memberName}</0> a la tarjeta"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "Esperando al cliente"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Pendientes"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Kanban básico"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Facturación"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Portal de facturación"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Entrada de blog"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Tablero"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "El nombre del tablero no puede exceder los 100 caracteres"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "El nombre del tablero es obligatorio"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Tablero no encontrado"
@@ -218,28 +189,16 @@ msgstr "Visibilidad del tablero"
msgid "Board visibility updated"
msgstr "Visibilidad del tablero actualizada"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Tableros"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Tableros | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Lluvia de ideas"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Error"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Informe de error"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -250,7 +209,7 @@ msgstr "Informe de error"
msgid "Cancel"
msgstr "Cancelar"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Tarjeta no encontrada"
@@ -258,7 +217,7 @@ msgstr "Tarjeta no encontrada"
msgid "Card title"
msgstr "Título de la tarjeta"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Cambiar el idioma de la aplicación."
@@ -276,10 +235,6 @@ msgstr "Borrar filtros"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Haz clic en el enlace que hemos enviado a {magicLinkRecipient} para iniciar sesión."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Revisión de código"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Colabora sin problemas con tu equipo."
@@ -296,10 +251,6 @@ msgstr "Comentarios"
msgid "Company"
msgstr "Empresa"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Completado"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Control y propiedad completos:"
@@ -308,7 +259,7 @@ msgstr "Control y propiedad completos:"
msgid "Confirm URL change"
msgstr "Confirmar cambio de URL"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Conectar Trello"
@@ -317,7 +268,7 @@ msgstr "Conectar Trello"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Conecta tus herramientas favoritas para agilizar tu flujo de trabajo."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Conecta tu cuenta de Trello para importar tableros."
@@ -329,10 +280,6 @@ msgstr "Contacto"
msgid "Contact us"
msgstr "Contáctanos"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Creación de contenido"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Continuar con "
@@ -352,7 +299,7 @@ msgstr "Controla quién puede ver y editar tus tableros."
msgid "Create another"
msgstr "Crear otro"
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Crear tablero"
@@ -381,12 +328,12 @@ msgstr "Crear nueva clave"
msgid "Create new label"
msgstr "Crear nueva etiqueta"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Crear nueva lista"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Crear espacio de trabajo"
@@ -394,10 +341,6 @@ msgstr "Crear espacio de trabajo"
msgid "created the card"
msgstr "creó la tarjeta"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Crítico"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Dominio personalizado"
@@ -406,10 +349,6 @@ msgstr "Dominio personalizado"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Las URL personalizadas son una función premium. Serás dirigido a actualizar tu cuenta."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Atención al cliente"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Oscuro"
@@ -420,8 +359,8 @@ msgstr "Oscuro"
msgid "Delete"
msgstr "Eliminar"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Eliminar cuenta"
@@ -442,17 +381,13 @@ msgstr "Eliminar comentario"
msgid "Delete list"
msgstr "Eliminar lista"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Eliminar espacio de trabajo"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Diseño"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Desconectar Trello"
@@ -460,7 +395,7 @@ msgstr "Desconectar Trello"
msgid "Discuss and collaborate on cards."
msgstr "Discute y colabora en las tarjetas."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Nombre visible"
@@ -489,7 +424,6 @@ msgid "Docs"
msgstr "Documentos"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Documentación"
@@ -497,13 +431,6 @@ msgstr "Documentación"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "¿No tienes una cuenta? <0><1>Regístrate</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Terminado"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -517,14 +444,6 @@ msgstr "Editar comentario"
msgid "Edit label"
msgstr "Editar etiqueta"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Editar URL del espacio de trabajo"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Editando"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "correo electrónico"
@@ -533,10 +452,6 @@ msgstr "correo electrónico"
msgid "Email"
msgstr "Correo electrónico"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Mejora"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Introduce tu dirección de correo electrónico"
@@ -557,7 +472,7 @@ msgstr "Error al eliminar la cuenta"
msgid "Error deleting workspace"
msgstr "Error al eliminar el espacio de trabajo"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Error al desconectar Trello"
@@ -594,10 +509,6 @@ msgstr "Todo lo que hay en el plan gratuito, más:"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Todo lo que necesitas, gratis para siempre. Tableros ilimitados, listas ilimitadas, tarjetas ilimitadas. Actualiza en cualquier momento."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Ejecución"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -608,14 +519,6 @@ msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
msgid "FAQs"
msgstr "Preguntas frecuentes"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Función"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Solicitud de función"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -642,6 +545,7 @@ msgstr "Encuentra respuestas a preguntas frecuentes sobre el proyecto. ¿No encu
msgid "For long-term sustainability, we recognise all good open source projects need a source of revenue. Ours comes from the paid cloud offering for workspaces with multiple users (free during the beta) and for custom workspace slugs. There's no obligation to use it, and you can self-host the software on your own infrastructure free of charge."
msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos proyectos de código abierto necesitan una fuente de ingresos. La nuestra proviene de la oferta de pago en la nube para espacios de trabajo con múltiples usuarios (gratuita durante la beta) y para slugs personalizados de espacios de trabajo. No hay obligación de usarla, y puedes autoalojar el software en tu propia infraestructura sin costo alguno."
#: src/views/home/components/Pricing.tsx:32
#: src/views/home/components/Pricing.tsx:32
msgid "Free"
msgstr "Gratis"
@@ -650,14 +554,6 @@ msgstr "Gratis"
msgid "Free, forever"
msgstr "Gratis, para siempre"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Tiempo completo"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Diversión"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -674,7 +570,7 @@ msgstr "Comenzar"
msgid "Get started by creating a new board"
msgstr "Comienza creando un nuevo tablero"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Comienza creando una nueva lista"
@@ -703,14 +599,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Ir a la aplicación"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "Alta prioridad"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Contratado"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Aloja Kan en tu propia infraestructura. Ideal para organizaciones que necesitan control completo sobre sus datos."
@@ -743,15 +631,11 @@ msgstr "Reconozco que todos los datos de mi cuenta serán eliminados permanentem
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "Reconozco que todos los datos del espacio de trabajo serán eliminados permanentemente y quiero continuar."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Ideas"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Ideas para mejorar esta página..."
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Importar"
@@ -767,10 +651,6 @@ msgstr "Importación fallida"
msgid "Import your Trello boards and hit the ground running."
msgstr "Importa tus tableros de Trello y comienza a trabajar de inmediato."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Importante"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Importando desde Trello"
@@ -779,12 +659,6 @@ msgstr "Importando desde Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importar tus tableros de Trello a Kan es fácil. Puedes seguir nuestra guía paso a paso <0>aquí</0>."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "En progreso"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Individuos"
@@ -793,11 +667,7 @@ msgstr "Individuos"
msgid "Integrations"
msgstr "Integraciones"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Entrevistando"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Invitar"
@@ -806,10 +676,6 @@ msgstr "Invitar"
msgid "Invite member"
msgstr "Invitar miembro"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban es mejor con un equipo. Perfecto para equipos pequeños y en crecimiento que buscan colaborar."
@@ -823,7 +689,7 @@ msgstr "Kanban reinventado"
msgid "Keep in mind that this action is irreversible."
msgstr "Ten en cuenta que esta acción es irreversible."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -833,14 +699,10 @@ msgstr "Etiquetas"
msgid "Labels & Filters"
msgstr "Etiquetas y filtros"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Idioma"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Aprendizaje"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Legal"
@@ -857,7 +719,7 @@ msgstr "Claro"
msgid "Link copied"
msgstr "Enlace copiado"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "Lista"
@@ -873,24 +735,12 @@ msgstr "Iniciar sesión | kan.bn"
msgid "Logout"
msgstr "Cerrar sesión"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "Largo plazo"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Prioridad baja"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "enlace mágico"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Prioridad media"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -898,7 +748,7 @@ msgid "Members"
msgstr "Miembros"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Miembros | {0}"
@@ -914,7 +764,7 @@ msgstr "movió la tarjeta de <0>{fromList}</0> a<1>{toList}</1>"
msgid "moved the card to another list"
msgstr "movió la tarjeta a otra lista"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Nombre"
@@ -923,11 +773,11 @@ msgstr "Nombre"
msgid "Need help?"
msgstr "¿Necesitas ayuda?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "Nuevo"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "Nuevo tablero"
@@ -943,27 +793,15 @@ msgstr "Nueva importación"
msgid "New label"
msgstr "Nueva etiqueta"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Nueva lista"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "Nuevo ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "Nuevo espacio de trabajo"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Boletín"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Próximos pasos"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "Sin tableros"
@@ -976,23 +814,15 @@ msgstr "No se encontraron tableros"
msgid "No credit card required"
msgstr "No se requiere tarjeta de crédito"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "Sin listas"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Oferta"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Incorporación"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Una vez que elimines tu cuenta, no hay vuelta atrás. Esta acción no se puede deshacer."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Una vez que elimines tu espacio de trabajo, no hay vuelta atrás. Esta acción no se puede deshacer."
@@ -1008,15 +838,11 @@ msgstr "Organiza y encuentra tarjetas rápidamente con potentes herramientas de
msgid "Own your data"
msgstr "Sé dueño de tus datos"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Tiempo parcial"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Frecuencia de pago"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "Pendiente"
@@ -1025,14 +851,6 @@ msgstr "Pendiente"
msgid "per user/month"
msgstr "por usuario/mes"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Proyecto personal"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Planificación"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Por favor, introduce una dirección de correo electrónico válida"
@@ -1058,7 +876,7 @@ msgstr "Por favor selecciona un archivo para subir."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1067,13 +885,13 @@ msgstr "Por favor selecciona un archivo para subir."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
@@ -1100,7 +918,7 @@ msgstr "Privado"
msgid "Profile image updated"
msgstr "Imagen de perfil actualizada"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Foto de perfil"
@@ -1108,35 +926,15 @@ msgstr "Foto de perfil"
msgid "Public"
msgstr "Público"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Publicación"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Pregunta"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "¿Preguntas?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Victoria rápida"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Reclutamiento"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "Remoto"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Eliminar"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Eliminar miembro"
@@ -1152,22 +950,10 @@ msgstr "eliminó un miembro de la tarjeta"
msgid "removed label <0>{label}</0>"
msgstr "eliminó la etiqueta <0>{label}</0>"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Investigación"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Resolución"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Recursos"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Revisión"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Revocar"
@@ -1177,7 +963,7 @@ msgstr "Revocar"
msgid "Roadmap"
msgstr "Hoja de ruta"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Rol"
@@ -1193,10 +979,6 @@ msgstr "Guardar"
msgid "Save time with reusable board templates."
msgstr "Ahorra tiempo con plantillas de tableros reutilizables."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Preselección"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Seleccionar todo"
@@ -1221,17 +1003,13 @@ msgstr "se autoasignó la tarjeta"
msgid "Send"
msgstr "Enviar"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Configuración"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Configuración | {0}"
@@ -1265,14 +1043,6 @@ msgstr "Precios simples"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Gestión de tareas visual y sencilla que simplemente funciona. Arrastra y suelta tarjetas, colabora con tu equipo y logra más."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Redes sociales"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Desarrollo de software"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Estrella en Github"
@@ -1348,11 +1118,6 @@ msgstr "Esto resultará en la eliminación permanente de todos los datos asociad
msgid "This workspace username has already been taken"
msgstr "Este nombre de usuario del espacio de trabajo ya ha sido tomado"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "Por hacer"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Alternar menú"
@@ -1361,7 +1126,7 @@ msgstr "Alternar menú"
msgid "Track all card changes with detailed activity history."
msgstr "Rastrea todos los cambios en las tarjetas con un historial de actividad detallado."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello desconectado"
@@ -1369,10 +1134,6 @@ msgstr "Trello desconectado"
msgid "Trello imports"
msgstr "Importaciones de Trello"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Clasificación"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "No se puede añadir el comentario"
@@ -1385,7 +1146,7 @@ msgstr "No se puede crear la tarjeta"
msgid "Unable to create list"
msgstr "No se puede crear la lista"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "No se puede crear el espacio de trabajo"
@@ -1413,8 +1174,8 @@ msgstr "No se puede actualizar la URL del tablero"
msgid "Unable to update board visibility"
msgstr "No se puede actualizar la visibilidad del tablero"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "No se puede actualizar la tarjeta"
@@ -1427,7 +1188,7 @@ msgid "Unable to update labels"
msgstr "No se pueden actualizar las etiquetas"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "No se puede actualizar la lista"
@@ -1471,7 +1232,7 @@ msgstr "Listas ilimitadas"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Actualizar"
@@ -1495,11 +1256,6 @@ msgstr "actualizó el título a <0>{toTitle}</0>"
msgid "Upgrade"
msgstr "Actualizar"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Urgente"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "La URL solo puede contener letras, números y guiones"
@@ -1512,23 +1268,15 @@ msgstr "La URL no puede exceder los 24 caracteres"
msgid "URL must be at least 3 characters long"
msgstr "La URL debe tener al menos 3 caracteres"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Usar plantilla"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "Usuario"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Video"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "Ver y gestionar tus claves API."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "Ver y gestionar tu facturación y suscripción."
@@ -1572,7 +1320,7 @@ msgstr "Cuando Trello se lanzó en 2011, impresionó a todos con su simplicidad
msgid "Why make an open source Trello?"
msgstr "¿Por qué crear un Trello de código abierto?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Espacio de trabajo"
@@ -1580,7 +1328,7 @@ msgstr "Espacio de trabajo"
msgid "Workspace deleted"
msgstr "Espacio de trabajo eliminado"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Descripción del espacio de trabajo"
@@ -1601,8 +1349,8 @@ msgstr "Descripción del espacio de trabajo actualizada"
msgid "Workspace members"
msgstr "Miembros del espacio de trabajo"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Nombre del espacio de trabajo"
@@ -1622,14 +1370,10 @@ msgstr "Nombre del espacio de trabajo actualizado"
msgid "Workspace slug updated"
msgstr "Slug del espacio de trabajo actualizado"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "URL del espacio de trabajo"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Escritura"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Anual"
@@ -1674,11 +1418,11 @@ msgstr "Tu nombre de visualización ha sido actualizado."
msgid "Your profile image has been updated."
msgstr "Tu imagen de perfil ha sido actualizada."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Tu cuenta de Trello ha sido desconectada."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Tu cuenta de Trello está conectada."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", ou consultez notre"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,6 +36,10 @@ msgstr "{0} étiquettes"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
#: src/views/home/index.tsx:51
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 utilisateur"
@@ -49,7 +53,7 @@ msgid "Account deleted"
msgstr "Compte supprimé"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Activité"
@@ -108,11 +112,11 @@ msgstr "Tous les systèmes opérationnels"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Vous avez déjà un compte ? <0><1>Connectez-vous</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "Une erreur s'est produite lors de la déconnexion de votre compte Trello."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "Clés API"
@@ -120,14 +124,6 @@ msgstr "Clés API"
msgid "API Reference"
msgstr "Référence API"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Candidats"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Approbation"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "Êtes-vous sûr de vouloir supprimer {entityLabel} ?"
@@ -153,44 +149,19 @@ msgstr "Êtes-vous sûr de vouloir supprimer votre compte ?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "a assigné <0>{memberName}</0> à la carte"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "En attente du client"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Backlog"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Kanban basique"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Facturation"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Portail de facturation"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Article de blog"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Tableau"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "Le nom du tableau ne peut pas dépasser 100 caractères"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "Le nom du tableau est requis"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Tableau introuvable"
@@ -218,28 +189,16 @@ msgstr "Visibilité du tableau"
msgid "Board visibility updated"
msgstr "Visibilité du tableau mise à jour"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Tableaux"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Tableaux | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Brainstorming"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Bug"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Rapport de bug"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -250,7 +209,7 @@ msgstr "Rapport de bug"
msgid "Cancel"
msgstr "Annuler"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Carte introuvable"
@@ -258,7 +217,7 @@ msgstr "Carte introuvable"
msgid "Card title"
msgstr "Titre de la carte"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Changer la langue de l'application."
@@ -276,10 +235,6 @@ msgstr "Effacer les filtres"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Cliquez sur le lien que nous avons envoyé à {magicLinkRecipient} pour vous connecter."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Revue de code"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Collaborez en toute fluidité avec votre équipe."
@@ -296,10 +251,6 @@ msgstr "Commentaires"
msgid "Company"
msgstr "Entreprise"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Terminé"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Contrôle et propriété complets :"
@@ -308,7 +259,7 @@ msgstr "Contrôle et propriété complets :"
msgid "Confirm URL change"
msgstr "Confirmer le changement d'URL"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Connecter Trello"
@@ -317,7 +268,7 @@ msgstr "Connecter Trello"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connectez vos outils favoris pour simplifier votre flux de travail."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Connectez votre compte Trello pour importer des tableaux."
@@ -329,10 +280,6 @@ msgstr "Contact"
msgid "Contact us"
msgstr "Contactez-nous"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Création de contenu"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Continuer avec "
@@ -352,7 +299,7 @@ msgstr "Contrôlez qui peut voir et modifier vos tableaux."
msgid "Create another"
msgstr "Créer un autre"
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Créer un tableau"
@@ -381,12 +328,12 @@ msgstr "Créer une nouvelle clé"
msgid "Create new label"
msgstr "Créer une nouvelle étiquette"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Créer une nouvelle liste"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Créer un espace de travail"
@@ -394,10 +341,6 @@ msgstr "Créer un espace de travail"
msgid "created the card"
msgstr "a créé la carte"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Critique"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Domaine personnalisé"
@@ -406,10 +349,6 @@ msgstr "Domaine personnalisé"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Les URL personnalisées sont une fonctionnalité premium. Vous serez dirigé vers la mise à niveau de votre compte."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Support client"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Sombre"
@@ -420,8 +359,8 @@ msgstr "Sombre"
msgid "Delete"
msgstr "Supprimer"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Supprimer le compte"
@@ -442,17 +381,13 @@ msgstr "Supprimer le commentaire"
msgid "Delete list"
msgstr "Supprimer la liste"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Supprimer l'espace de travail"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Design"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Déconnecter Trello"
@@ -460,7 +395,7 @@ msgstr "Déconnecter Trello"
msgid "Discuss and collaborate on cards."
msgstr "Discutez et collaborez sur les cartes."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Nom d'affichage"
@@ -489,7 +424,6 @@ msgid "Docs"
msgstr "Documentation"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Documentation"
@@ -497,13 +431,6 @@ msgstr "Documentation"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "Vous n'avez pas de compte ? <0><1>Inscrivez-vous</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Fait"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -517,14 +444,6 @@ msgstr "Modifier le commentaire"
msgid "Edit label"
msgstr "Modifier l'étiquette"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Modifier l'URL de l'espace de travail"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Édition"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "e-mail"
@@ -533,10 +452,6 @@ msgstr "e-mail"
msgid "Email"
msgstr "E-mail"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Amélioration"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Saisissez votre adresse e-mail"
@@ -557,7 +472,7 @@ msgstr "Erreur lors de la suppression du compte"
msgid "Error deleting workspace"
msgstr "Erreur lors de la suppression de l'espace de travail"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Erreur lors de la déconnexion de Trello"
@@ -594,10 +509,6 @@ msgstr "Tout ce qui est inclus dans le plan gratuit, plus :"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Tout ce dont vous avez besoin, gratuit pour toujours. Tableaux illimités, listes illimitées, cartes illimitées. Possibilité de mise à niveau à tout moment."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Exécution"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -608,14 +519,6 @@ msgstr "Échec de connexion avec {0}. Veuillez réessayer."
msgid "FAQs"
msgstr "FAQ"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Fonctionnalité"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Demande de fonctionnalité"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -642,6 +545,7 @@ msgstr "Trouvez des réponses aux questions fréquentes sur le projet. Vous ne t
msgid "For long-term sustainability, we recognise all good open source projects need a source of revenue. Ours comes from the paid cloud offering for workspaces with multiple users (free during the beta) and for custom workspace slugs. There's no obligation to use it, and you can self-host the software on your own infrastructure free of charge."
msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons projets open source ont besoin d'une source de revenus. La nôtre provient de l'offre cloud payante pour les espaces de travail avec plusieurs utilisateurs (gratuite pendant la bêta) et pour les slugs d'espace de travail personnalisés. Il n'y a aucune obligation de l'utiliser, et vous pouvez auto-héberger le logiciel sur votre propre infrastructure gratuitement."
#: src/views/home/components/Pricing.tsx:32
#: src/views/home/components/Pricing.tsx:32
msgid "Free"
msgstr "Gratuit"
@@ -650,14 +554,6 @@ msgstr "Gratuit"
msgid "Free, forever"
msgstr "Gratuit, pour toujours"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Temps plein"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Amusant"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -674,7 +570,7 @@ msgstr "Commencer"
msgid "Get started by creating a new board"
msgstr "Commencez par créer un nouveau tableau"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Commencez par créer une nouvelle liste"
@@ -703,14 +599,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Accéder à l'application"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "Haute priorité"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Embauché"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Hébergez Kan sur votre propre infrastructure. Idéal pour les organisations qui ont besoin d'un contrôle total sur leurs données."
@@ -743,15 +631,11 @@ msgstr "Je reconnais que toutes les données de mon compte seront définitivemen
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "Je reconnais que toutes les données de l'espace de travail seront définitivement supprimées et je souhaite continuer."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Idées"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Idées pour améliorer cette page..."
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Importer"
@@ -767,10 +651,6 @@ msgstr "Échec de l'importation"
msgid "Import your Trello boards and hit the ground running."
msgstr "Importez vos tableaux Trello et commencez immédiatement."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Important"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Importation depuis Trello"
@@ -779,12 +659,6 @@ msgstr "Importation depuis Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "L'importation de vos tableaux Trello dans Kan est simple. Vous pouvez suivre notre guide étape par étape <0>ici</0>."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "En cours"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Particuliers"
@@ -793,11 +667,7 @@ msgstr "Particuliers"
msgid "Integrations"
msgstr "Intégrations"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Entretien"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Inviter"
@@ -806,10 +676,6 @@ msgstr "Inviter"
msgid "Invite member"
msgstr "Inviter un membre"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban est meilleur en équipe. Parfait pour les petites équipes et celles en croissance qui cherchent à collaborer."
@@ -823,7 +689,7 @@ msgstr "Kanban réinventé"
msgid "Keep in mind that this action is irreversible."
msgstr "Gardez à l'esprit que cette action est irréversible."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -833,14 +699,10 @@ msgstr "Étiquettes"
msgid "Labels & Filters"
msgstr "Étiquettes & filtres"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Langue"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Apprentissage"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Mentions légales"
@@ -857,7 +719,7 @@ msgstr "Clair"
msgid "Link copied"
msgstr "Lien copié"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "Liste"
@@ -873,24 +735,12 @@ msgstr "Connexion | kan.bn"
msgid "Logout"
msgstr "Déconnexion"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "Long terme"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Priorité basse"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "lien magique"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Priorité moyenne"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -898,7 +748,7 @@ msgid "Members"
msgstr "Membres"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Membres | {0}"
@@ -914,7 +764,7 @@ msgstr "a déplacé la carte de <0>{fromList}</0> vers<1>{toList}</1>"
msgid "moved the card to another list"
msgstr "a déplacé la carte vers une autre liste"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Nom"
@@ -923,11 +773,11 @@ msgstr "Nom"
msgid "Need help?"
msgstr "Besoin d'aide ?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "Nouveau"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "Nouveau tableau"
@@ -943,27 +793,15 @@ msgstr "Nouvel import"
msgid "New label"
msgstr "Nouvelle étiquette"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Nouvelle liste"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "Nouveau ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "Nouvel espace de travail"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Newsletter"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Prochaines étapes"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "Aucun tableau"
@@ -976,23 +814,15 @@ msgstr "Aucun tableau trouvé"
msgid "No credit card required"
msgstr "Aucune carte de crédit requise"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "Aucune liste"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Offre"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Intégration"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Une fois que vous supprimez votre compte, il n'y a pas de retour possible. Cette action ne peut pas être annulée."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Une fois que vous supprimez votre espace de travail, il n'y a pas de retour possible. Cette action ne peut pas être annulée."
@@ -1008,15 +838,11 @@ msgstr "Organisez et trouvez rapidement des cartes avec des outils de filtrage p
msgid "Own your data"
msgstr "Maîtrisez vos données"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Temps partiel"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Fréquence de paiement"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "En attente"
@@ -1025,14 +851,6 @@ msgstr "En attente"
msgid "per user/month"
msgstr "par utilisateur/mois"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Projet personnel"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Planification"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Veuillez saisir une adresse e-mail valide"
@@ -1058,7 +876,7 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1067,13 +885,13 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Veuillez réessayer plus tard ou contacter le service client."
@@ -1100,7 +918,7 @@ msgstr "Privé"
msgid "Profile image updated"
msgstr "Image de profil mise à jour"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Photo de profil"
@@ -1108,35 +926,15 @@ msgstr "Photo de profil"
msgid "Public"
msgstr "Public"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Publication"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Question"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "Des questions ?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Victoire rapide"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Recrutement"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "À distance"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Supprimer"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Supprimer le membre"
@@ -1152,22 +950,10 @@ msgstr "a retiré un membre de la carte"
msgid "removed label <0>{label}</0>"
msgstr "a supprimé l'étiquette <0>{label}</0>"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Recherche"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Résolution"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Ressources"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Révision"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Révoquer"
@@ -1177,7 +963,7 @@ msgstr "Révoquer"
msgid "Roadmap"
msgstr "Feuille de route"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Rôle"
@@ -1193,10 +979,6 @@ msgstr "Enregistrer"
msgid "Save time with reusable board templates."
msgstr "Gagnez du temps avec des modèles de tableaux réutilisables."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Présélection"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Sélectionner tout"
@@ -1221,17 +1003,13 @@ msgstr "s'est auto-assigné la carte"
msgid "Send"
msgstr "Envoyer"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Paramètres"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Paramètres | {0}"
@@ -1265,14 +1043,6 @@ msgstr "Tarification simple"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Gestion de tâches visuelle et simple qui fonctionne parfaitement. Glissez-déposez des cartes, collaborez avec votre équipe et accomplissez davantage."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Réseaux sociaux"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Développement logiciel"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Étoile sur Github"
@@ -1348,11 +1118,6 @@ msgstr "Cela entraînera la suppression définitive de toutes les données assoc
msgid "This workspace username has already been taken"
msgstr "Ce nom d'utilisateur d'espace de travail est déjà pris"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "À faire"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Basculer le menu"
@@ -1361,7 +1126,7 @@ msgstr "Basculer le menu"
msgid "Track all card changes with detailed activity history."
msgstr "Suivez tous les changements de cartes avec un historique d'activité détaillé."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello déconnecté"
@@ -1369,10 +1134,6 @@ msgstr "Trello déconnecté"
msgid "Trello imports"
msgstr "Importations Trello"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Triage"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Impossible d'ajouter un commentaire"
@@ -1385,7 +1146,7 @@ msgstr "Impossible de créer la carte"
msgid "Unable to create list"
msgstr "Impossible de créer une liste"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "Impossible de créer l'espace de travail"
@@ -1413,8 +1174,8 @@ msgstr "Impossible de mettre à jour l'URL du tableau"
msgid "Unable to update board visibility"
msgstr "Impossible de mettre à jour la visibilité du tableau"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "Impossible de mettre à jour la carte"
@@ -1427,7 +1188,7 @@ msgid "Unable to update labels"
msgstr "Impossible de mettre à jour les étiquettes"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "Impossible de mettre à jour la liste"
@@ -1471,7 +1232,7 @@ msgstr "Listes illimitées"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Mettre à jour"
@@ -1495,11 +1256,6 @@ msgstr "a mis à jour le titre en <0>{toTitle}</0>"
msgid "Upgrade"
msgstr "Mettre à niveau"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Urgent"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "L'URL ne peut contenir que des lettres, des chiffres et des traits d'union"
@@ -1512,23 +1268,15 @@ msgstr "L'URL ne peut pas dépasser 24 caractères"
msgid "URL must be at least 3 characters long"
msgstr "L'URL doit comporter au moins 3 caractères"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Utiliser le modèle"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "Utilisateur"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Vidéo"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "Consultez et gérez vos clés API."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "Consultez et gérez votre facturation et votre abonnement."
@@ -1572,7 +1320,7 @@ msgstr "Quand Trello a été lancé en 2011, il a impressionné tout le monde pa
msgid "Why make an open source Trello?"
msgstr "Pourquoi créer un Trello open source ?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Espace de travail"
@@ -1580,7 +1328,7 @@ msgstr "Espace de travail"
msgid "Workspace deleted"
msgstr "Espace de travail supprimé"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Description de l'espace de travail"
@@ -1601,8 +1349,8 @@ msgstr "Description de l'espace de travail mise à jour"
msgid "Workspace members"
msgstr "Membres de l'espace de travail"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Nom de l'espace de travail"
@@ -1622,14 +1370,10 @@ msgstr "Nom de l'espace de travail mis à jour"
msgid "Workspace slug updated"
msgstr "Slug de l'espace de travail mis à jour"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "URL de l'espace de travail"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Écriture"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Annuel"
@@ -1674,11 +1418,11 @@ msgstr "Votre nom d'affichage a été mis à jour."
msgid "Your profile image has been updated."
msgstr "Votre image de profil a été mise à jour."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Votre compte Trello a été déconnecté."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Votre compte Trello est connecté."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", o consulta i nostri"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,6 +36,10 @@ msgstr "{0} etichette"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
#: src/views/home/index.tsx:51
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 utente"
@@ -49,7 +53,7 @@ msgid "Account deleted"
msgstr "Account eliminato"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Attività"
@@ -108,11 +112,11 @@ msgstr "Tutti i sistemi operativi"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Hai già un account? <0><1>Accedi</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "Si è verificato un errore durante la disconnessione del tuo account Trello."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "Chiavi API"
@@ -120,14 +124,6 @@ msgstr "Chiavi API"
msgid "API Reference"
msgstr "Riferimento API"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Candidati"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Approvazione"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "Sei sicuro di voler rimuovere {entityLabel}?"
@@ -153,44 +149,19 @@ msgstr "Sei sicuro di voler eliminare il tuo account?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "ha assegnato <0>{memberName}</0> alla carta"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "In attesa del cliente"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Backlog"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Kanban base"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Fatturazione"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Portale di fatturazione"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Post del blog"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Bacheca"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "Il nome della bacheca non può superare i 100 caratteri"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "Il nome della bacheca è obbligatorio"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Bacheca non trovata"
@@ -218,28 +189,16 @@ msgstr "Visibilità bacheca"
msgid "Board visibility updated"
msgstr "Visibilità della bacheca aggiornata"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Bacheche"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Bacheche | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Brainstorming"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Bug"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Segnalazione bug"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -250,7 +209,7 @@ msgstr "Segnalazione bug"
msgid "Cancel"
msgstr "Annulla"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Carta non trovata"
@@ -258,7 +217,7 @@ msgstr "Carta non trovata"
msgid "Card title"
msgstr "Titolo della carta"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Cambia la lingua dell'app."
@@ -276,10 +235,6 @@ msgstr "Cancella filtri"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Clicca sul link che abbiamo inviato a {magicLinkRecipient} per accedere."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Revisione del codice"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Collabora senza problemi con il tuo team."
@@ -296,10 +251,6 @@ msgstr "Commenti"
msgid "Company"
msgstr "Azienda"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Completato"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Controllo e proprietà completi:"
@@ -308,7 +259,7 @@ msgstr "Controllo e proprietà completi:"
msgid "Confirm URL change"
msgstr "Conferma modifica URL"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Connetti Trello"
@@ -317,7 +268,7 @@ msgstr "Connetti Trello"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connetti i tuoi strumenti preferiti per semplificare il tuo flusso di lavoro."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Connetti il tuo account Trello per importare le bacheche."
@@ -329,10 +280,6 @@ msgstr "Contatti"
msgid "Contact us"
msgstr "Contattaci"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Creazione contenuti"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Continua con "
@@ -352,7 +299,7 @@ msgstr "Controlla chi può visualizzare e modificare le tue bacheche."
msgid "Create another"
msgstr "Crea un altro"
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Crea bacheca"
@@ -381,12 +328,12 @@ msgstr "Crea nuova chiave"
msgid "Create new label"
msgstr "Crea nuova etichetta"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Crea nuova lista"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Crea spazio di lavoro"
@@ -394,10 +341,6 @@ msgstr "Crea spazio di lavoro"
msgid "created the card"
msgstr "ha creato la carta"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Critico"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Dominio personalizzato"
@@ -406,10 +349,6 @@ msgstr "Dominio personalizzato"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Gli URL personalizzati sono una funzionalità premium. Sarai indirizzato all'aggiornamento del tuo account."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Assistenza clienti"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Scuro"
@@ -420,8 +359,8 @@ msgstr "Scuro"
msgid "Delete"
msgstr "Elimina"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Elimina account"
@@ -442,17 +381,13 @@ msgstr "Elimina commento"
msgid "Delete list"
msgstr "Elimina lista"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Elimina spazio di lavoro"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Design"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Disconnetti Trello"
@@ -460,7 +395,7 @@ msgstr "Disconnetti Trello"
msgid "Discuss and collaborate on cards."
msgstr "Discuti e collabora sulle schede."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Nome visualizzato"
@@ -489,7 +424,6 @@ msgid "Docs"
msgstr "Documenti"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Documentazione"
@@ -497,13 +431,6 @@ msgstr "Documentazione"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "Non hai un account? <0><1>Registrati</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Fatto"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -517,14 +444,6 @@ msgstr "Modifica commento"
msgid "Edit label"
msgstr "Modifica etichetta"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Modifica URL dell'area di lavoro"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Modifica"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "email"
@@ -533,10 +452,6 @@ msgstr "email"
msgid "Email"
msgstr "Email"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Miglioramento"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Inserisci il tuo indirizzo email"
@@ -557,7 +472,7 @@ msgstr "Errore durante l'eliminazione dell'account"
msgid "Error deleting workspace"
msgstr "Errore durante l'eliminazione dell'area di lavoro"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Errore durante la disconnessione da Trello"
@@ -594,10 +509,6 @@ msgstr "Tutto ciò che è incluso nel piano gratuito, più:"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Tutto ciò di cui hai bisogno, gratis per sempre. Bacheche illimitate, liste illimitate, schede illimitate. Aggiorna in qualsiasi momento."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Esecuzione"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -608,14 +519,6 @@ msgstr "Accesso con {0} fallito. Riprova."
msgid "FAQs"
msgstr "FAQ"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Funzionalità"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Richiesta funzionalità"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -642,6 +545,7 @@ msgstr "Trova risposte alle domande comuni sul progetto. Non trovi quello che st
msgid "For long-term sustainability, we recognise all good open source projects need a source of revenue. Ours comes from the paid cloud offering for workspaces with multiple users (free during the beta) and for custom workspace slugs. There's no obligation to use it, and you can self-host the software on your own infrastructure free of charge."
msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni progetti open source necessitano di una fonte di entrate. La nostra proviene dall'offerta cloud a pagamento per workspace con più utenti (gratuita durante la beta) e per slug di workspace personalizzati. Non c'è alcun obbligo di utilizzarla, e puoi ospitare autonomamente il software sulla tua infrastruttura gratuitamente."
#: src/views/home/components/Pricing.tsx:32
#: src/views/home/components/Pricing.tsx:32
msgid "Free"
msgstr "Gratuito"
@@ -650,14 +554,6 @@ msgstr "Gratuito"
msgid "Free, forever"
msgstr "Gratuito, per sempre"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Tempo pieno"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Divertimento"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -674,7 +570,7 @@ msgstr "Inizia ora"
msgid "Get started by creating a new board"
msgstr "Inizia creando una nuova bacheca"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Inizia creando una nuova lista"
@@ -703,14 +599,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Vai all'app"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "Alta priorità"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Assunto"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Ospita Kan sulla tua infrastruttura. Ideale per organizzazioni che necessitano di controllo completo sui propri dati."
@@ -743,15 +631,11 @@ msgstr "Riconosco che tutti i dati del mio account saranno eliminati permanentem
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "Riconosco che tutti i dati dell'area di lavoro saranno eliminati permanentemente e voglio procedere."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Idee"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Idee per migliorare questa pagina..."
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Importa"
@@ -767,10 +651,6 @@ msgstr "Importazione fallita"
msgid "Import your Trello boards and hit the ground running."
msgstr "Importa le tue bacheche Trello e parti subito."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Importante"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Importazione da Trello"
@@ -779,12 +659,6 @@ msgstr "Importazione da Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importare le tue bacheche Trello in Kan è facile. Puoi seguire la nostra guida passo-passo <0>qui</0>."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "In corso"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Privati"
@@ -793,11 +667,7 @@ msgstr "Privati"
msgid "Integrations"
msgstr "Integrazioni"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Colloquio"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Invita"
@@ -806,10 +676,6 @@ msgstr "Invita"
msgid "Invite member"
msgstr "Invita membro"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban è migliore con un team. Perfetto per piccoli team in crescita che cercano di collaborare."
@@ -823,7 +689,7 @@ msgstr "Kanban reinventato"
msgid "Keep in mind that this action is irreversible."
msgstr "Tieni presente che questa azione è irreversibile."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -833,14 +699,10 @@ msgstr "Etichette"
msgid "Labels & Filters"
msgstr "Etichette & Filtri"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Lingua"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Apprendimento"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Legale"
@@ -857,7 +719,7 @@ msgstr "Chiaro"
msgid "Link copied"
msgstr "Link copiato"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "Lista"
@@ -873,24 +735,12 @@ msgstr "Login | kan.bn"
msgid "Logout"
msgstr "Esci"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "A lungo termine"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Bassa priorità"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "link magico"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Media priorità"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -898,7 +748,7 @@ msgid "Members"
msgstr "Membri"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Membri | {0}"
@@ -914,7 +764,7 @@ msgstr "ha spostato la scheda da <0>{fromList}</0> a<1>{toList}</1>"
msgid "moved the card to another list"
msgstr "ha spostato la scheda in un'altra lista"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Nome"
@@ -923,11 +773,11 @@ msgstr "Nome"
msgid "Need help?"
msgstr "Hai bisogno di aiuto?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "Nuovo"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "Nuova bacheca"
@@ -943,27 +793,15 @@ msgstr "Nuova importazione"
msgid "New label"
msgstr "Nuova etichetta"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Nuova lista"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "Nuovo ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "Nuovo spazio di lavoro"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Newsletter"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Prossimi passi"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "Nessuna bacheca"
@@ -976,23 +814,15 @@ msgstr "Nessuna bacheca trovata"
msgid "No credit card required"
msgstr "Nessuna carta di credito richiesta"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "Nessuna lista"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Offerta"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Inserimento"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Una volta eliminato il tuo account, non si può tornare indietro. Questa azione non può essere annullata."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Una volta eliminata l'area di lavoro, non si può tornare indietro. Questa azione non può essere annullata."
@@ -1008,15 +838,11 @@ msgstr "Organizza e trova le schede rapidamente con potenti strumenti di filtrag
msgid "Own your data"
msgstr "Possiedi i tuoi dati"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Part-time"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Frequenza di pagamento"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "In attesa"
@@ -1025,14 +851,6 @@ msgstr "In attesa"
msgid "per user/month"
msgstr "per utente/mese"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Progetto personale"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Pianificazione"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Inserisci un indirizzo email valido"
@@ -1058,7 +876,7 @@ msgstr "Seleziona un file da caricare."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1067,13 +885,13 @@ msgstr "Seleziona un file da caricare."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Riprova più tardi o contatta l'assistenza clienti."
@@ -1100,7 +918,7 @@ msgstr "Privato"
msgid "Profile image updated"
msgstr "Immagine del profilo aggiornata"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Immagine del profilo"
@@ -1108,35 +926,15 @@ msgstr "Immagine del profilo"
msgid "Public"
msgstr "Pubblico"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Pubblicazione"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Domanda"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "Domande?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Vittoria rapida"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Reclutamento"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "Remoto"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Rimuovi"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Rimuovi membro"
@@ -1152,22 +950,10 @@ msgstr "ha rimosso un membro dalla scheda"
msgid "removed label <0>{label}</0>"
msgstr "ha rimosso l'etichetta <0>{label}</0>"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Ricerca"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Risoluzione"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Risorse"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Revisione"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Revoca"
@@ -1177,7 +963,7 @@ msgstr "Revoca"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Ruolo"
@@ -1193,10 +979,6 @@ msgstr "Salva"
msgid "Save time with reusable board templates."
msgstr "Risparmia tempo con modelli di bacheca riutilizzabili."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Selezione"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Seleziona tutto"
@@ -1221,17 +1003,13 @@ msgstr "si è auto-assegnato la scheda"
msgid "Send"
msgstr "Invia"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Impostazioni"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Impostazioni | {0}"
@@ -1265,14 +1043,6 @@ msgstr "Prezzi semplici"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Gestione delle attività semplice e visuale che funziona. Trascina e rilascia le schede, collabora con il tuo team e ottieni di più."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Social media"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Sviluppo software"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Metti una stella su Github"
@@ -1348,11 +1118,6 @@ msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati a
msgid "This workspace username has already been taken"
msgstr "Questo nome utente dell'area di lavoro è già stato utilizzato"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "Da fare"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Attiva/disattiva menu"
@@ -1361,7 +1126,7 @@ msgstr "Attiva/disattiva menu"
msgid "Track all card changes with detailed activity history."
msgstr "Tieni traccia di tutte le modifiche alle schede con una cronologia dettagliata delle attività."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello disconnesso"
@@ -1369,10 +1134,6 @@ msgstr "Trello disconnesso"
msgid "Trello imports"
msgstr "Importazioni da Trello"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Smistamento"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Impossibile aggiungere il commento"
@@ -1385,7 +1146,7 @@ msgstr "Impossibile creare la scheda"
msgid "Unable to create list"
msgstr "Impossibile creare la lista"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "Impossibile creare lo spazio di lavoro"
@@ -1413,8 +1174,8 @@ msgstr "Impossibile aggiornare l'URL della bacheca"
msgid "Unable to update board visibility"
msgstr "Impossibile aggiornare la visibilità della bacheca"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "Impossibile aggiornare la scheda"
@@ -1427,7 +1188,7 @@ msgid "Unable to update labels"
msgstr "Impossibile aggiornare le etichette"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "Impossibile aggiornare la lista"
@@ -1471,7 +1232,7 @@ msgstr "Liste illimitate"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Aggiorna"
@@ -1495,11 +1256,6 @@ msgstr "ha aggiornato il titolo in <0>{toTitle}</0>"
msgid "Upgrade"
msgstr "Aggiorna"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Urgente"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "L'URL può contenere solo lettere, numeri e trattini"
@@ -1512,23 +1268,15 @@ msgstr "L'URL non può superare i 24 caratteri"
msgid "URL must be at least 3 characters long"
msgstr "L'URL deve contenere almeno 3 caratteri"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Usa template"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "Utente"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Video"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "Visualizza e gestisci le tue chiavi API."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "Visualizza e gestisci la tua fatturazione e abbonamento."
@@ -1572,7 +1320,7 @@ msgstr "Quando Trello fu lanciato nel 2011, stupì tutti con la sua semplicità
msgid "Why make an open source Trello?"
msgstr "Perché creare un Trello open source?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Spazio di lavoro"
@@ -1580,7 +1328,7 @@ msgstr "Spazio di lavoro"
msgid "Workspace deleted"
msgstr "Spazio di lavoro eliminato"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Descrizione dello spazio di lavoro"
@@ -1601,8 +1349,8 @@ msgstr "Descrizione dell'area di lavoro aggiornata"
msgid "Workspace members"
msgstr "Membri del workspace"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Nome dello spazio di lavoro"
@@ -1622,14 +1370,10 @@ msgstr "Nome dello spazio di lavoro aggiornato"
msgid "Workspace slug updated"
msgstr "Slug dell'area di lavoro aggiornato"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "URL dello spazio di lavoro"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Scrittura"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Annuale"
@@ -1674,11 +1418,11 @@ msgstr "Il tuo nome visualizzato è stato aggiornato."
msgid "Your profile image has been updated."
msgstr "La tua immagine del profilo è stata aggiornata."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Il tuo account Trello è stato disconnesso."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Il tuo account Trello è connesso."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", of bekijk onze"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:148
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,6 +36,10 @@ msgstr "{0} labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
#: src/views/home/index.tsx:51
msgid "#1 Hacker News"
msgstr "#1 Hacker News"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 gebruiker"
@@ -49,7 +53,7 @@ msgid "Account deleted"
msgstr "Account verwijderd"
#: src/views/public/board/CardModal.tsx:104
#: src/views/card/index.tsx:255
#: src/views/card/index.tsx:215
msgid "Activity"
msgstr "Activiteit"
@@ -108,11 +112,11 @@ msgstr "Alle systemen operationeel"
msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Heb je al een account? <0><1>Log in</1></0>"
#: src/views/settings/index.tsx:99
#: src/views/settings/index.tsx:77
msgid "An error occurred while disconnecting your Trello account."
msgstr "Er is een fout opgetreden bij het verbreken van de verbinding met je Trello-account."
#: src/views/settings/index.tsx:256
#: src/views/settings/index.tsx:229
msgid "API keys"
msgstr "API-sleutels"
@@ -120,14 +124,6 @@ msgstr "API-sleutels"
msgid "API Reference"
msgstr "API-referentie"
#: src/views/boards/components/TemplateBoards.tsx:62
msgid "Applicants"
msgstr "Sollicitanten"
#: src/views/boards/components/TemplateBoards.tsx:33
msgid "Approval"
msgstr "Goedkeuring"
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
msgid "Are you sure want to remove {entityLabel}?"
msgstr "Weet je zeker dat je {entityLabel} wilt verwijderen?"
@@ -153,44 +149,19 @@ msgstr "Weet je zeker dat je je account wilt verwijderen?"
msgid "assigned <0>{memberName}</0> to the card"
msgstr "heeft <0>{memberName}</0> aan de kaart toegewezen"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
msgstr "Wachten op klant"
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Backlog"
msgstr "Backlog"
#: src/views/boards/components/TemplateBoards.tsx:15
msgid "Basic Kanban"
msgstr "Basis kanban"
#: src/views/settings/index.tsx:195
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:168
msgid "Billing"
msgstr "Facturering"
#: src/views/settings/index.tsx:205
#: src/views/settings/index.tsx:178
msgid "Billing portal"
msgstr "Factureringsportaal"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Blog Post"
msgstr "Blogbericht"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Board"
msgstr "Bord"
#: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters"
msgstr "Bordnaam mag niet langer zijn dan 100 tekens"
#: src/views/boards/components/NewBoardForm.tsx:20
msgid "Board name is required"
msgstr "Bordnaam is verplicht"
#: src/views/board/index.tsx:266
#: src/views/board/index.tsx:265
msgid "Board not found"
msgstr "Bord niet gevonden"
@@ -218,28 +189,16 @@ msgstr "Bordzichtbaarheid"
msgid "Board visibility updated"
msgstr "Zichtbaarheid van bord bijgewerkt"
#: src/views/boards/index.tsx:26
#: src/views/boards/index.tsx:25
#: src/components/SideNavigation.tsx:39
msgid "Boards"
msgstr "Borden"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/boards/index.tsx:22
#: src/views/boards/index.tsx:21
msgid "Boards | {0}"
msgstr "Borden | {0}"
#: src/views/boards/components/TemplateBoards.tsx:29
msgid "Brainstorming"
msgstr "Brainstormen"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Bug"
msgstr "Bug"
#: src/views/boards/components/TemplateBoards.tsx:51
msgid "Bug Report"
msgstr "Bugrapport"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
@@ -250,7 +209,7 @@ msgstr "Bugrapport"
msgid "Cancel"
msgstr "Annuleren"
#: src/views/card/index.tsx:233
#: src/views/card/index.tsx:193
msgid "Card not found"
msgstr "Kaart niet gevonden"
@@ -258,7 +217,7 @@ msgstr "Kaart niet gevonden"
msgid "Card title"
msgstr "Kaarttitel"
#: src/views/settings/index.tsx:187
#: src/views/settings/index.tsx:160
msgid "Change the language of the app."
msgstr "Wijzig de taal van de app."
@@ -276,10 +235,6 @@ msgstr "Filters wissen"
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Klik op de link die we naar {magicLinkRecipient} hebben gestuurd om in te loggen."
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "Code Review"
msgstr "Code review"
#: src/views/home/components/Features.tsx:84
msgid "Collaborate seamlessly with your team."
msgstr "Werk naadloos samen met je team."
@@ -296,10 +251,6 @@ msgstr "Opmerkingen"
msgid "Company"
msgstr "Bedrijf"
#: src/views/boards/components/TemplateBoards.tsx:81
msgid "Complete"
msgstr "Voltooid"
#: src/views/home/components/Pricing.tsx:70
msgid "Complete control and ownership:"
msgstr "Volledige controle en eigendom:"
@@ -308,7 +259,7 @@ msgstr "Volledige controle en eigendom:"
msgid "Confirm URL change"
msgstr "URL-wijziging bevestigen"
#: src/views/settings/index.tsx:232
#: src/views/settings/index.tsx:205
#: src/views/boards/components/ImportBoardsForm.tsx:157
msgid "Connect Trello"
msgstr "Verbind Trello"
@@ -317,7 +268,7 @@ msgstr "Verbind Trello"
msgid "Connect your favorite tools to streamline your workflow."
msgstr "Verbind je favoriete tools om je werkstroom te stroomlijnen."
#: src/views/settings/index.tsx:219
#: src/views/settings/index.tsx:192
msgid "Connect your Trello account to import boards."
msgstr "Verbind je Trello-account om borden te importeren."
@@ -329,10 +280,6 @@ msgstr "Contact"
msgid "Contact us"
msgstr "Neem contact op"
#: src/views/boards/components/TemplateBoards.tsx:27
msgid "Content Creation"
msgstr "Content creatie"
#: src/components/AuthForm.tsx:334
msgid "Continue with "
msgstr "Doorgaan met "
@@ -352,7 +299,7 @@ msgstr "Bepaal wie je borden kan bekijken en bewerken."
msgid "Create another"
msgstr "Maak nog een"
#: src/views/boards/components/NewBoardForm.tsx:128
#: src/views/boards/components/NewBoardForm.tsx:77
msgid "Create board"
msgstr "Maak bord"
@@ -381,12 +328,12 @@ msgstr "Nieuwe sleutel aanmaken"
msgid "Create new label"
msgstr "Maak nieuw label"
#: src/views/board/index.tsx:334
#: src/views/board/index.tsx:327
msgid "Create new list"
msgstr "Maak nieuwe lijst"
#: src/components/WorkspaceMenu.tsx:85
#: src/components/NewWorkspaceForm.tsx:93
#: src/components/NewWorkspaceForm.tsx:91
msgid "Create workspace"
msgstr "Werkruimte maken"
@@ -394,10 +341,6 @@ msgstr "Werkruimte maken"
msgid "created the card"
msgstr "heeft de kaart aangemaakt"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Critical"
msgstr "Kritiek"
#: src/views/home/components/Pricing.tsx:74
msgid "Custom domain"
msgstr "Aangepast domein"
@@ -406,10 +349,6 @@ msgstr "Aangepast domein"
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
msgstr "Aangepaste URL's zijn een premium functie. Je wordt doorgestuurd om je account te upgraden."
#: src/views/boards/components/TemplateBoards.tsx:41
msgid "Customer Support"
msgstr "Klantenservice"
#: src/components/UserMenu.tsx:112
msgid "Dark"
msgstr "Donker"
@@ -420,8 +359,8 @@ msgstr "Donker"
msgid "Delete"
msgstr "Verwijderen"
#: src/views/settings/index.tsx:287
#: src/views/settings/index.tsx:297
#: src/views/settings/index.tsx:260
#: src/views/settings/index.tsx:270
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Account verwijderen"
@@ -442,17 +381,13 @@ msgstr "Reactie verwijderen"
msgid "Delete list"
msgstr "Lijst verwijderen"
#: src/views/settings/index.tsx:269
#: src/views/settings/index.tsx:280
#: src/views/settings/index.tsx:242
#: src/views/settings/index.tsx:253
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Werkruimte verwijderen"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Ontwerp"
#: src/views/settings/index.tsx:247
#: src/views/settings/index.tsx:220
msgid "Disconnect Trello"
msgstr "Trello ontkoppelen"
@@ -460,7 +395,7 @@ msgstr "Trello ontkoppelen"
msgid "Discuss and collaborate on cards."
msgstr "Bespreek en werk samen aan kaarten."
#: src/views/settings/index.tsx:148
#: src/views/settings/index.tsx:123
msgid "Display name"
msgstr "Weergavenaam"
@@ -489,7 +424,6 @@ msgid "Docs"
msgstr "Docs"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Documentation"
msgstr "Documentatie"
@@ -497,13 +431,6 @@ msgstr "Documentatie"
msgid "Don't have an account? <0><1>Sign up</1></0>"
msgstr "Heb je geen account? <0><1>Registreer je</1></0>"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:35
#: src/views/boards/components/TemplateBoards.tsx:48
msgid "Done"
msgstr "Klaar"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
msgid "Edit board URL"
@@ -517,14 +444,6 @@ msgstr "Reactie bewerken"
msgid "Edit label"
msgstr "Label bewerken"
#: src/views/board/components/UpdateBoardSlugForm.tsx:161
msgid "Edit workspace URL"
msgstr "Werkruimte-URL bewerken"
#: src/views/boards/components/TemplateBoards.tsx:31
msgid "Editing"
msgstr "Bewerken"
#: src/components/AuthForm.tsx:336
msgid "email"
msgstr "e-mail"
@@ -533,10 +452,6 @@ msgstr "e-mail"
msgid "Email"
msgstr "E-mail"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Enhancement"
msgstr "Verbetering"
#: src/components/AuthForm.tsx:301
msgid "Enter your email address"
msgstr "Voer je e-mailadres in"
@@ -557,7 +472,7 @@ msgstr "Fout bij verwijderen account"
msgid "Error deleting workspace"
msgstr "Fout bij verwijderen werkruimte"
#: src/views/settings/index.tsx:98
#: src/views/settings/index.tsx:76
msgid "Error disconnecting Trello"
msgstr "Fout bij ontkoppelen van Trello"
@@ -594,10 +509,6 @@ msgstr "Alles in het gratis abonnement, plus:"
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
msgstr "Alles wat je nodig hebt, voor altijd gratis. Onbeperkte borden, onbeperkte lijsten, onbeperkte kaarten. Upgrade wanneer je maar wilt."
#: src/views/boards/components/TemplateBoards.tsx:78
msgid "Execution"
msgstr "Uitvoering"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
msgid "Failed to login with {0}. Please try again."
@@ -608,14 +519,6 @@ msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
msgid "FAQs"
msgstr "Veelgestelde vragen"
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "Feature"
msgstr "Functie"
#: src/views/boards/components/TemplateBoards.tsx:52
msgid "Feature Request"
msgstr "Functieverzoek"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
@@ -642,6 +545,7 @@ msgstr "Vind antwoorden op veelgestelde vragen over het project. Kun je niet vin
msgid "For long-term sustainability, we recognise all good open source projects need a source of revenue. Ours comes from the paid cloud offering for workspaces with multiple users (free during the beta) and for custom workspace slugs. There's no obligation to use it, and you can self-host the software on your own infrastructure free of charge."
msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open source projecten een inkomstenbron nodig hebben. De onze komt van de betaalde cloudoplossing voor werkruimtes met meerdere gebruikers (gratis tijdens de bèta) en voor aangepaste werkruimte-slugs. Je bent niet verplicht om hiervan gebruik te maken en je kunt de software gratis op je eigen infrastructuur hosten."
#: src/views/home/components/Pricing.tsx:32
#: src/views/home/components/Pricing.tsx:32
msgid "Free"
msgstr "Gratis"
@@ -650,14 +554,6 @@ msgstr "Gratis"
msgid "Free, forever"
msgstr "Altijd gratis"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Full-time"
msgstr "Fulltime"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Fun"
msgstr "Leuk"
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
@@ -674,7 +570,7 @@ msgstr "Aan de slag"
msgid "Get started by creating a new board"
msgstr "Begin door een nieuw bord te maken"
#: src/views/board/index.tsx:326
#: src/views/board/index.tsx:319
msgid "Get started by creating a new list"
msgstr "Begin door een nieuwe lijst te maken"
@@ -703,14 +599,6 @@ msgstr "GitHub"
msgid "Go to app"
msgstr "Naar de app"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "High Priority"
msgstr "Hoge prioriteit"
#: src/views/boards/components/TemplateBoards.tsx:67
msgid "Hired"
msgstr "Aangenomen"
#: src/views/home/components/Pricing.tsx:69
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
msgstr "Host Kan op je eigen infrastructuur. Ideaal voor organisaties die volledige controle over hun gegevens nodig hebben."
@@ -743,15 +631,11 @@ msgstr "Ik bevestig dat alle gegevens van mijn account permanent worden verwijde
msgid "I acknowledge that all of the workspace data will be permanently deleted and want to proceed."
msgstr "Ik bevestig dat alle gegevens van de werkruimte permanent worden verwijderd en wil doorgaan."
#: src/views/boards/components/TemplateBoards.tsx:75
msgid "Ideas"
msgstr "Ideeën"
#: src/components/FeedbackButton.tsx:98
msgid "Ideas to improve this page..."
msgstr "Ideeën om deze pagina te verbeteren..."
#: src/views/boards/index.tsx:37
#: src/views/boards/index.tsx:39
msgid "Import"
msgstr "Importeren"
@@ -767,10 +651,6 @@ msgstr "Import mislukt"
msgid "Import your Trello boards and hit the ground running."
msgstr "Importeer je Trello-borden en ga direct aan de slag."
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Important"
msgstr "Belangrijk"
#: src/views/home/components/Footer.tsx:27
msgid "Importing from Trello"
msgstr "Importeren vanuit Trello"
@@ -779,12 +659,6 @@ msgstr "Importeren vanuit Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Het importeren van je Trello-borden naar Kan is eenvoudig. Je kunt onze stap-voor-stap handleiding <0>hier</0> volgen."
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45
msgid "In Progress"
msgstr "In behandeling"
#: src/views/home/components/Pricing.tsx:28
msgid "Individuals"
msgstr "Individuen"
@@ -793,11 +667,7 @@ msgstr "Individuen"
msgid "Integrations"
msgstr "Integraties"
#: src/views/boards/components/TemplateBoards.tsx:64
msgid "Interviewing"
msgstr "Interviewen"
#: src/views/members/index.tsx:168
#: src/views/members/index.tsx:156
msgid "Invite"
msgstr "Uitnodigen"
@@ -806,10 +676,6 @@ msgstr "Uitnodigen"
msgid "Invite member"
msgstr "Lid uitnodigen"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
#: src/views/home/components/Pricing.tsx:51
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
msgstr "Kanban werkt beter met een team. Perfect voor kleine en groeiende teams die willen samenwerken."
@@ -823,7 +689,7 @@ msgstr "Kanban opnieuw uitgevonden"
msgid "Keep in mind that this action is irreversible."
msgstr "Houd er rekening mee dat deze actie onomkeerbaar is."
#: src/views/card/index.tsx:112
#: src/views/card/index.tsx:243
#: src/views/board/components/NewCardForm.tsx:331
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -833,14 +699,10 @@ msgstr "Labels"
msgid "Labels & Filters"
msgstr "Labels & filters"
#: src/views/settings/index.tsx:184
#: src/views/settings/index.tsx:157
msgid "Language"
msgstr "Taal"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Learning"
msgstr "Leren"
#: src/views/home/components/Footer.tsx:130
msgid "Legal"
msgstr "Juridisch"
@@ -857,7 +719,7 @@ msgstr "Licht"
msgid "Link copied"
msgstr "Link gekopieerd"
#: src/views/card/index.tsx:104
#: src/views/card/index.tsx:235
msgid "List"
msgstr "Lijst"
@@ -873,24 +735,12 @@ msgstr "Login | kan.bn"
msgid "Logout"
msgstr "Uitloggen"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Long-term"
msgstr "Lange termijn"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Low Priority"
msgstr "Lage prioriteit"
#: src/components/AuthForm.tsx:337
msgid "magic link"
msgstr "magische link"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Gemiddelde prioriteit"
#: src/views/members/index.tsx:160
#: src/views/card/index.tsx:120
#: src/views/members/index.tsx:148
#: src/views/card/index.tsx:251
#: src/views/board/components/NewCardForm.tsx:290
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:44
@@ -898,7 +748,7 @@ msgid "Members"
msgstr "Leden"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:156
#: src/views/members/index.tsx:144
msgid "Members | {0}"
msgstr "Leden | {0}"
@@ -914,7 +764,7 @@ msgstr "heeft de kaart verplaatst van <0>{fromList}</0> naar<1>{toList}</1>"
msgid "moved the card to another list"
msgstr "heeft de kaart naar een andere lijst verplaatst"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/views/boards/components/NewBoardForm.tsx:63
#: src/components/LabelForm.tsx:134
msgid "Name"
msgstr "Naam"
@@ -923,11 +773,11 @@ msgstr "Naam"
msgid "Need help?"
msgstr "Hulp nodig?"
#: src/views/boards/index.tsx:47
#: src/views/boards/index.tsx:52
msgid "New"
msgstr "Nieuw"
#: src/views/boards/components/NewBoardForm.tsx:85
#: src/views/boards/components/NewBoardForm.tsx:49
msgid "New board"
msgstr "Nieuw bord"
@@ -943,27 +793,15 @@ msgstr "Nieuwe import"
msgid "New label"
msgstr "Nieuw label"
#: src/views/board/index.tsx:303
#: src/views/board/index.tsx:296
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Nieuwe lijst"
#: src/views/boards/components/TemplateBoards.tsx:43
msgid "New Ticket"
msgstr "Nieuw ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:62
msgid "New workspace"
msgstr "Nieuwe werkruimte"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Newsletter"
msgstr "Nieuwsbrief"
#: src/views/boards/components/TemplateBoards.tsx:80
msgid "Next Steps"
msgstr "Volgende stappen"
#: src/views/boards/components/BoardsList.tsx:35
msgid "No boards"
msgstr "Geen borden"
@@ -976,23 +814,15 @@ msgstr "Geen borden gevonden"
msgid "No credit card required"
msgstr "Geen creditcard vereist"
#: src/views/board/index.tsx:323
#: src/views/board/index.tsx:316
msgid "No lists"
msgstr "Geen lijsten"
#: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer"
msgstr "Aanbod"
#: src/views/boards/components/TemplateBoards.tsx:66
msgid "Onboarding"
msgstr "Inwerktraject"
#: src/views/settings/index.tsx:290
#: src/views/settings/index.tsx:263
msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Zodra je je account verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt."
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:245
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Zodra je je werkruimte verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt."
@@ -1008,15 +838,11 @@ msgstr "Organiseer en vind kaarten snel met krachtige filtertools."
msgid "Own your data"
msgstr "Bezit je eigen data"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Part-time"
msgstr "Deeltijd"
#: src/views/home/components/Pricing.tsx:101
msgid "Payment frequency"
msgstr "Betalingsfrequentie"
#: src/views/members/index.tsx:117
#: src/views/members/index.tsx:107
msgid "Pending"
msgstr "In behandeling"
@@ -1025,14 +851,6 @@ msgstr "In behandeling"
msgid "per user/month"
msgstr "per gebruiker/maand"
#: src/views/boards/components/TemplateBoards.tsx:73
msgid "Personal Project"
msgstr "Persoonlijk project"
#: src/views/boards/components/TemplateBoards.tsx:77
msgid "Planning"
msgstr "Planning"
#: src/components/AuthForm.tsx:305
msgid "Please enter a valid email address"
msgstr "Voer een geldig e-mailadres in"
@@ -1058,7 +876,7 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/settings/components/Avatar.tsx:38
#: src/views/settings/components/Avatar.tsx:96
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:158
#: src/views/card/index.tsx:116
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
@@ -1067,13 +885,13 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:62
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:189
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:128
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/NewWorkspaceForm.tsx:39
#: src/components/FeedbackButton.tsx:46
msgid "Please try again later, or contact customer support."
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
@@ -1100,7 +918,7 @@ msgstr "Privé"
msgid "Profile image updated"
msgstr "Profielafbeelding bijgewerkt"
#: src/views/settings/index.tsx:143
#: src/views/settings/index.tsx:118
msgid "Profile picture"
msgstr "Profielfoto"
@@ -1108,35 +926,15 @@ msgstr "Profielfoto"
msgid "Public"
msgstr "Openbaar"
#: src/views/boards/components/TemplateBoards.tsx:34
msgid "Publishing"
msgstr "Publiceren"
#: src/views/boards/components/TemplateBoards.tsx:53
msgid "Question"
msgstr "Vraag"
#: src/views/home/components/Faqs.tsx:147
msgid "Questions?"
msgstr "Vragen?"
#: src/views/boards/components/TemplateBoards.tsx:83
msgid "Quick Win"
msgstr "Snelle winst"
#: src/views/boards/components/TemplateBoards.tsx:60
msgid "Recruitment"
msgstr "Werving"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Remote"
msgstr "Op afstand"
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
msgid "Remove"
msgstr "Verwijderen"
#: src/views/members/index.tsx:131
#: src/views/members/index.tsx:120
msgid "Remove member"
msgstr "Lid verwijderen"
@@ -1152,22 +950,10 @@ msgstr "heeft een lid van de kaart verwijderd"
msgid "removed label <0>{label}</0>"
msgstr "heeft label <0>{label}</0> verwijderd"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
msgstr "Onderzoek"
#: src/views/boards/components/TemplateBoards.tsx:47
msgid "Resolution"
msgstr "Oplossing"
#: src/views/home/components/Footer.tsx:113
msgid "Resources"
msgstr "Bronnen"
#: src/views/boards/components/TemplateBoards.tsx:79
msgid "Review"
msgstr "Beoordeling"
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
msgid "Revoke"
msgstr "Intrekken"
@@ -1177,7 +963,7 @@ msgstr "Intrekken"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:190
#: src/views/members/index.tsx:178
msgid "Role"
msgstr "Rol"
@@ -1193,10 +979,6 @@ msgstr "Opslaan"
msgid "Save time with reusable board templates."
msgstr "Bespaar tijd met herbruikbare bordsjablonen."
#: src/views/boards/components/TemplateBoards.tsx:63
msgid "Screening"
msgstr "Screening"
#: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all"
msgstr "Alles selecteren"
@@ -1221,17 +1003,13 @@ msgstr "heeft de kaart aan zichzelf toegewezen"
msgid "Send"
msgstr "Versturen"
#: src/views/boards/components/TemplateBoards.tsx:69
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:137
#: src/views/settings/index.tsx:112
#: src/components/SideNavigation.tsx:49
msgid "Settings"
msgstr "Instellingen"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:133
#: src/views/settings/index.tsx:108
msgid "Settings | {0}"
msgstr "Instellingen | {0}"
@@ -1265,14 +1043,6 @@ msgstr "Eenvoudige prijzen"
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
msgstr "Eenvoudig, visueel taakbeheer dat gewoon werkt. Sleep kaarten, werk samen met je team en krijg meer gedaan."
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Social Media"
msgstr "Social media"
#: src/views/boards/components/TemplateBoards.tsx:21
msgid "Software Development"
msgstr "Softwareontwikkeling"
#: src/views/home/index.tsx:37
msgid "Star on Github"
msgstr "Star op Github"
@@ -1348,11 +1118,6 @@ msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aa
msgid "This workspace username has already been taken"
msgstr "Deze werkruimtegebruikersnaam is al in gebruik"
#: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22
msgid "To Do"
msgstr "Te doen"
#: src/views/home/components/Header.tsx:73
msgid "Toggle menu"
msgstr "Menu in-/uitschakelen"
@@ -1361,7 +1126,7 @@ msgstr "Menu in-/uitschakelen"
msgid "Track all card changes with detailed activity history."
msgstr "Volg alle kaartwijzigingen met gedetailleerde activiteitengeschiedenis."
#: src/views/settings/index.tsx:91
#: src/views/settings/index.tsx:69
msgid "Trello disconnected"
msgstr "Trello ontkoppeld"
@@ -1369,10 +1134,6 @@ msgstr "Trello ontkoppeld"
msgid "Trello imports"
msgstr "Trello-imports"
#: src/views/boards/components/TemplateBoards.tsx:44
msgid "Triaging"
msgstr "Triage"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Kan geen reactie toevoegen"
@@ -1385,7 +1146,7 @@ msgstr "Kan kaart niet aanmaken"
msgid "Unable to create list"
msgstr "Kan geen lijst maken"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:38
msgid "Unable to create workspace"
msgstr "Kan werkruimte niet aanmaken"
@@ -1413,8 +1174,8 @@ msgstr "Kan board URL niet bijwerken"
msgid "Unable to update board visibility"
msgstr "Kan bordzichtbaarheid niet bijwerken"
#: src/views/card/index.tsx:157
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:115
#: src/views/board/index.tsx:188
msgid "Unable to update card"
msgstr "Kan kaart niet bijwerken"
@@ -1427,7 +1188,7 @@ msgid "Unable to update labels"
msgstr "Kan labels niet bijwerken"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/board/index.tsx:132
msgid "Unable to update list"
msgstr "Kan lijst niet bijwerken"
@@ -1471,7 +1232,7 @@ msgstr "Onbeperkt aantal lijsten"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:173
#: src/views/board/components/UpdateBoardSlugForm.tsx:166
msgid "Update"
msgstr "Bijwerken"
@@ -1495,11 +1256,6 @@ msgstr "titel bijgewerkt naar <0>{toTitle}</0>"
msgid "Upgrade"
msgstr "Upgraden"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
msgstr "Urgent"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL kan alleen letters, cijfers en koppeltekens bevatten"
@@ -1512,23 +1268,15 @@ msgstr "URL mag niet langer zijn dan 24 tekens"
msgid "URL must be at least 3 characters long"
msgstr "URL moet minimaal 3 tekens lang zijn"
#: src/views/boards/components/NewBoardForm.tsx:117
msgid "Use template"
msgstr "Sjabloon gebruiken"
#: src/views/members/index.tsx:184
#: src/views/members/index.tsx:172
msgid "User"
msgstr "Gebruiker"
#: src/views/boards/components/TemplateBoards.tsx:37
msgid "Video"
msgstr "Video"
#: src/views/settings/index.tsx:259
#: src/views/settings/index.tsx:232
msgid "View and manage your API keys."
msgstr "Bekijk en beheer je API-sleutels."
#: src/views/settings/index.tsx:198
#: src/views/settings/index.tsx:171
msgid "View and manage your billing and subscription."
msgstr "Bekijk en beheer je facturering en abonnement."
@@ -1572,7 +1320,7 @@ msgstr "Toen Trello in 2011 werd gelanceerd, blies het iedereen omver met zijn z
msgid "Why make an open source Trello?"
msgstr "Waarom een open source Trello maken?"
#: src/views/board/index.tsx:240
#: src/views/board/index.tsx:239
msgid "Workspace"
msgstr "Werkruimte"
@@ -1580,7 +1328,7 @@ msgstr "Werkruimte"
msgid "Workspace deleted"
msgstr "Werkruimte verwijderd"
#: src/views/settings/index.tsx:174
#: src/views/settings/index.tsx:147
msgid "Workspace description"
msgstr "Werkruimte beschrijving"
@@ -1601,8 +1349,8 @@ msgstr "Werkruimtebeschrijving bijgewerkt"
msgid "Workspace members"
msgstr "Werkruimteleden"
#: src/views/settings/index.tsx:155
#: src/components/NewWorkspaceForm.tsx:80
#: src/views/settings/index.tsx:130
#: src/components/NewWorkspaceForm.tsx:78
msgid "Workspace name"
msgstr "Naam werkruimte"
@@ -1622,14 +1370,10 @@ msgstr "Werkruimtenaam bijgewerkt"
msgid "Workspace slug updated"
msgstr "Werkruimte-slug bijgewerkt"
#: src/views/settings/index.tsx:164
#: src/views/settings/index.tsx:138
msgid "Workspace URL"
msgstr "Werkruimte URL"
#: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing"
msgstr "Schrijven"
#: src/views/home/components/Pricing.tsx:19
msgid "Yearly"
msgstr "Jaarlijks"
@@ -1674,11 +1418,11 @@ msgstr "Je weergavenaam is bijgewerkt."
msgid "Your profile image has been updated."
msgstr "Je profielafbeelding is bijgewerkt."
#: src/views/settings/index.tsx:92
#: src/views/settings/index.tsx:70
msgid "Your Trello account has been disconnected."
msgstr "Je Trello-account is ontkoppeld."
#: src/views/settings/index.tsx:241
#: src/views/settings/index.tsx:214
msgid "Your Trello account is connected."
msgstr "Je Trello-account is verbonden."

File diff suppressed because one or more lines are too long

View File

@@ -1,18 +0,0 @@
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { env } from "next-runtime-env";
export function middleware(request: NextRequest) {
if (request.nextUrl.pathname === "/") {
if (env("NEXT_PUBLIC_KAN_ENV") !== "cloud") {
const loginUrl = new URL("/login", request.url);
return NextResponse.redirect(loginUrl);
}
}
return NextResponse.next();
}
export const config = {
matcher: ["/"],
};

View File

@@ -1,7 +1,6 @@
import "~/styles/globals.css";
import "~/utils/i18n";
import type { Viewport } from "next";
import type { AppType } from "next/app";
import { Plus_Jakarta_Sans } from "next/font/google";
import Script from "next/script";
@@ -27,13 +26,6 @@ export const metadata = {
icons: [{ rel: "icon", url: "/favicon.ico" }],
};
export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
maximumScale: 1,
userScalable: false,
};
const MyApp: AppType = ({ Component, pageProps }) => {
const posthogKey = env("NEXT_PUBLIC_POSTHOG_KEY");

View File

@@ -46,7 +46,6 @@ export default async function handler(
const client = new S3Client({
region: env.S3_REGION ?? "",
endpoint: env.S3_ENDPOINT ?? "",
forcePathStyle: env.S3_FORCE_PATH_STYLE === "true",
credentials: {
accessKeyId: env.S3_ACCESS_KEY_ID ?? "",
secretAccessKey: env.S3_SECRET_ACCESS_KEY ?? "",
@@ -59,7 +58,6 @@ export default async function handler(
new PutObjectCommand({
Bucket: nextRuntimeEnv("NEXT_PUBLIC_AVATAR_BUCKET_NAME") ?? "",
Key: filename,
ACL: "public-read",
}),
);

View File

@@ -1,4 +1,4 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { type NextApiRequest, type NextApiResponse } from "next";
import { openApiDocument } from "@kan/api/openapi";

View File

@@ -1,12 +1,12 @@
import { WorkspaceProvider } from "~/providers/workspace";
import Dashboard from "~/components/Dashboard";
import Popup from "~/components/Popup";
import { WorkspaceProvider } from "~/providers/workspace";
import CardView, { CardRightPanel } from "~/views/card";
import CardView from "~/views/card";
export default function CardPage() {
return (
<WorkspaceProvider>
<Dashboard hasRightPanel rightPanel={<CardRightPanel />}>
<Dashboard>
<CardView />
</Dashboard>
<Popup />

View File

@@ -2,11 +2,10 @@
@tailwind components;
@tailwind utilities;
[contenteditable="true"]:empty:before {
[contenteditable=true]:empty:before {
content: attr(placeholder);
display: block;
color: #707070;
font-size: 0.8rem;
}
.gradient-border::before {
@@ -19,7 +18,7 @@
transparent 110deg,
transparent 360deg
);
content: "";
content: '';
position: absolute;
inset: -50%;
width: 200%;

View File

@@ -1,53 +0,0 @@
import Link from "next/link";
import { env } from "next-runtime-env";
import { HiLink } from "react-icons/hi";
const UpdateBoardSlugButton = ({
handleOnClick,
workspaceSlug,
boardSlug,
isLoading,
}: {
handleOnClick: () => void;
workspaceSlug: string;
boardSlug: string;
isLoading: boolean;
}) => {
if (!isLoading && (!workspaceSlug || !boardSlug)) return <></>;
if (isLoading) {
return (
<div className="hidden h-[36px] w-[225px] animate-pulse rounded-full bg-light-200 dark:bg-dark-100 xl:flex" />
);
}
return (
<button
onClick={handleOnClick}
className="hidden cursor-pointer items-center gap-2 rounded-full border-[1px] bg-light-50 p-1 pl-4 pr-1 text-sm text-light-950 hover:bg-light-100 dark:border-dark-600 dark:bg-dark-50 dark:text-dark-900 dark:hover:bg-dark-100 xl:flex"
>
<div className="flex items-center">
<span>
{env("NEXT_PUBLIC_KAN_ENV") === "cloud"
? "kan.bn"
: env("NEXT_PUBLIC_BASE_URL")}
</span>
<div className="mx-1.5 h-4 w-px rotate-[20deg] bg-gray-300 dark:bg-dark-600"></div>
<span>{workspaceSlug}</span>
<div className="mx-1.5 h-4 w-px rotate-[20deg] bg-gray-300 dark:bg-dark-600"></div>
<span>{boardSlug}</span>
</div>
<Link
href={`${env("NEXT_PUBLIC_BASE_URL")}/${workspaceSlug}/${boardSlug}`}
target="_blank"
rel="noopener noreferrer"
onClick={(e) => e.stopPropagation()}
className="flex h-7 w-7 items-center justify-center rounded-full hover:bg-light-200 dark:hover:bg-dark-200"
>
<HiLink className="h-[13px] w-[13px]" />
</Link>
</button>
);
};
export default UpdateBoardSlugButton;

View File

@@ -135,7 +135,7 @@ export function UpdateBoardSlugForm({
? t`This board URL has already been taken`
: undefined)
}
prefix={`${env("NEXT_PUBLIC_KAN_ENV") === "cloud" ? "kan.bn" : env("NEXT_PUBLIC_BASE_URL")}/${workspaceSlug}/`}
prefix={`${env("NEXT_PUBLIC_BASE_URL")}/${workspaceSlug}/`}
onKeyDown={async (e) => {
if (e.key === "Enter") {
e.preventDefault();
@@ -152,14 +152,7 @@ export function UpdateBoardSlugForm({
/>
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="flex items-center gap-2">
<Button
variant="secondary"
href="/settings?edit=workspace_url"
onClick={closeModal}
>
{t`Edit workspace URL`}
</Button>
<div>
<Button
type="submit"
isLoading={updateBoardSlug.isPending}

View File

@@ -32,7 +32,6 @@ import Filters from "./components/Filters";
import List from "./components/List";
import { NewCardForm } from "./components/NewCardForm";
import { NewListForm } from "./components/NewListForm";
import UpdateBoardSlugButton from "./components/UpdateBoardSlugButton";
import { UpdateBoardSlugForm } from "./components/UpdateBoardSlugForm";
import VisibilityButton from "./components/VisibilityButton";
@@ -241,7 +240,7 @@ export default function BoardPage() {
/>
<div className="relative flex h-full flex-col">
<PatternedBackground />
<div className="z-10 flex w-full flex-col justify-between p-6 md:flex-row md:p-8">
<div className="z-10 flex w-full justify-between p-8">
{isLoading && !boardData && (
<div className="flex space-x-2">
<div className="h-[2.3rem] w-[150px] animate-pulse rounded-[5px] bg-light-200 dark:bg-dark-100" />
@@ -250,7 +249,7 @@ export default function BoardPage() {
{boardData && (
<form
onSubmit={handleSubmit(onSubmit)}
className="order-2 focus-visible:outline-none md:order-1"
className="focus-visible:outline-none"
>
<input
id="name"
@@ -262,18 +261,12 @@ export default function BoardPage() {
</form>
)}
{!boardData && !isLoading && (
<p className="order-2 block p-0 py-0 font-bold leading-[2.3rem] tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem] md:order-1">
<p className="block p-0 py-0 font-bold leading-[2.3rem] tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
{t`Board not found`}
</p>
)}
<div className="order-1 mb-4 flex items-center justify-end space-x-2 md:order-2 md:mb-0">
<UpdateBoardSlugButton
handleOnClick={() => openModal("UPDATE_BOARD_SLUG")}
isLoading={isLoading}
workspaceSlug={workspace.slug ?? ""}
boardSlug={boardData?.slug ?? ""}
/>
<div className="flex items-center space-x-2">
<VisibilityButton
visibility={boardData?.visibility ?? "private"}
boardPublicId={boardId ?? ""}

View File

@@ -81,7 +81,7 @@ const SelectSource = ({ handleNextStep }: { handleNextStep: () => void }) => {
<Listbox.Button className="focus-ring-light-700 block w-full rounded-md border-0 bg-dark-300 bg-white/5 px-4 py-1.5 text-neutral-900 shadow-sm ring-1 ring-inset ring-light-600 focus:ring-2 focus:ring-inset dark:text-dark-1000 dark:ring-dark-700 dark:focus:ring-dark-700 sm:text-sm sm:leading-6">
<span className="flex items-center">
{integrationProviders[field.value]?.icon}
<span className="ml-2 block truncate text-sm">
<span className="ml-2 block truncate">
{integrationProviders[field.value]?.name}
</span>
</span>
@@ -113,7 +113,7 @@ const SelectSource = ({ handleNextStep }: { handleNextStep: () => void }) => {
integrationProviders[integration.provider]
?.icon
}
<span className="ml-2 block truncate text-sm font-normal">
<span className="ml-2 block truncate font-normal">
{
integrationProviders[integration.provider]
?.name
@@ -125,12 +125,12 @@ const SelectSource = ({ handleNextStep }: { handleNextStep: () => void }) => {
) : (
<Listbox.Option
key="trello_placeholder"
className="font-sm relative cursor-default select-none px-1"
className="relative cursor-default select-none px-1"
value="trello"
>
<div className="flex items-center rounded-[5px] p-1 text-sm hover:bg-light-200 dark:hover:bg-dark-400">
<div className="flex items-center rounded-[5px] p-1 hover:bg-light-200 dark:hover:bg-dark-400">
{integrationProviders.trello?.icon}
<span className="ml-2 block truncate text-sm">
<span className="ml-2 block truncate font-normal">
{integrationProviders.trello?.name}
</span>
</div>

View File

@@ -1,59 +1,28 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { t } from "@lingui/core/macro";
import { useEffect, useState } from "react";
import { useEffect } from "react";
import { useForm } from "react-hook-form";
import { HiXMark } from "react-icons/hi2";
import { z } from "zod";
import type { Template } from "./TemplateBoards";
import type { NewBoardInput } from "@kan/api/types";
import Button from "~/components/Button";
import Input from "~/components/Input";
import Toggle from "~/components/Toggle";
import { useModal } from "~/providers/modal";
import { useWorkspace } from "~/providers/workspace";
import { api } from "~/utils/api";
import TemplateBoards, { getTemplates } from "./TemplateBoards";
const schema = z.object({
name: z
.string()
.min(1, { message: t`Board name is required` })
.max(100, { message: t`Board name cannot exceed 100 characters` }),
workspacePublicId: z.string(),
template: z.custom<Template | null>(),
});
interface NewBoardInputWithTemplate {
name: string;
workspacePublicId: string;
template: Template | null;
}
export function NewBoardForm() {
const utils = api.useUtils();
const { closeModal } = useModal();
const { workspace } = useWorkspace();
const [showTemplates, setShowTemplates] = useState(false);
const templates = getTemplates();
const {
register,
handleSubmit,
watch,
setValue,
formState: { errors },
} = useForm<NewBoardInputWithTemplate>({
resolver: zodResolver(schema),
const { register, handleSubmit } = useForm<NewBoardInput>({
defaultValues: {
name: "",
workspacePublicId: workspace.publicId || "",
template: null,
},
});
const currentTemplate = watch("template");
const refetchBoards = () => utils.board.all.refetch();
const createBoard = api.board.create.useMutation({
@@ -63,13 +32,8 @@ export function NewBoardForm() {
},
});
const onSubmit = (data: NewBoardInputWithTemplate) => {
createBoard.mutate({
name: data.name,
workspacePublicId: data.workspacePublicId,
lists: data.template?.lists ?? [],
labels: data.template?.labels ?? [],
});
const onSubmit = (data: NewBoardInput) => {
createBoard.mutate(data);
};
useEffect(() => {
@@ -98,7 +62,6 @@ export function NewBoardForm() {
id="name"
placeholder={t`Name`}
{...register("name", { required: true })}
errorMessage={errors.name?.message}
onKeyDown={async (e) => {
if (e.key === "Enter") {
e.preventDefault();
@@ -107,22 +70,8 @@ export function NewBoardForm() {
}}
/>
</div>
<TemplateBoards
currentBoard={currentTemplate}
setCurrentBoard={(t) => setValue("template", t)}
showTemplates={showTemplates}
/>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Use template`}
isChecked={showTemplates}
onChange={() => {
setShowTemplates(!showTemplates);
if (!showTemplates && !currentTemplate) {
setValue("template", templates[0] ?? null);
}
}}
/>
<div>
<Button type="submit" isLoading={createBoard.isPending}>
{t`Create board`}

View File

@@ -1,191 +0,0 @@
import { t } from "@lingui/core/macro";
import { useEffect, useRef, useState } from "react";
import { HiCheckCircle } from "react-icons/hi2";
export interface Template {
id: string;
name: string;
lists: string[];
labels: string[];
}
export const getTemplates = (): Template[] => [
{
id: "basic",
name: t`Basic Kanban`,
lists: [t`To Do`, t`In Progress`, t`Done`],
labels: [t`High Priority`, t`Medium Priority`, t`Low Priority`],
},
{
id: "software-dev",
name: t`Software Development`,
lists: [t`Backlog`, t`To Do`, t`In Progress`, t`Code Review`, t`Done`],
labels: [t`Bug`, t`Feature`, t`Enhancement`, t`Critical`, t`Documentation`],
},
{
id: "content-creation",
name: t`Content Creation`,
lists: [
t`Brainstorming`,
t`Writing`,
t`Editing`,
t`Design`,
t`Approval`,
t`Publishing`,
t`Done`,
],
labels: [t`Blog Post`, t`Social Media`, t`Video`, t`Newsletter`, t`Urgent`],
},
{
id: "customer-support",
name: t`Customer Support`,
lists: [
t`New Ticket`,
t`Triaging`,
t`In Progress`,
t`Awaiting Customer`,
t`Resolution`,
t`Done`,
],
labels: [
t`Bug Report`,
t`Feature Request`,
t`Question`,
t`Urgent`,
t`Billing`,
],
},
{
id: "recruitment",
name: t`Recruitment`,
lists: [
t`Applicants`,
t`Screening`,
t`Interviewing`,
t`Offer`,
t`Onboarding`,
t`Hired`,
],
labels: [t`Remote`, t`Full-time`, t`Part-time`, t`Senior`, t`Junior`],
},
{
id: "personal-project",
name: t`Personal Project`,
lists: [
t`Ideas`,
t`Research`,
t`Planning`,
t`Execution`,
t`Review`,
t`Next Steps`,
t`Complete`,
],
labels: [t`Important`, t`Quick Win`, t`Long-term`, t`Learning`, t`Fun`],
},
];
export default function TemplateBoards({
currentBoard,
setCurrentBoard,
showTemplates,
}: {
currentBoard: Template | null;
setCurrentBoard: (board: Template | null) => void;
showTemplates: boolean;
}) {
const [showFade, setShowFade] = useState(false);
const [showTopFade, setShowTopFade] = useState(false);
const scrollRef = useRef<HTMLDivElement>(null);
const templates = getTemplates();
const handleScroll = () => {
if (!scrollRef.current) return;
const { scrollTop, scrollHeight, clientHeight } = scrollRef.current;
const isAtBottom = scrollTop + clientHeight >= scrollHeight - 5;
const isAtTop = scrollTop <= 5;
setShowFade(!isAtBottom);
setShowTopFade(!isAtTop);
};
useEffect(() => {
const scrollElement = scrollRef.current;
if (!scrollElement) return;
handleScroll();
scrollElement.addEventListener("scroll", handleScroll);
return () => scrollElement.removeEventListener("scroll", handleScroll);
}, [showTemplates]);
useEffect(() => {
if (showTemplates && currentBoard && scrollRef.current) {
const selectedElement = scrollRef.current.querySelector(
`[data-template-id="${currentBoard.id}"]`,
);
if (selectedElement) {
selectedElement.scrollIntoView({ behavior: "smooth", block: "center" });
}
}
}, [showTemplates, currentBoard]);
const handleBoardSelect = (boardId: string) => {
if (currentBoard?.id === boardId) {
setCurrentBoard(null);
} else {
setCurrentBoard(
templates.find((template) => template.id === boardId) ?? null,
);
}
};
if (!showTemplates) {
return null;
}
return (
<div className="px-5 pt-4">
<div className="relative">
<div
ref={scrollRef}
className="scroll-container -mr-2 flex max-h-[200px] flex-col gap-3 overflow-y-auto pr-2 pt-0.5"
>
{templates.map((template) => (
<label
key={template.id}
data-template-id={template.id}
onClick={() => handleBoardSelect(template.id)}
className={`scroll-container relative flex cursor-pointer rounded-lg border p-3 transition-all hover:bg-light-100 dark:hover:bg-dark-200 ${
currentBoard?.id === template.id
? "border-light-700 bg-light-100 ring-1 ring-inset ring-light-700 dark:border-dark-700 dark:bg-dark-200 dark:ring-dark-700"
: "border-light-600 dark:border-dark-600"
}`}
>
<div className="flex-1">
<h4 className="text-sm font-medium text-gray-900 dark:text-gray-100">
{template.name}
</h4>
<p className="text-xs text-light-950 dark:text-dark-900">
{template.lists.join(", ")}
</p>
</div>
{currentBoard?.id === template.id && (
<div className="absolute right-3 top-3 text-light-1000 dark:text-dark-1000">
<HiCheckCircle className="h-5 w-5" />
</div>
)}
</label>
))}
</div>
{showTopFade && (
<div className="pointer-events-none absolute left-0 right-0 top-0 h-6 bg-gradient-to-b from-white/80 to-transparent dark:from-dark-100/80" />
)}
{showFade && (
<div className="pointer-events-none absolute bottom-0 left-0 right-0 h-6 bg-gradient-to-t from-white/80 to-transparent dark:from-dark-100/80" />
)}
</div>
</div>
);
}

View File

@@ -1,7 +1,6 @@
import { t } from "@lingui/core/macro";
import { HiArrowDownTray, HiOutlinePlusSmall } from "react-icons/hi2";
import Button from "~/components/Button";
import Modal from "~/components/modal";
import { NewWorkspaceForm } from "~/components/NewWorkspaceForm";
import { PageHead } from "~/components/PageHead";
@@ -20,32 +19,38 @@ export default function BoardsPage() {
return (
<>
<PageHead title={t`Boards | ${workspace.name ?? "Workspace"}`} />
<div className="m-auto h-full max-w-[1600px] px-5 py-6 md:px-8 md:py-8">
<div className="mb-8 flex w-full items-center justify-between">
<div className="h-full p-8">
<div className="mb-8 flex w-full justify-between">
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
{t`Boards`}
</h1>
<div className="flex gap-2">
<Button
<div className="flex">
<button
type="button"
variant="secondary"
className="bg-dark-3000 mr-2 flex items-center gap-x-1.5 rounded-md border-[1px] border-light-600 px-3 py-2 text-sm text-neutral-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 dark:border-dark-600 dark:text-dark-1000"
onClick={() => openModal("IMPORT_BOARDS")}
iconLeft={
<HiArrowDownTray aria-hidden="true" className="h-4 w-4" />
}
>
<div className="flex h-5 w-5 items-center">
<HiArrowDownTray
className="-mr-0.5 h-4 w-4"
aria-hidden="true"
/>
</div>
{t`Import`}
</Button>
<Button
</button>
<button
type="button"
variant="primary"
className="flex items-center gap-x-1.5 rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 dark:bg-dark-1000 dark:text-dark-50"
onClick={() => openModal("NEW_BOARD")}
iconLeft={
<HiOutlinePlusSmall aria-hidden="true" className="h-4 w-4" />
}
>
<div className="h-5 w-5 items-center">
<HiOutlinePlusSmall
className="-mr-0.5 h-5 w-5"
aria-hidden="true"
/>
</div>
{t`New`}
</Button>
</button>
</div>
</div>

View File

@@ -145,7 +145,7 @@ const Comment = ({
html={watch("comment")}
disabled={false}
onChange={(e) => setValue("comment", e.target.value)}
className="block w-full max-w-[800px] border-0 bg-transparent py-1.5 text-sm text-light-900 focus-visible:outline-none dark:text-dark-1000 sm:text-sm sm:leading-6"
className="block w-full max-w-[800px] border-0 bg-transparent py-1.5 text-light-900 focus-visible:outline-none dark:text-dark-1000 sm:text-sm sm:leading-6"
/>
<div className="flex justify-end space-x-2">
<Button

View File

@@ -32,18 +32,29 @@ interface FormValues {
description: string;
}
export function CardRightPanel() {
export default function CardPage() {
const router = useRouter();
const utils = api.useUtils();
const { modalContentType, entityId } = useModal();
const { showPopup } = usePopup();
const { workspace } = useWorkspace();
const cardId = Array.isArray(router.query.cardId)
? router.query.cardId[0]
: router.query.cardId;
const { data: card } = api.card.byId.useQuery({
const { data: card, isLoading } = api.card.byId.useQuery({
cardPublicId: cardId ?? "",
});
const refetchCard = async () => {
if (cardId) await utils.card.byId.refetch({ cardPublicId: cardId });
};
const board = card?.list.board;
const boardId = board?.publicId;
const labels = board?.labels;
const activities = card?.activities;
const workspaceMembers = board?.workspace.members;
const selectedLabels = card?.labels;
const selectedMembers = card?.members;
@@ -98,59 +109,6 @@ export function CardRightPanel() {
};
}) ?? [];
return (
<div className="h-full w-[360px] border-l-[1px] border-light-600 bg-light-200 p-8 text-light-900 dark:border-dark-400 dark:bg-dark-100 dark:text-dark-900">
<div className="mb-4 flex w-full flex-row">
<p className="my-2 mb-2 w-[100px] text-sm font-medium">{t`List`}</p>
<ListSelector
cardPublicId={cardId ?? ""}
lists={formattedLists}
isLoading={!card}
/>
</div>
<div className="mb-4 flex w-full flex-row">
<p className="my-2 mb-2 w-[100px] text-sm font-medium">{t`Labels`}</p>
<LabelSelector
cardPublicId={cardId ?? ""}
labels={formattedLabels}
isLoading={!card}
/>
</div>
<div className="flex w-full flex-row">
<p className="my-2 mb-2 w-[100px] text-sm font-medium">{t`Members`}</p>
<MemberSelector
cardPublicId={cardId ?? ""}
members={formattedMembers}
isLoading={!card}
/>
</div>
</div>
);
}
export default function CardPage() {
const router = useRouter();
const utils = api.useUtils();
const { modalContentType, entityId } = useModal();
const { showPopup } = usePopup();
const { workspace } = useWorkspace();
const cardId = Array.isArray(router.query.cardId)
? router.query.cardId[0]
: router.query.cardId;
const { data: card, isLoading } = api.card.byId.useQuery({
cardPublicId: cardId ?? "",
});
const refetchCard = async () => {
if (cardId) await utils.card.byId.refetch({ cardPublicId: cardId });
};
const board = card?.list.board;
const boardId = board?.publicId;
const activities = card?.activities;
const updateCard = api.card.update.useMutation({
onError: () => {
showPopup({
@@ -180,6 +138,8 @@ export default function CardPage() {
});
};
const description = watch("description");
if (!cardId) return <></>;
return (
@@ -189,7 +149,7 @@ export default function CardPage() {
/>
<div className="flex h-full flex-1 flex-row">
<div className="flex h-full w-full flex-col overflow-hidden">
<div className="h-full max-h-[calc(100dvh-3rem)] overflow-y-auto p-6 md:max-h-[calc(100dvh-4rem)] md:p-8">
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto p-8">
<div className="mb-8 flex w-full items-center justify-between">
{!card && isLoading && (
<div className="flex space-x-2">
@@ -236,7 +196,7 @@ export default function CardPage() {
</div>
{card && (
<>
<div className="mb-10 flex w-full max-w-2xl flex-col justify-between">
<div className="mb-10 flex w-full max-w-2xl justify-between">
<form
onSubmit={handleSubmit(onSubmit)}
className="w-full space-y-6"
@@ -270,6 +230,32 @@ export default function CardPage() {
)}
</div>
</div>
<div className="w-[475px] border-l-[1px] border-light-600 bg-light-200 p-8 text-light-900 dark:border-dark-400 dark:bg-dark-100 dark:text-dark-900">
<div className="mb-4 flex w-full">
<p className="my-2 w-[100px] text-sm">{t`List`}</p>
<ListSelector
cardPublicId={cardId}
lists={formattedLists}
isLoading={!card}
/>
</div>
<div className="mb-4 flex w-full">
<p className="my-2 w-[100px] text-sm">{t`Labels`}</p>
<LabelSelector
cardPublicId={cardId}
labels={formattedLabels}
isLoading={!card}
/>
</div>
<div className="flex w-full">
<p className="my-2 w-[100px] text-sm">{t`Members`}</p>
<MemberSelector
cardPublicId={cardId}
members={formattedMembers}
isLoading={!card}
/>
</div>
</div>
<Modal>
{modalContentType === "NEW_LABEL" && (

View File

@@ -40,7 +40,7 @@ export default function HomeView() {
</div>
</div>
{/* <div className="relative overflow-hidden rounded-full bg-gradient-to-b from-light-300 to-light-400 p-[2px] dark:from-dark-300 dark:to-dark-400">
<div className="relative overflow-hidden rounded-full bg-gradient-to-b from-light-300 to-light-400 p-[2px] dark:from-dark-300 dark:to-dark-400">
<div className="relative z-10 rounded-full bg-light-50 dark:bg-dark-50">
<Link
href="https://news.ycombinator.com/item?id=44157177"
@@ -58,7 +58,7 @@ export default function HomeView() {
</div>
</Link>
</div>
</div> */}
</div>
</div>
<p className="mt-2 text-center text-4xl font-bold text-light-1000 dark:text-dark-1000 lg:text-5xl">

View File

@@ -2,8 +2,6 @@ import { t } from "@lingui/core/macro";
import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
import { authClient } from "@kan/auth/client";
import Avatar from "~/components/Avatar";
import Button from "~/components/Button";
import Dropdown from "~/components/Dropdown";
@@ -28,7 +26,6 @@ export default function MembersPage() {
const TableRow = ({
memberPublicId,
memberId,
memberName,
memberEmail,
memberImage,
@@ -38,7 +35,6 @@ export default function MembersPage() {
showSkeleton,
}: {
memberPublicId?: string;
memberId?: string | null | undefined;
memberName?: string | null | undefined;
memberEmail?: string | null | undefined;
memberImage?: string | null | undefined;
@@ -47,19 +43,13 @@ export default function MembersPage() {
isLastRow?: boolean;
showSkeleton?: boolean;
}) => {
const { data: session } = authClient.useSession();
return (
<tr className="rounded-b-lg">
<td
className={twMerge(
"w-full sm:w-[65%]",
isLastRow ? "rounded-bl-lg" : "",
)}
>
<div className="flex items-center p-2 sm:p-4">
<td className={twMerge("w-[65%]", isLastRow ? "rounded-bl-lg" : "")}>
<div className="flex items-center p-4">
<div className="flex-shrink-0">
{showSkeleton ? (
<div className="h-8 w-8 animate-pulse rounded-full bg-light-200 dark:bg-dark-200 sm:h-9 sm:w-9" />
<div className="h-9 w-9 animate-pulse rounded-full bg-light-200 dark:bg-dark-200" />
) : (
<Avatar
name={memberName ?? ""}
@@ -73,7 +63,7 @@ export default function MembersPage() {
<div className="flex items-center">
<p
className={twMerge(
"mr-2 truncate text-xs font-medium text-neutral-900 dark:text-dark-1000 sm:text-sm",
"mr-2 text-sm font-medium text-neutral-900 dark:text-dark-1000",
showSkeleton &&
"md mb-2 h-3 w-[125px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
)}
@@ -83,7 +73,7 @@ export default function MembersPage() {
</div>
<p
className={twMerge(
"truncate text-xs text-dark-900 sm:text-sm",
"truncate text-sm text-dark-900",
showSkeleton &&
"h-3 w-[175px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
)}
@@ -96,15 +86,15 @@ export default function MembersPage() {
</td>
<td
className={twMerge(
"w-auto min-w-[120px] sm:w-[35%] sm:min-w-[150px]",
"w-[35%] min-w-[150px]",
isLastRow && "rounded-br-lg",
)}
>
<div className="flex w-full items-center justify-between px-2 sm:px-3">
<div className="flex flex-col sm:flex-row sm:items-center">
<div className="flex w-full items-center justify-between px-3">
<div>
<span
className={twMerge(
"inline-flex items-center rounded-md bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400 ring-1 ring-inset ring-emerald-500/20 sm:text-[11px]",
"inline-flex items-center rounded-md bg-emerald-500/10 px-1.5 py-0.5 text-[11px] font-medium text-emerald-400 ring-1 ring-inset ring-emerald-500/20",
showSkeleton &&
"h-5 w-[50px] animate-pulse bg-light-200 ring-0 dark:bg-dark-200",
)}
@@ -113,7 +103,7 @@ export default function MembersPage() {
memberRole.charAt(0).toUpperCase() + memberRole.slice(1)}
</span>
{memberStatus === "invited" && (
<span className="mt-1 inline-flex items-center rounded-md bg-gray-500/10 px-1.5 py-0.5 text-[10px] font-medium text-gray-400 ring-1 ring-inset ring-gray-500/20 sm:ml-2 sm:mt-0 sm:text-[11px]">
<span className="ml-2 inline-flex items-center rounded-md bg-gray-500/10 px-1.5 py-0.5 text-[11px] font-medium text-gray-400 ring-1 ring-inset ring-gray-500/20">
{t`Pending`}
</span>
)}
@@ -124,26 +114,24 @@ export default function MembersPage() {
(workspace.role !== "admin" || showSkeleton) && "hidden",
)}
>
{session?.user.id !== memberId && (
<Dropdown
items={[
{
label: t`Remove member`,
action: () =>
openModal(
"REMOVE_MEMBER",
memberPublicId,
memberEmail ?? "",
),
},
]}
>
<HiEllipsisHorizontal
size={20}
className="text-light-900 dark:text-dark-900 sm:size-[25px]"
/>
</Dropdown>
)}
<Dropdown
items={[
{
label: t`Remove member`,
action: () =>
openModal(
"REMOVE_MEMBER",
memberPublicId,
memberEmail ?? "",
),
},
]}
>
<HiEllipsisHorizontal
size={25}
className="text-light-900 dark:text-dark-900"
/>
</Dropdown>
</div>
</div>
</td>
@@ -154,7 +142,7 @@ export default function MembersPage() {
return (
<>
<PageHead title={t`Members | ${workspace.name ?? "Workspace"}`} />
<div className="m-auto h-full max-w-[1600px] p-6 px-5 md:px-28 md:py-12">
<div className="m-auto max-w-[1600px] px-28 py-12">
<div className="mb-8 flex w-full justify-between">
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
{t`Members`}
@@ -171,21 +159,21 @@ export default function MembersPage() {
</div>
<div className="mt-8 flow-root">
<div className="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div className="inline-block min-w-full px-4 py-2 align-middle sm:px-6 lg:px-8">
<div className="-mx-4 -my-2 overflow-x-visible sm:-mx-6 lg:-mx-8">
<div className="inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8">
<div className="h-full shadow ring-1 ring-black ring-opacity-5 sm:rounded-lg">
<table className="min-w-full divide-y divide-light-600 dark:divide-dark-600">
<thead className="rounded-t-lg bg-light-300 dark:bg-dark-200">
<tr>
<th
scope="col"
className="w-full rounded-tl-lg py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-light-900 dark:text-dark-900 sm:w-[65%] sm:pl-6"
className="w-[65%] rounded-tl-lg py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-light-900 dark:text-dark-900 sm:pl-6"
>
{t`User`}
</th>
<th
scope="col"
className="w-auto whitespace-nowrap rounded-tr-lg px-3 py-3.5 text-left text-sm font-semibold text-light-900 dark:text-dark-900 sm:w-[35%]"
className="w-[35%] rounded-tr-lg px-3 py-3.5 text-left text-sm font-semibold text-light-900 dark:text-dark-900"
>
{t`Role`}
</th>
@@ -197,7 +185,6 @@ export default function MembersPage() {
<TableRow
key={member.publicId}
memberPublicId={member.publicId}
memberId={member.user?.id}
memberName={member.user?.name}
memberEmail={member.user?.email ?? member.email}
memberImage={member.user?.image}

View File

@@ -105,15 +105,13 @@ export default function PublicBoardView() {
{data?.name}
</h1>
)}
{data && (
<div className="flex items-center space-x-2">
<Filters
labels={data.labels ?? []}
members={[]}
isLoading={isLoading}
/>
</div>
)}
<div className="flex items-center space-x-2">
<Filters
labels={data?.labels ?? []}
members={[]}
isLoading={isLoading}
/>
</div>
</div>
<div className="scrollbar-w-none scrollbar-track-rounded-[4px] scrollbar-thumb-rounded-[4px] scrollbar-h-[8px] relative flex-1 overflow-y-hidden overflow-x-scroll overscroll-contain scrollbar scrollbar-track-light-200 scrollbar-thumb-light-400 dark:scrollbar-track-dark-100 dark:scrollbar-thumb-dark-300">

View File

@@ -3,8 +3,6 @@ import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { useState } from "react";
import { generateUID } from "@kan/shared/utils";
import { usePopup } from "~/providers/popup";
import { api } from "~/utils/api";
import { getAvatarUrl } from "~/utils/helpers";
@@ -60,7 +58,7 @@ export default function Avatar({
}
const fileExt = file.name.split(".").pop();
const fileName = `${userId}/avatar-${generateUID()}.${fileExt}`;
const fileName = `${userId}/avatar.${fileExt}`;
setUploading(true);

View File

@@ -1,7 +1,6 @@
import { useRouter } from "next/router";
import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { useEffect, useRef } from "react";
import { useEffect } from "react";
import { HiMiniArrowTopRightOnSquare } from "react-icons/hi2";
import Button from "~/components/Button";
@@ -28,9 +27,6 @@ export default function SettingsPage() {
const { workspace } = useWorkspace();
const utils = api.useUtils();
const { showPopup } = usePopup();
const router = useRouter();
const workspaceUrlSectionRef = useRef<HTMLDivElement>(null);
const scrollContainerRef = useRef<HTMLDivElement>(null);
const { data } = api.user.getUser.useQuery();
@@ -63,24 +59,6 @@ export default function SettingsPage() {
};
}, [refetchIntegrations]);
useEffect(() => {
if (
router.query.edit === "workspace_url" &&
workspaceUrlSectionRef.current &&
scrollContainerRef.current
) {
const element = workspaceUrlSectionRef.current;
const container = scrollContainerRef.current;
container.scrollTop = element.offsetTop - 40;
const input = element.querySelector('input[type="text"]');
if (input instanceof HTMLInputElement) {
input.focus();
}
}
}, [router.query.edit]);
const { mutateAsync: disconnectTrello } =
api.integration.disconnect.useMutation({
onSuccess: () => {
@@ -126,12 +104,9 @@ export default function SettingsPage() {
return (
<>
<div className="flex h-full w-full flex-col overflow-hidden">
<div
ref={scrollContainerRef}
className="h-full max-h-[calc(100vdh-3rem)] overflow-y-auto md:max-h-[calc(100vdh-4rem)]"
>
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto">
<PageHead title={t`Settings | ${workspace.name ?? "Workspace"}`} />
<div className="m-auto max-w-[1600px] px-5 py-6 md:px-28 md:py-12">
<div className="px-28 py-12">
<div className="mb-8 flex w-full justify-between">
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
{t`Settings`}
@@ -159,16 +134,14 @@ export default function SettingsPage() {
workspaceName={workspace.name}
/>
<div ref={workspaceUrlSectionRef}>
<h2 className="mb-4 mt-8 text-[14px] text-neutral-900 dark:text-dark-1000">
{t`Workspace URL`}
</h2>
<UpdateWorkspaceUrlForm
workspacePublicId={workspace.publicId}
workspaceUrl={workspace.slug ?? ""}
workspacePlan={workspace.plan ?? "free"}
/>
</div>
<h2 className="mb-4 mt-8 text-[14px] text-neutral-900 dark:text-dark-1000">
{t`Workspace URL`}
</h2>
<UpdateWorkspaceUrlForm
workspacePublicId={workspace.publicId}
workspaceUrl={workspace.slug ?? ""}
workspacePlan={workspace.plan ?? "free"}
/>
<h2 className="mb-4 mt-8 text-[14px] text-neutral-900 dark:text-dark-1000">
{t`Workspace description`}

View File

@@ -36,7 +36,6 @@ services:
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
- S3_REGION=${S3_REGION}
- S3_ENDPOINT=${S3_ENDPOINT}
- S3_FORCE_PATH_STYLE=${S3_FORCE_PATH_STYLE}
- NEXT_PUBLIC_STORAGE_URL=${NEXT_PUBLIC_STORAGE_URL}
- NEXT_PUBLIC_AVATAR_BUCKET_NAME=${NEXT_PUBLIC_AVATAR_BUCKET_NAME}
- NEXT_PUBLIC_STORAGE_DOMAIN=${NEXT_PUBLIC_STORAGE_DOMAIN}

View File

@@ -30,7 +30,6 @@ services:
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
- S3_REGION=${S3_REGION}
- S3_ENDPOINT=${S3_ENDPOINT}
- S3_FORCE_PATH_STYLE=${S3_FORCE_PATH_STYLE}
- NEXT_PUBLIC_STORAGE_URL=${NEXT_PUBLIC_STORAGE_URL}
- NEXT_PUBLIC_AVATAR_BUCKET_NAME=${NEXT_PUBLIC_AVATAR_BUCKET_NAME}
- NEXT_PUBLIC_STORAGE_DOMAIN=${NEXT_PUBLIC_STORAGE_DOMAIN}

View File

@@ -42,7 +42,7 @@
"@kan/stripe": "workspace:^",
"@trpc/server": "catalog:",
"superjson": "2.2.1",
"trpc-to-openapi": "^2.3.2",
"trpc-to-openapi": "^2.1.0",
"zod": "catalog:"
},
"devDependencies": {

View File

@@ -4,10 +4,8 @@ import { z } from "zod";
import * as boardRepo from "@kan/db/repository/board.repo";
import * as cardRepo from "@kan/db/repository/card.repo";
import * as activityRepo from "@kan/db/repository/cardActivity.repo";
import * as labelRepo from "@kan/db/repository/label.repo";
import * as listRepo from "@kan/db/repository/list.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import { colours } from "@kan/shared/constants";
import { generateSlug, generateUID } from "@kan/shared/utils";
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
@@ -151,10 +149,8 @@ export const boardRouter = createTRPCRouter({
})
.input(
z.object({
name: z.string().min(1).max(100),
name: z.string().min(1),
workspacePublicId: z.string().min(12),
lists: z.array(z.string().min(1)),
labels: z.array(z.string().min(1)),
}),
)
.output(z.custom<Awaited<ReturnType<typeof boardRepo.create>>>())
@@ -203,30 +199,6 @@ export const boardRouter = createTRPCRouter({
code: "INTERNAL_SERVER_ERROR",
});
if (input.lists.length) {
const listInputs = input.lists.map((list, index) => ({
publicId: generateUID(),
name: list,
boardId: result.id,
createdBy: userId,
index,
}));
await listRepo.bulkCreate(ctx.db, listInputs);
}
if (input.labels.length) {
const labelInputs = input.labels.map((label, index) => ({
publicId: generateUID(),
name: label,
boardId: result.id,
createdBy: userId,
colourCode: colours[index % colours.length]?.code ?? "#0d9488",
}));
await labelRepo.bulkCreate(ctx.db, labelInputs);
}
return result;
}),
update: protectedProcedure
@@ -380,40 +352,40 @@ export const boardRouter = createTRPCRouter({
return { success: true };
}),
checkSlugAvailability: publicProcedure
.meta({
openapi: {
summary: "Check if a board slug is available",
method: "GET",
path: "/boards/{boardPublicId}/check-slug-availability",
description: "Checks if a board slug is available",
tags: ["Boards"],
protect: true,
},
})
.input(
z.object({
boardSlug: z
.string()
.min(3)
.max(24)
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/),
boardPublicId: z.string().min(12),
checkSlugAvailability: publicProcedure
.meta({
openapi: {
summary: "Check if a board slug is available",
method: "GET",
path: "/boards/{boardPublicId}/check-slug-availability",
description: "Checks if a board slug is available",
tags: ["Boards"],
protect: true,
},
})
.input(
z.object({
boardSlug: z
.string()
.min(3)
.max(24)
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/),
boardPublicId: z.string().min(12),
}),
)
.output(
z.object({
isReserved: z.boolean(),
}),
)
.query(async ({ ctx, input }) => {
const isBoardSlugAvailable = await boardRepo.isBoardSlugAvailable(
ctx.db,
input.boardSlug,
input.boardPublicId,
);
return {
isReserved: !isBoardSlugAvailable,
};
}),
)
.output(
z.object({
isReserved: z.boolean(),
}),
)
.query(async ({ ctx, input }) => {
const isBoardSlugAvailable = await boardRepo.isBoardSlugAvailable(
ctx.db,
input.boardSlug,
input.boardPublicId,
);
return {
isReserved: !isBoardSlugAvailable,
};
}),
});

View File

@@ -55,7 +55,6 @@ export const importRouter = createTRPCRouter({
protect: true,
},
})
.input(z.void())
.output(z.array(z.object({ id: z.string(), name: z.string() })))
.query(async ({ ctx }) => {
const apiKey = apiKeys.trello;

View File

@@ -15,47 +15,22 @@ export const apiKeys = {
};
export const integrationRouter = createTRPCRouter({
providers: protectedProcedure
.meta({
openapi: {
summary: "Get integration providers",
method: "GET",
path: "/integration/providers",
description: "Retrieves all integration providers for the user",
tags: ["Integration"],
protect: true,
},
})
.input(z.void())
.output(
z.array(
z.object({
expiresAt: z.date(),
createdAt: z.date(),
updatedAt: z.date().nullable(),
userId: z.string(),
accessToken: z.string(),
refreshToken: z.string().nullable(),
provider: z.string(),
}),
),
)
.query(async ({ ctx }) => {
const user = ctx.user;
providers: protectedProcedure.query(async ({ ctx }) => {
const user = ctx.user;
if (!user)
throw new TRPCError({
message: "User not authenticated",
code: "UNAUTHORIZED",
});
if (!user)
throw new TRPCError({
message: "User not authenticated",
code: "UNAUTHORIZED",
});
const integrations = await integrationsRepo.getProvidersForUser(
ctx.db,
user.id,
);
const integrations = await integrationsRepo.getProvidersForUser(
ctx.db,
user.id,
);
return integrations;
}),
return integrations;
}),
disconnect: protectedProcedure
.meta({
openapi: {

View File

@@ -8,12 +8,6 @@ import * as labelRepo from "@kan/db/repository/label.repo";
import { createTRPCRouter, protectedProcedure } from "../trpc";
import { assertUserInWorkspace } from "../utils/auth";
const labelSchema = z.object({
publicId: z.string(),
name: z.string(),
colourCode: z.string().nullable(),
});
export const labelRouter = createTRPCRouter({
byPublicId: protectedProcedure
.meta({
@@ -27,7 +21,7 @@ export const labelRouter = createTRPCRouter({
},
})
.input(z.object({ labelPublicId: z.string().min(12) }))
.output(labelSchema)
.output(z.custom<Awaited<ReturnType<typeof labelRepo.getByPublicId>>>())
.query(async ({ ctx, input }) => {
const userId = ctx.user?.id;
@@ -58,11 +52,7 @@ export const labelRouter = createTRPCRouter({
code: "NOT_FOUND",
});
return {
publicId: result.publicId,
name: result.name,
colourCode: result.colourCode,
};
return result;
}),
create: protectedProcedure
.meta({
@@ -82,7 +72,7 @@ export const labelRouter = createTRPCRouter({
colourCode: z.string().length(7),
}),
)
.output(labelSchema)
.output(z.custom<Awaited<ReturnType<typeof labelRepo.create>>>())
.mutation(async ({ ctx, input }) => {
const userId = ctx.user?.id;
@@ -118,11 +108,7 @@ export const labelRouter = createTRPCRouter({
code: "INTERNAL_SERVER_ERROR",
});
return {
publicId: result.publicId,
name: result.name,
colourCode: result.colourCode,
};
return result;
}),
update: protectedProcedure
.meta({
@@ -142,7 +128,7 @@ export const labelRouter = createTRPCRouter({
colourCode: z.string().length(7),
}),
)
.output(labelSchema)
.output(z.custom<Awaited<ReturnType<typeof labelRepo.update>>>())
.mutation(async ({ ctx, input }) => {
const userId = ctx.user?.id;
@@ -167,17 +153,7 @@ export const labelRouter = createTRPCRouter({
const result = await labelRepo.update(ctx.db, input);
if (!result)
throw new TRPCError({
message: `Failed to update label`,
code: "INTERNAL_SERVER_ERROR",
});
return {
publicId: result.publicId,
name: result.name,
colourCode: result.colourCode,
};
return result;
}),
delete: protectedProcedure
.meta({

View File

@@ -1,6 +1,7 @@
import { TRPCError } from "@trpc/server";
import { z } from "zod";
import { authClient } from "@kan/auth/client";
import * as memberRepo from "@kan/db/repository/member.repo";
import * as userRepo from "@kan/db/repository/user.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
@@ -77,22 +78,16 @@ export const memberRouter = createTRPCRouter({
code: "INTERNAL_SERVER_ERROR",
});
const { status } = await ctx.auth.api.signInMagicLink({
const { error } = await authClient.signIn.magicLink({
email: input.email,
callbackURL: `/boards?type=invite&memberPublicId=${invite.publicId}`,
});
if (!status) {
console.error("Failed to send magic link invitation:", {
email: input.email,
callbackURL: `/boards?type=invite&memberPublicId=${invite.publicId}`,
});
if (error)
throw new TRPCError({
message: `Failed to send magic link invitation to user with email ${input.email}.`,
message: `Failed to send magic link to user with email ${input.email}`,
code: "INTERNAL_SERVER_ERROR",
});
}
return invite;
}),

View File

@@ -20,73 +20,58 @@ export interface User {
stripeCustomerId?: string | null | undefined;
}
const createAuthWithHeaders = (
auth: ReturnType<typeof initAuth>,
headers: Headers,
) => {
return {
api: {
getSession: () => auth.api.getSession({ headers }),
signInMagicLink: (input: { email: string; callbackURL: string }) =>
auth.api.signInMagicLink({
headers,
body: { email: input.email, callbackURL: input.callbackURL },
}),
},
};
};
interface CreateContextOptions {
user: User | null | undefined;
db: dbClient;
auth: ReturnType<typeof createAuthWithHeaders>;
}
export const createInnerTRPCContext = (opts: CreateContextOptions) => {
return {
user: opts.user,
db: opts.db,
auth: opts.auth,
};
};
export const createTRPCContext = async ({ req }: CreateNextContextOptions) => {
const db = createDrizzleClient();
const baseAuth = initAuth(db);
const headers = new Headers(req.headers as Record<string, string>);
const auth = createAuthWithHeaders(baseAuth, headers);
const auth = initAuth(db);
const session = await auth.api.getSession();
const session = await auth.api.getSession({
// @ts-expect-error
headers: new Headers(req.headers),
});
return createInnerTRPCContext({ db, user: session?.user, auth });
return createInnerTRPCContext({ db, user: session?.user });
};
export const createNextApiContext = async (req: NextApiRequest) => {
const db = createDrizzleClient();
const baseAuth = initAuth(db);
const headers = new Headers(req.headers as Record<string, string>);
const auth = createAuthWithHeaders(baseAuth, headers);
const auth = initAuth(db);
const session = await auth.api.getSession();
const session = await auth.api.getSession({
// @ts-expect-error
headers: new Headers(req.headers),
});
return createInnerTRPCContext({ db, user: session?.user, auth });
return createInnerTRPCContext({ db, user: session?.user });
};
export const createRESTContext = async ({ req }: CreateNextContextOptions) => {
const db = createDrizzleClient();
const baseAuth = initAuth(db);
const headers = new Headers(req.headers as Record<string, string>);
const auth = createAuthWithHeaders(baseAuth, headers);
const auth = initAuth(db);
let session;
try {
session = await auth.api.getSession();
session = await auth.api.getSession({
// @ts-expect-error
headers: new Headers(req.headers),
});
} catch (error) {
console.error("Error getting session, ", error);
throw error;
}
return createInnerTRPCContext({ db, user: session?.user, auth });
return createInnerTRPCContext({ db, user: session?.user });
};
const t = initTRPC

View File

@@ -84,7 +84,7 @@ export const socialProvidersPlugin = () => ({
method: "GET",
},
async (ctx) =>
ctx.json(ctx.context.socialProviders.map((p) => p.id.toLowerCase())),
ctx.json(ctx.context.socialProviders.map((p) => p.name.toLowerCase())),
),
},
});
@@ -181,7 +181,6 @@ export const initAuth = (db: dbClient) => {
const client = new S3Client({
region: env("S3_REGION") ?? "",
endpoint: env("S3_ENDPOINT") ?? "",
forcePathStyle: env("S3_FORCE_PATH_STYLE") === "true",
credentials: {
accessKeyId: env("S3_ACCESS_KEY_ID") ?? "",
secretAccessKey: env("S3_SECRET_ACCESS_KEY") ?? "",

View File

@@ -23,12 +23,7 @@ export const create = async (
createdBy: labelInput.createdBy,
boardId: labelInput.boardId,
})
.returning({
id: labels.id,
publicId: labels.publicId,
name: labels.name,
colourCode: labels.colourCode,
});
.returning({ id: labels.id });
if (labelInput.cardId && result) {
await db.insert(cardsToLabels).values({
@@ -96,7 +91,6 @@ export const update = async (
.where(eq(labels.publicId, labelInput.labelPublicId))
.returning({
id: labels.id,
publicId: labels.publicId,
name: labels.name,
colourCode: labels.colourCode,
});

View File

@@ -68,20 +68,6 @@ export const create = async (
});
};
export const bulkCreate = async (
db: dbClient,
listInput: {
publicId: string;
name: string;
createdBy: string;
boardId: number;
index: number;
importId?: number;
}[],
) => {
return db.insert(lists).values(listInput).returning();
};
export const getByPublicId = async (db: dbClient, listPublicId: string) => {
return db.query.lists.findFirst({
columns: {

156
pnpm-lock.yaml generated
View File

@@ -10,14 +10,14 @@ catalogs:
specifier: ^5.59.15
version: 5.62.7
'@trpc/client':
specifier: ^11.4.3
version: 11.4.3
specifier: ^11.0.0-rc.477
version: 11.0.0-rc.660
'@trpc/react-query':
specifier: ^11.4.3
version: 11.4.3
specifier: ^11.0.0-rc.477
version: 11.0.0-rc.660
'@trpc/server':
specifier: ^11.4.3
version: 11.4.3
specifier: ^11.0.0-rc.477
version: 11.0.0-rc.660
eslint:
specifier: ^9.12.0
version: 9.16.0
@@ -140,16 +140,16 @@ importers:
version: 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)
'@trpc/client':
specifier: 'catalog:'
version: 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)
'@trpc/next':
specifier: ^11.0.0-rc.660
version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.3(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(next@15.3.4(@babel/core@7.24.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@15.3.4(@babel/core@7.24.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
'@trpc/react-query':
specifier: 'catalog:'
version: 11.4.3(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
'@trpc/server':
specifier: 'catalog:'
version: 11.4.3(typescript@5.7.2)
version: 11.0.0-rc.660(typescript@5.7.2)
aws-sdk:
specifier: ^2.1692.0
version: 2.1692.0
@@ -291,13 +291,13 @@ importers:
version: link:../stripe
'@trpc/server':
specifier: 'catalog:'
version: 11.4.3(typescript@5.7.2)
version: 11.0.0-rc.660(typescript@5.7.2)
superjson:
specifier: 2.2.1
version: 2.2.1
trpc-to-openapi:
specifier: ^2.3.2
version: 2.3.2(@trpc/server@11.4.3(typescript@5.7.2))(zod-openapi@4.1.0(zod@3.24.0))(zod@3.24.0)
specifier: ^2.1.0
version: 2.1.0(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(zod-openapi@4.1.0(zod@3.24.0))(zod@3.24.0)
zod:
specifier: 'catalog:'
version: 3.24.0
@@ -2818,11 +2818,11 @@ packages:
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
'@trpc/client@11.4.3':
resolution: {integrity: sha512-i2suttUCfColktXT8bqex5kHW5jpT15nwUh0hGSDiW1keN621kSUQKcLJ095blqQAUgB+lsmgSqSMmB4L9shQQ==}
'@trpc/client@11.0.0-rc.660':
resolution: {integrity: sha512-bNpkZEfyMGKHynYFxdLpY8nJ1n7E3JHKcd4Pe2cagmpkzOEF9tFT3kzNf+eLI8XMG8196lTRR0J0W2/1Q8/cug==}
peerDependencies:
'@trpc/server': 11.4.3
typescript: '>=5.7.2'
'@trpc/server': 11.0.0-rc.660+74625d5e4
typescript: '>=5.6.2'
'@trpc/next@11.0.0-rc.660':
resolution: {integrity: sha512-LQHdiVED8h+CJEAy/X9PDmY3fM8VPdZ+3bVkbmEiP4xoNnSKRTbSbknFyRzG9M2AogfIafF4zAZVwOvCxexyGw==}
@@ -2841,20 +2841,20 @@ packages:
'@trpc/react-query':
optional: true
'@trpc/react-query@11.4.3':
resolution: {integrity: sha512-z+jhAiOBD22NNhHtvF0iFp9hO36YFA7M8AiUu/XtNmMxyLd3Y9/d1SMjMwlTdnGqxEGPo41VEWBrdhDUGtUuHg==}
'@trpc/react-query@11.0.0-rc.660':
resolution: {integrity: sha512-U2BHtYVt+8jt0a8Nrrk5cep8O1UZRxtTCBHtXie9kmJyQWWml43KfHxL5ssnFywaFrDZQz6Ec7kIoOxR/CQNfg==}
peerDependencies:
'@tanstack/react-query': ^5.80.3
'@trpc/client': 11.4.3
'@trpc/server': 11.4.3
'@tanstack/react-query': ^5.59.15
'@trpc/client': 11.0.0-rc.660+74625d5e4
'@trpc/server': 11.0.0-rc.660+74625d5e4
react: '>=18.2.0'
react-dom: '>=18.2.0'
typescript: '>=5.7.2'
typescript: '>=5.6.2'
'@trpc/server@11.4.3':
resolution: {integrity: sha512-wnWq3wiLlMOlYkaIZz+qbuYA5udPTLS4GVVRyFkr6aT83xpdCHyVtURT+u4hSoIrOXQM9OPCNXSXsAujWZDdaw==}
'@trpc/server@11.0.0-rc.660':
resolution: {integrity: sha512-QUapcZCNOpHT7ng9LceGc9ImkboWd0Go9ryrduZpL+p4jdfaC6409AQ3x4XEW6Wu3yBmZAn4CywCsDrDhjDy/w==}
peerDependencies:
typescript: '>=5.7.2'
typescript: '>=5.6.2'
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
@@ -3575,6 +3575,10 @@ packages:
config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
consola@3.2.3:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
constant-case@2.0.0:
resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
@@ -3625,8 +3629,8 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
crossws@0.3.1:
resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==}
css-box-model@1.2.1:
resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==}
@@ -4440,8 +4444,8 @@ packages:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
h3@1.15.1:
resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==}
h3@1.13.0:
resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==}
handlebars@4.7.8:
resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
@@ -4973,6 +4977,9 @@ packages:
lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
lodash.clonedeep@4.5.0:
resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
lodash.get@4.4.2:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
@@ -5333,6 +5340,11 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
hasBin: true
mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
@@ -5485,6 +5497,9 @@ packages:
no-case@2.3.2:
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
node-fetch-native@1.6.4:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
node-fetch@2.7.0:
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
@@ -5498,9 +5513,6 @@ packages:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
node-mock-http@1.0.1:
resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==}
node-plop@0.26.3:
resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
engines: {node: '>=8.9.4'}
@@ -5564,6 +5576,9 @@ packages:
obuf@1.1.2:
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
ohash@1.1.4:
resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==}
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
engines: {node: '>=14.0.0'}
@@ -5582,8 +5597,8 @@ packages:
openapi-types@12.1.3:
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
openapi3-ts@4.4.0:
resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==}
openapi3-ts@4.3.3:
resolution: {integrity: sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==}
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
@@ -6721,12 +6736,12 @@ packages:
trough@2.2.0:
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
trpc-to-openapi@2.3.2:
resolution: {integrity: sha512-uDZou+5a+H77yhiqfzVRBXzTSX8/mQUGeFpr8+VtZmpzUBOmv5XYbyEtWpG7fOdGWZkB99wuuKeWUwNwwOGaXQ==}
trpc-to-openapi@2.1.0:
resolution: {integrity: sha512-LODbI2a9LQamLpEz9hsqeMJBxpNT8KqfyICJhTVe8JBPZM8DvUkoICPlsdHf1KJVteoem/LlbwkD7loKYPWP1Q==}
peerDependencies:
'@trpc/server': ^11.1.0
'@trpc/server': ^11.0.0-rc.648
zod: ^3.23.8
zod-openapi: 4.2.4
zod-openapi: ^4.1.0
ts-api-utils@1.4.3:
resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
@@ -6859,6 +6874,9 @@ packages:
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
unenv@1.10.0:
resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==}
unified@10.1.2:
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
@@ -9691,33 +9709,33 @@ snapshots:
'@tootallnate/quickjs-emscripten@0.23.0': {}
'@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)':
'@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)':
dependencies:
'@trpc/server': 11.4.3(typescript@5.7.2)
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
typescript: 5.7.2
'@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.3(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(next@15.3.4(@babel/core@7.24.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)':
'@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@15.3.4(@babel/core@7.24.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)':
dependencies:
'@trpc/client': 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
'@trpc/server': 11.4.3(typescript@5.7.2)
'@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
next: 15.3.4(@babel/core@7.24.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
typescript: 5.7.2
optionalDependencies:
'@tanstack/react-query': 5.62.7(react@18.3.1)
'@trpc/react-query': 11.4.3(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
'@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)
'@trpc/react-query@11.4.3(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.3(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)':
'@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@18.3.1))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)':
dependencies:
'@tanstack/react-query': 5.62.7(react@18.3.1)
'@trpc/client': 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
'@trpc/server': 11.4.3(typescript@5.7.2)
'@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
typescript: 5.7.2
'@trpc/server@11.4.3(typescript@5.7.2)':
'@trpc/server@11.0.0-rc.660(typescript@5.7.2)':
dependencies:
typescript: 5.7.2
@@ -10597,6 +10615,8 @@ snapshots:
ini: 1.3.8
proto-list: 1.2.4
consola@3.2.3: {}
constant-case@2.0.0:
dependencies:
snake-case: 2.1.0
@@ -10648,7 +10668,7 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
crossws@0.3.5:
crossws@0.3.1:
dependencies:
uncrypto: 0.1.3
@@ -11622,17 +11642,18 @@ snapshots:
section-matter: 1.0.0
strip-bom-string: 1.0.0
h3@1.15.1:
h3@1.13.0:
dependencies:
cookie-es: 1.2.2
crossws: 0.3.5
crossws: 0.3.1
defu: 6.1.4
destr: 2.0.3
iron-webcrypto: 1.2.1
node-mock-http: 1.0.1
ohash: 1.1.4
radix3: 1.1.2
ufo: 1.5.4
uncrypto: 0.1.3
unenv: 1.10.0
handlebars@4.7.8:
dependencies:
@@ -12174,6 +12195,8 @@ snapshots:
lodash.castarray@4.4.0: {}
lodash.clonedeep@4.5.0: {}
lodash.get@4.4.2: {}
lodash.isplainobject@4.0.6: {}
@@ -12915,6 +12938,8 @@ snapshots:
dependencies:
mime-db: 1.52.0
mime@3.0.0: {}
mimic-fn@2.1.0: {}
mini-svg-data-uri@1.4.4: {}
@@ -13051,6 +13076,8 @@ snapshots:
dependencies:
lower-case: 1.1.4
node-fetch-native@1.6.4: {}
node-fetch@2.7.0:
dependencies:
whatwg-url: 5.0.0
@@ -13058,8 +13085,6 @@ snapshots:
node-gyp-build@4.8.4:
optional: true
node-mock-http@1.0.1: {}
node-plop@0.26.3:
dependencies:
'@babel/runtime-corejs3': 7.26.0
@@ -13130,6 +13155,8 @@ snapshots:
obuf@1.1.2: {}
ohash@1.1.4: {}
on-exit-leak-free@2.1.2: {}
once@1.4.0:
@@ -13148,7 +13175,7 @@ snapshots:
openapi-types@12.1.3: {}
openapi3-ts@4.4.0:
openapi3-ts@4.3.3:
dependencies:
yaml: 2.6.1
@@ -14491,12 +14518,13 @@ snapshots:
trough@2.2.0: {}
trpc-to-openapi@2.3.2(@trpc/server@11.4.3(typescript@5.7.2))(zod-openapi@4.1.0(zod@3.24.0))(zod@3.24.0):
trpc-to-openapi@2.1.0(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(zod-openapi@4.1.0(zod@3.24.0))(zod@3.24.0):
dependencies:
'@trpc/server': 11.4.3(typescript@5.7.2)
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
co-body: 6.2.0
h3: 1.15.1
openapi3-ts: 4.4.0
h3: 1.13.0
lodash.clonedeep: 4.5.0
openapi3-ts: 4.3.3
zod: 3.24.0
zod-openapi: 4.1.0(zod@3.24.0)
optionalDependencies:
@@ -14640,6 +14668,14 @@ snapshots:
undici-types@6.19.8: {}
unenv@1.10.0:
dependencies:
consola: 3.2.3
defu: 6.1.4
mime: 3.0.0
node-fetch-native: 1.6.4
pathe: 1.1.2
unified@10.1.2:
dependencies:
'@types/unist': 2.0.11

View File

@@ -5,9 +5,9 @@ packages:
catalog:
"@tanstack/react-query": ^5.59.15
"@trpc/client": ^11.4.3
"@trpc/react-query": ^11.4.3
"@trpc/server": ^11.4.3
"@trpc/client": ^11.0.0-rc.477
"@trpc/react-query": ^11.0.0-rc.477
"@trpc/server": ^11.0.0-rc.477
eslint: ^9.12.0
prettier: ^3.3.3
tailwindcss: ^3.4.14

View File

@@ -106,7 +106,6 @@
"S3_ACCESS_KEY_ID",
"S3_SECRET_ACCESS_KEY",
"S3_ENDPOINT",
"S3_FORCE_PATH_STYLE",
"PORT",
"BETTER_AUTH_SECRET",
"BETTER_AUTH_TRUSTED_ORIGINS"