Compare commits
5 Commits
chore/chan
...
fix/openap
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb85a44676 | ||
|
|
ec1b5d5acb | ||
|
|
316f148663 | ||
|
|
67050be27f | ||
|
|
ff4448ebf4 |
85
CHANGELOG.md
Normal file
85
CHANGELOG.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# 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.2...HEAD)
|
||||||
|
|
||||||
|
## [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
|
||||||
@@ -27,15 +27,23 @@ checksums:
|
|||||||
An%20error%20occurred%20while%20disconnecting%20your%20Trello%20account./singular: 0aa3973b860c1faf8d9123aebf567e40
|
An%20error%20occurred%20while%20disconnecting%20your%20Trello%20account./singular: 0aa3973b860c1faf8d9123aebf567e40
|
||||||
API%20keys/singular: 07f3620a30e08136f0b072c9af8d1eef
|
API%20keys/singular: 07f3620a30e08136f0b072c9af8d1eef
|
||||||
API%20Reference/singular: 7dcc877064bfdf889ec55dbc9e06a242
|
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%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%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%20card%3F/singular: 131a5a7cccca7be8b32c987d9fa0b0c0
|
||||||
Are%20you%20sure%20you%20want%20to%20delete%20this%20comment%3F/singular: 55fe6f1b52b71b91b2a079cfda3cc7fe
|
Are%20you%20sure%20you%20want%20to%20delete%20this%20comment%3F/singular: 55fe6f1b52b71b91b2a079cfda3cc7fe
|
||||||
Are%20you%20sure%20you%20want%20to%20delete%20your%20account%3F/singular: 428b74d781063224c3e63980e1094ec3
|
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
|
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/singular: b01dbdd049ebbd4a349fa64d6ce65a3b
|
||||||
Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525
|
Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525
|
||||||
|
Blog%20Post/singular: 38e027f212be445dc530e427fc642a20
|
||||||
Board/singular: 101ff39aab674c033c15ab978d0d8bac
|
Board/singular: 101ff39aab674c033c15ab978d0d8bac
|
||||||
|
Board%20name%20cannot%20exceed%20100%20characters/singular: 985c0177744ec56d8dac84f66ec284ca
|
||||||
|
Board%20name%20is%20required/singular: dbd0c6cc945ab19e702fc27f970a023b
|
||||||
Board%20not%20found/singular: 5af9844595fa8aed5985066620435515
|
Board%20not%20found/singular: 5af9844595fa8aed5985066620435515
|
||||||
Board%20URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: ba018946ffdf85e55d701a9c27595b4d
|
Board%20URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: ba018946ffdf85e55d701a9c27595b4d
|
||||||
Board%20URL%20cannot%20exceed%2060%20characters/singular: 8fd3417559a56aa42d297b14d480c382
|
Board%20URL%20cannot%20exceed%2060%20characters/singular: 8fd3417559a56aa42d297b14d480c382
|
||||||
@@ -45,6 +53,9 @@ checksums:
|
|||||||
Board%20visibility%20updated/singular: 8e2f5d622fa9c94481e7c1629a154ecf
|
Board%20visibility%20updated/singular: 8e2f5d622fa9c94481e7c1629a154ecf
|
||||||
Boards/singular: 8fff51c5872e051beb9b718336665e80
|
Boards/singular: 8fff51c5872e051beb9b718336665e80
|
||||||
Boards%20%7C%20%7B0%7D/singular: 70c349df806f4b2d8bd28136a45496f0
|
Boards%20%7C%20%7B0%7D/singular: 70c349df806f4b2d8bd28136a45496f0
|
||||||
|
Brainstorming/singular: 736332f2e4488609e42d2be8547d296e
|
||||||
|
Bug/singular: 4509fffdb5931f8905063c80cf802d71
|
||||||
|
Bug%20Report/singular: e558d1f100e21230c2f495a8913ac5ec
|
||||||
Cancel/singular: 2e2a849c2223911717de8caa2c71bade
|
Cancel/singular: 2e2a849c2223911717de8caa2c71bade
|
||||||
Card%20not%20found/singular: 91509e2f92b0b3b11330b6983139fdbf
|
Card%20not%20found/singular: 91509e2f92b0b3b11330b6983139fdbf
|
||||||
Card%20title/singular: 7c34f59f4005e6cb3a6ff546ea0b96e3
|
Card%20title/singular: 7c34f59f4005e6cb3a6ff546ea0b96e3
|
||||||
@@ -52,10 +63,12 @@ checksums:
|
|||||||
Check%20your%20inbox/singular: e9a430fcd298def74212238df0f680d6
|
Check%20your%20inbox/singular: e9a430fcd298def74212238df0f680d6
|
||||||
Clear%20filters/singular: 8f40ab5af527e4b190da94e7b6221379
|
Clear%20filters/singular: 8f40ab5af527e4b190da94e7b6221379
|
||||||
Click%20on%20the%20link%20we've%20sent%20to%20%7BmagicLinkRecipient%7D%20to%20sign%20in./singular: 210b6ff8727f976182ec3f29ea3c7667
|
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
|
Collaborate%20seamlessly%20with%20your%20team./singular: c5f10e431aaf8b51519bc009a4a4080c
|
||||||
Coming%20soon/singular: ee2b0671e00972773210c5be5a9ccb89
|
Coming%20soon/singular: ee2b0671e00972773210c5be5a9ccb89
|
||||||
Comments/singular: 502237cd1044491c48494aa60967a985
|
Comments/singular: 502237cd1044491c48494aa60967a985
|
||||||
Company/singular: 9e36d11fa82d1bd4563eef2abc4fcfba
|
Company/singular: 9e36d11fa82d1bd4563eef2abc4fcfba
|
||||||
|
Complete/singular: d3e36d723de0cfdea51c5b4171d30b4d
|
||||||
Complete%20control%20and%20ownership%3A/singular: 0d8b682ba873272217425ccfc96aa9cd
|
Complete%20control%20and%20ownership%3A/singular: 0d8b682ba873272217425ccfc96aa9cd
|
||||||
Confirm%20URL%20change/singular: e14b4ce081d1ef6194b37e1814e97b39
|
Confirm%20URL%20change/singular: e14b4ce081d1ef6194b37e1814e97b39
|
||||||
Connect%20Trello/singular: 4440a0b9e387ef7136e3958e7a089213
|
Connect%20Trello/singular: 4440a0b9e387ef7136e3958e7a089213
|
||||||
@@ -63,6 +76,7 @@ checksums:
|
|||||||
Connect%20your%20Trello%20account%20to%20import%20boards./singular: 84a510a7485f43e43f2191bd161171d7
|
Connect%20your%20Trello%20account%20to%20import%20boards./singular: 84a510a7485f43e43f2191bd161171d7
|
||||||
Contact/singular: 9afa39bc47019ee6dec6c74b6273967c
|
Contact/singular: 9afa39bc47019ee6dec6c74b6273967c
|
||||||
Contact%20us/singular: 694a45bc5c96f6f3a27873c1cf5a7707
|
Contact%20us/singular: 694a45bc5c96f6f3a27873c1cf5a7707
|
||||||
|
Content%20Creation/singular: 4e6be22ade0188f408471325fe363575
|
||||||
Continue%20with%20/singular: 8ed03cf7c5e60a6edf3470a4558ff058
|
Continue%20with%20/singular: 8ed03cf7c5e60a6edf3470a4558ff058
|
||||||
Continue%20with%20%7B0%7D/singular: 2eaf6e1da91e208f7c5fb6bf862fe8a6
|
Continue%20with%20%7B0%7D/singular: 2eaf6e1da91e208f7c5fb6bf862fe8a6
|
||||||
Control%20who%20can%20view%20and%20edit%20your%20boards./singular: 2a7e0bec29bac26280de707e2fe8bce5
|
Control%20who%20can%20view%20and%20edit%20your%20boards./singular: 2a7e0bec29bac26280de707e2fe8bce5
|
||||||
@@ -77,8 +91,10 @@ checksums:
|
|||||||
Create%20new%20list/singular: ce61ca8be7b3f6c26c32b684a42a2c26
|
Create%20new%20list/singular: ce61ca8be7b3f6c26c32b684a42a2c26
|
||||||
Create%20workspace/singular: 2e6718e79964ea5ce22d76c2189c77ca
|
Create%20workspace/singular: 2e6718e79964ea5ce22d76c2189c77ca
|
||||||
created%20the%20card/singular: 605475f5aaeb4dbccbf7c4eb9107b43d
|
created%20the%20card/singular: 605475f5aaeb4dbccbf7c4eb9107b43d
|
||||||
|
Critical/singular: eb327cd411b50aee954f8d1d215d003a
|
||||||
Custom%20domain/singular: b09e7a9c187b7163b4a6cfc78042fe42
|
Custom%20domain/singular: b09e7a9c187b7163b4a6cfc78042fe42
|
||||||
Custom%20URLs%20are%20a%20premium%20feature.%20You'll%20be%20directed%20to%20upgrade%20your%20account./singular: b52e4f6122cf739c9551d29beb89b25e
|
Custom%20URLs%20are%20a%20premium%20feature.%20You'll%20be%20directed%20to%20upgrade%20your%20account./singular: b52e4f6122cf739c9551d29beb89b25e
|
||||||
|
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
|
||||||
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
|
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
|
||||||
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
|
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
|
||||||
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
|
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
|
||||||
@@ -87,6 +103,7 @@ checksums:
|
|||||||
Delete%20comment/singular: a3dae0c9ddbc73677aad9812e3dffd69
|
Delete%20comment/singular: a3dae0c9ddbc73677aad9812e3dffd69
|
||||||
Delete%20list/singular: b694f58e4c973d8797a78e746b550b1f
|
Delete%20list/singular: b694f58e4c973d8797a78e746b550b1f
|
||||||
Delete%20workspace/singular: 9017c821209528d9b20d40a488854cdf
|
Delete%20workspace/singular: 9017c821209528d9b20d40a488854cdf
|
||||||
|
Design/singular: 991b75727b6784c1a063a7462b76186d
|
||||||
Disconnect%20Trello/singular: a2dd737d133887d34504728c7e7f05e3
|
Disconnect%20Trello/singular: a2dd737d133887d34504728c7e7f05e3
|
||||||
Discuss%20and%20collaborate%20on%20cards./singular: f2e87816709f602130831ead50bba457
|
Discuss%20and%20collaborate%20on%20cards./singular: f2e87816709f602130831ead50bba457
|
||||||
Display%20name/singular: 725f331065e9d594d720d07b1ae51a90
|
Display%20name/singular: 725f331065e9d594d720d07b1ae51a90
|
||||||
@@ -98,11 +115,14 @@ checksums:
|
|||||||
Docs/singular: 55fea190a0c0fb32acd3dc986cd3cc91
|
Docs/singular: 55fea190a0c0fb32acd3dc986cd3cc91
|
||||||
Documentation/singular: 1563fcb5ddb5037b0709ccd3dd384a92
|
Documentation/singular: 1563fcb5ddb5037b0709ccd3dd384a92
|
||||||
Don't%20have%20an%20account%3F%20%3C0%3E%3C1%3ESign%20up%3C%2F1%3E%3C%2F0%3E/singular: 6ae8282ab8b4a01b4ce87b119e13714b
|
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%20board%20URL/singular: d8276dfc0189f371ec7d80a2047c07aa
|
||||||
Edit%20comment/singular: 7e4b46525fcb6b47b71798e31c46e374
|
Edit%20comment/singular: 7e4b46525fcb6b47b71798e31c46e374
|
||||||
Edit%20label/singular: 0309e0be1512b1e0b0ceb87c69a53d03
|
Edit%20label/singular: 0309e0be1512b1e0b0ceb87c69a53d03
|
||||||
|
Editing/singular: 3449a7988cd69207b7c6929af1f4abf1
|
||||||
email/singular: f31eb214738e037d58e26149797739df
|
email/singular: f31eb214738e037d58e26149797739df
|
||||||
Email/singular: e7f34943a0c2fb849db1839ff6ef5cb5
|
Email/singular: e7f34943a0c2fb849db1839ff6ef5cb5
|
||||||
|
Enhancement/singular: 785fe23c0eef0a5b60b5b2a88151de31
|
||||||
Enter%20your%20email%20address/singular: 9bc008365ebe3e404e241c8ca876f56e
|
Enter%20your%20email%20address/singular: 9bc008365ebe3e404e241c8ca876f56e
|
||||||
Enter%20your%20name/singular: cd95fbdd0533f2c2e8edf9d9bd9aa8df
|
Enter%20your%20name/singular: cd95fbdd0533f2c2e8edf9d9bd9aa8df
|
||||||
Enter%20your%20password/singular: ea4fdd034522dead21bae0c0abb52eae
|
Enter%20your%20password/singular: ea4fdd034522dead21bae0c0abb52eae
|
||||||
@@ -117,8 +137,11 @@ checksums:
|
|||||||
Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71
|
Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71
|
||||||
Everything%20in%20the%20free%20plan%2C%20plus%3A/singular: 62b44c4973b92b806c69a4b15e0256dc
|
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
|
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
|
Failed%20to%20login%20with%20%7B0%7D.%20Please%20try%20again./singular: 669a4b4247a73f53fb9b8b16e42d166f
|
||||||
FAQs/singular: dc36d7992372ccd419b39ef51cf5b16c
|
FAQs/singular: dc36d7992372ccd419b39ef51cf5b16c
|
||||||
|
Feature/singular: 58f5f3f37862b6312a2f20ec1a1fd0e8
|
||||||
|
Feature%20Request/singular: c9de91b9a7020213381977f7d147064f
|
||||||
Features/singular: 341ff316a339b106a178f0b8d362951b
|
Features/singular: 341ff316a339b106a178f0b8d362951b
|
||||||
Feedback/singular: 6fac88806e0c269a30777b283988c61c
|
Feedback/singular: 6fac88806e0c269a30777b283988c61c
|
||||||
Feedback%20sent/singular: 38a490c7ad5f1aa6013dfa879d2c7818
|
Feedback%20sent/singular: 38a490c7ad5f1aa6013dfa879d2c7818
|
||||||
@@ -127,6 +150,8 @@ 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
|
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/singular: 0326365539c004f6088656f692602078
|
||||||
Free%2C%20forever/singular: ae4f2f81e88a50b5f250ef8e8e77e74b
|
Free%2C%20forever/singular: ae4f2f81e88a50b5f250ef8e8e77e74b
|
||||||
|
Full-time/singular: fe6e201f6676ae354111435cf6c76910
|
||||||
|
Fun/singular: 395bdc48e943762b6cde649f4a96771d
|
||||||
Get%20started/singular: 5c783951b0100a168bdd2161ff294833
|
Get%20started/singular: 5c783951b0100a168bdd2161ff294833
|
||||||
Get%20Started/singular: 1d5f030c4ec9c869e647ae060518b948
|
Get%20Started/singular: 1d5f030c4ec9c869e647ae060518b948
|
||||||
Get%20started%20by%20creating%20a%20new%20board/singular: 8fe63ba47e12bbf950f3eb33d1008993
|
Get%20started%20by%20creating%20a%20new%20board/singular: 8fe63ba47e12bbf950f3eb33d1008993
|
||||||
@@ -137,6 +162,8 @@ checksums:
|
|||||||
Getting%20started/singular: 8e5e7bd026b5bec46bbfdce02ab9e0b8
|
Getting%20started/singular: 8e5e7bd026b5bec46bbfdce02ab9e0b8
|
||||||
GitHub/singular: 6e1cf3c00fa6fbe24afcc78ea3b5f3e4
|
GitHub/singular: 6e1cf3c00fa6fbe24afcc78ea3b5f3e4
|
||||||
Go%20to%20app/singular: 896d0441384dcd2bfb3b23d61ff1944d
|
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
|
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%20get%20a%20custom%20URL%3F/singular: 5b28fb95969c0dd19e1b9c9ab8a5fb29
|
||||||
How%20do%20I%20import%20my%20Trello%20boards%3F/singular: 44b30a727150cb93364af0a10346012a
|
How%20do%20I%20import%20my%20Trello%20boards%3F/singular: 44b30a727150cb93364af0a10346012a
|
||||||
@@ -145,23 +172,29 @@ checksums:
|
|||||||
How%20is%20the%20project%20funded%3F/singular: ba7e936f7b1b5faa47df59a0ef990092
|
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%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
|
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
|
Ideas%20to%20improve%20this%20page.../singular: 285decc2cc28403fae043d9b4de97a00
|
||||||
Import/singular: 348b8ab981de5b7f1fca6d7302263bbd
|
Import/singular: 348b8ab981de5b7f1fca6d7302263bbd
|
||||||
Import%20complete/singular: 7e749df6f068b9cdf1055ea38c9a80af
|
Import%20complete/singular: 7e749df6f068b9cdf1055ea38c9a80af
|
||||||
Import%20failed/singular: bcec1f271c82ddffc91ebc22021b03cb
|
Import%20failed/singular: bcec1f271c82ddffc91ebc22021b03cb
|
||||||
Import%20your%20Trello%20boards%20and%20hit%20the%20ground%20running./singular: d66d13649f81342f8b3a4f3b54370c20
|
Import%20your%20Trello%20boards%20and%20hit%20the%20ground%20running./singular: d66d13649f81342f8b3a4f3b54370c20
|
||||||
|
Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b
|
||||||
Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c
|
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
|
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
|
Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec
|
||||||
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
|
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
|
||||||
|
Interviewing/singular: 4ccdcdc784547e925077c3297bddee95
|
||||||
Invite/singular: 181884cea804cbde665f160811ee7ad0
|
Invite/singular: 181884cea804cbde665f160811ee7ad0
|
||||||
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
|
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%20is%20better%20with%20a%20team.%20Perfect%20for%20small%20and%20growing%20teams%20looking%20to%20collaborate./singular: a77bee43046b260797c8936ad23e9223
|
||||||
Kanban%20reimagined/singular: 613ccfdd9f54c66cbf68cfa313498766
|
Kanban%20reimagined/singular: 613ccfdd9f54c66cbf68cfa313498766
|
||||||
Keep%20in%20mind%20that%20this%20action%20is%20irreversible./singular: 79702b2ad3be71cb8b87f1122a60c199
|
Keep%20in%20mind%20that%20this%20action%20is%20irreversible./singular: 79702b2ad3be71cb8b87f1122a60c199
|
||||||
Labels/singular: 6f15627a90002323eac018274b6922d6
|
Labels/singular: 6f15627a90002323eac018274b6922d6
|
||||||
Labels%20%26%20Filters/singular: 8f0bdd6084516f8241cb613178114390
|
Labels%20%26%20Filters/singular: 8f0bdd6084516f8241cb613178114390
|
||||||
Language/singular: 277fd1a41cc237a437cd1d5e4a80463b
|
Language/singular: 277fd1a41cc237a437cd1d5e4a80463b
|
||||||
|
Learning/singular: 90e91da3f870f065f2da9aa9adf53514
|
||||||
Legal/singular: 00d3f08da61a21887009819cf93fb414
|
Legal/singular: 00d3f08da61a21887009819cf93fb414
|
||||||
License/singular: ac2bcac75151e2fcd9eb768cea275a77
|
License/singular: ac2bcac75151e2fcd9eb768cea275a77
|
||||||
Light/singular: bb78ea2c6edd8662676c81a8a13ecb93
|
Light/singular: bb78ea2c6edd8662676c81a8a13ecb93
|
||||||
@@ -170,7 +203,10 @@ checksums:
|
|||||||
List%20name/singular: e925e2e6ccaf0eb4064a888aaea8d3c2
|
List%20name/singular: e925e2e6ccaf0eb4064a888aaea8d3c2
|
||||||
Login%20%7C%20kan.bn/singular: 42a6c8dcd73e0d46e652646dc86871eb
|
Login%20%7C%20kan.bn/singular: 42a6c8dcd73e0d46e652646dc86871eb
|
||||||
Logout/singular: 07948fdf20705e04a7bf68ab197512bf
|
Logout/singular: 07948fdf20705e04a7bf68ab197512bf
|
||||||
|
Long-term/singular: 51cb6f0b112250c5a091ca5f0866904b
|
||||||
|
Low%20Priority/singular: 509b5cb7c1e8a185e0aa6d38c64c90e8
|
||||||
magic%20link/singular: db9d17a5bd98bba8aa0d8068c68579f3
|
magic%20link/singular: db9d17a5bd98bba8aa0d8068c68579f3
|
||||||
|
Medium%20Priority/singular: 1f527cd6d1ed602930bcaa303f503b51
|
||||||
Members/singular: 0932e80cba1e3e0a7f52bb67ff31da32
|
Members/singular: 0932e80cba1e3e0a7f52bb67ff31da32
|
||||||
Members%20%7C%20%7B0%7D/singular: a29e3e9f1076acd178c417d047584e88
|
Members%20%7C%20%7B0%7D/singular: a29e3e9f1076acd178c417d047584e88
|
||||||
Monthly/singular: 818f1192e32bb855597f930d3e78806e
|
Monthly/singular: 818f1192e32bb855597f930d3e78806e
|
||||||
@@ -184,19 +220,27 @@ checksums:
|
|||||||
New%20import/singular: e8fddfe15dd170277df919e5d37efd47
|
New%20import/singular: e8fddfe15dd170277df919e5d37efd47
|
||||||
New%20label/singular: 890040da52a88c16c249a4ac78980f81
|
New%20label/singular: 890040da52a88c16c249a4ac78980f81
|
||||||
New%20list/singular: 146c2e642b11056a0b07ed65733e4178
|
New%20list/singular: 146c2e642b11056a0b07ed65733e4178
|
||||||
|
New%20Ticket/singular: 665ff16ec736cba20e8a1b3beb3baa09
|
||||||
New%20workspace/singular: 8eecf05b4ce29aa880adfed2e11476af
|
New%20workspace/singular: 8eecf05b4ce29aa880adfed2e11476af
|
||||||
|
Newsletter/singular: dcfb9666301924431ac8ae88e5b6f9d7
|
||||||
|
Next%20Steps/singular: 12392fe73ae60b6e5a9d851256b8477e
|
||||||
No%20boards/singular: e4397619e69b105e4317dda4560ff4a6
|
No%20boards/singular: e4397619e69b105e4317dda4560ff4a6
|
||||||
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
|
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
|
||||||
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
|
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
|
||||||
No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6
|
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%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
|
Once%20you%20delete%20your%20workspace%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: c9ce6a516ed1f361653e8f8db3dd5ffd
|
||||||
or/singular: 7b133c38bec0d5ee23cc6bcf9a8de50b
|
or/singular: 7b133c38bec0d5ee23cc6bcf9a8de50b
|
||||||
Organize%20and%20find%20cards%20quickly%20with%20powerful%20filtering%20tools./singular: 1b9898c4b21e9dff413b4f76dc59db56
|
Organize%20and%20find%20cards%20quickly%20with%20powerful%20filtering%20tools./singular: 1b9898c4b21e9dff413b4f76dc59db56
|
||||||
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
|
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
|
||||||
|
Part-time/singular: 213d63da450f35dabb3ab0e35e29feed
|
||||||
Payment%20frequency/singular: 63ded0e4ffb462ca8bd33d38e4691d86
|
Payment%20frequency/singular: 63ded0e4ffb462ca8bd33d38e4691d86
|
||||||
Pending/singular: 030a6f3395d5d4efddd3cc67d6009039
|
Pending/singular: 030a6f3395d5d4efddd3cc67d6009039
|
||||||
per%20user%2Fmonth/singular: 72af182c1ba6df6732640f4d8a78d360
|
per%20user%2Fmonth/singular: 72af182c1ba6df6732640f4d8a78d360
|
||||||
|
Personal%20Project/singular: d7820b1bf4efecc61ed89234567aaa9c
|
||||||
|
Planning/singular: 353f58c75248275fe091740607501610
|
||||||
Please%20enter%20a%20valid%20email%20address/singular: 8de4bc8832b11b380bc4cbcedc16e48b
|
Please%20enter%20a%20valid%20email%20address/singular: 8de4bc8832b11b380bc4cbcedc16e48b
|
||||||
Please%20enter%20a%20valid%20name/singular: f2d741f1b5cae722e35cb5206786f932
|
Please%20enter%20a%20valid%20name/singular: f2d741f1b5cae722e35cb5206786f932
|
||||||
Please%20enter%20a%20valid%20password/singular: 4b32c17e19b79bcbf0bb092c06ba310f
|
Please%20enter%20a%20valid%20password/singular: 4b32c17e19b79bcbf0bb092c06ba310f
|
||||||
@@ -209,25 +253,35 @@ checksums:
|
|||||||
Profile%20image%20updated/singular: 1ba6609b50bc217a36ab659563e78dae
|
Profile%20image%20updated/singular: 1ba6609b50bc217a36ab659563e78dae
|
||||||
Profile%20picture/singular: d9b5e595877ffe2557486a987dd28274
|
Profile%20picture/singular: d9b5e595877ffe2557486a987dd28274
|
||||||
Public/singular: c834f11dab0881632aded3f01d4f8fa9
|
Public/singular: c834f11dab0881632aded3f01d4f8fa9
|
||||||
|
Publishing/singular: d9c8862c0180d9b7bd1272d5dc0d3ac3
|
||||||
|
Question/singular: 0576462ce60d4263d7c482463fcc9547
|
||||||
Questions%3F/singular: c7c3a47f8b230ce7a43f3c090f21d683
|
Questions%3F/singular: c7c3a47f8b230ce7a43f3c090f21d683
|
||||||
|
Quick%20Win/singular: a03ff4c0896f14b87455510bab203511
|
||||||
|
Recruitment/singular: 78084ee4954aa22efe9ad7463d2a0c72
|
||||||
|
Remote/singular: dc3e4280dfe5c455b38ba6c8884999cf
|
||||||
Remove/singular: dba2fe5fe9f83f8078c687f28cba4b52
|
Remove/singular: dba2fe5fe9f83f8078c687f28cba4b52
|
||||||
Remove%20member/singular: 1d77c2ca3768e486fd1fb5df30cb60d9
|
Remove%20member/singular: 1d77c2ca3768e486fd1fb5df30cb60d9
|
||||||
removed%20a%20label%20from%20the%20card/singular: f83ec18850a2a8a3f8242a740a04df06
|
removed%20a%20label%20from%20the%20card/singular: f83ec18850a2a8a3f8242a740a04df06
|
||||||
removed%20a%20member%20from%20the%20card/singular: 0bd7561bb79358fde3d595c3e60a315a
|
removed%20a%20member%20from%20the%20card/singular: 0bd7561bb79358fde3d595c3e60a315a
|
||||||
removed%20label%20%3C0%3E%7Blabel%7D%3C%2F0%3E/singular: 1e7ebc1866136352bdc3cd90afc083f0
|
removed%20label%20%3C0%3E%7Blabel%7D%3C%2F0%3E/singular: 1e7ebc1866136352bdc3cd90afc083f0
|
||||||
|
Research/singular: 3368e9638d1619babd6df9fad592274f
|
||||||
|
Resolution/singular: 6d8bd9e1bd7dae5ae38c93061d32990e
|
||||||
Resources/singular: ec7fb05ed963bb6781a35782b3475502
|
Resources/singular: ec7fb05ed963bb6781a35782b3475502
|
||||||
|
Review/singular: 299f75db25382980b2895622d7712927
|
||||||
Revoke/singular: be57685a85b6dfeaeb6eab4e9560b520
|
Revoke/singular: be57685a85b6dfeaeb6eab4e9560b520
|
||||||
Roadmap/singular: c60f4a1acf30e566861bf130f13b9ae7
|
Roadmap/singular: c60f4a1acf30e566861bf130f13b9ae7
|
||||||
Role/singular: 53743bbb6ca938f5b893552e839d067f
|
Role/singular: 53743bbb6ca938f5b893552e839d067f
|
||||||
Run%20on%20your%20own%20infrastructure/singular: eba804911562b8dbf9d69c3e27f1d708
|
Run%20on%20your%20own%20infrastructure/singular: eba804911562b8dbf9d69c3e27f1d708
|
||||||
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
|
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
|
||||||
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
|
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
|
||||||
|
Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26
|
||||||
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
|
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
|
||||||
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
|
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
|
||||||
Self%20Host/singular: 43fbce2027548b712002e489a20a621a
|
Self%20Host/singular: 43fbce2027548b712002e489a20a621a
|
||||||
Self%20host%20with%20Github/singular: 972155419bcc9f8f9bad9f5ad3538774
|
Self%20host%20with%20Github/singular: 972155419bcc9f8f9bad9f5ad3538774
|
||||||
self-assigned%20the%20card/singular: 24a8d97bcd747643772ebe883be69698
|
self-assigned%20the%20card/singular: 24a8d97bcd747643772ebe883be69698
|
||||||
Send/singular: 76a8497d7b546628b03bb81d5c1ce995
|
Send/singular: 76a8497d7b546628b03bb81d5c1ce995
|
||||||
|
Senior/singular: 3fff865dc00435f82896fc302ea45630
|
||||||
Settings/singular: 8df6777277469c1fd88cc18dde2f1cc3
|
Settings/singular: 8df6777277469c1fd88cc18dde2f1cc3
|
||||||
Settings%20%7C%20%7B0%7D/singular: b8fc73080bc9c8f4f1403b2a69bd1ac5
|
Settings%20%7C%20%7B0%7D/singular: b8fc73080bc9c8f4f1403b2a69bd1ac5
|
||||||
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
|
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
|
||||||
@@ -237,6 +291,8 @@ checksums:
|
|||||||
Sign%20up%20with%20/singular: 103e5d75506e6835b471695d799ff580
|
Sign%20up%20with%20/singular: 103e5d75506e6835b471695d799ff580
|
||||||
Simple%20pricing/singular: 5aa2bece93a71947b268498a58062937
|
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
|
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
|
Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875
|
||||||
Success/singular: c43827becada6750f7a25890905f38b9
|
Success/singular: c43827becada6750f7a25890905f38b9
|
||||||
Support%20the%20development%20of%20the%20project/singular: c63bab228ab2b1be4370c668a99cd278
|
Support%20the%20development%20of%20the%20project/singular: c63bab228ab2b1be4370c668a99cd278
|
||||||
@@ -255,10 +311,12 @@ 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%20this%20workspace./singular: a31141558af793635c1ddd2fa0a33499
|
||||||
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20your%20account./singular: b49224632bd6c3b7f5e462912aeb1081
|
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
|
This%20workspace%20username%20has%20already%20been%20taken/singular: b7eadb89c615874f416d9658d0428c4c
|
||||||
|
To%20Do/singular: d60813ea824f373462471e092d136eed
|
||||||
Toggle%20menu/singular: 29dea3e0b6238874f8c7a27619df8e36
|
Toggle%20menu/singular: 29dea3e0b6238874f8c7a27619df8e36
|
||||||
Track%20all%20card%20changes%20with%20detailed%20activity%20history./singular: 0d3bac559c71ec4b8734f9f212320de5
|
Track%20all%20card%20changes%20with%20detailed%20activity%20history./singular: 0d3bac559c71ec4b8734f9f212320de5
|
||||||
Trello%20disconnected/singular: 54b24a3e6c9a7eedd8c8d1060ab1175d
|
Trello%20disconnected/singular: 54b24a3e6c9a7eedd8c8d1060ab1175d
|
||||||
Trello%20imports/singular: 6827eca403faa8f89891d17827e72af9
|
Trello%20imports/singular: 6827eca403faa8f89891d17827e72af9
|
||||||
|
Triaging/singular: 1d40799fcae53a8a27688fdae2a48dee
|
||||||
Unable%20to%20add%20comment/singular: 49bb435880817434698f31a6069564d6
|
Unable%20to%20add%20comment/singular: 49bb435880817434698f31a6069564d6
|
||||||
Unable%20to%20create%20card/singular: 90112ea12ec6fa42097a6e022ae048a4
|
Unable%20to%20create%20card/singular: 90112ea12ec6fa42097a6e022ae048a4
|
||||||
Unable%20to%20create%20list/singular: 7fbbf8314f8d08a4123c7daef09fed05
|
Unable%20to%20create%20list/singular: 7fbbf8314f8d08a4123c7daef09fed05
|
||||||
@@ -288,10 +346,13 @@ checksums:
|
|||||||
updated%20the%20title/singular: 98cf8f12923ec1a58e767e3a40863b21
|
updated%20the%20title/singular: 98cf8f12923ec1a58e767e3a40863b21
|
||||||
updated%20the%20title%20to%20%3C0%3E%7BtoTitle%7D%3C%2F0%3E/singular: 70cdf681ec2b6ef8e14397bc1f93f945
|
updated%20the%20title%20to%20%3C0%3E%7BtoTitle%7D%3C%2F0%3E/singular: 70cdf681ec2b6ef8e14397bc1f93f945
|
||||||
Upgrade/singular: 63c3b52882e0d779859307d672c178c2
|
Upgrade/singular: 63c3b52882e0d779859307d672c178c2
|
||||||
|
Urgent/singular: e79afcd4398e52e10e7e8243a7eecabe
|
||||||
URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a
|
URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a
|
||||||
URL%20cannot%20exceed%2024%20characters/singular: 395c25732b84ac1f5b63ee310da08e93
|
URL%20cannot%20exceed%2024%20characters/singular: 395c25732b84ac1f5b63ee310da08e93
|
||||||
URL%20must%20be%20at%20least%203%20characters%20long/singular: 1b74ac9ec61fd34b16530ed599009ed1
|
URL%20must%20be%20at%20least%203%20characters%20long/singular: 1b74ac9ec61fd34b16530ed599009ed1
|
||||||
|
Use%20template/singular: 33f0ca0aa8f4b0de99aad267a61a094d
|
||||||
User/singular: 61073457a5c3901084b557d065f876be
|
User/singular: 61073457a5c3901084b557d065f876be
|
||||||
|
Video/singular: 8050c90e4289b105a0780f0fdda6ff66
|
||||||
View%20and%20manage%20your%20API%20keys./singular: 88e23ee79056846dd9ce63ceee690549
|
View%20and%20manage%20your%20API%20keys./singular: 88e23ee79056846dd9ce63ceee690549
|
||||||
View%20and%20manage%20your%20billing%20and%20subscription./singular: 7469502543aac6f02149813546d1cb38
|
View%20and%20manage%20your%20billing%20and%20subscription./singular: 7469502543aac6f02149813546d1cb38
|
||||||
View%20docs/singular: 43ce54f27bb1e3f1880b56e03ab38871
|
View%20docs/singular: 43ce54f27bb1e3f1880b56e03ab38871
|
||||||
@@ -317,6 +378,7 @@ checksums:
|
|||||||
Workspace%20name%20updated/singular: 3206ea410ee1ea4182b27ac0d89f92a1
|
Workspace%20name%20updated/singular: 3206ea410ee1ea4182b27ac0d89f92a1
|
||||||
Workspace%20slug%20updated/singular: 527b92711d38cb35b40741df43aef047
|
Workspace%20slug%20updated/singular: 527b92711d38cb35b40741df43aef047
|
||||||
Workspace%20URL/singular: f4397a838da0f3a44cbd3ebe408ed6c3
|
Workspace%20URL/singular: f4397a838da0f3a44cbd3ebe408ed6c3
|
||||||
|
Writing/singular: 4f5f3ee3320c252921f80c42653c5d49
|
||||||
Yearly/singular: 87f43e016c19cb25860f456549a2f431
|
Yearly/singular: 87f43e016c19cb25860f456549a2f431
|
||||||
Yes%2C%20we%20offer%20an%20forever%20free%20plan%20for%20individual%20use.%20No%20restrictions%2C%20no%20paywalls%2C%20no%20limits./singular: 963cee303d0ff13c1719f4575e774fe3
|
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
|
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
|
||||||
|
|||||||
@@ -1,11 +1,69 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import {
|
||||||
|
TbLayoutSidebarLeftCollapse,
|
||||||
|
TbLayoutSidebarLeftExpand,
|
||||||
|
TbLayoutSidebarRightCollapse,
|
||||||
|
TbLayoutSidebarRightExpand,
|
||||||
|
} from "react-icons/tb";
|
||||||
|
|
||||||
import { api } from "~/utils/api";
|
import { authClient } from "@kan/auth/client";
|
||||||
|
|
||||||
|
import { useClickOutside } from "~/hooks/useClickOutside";
|
||||||
import FeedbackButton from "./FeedbackButton";
|
import FeedbackButton from "./FeedbackButton";
|
||||||
import SideNavigation from "./SideNavigation";
|
import SideNavigation from "./SideNavigation";
|
||||||
|
|
||||||
export default function Dashboard(props: { children: React.ReactNode }) {
|
interface DashboardProps {
|
||||||
const { data, isLoading } = api.user.getUser.useQuery();
|
children: React.ReactNode;
|
||||||
|
rightPanel?: React.ReactNode;
|
||||||
|
hasRightPanel?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Dashboard({
|
||||||
|
children,
|
||||||
|
rightPanel,
|
||||||
|
hasRightPanel = false,
|
||||||
|
}: DashboardProps) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -15,24 +73,91 @@ export default function Dashboard(props: { children: React.ReactNode }) {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
<div className="flex h-screen min-w-[800px] flex-col items-center bg-light-100 dark:bg-dark-50">
|
<div className="h-screen flex-col items-center bg-light-100 dark:bg-dark-50 md:flex md:min-w-[800px]">
|
||||||
<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="m-auto 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="my-auto flex w-full items-center justify-between">
|
<div className="my-auto flex w-full items-center justify-between">
|
||||||
<Link href="/">
|
<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">
|
||||||
<h1 className="text-lg font-bold tracking-tight text-neutral-900 dark:text-dark-1000">
|
<h1 className="text-lg font-bold tracking-tight text-neutral-900 dark:text-dark-1000">
|
||||||
kan.bn
|
kan.bn
|
||||||
</h1>
|
</h1>
|
||||||
</Link>
|
</Link>
|
||||||
<FeedbackButton />
|
|
||||||
|
<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>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex h-full w-full">
|
<div className="flex h-full w-full">
|
||||||
<SideNavigation
|
<div
|
||||||
user={{ email: data?.email, image: data?.image }}
|
ref={sideNavRef}
|
||||||
isLoading={isLoading}
|
className={`fixed left-0 z-50 h-[calc(100vh-3rem)] transform transition-transform duration-300 ease-in-out md:relative md:h-[calc(100vh-4rem)] md:translate-x-0 ${isSideNavOpen ? "translate-x-0" : "-translate-x-full md:translate-x-0"} `}
|
||||||
/>
|
>
|
||||||
<div className="w-full overflow-hidden">{props.children}</div>
|
<SideNavigation
|
||||||
|
user={{ email: session?.user.email, image: session?.user.image }}
|
||||||
|
isLoading={sessionLoading}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="relative flex w-full overflow-hidden">
|
||||||
|
<div className="w-full overflow-hidden">{children}</div>
|
||||||
|
|
||||||
|
{/* Mobile Right Panel */}
|
||||||
|
{hasRightPanel && rightPanel && (
|
||||||
|
<div
|
||||||
|
ref={rightPanelRef}
|
||||||
|
className={`fixed right-0 top-12 z-50 h-[calc(100vh-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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
|
|||||||
<div className="flex w-full flex-col gap-1">
|
<div className="flex w-full flex-col gap-1">
|
||||||
<div className="relative flex">
|
<div className="relative flex">
|
||||||
{prefix && (
|
{prefix && (
|
||||||
<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">
|
<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">
|
||||||
{prefix}
|
{prefix}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -19,10 +19,12 @@ export function NewWorkspaceForm() {
|
|||||||
const { showPopup } = usePopup();
|
const { showPopup } = usePopup();
|
||||||
const { switchWorkspace } = useWorkspace();
|
const { switchWorkspace } = useWorkspace();
|
||||||
const { register, handleSubmit } = useForm<FormValues>();
|
const { register, handleSubmit } = useForm<FormValues>();
|
||||||
|
const utils = api.useUtils();
|
||||||
|
|
||||||
const createWorkspace = api.workspace.create.useMutation({
|
const createWorkspace = api.workspace.create.useMutation({
|
||||||
onSuccess: (values) => {
|
onSuccess: (values) => {
|
||||||
if (values.publicId && values.name) {
|
if (values.publicId && values.name) {
|
||||||
|
utils.workspace.all.invalidate();
|
||||||
switchWorkspace({
|
switchWorkspace({
|
||||||
publicId: values.publicId,
|
publicId: values.publicId,
|
||||||
name: values.name,
|
name: values.name,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export default function SideNavigation({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<nav className="flex w-72 flex-col justify-between border-r border-light-600 px-3 pb-3 pt-5 dark:border-dark-400">
|
<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">
|
||||||
<div>
|
<div>
|
||||||
<WorkspaceMenu />
|
<WorkspaceMenu />
|
||||||
<ul role="list" className="space-y-1">
|
<ul role="list" className="space-y-1">
|
||||||
|
|||||||
59
apps/web/src/hooks/useClickOutside.ts
Normal file
59
apps/web/src/hooks/useClickOutside.ts
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
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,
|
||||||
|
);
|
||||||
|
}
|
||||||
120
apps/web/src/hooks/useEventListener.ts
Normal file
120
apps/web/src/hooks/useEventListener.ts
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
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 };
|
||||||
15
apps/web/src/hooks/useIsomorphicLayoutEffect.ts
Normal file
15
apps/web/src/hooks/useIsomorphicLayoutEffect.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
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;
|
||||||
@@ -124,6 +124,14 @@ msgstr "API-Schlüssel"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "API-Referenz"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "Bist du sicher, dass du {entityLabel} entfernen möchtest?"
|
msgstr "Bist du sicher, dass du {entityLabel} entfernen möchtest?"
|
||||||
@@ -149,7 +157,20 @@ msgstr "Bist du sicher, dass du dein Konto löschen möchtest?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "hat <0>{memberName}</0> der Karte zugewiesen"
|
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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Abrechnung"
|
msgstr "Abrechnung"
|
||||||
|
|
||||||
@@ -157,10 +178,22 @@ msgstr "Abrechnung"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Abrechnungsportal"
|
msgstr "Abrechnungsportal"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Blogbeitrag"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Board nicht gefunden"
|
msgstr "Board nicht gefunden"
|
||||||
@@ -199,6 +232,18 @@ msgstr "Boards"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -235,6 +280,10 @@ msgstr "Filter löschen"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
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."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Arbeite nahtlos mit deinem Team zusammen."
|
msgstr "Arbeite nahtlos mit deinem Team zusammen."
|
||||||
@@ -251,6 +300,10 @@ msgstr "Kommentare"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Unternehmen"
|
msgstr "Unternehmen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Abgeschlossen"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Vollständige Kontrolle und Eigentum:"
|
msgstr "Vollständige Kontrolle und Eigentum:"
|
||||||
@@ -280,6 +333,10 @@ msgstr "Kontakt"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Kontaktiere uns"
|
msgstr "Kontaktiere uns"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Content-Erstellung"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Fortfahren mit "
|
msgstr "Fortfahren mit "
|
||||||
@@ -299,7 +356,7 @@ msgstr "Kontrolliere, wer deine Boards ansehen und bearbeiten kann."
|
|||||||
msgid "Create another"
|
msgid "Create another"
|
||||||
msgstr "Weitere erstellen"
|
msgstr "Weitere erstellen"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Board erstellen"
|
msgstr "Board erstellen"
|
||||||
|
|
||||||
@@ -341,6 +398,10 @@ msgstr "Arbeitsbereich erstellen"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "hat die Karte erstellt"
|
msgstr "hat die Karte erstellt"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Critical"
|
||||||
|
msgstr "Kritisch"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:74
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Benutzerdefinierte Domain"
|
msgstr "Benutzerdefinierte Domain"
|
||||||
@@ -349,6 +410,10 @@ msgstr "Benutzerdefinierte Domain"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Dunkel"
|
msgstr "Dunkel"
|
||||||
@@ -387,6 +452,10 @@ msgstr "Liste löschen"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Workspace löschen"
|
msgstr "Workspace löschen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Design"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Trello trennen"
|
msgstr "Trello trennen"
|
||||||
@@ -424,6 +493,7 @@ msgid "Docs"
|
|||||||
msgstr "Dokumente"
|
msgstr "Dokumente"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Dokumentation"
|
msgstr "Dokumentation"
|
||||||
|
|
||||||
@@ -431,6 +501,13 @@ msgstr "Dokumentation"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||||
msgstr "Du hast noch kein Konto? <0><1>Registrieren</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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -444,6 +521,10 @@ msgstr "Kommentar bearbeiten"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Label bearbeiten"
|
msgstr "Label bearbeiten"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Bearbeitung"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
@@ -452,6 +533,10 @@ msgstr "E-Mail"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Verbesserung"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Gib deine E-Mail-Adresse ein"
|
msgstr "Gib deine E-Mail-Adresse ein"
|
||||||
@@ -509,6 +594,10 @@ msgstr "Alles im kostenlosen Plan, plus:"
|
|||||||
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -519,6 +608,14 @@ msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "Häufig gestellte Fragen"
|
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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -545,7 +642,6 @@ 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."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:32
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Kostenlos"
|
msgstr "Kostenlos"
|
||||||
@@ -554,6 +650,14 @@ msgstr "Kostenlos"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "Kostenlos, für immer"
|
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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -599,6 +703,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "Zur 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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
msgstr "Hosten Sie Kan auf Ihrer eigenen Infrastruktur. Ideal für Organisationen, die vollständige Kontrolle über ihre Daten benötigen."
|
||||||
@@ -631,6 +743,10 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "Ideen zur Verbesserung dieser Seite..."
|
msgstr "Ideen zur Verbesserung dieser Seite..."
|
||||||
@@ -651,6 +767,10 @@ msgstr "Import fehlgeschlagen"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "Importieren Sie Ihre Trello-Boards und starten Sie sofort durch."
|
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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Import von Trello"
|
msgstr "Import von Trello"
|
||||||
@@ -659,6 +779,12 @@ msgstr "Import von Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Einzelpersonen"
|
msgstr "Einzelpersonen"
|
||||||
@@ -667,6 +793,10 @@ msgstr "Einzelpersonen"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Integrationen"
|
msgstr "Integrationen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Vorstellungsgespräch"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Einladen"
|
msgstr "Einladen"
|
||||||
@@ -676,6 +806,10 @@ msgstr "Einladen"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Mitglied einladen"
|
msgstr "Mitglied einladen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban funktioniert besser im Team. Perfekt für kleine und wachsende Teams, die zusammenarbeiten möchten."
|
||||||
@@ -703,6 +837,10 @@ msgstr "Labels & Filter"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprache"
|
msgstr "Sprache"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Lernen"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Rechtliches"
|
msgstr "Rechtliches"
|
||||||
@@ -735,10 +873,22 @@ msgstr "Login | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Abmelden"
|
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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "Magic Link"
|
msgstr "Magic Link"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Mittlere Priorität"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -764,7 +914,7 @@ msgstr "hat die Karte von <0>{fromList}</0> nach <1>{toList}</1> verschoben"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "hat die Karte in eine andere Liste verschoben"
|
msgstr "hat die Karte in eine andere Liste verschoben"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
@@ -777,7 +927,7 @@ msgstr "Brauchst du Hilfe?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Neu"
|
msgstr "Neu"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "Neues Board"
|
msgstr "Neues Board"
|
||||||
|
|
||||||
@@ -798,10 +948,22 @@ msgstr "Neues Label"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Neue Liste"
|
msgstr "Neue Liste"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:43
|
||||||
|
msgid "New Ticket"
|
||||||
|
msgstr "Neues Ticket"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "Neuer 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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "Keine Boards"
|
msgstr "Keine Boards"
|
||||||
@@ -818,6 +980,14 @@ msgstr "Keine Kreditkarte erforderlich"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Keine Listen"
|
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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Sobald Sie Ihr Konto löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||||
@@ -838,6 +1008,10 @@ msgstr "Organisiere und finde Karten schnell mit leistungsstarken Filterwerkzeug
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "Besitze deine Daten"
|
msgstr "Besitze deine Daten"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Part-time"
|
||||||
|
msgstr "Teilzeit"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:101
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Zahlungshäufigkeit"
|
msgstr "Zahlungshäufigkeit"
|
||||||
@@ -851,6 +1025,14 @@ msgstr "Ausstehend"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "pro Benutzer/Monat"
|
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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
|
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
|
||||||
@@ -926,10 +1108,30 @@ msgstr "Profilbild"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Öffentlich"
|
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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "Fragen?"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
@@ -950,10 +1152,22 @@ msgstr "hat ein Mitglied von der Karte entfernt"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "hat Label <0>{label}</0> entfernt"
|
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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Ressourcen"
|
msgstr "Ressourcen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Überprüfung"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Widerrufen"
|
msgstr "Widerrufen"
|
||||||
@@ -979,6 +1193,10 @@ msgstr "Speichern"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "Spare Zeit mit wiederverwendbaren Board-Vorlagen."
|
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
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alle auswählen"
|
msgstr "Alle auswählen"
|
||||||
@@ -1003,6 +1221,10 @@ msgstr "hat sich selbst die Karte zugewiesen"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Senden"
|
msgstr "Senden"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1043,6 +1265,14 @@ msgstr "Einfache Preisgestaltung"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Stern auf Github"
|
msgstr "Stern auf Github"
|
||||||
@@ -1118,6 +1348,11 @@ msgstr "Dies führt zur permanenten Löschung aller mit deinem Konto verbundenen
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "Dieser Workspace-Benutzername ist bereits vergeben"
|
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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Menü umschalten"
|
msgstr "Menü umschalten"
|
||||||
@@ -1134,6 +1369,10 @@ msgstr "Trello getrennt"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Trello-importe"
|
msgstr "Trello-importe"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Priorisierung"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Kommentar konnte nicht hinzugefügt werden"
|
msgstr "Kommentar konnte nicht hinzugefügt werden"
|
||||||
@@ -1256,6 +1495,11 @@ msgstr "hat den Titel zu <0>{toTitle}</0> aktualisiert"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
msgid "URL can only contain letters, numbers, and hyphens"
|
||||||
msgstr "URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
|
msgstr "URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
|
||||||
@@ -1268,10 +1512,18 @@ msgstr "URL darf nicht länger als 24 Zeichen sein"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "URL muss mindestens 3 Zeichen lang sein"
|
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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Benutzer"
|
msgstr "Benutzer"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Video"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "API-Schlüssel anzeigen und verwalten."
|
msgstr "API-Schlüssel anzeigen und verwalten."
|
||||||
@@ -1374,6 +1626,10 @@ msgstr "Workspace-Slug aktualisiert"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "Workspace-URL"
|
msgstr "Workspace-URL"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:30
|
||||||
|
msgid "Writing"
|
||||||
|
msgstr "Schreiben"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:19
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jährlich"
|
msgstr "Jährlich"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -132,6 +132,18 @@ msgstr "API keys"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "Are you sure want to remove {entityLabel}?"
|
msgstr "Are you sure want to remove {entityLabel}?"
|
||||||
@@ -157,7 +169,24 @@ msgstr "Are you sure you want to delete your account?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Billing"
|
msgstr "Billing"
|
||||||
|
|
||||||
@@ -165,10 +194,26 @@ msgstr "Billing"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Billing portal"
|
msgstr "Billing portal"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Blog Post"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Board not found"
|
msgstr "Board not found"
|
||||||
@@ -207,6 +252,22 @@ msgstr "Boards"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -243,6 +304,10 @@ msgstr "Clear filters"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
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."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Collaborate seamlessly with your team."
|
msgstr "Collaborate seamlessly with your team."
|
||||||
@@ -259,6 +324,10 @@ msgstr "Comments"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Company"
|
msgstr "Company"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Complete"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Complete control and ownership:"
|
msgstr "Complete control and ownership:"
|
||||||
@@ -288,6 +357,10 @@ msgstr "Contact"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Contact us"
|
msgstr "Contact us"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Content Creation"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continue with "
|
msgstr "Continue with "
|
||||||
@@ -315,7 +388,7 @@ msgstr "Create another"
|
|||||||
#~ msgid "Create API keys to access the Kan API."
|
#~ msgid "Create API keys to access the Kan API."
|
||||||
#~ msgstr "Create API keys to access the Kan API."
|
#~ msgstr "Create API keys to access the Kan API."
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Create board"
|
msgstr "Create board"
|
||||||
|
|
||||||
@@ -357,6 +430,10 @@ msgstr "Create workspace"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "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
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Custom domain"
|
msgstr "Custom domain"
|
||||||
@@ -365,6 +442,10 @@ msgstr "Custom domain"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Dark"
|
msgstr "Dark"
|
||||||
@@ -403,6 +484,10 @@ msgstr "Delete list"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Delete workspace"
|
msgstr "Delete workspace"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Design"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Disconnect Trello"
|
msgstr "Disconnect Trello"
|
||||||
@@ -440,6 +525,7 @@ msgid "Docs"
|
|||||||
msgstr "Docs"
|
msgstr "Docs"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentation"
|
msgstr "Documentation"
|
||||||
|
|
||||||
@@ -447,6 +533,13 @@ msgstr "Documentation"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||||
msgstr "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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -460,6 +553,10 @@ msgstr "Edit comment"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Edit label"
|
msgstr "Edit label"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Editing"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "email"
|
msgstr "email"
|
||||||
@@ -468,6 +565,10 @@ msgstr "email"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Enhancement"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Enter your email address"
|
msgstr "Enter your email address"
|
||||||
@@ -525,6 +626,10 @@ msgstr "Everything in the free plan, plus:"
|
|||||||
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -535,6 +640,14 @@ msgstr "Failed to login with {0}. Please try again."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -570,6 +683,14 @@ msgstr "Free"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -615,6 +736,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
msgstr "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
||||||
@@ -647,10 +776,18 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "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:39
|
#: src/views/boards/index.tsx:39
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
@@ -667,6 +804,10 @@ msgstr "Import failed"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Importing from Trello"
|
msgstr "Importing from Trello"
|
||||||
@@ -675,6 +816,12 @@ msgstr "Importing from Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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>."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Individuals"
|
msgstr "Individuals"
|
||||||
@@ -683,6 +830,10 @@ msgstr "Individuals"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Integrations"
|
msgstr "Integrations"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Interviewing"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invite"
|
msgstr "Invite"
|
||||||
@@ -692,6 +843,10 @@ msgstr "Invite"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invite member"
|
msgstr "Invite member"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
||||||
@@ -719,6 +874,10 @@ msgstr "Labels & Filters"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Language"
|
msgstr "Language"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Learning"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Legal"
|
msgstr "Legal"
|
||||||
@@ -751,10 +910,22 @@ msgstr "Login | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "magic link"
|
msgstr "magic link"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Medium Priority"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -780,7 +951,7 @@ msgstr "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "moved the card to another list"
|
msgstr "moved the card to another list"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
@@ -793,7 +964,7 @@ msgstr "Need help?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "New"
|
msgstr "New"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "New board"
|
msgstr "New board"
|
||||||
|
|
||||||
@@ -814,10 +985,26 @@ msgstr "New label"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "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:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "No boards"
|
msgstr "No boards"
|
||||||
@@ -834,6 +1021,14 @@ msgstr "No credit card required"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Once you delete your account, there is no going back. This action cannot be undone."
|
||||||
@@ -854,6 +1049,10 @@ msgstr "Organize and find cards quickly with powerful filtering tools."
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "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
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Payment frequency"
|
msgstr "Payment frequency"
|
||||||
@@ -867,6 +1066,14 @@ msgstr "Pending"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Please enter a valid email address"
|
msgstr "Please enter a valid email address"
|
||||||
@@ -942,10 +1149,30 @@ msgstr "Profile picture"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
@@ -966,10 +1193,22 @@ msgstr "removed a member from the card"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Resources"
|
msgstr "Resources"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Review"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Revoke"
|
msgstr "Revoke"
|
||||||
@@ -995,6 +1234,10 @@ msgstr "Save"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "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
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Select all"
|
msgstr "Select all"
|
||||||
@@ -1019,6 +1262,10 @@ msgstr "self-assigned the card"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Send"
|
msgstr "Send"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1059,6 +1306,14 @@ msgstr "Simple pricing"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Star on Github"
|
msgstr "Star on Github"
|
||||||
@@ -1134,6 +1389,15 @@ msgstr "This will result in the permanent deletion of all data associated with y
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Toggle menu"
|
msgstr "Toggle menu"
|
||||||
@@ -1150,6 +1414,10 @@ msgstr "Trello disconnected"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Trello imports"
|
msgstr "Trello imports"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Triaging"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Unable to add comment"
|
msgstr "Unable to add comment"
|
||||||
@@ -1272,6 +1540,11 @@ msgstr "updated the title to <0>{toTitle}</0>"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
msgid "URL can only contain letters, numbers, and hyphens"
|
||||||
msgstr "URL can only contain letters, numbers, and hyphens"
|
msgstr "URL can only contain letters, numbers, and hyphens"
|
||||||
@@ -1284,10 +1557,18 @@ msgstr "URL cannot exceed 24 characters"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "User"
|
msgstr "User"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Video"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "View and manage your API keys."
|
msgstr "View and manage your API keys."
|
||||||
@@ -1394,6 +1675,10 @@ msgstr "Workspace slug updated"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "Workspace URL"
|
msgstr "Workspace URL"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:30
|
||||||
|
msgid "Writing"
|
||||||
|
msgstr "Writing"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:19
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Yearly"
|
msgstr "Yearly"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -124,6 +124,14 @@ msgstr "Claves API"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "Referencia de API"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "¿Estás seguro de que quieres eliminar {entityLabel}?"
|
msgstr "¿Estás seguro de que quieres eliminar {entityLabel}?"
|
||||||
@@ -149,7 +157,20 @@ msgstr "¿Estás seguro de que quieres eliminar tu cuenta?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "asignó a <0>{memberName}</0> a la tarjeta"
|
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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Facturación"
|
msgstr "Facturación"
|
||||||
|
|
||||||
@@ -157,10 +178,22 @@ msgstr "Facturación"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Portal de facturación"
|
msgstr "Portal de facturación"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Entrada de blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Tablero"
|
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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Tablero no encontrado"
|
msgstr "Tablero no encontrado"
|
||||||
@@ -199,6 +232,18 @@ msgstr "Tableros"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "Tableros | {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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -235,6 +280,10 @@ msgstr "Borrar filtros"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
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."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Colabora sin problemas con tu equipo."
|
msgstr "Colabora sin problemas con tu equipo."
|
||||||
@@ -251,6 +300,10 @@ msgstr "Comentarios"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Empresa"
|
msgstr "Empresa"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Completado"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Control y propiedad completos:"
|
msgstr "Control y propiedad completos:"
|
||||||
@@ -280,6 +333,10 @@ msgstr "Contacto"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Contáctanos"
|
msgstr "Contáctanos"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Creación de contenido"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continuar con "
|
msgstr "Continuar con "
|
||||||
@@ -299,7 +356,7 @@ msgstr "Controla quién puede ver y editar tus tableros."
|
|||||||
msgid "Create another"
|
msgid "Create another"
|
||||||
msgstr "Crear otro"
|
msgstr "Crear otro"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Crear tablero"
|
msgstr "Crear tablero"
|
||||||
|
|
||||||
@@ -341,6 +398,10 @@ msgstr "Crear espacio de trabajo"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "creó la tarjeta"
|
msgstr "creó la tarjeta"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Critical"
|
||||||
|
msgstr "Crítico"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:74
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Dominio personalizado"
|
msgstr "Dominio personalizado"
|
||||||
@@ -349,6 +410,10 @@ msgstr "Dominio personalizado"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Oscuro"
|
msgstr "Oscuro"
|
||||||
@@ -387,6 +452,10 @@ msgstr "Eliminar lista"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Eliminar espacio de trabajo"
|
msgstr "Eliminar espacio de trabajo"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Diseño"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Desconectar Trello"
|
msgstr "Desconectar Trello"
|
||||||
@@ -424,6 +493,7 @@ msgid "Docs"
|
|||||||
msgstr "Documentos"
|
msgstr "Documentos"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentación"
|
msgstr "Documentación"
|
||||||
|
|
||||||
@@ -431,6 +501,13 @@ msgstr "Documentación"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||||
msgstr "¿No tienes una cuenta? <0><1>Regístrate</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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -444,6 +521,10 @@ msgstr "Editar comentario"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Editar etiqueta"
|
msgstr "Editar etiqueta"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Editando"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "correo electrónico"
|
msgstr "correo electrónico"
|
||||||
@@ -452,6 +533,10 @@ msgstr "correo electrónico"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correo electrónico"
|
msgstr "Correo electrónico"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Mejora"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Introduce tu dirección de correo electrónico"
|
msgstr "Introduce tu dirección de correo electrónico"
|
||||||
@@ -509,6 +594,10 @@ 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."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -519,6 +608,14 @@ msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "Preguntas frecuentes"
|
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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -545,7 +642,6 @@ 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."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:32
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
@@ -554,6 +650,14 @@ msgstr "Gratis"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "Gratis, para siempre"
|
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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -599,6 +703,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "Ir a la aplicación"
|
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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
msgstr "Aloja Kan en tu propia infraestructura. Ideal para organizaciones que necesitan control completo sobre sus datos."
|
||||||
@@ -631,6 +743,10 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "Ideas para mejorar esta página..."
|
msgstr "Ideas para mejorar esta página..."
|
||||||
@@ -651,6 +767,10 @@ msgstr "Importación fallida"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "Importa tus tableros de Trello y comienza a trabajar de inmediato."
|
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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Importando desde Trello"
|
msgstr "Importando desde Trello"
|
||||||
@@ -659,6 +779,12 @@ msgstr "Importando desde Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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>."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Individuos"
|
msgstr "Individuos"
|
||||||
@@ -667,6 +793,10 @@ msgstr "Individuos"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Integraciones"
|
msgstr "Integraciones"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Entrevistando"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invitar"
|
msgstr "Invitar"
|
||||||
@@ -676,6 +806,10 @@ msgstr "Invitar"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invitar miembro"
|
msgstr "Invitar miembro"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban es mejor con un equipo. Perfecto para equipos pequeños y en crecimiento que buscan colaborar."
|
||||||
@@ -703,6 +837,10 @@ msgstr "Etiquetas y filtros"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Idioma"
|
msgstr "Idioma"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Aprendizaje"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Legal"
|
msgstr "Legal"
|
||||||
@@ -735,10 +873,22 @@ msgstr "Iniciar sesión | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Cerrar sesión"
|
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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "enlace mágico"
|
msgstr "enlace mágico"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Prioridad media"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -764,7 +914,7 @@ msgstr "movió la tarjeta de <0>{fromList}</0> a<1>{toList}</1>"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "movió la tarjeta a otra lista"
|
msgstr "movió la tarjeta a otra lista"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
@@ -777,7 +927,7 @@ msgstr "¿Necesitas ayuda?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nuevo"
|
msgstr "Nuevo"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "Nuevo tablero"
|
msgstr "Nuevo tablero"
|
||||||
|
|
||||||
@@ -798,10 +948,22 @@ msgstr "Nueva etiqueta"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nueva lista"
|
msgstr "Nueva lista"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:43
|
||||||
|
msgid "New Ticket"
|
||||||
|
msgstr "Nuevo ticket"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "Nuevo espacio de trabajo"
|
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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "Sin tableros"
|
msgstr "Sin tableros"
|
||||||
@@ -818,6 +980,14 @@ msgstr "No se requiere tarjeta de crédito"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Sin listas"
|
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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Una vez que elimines tu cuenta, no hay vuelta atrás. Esta acción no se puede deshacer."
|
||||||
@@ -838,6 +1008,10 @@ msgstr "Organiza y encuentra tarjetas rápidamente con potentes herramientas de
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "Sé dueño de tus datos"
|
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
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Frecuencia de pago"
|
msgstr "Frecuencia de pago"
|
||||||
@@ -851,6 +1025,14 @@ msgstr "Pendiente"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "por usuario/mes"
|
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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Por favor, introduce una dirección de correo electrónico válida"
|
msgstr "Por favor, introduce una dirección de correo electrónico válida"
|
||||||
@@ -926,10 +1108,30 @@ msgstr "Foto de perfil"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Público"
|
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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "¿Preguntas?"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Eliminar"
|
msgstr "Eliminar"
|
||||||
@@ -950,10 +1152,22 @@ msgstr "eliminó un miembro de la tarjeta"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "eliminó la etiqueta <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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Recursos"
|
msgstr "Recursos"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Revisión"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Revocar"
|
msgstr "Revocar"
|
||||||
@@ -979,6 +1193,10 @@ msgstr "Guardar"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "Ahorra tiempo con plantillas de tableros reutilizables."
|
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
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleccionar todo"
|
msgstr "Seleccionar todo"
|
||||||
@@ -1003,6 +1221,10 @@ msgstr "se autoasignó la tarjeta"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Enviar"
|
msgstr "Enviar"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1043,6 +1265,14 @@ msgstr "Precios simples"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Estrella en Github"
|
msgstr "Estrella en Github"
|
||||||
@@ -1118,6 +1348,11 @@ msgstr "Esto resultará en la eliminación permanente de todos los datos asociad
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "Este nombre de usuario del espacio de trabajo ya ha sido tomado"
|
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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Alternar menú"
|
msgstr "Alternar menú"
|
||||||
@@ -1134,6 +1369,10 @@ msgstr "Trello desconectado"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Importaciones de Trello"
|
msgstr "Importaciones de Trello"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Clasificación"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "No se puede añadir el comentario"
|
msgstr "No se puede añadir el comentario"
|
||||||
@@ -1256,6 +1495,11 @@ msgstr "actualizó el título a <0>{toTitle}</0>"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "Actualizar"
|
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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
msgid "URL can only contain letters, numbers, and hyphens"
|
||||||
msgstr "La URL solo puede contener letras, números y guiones"
|
msgstr "La URL solo puede contener letras, números y guiones"
|
||||||
@@ -1268,10 +1512,18 @@ msgstr "La URL no puede exceder los 24 caracteres"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "La URL debe tener al menos 3 caracteres"
|
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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Usuario"
|
msgstr "Usuario"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Video"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "Ver y gestionar tus claves API."
|
msgstr "Ver y gestionar tus claves API."
|
||||||
@@ -1374,6 +1626,10 @@ msgstr "Slug del espacio de trabajo actualizado"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "URL del espacio de trabajo"
|
msgstr "URL del espacio de trabajo"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:30
|
||||||
|
msgid "Writing"
|
||||||
|
msgstr "Escritura"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:19
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Anual"
|
msgstr "Anual"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -124,6 +124,14 @@ msgstr "Clés API"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "Référence API"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "Êtes-vous sûr de vouloir supprimer {entityLabel} ?"
|
msgstr "Êtes-vous sûr de vouloir supprimer {entityLabel} ?"
|
||||||
@@ -149,7 +157,20 @@ msgstr "Êtes-vous sûr de vouloir supprimer votre compte ?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "a assigné <0>{memberName}</0> à la carte"
|
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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Facturation"
|
msgstr "Facturation"
|
||||||
|
|
||||||
@@ -157,10 +178,22 @@ msgstr "Facturation"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Portail de facturation"
|
msgstr "Portail de facturation"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Article de blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Tableau"
|
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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Tableau introuvable"
|
msgstr "Tableau introuvable"
|
||||||
@@ -199,6 +232,18 @@ msgstr "Tableaux"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "Tableaux | {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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -235,6 +280,10 @@ msgstr "Effacer les filtres"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
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."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Collaborez en toute fluidité avec votre équipe."
|
msgstr "Collaborez en toute fluidité avec votre équipe."
|
||||||
@@ -251,6 +300,10 @@ msgstr "Commentaires"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Entreprise"
|
msgstr "Entreprise"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Terminé"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Contrôle et propriété complets :"
|
msgstr "Contrôle et propriété complets :"
|
||||||
@@ -280,6 +333,10 @@ msgstr "Contact"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Contactez-nous"
|
msgstr "Contactez-nous"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Création de contenu"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continuer avec "
|
msgstr "Continuer avec "
|
||||||
@@ -299,7 +356,7 @@ msgstr "Contrôlez qui peut voir et modifier vos tableaux."
|
|||||||
msgid "Create another"
|
msgid "Create another"
|
||||||
msgstr "Créer un autre"
|
msgstr "Créer un autre"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Créer un tableau"
|
msgstr "Créer un tableau"
|
||||||
|
|
||||||
@@ -341,6 +398,10 @@ msgstr "Créer un espace de travail"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "a créé la carte"
|
msgstr "a créé la carte"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Critical"
|
||||||
|
msgstr "Critique"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:74
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Domaine personnalisé"
|
msgstr "Domaine personnalisé"
|
||||||
@@ -349,6 +410,10 @@ msgstr "Domaine personnalisé"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Sombre"
|
msgstr "Sombre"
|
||||||
@@ -387,6 +452,10 @@ msgstr "Supprimer la liste"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Supprimer l'espace de travail"
|
msgstr "Supprimer l'espace de travail"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Design"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Déconnecter Trello"
|
msgstr "Déconnecter Trello"
|
||||||
@@ -424,6 +493,7 @@ msgid "Docs"
|
|||||||
msgstr "Documentation"
|
msgstr "Documentation"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentation"
|
msgstr "Documentation"
|
||||||
|
|
||||||
@@ -431,6 +501,13 @@ msgstr "Documentation"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
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>"
|
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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -444,6 +521,10 @@ msgstr "Modifier le commentaire"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Modifier l'étiquette"
|
msgstr "Modifier l'étiquette"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Édition"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "e-mail"
|
msgstr "e-mail"
|
||||||
@@ -452,6 +533,10 @@ msgstr "e-mail"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Amélioration"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Saisissez votre adresse e-mail"
|
msgstr "Saisissez votre adresse e-mail"
|
||||||
@@ -509,6 +594,10 @@ 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."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -519,6 +608,14 @@ msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "FAQ"
|
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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -545,7 +642,6 @@ 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."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:32
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuit"
|
msgstr "Gratuit"
|
||||||
@@ -554,6 +650,14 @@ msgstr "Gratuit"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "Gratuit, pour toujours"
|
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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -599,6 +703,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "Accéder à l'application"
|
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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
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."
|
||||||
@@ -631,6 +743,10 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "Idées pour améliorer cette page..."
|
msgstr "Idées pour améliorer cette page..."
|
||||||
@@ -651,6 +767,10 @@ msgstr "Échec de l'importation"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "Importez vos tableaux Trello et commencez immédiatement."
|
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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Importation depuis Trello"
|
msgstr "Importation depuis Trello"
|
||||||
@@ -659,6 +779,12 @@ msgstr "Importation depuis Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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>."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Particuliers"
|
msgstr "Particuliers"
|
||||||
@@ -667,6 +793,10 @@ msgstr "Particuliers"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Intégrations"
|
msgstr "Intégrations"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Entretien"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Inviter"
|
msgstr "Inviter"
|
||||||
@@ -676,6 +806,10 @@ msgstr "Inviter"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Inviter un membre"
|
msgstr "Inviter un membre"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban est meilleur en équipe. Parfait pour les petites équipes et celles en croissance qui cherchent à collaborer."
|
||||||
@@ -703,6 +837,10 @@ msgstr "Étiquettes & filtres"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Langue"
|
msgstr "Langue"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Apprentissage"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Mentions légales"
|
msgstr "Mentions légales"
|
||||||
@@ -735,10 +873,22 @@ msgstr "Connexion | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Déconnexion"
|
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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "lien magique"
|
msgstr "lien magique"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Priorité moyenne"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -764,7 +914,7 @@ msgstr "a déplacé la carte de <0>{fromList}</0> vers<1>{toList}</1>"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "a déplacé la carte vers une autre liste"
|
msgstr "a déplacé la carte vers une autre liste"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
@@ -777,7 +927,7 @@ msgstr "Besoin d'aide ?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nouveau"
|
msgstr "Nouveau"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "Nouveau tableau"
|
msgstr "Nouveau tableau"
|
||||||
|
|
||||||
@@ -798,10 +948,22 @@ msgstr "Nouvelle étiquette"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nouvelle liste"
|
msgstr "Nouvelle liste"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:43
|
||||||
|
msgid "New Ticket"
|
||||||
|
msgstr "Nouveau ticket"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "Nouvel espace de travail"
|
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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "Aucun tableau"
|
msgstr "Aucun tableau"
|
||||||
@@ -818,6 +980,14 @@ msgstr "Aucune carte de crédit requise"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Aucune liste"
|
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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Une fois que vous supprimez votre compte, il n'y a pas de retour possible. Cette action ne peut pas être annulée."
|
||||||
@@ -838,6 +1008,10 @@ msgstr "Organisez et trouvez rapidement des cartes avec des outils de filtrage p
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "Maîtrisez vos données"
|
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
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Fréquence de paiement"
|
msgstr "Fréquence de paiement"
|
||||||
@@ -851,6 +1025,14 @@ msgstr "En attente"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "par utilisateur/mois"
|
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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Veuillez saisir une adresse e-mail valide"
|
msgstr "Veuillez saisir une adresse e-mail valide"
|
||||||
@@ -926,10 +1108,30 @@ msgstr "Photo de profil"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "Des 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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
@@ -950,10 +1152,22 @@ msgstr "a retiré un membre de la carte"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "a supprimé l'étiquette <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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Ressources"
|
msgstr "Ressources"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Révision"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Révoquer"
|
msgstr "Révoquer"
|
||||||
@@ -979,6 +1193,10 @@ msgstr "Enregistrer"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "Gagnez du temps avec des modèles de tableaux réutilisables."
|
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
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Sélectionner tout"
|
msgstr "Sélectionner tout"
|
||||||
@@ -1003,6 +1221,10 @@ msgstr "s'est auto-assigné la carte"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Envoyer"
|
msgstr "Envoyer"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1043,6 +1265,14 @@ msgstr "Tarification simple"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Étoile sur Github"
|
msgstr "Étoile sur Github"
|
||||||
@@ -1118,6 +1348,11 @@ msgstr "Cela entraînera la suppression définitive de toutes les données assoc
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "Ce nom d'utilisateur d'espace de travail est déjà pris"
|
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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Basculer le menu"
|
msgstr "Basculer le menu"
|
||||||
@@ -1134,6 +1369,10 @@ msgstr "Trello déconnecté"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Importations Trello"
|
msgstr "Importations Trello"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Triage"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Impossible d'ajouter un commentaire"
|
msgstr "Impossible d'ajouter un commentaire"
|
||||||
@@ -1256,6 +1495,11 @@ msgstr "a mis à jour le titre en <0>{toTitle}</0>"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "Mettre à niveau"
|
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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
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"
|
msgstr "L'URL ne peut contenir que des lettres, des chiffres et des traits d'union"
|
||||||
@@ -1268,10 +1512,18 @@ msgstr "L'URL ne peut pas dépasser 24 caractères"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "L'URL doit comporter au moins 3 caractères"
|
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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Utilisateur"
|
msgstr "Utilisateur"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Vidéo"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "Consultez et gérez vos clés API."
|
msgstr "Consultez et gérez vos clés API."
|
||||||
@@ -1374,6 +1626,10 @@ msgstr "Slug de l'espace de travail mis à jour"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "URL de l'espace de travail"
|
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
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Annuel"
|
msgstr "Annuel"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -124,6 +124,14 @@ msgstr "Chiavi API"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "Riferimento API"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "Sei sicuro di voler rimuovere {entityLabel}?"
|
msgstr "Sei sicuro di voler rimuovere {entityLabel}?"
|
||||||
@@ -149,7 +157,20 @@ msgstr "Sei sicuro di voler eliminare il tuo account?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "ha assegnato <0>{memberName}</0> alla carta"
|
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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Fatturazione"
|
msgstr "Fatturazione"
|
||||||
|
|
||||||
@@ -157,10 +178,22 @@ msgstr "Fatturazione"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Portale di fatturazione"
|
msgstr "Portale di fatturazione"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Post del blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Bacheca"
|
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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Bacheca non trovata"
|
msgstr "Bacheca non trovata"
|
||||||
@@ -199,6 +232,18 @@ msgstr "Bacheche"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "Bacheche | {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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -235,6 +280,10 @@ msgstr "Cancella filtri"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||||
msgstr "Clicca sul link che abbiamo inviato a {magicLinkRecipient} per accedere."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Collabora senza problemi con il tuo team."
|
msgstr "Collabora senza problemi con il tuo team."
|
||||||
@@ -251,6 +300,10 @@ msgstr "Commenti"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Azienda"
|
msgstr "Azienda"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Completato"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Controllo e proprietà completi:"
|
msgstr "Controllo e proprietà completi:"
|
||||||
@@ -280,6 +333,10 @@ msgstr "Contatti"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Contattaci"
|
msgstr "Contattaci"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Creazione contenuti"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continua con "
|
msgstr "Continua con "
|
||||||
@@ -299,7 +356,7 @@ msgstr "Controlla chi può visualizzare e modificare le tue bacheche."
|
|||||||
msgid "Create another"
|
msgid "Create another"
|
||||||
msgstr "Crea un altro"
|
msgstr "Crea un altro"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Crea bacheca"
|
msgstr "Crea bacheca"
|
||||||
|
|
||||||
@@ -341,6 +398,10 @@ msgstr "Crea spazio di lavoro"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "ha creato la carta"
|
msgstr "ha creato la carta"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Critical"
|
||||||
|
msgstr "Critico"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:74
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Dominio personalizzato"
|
msgstr "Dominio personalizzato"
|
||||||
@@ -349,6 +410,10 @@ msgstr "Dominio personalizzato"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Scuro"
|
msgstr "Scuro"
|
||||||
@@ -387,6 +452,10 @@ msgstr "Elimina lista"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Elimina spazio di lavoro"
|
msgstr "Elimina spazio di lavoro"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Design"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Disconnetti Trello"
|
msgstr "Disconnetti Trello"
|
||||||
@@ -424,6 +493,7 @@ msgid "Docs"
|
|||||||
msgstr "Documenti"
|
msgstr "Documenti"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentazione"
|
msgstr "Documentazione"
|
||||||
|
|
||||||
@@ -431,6 +501,13 @@ msgstr "Documentazione"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||||
msgstr "Non hai un account? <0><1>Registrati</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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -444,6 +521,10 @@ msgstr "Modifica commento"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Modifica etichetta"
|
msgstr "Modifica etichetta"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Modifica"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "email"
|
msgstr "email"
|
||||||
@@ -452,6 +533,10 @@ msgstr "email"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Miglioramento"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Inserisci il tuo indirizzo email"
|
msgstr "Inserisci il tuo indirizzo email"
|
||||||
@@ -509,6 +594,10 @@ msgstr "Tutto ciò che è incluso nel piano gratuito, più:"
|
|||||||
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -519,6 +608,14 @@ msgstr "Accesso con {0} fallito. Riprova."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "FAQ"
|
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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -545,7 +642,6 @@ 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."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:32
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuito"
|
msgstr "Gratuito"
|
||||||
@@ -554,6 +650,14 @@ msgstr "Gratuito"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "Gratuito, per sempre"
|
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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -599,6 +703,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "Vai all'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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
msgstr "Ospita Kan sulla tua infrastruttura. Ideale per organizzazioni che necessitano di controllo completo sui propri dati."
|
||||||
@@ -631,6 +743,10 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "Idee per migliorare questa pagina..."
|
msgstr "Idee per migliorare questa pagina..."
|
||||||
@@ -651,6 +767,10 @@ msgstr "Importazione fallita"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "Importa le tue bacheche Trello e parti subito."
|
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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Importazione da Trello"
|
msgstr "Importazione da Trello"
|
||||||
@@ -659,6 +779,12 @@ msgstr "Importazione da Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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>."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Privati"
|
msgstr "Privati"
|
||||||
@@ -667,6 +793,10 @@ msgstr "Privati"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Integrazioni"
|
msgstr "Integrazioni"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Colloquio"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invita"
|
msgstr "Invita"
|
||||||
@@ -676,6 +806,10 @@ msgstr "Invita"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invita membro"
|
msgstr "Invita membro"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban è migliore con un team. Perfetto per piccoli team in crescita che cercano di collaborare."
|
||||||
@@ -703,6 +837,10 @@ msgstr "Etichette & Filtri"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Lingua"
|
msgstr "Lingua"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Apprendimento"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Legale"
|
msgstr "Legale"
|
||||||
@@ -735,10 +873,22 @@ msgstr "Login | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Esci"
|
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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "link magico"
|
msgstr "link magico"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Media priorità"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -764,7 +914,7 @@ msgstr "ha spostato la scheda da <0>{fromList}</0> a<1>{toList}</1>"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "ha spostato la scheda in un'altra lista"
|
msgstr "ha spostato la scheda in un'altra lista"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nome"
|
msgstr "Nome"
|
||||||
@@ -777,7 +927,7 @@ msgstr "Hai bisogno di aiuto?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nuovo"
|
msgstr "Nuovo"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "Nuova bacheca"
|
msgstr "Nuova bacheca"
|
||||||
|
|
||||||
@@ -798,10 +948,22 @@ msgstr "Nuova etichetta"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nuova lista"
|
msgstr "Nuova lista"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:43
|
||||||
|
msgid "New Ticket"
|
||||||
|
msgstr "Nuovo ticket"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "Nuovo spazio di lavoro"
|
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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "Nessuna bacheca"
|
msgstr "Nessuna bacheca"
|
||||||
@@ -818,6 +980,14 @@ msgstr "Nessuna carta di credito richiesta"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Nessuna lista"
|
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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Una volta eliminato il tuo account, non si può tornare indietro. Questa azione non può essere annullata."
|
||||||
@@ -838,6 +1008,10 @@ msgstr "Organizza e trova le schede rapidamente con potenti strumenti di filtrag
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "Possiedi i tuoi dati"
|
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
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Frequenza di pagamento"
|
msgstr "Frequenza di pagamento"
|
||||||
@@ -851,6 +1025,14 @@ msgstr "In attesa"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "per utente/mese"
|
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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Inserisci un indirizzo email valido"
|
msgstr "Inserisci un indirizzo email valido"
|
||||||
@@ -926,10 +1108,30 @@ msgstr "Immagine del profilo"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Pubblico"
|
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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "Domande?"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Rimuovi"
|
msgstr "Rimuovi"
|
||||||
@@ -950,10 +1152,22 @@ msgstr "ha rimosso un membro dalla scheda"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "ha rimosso l'etichetta <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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Risorse"
|
msgstr "Risorse"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Revisione"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Revoca"
|
msgstr "Revoca"
|
||||||
@@ -979,6 +1193,10 @@ msgstr "Salva"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "Risparmia tempo con modelli di bacheca riutilizzabili."
|
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
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleziona tutto"
|
msgstr "Seleziona tutto"
|
||||||
@@ -1003,6 +1221,10 @@ msgstr "si è auto-assegnato la scheda"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Invia"
|
msgstr "Invia"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1043,6 +1265,14 @@ msgstr "Prezzi semplici"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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ù."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Metti una stella su Github"
|
msgstr "Metti una stella su Github"
|
||||||
@@ -1118,6 +1348,11 @@ msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati a
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "Questo nome utente dell'area di lavoro è già stato utilizzato"
|
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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Attiva/disattiva menu"
|
msgstr "Attiva/disattiva menu"
|
||||||
@@ -1134,6 +1369,10 @@ msgstr "Trello disconnesso"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Importazioni da Trello"
|
msgstr "Importazioni da Trello"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Smistamento"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Impossibile aggiungere il commento"
|
msgstr "Impossibile aggiungere il commento"
|
||||||
@@ -1256,6 +1495,11 @@ msgstr "ha aggiornato il titolo in <0>{toTitle}</0>"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "Aggiorna"
|
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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
msgid "URL can only contain letters, numbers, and hyphens"
|
||||||
msgstr "L'URL può contenere solo lettere, numeri e trattini"
|
msgstr "L'URL può contenere solo lettere, numeri e trattini"
|
||||||
@@ -1268,10 +1512,18 @@ msgstr "L'URL non può superare i 24 caratteri"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "L'URL deve contenere almeno 3 caratteri"
|
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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Utente"
|
msgstr "Utente"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Video"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "Visualizza e gestisci le tue chiavi API."
|
msgstr "Visualizza e gestisci le tue chiavi API."
|
||||||
@@ -1374,6 +1626,10 @@ msgstr "Slug dell'area di lavoro aggiornato"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "URL dello spazio di lavoro"
|
msgstr "URL dello spazio di lavoro"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:30
|
||||||
|
msgid "Writing"
|
||||||
|
msgstr "Scrittura"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:19
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Annuale"
|
msgstr "Annuale"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -124,6 +124,14 @@ msgstr "API-sleutels"
|
|||||||
msgid "API Reference"
|
msgid "API Reference"
|
||||||
msgstr "API-referentie"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:47
|
||||||
msgid "Are you sure want to remove {entityLabel}?"
|
msgid "Are you sure want to remove {entityLabel}?"
|
||||||
msgstr "Weet je zeker dat je {entityLabel} wilt verwijderen?"
|
msgstr "Weet je zeker dat je {entityLabel} wilt verwijderen?"
|
||||||
@@ -149,7 +157,20 @@ msgstr "Weet je zeker dat je je account wilt verwijderen?"
|
|||||||
msgid "assigned <0>{memberName}</0> to the card"
|
msgid "assigned <0>{memberName}</0> to the card"
|
||||||
msgstr "heeft <0>{memberName}</0> aan de kaart toegewezen"
|
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:168
|
#: src/views/settings/index.tsx:168
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:55
|
||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Facturering"
|
msgstr "Facturering"
|
||||||
|
|
||||||
@@ -157,10 +178,22 @@ msgstr "Facturering"
|
|||||||
msgid "Billing portal"
|
msgid "Billing portal"
|
||||||
msgstr "Factureringsportaal"
|
msgstr "Factureringsportaal"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Blog Post"
|
||||||
|
msgstr "Blogbericht"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:239
|
#: src/views/board/index.tsx:239
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Bord"
|
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:265
|
#: src/views/board/index.tsx:265
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Bord niet gevonden"
|
msgstr "Bord niet gevonden"
|
||||||
@@ -199,6 +232,18 @@ msgstr "Borden"
|
|||||||
msgid "Boards | {0}"
|
msgid "Boards | {0}"
|
||||||
msgstr "Borden | {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/DeleteWorkspaceConfirmation.tsx:98
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||||
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
#: src/views/settings/components/CustomURLConfirmation.tsx:50
|
||||||
@@ -235,6 +280,10 @@ msgstr "Filters wissen"
|
|||||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
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."
|
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
|
#: src/views/home/components/Features.tsx:84
|
||||||
msgid "Collaborate seamlessly with your team."
|
msgid "Collaborate seamlessly with your team."
|
||||||
msgstr "Werk naadloos samen met je team."
|
msgstr "Werk naadloos samen met je team."
|
||||||
@@ -251,6 +300,10 @@ msgstr "Opmerkingen"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Bedrijf"
|
msgstr "Bedrijf"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:81
|
||||||
|
msgid "Complete"
|
||||||
|
msgstr "Voltooid"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:70
|
#: src/views/home/components/Pricing.tsx:70
|
||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Volledige controle en eigendom:"
|
msgstr "Volledige controle en eigendom:"
|
||||||
@@ -280,6 +333,10 @@ msgstr "Contact"
|
|||||||
msgid "Contact us"
|
msgid "Contact us"
|
||||||
msgstr "Neem contact op"
|
msgstr "Neem contact op"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:27
|
||||||
|
msgid "Content Creation"
|
||||||
|
msgstr "Content creatie"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:334
|
#: src/components/AuthForm.tsx:334
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Doorgaan met "
|
msgstr "Doorgaan met "
|
||||||
@@ -299,7 +356,7 @@ msgstr "Bepaal wie je borden kan bekijken en bewerken."
|
|||||||
msgid "Create another"
|
msgid "Create another"
|
||||||
msgstr "Maak nog een"
|
msgstr "Maak nog een"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:77
|
#: src/views/boards/components/NewBoardForm.tsx:128
|
||||||
msgid "Create board"
|
msgid "Create board"
|
||||||
msgstr "Maak bord"
|
msgstr "Maak bord"
|
||||||
|
|
||||||
@@ -341,6 +398,10 @@ msgstr "Werkruimte maken"
|
|||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "heeft de kaart aangemaakt"
|
msgstr "heeft de kaart aangemaakt"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Critical"
|
||||||
|
msgstr "Kritiek"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:74
|
#: src/views/home/components/Pricing.tsx:74
|
||||||
msgid "Custom domain"
|
msgid "Custom domain"
|
||||||
msgstr "Aangepast domein"
|
msgstr "Aangepast domein"
|
||||||
@@ -349,6 +410,10 @@ msgstr "Aangepast domein"
|
|||||||
msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
|
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."
|
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
|
#: src/components/UserMenu.tsx:112
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Donker"
|
msgstr "Donker"
|
||||||
@@ -387,6 +452,10 @@ msgstr "Lijst verwijderen"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Werkruimte verwijderen"
|
msgstr "Werkruimte verwijderen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:32
|
||||||
|
msgid "Design"
|
||||||
|
msgstr "Ontwerp"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:220
|
#: src/views/settings/index.tsx:220
|
||||||
msgid "Disconnect Trello"
|
msgid "Disconnect Trello"
|
||||||
msgstr "Trello ontkoppelen"
|
msgstr "Trello ontkoppelen"
|
||||||
@@ -424,6 +493,7 @@ msgid "Docs"
|
|||||||
msgstr "Docs"
|
msgstr "Docs"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:77
|
#: src/views/home/components/Footer.tsx:77
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentatie"
|
msgstr "Documentatie"
|
||||||
|
|
||||||
@@ -431,6 +501,13 @@ msgstr "Documentatie"
|
|||||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||||
msgstr "Heb je geen account? <0><1>Registreer je</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/UpdateBoardSlugForm.tsx:115
|
||||||
#: src/views/board/components/BoardDropdown.tsx:15
|
#: src/views/board/components/BoardDropdown.tsx:15
|
||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
@@ -444,6 +521,10 @@ msgstr "Reactie bewerken"
|
|||||||
msgid "Edit label"
|
msgid "Edit label"
|
||||||
msgstr "Label bewerken"
|
msgstr "Label bewerken"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:31
|
||||||
|
msgid "Editing"
|
||||||
|
msgstr "Bewerken"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:336
|
#: src/components/AuthForm.tsx:336
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "e-mail"
|
msgstr "e-mail"
|
||||||
@@ -452,6 +533,10 @@ msgstr "e-mail"
|
|||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:23
|
||||||
|
msgid "Enhancement"
|
||||||
|
msgstr "Verbetering"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:301
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Voer je e-mailadres in"
|
msgstr "Voer je e-mailadres in"
|
||||||
@@ -509,6 +594,10 @@ msgstr "Alles in het gratis abonnement, plus:"
|
|||||||
msgid "Everything you need, free forever. Unlimited boards, unlimited lists, unlimited cards. Upgrade any time."
|
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."
|
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)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:241
|
#: src/components/AuthForm.tsx:241
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
@@ -519,6 +608,14 @@ msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
|||||||
msgid "FAQs"
|
msgid "FAQs"
|
||||||
msgstr "Veelgestelde vragen"
|
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/Header.tsx:14
|
||||||
#: src/views/home/components/Footer.tsx:49
|
#: src/views/home/components/Footer.tsx:49
|
||||||
#: src/views/home/components/Features.tsx:125
|
#: src/views/home/components/Features.tsx:125
|
||||||
@@ -545,7 +642,6 @@ 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."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:32
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
@@ -554,6 +650,14 @@ msgstr "Gratis"
|
|||||||
msgid "Free, forever"
|
msgid "Free, forever"
|
||||||
msgstr "Altijd gratis"
|
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:102
|
||||||
#: src/views/home/components/Header.tsx:141
|
#: src/views/home/components/Header.tsx:141
|
||||||
#: src/views/home/components/Cta.tsx:61
|
#: src/views/home/components/Cta.tsx:61
|
||||||
@@ -599,6 +703,14 @@ msgstr "GitHub"
|
|||||||
msgid "Go to app"
|
msgid "Go to app"
|
||||||
msgstr "Naar de 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
|
#: src/views/home/components/Pricing.tsx:69
|
||||||
msgid "Host Kan on your own infrastructure. Ideal for organisations that need complete control over their data."
|
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."
|
msgstr "Host Kan op je eigen infrastructuur. Ideaal voor organisaties die volledige controle over hun gegevens nodig hebben."
|
||||||
@@ -631,6 +743,10 @@ 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."
|
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."
|
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
|
#: src/components/FeedbackButton.tsx:98
|
||||||
msgid "Ideas to improve this page..."
|
msgid "Ideas to improve this page..."
|
||||||
msgstr "Ideeën om deze pagina te verbeteren..."
|
msgstr "Ideeën om deze pagina te verbeteren..."
|
||||||
@@ -651,6 +767,10 @@ msgstr "Import mislukt"
|
|||||||
msgid "Import your Trello boards and hit the ground running."
|
msgid "Import your Trello boards and hit the ground running."
|
||||||
msgstr "Importeer je Trello-borden en ga direct aan de slag."
|
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
|
#: src/views/home/components/Footer.tsx:27
|
||||||
msgid "Importing from Trello"
|
msgid "Importing from Trello"
|
||||||
msgstr "Importeren vanuit Trello"
|
msgstr "Importeren vanuit Trello"
|
||||||
@@ -659,6 +779,12 @@ msgstr "Importeren vanuit Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
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."
|
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
|
#: src/views/home/components/Pricing.tsx:28
|
||||||
msgid "Individuals"
|
msgid "Individuals"
|
||||||
msgstr "Individuen"
|
msgstr "Individuen"
|
||||||
@@ -667,6 +793,10 @@ msgstr "Individuen"
|
|||||||
msgid "Integrations"
|
msgid "Integrations"
|
||||||
msgstr "Integraties"
|
msgstr "Integraties"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:64
|
||||||
|
msgid "Interviewing"
|
||||||
|
msgstr "Interviewen"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:156
|
#: src/views/members/index.tsx:156
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Uitnodigen"
|
msgstr "Uitnodigen"
|
||||||
@@ -676,6 +806,10 @@ msgstr "Uitnodigen"
|
|||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Lid uitnodigen"
|
msgstr "Lid uitnodigen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Junior"
|
||||||
|
msgstr "Junior"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:51
|
#: src/views/home/components/Pricing.tsx:51
|
||||||
msgid "Kanban is better with a team. Perfect for small and growing teams looking to collaborate."
|
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."
|
msgstr "Kanban werkt beter met een team. Perfect voor kleine en groeiende teams die willen samenwerken."
|
||||||
@@ -703,6 +837,10 @@ msgstr "Labels & filters"
|
|||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Taal"
|
msgstr "Taal"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:83
|
||||||
|
msgid "Learning"
|
||||||
|
msgstr "Leren"
|
||||||
|
|
||||||
#: src/views/home/components/Footer.tsx:130
|
#: src/views/home/components/Footer.tsx:130
|
||||||
msgid "Legal"
|
msgid "Legal"
|
||||||
msgstr "Juridisch"
|
msgstr "Juridisch"
|
||||||
@@ -735,10 +873,22 @@ msgstr "Login | kan.bn"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Uitloggen"
|
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
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "magische link"
|
msgstr "magische link"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:17
|
||||||
|
msgid "Medium Priority"
|
||||||
|
msgstr "Gemiddelde prioriteit"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:148
|
#: src/views/members/index.tsx:148
|
||||||
#: src/views/card/index.tsx:251
|
#: src/views/card/index.tsx:251
|
||||||
#: src/views/board/components/NewCardForm.tsx:290
|
#: src/views/board/components/NewCardForm.tsx:290
|
||||||
@@ -764,7 +914,7 @@ msgstr "heeft de kaart verplaatst van <0>{fromList}</0> naar<1>{toList}</1>"
|
|||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "heeft de kaart naar een andere lijst verplaatst"
|
msgstr "heeft de kaart naar een andere lijst verplaatst"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:63
|
#: src/views/boards/components/NewBoardForm.tsx:99
|
||||||
#: src/components/LabelForm.tsx:134
|
#: src/components/LabelForm.tsx:134
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Naam"
|
msgstr "Naam"
|
||||||
@@ -777,7 +927,7 @@ msgstr "Hulp nodig?"
|
|||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nieuw"
|
msgstr "Nieuw"
|
||||||
|
|
||||||
#: src/views/boards/components/NewBoardForm.tsx:49
|
#: src/views/boards/components/NewBoardForm.tsx:85
|
||||||
msgid "New board"
|
msgid "New board"
|
||||||
msgstr "Nieuw bord"
|
msgstr "Nieuw bord"
|
||||||
|
|
||||||
@@ -798,10 +948,22 @@ msgstr "Nieuw label"
|
|||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nieuwe lijst"
|
msgstr "Nieuwe lijst"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:43
|
||||||
|
msgid "New Ticket"
|
||||||
|
msgstr "Nieuw ticket"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:62
|
#: src/components/NewWorkspaceForm.tsx:62
|
||||||
msgid "New workspace"
|
msgid "New workspace"
|
||||||
msgstr "Nieuwe werkruimte"
|
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
|
#: src/views/boards/components/BoardsList.tsx:35
|
||||||
msgid "No boards"
|
msgid "No boards"
|
||||||
msgstr "Geen borden"
|
msgstr "Geen borden"
|
||||||
@@ -818,6 +980,14 @@ msgstr "Geen creditcard vereist"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Geen lijsten"
|
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:263
|
#: src/views/settings/index.tsx:263
|
||||||
msgid "Once you delete your account, there is no going back. This action cannot be undone."
|
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."
|
msgstr "Zodra je je account verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt."
|
||||||
@@ -838,6 +1008,10 @@ msgstr "Organiseer en vind kaarten snel met krachtige filtertools."
|
|||||||
msgid "Own your data"
|
msgid "Own your data"
|
||||||
msgstr "Bezit je eigen 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
|
#: src/views/home/components/Pricing.tsx:101
|
||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Betalingsfrequentie"
|
msgstr "Betalingsfrequentie"
|
||||||
@@ -851,6 +1025,14 @@ msgstr "In behandeling"
|
|||||||
msgid "per user/month"
|
msgid "per user/month"
|
||||||
msgstr "per gebruiker/maand"
|
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
|
#: src/components/AuthForm.tsx:305
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Voer een geldig e-mailadres in"
|
msgstr "Voer een geldig e-mailadres in"
|
||||||
@@ -926,10 +1108,30 @@ msgstr "Profielfoto"
|
|||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Openbaar"
|
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
|
#: src/views/home/components/Faqs.tsx:147
|
||||||
msgid "Questions?"
|
msgid "Questions?"
|
||||||
msgstr "Vragen?"
|
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
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:58
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
@@ -950,10 +1152,22 @@ msgstr "heeft een lid van de kaart verwijderd"
|
|||||||
msgid "removed label <0>{label}</0>"
|
msgid "removed label <0>{label}</0>"
|
||||||
msgstr "heeft label <0>{label}</0> verwijderd"
|
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
|
#: src/views/home/components/Footer.tsx:113
|
||||||
msgid "Resources"
|
msgid "Resources"
|
||||||
msgstr "Bronnen"
|
msgstr "Bronnen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:79
|
||||||
|
msgid "Review"
|
||||||
|
msgstr "Beoordeling"
|
||||||
|
|
||||||
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
#: src/views/settings/components/CreateAPIKeyForm.tsx:49
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Intrekken"
|
msgstr "Intrekken"
|
||||||
@@ -979,6 +1193,10 @@ msgstr "Opslaan"
|
|||||||
msgid "Save time with reusable board templates."
|
msgid "Save time with reusable board templates."
|
||||||
msgstr "Bespaar tijd met herbruikbare bordsjablonen."
|
msgstr "Bespaar tijd met herbruikbare bordsjablonen."
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:63
|
||||||
|
msgid "Screening"
|
||||||
|
msgstr "Screening"
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alles selecteren"
|
msgstr "Alles selecteren"
|
||||||
@@ -1003,6 +1221,10 @@ msgstr "heeft de kaart aan zichzelf toegewezen"
|
|||||||
msgid "Send"
|
msgid "Send"
|
||||||
msgstr "Versturen"
|
msgstr "Versturen"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||||
|
msgid "Senior"
|
||||||
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:112
|
#: src/views/settings/index.tsx:112
|
||||||
#: src/components/SideNavigation.tsx:49
|
#: src/components/SideNavigation.tsx:49
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
@@ -1043,6 +1265,14 @@ msgstr "Eenvoudige prijzen"
|
|||||||
msgid "Simple, visual task management that just works. Drag and drop cards, collaborate with your team, and get more done."
|
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."
|
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
|
#: src/views/home/index.tsx:37
|
||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Star op Github"
|
msgstr "Star op Github"
|
||||||
@@ -1118,6 +1348,11 @@ msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aa
|
|||||||
msgid "This workspace username has already been taken"
|
msgid "This workspace username has already been taken"
|
||||||
msgstr "Deze werkruimtegebruikersnaam is al in gebruik"
|
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
|
#: src/views/home/components/Header.tsx:73
|
||||||
msgid "Toggle menu"
|
msgid "Toggle menu"
|
||||||
msgstr "Menu in-/uitschakelen"
|
msgstr "Menu in-/uitschakelen"
|
||||||
@@ -1134,6 +1369,10 @@ msgstr "Trello ontkoppeld"
|
|||||||
msgid "Trello imports"
|
msgid "Trello imports"
|
||||||
msgstr "Trello-imports"
|
msgstr "Trello-imports"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:44
|
||||||
|
msgid "Triaging"
|
||||||
|
msgstr "Triage"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:30
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Kan geen reactie toevoegen"
|
msgstr "Kan geen reactie toevoegen"
|
||||||
@@ -1256,6 +1495,11 @@ msgstr "titel bijgewerkt naar <0>{toTitle}</0>"
|
|||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr "Upgraden"
|
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
|
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
|
||||||
msgid "URL can only contain letters, numbers, and hyphens"
|
msgid "URL can only contain letters, numbers, and hyphens"
|
||||||
msgstr "URL kan alleen letters, cijfers en koppeltekens bevatten"
|
msgstr "URL kan alleen letters, cijfers en koppeltekens bevatten"
|
||||||
@@ -1268,10 +1512,18 @@ msgstr "URL mag niet langer zijn dan 24 tekens"
|
|||||||
msgid "URL must be at least 3 characters long"
|
msgid "URL must be at least 3 characters long"
|
||||||
msgstr "URL moet minimaal 3 tekens lang zijn"
|
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:172
|
#: src/views/members/index.tsx:172
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Gebruiker"
|
msgstr "Gebruiker"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:37
|
||||||
|
msgid "Video"
|
||||||
|
msgstr "Video"
|
||||||
|
|
||||||
#: src/views/settings/index.tsx:232
|
#: src/views/settings/index.tsx:232
|
||||||
msgid "View and manage your API keys."
|
msgid "View and manage your API keys."
|
||||||
msgstr "Bekijk en beheer je API-sleutels."
|
msgstr "Bekijk en beheer je API-sleutels."
|
||||||
@@ -1374,6 +1626,10 @@ msgstr "Werkruimte-slug bijgewerkt"
|
|||||||
msgid "Workspace URL"
|
msgid "Workspace URL"
|
||||||
msgstr "Werkruimte URL"
|
msgstr "Werkruimte URL"
|
||||||
|
|
||||||
|
#: src/views/boards/components/TemplateBoards.tsx:30
|
||||||
|
msgid "Writing"
|
||||||
|
msgstr "Schrijven"
|
||||||
|
|
||||||
#: src/views/home/components/Pricing.tsx:19
|
#: src/views/home/components/Pricing.tsx:19
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jaarlijks"
|
msgstr "Jaarlijks"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,7 @@
|
|||||||
import "~/styles/globals.css";
|
import "~/styles/globals.css";
|
||||||
import "~/utils/i18n";
|
import "~/utils/i18n";
|
||||||
|
|
||||||
|
import type { Viewport } from "next";
|
||||||
import type { AppType } from "next/app";
|
import type { AppType } from "next/app";
|
||||||
import { Plus_Jakarta_Sans } from "next/font/google";
|
import { Plus_Jakarta_Sans } from "next/font/google";
|
||||||
import Script from "next/script";
|
import Script from "next/script";
|
||||||
@@ -26,6 +27,13 @@ export const metadata = {
|
|||||||
icons: [{ rel: "icon", url: "/favicon.ico" }],
|
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 MyApp: AppType = ({ Component, pageProps }) => {
|
||||||
const posthogKey = env("NEXT_PUBLIC_POSTHOG_KEY");
|
const posthogKey = env("NEXT_PUBLIC_POSTHOG_KEY");
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { type NextApiRequest, type NextApiResponse } from "next";
|
import type { NextApiRequest, NextApiResponse } from "next";
|
||||||
|
|
||||||
import { openApiDocument } from "@kan/api/openapi";
|
import { openApiDocument } from "@kan/api/openapi";
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { WorkspaceProvider } from "~/providers/workspace";
|
|
||||||
import Dashboard from "~/components/Dashboard";
|
import Dashboard from "~/components/Dashboard";
|
||||||
import Popup from "~/components/Popup";
|
import Popup from "~/components/Popup";
|
||||||
import CardView from "~/views/card";
|
import { WorkspaceProvider } from "~/providers/workspace";
|
||||||
|
import CardView, { CardRightPanel } from "~/views/card";
|
||||||
|
|
||||||
export default function CardPage() {
|
export default function CardPage() {
|
||||||
return (
|
return (
|
||||||
<WorkspaceProvider>
|
<WorkspaceProvider>
|
||||||
<Dashboard>
|
<Dashboard hasRightPanel rightPanel={<CardRightPanel />}>
|
||||||
<CardView />
|
<CardView />
|
||||||
</Dashboard>
|
</Dashboard>
|
||||||
<Popup />
|
<Popup />
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
[contenteditable=true]:empty:before {
|
[contenteditable="true"]:empty:before {
|
||||||
content: attr(placeholder);
|
content: attr(placeholder);
|
||||||
display: block;
|
display: block;
|
||||||
color: #707070;
|
color: #707070;
|
||||||
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gradient-border::before {
|
.gradient-border::before {
|
||||||
@@ -18,7 +19,7 @@
|
|||||||
transparent 110deg,
|
transparent 110deg,
|
||||||
transparent 360deg
|
transparent 360deg
|
||||||
);
|
);
|
||||||
content: '';
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: -50%;
|
inset: -50%;
|
||||||
width: 200%;
|
width: 200%;
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ export default function BoardPage() {
|
|||||||
/>
|
/>
|
||||||
<div className="relative flex h-full flex-col">
|
<div className="relative flex h-full flex-col">
|
||||||
<PatternedBackground />
|
<PatternedBackground />
|
||||||
<div className="z-10 flex w-full justify-between p-8">
|
<div className="z-10 flex w-full flex-col justify-between p-6 md:flex-row md:p-8">
|
||||||
{isLoading && !boardData && (
|
{isLoading && !boardData && (
|
||||||
<div className="flex space-x-2">
|
<div className="flex space-x-2">
|
||||||
<div className="h-[2.3rem] w-[150px] animate-pulse rounded-[5px] bg-light-200 dark:bg-dark-100" />
|
<div className="h-[2.3rem] w-[150px] animate-pulse rounded-[5px] bg-light-200 dark:bg-dark-100" />
|
||||||
@@ -249,7 +249,7 @@ export default function BoardPage() {
|
|||||||
{boardData && (
|
{boardData && (
|
||||||
<form
|
<form
|
||||||
onSubmit={handleSubmit(onSubmit)}
|
onSubmit={handleSubmit(onSubmit)}
|
||||||
className="focus-visible:outline-none"
|
className="order-2 focus-visible:outline-none md:order-1"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
id="name"
|
id="name"
|
||||||
@@ -261,12 +261,12 @@ export default function BoardPage() {
|
|||||||
</form>
|
</form>
|
||||||
)}
|
)}
|
||||||
{!boardData && !isLoading && (
|
{!boardData && !isLoading && (
|
||||||
<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]">
|
<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">
|
||||||
{t`Board not found`}
|
{t`Board not found`}
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className="flex items-center space-x-2">
|
<div className="order-1 mb-4 flex items-center justify-end space-x-2 md:order-2 md:mb-0">
|
||||||
<VisibilityButton
|
<VisibilityButton
|
||||||
visibility={boardData?.visibility ?? "private"}
|
visibility={boardData?.visibility ?? "private"}
|
||||||
boardPublicId={boardId ?? ""}
|
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">
|
<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">
|
<span className="flex items-center">
|
||||||
{integrationProviders[field.value]?.icon}
|
{integrationProviders[field.value]?.icon}
|
||||||
<span className="ml-2 block truncate">
|
<span className="ml-2 block truncate text-sm">
|
||||||
{integrationProviders[field.value]?.name}
|
{integrationProviders[field.value]?.name}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -113,7 +113,7 @@ const SelectSource = ({ handleNextStep }: { handleNextStep: () => void }) => {
|
|||||||
integrationProviders[integration.provider]
|
integrationProviders[integration.provider]
|
||||||
?.icon
|
?.icon
|
||||||
}
|
}
|
||||||
<span className="ml-2 block truncate font-normal">
|
<span className="ml-2 block truncate text-sm font-normal">
|
||||||
{
|
{
|
||||||
integrationProviders[integration.provider]
|
integrationProviders[integration.provider]
|
||||||
?.name
|
?.name
|
||||||
@@ -125,12 +125,12 @@ const SelectSource = ({ handleNextStep }: { handleNextStep: () => void }) => {
|
|||||||
) : (
|
) : (
|
||||||
<Listbox.Option
|
<Listbox.Option
|
||||||
key="trello_placeholder"
|
key="trello_placeholder"
|
||||||
className="relative cursor-default select-none px-1"
|
className="font-sm relative cursor-default select-none px-1"
|
||||||
value="trello"
|
value="trello"
|
||||||
>
|
>
|
||||||
<div className="flex items-center rounded-[5px] p-1 hover:bg-light-200 dark:hover:bg-dark-400">
|
<div className="flex items-center rounded-[5px] p-1 text-sm hover:bg-light-200 dark:hover:bg-dark-400">
|
||||||
{integrationProviders.trello?.icon}
|
{integrationProviders.trello?.icon}
|
||||||
<span className="ml-2 block truncate font-normal">
|
<span className="ml-2 block truncate text-sm">
|
||||||
{integrationProviders.trello?.name}
|
{integrationProviders.trello?.name}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,28 +1,59 @@
|
|||||||
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { useEffect } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { HiXMark } from "react-icons/hi2";
|
import { HiXMark } from "react-icons/hi2";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
import type { NewBoardInput } from "@kan/api/types";
|
import type { Template } from "./TemplateBoards";
|
||||||
|
|
||||||
import Button from "~/components/Button";
|
import Button from "~/components/Button";
|
||||||
import Input from "~/components/Input";
|
import Input from "~/components/Input";
|
||||||
|
import Toggle from "~/components/Toggle";
|
||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { useWorkspace } from "~/providers/workspace";
|
import { useWorkspace } from "~/providers/workspace";
|
||||||
import { api } from "~/utils/api";
|
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() {
|
export function NewBoardForm() {
|
||||||
const utils = api.useUtils();
|
const utils = api.useUtils();
|
||||||
const { closeModal } = useModal();
|
const { closeModal } = useModal();
|
||||||
const { workspace } = useWorkspace();
|
const { workspace } = useWorkspace();
|
||||||
|
const [showTemplates, setShowTemplates] = useState(false);
|
||||||
|
|
||||||
const { register, handleSubmit } = useForm<NewBoardInput>({
|
const templates = getTemplates();
|
||||||
|
|
||||||
|
const {
|
||||||
|
register,
|
||||||
|
handleSubmit,
|
||||||
|
watch,
|
||||||
|
setValue,
|
||||||
|
formState: { errors },
|
||||||
|
} = useForm<NewBoardInputWithTemplate>({
|
||||||
|
resolver: zodResolver(schema),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
name: "",
|
name: "",
|
||||||
workspacePublicId: workspace.publicId || "",
|
workspacePublicId: workspace.publicId || "",
|
||||||
|
template: null,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const currentTemplate = watch("template");
|
||||||
|
|
||||||
const refetchBoards = () => utils.board.all.refetch();
|
const refetchBoards = () => utils.board.all.refetch();
|
||||||
|
|
||||||
const createBoard = api.board.create.useMutation({
|
const createBoard = api.board.create.useMutation({
|
||||||
@@ -32,8 +63,13 @@ export function NewBoardForm() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = (data: NewBoardInput) => {
|
const onSubmit = (data: NewBoardInputWithTemplate) => {
|
||||||
createBoard.mutate(data);
|
createBoard.mutate({
|
||||||
|
name: data.name,
|
||||||
|
workspacePublicId: data.workspacePublicId,
|
||||||
|
lists: data.template?.lists ?? [],
|
||||||
|
labels: data.template?.labels ?? [],
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -62,6 +98,7 @@ export function NewBoardForm() {
|
|||||||
id="name"
|
id="name"
|
||||||
placeholder={t`Name`}
|
placeholder={t`Name`}
|
||||||
{...register("name", { required: true })}
|
{...register("name", { required: true })}
|
||||||
|
errorMessage={errors.name?.message}
|
||||||
onKeyDown={async (e) => {
|
onKeyDown={async (e) => {
|
||||||
if (e.key === "Enter") {
|
if (e.key === "Enter") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -70,8 +107,22 @@ export function NewBoardForm() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</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">
|
<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>
|
<div>
|
||||||
<Button type="submit" isLoading={createBoard.isPending}>
|
<Button type="submit" isLoading={createBoard.isPending}>
|
||||||
{t`Create board`}
|
{t`Create board`}
|
||||||
|
|||||||
191
apps/web/src/views/boards/components/TemplateBoards.tsx
Normal file
191
apps/web/src/views/boards/components/TemplateBoards.tsx
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
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,6 +1,7 @@
|
|||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { HiArrowDownTray, HiOutlinePlusSmall } from "react-icons/hi2";
|
import { HiArrowDownTray, HiOutlinePlusSmall } from "react-icons/hi2";
|
||||||
|
|
||||||
|
import Button from "~/components/Button";
|
||||||
import Modal from "~/components/modal";
|
import Modal from "~/components/modal";
|
||||||
import { NewWorkspaceForm } from "~/components/NewWorkspaceForm";
|
import { NewWorkspaceForm } from "~/components/NewWorkspaceForm";
|
||||||
import { PageHead } from "~/components/PageHead";
|
import { PageHead } from "~/components/PageHead";
|
||||||
@@ -19,38 +20,32 @@ export default function BoardsPage() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHead title={t`Boards | ${workspace.name ?? "Workspace"}`} />
|
<PageHead title={t`Boards | ${workspace.name ?? "Workspace"}`} />
|
||||||
<div className="h-full p-8">
|
<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 justify-between">
|
<div className="mb-8 flex w-full items-center justify-between">
|
||||||
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
|
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
|
||||||
{t`Boards`}
|
{t`Boards`}
|
||||||
</h1>
|
</h1>
|
||||||
<div className="flex">
|
<div className="flex gap-2">
|
||||||
<button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
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"
|
variant="secondary"
|
||||||
onClick={() => openModal("IMPORT_BOARDS")}
|
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`}
|
{t`Import`}
|
||||||
</button>
|
</Button>
|
||||||
<button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
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"
|
variant="primary"
|
||||||
onClick={() => openModal("NEW_BOARD")}
|
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`}
|
{t`New`}
|
||||||
</button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ const Comment = ({
|
|||||||
html={watch("comment")}
|
html={watch("comment")}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
onChange={(e) => setValue("comment", e.target.value)}
|
onChange={(e) => setValue("comment", e.target.value)}
|
||||||
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"
|
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"
|
||||||
/>
|
/>
|
||||||
<div className="flex justify-end space-x-2">
|
<div className="flex justify-end space-x-2">
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -32,29 +32,18 @@ interface FormValues {
|
|||||||
description: string;
|
description: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function CardPage() {
|
export function CardRightPanel() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const utils = api.useUtils();
|
|
||||||
const { modalContentType, entityId } = useModal();
|
|
||||||
const { showPopup } = usePopup();
|
|
||||||
const { workspace } = useWorkspace();
|
|
||||||
|
|
||||||
const cardId = Array.isArray(router.query.cardId)
|
const cardId = Array.isArray(router.query.cardId)
|
||||||
? router.query.cardId[0]
|
? router.query.cardId[0]
|
||||||
: router.query.cardId;
|
: router.query.cardId;
|
||||||
|
|
||||||
const { data: card, isLoading } = api.card.byId.useQuery({
|
const { data: card } = api.card.byId.useQuery({
|
||||||
cardPublicId: cardId ?? "",
|
cardPublicId: cardId ?? "",
|
||||||
});
|
});
|
||||||
|
|
||||||
const refetchCard = async () => {
|
|
||||||
if (cardId) await utils.card.byId.refetch({ cardPublicId: cardId });
|
|
||||||
};
|
|
||||||
|
|
||||||
const board = card?.list.board;
|
const board = card?.list.board;
|
||||||
const boardId = board?.publicId;
|
|
||||||
const labels = board?.labels;
|
const labels = board?.labels;
|
||||||
const activities = card?.activities;
|
|
||||||
const workspaceMembers = board?.workspace.members;
|
const workspaceMembers = board?.workspace.members;
|
||||||
const selectedLabels = card?.labels;
|
const selectedLabels = card?.labels;
|
||||||
const selectedMembers = card?.members;
|
const selectedMembers = card?.members;
|
||||||
@@ -109,6 +98,59 @@ export default function CardPage() {
|
|||||||
};
|
};
|
||||||
}) ?? [];
|
}) ?? [];
|
||||||
|
|
||||||
|
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({
|
const updateCard = api.card.update.useMutation({
|
||||||
onError: () => {
|
onError: () => {
|
||||||
showPopup({
|
showPopup({
|
||||||
@@ -138,8 +180,6 @@ export default function CardPage() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const description = watch("description");
|
|
||||||
|
|
||||||
if (!cardId) return <></>;
|
if (!cardId) return <></>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -149,7 +189,7 @@ export default function CardPage() {
|
|||||||
/>
|
/>
|
||||||
<div className="flex h-full flex-1 flex-row">
|
<div className="flex h-full flex-1 flex-row">
|
||||||
<div className="flex h-full w-full flex-col overflow-hidden">
|
<div className="flex h-full w-full flex-col overflow-hidden">
|
||||||
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto p-8">
|
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto p-6 md:p-8">
|
||||||
<div className="mb-8 flex w-full items-center justify-between">
|
<div className="mb-8 flex w-full items-center justify-between">
|
||||||
{!card && isLoading && (
|
{!card && isLoading && (
|
||||||
<div className="flex space-x-2">
|
<div className="flex space-x-2">
|
||||||
@@ -196,7 +236,7 @@ export default function CardPage() {
|
|||||||
</div>
|
</div>
|
||||||
{card && (
|
{card && (
|
||||||
<>
|
<>
|
||||||
<div className="mb-10 flex w-full max-w-2xl justify-between">
|
<div className="mb-10 flex w-full max-w-2xl flex-col justify-between">
|
||||||
<form
|
<form
|
||||||
onSubmit={handleSubmit(onSubmit)}
|
onSubmit={handleSubmit(onSubmit)}
|
||||||
className="w-full space-y-6"
|
className="w-full space-y-6"
|
||||||
@@ -230,32 +270,6 @@ export default function CardPage() {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</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>
|
<Modal>
|
||||||
{modalContentType === "NEW_LABEL" && (
|
{modalContentType === "NEW_LABEL" && (
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ import { t } from "@lingui/core/macro";
|
|||||||
import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2";
|
import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
|
|
||||||
|
import { authClient } from "@kan/auth/client";
|
||||||
|
|
||||||
import Avatar from "~/components/Avatar";
|
import Avatar from "~/components/Avatar";
|
||||||
import Button from "~/components/Button";
|
import Button from "~/components/Button";
|
||||||
import Dropdown from "~/components/Dropdown";
|
import Dropdown from "~/components/Dropdown";
|
||||||
@@ -26,6 +28,7 @@ export default function MembersPage() {
|
|||||||
|
|
||||||
const TableRow = ({
|
const TableRow = ({
|
||||||
memberPublicId,
|
memberPublicId,
|
||||||
|
memberId,
|
||||||
memberName,
|
memberName,
|
||||||
memberEmail,
|
memberEmail,
|
||||||
memberImage,
|
memberImage,
|
||||||
@@ -35,6 +38,7 @@ export default function MembersPage() {
|
|||||||
showSkeleton,
|
showSkeleton,
|
||||||
}: {
|
}: {
|
||||||
memberPublicId?: string;
|
memberPublicId?: string;
|
||||||
|
memberId?: string | null | undefined;
|
||||||
memberName?: string | null | undefined;
|
memberName?: string | null | undefined;
|
||||||
memberEmail?: string | null | undefined;
|
memberEmail?: string | null | undefined;
|
||||||
memberImage?: string | null | undefined;
|
memberImage?: string | null | undefined;
|
||||||
@@ -43,13 +47,19 @@ export default function MembersPage() {
|
|||||||
isLastRow?: boolean;
|
isLastRow?: boolean;
|
||||||
showSkeleton?: boolean;
|
showSkeleton?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
|
const { data: session } = authClient.useSession();
|
||||||
return (
|
return (
|
||||||
<tr className="rounded-b-lg">
|
<tr className="rounded-b-lg">
|
||||||
<td className={twMerge("w-[65%]", isLastRow ? "rounded-bl-lg" : "")}>
|
<td
|
||||||
<div className="flex items-center p-4">
|
className={twMerge(
|
||||||
|
"w-full sm:w-[65%]",
|
||||||
|
isLastRow ? "rounded-bl-lg" : "",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<div className="flex items-center p-2 sm:p-4">
|
||||||
<div className="flex-shrink-0">
|
<div className="flex-shrink-0">
|
||||||
{showSkeleton ? (
|
{showSkeleton ? (
|
||||||
<div className="h-9 w-9 animate-pulse rounded-full bg-light-200 dark:bg-dark-200" />
|
<div className="h-8 w-8 animate-pulse rounded-full bg-light-200 dark:bg-dark-200 sm:h-9 sm:w-9" />
|
||||||
) : (
|
) : (
|
||||||
<Avatar
|
<Avatar
|
||||||
name={memberName ?? ""}
|
name={memberName ?? ""}
|
||||||
@@ -63,7 +73,7 @@ export default function MembersPage() {
|
|||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<p
|
<p
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"mr-2 text-sm font-medium text-neutral-900 dark:text-dark-1000",
|
"mr-2 truncate text-xs font-medium text-neutral-900 dark:text-dark-1000 sm:text-sm",
|
||||||
showSkeleton &&
|
showSkeleton &&
|
||||||
"md mb-2 h-3 w-[125px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
|
"md mb-2 h-3 w-[125px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
|
||||||
)}
|
)}
|
||||||
@@ -73,7 +83,7 @@ export default function MembersPage() {
|
|||||||
</div>
|
</div>
|
||||||
<p
|
<p
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"truncate text-sm text-dark-900",
|
"truncate text-xs text-dark-900 sm:text-sm",
|
||||||
showSkeleton &&
|
showSkeleton &&
|
||||||
"h-3 w-[175px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
|
"h-3 w-[175px] animate-pulse rounded-sm bg-light-200 dark:bg-dark-200",
|
||||||
)}
|
)}
|
||||||
@@ -86,15 +96,15 @@ export default function MembersPage() {
|
|||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"w-[35%] min-w-[150px]",
|
"w-auto min-w-[120px] sm:w-[35%] sm:min-w-[150px]",
|
||||||
isLastRow && "rounded-br-lg",
|
isLastRow && "rounded-br-lg",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex w-full items-center justify-between px-3">
|
<div className="flex w-full items-center justify-between px-2 sm:px-3">
|
||||||
<div>
|
<div className="flex flex-col sm:flex-row sm:items-center">
|
||||||
<span
|
<span
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"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",
|
"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]",
|
||||||
showSkeleton &&
|
showSkeleton &&
|
||||||
"h-5 w-[50px] animate-pulse bg-light-200 ring-0 dark:bg-dark-200",
|
"h-5 w-[50px] animate-pulse bg-light-200 ring-0 dark:bg-dark-200",
|
||||||
)}
|
)}
|
||||||
@@ -103,7 +113,7 @@ export default function MembersPage() {
|
|||||||
memberRole.charAt(0).toUpperCase() + memberRole.slice(1)}
|
memberRole.charAt(0).toUpperCase() + memberRole.slice(1)}
|
||||||
</span>
|
</span>
|
||||||
{memberStatus === "invited" && (
|
{memberStatus === "invited" && (
|
||||||
<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">
|
<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]">
|
||||||
{t`Pending`}
|
{t`Pending`}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
@@ -114,24 +124,26 @@ export default function MembersPage() {
|
|||||||
(workspace.role !== "admin" || showSkeleton) && "hidden",
|
(workspace.role !== "admin" || showSkeleton) && "hidden",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Dropdown
|
{session?.user.id !== memberId && (
|
||||||
items={[
|
<Dropdown
|
||||||
{
|
items={[
|
||||||
label: t`Remove member`,
|
{
|
||||||
action: () =>
|
label: t`Remove member`,
|
||||||
openModal(
|
action: () =>
|
||||||
"REMOVE_MEMBER",
|
openModal(
|
||||||
memberPublicId,
|
"REMOVE_MEMBER",
|
||||||
memberEmail ?? "",
|
memberPublicId,
|
||||||
),
|
memberEmail ?? "",
|
||||||
},
|
),
|
||||||
]}
|
},
|
||||||
>
|
]}
|
||||||
<HiEllipsisHorizontal
|
>
|
||||||
size={25}
|
<HiEllipsisHorizontal
|
||||||
className="text-light-900 dark:text-dark-900"
|
size={20}
|
||||||
/>
|
className="text-light-900 dark:text-dark-900 sm:size-[25px]"
|
||||||
</Dropdown>
|
/>
|
||||||
|
</Dropdown>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -142,7 +154,7 @@ export default function MembersPage() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHead title={t`Members | ${workspace.name ?? "Workspace"}`} />
|
<PageHead title={t`Members | ${workspace.name ?? "Workspace"}`} />
|
||||||
<div className="m-auto max-w-[1600px] px-28 py-12">
|
<div className="m-auto h-full max-w-[1600px] p-6 px-5 md:px-28 md:py-12">
|
||||||
<div className="mb-8 flex w-full justify-between">
|
<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]">
|
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
|
||||||
{t`Members`}
|
{t`Members`}
|
||||||
@@ -159,21 +171,21 @@ export default function MembersPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-8 flow-root">
|
<div className="mt-8 flow-root">
|
||||||
<div className="-mx-4 -my-2 overflow-x-visible sm:-mx-6 lg:-mx-8">
|
<div className="-mx-4 -my-2 overflow-x-auto 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="inline-block min-w-full px-4 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">
|
<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">
|
<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">
|
<thead className="rounded-t-lg bg-light-300 dark:bg-dark-200">
|
||||||
<tr>
|
<tr>
|
||||||
<th
|
<th
|
||||||
scope="col"
|
scope="col"
|
||||||
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"
|
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"
|
||||||
>
|
>
|
||||||
{t`User`}
|
{t`User`}
|
||||||
</th>
|
</th>
|
||||||
<th
|
<th
|
||||||
scope="col"
|
scope="col"
|
||||||
className="w-[35%] rounded-tr-lg px-3 py-3.5 text-left text-sm font-semibold text-light-900 dark:text-dark-900"
|
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%]"
|
||||||
>
|
>
|
||||||
{t`Role`}
|
{t`Role`}
|
||||||
</th>
|
</th>
|
||||||
@@ -185,6 +197,7 @@ export default function MembersPage() {
|
|||||||
<TableRow
|
<TableRow
|
||||||
key={member.publicId}
|
key={member.publicId}
|
||||||
memberPublicId={member.publicId}
|
memberPublicId={member.publicId}
|
||||||
|
memberId={member.user?.id}
|
||||||
memberName={member.user?.name}
|
memberName={member.user?.name}
|
||||||
memberEmail={member.user?.email ?? member.email}
|
memberEmail={member.user?.email ?? member.email}
|
||||||
memberImage={member.user?.image}
|
memberImage={member.user?.image}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ export default function SettingsPage() {
|
|||||||
<div className="flex h-full w-full flex-col overflow-hidden">
|
<div className="flex h-full w-full flex-col overflow-hidden">
|
||||||
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto">
|
<div className="h-full max-h-[calc(100vh-4rem)] overflow-y-auto">
|
||||||
<PageHead title={t`Settings | ${workspace.name ?? "Workspace"}`} />
|
<PageHead title={t`Settings | ${workspace.name ?? "Workspace"}`} />
|
||||||
<div className="px-28 py-12">
|
<div className="m-auto max-w-[1600px] px-5 py-6 md:px-28 md:py-12">
|
||||||
<div className="mb-8 flex w-full justify-between">
|
<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]">
|
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
|
||||||
{t`Settings`}
|
{t`Settings`}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
"@kan/stripe": "workspace:^",
|
"@kan/stripe": "workspace:^",
|
||||||
"@trpc/server": "catalog:",
|
"@trpc/server": "catalog:",
|
||||||
"superjson": "2.2.1",
|
"superjson": "2.2.1",
|
||||||
"trpc-to-openapi": "^2.1.0",
|
"trpc-to-openapi": "^2.3.2",
|
||||||
"zod": "catalog:"
|
"zod": "catalog:"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import { z } from "zod";
|
|||||||
import * as boardRepo from "@kan/db/repository/board.repo";
|
import * as boardRepo from "@kan/db/repository/board.repo";
|
||||||
import * as cardRepo from "@kan/db/repository/card.repo";
|
import * as cardRepo from "@kan/db/repository/card.repo";
|
||||||
import * as activityRepo from "@kan/db/repository/cardActivity.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 listRepo from "@kan/db/repository/list.repo";
|
||||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||||
|
import { colours } from "@kan/shared/constants";
|
||||||
import { generateSlug, generateUID } from "@kan/shared/utils";
|
import { generateSlug, generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
||||||
@@ -149,8 +151,10 @@ export const boardRouter = createTRPCRouter({
|
|||||||
})
|
})
|
||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
name: z.string().min(1),
|
name: z.string().min(1).max(100),
|
||||||
workspacePublicId: z.string().min(12),
|
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>>>())
|
.output(z.custom<Awaited<ReturnType<typeof boardRepo.create>>>())
|
||||||
@@ -199,6 +203,30 @@ export const boardRouter = createTRPCRouter({
|
|||||||
code: "INTERNAL_SERVER_ERROR",
|
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;
|
return result;
|
||||||
}),
|
}),
|
||||||
update: protectedProcedure
|
update: protectedProcedure
|
||||||
@@ -352,40 +380,40 @@ export const boardRouter = createTRPCRouter({
|
|||||||
|
|
||||||
return { success: true };
|
return { success: true };
|
||||||
}),
|
}),
|
||||||
checkSlugAvailability: publicProcedure
|
checkSlugAvailability: publicProcedure
|
||||||
.meta({
|
.meta({
|
||||||
openapi: {
|
openapi: {
|
||||||
summary: "Check if a board slug is available",
|
summary: "Check if a board slug is available",
|
||||||
method: "GET",
|
method: "GET",
|
||||||
path: "/boards/{boardPublicId}/check-slug-availability",
|
path: "/boards/{boardPublicId}/check-slug-availability",
|
||||||
description: "Checks if a board slug is available",
|
description: "Checks if a board slug is available",
|
||||||
tags: ["Boards"],
|
tags: ["Boards"],
|
||||||
protect: true,
|
protect: true,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
boardSlug: z
|
boardSlug: z
|
||||||
.string()
|
.string()
|
||||||
.min(3)
|
.min(3)
|
||||||
.max(24)
|
.max(24)
|
||||||
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/),
|
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/),
|
||||||
boardPublicId: z.string().min(12),
|
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,6 +55,7 @@ export const importRouter = createTRPCRouter({
|
|||||||
protect: true,
|
protect: true,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
.input(z.void())
|
||||||
.output(z.array(z.object({ id: z.string(), name: z.string() })))
|
.output(z.array(z.object({ id: z.string(), name: z.string() })))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const apiKey = apiKeys.trello;
|
const apiKey = apiKeys.trello;
|
||||||
|
|||||||
@@ -15,22 +15,47 @@ export const apiKeys = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const integrationRouter = createTRPCRouter({
|
export const integrationRouter = createTRPCRouter({
|
||||||
providers: protectedProcedure.query(async ({ ctx }) => {
|
providers: protectedProcedure
|
||||||
const user = ctx.user;
|
.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;
|
||||||
|
|
||||||
if (!user)
|
if (!user)
|
||||||
throw new TRPCError({
|
throw new TRPCError({
|
||||||
message: "User not authenticated",
|
message: "User not authenticated",
|
||||||
code: "UNAUTHORIZED",
|
code: "UNAUTHORIZED",
|
||||||
});
|
});
|
||||||
|
|
||||||
const integrations = await integrationsRepo.getProvidersForUser(
|
const integrations = await integrationsRepo.getProvidersForUser(
|
||||||
ctx.db,
|
ctx.db,
|
||||||
user.id,
|
user.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
return integrations;
|
return integrations;
|
||||||
}),
|
}),
|
||||||
disconnect: protectedProcedure
|
disconnect: protectedProcedure
|
||||||
.meta({
|
.meta({
|
||||||
openapi: {
|
openapi: {
|
||||||
|
|||||||
@@ -68,6 +68,20 @@ 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) => {
|
export const getByPublicId = async (db: dbClient, listPublicId: string) => {
|
||||||
return db.query.lists.findFirst({
|
return db.query.lists.findFirst({
|
||||||
columns: {
|
columns: {
|
||||||
|
|||||||
156
pnpm-lock.yaml
generated
156
pnpm-lock.yaml
generated
@@ -10,14 +10,14 @@ catalogs:
|
|||||||
specifier: ^5.59.15
|
specifier: ^5.59.15
|
||||||
version: 5.62.7
|
version: 5.62.7
|
||||||
'@trpc/client':
|
'@trpc/client':
|
||||||
specifier: ^11.0.0-rc.477
|
specifier: ^11.4.3
|
||||||
version: 11.0.0-rc.660
|
version: 11.4.3
|
||||||
'@trpc/react-query':
|
'@trpc/react-query':
|
||||||
specifier: ^11.0.0-rc.477
|
specifier: ^11.4.3
|
||||||
version: 11.0.0-rc.660
|
version: 11.4.3
|
||||||
'@trpc/server':
|
'@trpc/server':
|
||||||
specifier: ^11.0.0-rc.477
|
specifier: ^11.4.3
|
||||||
version: 11.0.0-rc.660
|
version: 11.4.3
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^9.12.0
|
specifier: ^9.12.0
|
||||||
version: 9.16.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)
|
version: 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)
|
||||||
'@trpc/client':
|
'@trpc/client':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)
|
version: 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
|
||||||
'@trpc/next':
|
'@trpc/next':
|
||||||
specifier: ^11.0.0-rc.660
|
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.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)
|
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)
|
||||||
'@trpc/react-query':
|
'@trpc/react-query':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
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)
|
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)
|
||||||
'@trpc/server':
|
'@trpc/server':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 11.0.0-rc.660(typescript@5.7.2)
|
version: 11.4.3(typescript@5.7.2)
|
||||||
aws-sdk:
|
aws-sdk:
|
||||||
specifier: ^2.1692.0
|
specifier: ^2.1692.0
|
||||||
version: 2.1692.0
|
version: 2.1692.0
|
||||||
@@ -291,13 +291,13 @@ importers:
|
|||||||
version: link:../stripe
|
version: link:../stripe
|
||||||
'@trpc/server':
|
'@trpc/server':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 11.0.0-rc.660(typescript@5.7.2)
|
version: 11.4.3(typescript@5.7.2)
|
||||||
superjson:
|
superjson:
|
||||||
specifier: 2.2.1
|
specifier: 2.2.1
|
||||||
version: 2.2.1
|
version: 2.2.1
|
||||||
trpc-to-openapi:
|
trpc-to-openapi:
|
||||||
specifier: ^2.1.0
|
specifier: ^2.3.2
|
||||||
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)
|
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)
|
||||||
zod:
|
zod:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 3.24.0
|
version: 3.24.0
|
||||||
@@ -2818,11 +2818,11 @@ packages:
|
|||||||
'@tootallnate/quickjs-emscripten@0.23.0':
|
'@tootallnate/quickjs-emscripten@0.23.0':
|
||||||
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
|
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
|
||||||
|
|
||||||
'@trpc/client@11.0.0-rc.660':
|
'@trpc/client@11.4.3':
|
||||||
resolution: {integrity: sha512-bNpkZEfyMGKHynYFxdLpY8nJ1n7E3JHKcd4Pe2cagmpkzOEF9tFT3kzNf+eLI8XMG8196lTRR0J0W2/1Q8/cug==}
|
resolution: {integrity: sha512-i2suttUCfColktXT8bqex5kHW5jpT15nwUh0hGSDiW1keN621kSUQKcLJ095blqQAUgB+lsmgSqSMmB4L9shQQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@trpc/server': 11.0.0-rc.660+74625d5e4
|
'@trpc/server': 11.4.3
|
||||||
typescript: '>=5.6.2'
|
typescript: '>=5.7.2'
|
||||||
|
|
||||||
'@trpc/next@11.0.0-rc.660':
|
'@trpc/next@11.0.0-rc.660':
|
||||||
resolution: {integrity: sha512-LQHdiVED8h+CJEAy/X9PDmY3fM8VPdZ+3bVkbmEiP4xoNnSKRTbSbknFyRzG9M2AogfIafF4zAZVwOvCxexyGw==}
|
resolution: {integrity: sha512-LQHdiVED8h+CJEAy/X9PDmY3fM8VPdZ+3bVkbmEiP4xoNnSKRTbSbknFyRzG9M2AogfIafF4zAZVwOvCxexyGw==}
|
||||||
@@ -2841,20 +2841,20 @@ packages:
|
|||||||
'@trpc/react-query':
|
'@trpc/react-query':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@trpc/react-query@11.0.0-rc.660':
|
'@trpc/react-query@11.4.3':
|
||||||
resolution: {integrity: sha512-U2BHtYVt+8jt0a8Nrrk5cep8O1UZRxtTCBHtXie9kmJyQWWml43KfHxL5ssnFywaFrDZQz6Ec7kIoOxR/CQNfg==}
|
resolution: {integrity: sha512-z+jhAiOBD22NNhHtvF0iFp9hO36YFA7M8AiUu/XtNmMxyLd3Y9/d1SMjMwlTdnGqxEGPo41VEWBrdhDUGtUuHg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tanstack/react-query': ^5.59.15
|
'@tanstack/react-query': ^5.80.3
|
||||||
'@trpc/client': 11.0.0-rc.660+74625d5e4
|
'@trpc/client': 11.4.3
|
||||||
'@trpc/server': 11.0.0-rc.660+74625d5e4
|
'@trpc/server': 11.4.3
|
||||||
react: '>=18.2.0'
|
react: '>=18.2.0'
|
||||||
react-dom: '>=18.2.0'
|
react-dom: '>=18.2.0'
|
||||||
typescript: '>=5.6.2'
|
typescript: '>=5.7.2'
|
||||||
|
|
||||||
'@trpc/server@11.0.0-rc.660':
|
'@trpc/server@11.4.3':
|
||||||
resolution: {integrity: sha512-QUapcZCNOpHT7ng9LceGc9ImkboWd0Go9ryrduZpL+p4jdfaC6409AQ3x4XEW6Wu3yBmZAn4CywCsDrDhjDy/w==}
|
resolution: {integrity: sha512-wnWq3wiLlMOlYkaIZz+qbuYA5udPTLS4GVVRyFkr6aT83xpdCHyVtURT+u4hSoIrOXQM9OPCNXSXsAujWZDdaw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=5.6.2'
|
typescript: '>=5.7.2'
|
||||||
|
|
||||||
'@tsconfig/node10@1.0.11':
|
'@tsconfig/node10@1.0.11':
|
||||||
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
|
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
|
||||||
@@ -3575,10 +3575,6 @@ packages:
|
|||||||
config-chain@1.1.13:
|
config-chain@1.1.13:
|
||||||
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
|
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:
|
constant-case@2.0.0:
|
||||||
resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
|
resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
|
||||||
|
|
||||||
@@ -3629,8 +3625,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
crossws@0.3.1:
|
crossws@0.3.5:
|
||||||
resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==}
|
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
|
||||||
|
|
||||||
css-box-model@1.2.1:
|
css-box-model@1.2.1:
|
||||||
resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==}
|
resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==}
|
||||||
@@ -4444,8 +4440,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
|
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
|
||||||
engines: {node: '>=6.0'}
|
engines: {node: '>=6.0'}
|
||||||
|
|
||||||
h3@1.13.0:
|
h3@1.15.1:
|
||||||
resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==}
|
resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==}
|
||||||
|
|
||||||
handlebars@4.7.8:
|
handlebars@4.7.8:
|
||||||
resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
|
resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
|
||||||
@@ -4977,9 +4973,6 @@ packages:
|
|||||||
lodash.castarray@4.4.0:
|
lodash.castarray@4.4.0:
|
||||||
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
|
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:
|
lodash.get@4.4.2:
|
||||||
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
|
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
|
||||||
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
|
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
|
||||||
@@ -5340,11 +5333,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
|
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
|
||||||
engines: {node: '>= 0.6'}
|
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:
|
mimic-fn@2.1.0:
|
||||||
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -5497,9 +5485,6 @@ packages:
|
|||||||
no-case@2.3.2:
|
no-case@2.3.2:
|
||||||
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
|
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
|
||||||
|
|
||||||
node-fetch-native@1.6.4:
|
|
||||||
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
|
|
||||||
|
|
||||||
node-fetch@2.7.0:
|
node-fetch@2.7.0:
|
||||||
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
|
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
|
||||||
engines: {node: 4.x || >=6.0.0}
|
engines: {node: 4.x || >=6.0.0}
|
||||||
@@ -5513,6 +5498,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
|
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
node-mock-http@1.0.1:
|
||||||
|
resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==}
|
||||||
|
|
||||||
node-plop@0.26.3:
|
node-plop@0.26.3:
|
||||||
resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
|
resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
|
||||||
engines: {node: '>=8.9.4'}
|
engines: {node: '>=8.9.4'}
|
||||||
@@ -5576,9 +5564,6 @@ packages:
|
|||||||
obuf@1.1.2:
|
obuf@1.1.2:
|
||||||
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
|
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
|
||||||
|
|
||||||
ohash@1.1.4:
|
|
||||||
resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==}
|
|
||||||
|
|
||||||
on-exit-leak-free@2.1.2:
|
on-exit-leak-free@2.1.2:
|
||||||
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
|
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
@@ -5597,8 +5582,8 @@ packages:
|
|||||||
openapi-types@12.1.3:
|
openapi-types@12.1.3:
|
||||||
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
|
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
|
||||||
|
|
||||||
openapi3-ts@4.3.3:
|
openapi3-ts@4.4.0:
|
||||||
resolution: {integrity: sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==}
|
resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==}
|
||||||
|
|
||||||
optionator@0.9.4:
|
optionator@0.9.4:
|
||||||
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
|
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
|
||||||
@@ -6736,12 +6721,12 @@ packages:
|
|||||||
trough@2.2.0:
|
trough@2.2.0:
|
||||||
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
|
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
|
||||||
|
|
||||||
trpc-to-openapi@2.1.0:
|
trpc-to-openapi@2.3.2:
|
||||||
resolution: {integrity: sha512-LODbI2a9LQamLpEz9hsqeMJBxpNT8KqfyICJhTVe8JBPZM8DvUkoICPlsdHf1KJVteoem/LlbwkD7loKYPWP1Q==}
|
resolution: {integrity: sha512-uDZou+5a+H77yhiqfzVRBXzTSX8/mQUGeFpr8+VtZmpzUBOmv5XYbyEtWpG7fOdGWZkB99wuuKeWUwNwwOGaXQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@trpc/server': ^11.0.0-rc.648
|
'@trpc/server': ^11.1.0
|
||||||
zod: ^3.23.8
|
zod: ^3.23.8
|
||||||
zod-openapi: ^4.1.0
|
zod-openapi: 4.2.4
|
||||||
|
|
||||||
ts-api-utils@1.4.3:
|
ts-api-utils@1.4.3:
|
||||||
resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
|
resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
|
||||||
@@ -6874,9 +6859,6 @@ packages:
|
|||||||
undici-types@6.19.8:
|
undici-types@6.19.8:
|
||||||
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
|
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
|
||||||
|
|
||||||
unenv@1.10.0:
|
|
||||||
resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==}
|
|
||||||
|
|
||||||
unified@10.1.2:
|
unified@10.1.2:
|
||||||
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
|
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
|
||||||
|
|
||||||
@@ -9709,33 +9691,33 @@ snapshots:
|
|||||||
|
|
||||||
'@tootallnate/quickjs-emscripten@0.23.0': {}
|
'@tootallnate/quickjs-emscripten@0.23.0': {}
|
||||||
|
|
||||||
'@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)':
|
'@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
|
'@trpc/server': 11.4.3(typescript@5.7.2)
|
||||||
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.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/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)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)
|
'@trpc/client': 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
|
||||||
'@trpc/server': 11.0.0-rc.660(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)
|
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: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@tanstack/react-query': 5.62.7(react@18.3.1)
|
'@tanstack/react-query': 5.62.7(react@18.3.1)
|
||||||
'@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)':
|
'@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)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tanstack/react-query': 5.62.7(react@18.3.1)
|
'@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/client': 11.4.3(@trpc/server@11.4.3(typescript@5.7.2))(typescript@5.7.2)
|
||||||
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
|
'@trpc/server': 11.4.3(typescript@5.7.2)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
'@trpc/server@11.0.0-rc.660(typescript@5.7.2)':
|
'@trpc/server@11.4.3(typescript@5.7.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
@@ -10615,8 +10597,6 @@ snapshots:
|
|||||||
ini: 1.3.8
|
ini: 1.3.8
|
||||||
proto-list: 1.2.4
|
proto-list: 1.2.4
|
||||||
|
|
||||||
consola@3.2.3: {}
|
|
||||||
|
|
||||||
constant-case@2.0.0:
|
constant-case@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
snake-case: 2.1.0
|
snake-case: 2.1.0
|
||||||
@@ -10668,7 +10648,7 @@ snapshots:
|
|||||||
shebang-command: 2.0.0
|
shebang-command: 2.0.0
|
||||||
which: 2.0.2
|
which: 2.0.2
|
||||||
|
|
||||||
crossws@0.3.1:
|
crossws@0.3.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
uncrypto: 0.1.3
|
uncrypto: 0.1.3
|
||||||
|
|
||||||
@@ -11642,18 +11622,17 @@ snapshots:
|
|||||||
section-matter: 1.0.0
|
section-matter: 1.0.0
|
||||||
strip-bom-string: 1.0.0
|
strip-bom-string: 1.0.0
|
||||||
|
|
||||||
h3@1.13.0:
|
h3@1.15.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
cookie-es: 1.2.2
|
cookie-es: 1.2.2
|
||||||
crossws: 0.3.1
|
crossws: 0.3.5
|
||||||
defu: 6.1.4
|
defu: 6.1.4
|
||||||
destr: 2.0.3
|
destr: 2.0.3
|
||||||
iron-webcrypto: 1.2.1
|
iron-webcrypto: 1.2.1
|
||||||
ohash: 1.1.4
|
node-mock-http: 1.0.1
|
||||||
radix3: 1.1.2
|
radix3: 1.1.2
|
||||||
ufo: 1.5.4
|
ufo: 1.5.4
|
||||||
uncrypto: 0.1.3
|
uncrypto: 0.1.3
|
||||||
unenv: 1.10.0
|
|
||||||
|
|
||||||
handlebars@4.7.8:
|
handlebars@4.7.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -12195,8 +12174,6 @@ snapshots:
|
|||||||
|
|
||||||
lodash.castarray@4.4.0: {}
|
lodash.castarray@4.4.0: {}
|
||||||
|
|
||||||
lodash.clonedeep@4.5.0: {}
|
|
||||||
|
|
||||||
lodash.get@4.4.2: {}
|
lodash.get@4.4.2: {}
|
||||||
|
|
||||||
lodash.isplainobject@4.0.6: {}
|
lodash.isplainobject@4.0.6: {}
|
||||||
@@ -12938,8 +12915,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
mime-db: 1.52.0
|
mime-db: 1.52.0
|
||||||
|
|
||||||
mime@3.0.0: {}
|
|
||||||
|
|
||||||
mimic-fn@2.1.0: {}
|
mimic-fn@2.1.0: {}
|
||||||
|
|
||||||
mini-svg-data-uri@1.4.4: {}
|
mini-svg-data-uri@1.4.4: {}
|
||||||
@@ -13076,8 +13051,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lower-case: 1.1.4
|
lower-case: 1.1.4
|
||||||
|
|
||||||
node-fetch-native@1.6.4: {}
|
|
||||||
|
|
||||||
node-fetch@2.7.0:
|
node-fetch@2.7.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
whatwg-url: 5.0.0
|
whatwg-url: 5.0.0
|
||||||
@@ -13085,6 +13058,8 @@ snapshots:
|
|||||||
node-gyp-build@4.8.4:
|
node-gyp-build@4.8.4:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
node-mock-http@1.0.1: {}
|
||||||
|
|
||||||
node-plop@0.26.3:
|
node-plop@0.26.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime-corejs3': 7.26.0
|
'@babel/runtime-corejs3': 7.26.0
|
||||||
@@ -13155,8 +13130,6 @@ snapshots:
|
|||||||
|
|
||||||
obuf@1.1.2: {}
|
obuf@1.1.2: {}
|
||||||
|
|
||||||
ohash@1.1.4: {}
|
|
||||||
|
|
||||||
on-exit-leak-free@2.1.2: {}
|
on-exit-leak-free@2.1.2: {}
|
||||||
|
|
||||||
once@1.4.0:
|
once@1.4.0:
|
||||||
@@ -13175,7 +13148,7 @@ snapshots:
|
|||||||
|
|
||||||
openapi-types@12.1.3: {}
|
openapi-types@12.1.3: {}
|
||||||
|
|
||||||
openapi3-ts@4.3.3:
|
openapi3-ts@4.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
yaml: 2.6.1
|
yaml: 2.6.1
|
||||||
|
|
||||||
@@ -14518,13 +14491,12 @@ snapshots:
|
|||||||
|
|
||||||
trough@2.2.0: {}
|
trough@2.2.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):
|
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):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@trpc/server': 11.0.0-rc.660(typescript@5.7.2)
|
'@trpc/server': 11.4.3(typescript@5.7.2)
|
||||||
co-body: 6.2.0
|
co-body: 6.2.0
|
||||||
h3: 1.13.0
|
h3: 1.15.1
|
||||||
lodash.clonedeep: 4.5.0
|
openapi3-ts: 4.4.0
|
||||||
openapi3-ts: 4.3.3
|
|
||||||
zod: 3.24.0
|
zod: 3.24.0
|
||||||
zod-openapi: 4.1.0(zod@3.24.0)
|
zod-openapi: 4.1.0(zod@3.24.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -14668,14 +14640,6 @@ snapshots:
|
|||||||
|
|
||||||
undici-types@6.19.8: {}
|
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:
|
unified@10.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 2.0.11
|
'@types/unist': 2.0.11
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ packages:
|
|||||||
|
|
||||||
catalog:
|
catalog:
|
||||||
"@tanstack/react-query": ^5.59.15
|
"@tanstack/react-query": ^5.59.15
|
||||||
"@trpc/client": ^11.0.0-rc.477
|
"@trpc/client": ^11.4.3
|
||||||
"@trpc/react-query": ^11.0.0-rc.477
|
"@trpc/react-query": ^11.4.3
|
||||||
"@trpc/server": ^11.0.0-rc.477
|
"@trpc/server": ^11.4.3
|
||||||
eslint: ^9.12.0
|
eslint: ^9.12.0
|
||||||
prettier: ^3.3.3
|
prettier: ^3.3.3
|
||||||
tailwindcss: ^3.4.14
|
tailwindcss: ^3.4.14
|
||||||
|
|||||||
Reference in New Issue
Block a user