Compare commits
7 Commits
v0.2.5
...
feat/local
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ac89ba8c0 | ||
|
|
a2f7582999 | ||
|
|
8a93951464 | ||
|
|
bf2db74528 | ||
|
|
f564b52159 | ||
|
|
2ef2493bb5 | ||
|
|
f105e951e6 |
@@ -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
4
.vscode/launch.json
vendored
@@ -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 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
121
CHANGELOG.md
121
CHANGELOG.md
@@ -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
|
||||
@@ -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` |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 />}
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
|
||||
@@ -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>
|
||||
)}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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(),
|
||||
},
|
||||
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
}
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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: ["/"],
|
||||
};
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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",
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { type NextApiRequest, type NextApiResponse } from "next";
|
||||
|
||||
import { openApiDocument } from "@kan/api/openapi";
|
||||
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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%;
|
||||
|
||||
@@ -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;
|
||||
@@ -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}
|
||||
|
||||
@@ -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 ?? ""}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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`}
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" && (
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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`}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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;
|
||||
}),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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") ?? "",
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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
156
pnpm-lock.yaml
generated
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user