Compare commits

..

141 Commits

Author SHA1 Message Date
Sabe Jones
76039020f5 4.135.0 2020-02-28 15:27:58 -06:00
Sabe Jones
cbcfb21deb chore(sprites): compile 2020-02-28 15:27:22 -06:00
Sabe Jones
f47ec3d85f feat(content): mystery set March 2020 2020-02-28 15:27:14 -06:00
Sabe Jones
aee08ba0f9 fix(bulk-email): wait 5s per 250 messages for server queue 2020-02-28 13:35:27 +00:00
Sabe Jones
e1f9cac37a fix(gdpr): forbidden domain 2020-02-28 13:30:41 +00:00
Sabe Jones
c9bb96d2be fix(gdpr): unique key fix 2020-02-28 13:30:15 +00:00
Sabe Jones
1bb337d235 4.134.4 2020-02-27 15:00:52 -06:00
Sabe Jones
07d6969764 Merge branch 'develop' into release 2020-02-27 15:00:46 -06:00
Sabe Jones
5807db9053 chore(news): Last Chance Bailey 2020-02-27 15:00:33 -06:00
Matteo Pagliazzi
a5a91a3a9c 4.134.3 2020-02-27 14:38:26 +01:00
Matteo Pagliazzi
3650426edc fix(task): hotfix for when task.attribute is sent as null 2020-02-27 14:25:26 +01:00
Alys
7579bec587 allow another guild to use banned words in appropriate contexts
This commit also puts the list of guilds into alphabetical order.
2020-02-26 07:45:31 +10:00
Alys
c1e7fed4d4 move a word from slurs to swears as discussed with beffymaroo and mods 2020-02-26 07:44:36 +10:00
agentx999
bad148148c Enchanted Armoire immediately updates XP stat in header (fixes #11827) (#11884)
* sync user if Armoire gives XP

* user can level up from Armoire

* remove XP amount from Armoire XP notification
2020-02-24 22:19:48 +01:00
Matteo Pagliazzi
0280513a00 improvements to apidocs comments (#11832)
* make corrections and improvements to apidocs (no code changes)

* make further minor tweaks to apidocs that were previously changed

* make one extra small change for consistency

* fix lines that are too long

Each line was fixed by one of these:
- changing the wording
- breaking into separate lines
- adding eslint-disable-line max-len (necessary for `@api ` lines because
a line break there causes the first part of the text to not be displayed
on the apidocs website)

* apply eslint-disable max-len around block comments that need to have a long line

The `@api ` lines can't have a line break in them because it would
cause the first part of the text to not be displayed on the apidocs
website.

Using `// eslint-disable-line max-len` at the end of an `@api `
line doesn't work, possibly because it's nesting a comment inside
a multi-line comment.

The only way I've found to ignore the `max-len` rule is to put
disable and enable comments around the whole comment block.
2020-02-24 21:22:29 +01:00
Sabe Jones
e502588abc Improve G1G1 process (#11792)
* WIP(g1g1): notif

* WIP(g1g1): notif cont'd

* WIP(gifting): partial modal implementation

* feat(gifting): select giftee modal

* fix(gifting): notification order, modal dismiss

* fix(modals): correct some repops

* fix(gifting): style updates

* fix(modals): new dismiss logic

* fix(modals): new dismiss no go??

* refactor(close): catch up with dismiss functionality

* refactor(g1g1): optimizations
2020-02-24 16:54:56 +01:00
Matteo Pagliazzi
5718d8396d build(deps): bump svg-inline-loader in /website/client (#11891)
Bumps [svg-inline-loader](https://github.com/sairion/svg-inline-loader) from 0.8.0 to 0.8.2.
- [Release notes](https://github.com/sairion/svg-inline-loader/releases)
- [Changelog](https://github.com/webpack-contrib/svg-inline-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sairion/svg-inline-loader/compare/v0.8.0...v0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:55 +01:00
dependabot-preview[bot]
b59a63ecbe build(deps): bump bootstrap-vue from 2.4.2 to 2.5.0 in /website/client (#11893)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.4.2 to 2.5.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.4.2...v2.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:39 +01:00
dependabot-preview[bot]
f0465aab5e build(deps): bump inspectpack from 4.3.1 to 4.4.0 in /website/client (#11892)
Bumps [inspectpack](https://github.com/FormidableLabs/inspectpack) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/FormidableLabs/inspectpack/releases)
- [Changelog](https://github.com/FormidableLabs/inspectpack/blob/master/HISTORY.md)
- [Commits](https://github.com/FormidableLabs/inspectpack/compare/v4.3.1...v4.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:29 +01:00
dependabot-preview[bot]
39ee78127c build(deps): bump eslint-plugin-vue in /website/client (#11894)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.2.0...v6.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:04 +01:00
Matteo Pagliazzi
4658025f3f build(deps-dev): bump sinon-chai from 3.4.0 to 3.5.0 (#11895)
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.4.0...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:53 +01:00
dependabot-preview[bot]
46417b4124 build(deps): bump superagent from 5.2.1 to 5.2.2 (#11896)
Bumps [superagent](https://github.com/visionmedia/superagent) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/visionmedia/superagent/releases)
- [Changelog](https://github.com/visionmedia/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/visionmedia/superagent/compare/v5.2.1...v5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:37 +01:00
dependabot-preview[bot]
706a7b441a build(deps): bump aws-sdk from 2.619.0 to 2.624.0 (#11897)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.619.0 to 2.624.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.619.0...v2.624.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:26 +01:00
dependabot-preview[bot]
a8baa8fcfe build(deps): bump mongoose from 5.8.11 to 5.9.2 (#11901)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.11 to 5.9.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.11...5.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:14 +01:00
dependabot-preview[bot]
368cf91e32 build(deps-dev): bump sinon-chai from 3.4.0 to 3.5.0
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.4.0...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:12:17 +00:00
dependabot-preview[bot]
23fc969432 build(deps): bump svg-inline-loader in /website/client
Bumps [svg-inline-loader](https://github.com/sairion/svg-inline-loader) from 0.8.0 to 0.8.2.
- [Release notes](https://github.com/sairion/svg-inline-loader/releases)
- [Changelog](https://github.com/webpack-contrib/svg-inline-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sairion/svg-inline-loader/compare/v0.8.0...v0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:08:33 +00:00
Sabe Jones
5db606dcfd fix(event): end Valentine's NPCs 2020-02-20 14:26:25 -06:00
Sabe Jones
a7fd8f7f52 4.134.2 2020-02-20 13:26:49 -06:00
Phillip Thelen
0b57c0a22d Unify behaviour for shops (#11829)
* Change price for basilist and dustbunnies

* return correct unlockCondition for moon quests

* Fix basilist not being buyable
2020-02-20 13:24:43 -06:00
Sabe Jones
12afdc1681 4.134.1 2020-02-20 11:59:03 -06:00
Sabe Jones
5e31278d2a chore(news): Bailey 2020-02-20 11:57:56 -06:00
Alys
0891908cba Merge remote-tracking branch 'upstream/develop' into apidocs-comment-fixes 2020-02-20 09:47:44 +10:00
Ian McKenzie
6a483edfe1 Resolves #11861 — Makes "quest already started" error descriptive (#11862)
* Resolves #11861

* Fix unit tests for translation changes

* Remove non-en quest.json locales
2020-02-19 16:07:17 +01:00
Melior
962f2b7579 Translated using Weblate (Vietnamese)
Currently translated at 34.1% (112 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

Translated using Weblate (Malay)

Currently translated at 81.1% (412 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ms/

Translated using Weblate (Filipino)

Currently translated at 92.7% (635 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fil/

Translated using Weblate (Catalan)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ca/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (French)

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Dutch)

Currently translated at 88.9% (1815 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/

Translated using Weblate (Dutch)

Currently translated at 68.2% (43 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/nl/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.5% (682 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/

Translated using Weblate (German)

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/

Translated using Weblate (Japanese)

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/

Translated using Weblate (French)

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (356 of 356 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.2% (504 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Dutch)

Currently translated at 93.3% (474 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nl/

Translated using Weblate (Dutch)

Currently translated at 56.9% (37 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/nl/
2020-02-18 21:18:48 +01:00
Sabe Jones
f413073d35 Merge branch 'release' into develop 2020-02-18 14:15:21 -06:00
Sabe Jones
0df2da6bf4 4.134.0 2020-02-18 14:14:59 -06:00
Matteo Pagliazzi
27b9ffb3f2 fix lint in challengeModal 2020-02-18 17:26:14 +01:00
Alejandro Aristizábal
79597cc72b Challenge exception-handling / clientside prize validation (#11769)
* fix: added client-side validation for challenge prizes

This commit aims to solve the issue #11765 by adding client-side 
validation for the challenge prize. This way, a user is unable to create 
a challenge if the prize is higher than what they can afford. Also, the 
loading property is reset to false after fetching the challenge, however 
this won't work if the request isn't successful.

* style: make validation conditional clearer

* fix: add exception handling when doing server requests.

This commit adds a basic try/catch block for handling server-side 
errors, and successfully enables the submit button if something failed. 
This may also fix #11545, in which a server-side error, difficult to 
valide from the client, was causing the submit button to stay disabled 
until reload.

* fix: reenable prize validation

* fix: bad indentation

* fix: Enable submit button on input change

* fix: add throttling to enableSubmit event.

* fix: reenable prize client-side validation.
2020-02-18 17:06:42 +01:00
Tutti Quintella
353009821f [Fix #11824] Show member Display Name if Username is blank (#11826)
* #11824 memberSearchDropdown: use member.profile.name if username is blank

* membwer.auth.local object could be empty
2020-02-18 17:00:30 +01:00
Sabe Jones
69179c61b1 feat(content): Cotton Candy Pink Prizes 2020-02-17 11:37:37 -06:00
artur-borys
c6f6722af7 Fix menu not closing after clicking on menu item (#11866) 2020-02-17 16:37:13 +01:00
Arun Sojan Parolikkal
b362b36e16 fix for three dots menu getting covered up by footer issue: #11227 (#11857) 2020-02-17 15:56:33 +01:00
Matteo Pagliazzi
f40bb9e91d Merge pull request #11798 from tthorpe88/11768
Show "no owner" when challenge leader cannot be found fixes #11768
2020-02-17 15:52:24 +01:00
Matteo Pagliazzi
bba068efd5 Merge pull request #11867 from artur-borys/drawer-remove-extra-padding
Remove drawer padding adjustment, fixes #11863
2020-02-17 15:27:20 +01:00
Matteo Pagliazzi
c89b20ce42 Merge pull request #11856 from neepsnikeep/neepsnikeep/issue_11790_inconsistent_user_count
Update user count and write text consistently. fixes #11790
2020-02-17 15:01:01 +01:00
Matteo Pagliazzi
a60022e54d Merge pull request #11859 from citrusella/apidocfixes
Fixing some typos, etc. in the API doc
2020-02-17 14:50:24 +01:00
Matteo Pagliazzi
1d72b0e4a2 Merge pull request #11880 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-knobs-5.3.13
build(deps): bump @storybook/addon-knobs from 5.3.12 to 5.3.13 in /website/client
2020-02-17 14:36:04 +01:00
Matteo Pagliazzi
15f4ce77ac Merge pull request #11882 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-notes-5.3.13
build(deps): bump @storybook/addon-notes from 5.3.12 to 5.3.13 in /website/client
2020-02-17 14:35:54 +01:00
dependabot-preview[bot]
05093c5552 build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.13/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:27:54 +00:00
dependabot-preview[bot]
ee733c644d build(deps): bump @storybook/addon-knobs in /website/client
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:27:51 +00:00
Matteo Pagliazzi
cb861d266d Merge pull request #11881 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.4.2
build(deps): bump bootstrap-vue from 2.4.0 to 2.4.2 in /website/client
2020-02-17 13:06:56 +01:00
Matteo Pagliazzi
c7b0269fda Merge pull request #11877 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/vue-5.3.13
build(deps): bump @storybook/vue from 5.3.12 to 5.3.13 in /website/client
2020-02-17 13:06:48 +01:00
Matteo Pagliazzi
bd5ef97f22 build(deps): bump @storybook/addon-actions in /website/client (#11879)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:06:11 +01:00
dependabot-preview[bot]
2e76d06f5e build(deps): bump eslint-plugin-vue in /website/client (#11878)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.1.2 to 6.2.0.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.1.2...v6.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:05:56 +01:00
dependabot-preview[bot]
b5353717c8 build(deps): bump @storybook/addon-links in /website/client (#11876)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:05:46 +01:00
dependabot-preview[bot]
52545018b6 build(deps): bump webpack from 4.41.5 to 4.41.6 in /website/client (#11874)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.5 to 4.41.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.5...v4.41.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:02:35 +01:00
dependabot-preview[bot]
d82aa869b2 build(deps): bump aws-sdk from 2.615.0 to 2.619.0 (#11871)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.615.0 to 2.619.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.615.0...v2.619.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:02:16 +01:00
dependabot-preview[bot]
107d633d37 build(deps): bump bootstrap-vue from 2.4.0 to 2.4.2 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.4.0 to 2.4.2.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.4.0...v2.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:16:13 +00:00
dependabot-preview[bot]
4f41a8c519 build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:14:05 +00:00
dependabot-preview[bot]
72f0e7ffae build(deps): bump @storybook/vue in /website/client
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:11:41 +00:00
Artur Boryś
30e5fad6b7 Remove drawer padding adjustment
Removed method adjusting page padding that assured that the
drawer didn't overlap any conent.
It's unneccesary now, because of footer.
2020-02-15 14:24:11 +01:00
citrusella
d3d7ad2693 Add missing quote in values allowed on gem item 2020-02-14 21:37:21 -05:00
Sabe Jones
0e590c3623 Merge branch 'release' into develop 2020-02-13 16:44:49 -06:00
Sabe Jones
6e0739c996 4.133.1 2020-02-13 16:44:03 -06:00
Sabe Jones
588fd43e65 fix(content): correct Ruby title 2020-02-13 16:43:47 -06:00
Sabe Jones
9a6f8021e3 Subscription Page Overhaul (#11823)
* WIP(settings): subscriber page improvements

* WIP(subscriptions): more design build-out

* fix(css): disabled button styles

* fix(css): better Amazon targeting

* WIP(g1g1): notif

* WIP(g1g1): notif cont'd

* WIP(gifting): partial modal implementation

* feat(gifting): select giftee modal

* fix(gifting): notification order, modal dismiss

* fix(modals): correct some repops

* fix(gifting): style updates

* fix(modals): also clean out "prev"

* refactor(modals): hide in dismiss event

* fix(modals): new dismiss logic

* fix(modals): new dismiss no go??

* WIP(subscription): unsubscribed state

* WIP(subscription): partial subscribed

* WIP(subscription): finish subscribed

* feat(subscription): revised sub page RC

* fix(subs): style tweaks

* fix(subs): moar style tweaks
2020-02-13 13:12:45 -06:00
Melior
bac84f6ce0 Merge branch 'origin/develop' into Weblate. 2020-02-13 19:49:43 +01:00
Melior
98c9f83001 Translated using Weblate (Catalan)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ca/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/

Translated using Weblate (Catalan)

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ca/

Translated using Weblate (Vietnamese)

Currently translated at 26.2% (86 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

Translated using Weblate (Catalan)

Currently translated at 97.8% (225 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ca/

Translated using Weblate (Catalan)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ca/

Translated using Weblate (Catalan)

Currently translated at 95.8% (487 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ca/

Translated using Weblate (Catalan)

Currently translated at 64.6% (42 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ca/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/

Translated using Weblate (German)

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Turkish)

Currently translated at 52.3% (33 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/tr/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
2020-02-13 19:48:58 +01:00
Sabe Jones
427d2127cb 4.133.0 2020-02-13 12:43:43 -06:00
Sabe Jones
c11a384a35 fix(news): link 2020-02-13 12:42:58 -06:00
Sabe Jones
36481b87fa fix(content): missing string 2020-02-12 18:37:03 -06:00
Sabe Jones
b8362af2f2 fix(content): missing potion data 2020-02-12 18:30:54 -06:00
citrusella
80de90cc5f Attempt to fix typos in the API doc 2020-02-12 15:40:44 -05:00
Sabe Jones
142d7e4348 chore(sprites): compile 2020-02-12 14:16:18 -06:00
Katha
181552c8d1 Update user count, it's currently 4,671,530 according to Alys. So the million count goes up to 4 and the texts mentioning the number of users is supposed to display this count. There have been two texts and the count is only in one of them with the other hardcoded. Seems like a good thing to not actually calculate the number of users for performance reasons. resolves #11790 2020-02-12 17:59:32 +01:00
Sabe Jones
6324ef72df feat(content): Magic Hatching Quest 2020-02-11 16:09:51 -06:00
Melior
3719efa874 Merge branch 'origin/develop' into Weblate. 2020-02-11 21:34:13 +01:00
Sabe Jones
107444043e Merge branch 'release' into develop 2020-02-11 14:33:25 -06:00
Sabe Jones
e6ba1ccca7 4.132.3 2020-02-11 14:30:49 -06:00
Sabe Jones
8edd2cfd14 Merge branch 'sabrecat/valentines-2020' into release 2020-02-11 14:30:27 -06:00
Sabe Jones
897b192852 fix(profiles): short circuit contributor
Attempted fix for #11830
2020-02-11 14:30:19 -06:00
Phillip Thelen
0648f5d412 Prevent server from cancelling still active subs (#11795)
* Prevent server from cancelling still active subs

* Allow subs to be cancelled before end date

* fix test

* fix test
2020-02-11 12:58:11 -06:00
dependabot-preview[bot]
732426c176 build(deps): bump @vue/cli-plugin-babel in /website/client (#11851)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:34:59 +01:00
dependabot-preview[bot]
4df8022811 build(deps): bump @vue/cli-service in /website/client (#11850)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:32:13 +01:00
dependabot-preview[bot]
b153c6d054 build(deps): bump @vue/cli-plugin-router in /website/client (#11836)
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:32:03 +01:00
dependabot-preview[bot]
c0e1a31937 build(deps): bump @storybook/addon-notes in /website/client (#11841)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:30:46 +01:00
dependabot-preview[bot]
7a13d061d7 build(deps): bump aws-sdk from 2.610.0 to 2.615.0 (#11854)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.610.0 to 2.615.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.610.0...v2.615.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:46 +01:00
dependabot-preview[bot]
ac29d662ef build(deps): bump @storybook/addon-links in /website/client (#11846)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:25 +01:00
dependabot-preview[bot]
247246b99d build(deps): bump @storybook/addon-actions in /website/client (#11837)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:14 +01:00
dependabot-preview[bot]
13fa1924ae build(deps): bump amplitude-js from 5.8.0 to 5.9.0 in /website/client (#11838)
Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/amplitude/amplitude-javascript/releases)
- [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amplitude/amplitude-javascript/compare/v5.8.0...v5.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:56 +01:00
dependabot-preview[bot]
d55400cc80 build(deps): bump @vue/cli-plugin-eslint in /website/client (#11839)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:44 +01:00
dependabot-preview[bot]
100c7c4395 build(deps): bump rimraf from 3.0.1 to 3.0.2 (#11840)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:25 +01:00
dependabot-preview[bot]
53510e3ea7 build(deps): bump @storybook/vue in /website/client (#11843)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:08 +01:00
dependabot-preview[bot]
c643f6a16c build(deps): bump bcrypt from 3.0.7 to 3.0.8 (#11847)
Bumps [bcrypt](https://github.com/kelektiv/node.bcrypt.js) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/kelektiv/node.bcrypt.js/releases)
- [Changelog](https://github.com/kelektiv/node.bcrypt.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kelektiv/node.bcrypt.js/compare/v3.0.7...v3.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:24:45 +01:00
dependabot-preview[bot]
1c4a941c88 build(deps): bump @storybook/addon-knobs in /website/client (#11849)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:24:13 +01:00
dependabot-preview[bot]
7c0da8051f build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#11835)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:23:56 +01:00
Melior
6c70076c30 Translated using Weblate (Malay)
Currently translated at 80.9% (411 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ms/

Translated using Weblate (German)

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Vietnamese)

Currently translated at 24.6% (81 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/vi/

Translated using Weblate (Malay)

Currently translated at 80.7% (410 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ms/

Translated using Weblate (Latin)

Currently translated at 87.4% (444 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Swedish)

Currently translated at 95.9% (141 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/sv/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/

Translated using Weblate (Swedish)

Currently translated at 89.8% (1834 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (German)

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

Translated using Weblate (Swedish)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sv/

Translated using Weblate (Malay)

Currently translated at 27.2% (40 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ms/

Translated using Weblate (Malay)

Currently translated at 97.0% (166 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ms/

Translated using Weblate (Malay)

Currently translated at 56.9% (37 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/
2020-02-11 11:11:39 +01:00
Alys
15976e906a apply eslint-disable max-len around block comments that need to have a long line
The `@api ` lines can't have a line break in them because it would
cause the first part of the text to not be displayed on the apidocs
website.

Using `// eslint-disable-line max-len` at the end of an `@api `
line doesn't work, possibly because it's nesting a comment inside
a multi-line comment.

The only way I've found to ignore the `max-len` rule is to put
disable and enable comments around the whole comment block.
2020-02-08 16:06:00 +10:00
Alys
ac52da5be2 fix lines that are too long
Each line was fixed by one of these:
- changing the wording
- breaking into separate lines
- adding eslint-disable-line max-len (necessary for `@api ` lines because
a line break there causes the first part of the text to not be displayed
on the apidocs website)
2020-02-08 14:55:21 +10:00
Alys
1b39338eec make one extra small change for consistency 2020-02-08 14:30:48 +10:00
Alys
6fe87a8140 make further minor tweaks to apidocs that were previously changed 2020-02-08 14:26:01 +10:00
Alys
c5d0ff63a5 make corrections and improvements to apidocs (no code changes) 2020-02-08 14:12:20 +10:00
Sabe Jones
6f7243c049 feat(event): Valentine's 2020 2020-02-07 14:16:25 -06:00
Melior
71cc313c9a Merge branch 'origin/develop' into Weblate. 2020-02-06 22:17:35 +01:00
Melior
788992b8fa Translated using Weblate (Malay)
Currently translated at 32.3% (21 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Malay)

Currently translated at 7.4% (11 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ms/

Translated using Weblate (Malay)

Currently translated at 0.9% (3 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ms/

Translated using Weblate (Malay)

Currently translated at 15.3% (10 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/

Translated using Weblate (Polish)

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pl/

Translated using Weblate (Spanish (Latin America))

Currently translated at 99.3% (296 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es_419/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Swedish)

Currently translated at 89.9% (1836 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (French)

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (Spanish)

Currently translated at 93.4% (1908 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

Translated using Weblate (Swedish)

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/

Translated using Weblate (French)

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (508 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/

Translated using Weblate (German)

Currently translated at 99.8% (507 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2020-02-06 22:17:18 +01:00
Sabe Jones
ff87a346d6 4.132.2 2020-02-06 15:14:53 -06:00
Sabe Jones
99a9bfe62e chore(news): Bailey 2020-02-06 15:13:55 -06:00
Sabe Jones
4f10f534ee Merge branch 'release' into develop 2020-02-05 05:32:18 -06:00
Melior
2081590a19 Merge branch 'origin/develop' into Weblate. 2020-02-04 22:45:36 +01:00
Melior
f719592237 Translated using Weblate (Korean)
Currently translated at 34.6% (51 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ko/

Translated using Weblate (Korean)

Currently translated at 99.4% (498 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Korean)

Currently translated at 69.8% (44 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ko/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/

Translated using Weblate (Swedish)

Currently translated at 98.7% (230 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/sv/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

Translated using Weblate (Spanish (Latin America))

Currently translated at 99.3% (146 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es_419/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Swedish)

Currently translated at 90.0% (1830 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Swedish)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Japanese)

Currently translated at 99.5% (232 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/

Translated using Weblate (Russian)

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Japanese)

Currently translated at 98.2% (665 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Spanish (Latin America))

Currently translated at 98.2% (226 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Spanish)

Currently translated at 92.6% (1883 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.5% (232 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.5% (232 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

Translated using Weblate (German)

Currently translated at 100.0% (233 of 233 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.7% (2027 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.7% (2027 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (2033 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (German)

Currently translated at 99.9% (2031 of 2033 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
2020-02-04 22:45:05 +01:00
Sabe Jones
25ac3db8c3 Merge branch 'release' into develop 2020-02-04 15:43:14 -06:00
dependabot-preview[bot]
57e12c67ac build(deps): bump @storybook/addon-knobs in /website/client (#11811)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:50:07 +01:00
dependabot-preview[bot]
775ed7f873 build(deps): bump @storybook/addon-notes in /website/client (#11810)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:49:52 +01:00
dependabot-preview[bot]
b608ca4d72 build(deps): bump @babel/core from 7.8.3 to 7.8.4 (#11814)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:23 +01:00
dependabot-preview[bot]
1536bbfce5 build(deps): bump js2xmlparser from 4.0.0 to 4.0.1 (#11818)
Bumps [js2xmlparser](https://github.com/michaelkourlas/node-js2xmlparser) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/michaelkourlas/node-js2xmlparser/releases)
- [Changelog](https://github.com/michaelkourlas/node-js2xmlparser/blob/master/CHANGES.md)
- [Commits](https://github.com/michaelkourlas/node-js2xmlparser/compare/v4.0.0...v4.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:15 +01:00
dependabot-preview[bot]
d4957f39a2 build(deps): bump @storybook/addon-links in /website/client (#11809)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:02 +01:00
dependabot-preview[bot]
6d8833a83f build(deps): bump rimraf from 3.0.0 to 3.0.1 (#11819)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:46:52 +01:00
dependabot-preview[bot]
bb7b1c15ee build(deps): bump mongoose from 5.8.9 to 5.8.11 (#11815)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.9 to 5.8.11.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.9...5.8.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:46:41 +01:00
dependabot-preview[bot]
9b43ff75fc build(deps): bump bootstrap-vue from 2.3.0 to 2.4.0 in /website/client (#11812)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.3.0...v2.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:53 +01:00
dependabot-preview[bot]
0aaac9988c build(deps): bump @storybook/vue from 5.3.9 to 5.3.10 in /website/client (#11808)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:42 +01:00
dependabot-preview[bot]
edcd587b03 build(deps): bump @storybook/addon-actions in /website/client (#11807)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:12 +01:00
dependabot-preview[bot]
e0b2437f60 build(deps): bump @babel/preset-env from 7.8.3 to 7.8.4 (#11817)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:44:23 +01:00
Nik
39b3ebe04a NPC style should apply to tier $800 only (#11797)
- Fix wrong level field
- Check if tier is 800 everywhere
2020-02-02 11:58:32 +01:00
Sabe Jones
a607882214 Merge branch 'release' into develop 2020-02-01 12:07:53 -06:00
Matteo Pagliazzi
ad3b673fda fix(member details): disable name style in header 2020-02-01 15:03:46 +01:00
Matteo Pagliazzi
4e6b411763 fix(dropdown): correct dropdown menus colors 2020-02-01 14:54:43 +01:00
Sabe Jones
dec7bd2ec6 Merge branch 'release' into develop 2020-02-01 07:27:02 -06:00
Sabe Jones
b2d997c5a6 Merge branch 'release' into develop 2020-02-01 07:21:23 -06:00
Sabe Jones
68aeda44d4 Merge branch 'release' into develop 2020-02-01 06:27:22 -06:00
Matteo Pagliazzi
d5c7ced5e3 Merge pull request #11763 from Kevin-DDR/fixTiers
contributor tier color/icon appear in guild/challenge member/participant list Fix for #11736
2020-02-01 12:01:34 +01:00
Matteo Pagliazzi
f45fdfbe0d Merge pull request #11708 from alexthomson1/issue-11615
stop dropdown menu getting stuck on hover - fixes #11615
2020-02-01 11:23:29 +01:00
Tom Thorpe
311df85dfc Show "no owner" when challenge leader cannot be found
Fixes #11768

- Check if `challenge.leader` is `null` before trying to display the user's name after "Created By:"
- Check the `challenge.leader` isn't `null` before trying to get its `id` for comparison when determining if the current user `canDelete` or `canEdit`
2020-02-01 09:17:59 +00:00
Melior
0e8fb62887 Merge branch 'origin/develop' into Weblate. 2020-01-31 13:55:45 +01:00
Melior
4d2b7dbf5c Translated using Weblate (Korean)
Currently translated at 9.7% (32 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ko/

Translated using Weblate (Korean)

Currently translated at 9.7% (32 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ko/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/pl/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Bengali)

Currently translated at 98.2% (55 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/bn/

Translated using Weblate (Bengali)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/bn/

Translated using Weblate (Latin)

Currently translated at 98.4% (64 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Polish)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/

Translated using Weblate (Japanese)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 90.2% (157 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (Japanese)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (Portuguese)

Currently translated at 87.6% (311 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Turkish)

Currently translated at 89.0% (155 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/tr/

Translated using Weblate (Turkish)

Currently translated at 98.5% (478 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/tr/

Translated using Weblate (Polish)

Currently translated at 87.1% (1766 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/

Translated using Weblate (Turkish)

Currently translated at 99.3% (326 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/tr/

Translated using Weblate (Polish)

Currently translated at 87.5% (593 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pl/

Translated using Weblate (Turkish)

Currently translated at 99.1% (228 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/tr/

Translated using Weblate (Russian)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Polish)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/

Translated using Weblate (Turkish)

Currently translated at 69.2% (45 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/

Translated using Weblate (Portuguese)

Currently translated at 72.3% (47 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt/

Translated using Weblate (Turkish)

Currently translated at 98.1% (207 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/tr/

Translated using Weblate (English)

Currently translated at 0.5% (3 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@lolcat/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/uk/

Translated using Weblate (Spanish)

Currently translated at 92.1% (1868 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Spanish)

Currently translated at 99.4% (498 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/

Translated using Weblate (Hungarian)

Currently translated at 33.8% (22 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/hu/

Translated using Weblate (Danish)

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/da/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (Danish)

Currently translated at 95.7% (340 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/da/

Translated using Weblate (Hungarian)

Currently translated at 32.3% (21 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/hu/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
2020-01-31 13:55:16 +01:00
alexthomson1
ab4009bd32 Refactoring dropdown.vue so that dropdownMobile calls openDropdown and closeDropdown 2020-01-25 18:28:26 -07:00
Kevin-DDR
b6407be529 Merge branch 'fixTiers' of https://github.com/Kevin-DDR/habitica into fixTiers 2020-01-20 20:32:07 +01:00
Kevin-DDR
3477dcd226 Added contributor tier color/icon in guild and challenge member list 2020-01-20 20:29:52 +01:00
Kevin-DDR
b41ad76c9e Added contributor tier color/icon in guild and challenge member list 2020-01-20 20:23:04 +01:00
alexthomson1
9bfc76cd20 Merge branch 'develop' into issue-11615 2020-01-12 00:20:13 -07:00
alexthomson1
8bd27b8313 Fixed bug in desktop navigation causing dropdown menu to get stuck until moused over again. 2020-01-11 23:16:24 -07:00
alexthomson1
8fd7e1cd00 Prevent accidentally closing tasks in edit mode. 2020-01-01 14:01:21 -07:00
355 changed files with 19983 additions and 16553 deletions

View File

@@ -0,0 +1,82 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200218_pet_color_achievements';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
const set = {
migration: MIGRATION_NAME,
};
if (user && user.items && user.items.pets) {
const pets = user.items.pets;
if (pets['Wolf-CottonCandyPink'] > 0
&& pets['TigerCub-CottonCandyPink'] > 0
&& pets['PandaCub-CottonCandyPink'] > 0
&& pets['LionCub-CottonCandyPink'] > 0
&& pets['Fox-CottonCandyPink'] > 0
&& pets['FlyingPig-CottonCandyPink'] > 0
&& pets['Dragon-CottonCandyPink'] > 0
&& pets['Cactus-CottonCandyPink'] > 0
&& pets['BearCub-CottonCandyPink'] > 0) {
set['achievements.tickledPink'] = true;
}
}
if (user && user.items && user.items.mounts) {
const mounts = user.items.mounts;
if (mounts['Wolf-CottonCandyPink']
&& mounts['TigerCub-CottonCandyPink']
&& mounts['PandaCub-CottonCandyPink']
&& mounts['LionCub-CottonCandyPink']
&& mounts['Fox-CottonCandyPink']
&& mounts['FlyingPig-CottonCandyPink']
&& mounts['Dragon-CottonCandyPink']
&& mounts['Cactus-CottonCandyPink']
&& mounts['BearCub-CottonCandyPink'] ) {
set['achievements.rosyOutlook'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2020-02-01') },
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -8,13 +8,16 @@ const BASE_URL = nconf.get('BASE_URL');
const EMAIL_SLUG = 'mandrill-email-slug'; // Set email template to send
const MIGRATION_NAME = 'bulk-email';
const progressCount = 1000;
const progressCount = 250;
let count = 0;
async function updateUser (user) {
count += 1;
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
if (count % progressCount === 0) {
console.warn(`${count} ${user._id}`);
await new Promise(resolve => setTimeout(resolve, 5000));
}
await sendTxn(
user,

443
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.132.1",
"version": "4.135.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -13,26 +13,26 @@
}
},
"@babel/compat-data": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.1.tgz",
"integrity": "sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw==",
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz",
"integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==",
"requires": {
"browserslist": "^4.8.2",
"browserslist": "^4.8.5",
"invariant": "^2.2.4",
"semver": "^5.5.0"
}
},
"@babel/core": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz",
"integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz",
"integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3",
"@babel/helpers": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/generator": "^7.8.4",
"@babel/helpers": "^7.8.4",
"@babel/parser": "^7.8.4",
"@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.3",
"@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
@@ -52,43 +52,6 @@
"@babel/highlight": "^7.8.3"
}
},
"@babel/generator": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz",
"integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==",
"requires": {
"@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.13",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
"integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
"requires": {
"@babel/helper-get-function-arity": "^7.8.3",
"@babel/template": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/helper-get-function-arity": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
"integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
"integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/highlight": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
@@ -99,47 +62,6 @@
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz",
"integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ=="
},
"@babel/template": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
"integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/traverse": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz",
"integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3",
"@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.13"
}
},
"@babel/types": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
"integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
"requires": {
"esutils": "^2.0.2",
"lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
}
},
"convert-source-map": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
@@ -151,9 +73,9 @@
}
},
"@babel/generator": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz",
"integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
"integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
"requires": {
"@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
@@ -189,14 +111,14 @@
}
},
"@babel/helper-compilation-targets": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz",
"integrity": "sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz",
"integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==",
"requires": {
"@babel/compat-data": "^7.8.1",
"browserslist": "^4.8.2",
"@babel/compat-data": "^7.8.4",
"browserslist": "^4.8.5",
"invariant": "^2.2.4",
"levenary": "^1.1.0",
"levenary": "^1.1.1",
"semver": "^5.5.0"
}
},
@@ -356,111 +278,13 @@
}
},
"@babel/helpers": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz",
"integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
"integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
"requires": {
"@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.3",
"@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3"
},
"dependencies": {
"@babel/code-frame": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
"requires": {
"@babel/highlight": "^7.8.3"
}
},
"@babel/generator": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz",
"integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==",
"requires": {
"@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.13",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
"integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
"requires": {
"@babel/helper-get-function-arity": "^7.8.3",
"@babel/template": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/helper-get-function-arity": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
"integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
"integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/highlight": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
"integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz",
"integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ=="
},
"@babel/template": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
"integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/traverse": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz",
"integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3",
"@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.13"
}
},
"@babel/types": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
"integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
"requires": {
"esutils": "^2.0.2",
"lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/highlight": {
@@ -474,9 +298,9 @@
}
},
"@babel/parser": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz",
"integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ=="
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
"integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw=="
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.8.3",
@@ -708,9 +532,9 @@
}
},
"@babel/plugin-transform-for-of": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz",
"integrity": "sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz",
"integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==",
"requires": {
"@babel/helper-plugin-utils": "^7.8.3"
}
@@ -807,9 +631,9 @@
}
},
"@babel/plugin-transform-parameters": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz",
"integrity": "sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz",
"integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==",
"requires": {
"@babel/helper-call-delegate": "^7.8.3",
"@babel/helper-get-function-arity": "^7.8.3",
@@ -875,9 +699,9 @@
}
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz",
"integrity": "sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
"integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
"requires": {
"@babel/helper-plugin-utils": "^7.8.3"
}
@@ -892,12 +716,12 @@
}
},
"@babel/preset-env": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz",
"integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz",
"integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==",
"requires": {
"@babel/compat-data": "^7.8.0",
"@babel/helper-compilation-targets": "^7.8.3",
"@babel/compat-data": "^7.8.4",
"@babel/helper-compilation-targets": "^7.8.4",
"@babel/helper-module-imports": "^7.8.3",
"@babel/helper-plugin-utils": "^7.8.3",
"@babel/plugin-proposal-async-generator-functions": "^7.8.3",
@@ -926,7 +750,7 @@
"@babel/plugin-transform-dotall-regex": "^7.8.3",
"@babel/plugin-transform-duplicate-keys": "^7.8.3",
"@babel/plugin-transform-exponentiation-operator": "^7.8.3",
"@babel/plugin-transform-for-of": "^7.8.3",
"@babel/plugin-transform-for-of": "^7.8.4",
"@babel/plugin-transform-function-name": "^7.8.3",
"@babel/plugin-transform-literals": "^7.8.3",
"@babel/plugin-transform-member-expression-literals": "^7.8.3",
@@ -937,7 +761,7 @@
"@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
"@babel/plugin-transform-new-target": "^7.8.3",
"@babel/plugin-transform-object-super": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.8.4",
"@babel/plugin-transform-property-literals": "^7.8.3",
"@babel/plugin-transform-regenerator": "^7.8.3",
"@babel/plugin-transform-reserved-words": "^7.8.3",
@@ -945,13 +769,13 @@
"@babel/plugin-transform-spread": "^7.8.3",
"@babel/plugin-transform-sticky-regex": "^7.8.3",
"@babel/plugin-transform-template-literals": "^7.8.3",
"@babel/plugin-transform-typeof-symbol": "^7.8.3",
"@babel/plugin-transform-typeof-symbol": "^7.8.4",
"@babel/plugin-transform-unicode-regex": "^7.8.3",
"@babel/types": "^7.8.3",
"browserslist": "^4.8.2",
"browserslist": "^4.8.5",
"core-js-compat": "^3.6.2",
"invariant": "^2.2.2",
"levenary": "^1.1.0",
"levenary": "^1.1.1",
"semver": "^5.5.0"
}
},
@@ -998,15 +822,15 @@
}
},
"@babel/traverse": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz",
"integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
"integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3",
"@babel/generator": "^7.8.4",
"@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/parser": "^7.8.4",
"@babel/types": "^7.8.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
@@ -2005,9 +1829,9 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"aws-sdk": {
"version": "2.610.0",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.610.0.tgz",
"integrity": "sha512-kqcoCTKjbxrUo2KeLQR2Jw6l4PvkbHXSDk8KqF2hXcpHibiOcMXZZPVe9X+s90RC/B2+qU95M7FImp9ByMcw7A==",
"version": "2.624.0",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.624.0.tgz",
"integrity": "sha512-6MhbdND7A5lEBiNSZ/HLwhKgrysmwTy6C47H7vfuVnY25hDkIND3C0PLqeRyskUqxv0RqsiAB4kqiMtpE08IGA==",
"requires": {
"buffer": "4.9.1",
"events": "1.1.1",
@@ -2337,12 +2161,12 @@
}
},
"bcrypt": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.7.tgz",
"integrity": "sha512-K5UglF9VQvBMHl/1elNyyFvAfOY9Bj+rpKrCSR9sFwcW8FywAYJSRwTURNej5TaAK2TEJkcJ6r6lh1YPmspx5Q==",
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.8.tgz",
"integrity": "sha512-jKV6RvLhI36TQnPDvUFqBEnGX9c8dRRygKxCZu7E+MgLfKZbmmXL8a7/SFFOyHoPNX9nV81cKRC5tbQfvEQtpw==",
"requires": {
"nan": "2.14.0",
"node-pre-gyp": "0.13.0"
"node-pre-gyp": "0.14.0"
},
"dependencies": {
"nan": {
@@ -2796,13 +2620,13 @@
"dev": true
},
"browserslist": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz",
"integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==",
"version": "4.8.6",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz",
"integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==",
"requires": {
"caniuse-lite": "^1.0.30001017",
"electron-to-chromium": "^1.3.322",
"node-releases": "^1.1.44"
"caniuse-lite": "^1.0.30001023",
"electron-to-chromium": "^1.3.341",
"node-releases": "^1.1.47"
}
},
"bson": {
@@ -2949,9 +2773,9 @@
"integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
},
"caniuse-lite": {
"version": "1.0.30001021",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001021.tgz",
"integrity": "sha512-wuMhT7/hwkgd8gldgp2jcrUjOU9RXJ4XxGumQeOsUr91l3WwmM68Cpa/ymCnWEDqakwFXhuDQbaKNHXBPgeE9g=="
"version": "1.0.30001023",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz",
"integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA=="
},
"capture-stack-trace": {
"version": "1.0.1",
@@ -4118,6 +3942,11 @@
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"denque": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
"integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -4403,9 +4232,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
"version": "1.3.338",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.338.tgz",
"integrity": "sha512-wlmfixuHEc9CkfOKgcqdtzBmRW4NStM9ptl5oPILY2UDyHuSXb3Yit+yLVyLObTgGuMMU36hhnfs2GDJId7ctA=="
"version": "1.3.344",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz",
"integrity": "sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw=="
},
"emitter-listener": {
"version": "1.1.2",
@@ -8315,11 +8144,11 @@
}
},
"js2xmlparser": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.0.tgz",
"integrity": "sha512-WuNgdZOXVmBk5kUPMcTcVUpbGRzLfNkv7+7APq7WiDihpXVKrgxo6wwRpRl9OQeEBgKCVk9mR7RbzrnNWC8oBw==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz",
"integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==",
"requires": {
"xmlcreate": "^2.0.0"
"xmlcreate": "^2.0.3"
}
},
"jsbn": {
@@ -8563,9 +8392,9 @@
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
},
"levenary": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.0.tgz",
"integrity": "sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
"integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
"requires": {
"leven": "^3.1.0"
}
@@ -9288,6 +9117,7 @@
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.4.1.tgz",
"integrity": "sha512-juqt5/Z42J4DcE7tG7UdVaTKmUC6zinF4yioPfpeOSNBieWSK6qCY+0tfGQcHLKrauWPDdMZVROHJOa8q2pWsA==",
"dev": true,
"requires": {
"bson": "^1.1.1",
"require_optional": "^1.0.1",
@@ -9296,13 +9126,13 @@
}
},
"mongoose": {
"version": "5.8.9",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.9.tgz",
"integrity": "sha512-gRazoLTQ0yuv4bk2z+nZEarKCyJ7WilFBkgrRqpOczUZUhk3i/FCe0rp8Mjc87dGXaHx54j8AjPJ0UKqJDXWMA==",
"version": "5.9.2",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.2.tgz",
"integrity": "sha512-Sa1qfqBvUfAgsrXpZjbBoIx8PEDUJSKF5Ous8gnBFI7TPiueSgJjg6GRA7A0teU8AB/vd0h8rl1rD5RQNfWhIw==",
"requires": {
"bson": "~1.1.1",
"kareem": "2.3.1",
"mongodb": "3.4.1",
"mongodb": "3.5.3",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.6.0",
"mquery": "3.2.2",
@@ -9311,6 +9141,30 @@
"safe-buffer": "5.1.2",
"sift": "7.0.1",
"sliced": "1.0.1"
},
"dependencies": {
"bl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz",
"integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==",
"requires": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
}
},
"mongodb": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.3.tgz",
"integrity": "sha512-II7P7A3XUdPiXRgcN96qIoRa1oesM6qLNZkzfPluNZjVkgQk3jnQwOT6/uDk4USRDTTLjNFw2vwfmbRGTA7msg==",
"requires": {
"bl": "^2.2.0",
"bson": "^1.1.1",
"denque": "^1.4.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2",
"saslprep": "^1.0.0"
}
}
}
},
"mongoose-legacy-pluralize": {
@@ -9538,9 +9392,9 @@
}
},
"needle": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz",
"integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.3.2.tgz",
"integrity": "sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w==",
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.4.4",
@@ -9773,9 +9627,9 @@
"integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
},
"node-pre-gyp": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz",
"integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==",
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz",
"integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==",
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
@@ -9786,7 +9640,7 @@
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
"tar": "^4.4.2"
},
"dependencies": {
"rimraf": {
@@ -9800,9 +9654,9 @@
}
},
"node-releases": {
"version": "1.1.46",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.46.tgz",
"integrity": "sha512-YOjdx+Uoh9FbRO7yVYbnbt1puRWPQMemR3SutLeyv2XfxKs1ihpe0OLAUwBPEP2ImNH/PZC7SEiC6j32dwRZ7g==",
"version": "1.1.47",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz",
"integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==",
"requires": {
"semver": "^6.3.0"
},
@@ -9883,9 +9737,12 @@
}
},
"npm-bundled": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
"integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g=="
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
"integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-conf": {
"version": "1.1.3",
@@ -9905,13 +9762,19 @@
}
}
},
"npm-normalize-package-bin": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
},
"npm-packlist": {
"version": "1.4.6",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz",
"integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==",
"version": "1.4.8",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
"integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
"npm-bundled": "^1.0.1",
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-run-path": {
@@ -11415,9 +11278,9 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rimraf": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
"integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"requires": {
"glob": "^7.1.3"
}
@@ -11707,9 +11570,9 @@
}
},
"sinon-chai": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.4.0.tgz",
"integrity": "sha512-BpVxsjEkGi6XPbDXrgWUe7Cb1ZzIfxKUbu/MmH5RoUnS7AXpKo3aIYIyQUg0FMvlUL05aPt7VZuAdaeQhEnWxg==",
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.5.0.tgz",
"integrity": "sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==",
"dev": true
},
"sinon-stub-promise": {
@@ -12351,9 +12214,9 @@
"integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls="
},
"superagent": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.2.1.tgz",
"integrity": "sha512-46b4Lkwnlz7Ebdv2FBbfuqb3kVkG1jV/SK3EW6NnwL9a3T4h5hHtegNEQfbXvTFbDoUZXId4W3dMgap2f6ic1g==",
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.2.2.tgz",
"integrity": "sha512-pMWBUnIllK4ZTw7p/UaobiQPwAO5w/1NRRTDpV0FTVNmECztsxKspj3ZWEordVEaqpZtmOQJJna4yTLyC/q7PQ==",
"requires": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.2",
@@ -12384,9 +12247,9 @@
"integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA=="
},
"readable-stream": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -13841,9 +13704,9 @@
"integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ=="
},
"xmlcreate": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.1.tgz",
"integrity": "sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz",
"integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ=="
},
"xmldom": {
"version": "0.1.19",

View File

@@ -1,11 +1,11 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.132.1",
"version": "4.135.0",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.8.3",
"@babel/preset-env": "^7.8.3",
"@babel/core": "^7.8.4",
"@babel/preset-env": "^7.8.4",
"@babel/register": "^7.8.3",
"@google-cloud/trace-agent": "^4.2.5",
"@slack/client": "^3.8.1",
@@ -14,8 +14,8 @@
"amplitude": "^3.5.0",
"apidoc": "^0.17.5",
"apn": "^2.2.0",
"aws-sdk": "^2.610.0",
"bcrypt": "^3.0.7",
"aws-sdk": "^2.624.0",
"bcrypt": "^3.0.8",
"body-parser": "^1.18.3",
"compression": "^1.7.4",
"cookie-session": "^1.4.0",
@@ -40,13 +40,13 @@
"helmet": "^3.21.2",
"image-size": "^0.8.3",
"in-app-purchase": "^1.11.3",
"js2xmlparser": "^4.0.0",
"js2xmlparser": "^4.0.1",
"lodash": "^4.17.15",
"merge-stream": "^2.0.0",
"method-override": "^3.0.0",
"moment": "^2.24.0",
"moment-recur": "^1.0.7",
"mongoose": "^5.8.9",
"mongoose": "^5.9.2",
"morgan": "^1.7.0",
"nconf": "^0.10.0",
"node-gcm": "^1.0.2",
@@ -60,10 +60,10 @@
"ps-tree": "^1.0.0",
"regenerator-runtime": "^0.13.3",
"remove-markdown": "^0.3.0",
"rimraf": "^3.0.0",
"rimraf": "^3.0.2",
"short-uuid": "^3.0.0",
"stripe": "^7.15.0",
"superagent": "^5.2.1",
"superagent": "^5.2.2",
"universal-analytics": "^0.4.17",
"useragent": "^2.1.9",
"uuid": "^3.4.0",
@@ -113,7 +113,7 @@
"monk": "^7.1.2",
"require-again": "^2.0.0",
"sinon": "^7.2.4",
"sinon-chai": "^3.4.0",
"sinon-chai": "^3.5.0",
"sinon-stub-promise": "^4.0.0"
},
"optionalDependencies": {}

View File

@@ -34,11 +34,12 @@ async function deleteAmplitudeData (userId, email) {
}
async function deleteHabiticaData (user, email) {
const truncatedEmail = email.slice(0, email.indexOf('@'));
await User.update(
{ _id: user._id },
{
$set: {
'auth.local.email': email,
'auth.local.email': user.auth.local.email ? email : `${truncatedEmail}@example.com`,
'auth.local.hashed_password': '$2a$10$QDnNh1j1yMPnTXDEOV38xOePEWFd4X8DSYwAM8XTmqmacG5X0DKjW',
'auth.local.passwordHashMethod': 'bcrypt',
},

View File

@@ -278,19 +278,6 @@ describe('Google Payments', () => {
});
});
it('should throw an error if subscription is still valid', async () => {
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{ expirationDate: expirationDate.add({ day: 1 }).toDate() }]);
await expect(googlePayments.cancelSubscribe(user, headers))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: googlePayments.constants.RESPONSE_STILL_VALID,
});
});
it('should throw an error if receipt is invalid', async () => {
iap.isValidated.restore();
iapIsValidatedStub = sinon.stub(iap, 'isValidated')

View File

@@ -100,7 +100,7 @@ describe('POST /groups/:groupId/quests/accept', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStartedFriendly'),
});
});
});

View File

@@ -73,7 +73,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStarted'),
});
});

View File

@@ -121,7 +121,7 @@ describe('POST /groups/:groupId/quests/reject', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStartedFriendly'),
});
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -13,32 +13,32 @@
"test:unit": "vue-cli-service test:unit --require ./tests/unit/helpers.js"
},
"dependencies": {
"@vue/cli-plugin-babel": "^4.1.2",
"@vue/cli-plugin-eslint": "^4.1.2",
"@vue/cli-plugin-router": "^4.1.2",
"@vue/cli-plugin-unit-mocha": "^4.1.2",
"@vue/cli-service": "^4.1.2",
"@storybook/addon-actions": "^5.3.9",
"@storybook/addon-knobs": "^5.3.9",
"@storybook/addon-links": "^5.3.9",
"@storybook/addon-notes": "^5.3.9",
"@storybook/vue": "^5.3.9",
"@vue/cli-plugin-babel": "^4.2.2",
"@vue/cli-plugin-eslint": "^4.2.2",
"@vue/cli-plugin-router": "^4.2.2",
"@vue/cli-plugin-unit-mocha": "^4.2.2",
"@vue/cli-service": "^4.2.2",
"@storybook/addon-actions": "^5.3.13",
"@storybook/addon-knobs": "^5.3.13",
"@storybook/addon-links": "^5.3.13",
"@storybook/addon-notes": "^5.3.13",
"@storybook/vue": "^5.3.13",
"@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^5.8.0",
"amplitude-js": "^5.9.0",
"axios": "^0.19.2",
"axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.0.1",
"bootstrap": "^4.4.1",
"bootstrap-vue": "^2.3.0",
"bootstrap-vue": "^2.5.0",
"chai": "^4.1.2",
"core-js": "^3.6.4",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
"eslint-plugin-mocha": "^5.3.0",
"eslint-plugin-vue": "^6.1.2",
"eslint-plugin-vue": "^6.2.1",
"habitica-markdown": "^1.3.2",
"hellojs": "^1.18.4",
"inspectpack": "^4.3.1",
"inspectpack": "^4.4.0",
"intro.js": "^2.9.3",
"jquery": "^3.4.1",
"lodash": "^4.17.15",
@@ -47,7 +47,7 @@
"sass": "^1.25.0",
"sass-loader": "^8.0.2",
"smartbanner.js": "^1.15.0",
"svg-inline-loader": "^0.8.0",
"svg-inline-loader": "^0.8.2",
"svg-url-loader": "^3.0.3",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1",
@@ -61,6 +61,6 @@
"vue2-perfect-scrollbar": "^1.3.0",
"vuedraggable": "^2.23.1",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec",
"webpack": "^4.41.5"
"webpack": "^4.41.6"
}
}

View File

@@ -1,24 +1,60 @@
.promo_achievement_CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -668px -444px;
width: 204px;
height: 102px;
}
.promo_armoire_backgrounds_202002 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px 0px;
background-position: 0px -277px;
width: 423px;
height: 147px;
}
.promo_mystery_022020 {
.promo_mystery_202003 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -277px;
background-position: -668px -148px;
width: 282px;
height: 147px;
}
.promo_take_this {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px -148px;
background-position: -873px -444px;
width: 96px;
height: 69px;
}
.promo_valentines_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -668px 0px;
width: 309px;
height: 147px;
}
.promo_valentines_potions {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -425px;
width: 420px;
height: 147px;
}
.scene_cake {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -277px;
width: 204px;
height: 102px;
}
.scene_dailies {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 327px;
height: 276px;
}
.scene_gaining_achievement {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px 0px;
width: 339px;
height: 210px;
}
.scene_shanaqui {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -668px -296px;
width: 282px;
height: 147px;
}

View File

@@ -1,222 +1,222 @@
.achievement-alien {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1656px -1480px;
background-position: -1446px -1628px;
width: 24px;
height: 26px;
}
.achievement-alien2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -715px -1549px;
background-position: -813px -1549px;
width: 48px;
height: 52px;
}
.achievement-allYourBase2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -759px -1480px;
background-position: -1092px -1480px;
width: 64px;
height: 56px;
}
.achievement-alpha2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1225px -1628px;
background-position: -1372px -1628px;
width: 48px;
height: 52px;
}
.achievement-aridAuthority2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -954px -1480px;
background-position: -1027px -1480px;
width: 64px;
height: 56px;
}
.achievement-armor2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1127px -1628px;
background-position: -1274px -1628px;
width: 48px;
height: 52px;
}
.achievement-backToBasics2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1411px -1480px;
background-position: -1549px -1480px;
width: 48px;
height: 56px;
}
.achievement-bewilder2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1029px -1628px;
background-position: -1176px -1628px;
width: 48px;
height: 52px;
}
.achievement-birthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -980px -1628px;
background-position: -1127px -1628px;
width: 48px;
height: 52px;
}
.achievement-boot2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -931px -1628px;
background-position: -1078px -1628px;
width: 48px;
height: 52px;
}
.achievement-bow2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -882px -1628px;
background-position: -1029px -1628px;
width: 48px;
height: 52px;
}
.achievement-burnout2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -833px -1628px;
background-position: -980px -1628px;
width: 48px;
height: 52px;
}
.achievement-cactus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -784px -1628px;
background-position: -931px -1628px;
width: 48px;
height: 52px;
}
.achievement-cake2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -735px -1628px;
background-position: -882px -1628px;
width: 48px;
height: 52px;
}
.achievement-cave2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -686px -1628px;
background-position: -833px -1628px;
width: 48px;
height: 52px;
}
.achievement-challenge2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1628px;
background-position: -784px -1628px;
width: 48px;
height: 52px;
}
.achievement-comment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -588px -1628px;
background-position: -735px -1628px;
width: 48px;
height: 52px;
}
.achievement-completedTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1362px -1480px;
background-position: -1500px -1480px;
width: 48px;
height: 56px;
}
.achievement-congrats2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -490px -1628px;
background-position: -637px -1628px;
width: 48px;
height: 52px;
}
.achievement-costumeContest2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -441px -1628px;
background-position: -588px -1628px;
width: 48px;
height: 52px;
}
.achievement-createdTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1313px -1480px;
background-position: -1451px -1480px;
width: 48px;
height: 56px;
}
.achievement-dilatory2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -343px -1628px;
background-position: -490px -1628px;
width: 48px;
height: 52px;
}
.achievement-dustDevil2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1264px -1480px;
background-position: -1402px -1480px;
width: 48px;
height: 56px;
}
.achievement-dysheartener2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -245px -1628px;
background-position: -392px -1628px;
width: 48px;
height: 52px;
}
.achievement-fedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1215px -1480px;
background-position: -1353px -1480px;
width: 48px;
height: 56px;
}
.achievement-friends2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -147px -1628px;
background-position: -294px -1628px;
width: 48px;
height: 52px;
}
.achievement-getwell2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -98px -1628px;
background-position: -245px -1628px;
width: 48px;
height: 52px;
}
.achievement-goodluck2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -49px -1628px;
background-position: -196px -1628px;
width: 48px;
height: 52px;
}
.achievement-greeting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1628px;
background-position: -147px -1628px;
width: 48px;
height: 52px;
}
.achievement-guild2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1646px -1549px;
background-position: -98px -1628px;
width: 48px;
height: 52px;
}
.achievement-habitBirthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1597px -1549px;
background-position: -49px -1628px;
width: 48px;
height: 52px;
}
.achievement-habiticaDay2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1548px -1549px;
background-position: 0px -1628px;
width: 48px;
height: 52px;
}
.achievement-hatchedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1166px -1480px;
background-position: -1304px -1480px;
width: 48px;
height: 56px;
}
.achievement-heart2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1450px -1549px;
background-position: -1597px -1549px;
width: 48px;
height: 52px;
}
.achievement-justAddWater2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1480px;
background-position: -775px -1480px;
width: 60px;
height: 64px;
}
.achievement-karaoke-2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1352px -1549px;
background-position: -1499px -1549px;
width: 48px;
height: 52px;
}
.achievement-karaoke {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1323px -1628px;
background-position: -1421px -1628px;
width: 24px;
height: 26px;
}
@@ -228,529 +228,541 @@
}
.achievement-lostMasterclasser2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1205px -1549px;
background-position: -1352px -1549px;
width: 48px;
height: 52px;
}
.achievement-mindOverMatter2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -698px -1480px;
background-position: -836px -1480px;
width: 60px;
height: 64px;
}
.achievement-monsterMagus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1019px -1480px;
background-position: -1157px -1480px;
width: 48px;
height: 56px;
}
.achievement-ninja2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1058px -1549px;
background-position: -1205px -1549px;
width: 48px;
height: 52px;
}
.achievement-npc2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1009px -1549px;
background-position: -1156px -1549px;
width: 48px;
height: 52px;
}
.achievement-nye2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -960px -1549px;
background-position: -1107px -1549px;
width: 48px;
height: 52px;
}
.achievement-partyOn2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -911px -1549px;
background-position: -1058px -1549px;
width: 48px;
height: 52px;
}
.achievement-partyUp2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -862px -1549px;
background-position: -1009px -1549px;
width: 48px;
height: 52px;
}
.achievement-pearlyPro2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -824px -1480px;
background-position: -962px -1480px;
width: 64px;
height: 56px;
}
.achievement-perfect2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -764px -1549px;
background-position: -911px -1549px;
width: 48px;
height: 52px;
}
.achievement-primedForPainting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1068px -1480px;
background-position: -1206px -1480px;
width: 48px;
height: 56px;
}
.achievement-purchasedEquipment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1117px -1480px;
background-position: -1255px -1480px;
width: 48px;
height: 56px;
}
.achievement-rat2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -617px -1549px;
background-position: -764px -1549px;
width: 48px;
height: 52px;
}
.achievement-rosyOutlook2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -706px -1480px;
width: 68px;
height: 68px;
}
.achievement-royally-loyal2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1549px;
width: 48px;
height: 52px;
}
.achievement-seafoam2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1607px -1480px;
width: 48px;
height: 52px;
}
.achievement-shield2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1558px -1480px;
width: 48px;
height: 52px;
}
.achievement-shinySeed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1509px -1480px;
width: 48px;
height: 52px;
}
.achievement-snowball2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1460px -1480px;
width: 48px;
height: 52px;
}
.achievement-spookySparkles2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1176px -1628px;
width: 48px;
height: 52px;
}
.achievement-stoikalm2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1078px -1628px;
width: 48px;
height: 52px;
}
.achievement-sun2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -539px -1628px;
width: 48px;
height: 52px;
}
.achievement-sword2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -392px -1628px;
width: 48px;
height: 52px;
}
.achievement-thankyou2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -294px -1628px;
width: 48px;
height: 52px;
}
.achievement-thermometer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -196px -1628px;
width: 48px;
height: 52px;
}
.achievement-tree2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1499px -1549px;
width: 48px;
height: 52px;
}
.achievement-triadbingo2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1401px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-healer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1254px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-mage2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1156px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-rogue2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1107px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-warrior2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -813px -1549px;
width: 48px;
height: 52px;
}
.achievement-undeadUndertaker2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -889px -1480px;
width: 64px;
height: 56px;
}
.achievement-unearned2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -666px -1549px;
width: 48px;
height: 52px;
}
.achievement-valentine2x {
.achievement-seafoam2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -617px -1549px;
width: 48px;
height: 52px;
}
.achievement-shield2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1549px;
width: 48px;
height: 52px;
}
.achievement-shinySeed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1647px -1480px;
width: 48px;
height: 52px;
}
.achievement-snowball2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1598px -1480px;
width: 48px;
height: 52px;
}
.achievement-spookySparkles2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1323px -1628px;
width: 48px;
height: 52px;
}
.achievement-stoikalm2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1225px -1628px;
width: 48px;
height: 52px;
}
.achievement-sun2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -686px -1628px;
width: 48px;
height: 52px;
}
.achievement-sword2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -539px -1628px;
width: 48px;
height: 52px;
}
.achievement-thankyou2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -441px -1628px;
width: 48px;
height: 52px;
}
.achievement-thermometer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -343px -1628px;
width: 48px;
height: 52px;
}
.achievement-tickledPink2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1480px;
width: 68px;
height: 68px;
}
.achievement-tree2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1548px -1549px;
width: 48px;
height: 52px;
}
.achievement-triadbingo2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1450px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-healer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-mage2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1254px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-rogue2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -960px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-warrior2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -862px -1549px;
width: 48px;
height: 52px;
}
.achievement-undeadUndertaker2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -897px -1480px;
width: 64px;
height: 56px;
}
.achievement-unearned2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -715px -1549px;
width: 48px;
height: 52px;
}
.achievement-valentine2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1646px -1549px;
width: 48px;
height: 52px;
}
.achievement-wolf2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1274px -1628px;
background-position: -1401px -1549px;
width: 48px;
height: 52px;
}
.background_alpine_slopes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px 0px;
background-position: -1278px -296px;
width: 141px;
height: 147px;
}
.background_amid_ancient_ruins {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -148px;
background-position: -1278px -444px;
width: 141px;
height: 147px;
}
.background_among_giant_anemones {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -296px;
background-position: -1278px -592px;
width: 141px;
height: 147px;
}
.background_apple_picking {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -444px;
background-position: -1278px -740px;
width: 141px;
height: 147px;
}
.background_aquarium {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -592px;
background-position: -1278px -888px;
width: 141px;
height: 147px;
}
.background_archaeological_dig {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -740px;
background-position: -1278px -1036px;
width: 141px;
height: 147px;
}
.background_archery_range {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -888px;
background-position: 0px -1184px;
width: 141px;
height: 147px;
}
.background_at_the_docks {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1036px;
background-position: -142px -1184px;
width: 141px;
height: 147px;
}
.background_aurora {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1184px;
background-position: -284px -1184px;
width: 141px;
height: 147px;
}
.background_autumn_flower_garden {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1184px;
background-position: -426px -1184px;
width: 141px;
height: 147px;
}
.customize-option.background_autumn_flower_garden {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -167px -1199px;
background-position: -451px -1199px;
width: 60px;
height: 60px;
}
.background_autumn_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1184px;
background-position: -568px -1184px;
width: 141px;
height: 147px;
}
.background_avalanche {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1184px;
background-position: -710px -1184px;
width: 141px;
height: 147px;
}
.background_back_alley {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1184px;
background-position: -852px -1184px;
width: 141px;
height: 147px;
}
.background_back_of_giant_beast {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1184px;
background-position: -994px -1184px;
width: 141px;
height: 147px;
}
.background_bamboo_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1184px;
background-position: -1136px -1184px;
width: 141px;
height: 147px;
}
.background_bayou {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1184px;
background-position: -1278px -1184px;
width: 141px;
height: 147px;
}
.background_beach {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1184px;
background-position: -1420px 0px;
width: 141px;
height: 147px;
}
.background_beehive {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1184px;
background-position: -1420px -148px;
width: 141px;
height: 147px;
}
.background_bell_tower {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px 0px;
background-position: -1420px -296px;
width: 141px;
height: 147px;
}
.background_beside_well {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -148px;
background-position: -1420px -444px;
width: 141px;
height: 147px;
}
.background_birch_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -296px;
background-position: -1420px -592px;
width: 141px;
height: 147px;
}
.background_birthday_party {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -444px;
background-position: -1420px -740px;
width: 141px;
height: 147px;
}
.background_blacksmithy {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -592px;
background-position: -1420px -888px;
width: 141px;
height: 147px;
}
.background_blizzard {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -740px;
background-position: -1420px -1036px;
width: 141px;
height: 147px;
}
.background_blossoming_desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -888px;
background-position: -1420px -1184px;
width: 141px;
height: 147px;
}
.background_blue {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1036px;
background-position: 0px 0px;
width: 141px;
height: 147px;
}
.background_bridge {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px 0px;
background-position: -142px -1332px;
width: 141px;
height: 147px;
}
.background_bug_covered_log {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1332px;
background-position: -284px -1332px;
width: 141px;
height: 147px;
}
.background_buried_treasure {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1332px;
background-position: -426px -1332px;
width: 141px;
height: 147px;
}
.background_champions_colosseum {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1332px;
background-position: -568px -1332px;
width: 141px;
height: 147px;
}
.background_cherry_trees {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1332px;
background-position: -710px -1332px;
width: 141px;
height: 147px;
}
.background_chessboard_land {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1332px;
background-position: -852px -1332px;
width: 141px;
height: 147px;
}
.background_clouds {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1332px;
background-position: -994px -1332px;
width: 141px;
height: 147px;
}
.background_coral_reef {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1332px;
background-position: -1136px -1332px;
width: 141px;
height: 147px;
}
.background_cornfields {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1332px;
background-position: -1278px -1332px;
width: 141px;
height: 147px;
}
.background_cozy_barn {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1332px;
background-position: -1420px -1332px;
width: 141px;
height: 147px;
}
.background_cozy_bedroom {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1332px;
background-position: -1562px 0px;
width: 141px;
height: 147px;
}
.background_cozy_library {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1332px;
background-position: -1562px -148px;
width: 141px;
height: 147px;
}
.background_creepy_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px 0px;
background-position: -1562px -296px;
width: 141px;
height: 147px;
}
.background_crosscountry_ski_trail {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -148px;
background-position: -1562px -444px;
width: 141px;
height: 147px;
}
.background_crystal_cave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -296px;
background-position: -1562px -592px;
width: 141px;
height: 147px;
}
.background_dark_deep {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -444px;
background-position: -1562px -740px;
width: 141px;
height: 147px;
}
.background_deep_mine {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -592px;
background-position: -1562px -888px;
width: 141px;
height: 147px;
}
.background_deep_sea {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -740px;
background-position: -1562px -1036px;
width: 141px;
height: 147px;
}
.background_desert_dunes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -888px;
background-position: -1562px -1184px;
width: 141px;
height: 147px;
}
.background_desert_with_snow {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1036px;
background-position: -1562px -1332px;
width: 141px;
height: 147px;
}
.background_dilatory_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1184px;
background-position: 0px -1480px;
width: 141px;
height: 147px;
}
.background_dilatory_city {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1332px;
background-position: -142px -1480px;
width: 141px;
height: 147px;
}
.background_dilatory_ruins {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1480px;
background-position: -284px -1480px;
width: 141px;
height: 147px;
}
.background_distant_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1480px;
background-position: -426px -1480px;
width: 141px;
height: 147px;
}
.background_dojo {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1480px;
background-position: 0px -1332px;
width: 141px;
height: 147px;
}
.background_drifting_raft {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1480px;
background-position: -1278px -148px;
width: 141px;
height: 147px;
}
.background_driving_a_coach {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1184px;
background-position: -1278px 0px;
width: 141px;
height: 147px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,30 +1,444 @@
.Pet_HatchingPotion_Sunshine {
.Pet-Wolf-Glass {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -82px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Glow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -492px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -164px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Holly {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -164px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-IcySnow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Peppermint {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -82px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Rainbow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -164px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -246px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-RoseQuartz {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -246px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-RoyalPurple {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -82px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -164px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -246px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shimmer {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -328px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -328px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -328px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Spooky {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-StarryNight {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -82px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Sunshine {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -246px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veggie {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -328px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veteran {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -410px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Watery {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -410px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-White {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -410px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -410px -300px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Base {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -492px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-CottonCandyBlue {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -492px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -492px -200px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -492px -300px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -82px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -164px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -246px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-White {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -328px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -410px -400px;
width: 81px;
height: 99px;
}
.Pet_HatchingPotion_Amber {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aquatic {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -69px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aurora {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -276px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Base {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -207px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -276px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Celestial {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -345px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyBlue {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -414px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -483px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Cupid {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ember {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fairy {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Floral {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Frost {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -345px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ghost {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -414px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glass {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -574px -483px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -69px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Holly {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -138px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_IcySnow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -207px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Peppermint {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -276px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Purple {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -345px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Rainbow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -414px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -483px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoseQuartz {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -552px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoyalPurple {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shimmer {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -345px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -414px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Spooky {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -483px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_StarryNight {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -643px -552px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Sunshine {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -69px 0px;
background-position: -69px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Watery {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: 0px -69px;
background-position: -138px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_White {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -69px -69px;
background-position: -207px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-27.png');
background-position: -138px 0px;
background-position: -138px -500px;
width: 68px;
height: 68px;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 KiB

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -41,6 +41,7 @@
background-color: inherit;
}
&:active, &:hover, &.active {
background-color: rgba(#d5c8ff, 0.32);
color: $purple-200;
@@ -48,7 +49,7 @@
&.dropdown-inactive {
cursor: default;
&:active, &:hover, &.active {
background-color: inherit;
color: inherit;
@@ -97,4 +98,4 @@
.dropdown-menu.show {
width: 100% !important;
}
}
}

View File

@@ -61,7 +61,7 @@ h3 {
font-size: 16px;
line-height: 1.5;
color: $gray-50;
margin-bottom: 9px;
margin-bottom: 4px;
}
h4 {

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="98" height="40" viewBox="0 0 98 40">
<path fill="#000" fill-rule="nonzero" d="M17.744 5.137c-1.137 1.346-2.957 2.408-4.777 2.256-.228-1.82.663-3.753 1.706-4.948C15.81 1.062 17.801.075 19.413 0c.189 1.896-.55 3.754-1.669 5.137zm1.65 2.617c-2.636-.152-4.892 1.497-6.143 1.497-1.27 0-3.185-1.422-5.27-1.384-2.71.038-5.232 1.574-6.616 4.02C-1.48 16.776.625 24.018 3.375 28c1.345 1.972 2.957 4.133 5.08 4.057 2.01-.076 2.806-1.308 5.232-1.308 2.446 0 3.147 1.308 5.27 1.27 2.2-.038 3.583-1.972 4.93-3.943 1.535-2.237 2.16-4.417 2.198-4.531-.038-.038-4.246-1.65-4.284-6.502-.038-4.057 3.317-5.99 3.47-6.105-1.897-2.805-4.854-3.109-5.878-3.184zm15.222-5.498V31.81h4.588V21.706h6.35c5.801 0 9.877-3.98 9.877-9.744 0-5.763-4-9.706-9.725-9.706h-11.09zm4.588 3.867h5.289c3.98 0 6.256 2.123 6.256 5.858 0 3.735-2.275 5.877-6.275 5.877h-5.27V6.123zM63.81 32.038c2.882 0 5.555-1.46 6.768-3.773h.095v3.545h4.246V17.1c0-4.266-3.412-7.015-8.663-7.015-4.872 0-8.474 2.787-8.607 6.616h4.133c.341-1.82 2.028-3.014 4.341-3.014 2.806 0 4.38 1.308 4.38 3.716v1.63l-5.726.341c-5.327.323-8.208 2.503-8.208 6.294 0 3.83 2.976 6.37 7.241 6.37zm1.233-3.507c-2.446 0-4-1.176-4-2.976 0-1.858 1.497-2.939 4.36-3.11l5.1-.322v1.668c0 2.768-2.351 4.74-5.46 4.74zm15.545 11.317c4.474 0 6.578-1.706 8.417-6.881l8.057-22.597h-4.664l-5.403 17.46H86.9l-5.402-17.46H76.7l7.773 21.516-.417 1.308c-.702 2.218-1.839 3.071-3.867 3.071-.36 0-1.062-.038-1.346-.075v3.545c.265.075 1.402.113 1.744.113z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<g fill="none" fill-rule="evenodd">
<path fill="#9A62FF" d="M20.571 3.429V0h-3.428v3.429H6.857V0H3.43v3.429A3.428 3.428 0 0 0 0 6.857v13.714A3.428 3.428 0 0 0 3.429 24H20.57A3.428 3.428 0 0 0 24 20.571V6.857a3.428 3.428 0 0 0-3.429-3.428z"/>
<path fill="#D5C8FF" d="M3.429 20.571H20.57V10.286H3.43z"/>
<path fill="#9A62FF" d="M3.429 13.286H20.57v-3H3.43z"/>
<path fill="#BDA8FF" d="M3.429 13.286H20.57v-3H3.43z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 550 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
<g fill="none" fill-rule="evenodd" stroke="#8EEDF6" stroke-width="2">
<path d="M1 11L11 1M11 11L1 1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 215 B

View File

@@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="34" viewBox="0 0 32 34">
<g fill="none" fill-rule="evenodd">
<path stroke="#22AEB7" stroke-width="4" d="M12.558 7.452C11.49 5.033 9.422 2.896 6.934 2.79 4.446 2.684 3.019 4.68 3.75 6.444c.73 1.766 2.47 2.09 8.113 3.601 1.603.43 1.764-.174.695-2.593z"/>
<path stroke="#38C9C6" stroke-width="4" d="M18.916 7.452c1.07-2.419 3.137-4.556 5.625-4.662 2.488-.106 3.915 1.89 3.184 3.654-.73 1.766-2.47 2.09-8.114 3.601-1.602.43-1.764-.174-.695-2.593z"/>
<path fill="#46DDDA" d="M15.564 6c-4.87 0-1.953 5.572 0 5.572 1.954 0 4.87-5.572 0-5.572z"/>
<path fill="#6133B4" d="M3 17h26v17H3zM0 11h32v6H0z"/>
<path fill="#FFF" fill-opacity=".5" d="M16 17h13v17H16z" style="mix-blend-mode:soft-light"/>
<path fill="#8EEDF6" d="M16 17h3v17h-3z"/>
<path fill="#3BCAD7" d="M13 17h3v17h-3zM10 11h6v6h-6z"/>
<path fill="#8EEDF6" d="M16 11h6v6h-6z"/>
<path fill="#000" fill-opacity=".2" d="M3 17h13v3H3zM10 11h6v3h-6zM0 14h10v3H0zM22 14h10v3H22zM16 11h6v3h-6zM3 31h13v3H3zM16 17h13v3H16zM16 31h13v3H16z" style="mix-blend-mode:multiply"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="40" viewBox="0 0 100 40">
<g fill="none" fill-rule="evenodd">
<path fill="#5F6368" fill-rule="nonzero" d="M47.131 19.561v11.6h-3.68V2.514h9.76a8.825 8.825 0 0 1 6.32 2.48 7.973 7.973 0 0 1 2.64 6.046 7.936 7.936 0 0 1-2.64 6.08c-1.706 1.627-3.813 2.44-6.32 2.439h-6.08v.002zm0-13.52v10h6.172a4.864 4.864 0 0 0 3.641-1.481 4.882 4.882 0 0 0 0-7.001 4.8 4.8 0 0 0-3.641-1.52H47.13v.002zM70.651 10.921c2.72 0 4.867.727 6.442 2.18 1.574 1.454 2.36 3.448 2.358 5.98v12.08h-3.52v-2.72h-.16c-1.523 2.24-3.55 3.36-6.08 3.36-2.159 0-3.965-.64-5.419-1.92a6.13 6.13 0 0 1-2.18-4.8c0-2.028.766-3.641 2.299-4.839 1.533-1.197 3.58-1.798 6.14-1.8 2.184 0 3.984.4 5.398 1.2V18.8a4.19 4.19 0 0 0-1.52-3.257 5.211 5.211 0 0 0-3.552-1.342c-2.055 0-3.682.867-4.88 2.601l-3.241-2.04c1.783-2.56 4.421-3.84 7.915-3.84zm-4.76 14.24a2.94 2.94 0 0 0 1.22 2.4 4.49 4.49 0 0 0 2.86.96 5.867 5.867 0 0 0 4.139-1.719c1.219-1.147 1.828-2.493 1.828-4.039-1.147-.914-2.747-1.371-4.8-1.371-1.495 0-2.741.36-3.74 1.081-1.007.732-1.508 1.62-1.508 2.688z"/>
<path fill="#5F6368" d="M99.657 11.561L87.37 39.801H83.57l4.56-9.881-8.08-18.359h4l5.84 14.08h.08l5.68-14.08z"/>
<path fill="#4285F4" d="M32.26 17.06a19.61 19.61 0 0 0-.283-3.346h-15.52v6.339h8.89a7.618 7.618 0 0 1-3.288 5v4.115h5.306c3.106-2.864 4.896-7.1 4.896-12.107z"/>
<path fill="#34A853" d="M16.457 33.143c4.441 0 8.18-1.458 10.908-3.973l-5.306-4.114c-1.476 1.001-3.378 1.573-5.602 1.573-4.292 0-7.936-2.894-9.239-6.794H1.753v4.24a16.457 16.457 0 0 0 14.704 9.068z"/>
<path fill="#FBBC04" d="M7.218 19.835a9.86 9.86 0 0 1 0-6.299v-4.24H1.753a16.457 16.457 0 0 0 0 14.78l5.465-4.24z"/>
<path fill="#EA4335" d="M16.457 6.743A8.935 8.935 0 0 1 22.77 9.21l4.697-4.697A15.813 15.813 0 0 0 16.457.23 16.457 16.457 0 0 0 1.753 9.296l5.465 4.24c1.303-3.9 4.947-6.793 9.24-6.793z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="34" height="24" viewBox="0 0 34 24">
<g fill="#4E4A57" fill-rule="nonzero">
<path d="M0 20.776c0 1.646 1.182 2.98 2.641 2.98H31.11c1.459 0 2.641-1.333 2.641-2.98V8.818H0v11.958zM31.109.244H2.64C1.182.244 0 1.577 0 3.224v.892h33.75v-.892c0-1.647-1.182-2.98-2.641-2.98z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 346 B

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="144" height="31" viewBox="0 0 144 31">
<g fill="none" fill-rule="evenodd">
<path fill="#4F2A93" d="M120.876 24.007a2.27 2.27 0 0 0-3.183.41 4.595 4.595 0 0 1-3.663 1.804 4.62 4.62 0 0 1-4.613-4.335c-.005-.35-.009-2.864-.009-3.19a4.627 4.627 0 0 1 4.622-4.622c1.28 0 2.47.51 3.353 1.44a2.269 2.269 0 0 0 3.29-3.125 9.2 9.2 0 0 0-6.643-2.853c-5.05 0-9.16 4.109-9.16 9.16 0 .03.002 3.175.014 3.406a9.158 9.158 0 0 0 9.146 8.657 9.1 9.1 0 0 0 7.257-3.57 2.27 2.27 0 0 0-.411-3.182M134.373 26.221a4.62 4.62 0 0 1-4.613-4.333c-.005-.353-.008-2.877-.008-3.193a4.627 4.627 0 0 1 4.621-4.622 4.627 4.627 0 0 1 4.622 4.622c0 .328-.003 2.84-.009 3.189a4.618 4.618 0 0 1-4.613 4.337m6.891-17.078a2.264 2.264 0 0 0-2.19 1.706 9.095 9.095 0 0 0-4.7-1.313c-5.051 0-9.16 4.109-9.16 9.16 0 .031.001 3.173.013 3.406a9.158 9.158 0 0 0 9.146 8.657 9.118 9.118 0 0 0 4.81-1.37 2.268 2.268 0 0 0 4.35-.899V11.412a2.27 2.27 0 0 0-2.269-2.269M30.546 26.221a4.62 4.62 0 0 1-4.613-4.335c-.006-.35-.01-2.863-.01-3.19a4.627 4.627 0 0 1 4.623-4.623 4.627 4.627 0 0 1 4.622 4.622c0 .328-.004 2.84-.01 3.189a4.618 4.618 0 0 1-4.612 4.337m6.89-17.078a2.264 2.264 0 0 0-2.19 1.706 9.095 9.095 0 0 0-4.7-1.313c-5.052 0-9.16 4.109-9.16 9.16 0 .031 0 3.174.013 3.406a9.158 9.158 0 0 0 9.147 8.657 9.118 9.118 0 0 0 4.809-1.37 2.268 2.268 0 0 0 4.35-.899V11.412a2.27 2.27 0 0 0-2.269-2.269M70.84 9.143a2.27 2.27 0 0 0-2.27 2.27V28.49a2.27 2.27 0 0 0 4.539 0V11.412a2.27 2.27 0 0 0-2.27-2.269M97.563 9.143a2.27 2.27 0 0 0-2.27 2.27V28.49a2.27 2.27 0 0 0 4.538 0V11.412a2.27 2.27 0 0 0-2.268-2.269M59.066 21.888a4.62 4.62 0 0 1-4.613 4.333 4.62 4.62 0 0 1-4.613-4.338c-.006-.35-.009-2.86-.009-3.187a4.627 4.627 0 0 1 4.622-4.622 4.627 4.627 0 0 1 4.622 4.622c0 .315-.004 2.84-.009 3.192M54.453 9.536a9.089 9.089 0 0 0-4.622 1.265V2.33a2.27 2.27 0 0 0-4.537 0V28.49a2.269 2.269 0 0 0 4.35.9 9.117 9.117 0 0 0 4.81 1.37 9.16 9.16 0 0 0 9.146-8.666c.011-.224.013-3.367.013-3.398 0-5.052-4.11-9.16-9.16-9.16M8.92 9.536a9.143 9.143 0 0 0-4.382 1.11V2.33A2.27 2.27 0 0 0 0 2.33v26.16a2.269 2.269 0 1 0 4.538 0V16.763c.173-.147.333-.314.46-.516a4.601 4.601 0 0 1 3.921-2.173 4.627 4.627 0 0 1 4.622 4.622c0 .415-.004 9.233-.01 9.738a2.27 2.27 0 0 0 4.535.172c.01-.225.012-9.814.012-9.91 0-5.052-4.108-9.16-9.159-9.16M88.95 9.143h-2.648V2.33a2.27 2.27 0 0 0-4.538 0v6.813h-2.647a2.27 2.27 0 0 0 0 4.538h2.647V28.49a2.27 2.27 0 0 0 4.538 0V13.681h2.647a2.27 2.27 0 0 0 0-4.538"/>
<path fill="#FF6066" d="M73.025 2.33a2.27 2.27 0 1 1-4.538 0 2.27 2.27 0 0 1 4.538 0"/>
<path fill="#4FB5E8" d="M99.748 2.33a2.27 2.27 0 1 1-4.539 0 2.27 2.27 0 0 1 4.539 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="149" height="40" viewBox="0 0 149 40">
<g fill="none" fill-rule="evenodd">
<path fill="#283B82" fill-rule="nonzero" d="M17.806.284H6.265c-.79 0-1.462.574-1.585 1.354L.012 31.234a.96.96 0 0 0 .952 1.11h5.51c.79 0 1.461-.574 1.585-1.355l1.259-7.982A1.602 1.602 0 0 1 10.9 21.65h3.653c7.603 0 11.99-3.679 13.137-10.97.516-3.189.022-5.695-1.472-7.45C24.58 1.304 21.67.284 17.806.284zm1.332 10.81c-.631 4.141-3.796 4.141-6.855 4.141H10.54l1.222-7.734a.962.962 0 0 1 .95-.812h.798c2.085 0 4.05 0 5.067 1.188.606.709.791 1.762.56 3.217zM52.306 10.96H46.78a.963.963 0 0 0-.95.812l-.245 1.546-.387-.56c-1.196-1.737-3.865-2.317-6.528-2.317-6.107 0-11.323 4.625-12.34 11.114-.528 3.237.223 6.332 2.06 8.49 1.684 1.985 4.094 2.812 6.961 2.812 4.921 0 7.65-3.164 7.65-3.164l-.246 1.536a.961.961 0 0 0 .948 1.113h4.978c.792 0 1.46-.573 1.585-1.355l2.987-18.916a.958.958 0 0 0-.947-1.11zm-7.704 10.757c-.533 3.158-3.039 5.278-6.235 5.278-1.605 0-2.888-.515-3.711-1.49-.817-.97-1.128-2.348-.868-3.884.498-3.13 3.047-5.32 6.194-5.32 1.57 0 2.845.522 3.686 1.506.842.994 1.176 2.381.934 3.91z"/>
<path fill="#283B82" d="M81.742 10.96h-5.554a1.61 1.61 0 0 0-1.328.704L67.2 22.948l-3.247-10.843a1.608 1.608 0 0 0-1.54-1.145h-5.457a.962.962 0 0 0-.913 1.273l6.118 17.953-5.752 8.119a.962.962 0 0 0 .785 1.519h5.547a1.6 1.6 0 0 0 1.318-.689l18.473-26.664a.961.961 0 0 0-.79-1.51"/>
<path fill="#469BDB" fill-rule="nonzero" d="M100.13.284H88.587c-.788 0-1.46.574-1.583 1.354l-4.668 29.596a.96.96 0 0 0 .949 1.11h5.923c.55 0 1.021-.401 1.107-.948l1.325-8.39a1.602 1.602 0 0 1 1.583-1.355h3.652c7.604 0 11.99-3.679 13.138-10.97.518-3.189.02-5.695-1.473-7.45-1.639-1.927-4.547-2.947-8.41-2.947zm1.332 10.81c-.63 4.141-3.794 4.141-6.855 4.141h-1.74l1.223-7.734a.958.958 0 0 1 .949-.812h.798c2.083 0 4.05 0 5.066 1.188.606.709.79 1.762.559 3.217zM134.629 10.96h-5.524a.957.957 0 0 0-.948.812l-.245 1.546-.388-.56c-1.197-1.737-3.863-2.317-6.526-2.317-6.108 0-11.322 4.625-12.338 11.114-.527 3.237.22 6.332 2.057 8.49 1.688 1.985 4.094 2.812 6.961 2.812 4.921 0 7.65-3.164 7.65-3.164l-.246 1.536a.962.962 0 0 0 .952 1.113h4.977c.788 0 1.46-.573 1.583-1.355l2.988-18.916a.964.964 0 0 0-.953-1.11zm-7.704 10.757c-.53 3.158-3.04 5.278-6.236 5.278-1.602 0-2.888-.515-3.711-1.49-.817-.97-1.124-2.348-.867-3.884.5-3.13 3.046-5.32 6.193-5.32 1.57 0 2.845.522 3.686 1.506.845.994 1.18 2.381.935 3.91z"/>
<path fill="#469BDB" d="M141.145 1.096l-4.738 30.138a.96.96 0 0 0 .949 1.11h4.762c.792 0 1.464-.574 1.585-1.355l4.671-29.594a.961.961 0 0 0-.948-1.112h-5.333a.964.964 0 0 0-.948.813"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,26 @@
<svg xmlns="http://www.w3.org/2000/svg" width="39" height="44" viewBox="0 0 39 44">
<g fill="none" fill-rule="evenodd">
<path fill="#24CC8F" d="M2.782 35.927l1.867-8.397 12.887-5.47 7.338 4.49-5.967 16.655z"/>
<path fill="#FFF" d="M9.147 33.008L6.351 28.98l5.523-2.344zM18.352 29.1l-.955-4.808-5.523 2.344z" opacity=".25"/>
<path fill="#FFF" d="M9.147 33.008l2.727-6.372 6.478 2.465zM5.097 34.727L6.35 28.98l2.796 4.028z" opacity=".5"/>
<path fill="#1B996B" d="M22.402 27.382l-5.005-3.09.955 4.809zM5.097 34.727l4.05-1.719 8.627 7.528z" opacity=".35"/>
<path fill="#FFF" d="M22.402 27.382l-4.05 1.719-.578 11.435z" opacity=".5"/>
<path fill="#FFF" d="M9.147 33.008l9.205-3.907-.578 11.435z" opacity=".25"/>
<g>
<path fill="#24CC8F" d="M23.248 7.266l4.784-3.162 8.714 3.345 1.44 5.55-10.575 5.225z"/>
<path fill="#FFF" d="M27.653 8.814l.524-3.227 3.734 1.434zM33.876 11.203l1.77-2.749-3.735-1.433z" opacity=".25"/>
<path fill="#FFF" d="M27.653 8.814L31.91 7.02l1.965 4.182zM24.914 7.763l3.263-2.176-.524 3.227z" opacity=".5"/>
<path fill="#1B996B" d="M36.615 12.254l-.97-3.8-1.769 2.749zM24.914 7.763l2.739 1.05.65 7.606z" opacity=".35"/>
<path fill="#FFF" d="M36.615 12.254l-2.739-1.051-5.572 5.216z" opacity=".5"/>
<path fill="#FFF" d="M27.653 8.814l6.223 2.389-5.572 5.216z" opacity=".25"/>
</g>
<g>
<path fill="#24CC8F" d="M.815 5.996l1.58-4L9.185.301l3.273 2.791-4.25 7.758z"/>
<path fill="#FFF" d="M4.187 5.052L3.121 2.845l2.911-.726zM9.039 3.843l-.096-2.45-2.91.726z" opacity=".25"/>
<path fill="#FFF" d="M4.187 5.052L6.032 2.12 9.04 3.843zM2.053 5.585l1.068-2.74 1.066 2.207z" opacity=".5"/>
<path fill="#1B996B" d="M11.173 3.31l-2.23-1.917.096 2.45zM2.053 5.585l2.134-.533L7.86 9.445z" opacity=".35"/>
<path fill="#FFF" d="M11.173 3.31l-2.134.533-1.18 5.602z" opacity=".5"/>
<path fill="#FFF" d="M4.187 5.052l4.852-1.21-1.18 5.603z" opacity=".25"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,26 @@
<svg xmlns="http://www.w3.org/2000/svg" width="35" height="47" viewBox="0 0 35 47">
<g fill="none" fill-rule="evenodd">
<path fill="#A9DCF6" fill-opacity=".8" d="M25.955 43.329l-.999 2.352a.939.939 0 0 1-.644.555c-3.194.747-9.918-2.107-11.6-4.923a.941.941 0 0 1-.047-.85l.998-2.351c.911-2.146 2.886-3.738 5.074-4.257a.957.957 0 0 0 .607-1.429c-1.147-1.934-1.374-4.46-.463-6.606l.998-2.352a.937.937 0 0 1 .643-.555c3.195-.746 9.919 2.108 11.6 4.924a.935.935 0 0 1 .049.848l-.999 2.353c-.91 2.145-2.886 3.737-5.074 4.256a.957.957 0 0 0-.606 1.429c1.146 1.934 1.373 4.46.463 6.606"/>
<path fill="#FFF" fill-opacity=".9" d="M26.145 25.795c-1.997-.848-3.705-1.145-4.72-1.087l-.788 1.857c-.656 1.547-.524 3.42.347 4.889.466.786.532 1.753.178 2.588a2.881 2.881 0 0 1-1.983 1.669c-1.664.395-3.103 1.6-3.76 3.146l-.788 1.858c.663.77 2.063 1.792 4.06 2.64 1.996.847 3.705 1.144 4.719 1.086l.789-1.858c.656-1.545.523-3.418-.348-4.887a2.883 2.883 0 0 1-.178-2.588 2.886 2.886 0 0 1 1.984-1.67c1.663-.394 3.103-1.6 3.759-3.146l.788-1.857c-.662-.77-2.063-1.793-4.06-2.64"/>
<path fill="#9A62FF" d="M25.383 27.029c1.497.636 3.026 1.448 2.883 1.825-.112.305-.366.882-1.844.982-1.436.098-2.123 1.1-2.765.828-.746-.317-.521-.966-1.166-1.98-.664-1.043-.444-1.979-.287-2.32.219-.473 1.681.03 3.179.665"/>
<path fill="#4F2A93" d="M22.491 28.685c-.664-1.044-.444-1.98-.287-2.32.173-.376 1.126-.139 2.26.292-.382.027-.93.194-1.114.902-.19.738.576 1.97.14 2.507a.755.755 0 0 1-.29.223c-.231-.363-.257-.894-.709-1.604"/>
<path fill="#9A62FF" d="M21.74 36.173c.455.193.22 1.074.662 1.871.543.978.984 2.084.72 3.294-.218.998-.425 1.046-.664 1.021-.238-.024-1.979-.438-3.425-1.454-1.447-1.016-2.062-2.025-1.633-2.608.409-.556 1.079-.893 2.157-1.154 1.032-.25 1.727-1.164 2.182-.97"/>
<path fill="#4F2A93" d="M22.458 42.36c-.24-.025-1.98-.439-3.425-1.455-1.15-.807-1.774-1.61-1.766-2.2a.138.138 0 0 1 .019-.027c.233-.302 1.651.06 3.193 1.031 1.47.925 2.526 1.988 2.271 2.573-.093.085-.19.088-.292.077"/>
<g>
<path fill="#A9DCF6" fill-opacity=".8" d="M12.754 15.163l.61 1.59a.626.626 0 0 1-.052.565c-1.185 1.837-5.732 3.582-7.843 3.01a.627.627 0 0 1-.415-.385l-.61-1.59c-.558-1.45-.348-3.129.461-4.39a.638.638 0 0 0-.37-.967c-1.446-.397-2.725-1.503-3.282-2.954l-.61-1.59a.625.625 0 0 1 .05-.564c1.187-1.837 5.734-3.582 7.844-3.01a.623.623 0 0 1 .416.384l.61 1.59c.557 1.45.347 3.129-.462 4.39a.638.638 0 0 0 .371.967c1.446.397 2.725 1.503 3.282 2.954"/>
<path fill="#FFF" fill-opacity=".9" d="M4.725 6.666c-1.35.518-2.307 1.167-2.767 1.665l.482 1.255c.402 1.046 1.333 1.883 2.43 2.184a1.922 1.922 0 0 1 1.284 1.159 1.92 1.92 0 0 1-.178 1.719c-.615.96-.747 2.204-.346 3.249l.483 1.256c.674.062 1.82-.096 3.17-.614 1.349-.518 2.306-1.167 2.765-1.664l-.482-1.257c-.401-1.044-1.332-1.881-2.43-2.182a1.922 1.922 0 0 1-1.284-1.16 1.924 1.924 0 0 1 .178-1.72c.615-.958.747-2.203.346-3.248l-.482-1.256c-.674-.062-1.82.096-3.17.614"/>
<path fill="#9A62FF" d="M4.93 7.61c1.013-.388 2.122-.706 2.229-.46.087.199.233.593-.43 1.325-.643.713-.508 1.512-.942 1.678-.505.194-.698-.222-1.476-.41-.802-.192-1.13-.743-1.212-.979-.115-.328.82-.765 1.832-1.153"/>
<path fill="#4F2A93" d="M4.31 9.744c-.801-.193-1.129-.743-1.211-.98-.091-.26.476-.587 1.219-.906-.17.19-.357.524-.116.948.25.443 1.188.678 1.228 1.138a.503.503 0 0 1-.036.241c-.28-.067-.537-.31-1.083-.44"/>
<path fill="#9A62FF" d="M7.418 13.683c.308-.118.603.413 1.185.59.713.218 1.436.544 1.87 1.247.358.58.28.698.154.797-.125.099-1.15.706-2.315.889-1.165.183-1.926-.016-1.991-.495-.061-.455.104-.927.5-1.552.38-.598.289-1.358.597-1.476"/>
<path fill="#4F2A93" d="M10.628 16.317c-.126.1-1.152.707-2.316.89-.926.144-1.597.048-1.866-.238a.092.092 0 0 1-.004-.022c-.027-.253.82-.736 2.01-.984 1.132-.237 2.132-.217 2.28.182-.006.084-.05.13-.104.172"/>
</g>
<g>
<path fill="#A9DCF6" fill-opacity=".8" d="M32.605 10.804l-.31 1.24a.47.47 0 0 1-.275.324c-1.518.619-5.062-.265-6.113-1.524a.47.47 0 0 1-.09-.416l.31-1.24c.281-1.13 1.132-2.07 2.172-2.498a.479.479 0 0 0 .188-.753c-.718-.866-1.027-2.096-.745-3.226l.309-1.24a.469.469 0 0 1 .274-.324c1.519-.619 5.063.265 6.113 1.524.097.114.127.27.09.415l-.308 1.24c-.282 1.13-1.133 2.071-2.173 2.498a.479.479 0 0 0-.188.754c.718.865 1.027 2.095.746 3.226"/>
<path fill="#FFF" fill-opacity=".9" d="M31.327 2.13c-1.052-.262-1.92-.276-2.416-.168l-.244.98c-.203.814.009 1.729.554 2.386.292.352.4.824.29 1.264a1.44 1.44 0 0 1-.849.98 2.762 2.762 0 0 0-1.61 1.847l-.244.98c.387.328 1.16.723 2.211.986 1.052.262 1.92.275 2.416.167l.244-.98a2.761 2.761 0 0 0-.554-2.385 1.442 1.442 0 0 1-.29-1.265c.11-.44.427-.806.849-.98a2.76 2.76 0 0 0 1.61-1.847l.244-.979c-.387-.328-1.159-.724-2.211-.986"/>
<path fill="#9A62FF" d="M31.047 2.799c.79.197 1.608.478 1.567.676-.032.159-.112.464-.834.629-.701.16-.962.71-1.3.625-.394-.098-.334-.436-.731-.886-.41-.464-.375-.943-.324-1.124.071-.25.833-.117 1.622.08"/>
<path fill="#4F2A93" d="M29.749 3.843c-.41-.464-.375-.943-.324-1.124.056-.198.546-.156 1.139-.032-.186.044-.444.169-.48.533-.036.38.44.927.266 1.227a.378.378 0 0 1-.126.133c-.143-.161-.197-.422-.475-.737"/>
<path fill="#9A62FF" d="M29.963 7.6c.24.06.193.513.474.872.344.44.648.952.613 1.57-.03.51-.128.55-.248.556-.12.007-1.012-.061-1.805-.45-.794-.388-1.177-.838-1.01-1.16.158-.306.462-.525.974-.739.49-.204.762-.71 1.002-.65"/>
<path fill="#4F2A93" d="M30.802 10.599c-.12.006-1.012-.062-1.806-.45-.63-.31-1.002-.657-1.043-.949a.069.069 0 0 1 .007-.015c.091-.167.82-.1 1.657.26.798.341 1.403.784 1.323 1.092-.04.05-.087.059-.138.062"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -326,7 +326,7 @@
.footer-row {
margin: 0;
flex: 0 1 auto;
z-index: 17;
z-index: 10;
}
footer {

View File

@@ -18,7 +18,10 @@
<div>
<span class="mr-1 ml-0 d-block">
<strong v-once>{{ $t('createdBy') }}:</strong>
<user-link
<span v-if="challenge.leader === null">
{{ $t('noChallengeOwner') }}
</span>
<user-link v-else
class="mx-1"
:user="challenge.leader"
/>

View File

@@ -43,7 +43,14 @@
>
<div class="owner-item">
<strong>{{ $t('createdBy') }}:</strong>
<span
v-if="challenge.leader === null"
class="mx-1"
>
{{ $t('noChallengeOwner') }}
</span>
<user-link
v-else
class="mx-1"
:user="challenge.leader"
/>

View File

@@ -16,6 +16,7 @@
v-model="workingChallenge.name"
type="text"
:placeholder="$t('challengeNamePlaceholder')"
@keydown="enableSubmit"
/>
</div>
<div class="form-group">
@@ -26,6 +27,7 @@
v-model="workingChallenge.shortName"
type="text"
:placeholder="$t('shortNamePlaceholder')"
@keydown="enableSubmit"
/>
</div>
<div class="form-group">
@@ -41,6 +43,7 @@
v-model="workingChallenge.summary"
class="summary-textarea form-control"
:placeholder="$t('challengeSummaryPlaceholder')"
@keydown="enableSubmit"
></textarea>
</div>
<div class="form-group">
@@ -55,6 +58,7 @@
v-model="workingChallenge.description"
class="description-textarea form-control"
:placeholder="$t('challengeDescriptionPlaceholder')"
@keydown="enableSubmit"
></textarea>
</div>
<div
@@ -67,6 +71,7 @@
<select
v-model="workingChallenge.group"
class="form-control"
@change="enableSubmit"
>
<option
v-for="group in groups"
@@ -119,6 +124,7 @@
class="custom-control-input"
type="checkbox"
:value="group.key"
@change="enableSubmit"
>
<label
v-once
@@ -150,6 +156,7 @@
type="number"
:min="minPrize"
:max="maxPrize"
@change="enableSubmit"
>
</div>
<div class="row footer-wrap">
@@ -266,6 +273,7 @@
<script>
import clone from 'lodash/clone';
import throttle from 'lodash/throttle';
import markdownDirective from '@/directives/markdown';
@@ -534,6 +542,7 @@ export default {
if (!this.workingChallenge.description) errors.push(this.$t('descriptionRequired'));
if (!this.workingChallenge.group) errors.push(this.$t('locationRequired'));
if (!this.workingChallenge.categories || this.workingChallenge.categories.length === 0) errors.push(this.$t('categoiresRequired'));
if (this.workingChallenge.prize > this.maxPrize) errors.push(this.$t('cantAfford'));
if (errors.length > 0) {
window.alert(errors.join('\n'));
@@ -556,14 +565,20 @@ export default {
challengeDetails.categories = serverCategories;
let challenge;
if (this.cloning) {
challenge = await this.$store.dispatch('challenges:cloneChallenge', {
challenge: challengeDetails,
cloningChallengeId: this.cloningChallengeId,
});
this.cloningChallengeId = '';
} else {
challenge = await this.$store.dispatch('challenges:createChallenge', { challenge: challengeDetails });
try {
if (this.cloning) {
challenge = await this.$store.dispatch('challenges:cloneChallenge', {
challenge: challengeDetails,
cloningChallengeId: this.cloningChallengeId,
});
this.cloningChallengeId = '';
} else {
challenge = await this.$store.dispatch('challenges:createChallenge', { challenge: challengeDetails });
}
} catch (e) {
// creating the challenge failed. Most probably due to server-side errors.
console.error(e); // eslint-disable-line no-console
return;
}
// Update Group Prize
@@ -618,6 +633,12 @@ export default {
toggleCategorySelect () {
this.showCategorySelect = !this.showCategorySelect;
},
enableSubmit: throttle(function enableSubmit () {
/* Enables the submit button if it was disabled */
if (this.loading) {
this.loading = false;
}
}, 250),
},
};
</script>

View File

@@ -15,6 +15,7 @@
:member="user"
:class-badge-position="'next-to-name'"
:is-header="true"
:disable-name-styling="true"
/>
<div
v-if="hasParty"

View File

@@ -4,6 +4,7 @@
<profileModal />
<report-flag-modal />
<send-gems-modal />
<select-user-modal />
<b-navbar
class="topbar navbar-inverse static-top"
toggleable="lg"
@@ -57,8 +58,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/inventory'),
'down': $route.path.startsWith('/inventory') && isDesktop()}"
'active': $route.path.startsWith('/inventory')}"
>
<div
class="chevron rotate"
@@ -101,8 +101,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/shop'),
'down': $route.path.startsWith('/shop') && isDesktop()}"
'active': $route.path.startsWith('/shop')}"
>
<div
class="chevron rotate"
@@ -168,8 +167,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/groups'),
'down': $route.path.startsWith('/groups') && isDesktop()}"
'active': $route.path.startsWith('/groups')}"
>
<div
class="chevron rotate"
@@ -211,8 +209,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/group-plans'),
'down': $route.path.startsWith('/group-plans') && isDesktop()}"
'active': $route.path.startsWith('/group-plans')}"
>
<div
v-if="groupPlans.length > 0"
@@ -245,8 +242,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/challenges'),
'down': $route.path.startsWith('/challenges') && isDesktop()}"
'active': $route.path.startsWith('/challenges')}"
>
<div
class="chevron rotate"
@@ -282,8 +278,7 @@
<li
class="topbar-item droppable"
:class="{
'active': $route.path.startsWith('/help'),
'down': $route.path.startsWith('/help') && isDesktop()}"
'active': $route.path.startsWith('/help')}"
>
<div
class="chevron rotate"
@@ -366,7 +361,7 @@
class="top-menu-icon svg-icon gem"
:aria-label="$t('gems')"
href="#buy-gems"
@click.prevent="showBuyGemsModal('gems')"
@click.prevent="showBuyGemsModal()"
v-html="icons.gem"
></a>
<span>{{ userGems }}</span>
@@ -725,6 +720,7 @@ import notificationMenu from './notificationsDropdown';
import profileModal from '../userMenu/profileModal';
import reportFlagModal from '../chat/reportFlagModal';
import sendGemsModal from '@/components/payments/sendGemsModal';
import selectUserModal from '@/components/payments/selectUserModal';
import sync from '@/mixins/sync';
import userDropdown from './userDropdown';
@@ -736,6 +732,7 @@ export default {
profileModal,
reportFlagModal,
sendGemsModal,
selectUserModal,
userDropdown,
},
mixins: [sync],
@@ -793,9 +790,7 @@ export default {
openPartyModal () {
this.$root.$emit('bv::show::modal', 'create-party-modal');
},
showBuyGemsModal (startingPage) {
this.$store.state.gemModalOptions.startingPage = startingPage;
showBuyGemsModal () {
Analytics.track({
hitType: 'event',
eventCategory: 'button',
@@ -807,13 +802,15 @@ export default {
},
dropdownDesktop (hover) {
if (this.isDesktop() && hover.target.classList.contains('droppable')) {
this.dropdown(hover.target);
if (hover.type === 'mouseenter') {
this.openDropdown(hover.target);
} else {
this.closeDropdown(hover.target);
}
}
},
dropdownMobile (click) {
this.dropdown(click.currentTarget.parentElement);
},
dropdown (element) {
const element = click.currentTarget.parentElement;
const droppedElement = document.getElementsByClassName('down')[0];
if (droppedElement && droppedElement !== element) {
droppedElement.classList.remove('down');
@@ -821,18 +818,27 @@ export default {
droppedElement.lastChild.style.maxHeight = 0;
}
}
element.classList.toggle('down');
element.lastChild.style.maxHeight = element.classList.contains('down') ? `${element.lastChild.scrollHeight}px` : 0;
if (element.classList.contains('down')) {
this.closeDropdown(element);
} else {
this.openDropdown(element);
}
},
closeDropdown (element) {
element.classList.remove('down');
element.lastChild.style.maxHeight = 0;
},
openDropdown (element) {
element.classList.add('down');
element.lastChild.style.maxHeight = `${element.lastChild.scrollHeight}px`;
},
closeMenu () {
Array.from(document.getElementsByClassName('droppable')).forEach(droppableElement => {
this.closeDropdown(droppableElement);
});
if (this.isMobile()) {
this.menuIsOpen = false;
Array.from(document.getElementsByClassName('droppable')).forEach(droppableElement => {
droppableElement.classList.remove('down');
droppableElement.lastChild.style.maxHeight = 0;
});
}
},
isMobile () {

View File

@@ -0,0 +1,114 @@
<template>
<div
class="notification d-flex flex-column justify-content-center text-center"
>
<strong
class="mx-auto mb-2"
v-once
>
{{ $t('g1g1Announcement') }}
</strong>
<p
class="mx-4"
v-once
>
{{ $t('g1g1Details') }}
</p>
<div
class="btn-secondary mx-auto d-flex"
@click="showSelectUser()"
>
<div
class="m-auto"
v-once
>
{{ $t('sendGift') }}
</div>
</div>
<div
class="notification-remove"
@click.stop="remove()"
>
<div
class="svg-icon"
v-html="icons.close"
v-once
></div>
</div>
</div>
</template>
<style lang='scss' scoped>
@import '~@/assets/scss/colors.scss';
p, strong {
color: $white;
}
p {
font-size: 14px;
}
.notification {
background-image: url('~@/assets/images/g1g1-notif.png');
background-size: 378px 204px;
width: 378px;
height: 204px;
padding: 3rem;
position: relative;
overflow: hidden;
white-space: normal;
cursor: pointer;
}
.notification-remove {
position: absolute;
width: 18px;
height: 18px;
padding: 4px;
right: 24px;
top: 24px;
.svg-icon {
width: 10px;
height: 10px;
}
}
.btn-secondary {
width: 5.75rem;
min-height: 1.5rem;
border-radius: 2px;
border-color: $white;
box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
font-size: 12px;
font-weight: bold;
}
</style>
<script>
import closeIcon from '@/assets/svg/close-teal.svg';
import { mapActions } from '@/libs/store';
export default {
props: ['notification'],
data () {
return {
icons: Object.freeze({
close: closeIcon,
}),
};
},
methods: {
...mapActions({
readNotification: 'notifications:readNotification',
}),
remove () {
this.readNotification({ notificationId: this.notification.id });
},
showSelectUser () {
this.$root.$emit('bv::show::modal', 'select-user-modal');
},
},
};
</script>

View File

@@ -147,6 +147,7 @@ import ACHIEVEMENT_JUST_ADD_WATER from './notifications/justAddWater';
import ACHIEVEMENT_LOST_MASTERCLASSER from './notifications/lostMasterclasser';
import ACHIEVEMENT_MIND_OVER_MATTER from './notifications/mindOverMatter';
import ONBOARDING_COMPLETE from './notifications/onboardingComplete';
import GIFT_ONE_GET_ONE from './notifications/g1g1';
import OnboardingGuide from './onboardingGuide';
export default {
@@ -176,6 +177,7 @@ export default {
VERIFY_USERNAME,
OnboardingGuide,
ONBOARDING_COMPLETE,
GIFT_ONE_GET_ONE,
},
data () {
return {
@@ -195,7 +197,7 @@ export default {
// listed in the order they should appear in the notifications panel.
// NOTE: Those not listed here won't be shown in the notification panel!
handledNotifications: [
'NEW_STUFF', 'GROUP_TASK_NEEDS_WORK',
'NEW_STUFF', 'GIFT_ONE_GET_ONE', 'GROUP_TASK_NEEDS_WORK',
'GUILD_INVITATION', 'PARTY_INVITATION', 'CHALLENGE_INVITATION',
'QUEST_INVITATION', 'GROUP_TASK_ASSIGNED', 'GROUP_TASK_APPROVAL', 'GROUP_TASK_APPROVED',
'GROUP_TASK_CLAIMED', 'NEW_MYSTERY_ITEMS', 'CARD_RECEIVED',

View File

@@ -75,7 +75,7 @@
>{{ $t('logout') }}</a>
<li
v-if="!user.purchased.plan.customerId"
@click="showBuyGemsModal('subscribe')"
@click="showBuyGemsModal()"
>
<div class="dropdown-item text-center">
<h3 class="purple">
@@ -176,9 +176,7 @@ export default {
showProfile (startingPage) {
this.$router.push({ name: startingPage });
},
showBuyGemsModal (startingPage) {
this.$store.state.gemModalOptions.startingPage = startingPage;
showBuyGemsModal () {
Analytics.track({
hitType: 'event',
eventCategory: 'button',

View File

@@ -24,7 +24,15 @@
/>
<div class="d-flex flex-column profile-name-character">
<h3 class="character-name">
{{ member.profile.name }}
<span v-if="member.contributor && member.contributor.level > 0 && !disableNameStyling">
<user-link
:user-id="member._id"
:name="member.profile.name"
:backer="member.backer"
:contributor="member.contributor"
/>
</span>
<span v-else>{{ member.profile.name }}</span>
<div
v-if="isBuffed"
v-b-tooltip.hover.bottom="$t('buffed')"
@@ -171,6 +179,7 @@ import Avatar from './avatar';
import ClassBadge from './members/classBadge';
import { mapState } from '@/libs/store';
import StatsBar from './ui/statsbar';
import userLink from './userLink';
import { toNextLevel } from '@/../../common/script/statHelpers';
import statsComputed from '@/../../common/script/libs/statsComputed';
@@ -186,6 +195,7 @@ export default {
Avatar,
ClassBadge,
StatsBar,
userLink,
},
filters: {
statFloor (value) {
@@ -216,6 +226,10 @@ export default {
type: Boolean,
default: false,
},
disableNameStyling: {
type: Boolean,
default: false,
},
},
data () {
return {

View File

@@ -19,7 +19,7 @@
:key="member._id"
@click="selectMember(member)"
>
@{{ member.auth.local.username }}
{{ memberName(member) }}
</b-dropdown-item>
</b-dropdown>
</template>
@@ -61,6 +61,12 @@ export default {
selectMember (member) {
this.$emit('member-selected', member);
},
memberName (member) {
if (member.auth.local && member.auth.local.username) {
return `@${member.auth.local.username}`;
}
return member.profile.name;
},
},
};
</script>

View File

@@ -294,6 +294,22 @@ const NOTIFICATIONS = {
achievement: 'pearlyPro', // defined manually until the server sends all the necessary data
},
},
ACHIEVEMENT_TICKLED_PINK: {
achievement: true,
label: $t => `${$t('achievement')}: ${$t('achievementTickledPink')}`,
modalId: 'generic-achievement',
data: {
achievement: 'tickledPink', // defined manually until the server sends all the necessary data
},
},
ACHIEVEMENT_ROSY_OUTLOOK: {
achievement: true,
label: $t => `${$t('achievement')}: ${$t('achievementRosyOutlook')}`,
modalId: 'generic-achievement',
data: {
achievement: 'rosyOutlook', // defined manually until the server sends all the necessary data
},
},
};
export default {
@@ -352,7 +368,8 @@ export default {
'GENERIC_ACHIEVEMENT', 'ACHIEVEMENT_PARTY_UP', 'ACHIEVEMENT_PARTY_ON', 'ACHIEVEMENT_BEAST_MASTER',
'ACHIEVEMENT_MOUNT_MASTER', 'ACHIEVEMENT_TRIAD_BINGO', 'ACHIEVEMENT_DUST_DEVIL', 'ACHIEVEMENT_ARID_AUTHORITY',
'ACHIEVEMENT_MONSTER_MAGUS', 'ACHIEVEMENT_UNDEAD_UNDERTAKER', 'ACHIEVEMENT_PRIMED_FOR_PAINTING',
'ACHIEVEMENT_PEARLY_PRO', 'ACHIEVEMENT', 'ONBOARDING_COMPLETE',
'ACHIEVEMENT_PEARLY_PRO', 'ACHIEVEMENT_TICKLED_PINK', 'ACHIEVEMENT_ROSY_OUTLOOK', 'ACHIEVEMENT',
'ONBOARDING_COMPLETE',
].forEach(type => {
handledNotifications[type] = true;
});
@@ -760,6 +777,8 @@ export default {
case 'ACHIEVEMENT_UNDEAD_UNDERTAKER':
case 'ACHIEVEMENT_PRIMED_FOR_PAINTING':
case 'ACHIEVEMENT_PEARLY_PRO':
case 'ACHIEVEMENT_TICKLED_PINK':
case 'ACHIEVEMENT_ROSY_OUTLOOK':
case 'GENERIC_ACHIEVEMENT':
this.showNotificationWithModal(notification);
break;

View File

@@ -23,465 +23,153 @@
</div>
</div>
</div>
<div class="d-flex nav justify-content-center">
<div
class="nav-item text-center"
:class="{active: selectedPage === 'subscribe'}"
@click="selectedPage = 'subscribe'"
>
{{ $t('subscribe') }}
</div>
<div
class="nav-item text-center"
:class="{active: selectedPage === 'gems'}"
@click="selectedPage = 'gems'"
>
{{ $t('buyGems') }}
</div>
</div>
<div v-show="selectedPage === 'gems'">
<div v-if="hasSubscription">
<div class="row text-center">
<h2 class="mx-auto text-leadin">
{{ $t('subscriptionAlreadySubscribedLeadIn') }}
</h2>
</div>
<div class="row text-center">
<div class="col-6 offset-3">
<p>{{ $t("gemsPurchaseNote") }}</p>
</div>
</div>
</div>
<div v-if="hasSubscription">
<div class="row text-center">
<h2 class="mx-auto text-leadin">
{{ $t('gemBenefitLeadin') }}
{{ $t('subscriptionAlreadySubscribedLeadIn') }}
</h2>
</div>
<div class="row">
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit1') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit2') }}</p>
</div>
</div>
</div>
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit3') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit4') }}</p>
</div>
</div>
</div>
</div>
<div class="card-deck gem-deck">
<div
class="card text-center col-3"
:class="{active: gemAmount === 20 }"
>
<div class="card-img-top">
<div
class="mx-auto"
style="'height: 55px; width: 47.5px; margin-top: 1.85em;'"
v-html="icons.twentyOneGems"
></div>
</div>
<div class="card-body">
<div class="gem-count">
20
</div>
<div class="gem-text">
{{ $t('gems') }}
</div>
<div class="divider"></div>
<button
class="btn btn-primary"
@click="gemAmount === 20 ? gemAmount = 0 : gemAmount = 20"
>
{{ gemAmount === 20 ? $t('selected') : '$5.00' }}
</button>
</div>
</div>
</div>
<div class="row text-center">
<h2 class="mx-auto text-payment">
{{ $t('choosePaymentMethod') }}
</h2>
</div>
<div class="payments-column">
<button
class="purchase btn btn-primary payment-button payment-item"
@click="showStripe({})"
>
<div
class="svg-icon credit-card-icon"
v-html="icons.creditCardIcon"
></div>
{{ $t('card') }}
</button>
<button
class="btn payment-item paypal-checkout payment-button"
@click="openPaypal(paypalCheckoutLink, 'gems')"
>
&nbsp;
<img
src="~@/assets/images/paypal-checkout.png"
:alt="$t('paypal')"
>&nbsp;
</button>
<amazon-button
class="payment-item"
:amazon-data="{type: 'single'}"
/>
</div>
<div class="row text-center">
<div
class="svg-icon mx-auto"
style="'height: 24px; width: 24px;'"
v-html="icons.heart"
></div>
</div>
<div class="row text-center text-outtro">
<div class="col-6 offset-3">
{{ $t('buyGemsSupportsDevs') }}
<p>{{ $t("gemsPurchaseNote") }}</p>
</div>
</div>
</div>
<div v-show="selectedPage === 'subscribe'">
<div v-if="hasSubscription">
<div class="row text-center">
<h2 class="mx-auto text-leadin">
{{ $t('subscriptionAlreadySubscribedLeadIn') }}
</h2>
<div class="row text-center">
<h2 class="mx-auto text-leadin">
{{ $t('gemBenefitLeadin') }}
</h2>
</div>
<div class="row">
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit1') }}</p>
</div>
</div>
<div class="row text-center">
<div class="col-10 offset-1">
<p v-html="$t('subscriptionAlreadySubscribed1')"></p>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit2') }}</p>
</div>
</div>
</div>
<div v-if="!hasSubscription">
<div class="row text-center">
<h2 class="mx-auto text-leadin">
{{ $t('subscriptionBenefitLeadin') }}
</h2>
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit3') }}</p>
</div>
</div>
<div class="row">
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit1') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit2') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit3') }}</p>
</div>
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col">
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit4') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit5') }}</p>
</div>
</div>
<div class="row">
<div class="col-md-2 offset-1">
<div class="d-flex bubble justify-content-center align-items-center">
<div
class="svg-icon check mx-auto"
v-html="icons.check"
></div>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('subscriptionBenefit6') }}</p>
</div>
</div>
<div class="col-md-8 align-self-center">
<p>{{ $t('gemBenefit4') }}</p>
</div>
</div>
<div class="card-deck">
</div>
</div>
<div class="card-deck gem-deck">
<div
class="card text-center col-3"
:class="{active: gemAmount === 20 }"
>
<div class="card-img-top">
<div
class="card text-center"
:class="{active: subscriptionPlan === 'basic_earned'}"
>
<div class="card-body">
<div class="subscription-price">
<span class="superscript">$</span>
<span>5</span>
<span class="superscript muted">.00</span>
</div>
<div
v-once
class="small"
>
{{ $t('everyMonth') }}
</div>
<div class="divider"></div>
<p
v-markdown="$t('earnGemsMonthly', {cap:25})"
class="benefits"
></p>
<div class="spacer"></div>
<button
class="btn btn-primary"
@click="subscriptionPlan = 'basic_earned'"
>
{{ subscriptionPlan === "basic_earned" ? $t('selected') : $t('select') }}
</button>
</div>
</div>
<div
class="card text-center"
:class="{active: subscriptionPlan === 'basic_3mo'}"
>
<div class="card-body">
<div class="subscription-price">
<span class="superscript">$</span>
<span>15</span>
<span class="superscript muted">.00</span>
</div>
<div
v-once
class="small"
>
{{ $t('everyXMonths', {interval: 3}) }}
</div>
<div class="divider"></div>
<p
v-markdown="$t('earnGemsMonthly', {cap:30})"
class="benefits"
></p>
<p
v-markdown="$t('receiveMysticHourglass')"
class="benefits"
></p>
<button
class="btn btn-primary"
@click="subscriptionPlan = 'basic_3mo'"
>
{{ subscriptionPlan === "basic_3mo" ? $t('selected') : $t('select') }}
</button>
</div>
</div>
<div
class="card text-center"
:class="{active: subscriptionPlan === 'basic_6mo'}"
>
<div class="card-body">
<div class="subscription-price">
<span class="superscript">$</span>
<span>30</span>
<span class="superscript muted">.00</span>
</div>
<div
v-once
class="small"
>
{{ $t('everyXMonths', {interval: 6}) }}
</div>
<div class="divider"></div>
<p
v-markdown="$t('earnGemsMonthly', {cap:35})"
class="benefits"
></p>
<p
v-markdown="$t('receiveMysticHourglasses', {amount:2})"
class="benefits"
></p>
<button
class="btn btn-primary"
@click="subscriptionPlan = 'basic_6mo'"
>
{{ subscriptionPlan === "basic_6mo" ? $t('selected') : $t('select') }}
</button>
</div>
</div>
<div
class="card text-center"
:class="{active: subscriptionPlan === 'basic_12mo'}"
>
<div class="card-body">
<div class="subscription-price">
<span class="superscript">$</span>
<span>48</span>
<span class="superscript muted">.00</span>
</div>
<div
v-once
class="small"
>
{{ $t('everyYear') }}
</div>
<div class="divider"></div>
<p
v-markdown="$t('earnGemsMonthly', {cap:45})"
class="benefits"
></p>
<p
v-markdown="$t('receiveMysticHourglasses', {amount:4})"
class="benefits"
></p>
<button
class="btn btn-primary"
@click="subscriptionPlan = 'basic_12mo'"
>
{{ subscriptionPlan === "basic_12mo" ? $t('selected') : $t('select') }}
</button>
</div>
</div>
</div>
<div
v-if="subscriptionPlan"
class="row text-center"
>
<h2
v-once
class="mx-auto text-payment"
>
{{ $t('choosePaymentMethod') }}
</h2>
</div>
<div class="row text-center">
<a
v-once
class="mx-auto"
>{{ $t('haveCouponCode') }}</a>
</div>
<div
v-if="subscriptionPlan"
class="payments-column"
>
<button
class="purchase btn btn-primary payment-button payment-item"
@click="showStripe({subscription: subscriptionPlan})"
>
<div
class="svg-icon credit-card-icon"
v-html="icons.creditCardIcon"
></div>
{{ $t('card') }}
</button>
<button
class="btn payment-item paypal-checkout payment-button"
@click="openPaypal(paypalSubscriptionLink, 'subscription')"
>
&nbsp;
<img
src="~@/assets/images/paypal-checkout.png"
:alt="$t('paypal')"
>&nbsp;
</button>
<amazon-button
class="payment-item"
:amazon-data="{type: 'subscription', subscription: subscriptionPlan}"
/>
</div>
<div class="row text-center">
<div
class="svg-icon mx-auto"
style="'height: 24px; width: 24px;'"
v-html="icons.heart"
style="'height: 55px; width: 47.5px; margin-top: 1.85em;'"
v-html="icons.twentyOneGems"
></div>
</div>
<div class="row text-center text-outtro">
<div class="col-6 offset-3">
{{ $t('subscribeSupportsDevs') }}
<div class="card-body">
<div class="gem-count">
20
</div>
<div class="gem-text">
{{ $t('gems') }}
</div>
<div class="divider"></div>
<button
class="btn btn-primary"
@click="gemAmount === 20 ? gemAmount = 0 : gemAmount = 20"
>
{{ gemAmount === 20 ? $t('selected') : '$5.00' }}
</button>
</div>
</div>
</div>
<div class="row text-center">
<h2 class="mx-auto text-payment">
{{ $t('choosePaymentMethod') }}
</h2>
</div>
<div class="payments-column">
<button
class="purchase btn btn-primary payment-button payment-item"
@click="showStripe({})"
>
<div
class="svg-icon credit-card-icon"
v-html="icons.creditCardIcon"
></div>
{{ $t('card') }}
</button>
<button
class="btn payment-item paypal-checkout payment-button"
@click="openPaypal(paypalCheckoutLink, 'gems')"
>
&nbsp;
<img
src="~@/assets/images/paypal-checkout.png"
:alt="$t('paypal')"
>&nbsp;
</button>
<amazon-button
class="payment-item"
:amazon-data="{type: 'single'}"
/>
</div>
<div class="row text-center">
<div
class="svg-icon mx-auto"
style="'height: 24px; width: 24px;'"
v-html="icons.heart"
></div>
</div>
<div class="row text-center text-outtro">
<div class="col-6 offset-3">
{{ $t('buyGemsSupportsDevs') }}
</div>
</div>
</b-modal>
</div>
</template>
@@ -522,10 +210,6 @@
font-size: 16px;
}
.benefits {
font-size: 14px;
}
.bubble {
width: 32px;
height: 32px;
@@ -579,46 +263,6 @@
height: 56px;
}
.muted {
color: #c3c0c7;
}
.nav {
font-weight: bold;
background-color: $gray-600;
}
.nav-item {
box-sizing: border-box;
display: inline-block;
font-size: 16px;
margin: 0rem;
padding: 1rem;
width: 7.5rem;
}
.nav-item:hover, .nav-item.active {
color: #4f2a93;
border-bottom: 4px solid $purple-300;
cursor: pointer;
}
.spacer {
height: 4em;
}
.subscription-price {
font-family: Roboto Condensed;
font-size: 48px;
font-weight: bold;
color: #1ca372;
}
.superscript {
font-size: 24px;
vertical-align: super;
}
.svg-icon.check {
color: #bda8ff;
width: 1rem;
@@ -696,9 +340,6 @@ export default {
},
computed: {
...mapState({ user: 'user.data' }),
startingPageOption () {
return this.$store.state.gemModalOptions.startingPage;
},
hasSubscription () {
return Boolean(this.user.purchased.plan.customerId);
},
@@ -708,11 +349,6 @@ export default {
>= (this.user.purchased.plan.consecutive.gemCapExtra + this.planGemLimits.convCap);
},
},
watch: {
startingPageOption () {
this.selectedPage = this.$store.state.gemModalOptions.startingPage;
},
},
methods: {
close () {
this.$root.$emit('bv::hide::modal', 'buy-gems');

View File

@@ -0,0 +1,219 @@
<template>
<b-modal
id="select-user-modal"
:hide-header="true"
:hide-footer="true"
@hide="onHide()"
>
<h2 class="ml-2"> {{ $t('sendGift')}} </h2>
<div class="d-flex flex-column align-items-center">
<div
class="modal-close"
@click="close()"
>
<div class="svg-icon" v-html="icons.close"></div>
</div>
<div class="ml-2 mr-auto">
<strong> {{ $t('sendGiftToWhom')}} </strong>
</div>
<div
class="form"
name="selectUser"
novalidate="novalidate"
>
<div class="input-group">
<input
id="selectUser"
v-model="userSearchTerm"
class="form-control"
type="text"
:placeholder="$t('usernameOrUserId')"
:class="{
'input-valid': foundUser._id,
'is-invalid input-invalid': userNotFound,
}"
>
</div>
<div
v-if="userSearchTerm.length > 0 && userNotFound"
class="input-error text-center mt-2"
>
{{ $t('userWithUsernameOrUserIdNotFound') }}
</div>
<div class="d-flex justify-content-center align-items-middle mt-3">
<a
class="my-auto ml-auto mr-3 cancel-link"
@click="close()"
>
{{ $t('cancel') }}
</a>
<button
class="btn btn-primary my-auto mr-auto"
type="submit"
:disabled="searchCannotSubmit"
@click="selectUser()"
>
{{ $t('selectGift') }}
</button>
</div>
</div>
</div>
</b-modal>
</template>
<style lang="scss">
@import '~@/assets/scss/modal.scss';
#select-user-modal {
@include centeredModal();
.modal-dialog {
width: 29.5rem;
margin-top: 25vh;
}
}
</style>
<style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
a:not([href]) {
color: $blue-10;
font-size: 16px;
}
.form-control {
width: 26.5rem;
border: 0px;
color: $gray-50;
}
.g1g1 {
background-image: url('~@/assets/images/g1g1-send.png');
background-size: 472px 152px;
width: 470px;
height: 152px;
margin: -1rem 0rem 0rem -1rem;
border-radius: 0.3rem 0.3rem 0rem 0rem;
padding: 1.5rem;
color: $white;
.heading {
font-size: 16px;
font-weight: bold;
margin-bottom: 1rem;
}
.details {
padding: 0rem 6rem;
}
}
.input-error {
color: $red-50;
font-size: 90%;
width: 100%;
}
.input-group {
border-radius: 2px;
border: solid 1px $gray-400;
margin-top: 0.5rem;
}
.input-group:focus-within {
border-color: $purple-500;
}
.modal-close {
position: absolute;
width: 18px;
height: 18px;
padding: 4px;
right: 16px;
top: 16px;
cursor: pointer;
.svg-icon {
width: 12px;
height: 12px;
}
}
</style>
<script>
import debounce from 'lodash/debounce';
import isUUID from 'validator/lib/isUUID';
import closeIcon from '@/assets/svg/close.svg';
export default {
data () {
return {
userNotFound: false,
userSearchTerm: '',
foundUser: {},
icons: Object.freeze({
close: closeIcon,
}),
};
},
computed: {
searchCannotSubmit () {
if (this.userSearchTerm.length < 1) return true;
return typeof this.foundUser._id === 'undefined';
},
},
watch: {
userSearchTerm: {
handler () {
this.searchUser(this.userSearchTerm);
},
},
},
methods: {
close () {
this.$root.$emit('habitica::dismiss-modal', 'select-user-modal');
},
searchUser: debounce(async function userSearch (searchTerm) {
this.foundUser = {};
if (searchTerm.length < 1) {
this.userNotFound = false;
return;
}
let result;
if (isUUID(searchTerm)) {
try {
result = await this.$store.dispatch('members:fetchMember', {
memberId: searchTerm,
});
} catch {
result = null;
}
} else {
try {
result = await this.$store.dispatch('members:fetchMemberByUsername', {
username: searchTerm,
});
} catch {
result = null;
}
}
if (!result || !result.data || !result.data.data) {
this.userNotFound = true;
return;
}
this.userNotFound = false;
this.foundUser = result.data.data;
}, 500),
selectUser () {
this.$root.$emit('habitica::send-gems', this.foundUser);
this.close();
},
onHide () {
this.userNotFound = false;
this.userSearchTerm = '';
this.foundUser = {};
},
},
};
</script>

View File

@@ -2,7 +2,6 @@
<b-modal
id="payments-success-modal"
:title="$t('accountSuspendedTitle')"
size="sm"
:hide-footer="isFromBalance"
:modal-class="isFromBalance ? ['modal-hidden-footer'] : []"
>
@@ -102,6 +101,10 @@
<style lang="scss">
@import '~@/assets/scss/colors.scss';
#payments-success-modal .modal-md {
max-width: 20.5rem;
}
#payments-success-modal .modal-content {
background: transparent;
}
@@ -115,7 +118,7 @@
justify-content: center;
padding-top: 24px;
padding-bottom: 0px;
background: $green-10;
background: $green-100;
border-top-right-radius: 8px;
border-top-left-radius: 8px;
border-bottom: none;
@@ -241,7 +244,7 @@ export default {
methods: {
close () {
this.paymentData = {};
this.$root.$emit('bv::hide::modal', 'payments-success-modal');
this.$root.$emit('habitica::dismiss-modal', 'payments-success-modal');
},
},
};

View File

@@ -1,263 +1,510 @@
<template>
<div class="standard-page pt-0 px-0">
<h1>{{ $t('subscription') }}</h1>
<div class="row">
<div class="col-6">
<h2>{{ $t('benefits') }}</h2>
<ul>
<li>
<span
class="hint"
:popover="$t('buyGemsGoldText', {gemCostTranslation})"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('buyGemsGold') }}</span>
<span
v-if="subscription.key !== 'basic_earned'"
class="badge badge-success"
>{{ $t('buyGemsGoldCap', buyGemsGoldCap) }}</span>
</li>
<li>
<span
class="hint"
:popover="$t('retainHistoryText')"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('retainHistory') }}</span>
</li>
<li>
<span
class="hint"
:popover="$t('doubleDropsText')"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('doubleDrops') }}</span>
</li>
<li>
<span
class="hint"
:popover="$t('mysteryItemText')"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('mysteryItem') }}</span>
<div v-if="subscription.key !== 'basic_earned'">
<div class="badge badge-success">
{{ $t('mysticHourglass', mysticHourglass) }}
</div>
<div class="small muted">
{{ $t('mysticHourglassText') }}
</div>
</div>
</li>
<li>
<span
class="hint"
:popover="$t('exclusiveJackalopePetText')"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('exclusiveJackalopePet') }}</span>
</li>
<li>
<span
class="hint"
:popover="$t('supportDevsText')"
popover-trigger="mouseenter"
popover-placement="right"
>{{ $t('supportDevs') }}</span>
</li>
</ul>
<div v-if="!hasSubscription && !hasCanceledSubscription">
<div class="row mt-3">
<div class="block-header mx-auto">
{{ $t('support') }}
</div>
</div>
<div class="col-6">
<h2>Plan</h2>
<table
v-if="hasSubscription"
class="table alert alert-info"
>
<tr v-if="hasCanceledSubscription">
<td class="alert alert-warning">
<span class="noninteractive-button btn-danger">{{ $t('canceledSubscription') }}</span>
<i class="glyphicon glyphicon-time"></i>
{{ $t('subCanceled') }} &nbsp;
<strong>{{ dateTerminated }}</strong>
</td>
</tr>
<tr v-if="!hasCanceledSubscription">
<td>
<h4>{{ $t('subscribed') }}</h4>
<p v-if="hasPlan && !hasGroupPlan">
{{ $t('purchasedPlanId', purchasedPlanIdInfo) }}
</p>
<p v-if="hasGroupPlan">
{{ $t('youHaveGroupPlan') }}
</p>
</td>
</tr>
<tr v-if="user.purchased.plan.extraMonths">
<td>
<span class="glyphicon glyphicon-credit-card"></span>
&nbsp; {{ $t('purchasedPlanExtraMonths', purchasedPlanExtraMonthsDetails) }}
</td>
</tr>
<tr v-if="hasConsecutiveSubscription">
<td>
<span class="glyphicon glyphicon-forward"></span>
&nbsp; {{ $t('consecutiveSubscription') }}
<ul class="list-unstyled">
<li>{{ $t('consecutiveMonths') }} {{ user.purchased.plan.consecutive.count + user.purchased.plan.consecutive.offset }}</li> <!-- eslint-disable-line max-len -->
<li>{{ $t('gemCapExtra') }} {{ user.purchased.plan.consecutive.gemCapExtra }}</li>
<li>{{ $t('mysticHourglasses') }} {{ user.purchased.plan.consecutive.trinkets }}</li> <!-- eslint-disable-line max-len -->
</ul>
</td>
</tr>
</table>
<div v-if="!hasSubscription || hasCanceledSubscription">
<h4 v-if="hasCanceledSubscription">
{{ $t("resubscribe") }}
</h4>
<div class="form-group reduce-top-margin">
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<div
v-for="block in subscriptionBlocksOrdered"
v-if="block.target !== 'group' && block.canSubscribe === true"
:key="block.key"
class="radio"
>
<!-- eslint-enable vue/no-use-v-if-with-v-for -->
<label>
<input
v-model="subscription.key"
type="radio"
name="subRadio"
:value="block.key"
>
<span v-if="block.original">
<span class="label label-success line-through">${{ block.original }}</span>
{{ $t('subscriptionRateText', {price: block.price, months: block.months}) }}
</span>
<span
v-if="!block.original"
>{{ $t('subscriptionRateText', {price: block.price, months: block.months}) }}</span>
</label>
</div>
</div>
<div class="form-inline">
<div class="form-group">
<input
v-model="subscription.coupon"
class="form-control"
type="text"
:placeholder="$t('couponPlaceholder')"
>
</div>
<div class="form-group">
<button
class="btn btn-primary"
type="button"
@click="applyCoupon(subscription.coupon)"
>
{{ $t("apply") }}
</button>
</div>
</div>
</div>
<div v-if="hasSubscription">
<div
v-if="canEditCardDetails"
class="btn btn-primary"
@click="showStripeEdit()"
>
{{ $t('subUpdateCard') }}
</div>
<div
v-if="canCancelSubscription && !loading"
class="btn btn-sm btn-danger"
@click="cancelSubscriptionConfirm()"
>
{{ $t('cancelSub') }}
</div>
<small
v-if="!canCancelSubscription && !hasCanceledSubscription"
v-html="getCancelSubInfo()"
></small>
</div>
<div class="row mb-5">
<div
v-if="!hasSubscription || hasCanceledSubscription"
class="subscribe-pay"
>
<h3>{{ $t('subscribeUsing') }}</h3>
<div class="payments-column">
<button
class="purchase btn btn-primary payment-button payment-item"
:disabled="!subscription.key"
@click="showStripe({subscription:subscription.key, coupon:subscription.coupon})"
>
v-once
class="svg-icon svg-logo mx-auto mt-1"
v-html="icons.logo"
></div>
</div>
<div class="d-flex justify-content-center">
<div>
<div class="row col-12 ml-1">
<h2> {{ $t('subscribersReceiveBenefits') }} </h2>
</div>
<div class="row">
<div class="col-2">
<div
class="svg-icon credit-card-icon"
v-html="icons.creditCardIcon"
v-once
class="svg-icon svg-gems ml-3 mt-1"
v-html="icons.subscriberGems"
></div>
{{ $t('card') }}
</button>
<button
class="btn payment-item paypal-checkout payment-button"
:disabled="!subscription.key"
@click="openPaypal(paypalPurchaseLink, 'subscription')"
>
&nbsp;
<img
src="~@/assets/images/paypal-checkout.png"
:alt="$t('paypal')"
>&nbsp;
</button>
<amazon-button
class="payment-item"
:amazon-data="{
type: 'subscription', subscription: subscription.key, coupon: subscription.coupon}"
/>
</div>
<div class="col-10">
<h3> {{ $t('buyGemsGold') }} </h3>
<p> {{ $t('subscriptionBenefit1') }} </p>
</div>
</div>
<div class="row">
<div class="col-2">
<div
v-once
class="svg-icon svg-hourglasses ml-3 mt-1"
v-html="icons.subscriberHourglasses"
></div>
</div>
<div class="col-10">
<h3> {{ $t('mysticHourglassesTooltip') }} </h3>
<p> {{ $t('subscriptionBenefit6') }} </p>
</div>
</div>
<div class="row">
<div class="col-2">
<div
:class="currentMysterySet"
class="mt-n1"
></div>
</div>
<div class="col-10">
<h3> {{ $t('monthlyMysteryItems') }} </h3>
<p> {{ $t('subscriptionBenefit4') }} </p>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="Pet-Jackalope-RoyalPurple"></div>
</div>
<div class="col-10">
<h3> {{ $t('exclusiveJackalopePet') }} </h3>
<p> {{ $t('subscriptionBenefit5') }} </p>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="image-foods ml-2 mt-2"></div>
</div>
<div class="col-10">
<h3> {{ $t('doubleDropCap') }} </h3>
<p> {{ $t('subscriptionBenefit3') }} </p>
</div>
</div>
</div>
<div class="flex-spacer"></div>
<div>
<div class="subscribe-card d-flex flex-column">
<subscription-options class="mb-4"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<h2 v-once>
{{ $t('giftSubscription') }}
</h2>
<ol>
<li v-once>
{{ $t('giftSubscriptionText1') }}
</li>
<li v-once>
{{ $t('giftSubscriptionText2') }}
</li>
<li v-once>
{{ $t('giftSubscriptionText3') }}
</li>
</ol>
<h4 v-once>
{{ $t('giftSubscriptionText4') }}
</h4>
<div
v-if="hasSubscription"
class="d-flex flex-column align-items-center"
>
<h1 class="mt-4 mx-auto">{{ $t('subscription') }}</h1>
<div class="subscribe-card mx-auto">
<div
v-if="hasSubscription && !hasCanceledSubscription"
class="d-flex flex-column align-items-center my-4"
>
<div class="round-container bg-green-10 d-flex align-items-center justify-content-center">
<div
v-once
class="svg-icon svg-check"
v-html="icons.checkmarkIcon"
></div>
</div>
<h2 class="green-10 mx-auto">{{ $t('youAreSubscribed') }}</h2>
<div
v-if="hasGroupPlan"
class="mx-5 text-center"
>
{{ $t('youHaveGroupPlan') }}
</div>
<div
v-else
class="w-55 text-center"
v-html="$t('paymentSubBillingWithMethod', {
amount: purchasedPlanIdInfo.price,
months: purchasedPlanIdInfo.months,
paymentMethod: purchasedPlanIdInfo.plan
})"
>
</div>
<div
v-if="canEditCardDetails"
class="mt-4 text-center"
>
<div class="font-weight-bold gray-10 mb-2">{{ $t('needToUpdateCard') }}</div>
<button
class="btn btn-primary btn-update-card
d-flex justify-content-center align-items-center"
@click="showStripeEdit()"
>
<div
v-once
class="svg-icon svg-credit-card mr-2"
v-html="icons.creditCardIcon"
></div>
<div>{{ $t('subUpdateCard') }}</div>
</button>
</div>
<div
v-else
class="svg-icon"
:class="paymentMethodLogo.class"
v-html="paymentMethodLogo.icon"
>
</div>
<div
v-if="purchasedPlanExtraMonthsDetails.months > 0"
class="extra-months green-10 py-2 px-3 mt-4"
v-html="$t('purchasedPlanExtraMonths',
{months: purchasedPlanExtraMonthsDetails.months})"
>
</div>
</div>
<div
v-if="hasCanceledSubscription"
class="d-flex flex-column align-items-center mt-4"
>
<div class="round-container bg-gray-300 d-flex align-items-center justify-content-center">
<div
v-once
class="svg-icon svg-close"
v-html="icons.closeIcon"
></div>
</div>
<h2 class="gray-50">{{ $t('subscriptionCanceled') }}</h2>
<div
class="w-75 text-center mb-4"
v-html="$t('subscriptionInactiveDate', {date: subscriptionEndDate})"
>
</div>
<h2>{{ $t('readyToResubscribe') }}</h2>
<subscription-options class="w-100 mb-2"/>
</div>
<div
v-if="hasSubscription"
class="bg-gray-700 p-2 text-center"
>
<div class="header-mini mb-3">{{ $t('subscriptionStats') }}</div>
<div class="d-flex justify-content-around">
<div class="ml-4 mr-3">
<div class="d-flex justify-content-center align-items-center">
<div
v-once
class="svg-icon svg-calendar mr-2"
v-html="icons.calendarIcon"
>
</div>
<div class="number-heavy">
{{ user.purchased.plan.consecutive.count +
user.purchased.plan.consecutive.offset }}
</div>
</div>
<div class="stats-label">{{ $t('subMonths') }}</div>
</div>
<div class="stats-spacer"></div>
<div>
<div class="d-flex justify-content-center align-items-center">
<div
v-once
class="svg-icon svg-gem mr-2"
v-html="icons.gemIcon"
>
</div>
<div class="number-heavy">
{{ user.purchased.plan.consecutive.gemCapExtra }}
</div>
</div>
<div class="stats-label">{{ $t('gemCapExtra') }}</div>
</div>
<div class="stats-spacer"></div>
<div>
<div class="d-flex justify-content-center align-items-center">
<div
v-once
class="svg-icon svg-hourglass mt-1 mr-2"
v-html="icons.hourglassIcon"
>
</div>
<div class="number-heavy">
{{ user.purchased.plan.consecutive.trinkets }}
</div>
</div>
<div class="stats-label">{{ $t('mysticHourglassesTooltip') }}</div>
</div>
</div>
</div>
<div class="d-flex flex-column justify-content-center align-items-center mt-4 mb-3">
<div
v-once
class="svg-icon svg-heart mb-1"
v-html="icons.heartIcon"
>
</div>
<div class="stats-label">{{ $t('giftSubscriptionText4') }}</div>
</div>
</div>
</div>
<div
v-if="hasSubscription && !hasCanceledSubscription"
class="d-flex flex-column align-items-center mt-3"
>
<div class="cancel-card p-4 text-center">
<h2 class="maroon-50">{{ $t('cancelYourSubscription') }}</h2>
<div v-if="hasGroupPlan">{{ $t('cancelSubInfoGroupPlan') }}</div>
<div
v-if="!hasGroupPlan && !canCancelSubscription"
v-html="$t(`cancelSubInfo${user.purchased.plan.paymentMethod}`)"
>
</div>
<div
v-if="canCancelSubscription"
v-html="$t('cancelSubAlternatives')"
>
</div>
<div
class="btn btn-danger mt-4"
:class="{disabled: !canCancelSubscription}"
:disabled="!canCancelSubscription"
@click="cancelSubscriptionConfirm({canCancel: canCancelSubscription})"
>
{{ $t('cancelSub') }}
</div>
</div>
</div>
<div class="d-flex flex-column align-items-center mt-4">
<div
v-once
class="svg-icon svg-gift-box m-auto"
v-html="icons.giftBox"
>
</div>
<div class="muted mx-auto mt-3 mb-1">
{{ $t('giftSubscription') }}
</div>
<a
class="mx-auto"
@click="showSelectUser()"
>
{{ $t('giftASubscription') }}
</a>
</div>
</div>
</template>
<style scoped lang="scss">
@import '~@/assets/scss/colors.scss';
.badge.badge-success {
a {
color: $purple-300;
}
h1, h2 {
color: $purple-200;
}
p {
max-width: 21rem;
}
strong {
font-size: 16px;
}
.bg-green-10 {
background-color: $green-10;
}
.bg-gray-300 {
background-color: $gray-300;
}
.bg-gray-700 {
background-color: $gray-700;
}
.block-header {
color: $purple-200;
letter-spacing: 0.25rem;
font-size: 20px;
}
.btn-update-card {
width: 12.5rem;
height: 2.5rem;
border-radius: 4px;
font-size: 14px;
}
.cancel-card {
width: 28rem;
border: 2px solid $gray-500;
border-radius: 4px;
}
.disabled {
opacity: 0.64;
.btn, .btn:hover, .btn:active {
box-shadow: none;
cursor: default !important;
}
}
.extra-months {
border-radius: 2px;
border: 1px solid $green-50;
}
.flex-spacer {
width: 4rem;
}
.gray-10 {
color: $gray-10;
}
.gray-50 {
color: $gray-50;
}
.green-10 {
color: $green-10;
}
.header-mini {
font-size: 12px;
font-weight: bold;
}
.image-foods {
background: url(~@/assets/images/subscriber-food.png);
background-size: contain;
width: 46px;
height: 49px;
}
.maroon-50 {
color: $maroon-50;
}
.muted {
font-size: 14px;
color: $gray-200;
}
.number-heavy {
font-size: 24px;
}
.Pet-Jackalope-RoyalPurple {
margin-top: -1.75rem;
transform: scale(0.75);
}
.round-container {
width: 64px;
height: 64px;
border-radius: 50%;
margin: 0 auto;
margin-bottom: 16px;
}
.stats-label {
font-size: 12px;
color: $gray-200;
}
.stats-spacer {
width: 1px;
height: 3rem;
background-color: $gray-500;
}
.subscribe-card {
width: 28rem;
border-radius: 4px;
box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
background-color: $white;
}
.subscribe-option {
border-bottom: 1px solid $gray-600;
}
.svg-amazon-pay {
width: 208px;
}
.svg-apple-pay {
width: 97.1px;
height: 40px;
}
.svg-calendar, .svg-heart {
width: 24px;
height: 24px;
}
.svg-check {
width: 35.1px;
height: 28px;
color: $white;
}
.subscribe-pay {
margin-top: 1em;
.svg-close {
width: 26px;
height: 26px;
& ::v-deep svg path {
stroke: $white;
stroke-width: 3;
}
}
.svg-credit-card {
width: 21.3px;
height: 16px;
}
.svg-gem {
width: 32px;
height: 28px;
}
.svg-gems {
width: 42px;
height: 52px;
}
.svg-google-pay {
width: 99.7px;
height: 40px;
}
.svg-hourglass {
width: 28px;
height: 28px;
}
.svg-gift-box {
width: 32px;
height: 32px;
}
.svg-hourglasses {
width: 43px;
height: 53px;
}
.svg-logo {
width: 256px;
height: 56px;
}
.svg-paypal {
width: 148px;
height: 40px;
}
.w-55 {
width: 55%;
}
</style>
<script>
import axios from 'axios';
import filter from 'lodash/filter';
import sortBy from 'lodash/sortBy';
import min from 'lodash/min';
import moment from 'moment';
import { mapState } from '@/libs/store';
import subscriptionBlocks from '@/../../common/script/content/subscriptionBlocks';
@@ -265,12 +512,27 @@ import planGemLimits from '@/../../common/script/libs/planGemLimits';
import paymentsMixin from '../../mixins/payments';
import notificationsMixin from '../../mixins/notifications';
import amazonButton from '@/components/payments/amazonButton';
import subscriptionOptions from './subscriptionOptions.vue';
import amazonPayLogo from '@/assets/svg/amazonpay.svg';
import applePayLogo from '@/assets/svg/apple-pay-logo.svg';
import calendarIcon from '@/assets/svg/calendar-purple.svg';
import checkmarkIcon from '@/assets/svg/check.svg';
import closeIcon from '@/assets/svg/close.svg';
import creditCardIcon from '@/assets/svg/credit-card-icon.svg';
import gemIcon from '@/assets/svg/gem.svg';
import giftBox from '@/assets/svg/gift-purple.svg';
import googlePayLogo from '@/assets/svg/google-pay-logo.svg';
import heartIcon from '@/assets/svg/health.svg';
import hourglassIcon from '@/assets/svg/hourglass.svg';
import logo from '@/assets/svg/habitica-logo-purple.svg';
import paypalLogo from '@/assets/svg/paypal-logo.svg';
import subscriberGems from '@/assets/svg/subscriber-gems.svg';
import subscriberHourglasses from '@/assets/svg/subscriber-hourglasses.svg';
export default {
components: {
amazonButton,
subscriptionOptions,
},
mixins: [paymentsMixin, notificationsMixin],
data () {
@@ -281,7 +543,7 @@ export default {
gemLimit: planGemLimits.convRate,
},
subscription: {
key: 'basic_earned',
key: null,
},
// @TODO: Remove the need for this or move it to mixin
amazonPayments: {},
@@ -294,17 +556,26 @@ export default {
GIFT: 'Gift',
},
icons: Object.freeze({
amazonPayLogo,
applePayLogo,
calendarIcon,
checkmarkIcon,
closeIcon,
creditCardIcon,
gemIcon,
giftBox,
googlePayLogo,
heartIcon,
hourglassIcon,
logo,
paypalLogo,
subscriberGems,
subscriberHourglasses,
}),
};
},
computed: {
...mapState({ user: 'user.data', credentials: 'credentials' }),
subscriptionBlocksOrdered () {
const subscriptions = filter(subscriptionBlocks, o => o.discount !== true);
return sortBy(subscriptions, [o => o.months]);
},
purchasedPlanIdInfo () {
if (!this.subscriptionBlocks[this.user.purchased.plan.planId]) {
// @TODO: find which subs are in the common
@@ -391,6 +662,41 @@ export default {
&& !this.hasGroupPlan
);
},
currentMysterySet () {
return `shop_set_mystery_${moment().format('YYYYMM')}`;
},
paymentMethodLogo () {
switch (this.user.purchased.plan.paymentMethod) {
case this.paymentMethods.AMAZON_PAYMENTS:
return {
icon: this.icons.amazonPayLogo,
class: 'svg-amazon-pay mt-3',
};
case this.paymentMethods.APPLE:
return {
icon: this.icons.applePayLogo,
class: 'svg-apple-pay mt-4',
};
case this.paymentMethods.GOOGLE:
return {
icon: this.icons.googlePayLogo,
class: 'svg-google-pay mt-4',
};
case this.paymentMethods.PAYPAL:
return {
icon: this.icons.paypalLogo,
class: 'svg-paypal mt-4',
};
default:
return {
icon: null,
class: null,
};
}
},
subscriptionEndDate () {
return moment(this.user.purchased.plan.dateTerminated).format('MM/DD/YYYY');
},
},
methods: {
async applyCoupon (coupon) {
@@ -406,6 +712,9 @@ export default {
if (payMethod === 'Group Plan') payMethod = 'GroupPlan';
return this.$t(`cancelSubInfo${payMethod}`);
},
showSelectUser () {
this.$root.$emit('bv::show::modal', 'select-user-modal');
},
},
};
</script>

View File

@@ -0,0 +1,178 @@
<template>
<div id="subscription-form">
<b-form-group class="mb-4 w-100 h-100">
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<b-form-radio
v-for="block in subscriptionBlocksOrdered"
v-if="block.target !== 'group' && block.canSubscribe === true"
:value="block.key"
:key="block.key"
v-model="subscription.key"
class="subscribe-option pt-2 pl-5 pb-3 mb-0"
:class="{selected: subscription.key === block.key}"
@click.native="subscription.key = block.key"
>
<!-- eslint-enable vue/no-use-v-if-with-v-for -->
<div
v-html="$t('subscriptionRateText', {price: block.price, months: block.months})"
class="subscription-text ml-2 mb-1"
>
</div>
<div
v-html="subscriptionBubbles(block.key)"
class="ml-2"
>
</div>
</b-form-radio>
</b-form-group>
<div class="payments-column mx-auto mt-auto">
<button
class="purchase btn btn-primary payment-button payment-item"
:class="{disabled: !subscription.key}"
:disabled="!subscription.key"
@click="showStripe({subscription:subscription.key, coupon:subscription.coupon})"
>
<div
v-once
class="svg-icon credit-card-icon"
v-html="icons.creditCardIcon"
></div>
{{ $t('card') }}
</button>
<button
class="btn payment-item paypal-checkout payment-button"
:class="{disabled: !subscription.key}"
:disabled="!subscription.key"
@click="openPaypal(paypalPurchaseLink, 'subscription')"
>
&nbsp;
<img
src="~@/assets/images/paypal-checkout.png"
:alt="$t('paypal')"
>&nbsp;
</button>
<amazon-button
class="payment-item"
:class="{disabled: !subscription.key}"
:disabled="!subscription.key"
:amazon-data="{
type: 'subscription',
subscription: subscription.key,
coupon: subscription.coupon
}"
/>
</div>
</div>
</template>
<style lang="scss">
@import '~@/assets/scss/colors.scss';
#subscription-form {
.disabled .amazonpay-button-inner-image {
cursor: default !important;
}
.custom-control .custom-control-label::before,
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
margin-top: 0.75rem;
}
.selected {
background-color: rgba(213, 200, 255, 0.32);
.subscription-bubble {
background-color: $purple-300;
color: $white;
}
.subscription-text {
color: $purple-200;
}
}
.subscription-bubble, .discount-bubble {
border-radius: 100px;
font-size: 12px;
}
.subscription-bubble {
background-color: $gray-600;
color: $gray-200;
}
.discount-bubble {
background-color: $green-10;
color: $white;
}
}
</style>
<style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
.disabled {
opacity: 0.64;
.btn, .btn:hover, .btn:active {
box-shadow: none;
cursor: default !important;
}
}
.subscribe-option {
border-bottom: 1px solid $gray-600;
}
</style>
<script>
import filter from 'lodash/filter';
import sortBy from 'lodash/sortBy';
import amazonButton from '@/components/payments/amazonButton';
import creditCardIcon from '@/assets/svg/credit-card-icon.svg';
import paymentsMixin from '../../mixins/payments';
import subscriptionBlocks from '@/../../common/script/content/subscriptionBlocks';
export default {
components: {
amazonButton,
},
mixins: [
paymentsMixin,
],
data () {
return {
subscription: {
key: null,
},
icons: Object.freeze({
creditCardIcon,
}),
};
},
computed: {
subscriptionBlocks () {
return subscriptionBlocks;
},
subscriptionBlocksOrdered () {
const subscriptions = filter(subscriptionBlocks, o => o.discount !== true);
return sortBy(subscriptions, [o => o.months]);
},
},
methods: {
subscriptionBubbles (subscription) {
switch (subscription) {
case 'basic_3mo':
return '<span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 30</span><span class="subscription-bubble px-2 py-1">+1 Mystic Hourglass</span>';
case 'basic_6mo':
return '<span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 35</span><span class="subscription-bubble px-2 py-1">+2 Mystic Hourglass</span>';
case 'basic_12mo':
return '<span class="discount-bubble px-2 py-1 mr-1">Save 20%</span><span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 45</span><span class="subscription-bubble px-2 py-1">+4 Mystic Hourglass</span>';
default:
return '<span class="subscription-bubble px-2 py-1">Gem cap at 25</span>';
}
},
},
};
</script>

View File

@@ -209,7 +209,6 @@
<!-- eslint-disable vue/no-use-v-if-with-v-for, max-len -->
<div
v-for="(items, key) in getGrouped(questItems(category, selectedSortItemsBy,searchTextThrottled, hideLocked, hidePinned))"
v-if="key !== 'questGroupEarnable'"
:key="key"
class="group"
>

View File

@@ -289,7 +289,7 @@
<div class="container featured">
<div class="row text-center">
<h3 class="col-12">
{{ $t('joinMany') }}
{{ $t('joinMany', {userCountInMillions}) }}
</h3>
</div>
<div class="row">
@@ -824,7 +824,7 @@ export default {
makeuseof,
thenewyorktimes,
}),
userCountInMillions: 3,
userCountInMillions: 4,
username: '',
password: '',
passwordConfirm: '',

View File

@@ -13,8 +13,6 @@
</div>
<transition
name="slide-up"
@afterLeave="adjustPagePadding"
@afterEnter="adjustPagePadding"
>
<div
v-show="isOpen"
@@ -194,19 +192,7 @@ export default {
return this.open;
},
},
mounted () {
// Make sure the page has enough space so the drawer does not overlap content
this.adjustPagePadding();
},
methods: {
adjustPagePadding () {
const minPaddingBottom = 20;
const drawerHeight = this.$el.offsetHeight;
const standardPage = document.getElementsByClassName('standard-page')[0];
if (standardPage) {
standardPage.style.paddingBottom = `${drawerHeight + minPaddingBottom}px`;
}
},
toggle () {
this.open = !this.isOpen;
this.$emit('toggled', this.open);

View File

@@ -284,6 +284,7 @@ export default {
this.amazonPayments.group = null;
},
cancelSubscriptionConfirm (config) {
if (config.canCancel === false) return;
this.$root.$emit('habitica:cancel-subscription-confirm', config);
},
async cancelSubscription (config) {

View File

@@ -31,6 +31,12 @@ export async function fetchMember (store, payload) {
return response;
}
export async function fetchMemberByUsername (store, payload) {
const url = `${apiv4Prefix}/members/username/${payload.username}`;
const response = await axios.get(url);
return response;
}
export async function getGroupInvites (store, payload) {
let url = `${apiv4Prefix}/groups/${payload.groupId}/invites`;
if (payload.includeAllPublicFields) {

View File

@@ -78,9 +78,8 @@ async function buyArmoire (store, params) {
// @TODO: We might need to abstract notifications to library rather than mixin
const notificationOptions = isExperience
? {
text: `+ ${item.value}`,
type: 'xp',
flavorMessage: message,
text: message,
type: 'success',
}
: {
text: message,
@@ -93,6 +92,10 @@ async function buyArmoire (store, params) {
timeout: true,
...notificationOptions,
});
if (isExperience) {
await store.dispatch('user:fetch', { forceLoad: true });
}
}
}

View File

@@ -44,7 +44,8 @@ export function canDelete (store) {
&& group.leader._id === userId);
const isUserGroupManager = group && (group.managers
&& Boolean(group.managers[userId]));
const isUserChallenge = userId === (challenge && challenge.leader.id);
const isUserChallenge = userId === (challenge
&& challenge.leader !== null && challenge.leader.id);
let isUserCanDeleteTask = onUserDashboard;
@@ -81,7 +82,8 @@ export function canEdit (store) {
&& group.leader._id === userId);
const isUserGroupManager = group && (group.managers
&& Boolean(group.managers[userId]));
const isUserChallenge = userId === (challenge && challenge.leader.id);
const isUserChallenge = userId === (challenge
&& challenge.leader !== null && challenge.leader.id);
switch (taskCategory) {

View File

@@ -114,9 +114,6 @@ export default function () {
profileOptions: {
startingPage: '',
},
gemModalOptions: {
startingPage: '',
},
rageModalOptions: {
npc: '',
},

View File

@@ -1,7 +1,7 @@
{
"frequentlyAskedQuestions": "বারবার জিজ্ঞাসিত প্রশ্ন",
"faqQuestion0": "I'm confused. Where do I get an overview?",
"iosFaqAnswer0": "First, you'll set up tasks that you want to do in your everyday life. Then, as you complete the tasks in real life and check them off, you'll earn experience and gold. Gold is used to buy equipment and some items, as well as custom rewards. Experience causes your character to level up and unlock content such as Pets, Skills, and Quests! You can customize your character under Menu > Customize Avatar.\n\n Some basic ways to interact: click the (+) in the upper-right-hand corner to add a new task. Tap on an existing task to edit it, and swipe left on a task to delete it. You can sort tasks using Tags in the upper-left-hand corner, and expand and contract checklists by clicking on the checklist bubble.",
"faqQuestion0": "আমি কনফিউসড। আমি কিভাবে ধারনা পেতে পারি?",
"iosFaqAnswer0": "প্রথমত, আপনি প্রতিদিন কি করবেন তা নির্ধারন করতে হবে। এরপর নির্ধারিত কোন কাজ সম্পন্ন করে এবং টিক দিয়ে আপনি এক্সপিরিয়েন্স ও গোল্ড পয়েন্ট পাবেন। গোল্ড পয়েন্ট বিভিন্ন উপকরন কিনতে ব্যবহৃত হয়। এক্সপিরিয়েন্স পয়েন্ট আপনার লেভেল আপ করতে সাহায্য করে যার মাদ্ধ্যমে আপনার দক্ষতা, পোষা প্রানি, অভিযানের মত বিভিন্ন কন্টেন্ট আনলক হয়! আপনি আপনার অবতার Menu > Customize Avatar থেকে পরিবর্তন করতে পারবেন।\n\n যেভাবে ইন্টার‍্যাক্ট করবেনঃ উপরের ডান পাশের কোণায় যে (+) আছে সেটায় কিল্ক করে নতুন কাজ সংযোগ করুন। বর্তমান কাজে এডিট করতে ট্যাপ করুন এবং ডানদিকে সোয়াইপ করে ডিলিট করুন। চেকলিস্ট বক্সে ক্লিক করে কাজ সম্পন্ন করুন।",
"androidFaqAnswer0": "First, you'll set up tasks that you want to do in your everyday life. Then, as you complete the tasks in real life and check them off, you'll earn experience and gold. Gold is used to buy equipment and some items, as well as custom rewards. Experience causes your character to level up and unlock content such as Pets, Skills, and Quests! You can customize your character under Menu > [Inventory >] Avatar.\n\n Some basic ways to interact: click the (+) in the lower-right-hand corner to add a new task. Tap on an existing task to edit it, and swipe left on a task to delete it. You can sort tasks using Tags in the upper-right-hand corner, and expand and contract checklists by clicking on the checklist count box.",
"webFaqAnswer0": "First, you'll set up tasks that you want to do in your everyday life. Then, as you complete the tasks in real life and check them off, you'll earn Experience and Gold. Gold is used to buy equipment and some items, as well as custom rewards. Experience causes your character to level up and unlock content such as pets, skills, and quests! For more detail, check out a step-by-step overview of the game at [Help -> Overview for New Users](https://habitica.com/static/overview).",
"faqQuestion1": "How do I set up my tasks?",

View File

@@ -1,6 +1,6 @@
{
"clearCompleted": "বাদ দেওয়া সম্পূর্ণ",
"clearCompletedDescription": "Completed To-Dos are deleted after 30 days for non-subscribers and 90 days for subscribers.",
"clearCompleted": "সমাপ্ত কাজগুলো মুছুন",
"clearCompletedDescription": "সম্পন্ন হওয়া কাজ গুলো নন-সাবস্ক্রাইবারদের ৩০ দিন এবং সাবস্ক্রাইবারদের ৯০ দিন পর মুছে ফেলা হয়।",
"clearCompletedConfirm": "Are you sure you want to delete your completed To-Dos?",
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",

View File

@@ -5,40 +5,40 @@
"levelup": "Al complir els teus objectius a la vida real, has pujat de nivell i has recuperat la salut!",
"reachedLevel": "Has assolit el nivell <%= level %>",
"achievementLostMasterclasser": "Completador d'aventures: Sèrie Arximestra",
"achievementLostMasterclasserText": "Per haver completat les setze missions de la Sèrie Arximestra i haver resolt el misteri de l'Arximestra Perduda!",
"achievementLostMasterclasserText": "Per haver completat les setze missions de la sèrie Arximestra i haver resolt el misteri de l'arximestra perduda!",
"achievementMindOverMatterText": "Per haver completat les missions de la Roca, el Llim i el Fil.",
"achievementMindOverMatter": "Ment Sobre Matèria",
"achievementUndeadUndertakerModalText": "Has domat totes les Muntures Zombi!",
"achievementUndeadUndertakerText": "Per haver domat totes les Muntures Zombi.",
"achievementUndeadUndertaker": "Enterrador de Morts Vivents",
"achievementMonsterMagusModalText": "Has aconseguit totes les Mascotes Zombi!",
"achievementMonsterMagusText": "Per haver aconseguit totes les Mascotes Zombi.",
"achievementMonsterMagus": "Mag dels Monstres",
"achievementUndeadUndertakerModalText": "Has domat totes les muntures zombi!",
"achievementUndeadUndertakerText": "Per haver domat totes les muntures zombi.",
"achievementUndeadUndertaker": "Enterrador de morts vivents",
"achievementMonsterMagusModalText": "Has aconseguit totes les mascotes zombi!",
"achievementMonsterMagusText": "Per haver aconseguit totes les mascotes zombi.",
"achievementMonsterMagus": "Mag dels monstres",
"achievementPartyOn": "El teu equip ja té 4 membres!",
"achievementKickstarter2019Text": "Has donat suport al projecte Pin Kickstarter 2019",
"achievementKickstarter2019": "Pin Patrocinador de Kickstarter",
"achievementAridAuthorityModalText": "Has domat totes les Mascotes Desèrtiques!",
"achievementAridAuthorityText": "Per haver domat totes les Mascotes Desèrtiques.",
"achievementAridAuthority": "Autoritat Àrida",
"achievementKickstarter2019": "Pin patrocinador de Kickstarter",
"achievementAridAuthorityModalText": "Has domat totes les mascotes desèrtiques!",
"achievementAridAuthorityText": "Per haver domat totes les mascotes desèrtiques.",
"achievementAridAuthority": "Autoritat àrida",
"achievementPartyUp": "Has format equip amb algú!",
"achievementDustDevilModalText": "Has aconseguit totes les Mascotes Desèrtiques!",
"achievementDustDevilText": "Per haver aconseguit totes les Mascotes Desèrtiques.",
"achievementDustDevil": "Remolí de Pols",
"achievementAllYourBaseModalText": "Has domat totes les Montures Bàsiques!",
"achievementAllYourBaseText": "Per haver domat totes les Muntures Bàsiques.",
"achievementAllYourBase": "Tots els teus Bàsics",
"achievementBackToBasicsModalText": "Has aconseguit totes les Mascotes Bàsiques!",
"achievementBackToBasics": "Tornar als Inicis",
"achievementBackToBasicsText": "Per haver aconseguit totes les Mascotes Bàsiques.",
"achievementDustDevilModalText": "Has aconseguit totes les mascotes desèrtiques!",
"achievementDustDevilText": "Per haver aconseguit totes les mascotes desèrtiques.",
"achievementDustDevil": "Remolí de pols",
"achievementAllYourBaseModalText": "Has domat totes les muntures bàsiques!",
"achievementAllYourBaseText": "Per haver domat totes les muntures bàsiques.",
"achievementAllYourBase": "Tots els teus bàsics",
"achievementBackToBasicsModalText": "Has aconseguit totes les mascotes bàsiques!",
"achievementBackToBasics": "Tornar als inicis",
"achievementBackToBasicsText": "Per haver aconseguit totes les mascotes bàsiques.",
"achievementJustAddWaterModalText": "Has completat les missions del Pop, el Cavall de Mar, la Sèpia, la Balena, la Tortuga, el Nudibranqui, la Serp Marina i el Dofí!",
"achievementJustAddWaterText": "Per haver completat les missions del Pop, el Cavall de Mar, la Sèpia, la Balena, la Tortuga, el Nudibranqui, la Serp Marina i el Dofí.",
"achievementJustAddWater": "Només Posa-hi Aigua",
"achievementJustAddWater": "Posa-hi aigua",
"achievementMindOverMatterModalText": "Has completat les missions de la Roca, el Llim i el Fil!",
"achievementLostMasterclasserModalText": "Has completat les setze missions de la Sèrie Arximestra i has resolt el misteri de l'Arximestra Perduda!",
"achievementPearlyProModalText": "Has domat totes les Muntures Blanques!",
"achievementPearlyProText": "Per haver domat totes les Muntures Blanques.",
"achievementPearlyPro": "Pro de les Perles",
"achievementPrimedForPaintingModalText": "Has aconseguit totes les Mascotes Blanques!",
"achievementPrimedForPaintingText": "Per haver aconseguit totes les Mascotes Blanques.",
"achievementPrimedForPainting": "Preparat per Pintar"
"achievementLostMasterclasserModalText": "Has completat les setze missions de la sèrie Arximestra i has resolt el misteri de l'arximestra perduda!",
"achievementPearlyProModalText": "Has domat totes les muntures blanques!",
"achievementPearlyProText": "Per haver domat totes les muntures blanques.",
"achievementPearlyPro": "Pro de les perles",
"achievementPrimedForPaintingModalText": "Has aconseguit totes les mascotes blanques!",
"achievementPrimedForPaintingText": "Per haver aconseguit totes les mascotes blanques.",
"achievementPrimedForPainting": "Preparat per pintar"
}

View File

@@ -149,7 +149,7 @@
"backgroundBambooForestNotes": "Passeja al bosc de bambú.",
"backgroundCozyLibraryText": "Biblioteca acollidora",
"backgroundCozyLibraryNotes": "Llegeix a l'acollidora biblioteca.",
"backgroundGrandStaircaseText": "Escalinata Gran",
"backgroundGrandStaircaseText": "Gran escalinata",
"backgroundGrandStaircaseNotes": "Baixa per la Gran Escala.",
"backgrounds032016": "22è conjunt: publicat el Març de 2016",
"backgroundDeepMineText": "Mina profunda",
@@ -190,16 +190,16 @@
"backgroundIdyllicCabinText": "Cabana Idílica",
"backgroundIdyllicCabinNotes": "Retirat cap a una Cabana Idílica.",
"backgroundMountainPyramidText": "Muntanya Piràmica",
"backgroundMountainPyramidNotes": "Puja tots els escalons de la Muntanya Piràmide.",
"backgroundMountainPyramidNotes": "Puja tots els escalons de la piràmide.",
"backgroundStormyShipText": "Vaixel Tormentós",
"backgroundStormyShipNotes": "No deixis que el vent i l'aigua et mogui de sobre el Vaixell de Tempesta.",
"backgroundStormyShipNotes": "No deixis que el vent i l'aigua et mogui de sobre el vaixell de tempesta.",
"backgrounds092016": "Conjunt 28: Estrenat el Setembre del 2016",
"backgroundCornfieldsText": "Camps de Blat",
"backgroundCornfieldsNotes": "Gaudeix d'un dia magnífic als Camps de Blat.",
"backgroundFarmhouseText": "Granja",
"backgroundFarmhouseNotes": "Saluda els animals en el teu camí cap a la Granja.",
"backgroundOrchardText": "Arbres Fruiters",
"backgroundOrchardNotes": "Recull la fruita dels Arbres Fruiters.",
"backgroundOrchardText": "Arbres fruiters",
"backgroundOrchardNotes": "Recull la fruita dels arbres fruiters.",
"backgrounds102016": "Conjunt 29: Estrenat l'Octubre 2016",
"backgroundSpiderWebText": "Tela d'aranya",
"backgroundSpiderWebNotes": "Queda atrapat en una Tela d'Aranya.",
@@ -210,8 +210,8 @@
"backgrounds112016": "Conjunt 30: Estrenat el Novembre 2016",
"backgroundMidnightCloudsText": "Núvols de Midjanit",
"backgroundMidnightCloudsNotes": "Vola a través dels Núvols de Midjanit.",
"backgroundStormyRooftopsText": "Teulades Tempestoses",
"backgroundStormyRooftopsNotes": "Llisca per les Teulades Tempestoses.",
"backgroundStormyRooftopsText": "Teulades tempestuoses",
"backgroundStormyRooftopsNotes": "Llisca per les teulades tempestuoses.",
"backgroundWindyAutumnText": "Tardor Ventosa",
"backgroundWindyAutumnNotes": "Persegueix les fulles en la Tardor Ventosa.",
"incentiveBackgrounds": "Conjunt d'Escenaris Lliços",
@@ -228,8 +228,8 @@
"backgroundYellowText": "Groc",
"backgroundYellowNotes": "Un agradable fons groc.",
"backgrounds122016": "Conjunt 31: Estrenat el Decembre del 2016",
"backgroundShimmeringIcePrismText": "Prismes de Gel Brillants",
"backgroundShimmeringIcePrismNotes": "Balla a través dels Prismes de Gel Brillants.",
"backgroundShimmeringIcePrismText": "Prismes de gel brillants",
"backgroundShimmeringIcePrismNotes": "Balla a través dels prismes de gel brillants.",
"backgroundWinterFireworksText": "Focs Artificials d'Hivern",
"backgroundWinterFireworksNotes": "Prepareu els Focs Artificials d'Hivern.",
"backgroundWinterStorefrontText": "Botiga d'Hivern",
@@ -238,252 +238,252 @@
"backgroundBlizzardText": "Torb",
"backgroundBlizzardNotes": "Enfronta't a una Turmenta de Neu ferotgia.",
"backgroundSparklingSnowflakeText": "Floc de Neu Brillant",
"backgroundSparklingSnowflakeNotes": "Llisca en un Floc de Neu Brillant.",
"backgroundSparklingSnowflakeNotes": "Llisca en un floc de neu brillant.",
"backgroundStoikalmVolcanoesText": "Volcans d'Stoïkalm",
"backgroundStoikalmVolcanoesNotes": "Explora els Volcans d'Stoïkalm.",
"backgrounds022017": "33ª sèrie: febrer del 2017",
"backgrounds022017": "33a sèrie: febrer del 2017",
"backgroundBellTowerText": "Campanar",
"backgroundBellTowerNotes": "Puja al Campanar.",
"backgroundTreasureRoomText": "Sala del Tresor",
"backgroundTreasureRoomNotes": "Gaudeix de la riquesa de la Sala del Tresor.",
"backgroundWeddingArchText": "Arc de Casament",
"backgroundWeddingArchNotes": "Posa sota un Arc de Casament.",
"backgrounds032017": "34ª sèrie: març del 2017",
"backgroundMagicBeanstalkText": "Mongetera Màgica",
"backgroundMagicBeanstalkNotes": "Enfila't a una Mongetera Màgica.",
"backgroundMeanderingCaveText": "Cova Serpejant",
"backgroundMeanderingCaveNotes": "Explora la Cova Serpejant.",
"backgroundMistiflyingCircusText": "Circ Volador Desconcertant",
"backgroundMistiflyingCircusNotes": "Engresca't al Circ Volador Desconcertant.",
"backgrounds042017": "35ª sèrie: abril del 2017",
"backgroundBugCoveredLogText": "Tronc Ple d'Insectes",
"backgroundBugCoveredLogNotes": "Investiga un Tronc Ple d'Insectes.",
"backgroundGiantBirdhouseText": "Casa d'Ocells Gegant",
"backgroundGiantBirdhouseNotes": "Penja't d'una Casa d'Ocells Gegant.",
"backgroundMistShroudedMountainText": "Muntanya Envoltada de Boira",
"backgroundMistShroudedMountainNotes": "Escala una Muntanya Envoltada de Boira.",
"backgrounds052017": "36ª sèrie: maig del 2017",
"backgroundGuardianStatuesText": "Estàtues Guardianes",
"backgroundGuardianStatuesNotes": "Queda't vigilant davant les Estàtues Guardianes.",
"backgroundHabitCityStreetsText": "Carrers de la Ciutat dels Hàbits",
"backgroundHabitCityStreetsNotes": "Explora els Carrers de la Ciutat dels Hàbits.",
"backgroundOnATreeBranchText": "Sobre una Branca d'un Arbre",
"backgroundOnATreeBranchNotes": "Penja't d'una Branca d'un Arbre.",
"backgrounds062017": "37ª sèrie: juny del 2017",
"backgroundBuriedTreasureText": "Tresor Enterrat",
"backgroundBuriedTreasureNotes": "Desenterra el Tresor Enterrat.",
"backgroundOceanSunriseText": "Albada Oceànica",
"backgroundOceanSunriseNotes": "Admira una Albada Oceànica.",
"backgroundSandcastleText": "Castell de Sorra",
"backgroundSandcastleNotes": "Regna sobre un Castell de Sorra.",
"backgrounds072017": "38ª sèrie: juliol del 2017",
"backgroundGiantSeashellText": "Petxina Gegant",
"backgroundGiantSeashellNotes": "Descansa en una Petxina Gegant.",
"backgroundKelpForestText": "Bosc d'Algues Marines",
"backgroundKelpForestNotes": "Neda entre un Bosc d'Algues Marines.",
"backgroundMidnightLakeText": "Llac de Mitjanit",
"backgroundMidnightLakeNotes": "Descansa al costat d'un Llac de Mitjanit.",
"backgrounds082017": "39ª sèrie: agost del 2017",
"backgroundBackOfGiantBeastText": "Esquena d'una Bèstia Gegant",
"backgroundBackOfGiantBeastNotes": "Cavalca a l'Esquena d'una Bèstia Gegant.",
"backgroundDesertDunesText": "Dunes del Desert",
"backgroundDesertDunesNotes": "Explora amb valentia les Dunes del Desert.",
"backgroundSummerFireworksText": "Focs Artificials d'Estiu",
"backgroundSummerFireworksNotes": "Celebra el Nomenament d'Habitica amb Focs Artificials d'Estiu!",
"backgrounds092017": "40ª sèrie: setembre del 2017",
"backgroundBesideWellText": "Al Costat d'un Pou",
"backgroundBesideWellNotes": "Passeja al Costat d'un Pou.",
"backgroundGardenShedText": "Cobert del Jardí",
"backgroundGardenShedNotes": "Treballa al Cobert del Jardí.",
"backgroundPixelistsWorkshopText": "Taller de Pixel·lació",
"backgroundPixelistsWorkshopNotes": "Crea obres mestres al Taller de Pixel·lació.",
"backgrounds102017": "41ª sèrie: octubre del 2017",
"backgroundMagicalCandlesText": "Espelmes Màgiques",
"backgroundMagicalCandlesNotes": "Gaudeix de la brillantor de les Espelmes Màgiques.",
"backgroundSpookyHotelText": "Hotel Esgarrifós",
"backgroundSpookyHotelNotes": "Infiltra't al passadís d'un Hotel Esgarrifós.",
"backgroundTarPitsText": "Pous de Quitrà",
"backgroundTarPitsNotes": "Camina de puntetes als Pous de Quitrà.",
"backgrounds112017": "42ª sèrie: novembre del 2017",
"backgroundFiberArtsRoomText": "Saló d'Arts Fibroses",
"backgroundFiberArtsRoomNotes": "Mou fils en un Saló d'Arts Fibroses.",
"backgroundMidnightCastleText": "Castell de Mitjanit",
"backgroundMidnightCastleNotes": "Passeja pel Castelll de Mitjanit.",
"backgroundBellTowerNotes": "Puja al campanar.",
"backgroundTreasureRoomText": "Sala del tresor",
"backgroundTreasureRoomNotes": "Gaudeix de la riquesa de la sala del tresor.",
"backgroundWeddingArchText": "Arc de casament",
"backgroundWeddingArchNotes": "Posa sota un arc de casament.",
"backgrounds032017": "34a sèrie: març del 2017",
"backgroundMagicBeanstalkText": "Mongetera màgica",
"backgroundMagicBeanstalkNotes": "Enfila't a una mongetera màgica.",
"backgroundMeanderingCaveText": "Cova serpejant",
"backgroundMeanderingCaveNotes": "Explora la cova serpejant.",
"backgroundMistiflyingCircusText": "Circ volador desconcertant",
"backgroundMistiflyingCircusNotes": "Engresca't al circ volador desconcertant.",
"backgrounds042017": "35a sèrie: abril del 2017",
"backgroundBugCoveredLogText": "Tronc ple d'insectes",
"backgroundBugCoveredLogNotes": "Investiga un tronc ple d'insectes.",
"backgroundGiantBirdhouseText": "Casa d'ocells gegant",
"backgroundGiantBirdhouseNotes": "Penja't d'una casa d'ocells gegant.",
"backgroundMistShroudedMountainText": "Muntanya envoltada de boira",
"backgroundMistShroudedMountainNotes": "Escala una muntanya envoltada de boira.",
"backgrounds052017": "36a sèrie: maig del 2017",
"backgroundGuardianStatuesText": "Estàtues guardianes",
"backgroundGuardianStatuesNotes": "Queda't vigilant davant les estàtues guardianes.",
"backgroundHabitCityStreetsText": "Carrers de la ciutat dels hàbits",
"backgroundHabitCityStreetsNotes": "Explora els carrers de la ciutat dels hàbits.",
"backgroundOnATreeBranchText": "Sobre una branca d'un arbre",
"backgroundOnATreeBranchNotes": "Penja't d'una branca d'un arbre.",
"backgrounds062017": "37a sèrie: juny del 2017",
"backgroundBuriedTreasureText": "Tresor enterrat",
"backgroundBuriedTreasureNotes": "Desenterra el tresor enterrat.",
"backgroundOceanSunriseText": "Albada oceànica",
"backgroundOceanSunriseNotes": "Admira una albada oceànica.",
"backgroundSandcastleText": "Castell de sorra",
"backgroundSandcastleNotes": "Regna sobre un castell de sorra.",
"backgrounds072017": "38a sèrie: juliol del 2017",
"backgroundGiantSeashellText": "Petxina gegant",
"backgroundGiantSeashellNotes": "Descansa en una petxina gegant.",
"backgroundKelpForestText": "Bosc d'algues marines",
"backgroundKelpForestNotes": "Neda entre un bosc d'algues marines.",
"backgroundMidnightLakeText": "Llac de mitjanit",
"backgroundMidnightLakeNotes": "Descansa al costat d'un llac de mitjanit.",
"backgrounds082017": "39a sèrie: agost del 2017",
"backgroundBackOfGiantBeastText": "Esquena d'una bèstia gegant",
"backgroundBackOfGiantBeastNotes": "Cavalca a l'esquena d'una bèstia gegant.",
"backgroundDesertDunesText": "Dunes del desert",
"backgroundDesertDunesNotes": "Explora amb valentia les dunes del desert.",
"backgroundSummerFireworksText": "Focs artificials d'estiu",
"backgroundSummerFireworksNotes": "Celebra el nomenament d'Habitica amb focs artificials d'estiu!",
"backgrounds092017": "40a sèrie: setembre del 2017",
"backgroundBesideWellText": "Al costat d'un pou",
"backgroundBesideWellNotes": "Passeja al costat d'un pou.",
"backgroundGardenShedText": "Cobert del jardí",
"backgroundGardenShedNotes": "Treballa al cobert del jardí.",
"backgroundPixelistsWorkshopText": "Taller de pixel·lació",
"backgroundPixelistsWorkshopNotes": "Crea obres mestres al taller de pixel·lació.",
"backgrounds102017": "41a sèrie: octubre del 2017",
"backgroundMagicalCandlesText": "Espelmes màgiques",
"backgroundMagicalCandlesNotes": "Gaudeix de la brillantor de les espelmes màgiques.",
"backgroundSpookyHotelText": "Hotel esgarrifós",
"backgroundSpookyHotelNotes": "Infiltra't al passadís d'un hotel esgarrifós.",
"backgroundTarPitsText": "Pous de quitrà",
"backgroundTarPitsNotes": "Camina de puntetes als pous de quitrà.",
"backgrounds112017": "42a sèrie: novembre del 2017",
"backgroundFiberArtsRoomText": "Saló d'arts fibroses",
"backgroundFiberArtsRoomNotes": "Mou fils en un saló d'arts fibroses.",
"backgroundMidnightCastleText": "Castell de mitjanit",
"backgroundMidnightCastleNotes": "Passeja pel castell de mitjanit.",
"backgroundTornadoText": "Tornado",
"backgroundTornadoNotes": "Vola a través d'un Tornado.",
"backgrounds122017": "43ª sèrie: desembre del 2017",
"backgroundCrosscountrySkiTrailText": "Ruta d'Esquí Tot Terreny",
"backgroundCrosscountrySkiTrailNotes": "Llisca per la Ruta d'Esquí Tot Terrey.",
"backgroundStarryWinterNightText": "Nit d'Hivern Estrellada",
"backgroundStarryWinterNightNotes": "Admira una Nit d'Hivern Estrellada.",
"backgroundToymakersWorkshopText": "Taller de Fabricació de Joguines",
"backgroundToymakersWorkshopNotes": "Gaudeix de les meravelles del Taller de Fabricació de Joguines.",
"backgrounds012018": "44ª sèrie: gener del 2018",
"backgroundTornadoNotes": "Vola a través d'un tornado.",
"backgrounds122017": "43a sèrie: desembre del 2017",
"backgroundCrosscountrySkiTrailText": "Ruta d'esquí tot terreny",
"backgroundCrosscountrySkiTrailNotes": "Llisca per la ruta d'esquí tot terreny.",
"backgroundStarryWinterNightText": "Nit d'hivern estrellada",
"backgroundStarryWinterNightNotes": "Admira una nit d'hivern estrellada.",
"backgroundToymakersWorkshopText": "Taller de fabricació de joguines",
"backgroundToymakersWorkshopNotes": "Gaudeix de les meravelles del taller de fabricació de joguines.",
"backgrounds012018": "44a sèrie: gener del 2018",
"backgroundAuroraText": "Aurora",
"backgroundAuroraNotes": "Gaudeix de la brillantor hivernal d'una Aurora.",
"backgroundAuroraNotes": "Gaudeix de la brillantor hivernal d'una aurora.",
"backgroundDrivingASleighText": "Trineu",
"backgroundDrivingASleighNotes": "Condueix un Trineu sobre camps nevats.",
"backgroundFlyingOverIcySteppesText": "Estepes Gelades",
"backgroundFlyingOverIcySteppesNotes": "Sobrevola Estepes Gelades.",
"backgrounds022018": "45ª sèrie: febrer del 2018",
"backgroundChessboardLandText": "País del Tauler d'Escacs",
"backgroundChessboardLandNotes": "Juga una partida al País del Tauler d'Escacs.",
"backgroundMagicalMuseumText": "Museu Màgic",
"backgroundMagicalMuseumNotes": "Visita un Museu Màgic.",
"backgroundRoseGardenText": "Jardí de Roses",
"backgroundRoseGardenNotes": "Paseja per un Jardí de Roses aromàtic.",
"backgrounds032018": "46ª sèrie: març del 2018",
"backgroundGorgeousGreenhouseText": "Hivernacle Preciós",
"backgroundGorgeousGreenhouseNotes": "Camina entre la flora que es cuida en un Hivernacle Preciós.",
"backgroundElegantBalconyText": "Balcó Elegant",
"backgroundElegantBalconyNotes": "Mira el paisatge des d'un Balcó Elegant.",
"backgroundDrivingACoachText": "Conduint un Carro",
"backgroundDrivingACoachNotes": "Gaudeix Conduint un Carro pels camps de flors.",
"backgrounds042018": "47ª sèrie: abril del 2018",
"backgroundTulipGardenText": "Jardí de Tulipes",
"backgroundTulipGardenNotes": "Passa de puntetes per un Jardí de Tulipes.",
"backgroundFlyingOverWildflowerFieldText": "Cap de Flors Salvatges",
"backgroundFlyingOverWildflowerFieldNotes": "Alça't per sobre d'un Camp de Flors Salvatges.",
"backgroundFlyingOverAncientForestText": "Bosc Antic",
"backgroundFlyingOverAncientForestNotes": "Sobrevola les copes dels arbres d'un Bosc Antic.",
"backgrounds052018": "48ª sèrie: maig del 2018",
"backgroundTerracedRiceFieldText": "Camp d'Arròs Adossat",
"backgroundTerracedRiceFieldNotes": "Gaudeix d'un Camp d'Arròs Adossat en època de creixement.",
"backgroundFantasticalShoeStoreText": "Sabateria Fantàstica",
"backgroundFantasticalShoeStoreNotes": "Busca calçat nou a la Sabateria Fantàstica.",
"backgroundChampionsColosseumText": "Coliseu dels Campions",
"backgroundChampionsColosseumNotes": "Gaudeix de la glòria del Coliseu dels Campions.",
"backgrounds062018": "49ª sèrie: juny del 2018",
"backgroundDrivingASleighNotes": "Condueix un trineu sobre camps nevats.",
"backgroundFlyingOverIcySteppesText": "Estepes gelades",
"backgroundFlyingOverIcySteppesNotes": "Sobrevola estepes gelades.",
"backgrounds022018": "45a sèrie: febrer del 2018",
"backgroundChessboardLandText": "País del tauler d'escacs",
"backgroundChessboardLandNotes": "Juga una partida al país del tauler d'escacs.",
"backgroundMagicalMuseumText": "Museu màgic",
"backgroundMagicalMuseumNotes": "Visita un museu màgic.",
"backgroundRoseGardenText": "Jardí de roses",
"backgroundRoseGardenNotes": "Passeja per un jardí de roses aromàtic.",
"backgrounds032018": "46a sèrie: març del 2018",
"backgroundGorgeousGreenhouseText": "Hivernacle preciós",
"backgroundGorgeousGreenhouseNotes": "Camina entre la flora que es cuida en un hivernacle preciós.",
"backgroundElegantBalconyText": "Balcó elegant",
"backgroundElegantBalconyNotes": "Mira el paisatge des d'un balcó elegant.",
"backgroundDrivingACoachText": "Conduint un carro",
"backgroundDrivingACoachNotes": "Gaudeix conduint un carro pels camps de flors.",
"backgrounds042018": "47a sèrie: abril del 2018",
"backgroundTulipGardenText": "Jardí de tulipes",
"backgroundTulipGardenNotes": "Passa de puntetes per un jardí de tulipes.",
"backgroundFlyingOverWildflowerFieldText": "Cap de flors salvatges",
"backgroundFlyingOverWildflowerFieldNotes": "Alça't per sobre d'un camp de flors salvatges.",
"backgroundFlyingOverAncientForestText": "Bosc antic",
"backgroundFlyingOverAncientForestNotes": "Sobrevola les copes dels arbres d'un bosc antic.",
"backgrounds052018": "48a sèrie: maig del 2018",
"backgroundTerracedRiceFieldText": "Camp d'arròs adossat",
"backgroundTerracedRiceFieldNotes": "Gaudeix d'un camp d'arròs adossat en època de creixement.",
"backgroundFantasticalShoeStoreText": "Sabateria fantàstica",
"backgroundFantasticalShoeStoreNotes": "Busca calçat nou a la sabateria fantàstica.",
"backgroundChampionsColosseumText": "Coliseu dels campions",
"backgroundChampionsColosseumNotes": "Gaudeix de la glòria del coliseu dels campions.",
"backgrounds062018": "49a sèrie: juny del 2018",
"backgroundDocksText": "Moll",
"backgroundDocksNotes": "Pesca des de dalt del Moll.",
"backgroundRowboatText": "Barca de Rems",
"backgroundRowboatNotes": "Canta en una Barca de Rems.",
"backgroundPirateFlagText": "Bandera Pirata",
"backgroundPirateFlagNotes": "Alça una Bandera Pirata aterridora.",
"backgrounds072018": "50ª sèrie: juliol del 2018",
"backgroundDarkDeepText": "Profunditats Fosques",
"backgroundDarkDeepNotes": "Neda a les Profunditats Fosques, entre bestioles bioluminescents.",
"backgroundDocksNotes": "Pesca des de dalt del moll.",
"backgroundRowboatText": "Barca de rems",
"backgroundRowboatNotes": "Canta en una barca de rems.",
"backgroundPirateFlagText": "Bandera pirata",
"backgroundPirateFlagNotes": "Alça una bandera pirata aterridora.",
"backgrounds072018": "50a sèrie: juliol del 2018",
"backgroundDarkDeepText": "Profunditats fosques",
"backgroundDarkDeepNotes": "Neda a les profunditats fosques, entre bestioles bioluminescents.",
"backgroundDilatoryCityText": "Ciutat de Dilatòria",
"backgroundDilatoryCityNotes": "Passeja per la Ciutat submarina de Dilatòria.",
"backgroundTidePoolText": "Bassa de la Marea",
"backgroundTidePoolNotes": "Observa la vida de l'oceà prop la Bassa de la Marea.",
"backgrounds082018": "51ª sèrie: agost del 2018",
"backgroundTrainingGroundsText": "Àrea d'Entrenament",
"backgroundTrainingGroundsNotes": "Practica a l'Àrea d'Entrenament.",
"backgroundFlyingOverRockyCanyonText": "Canyó Rocós",
"backgroundFlyingOverRockyCanyonNotes": "Contempla un paisatge sorprenent mentre sobrevoles un Canyó Rocós.",
"backgroundDilatoryCityNotes": "Passeja per la ciutat submarina de Dilatòria.",
"backgroundTidePoolText": "Bassa de la marea",
"backgroundTidePoolNotes": "Observa la vida de l'oceà prop la bassa de la marea.",
"backgrounds082018": "51a sèrie: agost del 2018",
"backgroundTrainingGroundsText": "Àrea d'entrenament",
"backgroundTrainingGroundsNotes": "Practica a l'àrea d'entrenament.",
"backgroundFlyingOverRockyCanyonText": "Canyó rocós",
"backgroundFlyingOverRockyCanyonNotes": "Contempla un paisatge sorprenent mentre sobrevoles un canyó rocós.",
"backgroundBridgeText": "Pont",
"backgroundBridgeNotes": "Travessa un Pont encisador.",
"backgrounds092018": "52ª sèrie: setembre del 2018",
"backgroundApplePickingText": "Collita de Pomes",
"backgroundApplePickingNotes": "Vés a Collir Pomes i porta'n unes quantes a casa.",
"backgroundGiantBookText": "Llibre Gegant",
"backgroundGiantBookNotes": "Llegeix mentre camines per les pàgines d'un Llibre Gegant.",
"backgroundCozyBarnText": "Graner Acollidor",
"backgroundCozyBarnNotes": "Relaxa't amb les teves mascotes i muntures al Graner Acollidor.",
"backgrounds102018": "53ª sèrie: octubre del 2018",
"backgroundBridgeNotes": "Travessa un pont encisador.",
"backgrounds092018": "52a sèrie: setembre del 2018",
"backgroundApplePickingText": "Collita de pomes",
"backgroundApplePickingNotes": "Vés a collir pomes i porta'n unes quantes a casa.",
"backgroundGiantBookText": "Llibre gegant",
"backgroundGiantBookNotes": "Llegeix mentre camines per les pàgines d'un llibre gegant.",
"backgroundCozyBarnText": "Graner acollidor",
"backgroundCozyBarnNotes": "Relaxa't amb les teves mascotes i muntures al graner acollidor.",
"backgrounds102018": "53a sèrie: octubre del 2018",
"backgroundBayouText": "Aiguamoll",
"backgroundBayouNotes": "Gaudeix de la llum de les lluernes dels Aiguamolls emboirats.",
"backgroundCreepyCastleText": "Castell Aterridor",
"backgroundCreepyCastleNotes": "Atreveix-te a apropar-te al Castell Aterridor.",
"backgroundBayouNotes": "Gaudeix de la llum de les lluernes dels aiguamolls emboirats.",
"backgroundCreepyCastleText": "Castell aterridor",
"backgroundCreepyCastleNotes": "Atreveix-te a apropar-te al castell aterridor.",
"backgroundDungeonText": "Masmorra",
"backgroundDungeonNotes": "Rescata els presoners de la Masmorra aterridora.",
"backgrounds112018": "54ª sèrie: novembre del 2018",
"backgroundBackAlleyText": "Carreró Fosc",
"backgroundBackAlleyNotes": "Passeja sospitosament per un Carreró Fosc.",
"backgroundGlowingMushroomCaveText": "Cova de Bolets Lluminosos",
"backgroundGlowingMushroomCaveNotes": "Queda't bocabadat davant la Cova de Bolets Lluminosos.",
"backgroundCozyBedroomText": "Dormitori Acollidor",
"backgroundCozyBedroomNotes": "Arrauleix-te en un Dormitori Acollidor.",
"backgrounds122018": "55ª sèrie: desembre del 2018",
"backgroundFlyingOverSnowyMountainsText": "Muntanyes Nevades",
"backgroundFlyingOverSnowyMountainsNotes": "Passa per sobre les Muntayes Nevades de nit.",
"backgroundFrostyForestText": "Bosc Gelat",
"backgroundFrostyForestNotes": "Equipa't per una caminada a través del Bosc Gelat.",
"backgroundSnowyDayFireplaceText": "Llar de Foc d'un Dia de Neu",
"backgroundSnowyDayFireplaceNotes": "Arrauleix-te al costat de la Llar de Foc en un Dia de Neu.",
"backgrounds012019": "56ª sèrie: gener del 2019",
"backgroundDungeonNotes": "Rescata els presoners de la masmorra aterridora.",
"backgrounds112018": "54a sèrie: novembre del 2018",
"backgroundBackAlleyText": "Carreró fosc",
"backgroundBackAlleyNotes": "Passeja sospitosament per un carreró fosc.",
"backgroundGlowingMushroomCaveText": "Cova de bolets lluminosos",
"backgroundGlowingMushroomCaveNotes": "Queda't bocabadat davant la cova de bolets lluminosos.",
"backgroundCozyBedroomText": "Dormitori acollidor",
"backgroundCozyBedroomNotes": "Arrauleix-te en un dormitori acollidor.",
"backgrounds122018": "55a sèrie: desembre del 2018",
"backgroundFlyingOverSnowyMountainsText": "Muntanyes nevades",
"backgroundFlyingOverSnowyMountainsNotes": "Passa per sobre les muntayes nevades de nit.",
"backgroundFrostyForestText": "Bosc gelat",
"backgroundFrostyForestNotes": "Equipa't per una caminada a través del bosc gelat.",
"backgroundSnowyDayFireplaceText": "Llar de foc d'un dia de neu",
"backgroundSnowyDayFireplaceNotes": "Arrauleix-te al costat de la llar de foc en un dia de neu.",
"backgrounds012019": "56a sèrie: gener del 2019",
"backgroundAvalancheText": "Allau",
"backgroundAvalancheNotes": "Escapa de la enorme força d'una Allau.",
"backgroundArchaeologicalDigText": "Excavació Arqueològica",
"backgroundArchaeologicalDigNotes": "Desenterra els secrets del passat en una Excavació Arqueològica.",
"backgroundScribesWorkshopText": "Taller dels Escribes",
"backgroundScribesWorkshopNotes": "Escriu el teu pròxim pergamí d'èxit al Taller dels Escribes.",
"backgroundSchoolOfFishNotes": "Neda enmig d'un Banc de Peixos.",
"backgroundSchoolOfFishText": "Banc de Peixos",
"backgrounds062019": "61ª sèrie: juny del 2019",
"backgroundRainbowMeadowNotes": "Troba un pot ple d'or on acaba l'Arc de Sant Martí al Prat.",
"backgroundRainbowMeadowText": "Prat Arc de Sant Martí",
"backgroundParkWithStatueNotes": "Segueix un camí de flors pel Parc amb una Estàtua.",
"backgroundParkWithStatueText": "Parc amb Estàtua",
"backgroundDojoNotes": "Aprèn moviments nous al Dojo.",
"backgroundAvalancheNotes": "Escapa de l'enorme força d'una allau.",
"backgroundArchaeologicalDigText": "Excavació arqueològica",
"backgroundArchaeologicalDigNotes": "Desenterra els secrets del passat en una excavació arqueològica.",
"backgroundScribesWorkshopText": "Taller dels escribes",
"backgroundScribesWorkshopNotes": "Escriu el teu pròxim pergamí d'èxit al taller dels escribes.",
"backgroundSchoolOfFishNotes": "Neda enmig d'un banc de peixos.",
"backgroundSchoolOfFishText": "Banc de peixos",
"backgrounds062019": "61a sèrie: juny del 2019",
"backgroundRainbowMeadowNotes": "Troba un pot ple d'or on acaba l'arc de Sant Martí al prat.",
"backgroundRainbowMeadowText": "Prat arc de Sant Martí",
"backgroundParkWithStatueNotes": "Segueix un camí de flors pel parc amb una estàtua.",
"backgroundParkWithStatueText": "Parc amb estàtua",
"backgroundDojoNotes": "Aprèn moviments nous al dojo.",
"backgroundDojoText": "Dojo",
"backgrounds052019": "60ª sèrie: maig del 2019",
"backgroundBlossomingDesertNotes": "Presencia una floració extraordinària al Desert Florent.",
"backgroundBlossomingDesertText": "Desert Florit",
"backgroundHalflingsHouseNotes": "Visita una encantadora Casa del Mestís.",
"backgroundHalflingsHouseText": "Casa del Mestís",
"backgroundBirchForestNotes": "Passa-ho bé al tranquil Bosc de Bedolls.",
"backgroundBirchForestText": "Bosc de Bedolls",
"backgrounds042019": "59ª sèrie: abril del 2019",
"backgroundFlowerMarketNotes": "Troba els colors ideals per un ram o un jardí al Mercat de Flors.",
"backgroundFlowerMarketText": "Mercat de Flors",
"backgroundFieldWithColoredEggsNotes": "Busca un tresor primaveral al Camp amb Ous de Colors.",
"backgroundFieldWithColoredEggsText": "Camp amb Ous de Colors",
"backgroundDuckPondNotes": "Alimenta els ocells aquàtics a l'Estanc d'Ànecs.",
"backgroundDuckPondText": "Estanc d'Ànecs",
"backgrounds032019": "58ª sèrie: març del 2019",
"backgroundValentinesDayFeastingHallNotes": "Sent l'amor al Saló de Festes de Sant Valentí.",
"backgroundValentinesDayFeastingHallText": "Saló de Festes de Sant Valentí",
"backgroundOldFashionedBakeryNotes": "Gaudeix d'olors boníssimes fora d'una Fleca Antiga.",
"backgroundOldFashionedBakeryText": "Fleca Antiga",
"backgroundMedievalKitchenNotes": "Cuina una tempesta a una Cuina Medieval.",
"backgroundMedievalKitchenText": "Cuina Medieval",
"backgrounds022019": "57ª sèrie: febrer del 2019",
"backgroundWinterNocturneNotes": "Gaudeix de les estrelles d'un Hivern Nocturn.",
"backgroundWinterNocturneText": "Hivern Nocturn",
"backgroundHolidayWreathNotes": "Adorna el teu avatar amb una Garlanda Festiva elegant.",
"backgroundHolidayWreathText": "Garlanda Festiva",
"backgroundHolidayMarketNotes": "Troba les decoracions i els regals perfectes al Mercat de Nadal.",
"backgrounds052019": "60a sèrie: maig del 2019",
"backgroundBlossomingDesertNotes": "Presencia una floració extraordinària al desert florit.",
"backgroundBlossomingDesertText": "Desert florit",
"backgroundHalflingsHouseNotes": "Visita una encantadora casa del mestís.",
"backgroundHalflingsHouseText": "Casa del mestís",
"backgroundBirchForestNotes": "Passa-ho bé al tranquil bosc de bedolls.",
"backgroundBirchForestText": "Bosc de bedolls",
"backgrounds042019": "59a sèrie: abril del 2019",
"backgroundFlowerMarketNotes": "Troba els colors ideals per un ram o un jardí al mercat de flors.",
"backgroundFlowerMarketText": "Mercat de flors",
"backgroundFieldWithColoredEggsNotes": "Busca un tresor primaveral al camp amb ous de colors.",
"backgroundFieldWithColoredEggsText": "Camp amb ous de colors",
"backgroundDuckPondNotes": "Alimenta els ocells aquàtics a l'estanc d'ànecs.",
"backgroundDuckPondText": "Estanc d'ànecs",
"backgrounds032019": "58a sèrie: març del 2019",
"backgroundValentinesDayFeastingHallNotes": "Sent l'amor al saló de festes de Sant Valentí.",
"backgroundValentinesDayFeastingHallText": "Saló de festes de Sant Valentí",
"backgroundOldFashionedBakeryNotes": "Gaudeix d'olors boníssimes fora d'una fleca antiga.",
"backgroundOldFashionedBakeryText": "Fleca antiga",
"backgroundMedievalKitchenNotes": "Cuina una tempesta a una cuina medieval.",
"backgroundMedievalKitchenText": "Cuina medieval",
"backgrounds022019": "57a sèrie: febrer del 2019",
"backgroundWinterNocturneNotes": "Gaudeix de les estrelles d'un hivern nocturn.",
"backgroundWinterNocturneText": "Hivern nocturn",
"backgroundHolidayWreathNotes": "Adorna el teu avatar amb una garlanda festiva elegant.",
"backgroundHolidayWreathText": "Garlanda festiva",
"backgroundHolidayMarketNotes": "Troba les decoracions i els regals perfectes al mercat de Nadal.",
"backgroundHolidayMarketText": "Mercat de Nadal",
"backgrounds122019": "67ª sèrie: desembre del 2019",
"backgroundPotionShopNotes": "Troba un elixir per qualsevol malaltia a la Botiga de Pocions.",
"backgroundPotionShopText": "Botiga de Pocions",
"backgroundFlyingInAThunderstormNotes": "Persegueix una Tempesta Tumultuosa de tan a prop com t'atreveixis.",
"backgroundFlyingInAThunderstormText": "Tempesta Tumultuosa",
"backgroundFarmersMarketNotes": "Compra el menjar més fresc al Mercat Ecològic.",
"backgroundFarmersMarketText": "Mercat Ecològic",
"backgrounds112019": "66ª sèrie: novembre del 2019",
"backgroundMonsterMakersWorkshopNotes": "Experimenta amb ciències desacreditades en un Taller de Creació de Monstres.",
"backgroundMonsterMakersWorkshopText": "Taller de Creació de Monstres",
"backgroundPumpkinCarriageNotes": "Puja a la Carrossa de Carbassa encantada abans que el rellotge toqui les dotze.",
"backgroundPumpkinCarriageText": "Carrossa de Carbassa",
"backgroundFoggyMoorNotes": "Mira per on vas quan travessis un Indret Emboirat.",
"backgroundFoggyMoorText": "Indret Emboirat",
"backgrounds102019": "65ª sèrie: octubre del 2019",
"backgroundInAClassroomNotes": "Absorveix el coneixement dels teus mentors en una Classe.",
"backgrounds122019": "67a sèrie: desembre del 2019",
"backgroundPotionShopNotes": "Troba un elixir per qualsevol malaltia a la botiga de pocions.",
"backgroundPotionShopText": "Botiga de pocions",
"backgroundFlyingInAThunderstormNotes": "Persegueix una tempesta tumultuosa de tan a prop com t'atreveixis.",
"backgroundFlyingInAThunderstormText": "Tempesta tumultuosa",
"backgroundFarmersMarketNotes": "Compra el menjar més fresc al mercat ecològic.",
"backgroundFarmersMarketText": "Mercat ecològic",
"backgrounds112019": "66a sèrie: novembre del 2019",
"backgroundMonsterMakersWorkshopNotes": "Experimenta amb ciències desacreditades en un taller de creació de monstres.",
"backgroundMonsterMakersWorkshopText": "Taller de creació de monstres",
"backgroundPumpkinCarriageNotes": "Puja a la carrossa de carbassa encantada abans que el rellotge toqui les dotze.",
"backgroundPumpkinCarriageText": "Carrossa de carbassa",
"backgroundFoggyMoorNotes": "Mira per on vas quan travessis un indret emboirat.",
"backgroundFoggyMoorText": "Indret emboirat",
"backgrounds102019": "65a sèrie: octubre del 2019",
"backgroundInAClassroomNotes": "Absorbeix el coneixement dels teus mentors en una classe.",
"backgroundInAClassroomText": "Classe",
"backgroundInAnAncientTombNotes": "Enfronta't als misteris d'una Tomba Antiga.",
"backgroundInAnAncientTombText": "Tomba Antiga",
"backgroundAutumnFlowerGardenNotes": "Sent la calidesa d'un Jardí de Flors de Tardor.",
"backgroundAutumnFlowerGardenText": "Jardí de Flors de Tardor",
"backgrounds092019": "64ª sèrie: setembre del 2019",
"backgroundTreehouseNotes": "Passa l'estona en un amagatall arbori només per a tu, a la teva pròpia Casa de l'Arbre.",
"backgroundTreehouseText": "Casa de l'Arbre",
"backgroundGiantDandelionsNotes": "Passeja entre Dents de Lleó Gegants.",
"backgroundGiantDandelionsText": "Dents de Lleó Gegants",
"backgroundAmidAncientRuinsNotes": "Fés una reverència al passat misteriós Entremig de Ruïnes Antigues.",
"backgroundAmidAncientRuinsText": "Entremig de Ruïnes Antigues",
"backgrounds082019": "63ª sèrie: agost del 2019",
"backgroundAmongGiantAnemonesNotes": "Explora la vida de l'escull, protegit dels depredadors Entre Anemones Gegants.",
"backgroundAmongGiantAnemonesText": "Entre Anemones Gegants",
"backgroundFlyingOverTropicalIslandsNotes": "El paisatge et deixarà sense respiració mentre Sobrevoles Illes Tropicals.",
"backgroundFlyingOverTropicalIslandsText": "Sobrevolant Illes Tropicals",
"backgroundLakeWithFloatingLanternsNotes": "Mira les estrelles des de l'atmosfera festiva del Llac amb Llanternes Flotants.",
"backgroundLakeWithFloatingLanternsText": "Llac amb Llanternes Flotants",
"backgrounds072019": "62ª sèrie: juliol del 2019",
"backgroundUnderwaterVentsNotes": "Capbussa't ben avall, cap als Conductes Submarins.",
"backgroundUnderwaterVentsText": "Conductes Submarins",
"backgroundSeasideCliffsNotes": "Relaxa't en una platja amb la bellesa dels Penya-segats Costaners darrera.",
"backgroundSeasideCliffsText": "Penya-segats Costaners"
"backgroundInAnAncientTombNotes": "Enfronta't als misteris d'una tomba antiga.",
"backgroundInAnAncientTombText": "Tomba antiga",
"backgroundAutumnFlowerGardenNotes": "Sent la calidesa d'un jardí de flors de tardor.",
"backgroundAutumnFlowerGardenText": "Jardí de flors de tardor",
"backgrounds092019": "64a sèrie: setembre del 2019",
"backgroundTreehouseNotes": "Passa l'estona en un amagatall arbori només per a tu, a la teva pròpia casa de l'arbre.",
"backgroundTreehouseText": "Casa de l'arbre",
"backgroundGiantDandelionsNotes": "Passeja entre dents de lleó gegants.",
"backgroundGiantDandelionsText": "Dents de lleó gegants",
"backgroundAmidAncientRuinsNotes": "Fés una reverència al passat misteriós entremig de ruïnes antigues.",
"backgroundAmidAncientRuinsText": "Entremig de ruïnes antigues",
"backgrounds082019": "63a sèrie: agost del 2019",
"backgroundAmongGiantAnemonesNotes": "Explora la vida de l'escull, protegit dels depredadors entre anemones gegants.",
"backgroundAmongGiantAnemonesText": "Entre anemones gegants",
"backgroundFlyingOverTropicalIslandsNotes": "El paisatge et deixarà sense respiració mentre sobrevoles illes tropicals.",
"backgroundFlyingOverTropicalIslandsText": "Sobrevolant illes tropicals",
"backgroundLakeWithFloatingLanternsNotes": "Mira les estrelles des de l'atmosfera festiva del llac amb llanternes flotants.",
"backgroundLakeWithFloatingLanternsText": "Llac amb llanternes flotants",
"backgrounds072019": "62a sèrie: juliol del 2019",
"backgroundUnderwaterVentsNotes": "Capbussa't ben avall, cap als conductes submarins.",
"backgroundUnderwaterVentsText": "Conductes submarins",
"backgroundSeasideCliffsNotes": "Relaxa't en una platja amb la bellesa dels penya-segats costaners darrera.",
"backgroundSeasideCliffsText": "Penya-segats costaners"
}

View File

@@ -106,7 +106,7 @@
"addTask": "Afegeix una Tasca",
"editChallenge": "Edita el Repte",
"challengeDescription": "Descripció del Repte",
"selectChallengeWinnersDescription": "Tria un guanyador entre els participants del Repte",
"selectChallengeWinnersDescription": "Tria un guanyador entre els participants del repte",
"awardWinners": "Guanyador del premi",
"doYouWantedToDeleteChallenge": "Vols suprimir aquest Repte?",
"deleteChallenge": "Borra el Repte",
@@ -120,7 +120,7 @@
"shortName": "Nom Curt",
"shortNamePlaceholder": "Quin tipus de classificació s'hauria d'utilitzar per identificar el teu Repte?",
"updateChallenge": "Actualitza el Repte",
"haveNoChallenges": "Aquest grup no té Reptes",
"haveNoChallenges": "Aquest grup no té reptes",
"loadMore": "Carrega Més",
"exportChallengeCsv": "Exporta el Repte",
"editingChallenge": "Editant el Repte",

View File

@@ -1,15 +1,15 @@
{
"communityGuidelinesWarning": "Please keep in mind that your Display Name, profile photo, and blurb must comply with the <a href='https://habitica.com/static/community-guidelines' target='_blank'>Community Guidelines</a> (e.g. no profanity, no adult topics, no insults, etc). If you have any questions about whether or not something is appropriate, feel free to email <%= hrefBlankCommunityManagerEmail %>!",
"communityGuidelinesWarning": "Recorda que el teu nom, foto de perfil i descripció ha de seguir les <a href='https://habitica.com/static/community-guidelines' target='_blank'>normes de la comunitat</a> (per exemple, no es permet l'ús de llenguatge groller, temes adults, insults, etc.). Per qualsevol dubte sobre un llenguatge adequat no dubtis a enviar un correu electrònic a <%= hrefBlankCommunityManagerEmail %>!",
"profile": "Perfil",
"avatar": "Personalitza l'Avatar",
"editAvatar": "Edita el teu Avatar",
"noDescription": "This Habitican hasn't added a description.",
"noPhoto": "This Habitican hasn't added a photo.",
"noDescription": "Aquest habitant no ha afegit cap descripció.",
"noPhoto": "Aquest habitant no ha afegit cap foto.",
"other": "Altres",
"fullName": "Nom complet",
"displayName": "Display name",
"changeDisplayName": "Change Display Name",
"newDisplayName": "New Display Name",
"displayName": "Nom públic",
"changeDisplayName": "Canvia el nom públic",
"newDisplayName": "Nou nom públic",
"displayPhoto": "Foto",
"displayBlurb": "Alguna cosa sobre tu mateix",
"displayBlurbPlaceholder": "Presenta't sisplau",
@@ -35,7 +35,7 @@
"color": "Color",
"bodyHair": "Cabells",
"hair": "Cabell",
"bangs": "Bangs",
"bangs": "Serrell",
"hairBangs": "Serrells",
"ponytail": "Cua",
"glasses": "Ulleres",
@@ -47,8 +47,8 @@
"beard": "Barba",
"mustache": "Bigoti",
"flower": "Flor",
"accent": "Accent",
"headband": "Headband",
"accent": "Accessori",
"headband": "Diadema",
"wheelchair": "Cadira de rodes",
"extra": "Extra",
"basicSkins": "Pells bàsiques",
@@ -64,27 +64,27 @@
"winteryColors": "Colors hivernals",
"equipment": "Equipament",
"equipmentBonus": "Equipament",
"equipmentBonusText": "Stat bonuses provided by your equipped battle gear. See the Equipment tab under Inventory to select your battle gear.",
"classBonusText": "Your class (Warrior, if you haven't unlocked or selected another class) uses its own equipment more effectively than gear from other classes. Equipped gear from your current class gets a 50% boost to the Stat bonus it grants.",
"equipmentBonusText": "El teu equipament de combat et dona bonificacions d'atributs. Mira la pestanya d'equipament de l'inventori per triar el teu equipament de combat.",
"classBonusText": "La teva classe (Guerrer, si no has desbloquejat o seleccionat cap altra classe) aprofita millor el seu propi equipament que el d'altres classes. L'equipament que portis posat de la teva classe augmentarà un 50% de la bonificació d'atributs que atorgui.",
"classEquipBonus": "Bonificació de classe",
"battleGear": "Equip de guerra",
"gear": "Gear",
"battleGearText": "Aquest és l'equip que duus a la batalla, afecta els números quan interactues amb les teves tasques",
"gear": "Equipament",
"battleGearText": "Aquest és l'equip que duus a la batalla, afecta els números quan interactues amb les teves tasques.",
"autoEquipBattleGear": "Equipar automàticament nou equip",
"costume": "Disfressa",
"costumeText": "Si prefereixes la imatge d'un equip diferent del que duus, selecciona la casella \"Usar disfressa\" per portar visualment una disfressa mentre tens equipat a sota el teu equip de guerra.",
"useCostume": "Usar disfressa",
"useCostumeInfo1": "Click \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can equip for the best Stats on the left, and dress up your avatar with your equipment on the right.",
"useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your Stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.<br><br>Got more questions? Check out the <a href=\"http://habitica.wikia.com/wiki/Equipment#Costumes\">Costume page</a> on the wiki. Find the perfect ensemble? Show it off in the <a href=\"/groups/guild/3884eeaa-2d6a-45e8-a279-ada6de9709e1\">Costume Carnival guild</a> or brag in the Tavern!",
"costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
"useCostumeInfo1": "Feu clic a \"Utilitza una disfressa\" per equipar el teu avatar sense que afecti als atributs del teu equipament de combat! D'aquesta manera pots posar-te l'equipament amb millors atributs a l'esquerra i disfressar el teu avatar amb l'equipament a la dreta.",
"useCostumeInfo2": "Un cop has fet clic a \"Utilitza una disfressa\" l'avatar es veurà una mica bàsic... però no et preocupis! Si mires a l'esquerra, veuràs que el teu equipament de combat encara està posat. Després podràs fer coses sofisticades! Qualsevol cosa que et posis a la dreta no afectarà els teus atributs però et pot fer quedar de meravella. Prova diferents combinacions, barreja sèries i coordina la teva disfressa amb les mascotes, muntures i fons.<br><br>Tens més preguntes? Fes un cop d'ull a <a href=\"http://habitica.wikia.com/wiki/Equipment#Costumes\">Pàgina de disfresses</a> a la wiki. Has trobat el conjunt perfecte? Ensenya'l al <a href=\"/groups/guild/3884eeaa-2d6a-45e8-a279-ada6de9709e1\">gremi de disfresses de carnaval</a> o presumeix-ne a la taverna!",
"costumePopoverText": "Selecciona \"Utilitza una disfressa\" per equipar el teu avatar sense que afecti als atributs del teu equipament de combat! D'aquesta manera pots disfressar el teu avatar amb l'equipament que vulguis mentre tens posat l'equipament de combat amb millors atributs.",
"autoEquipPopoverText": "Selecciona aquesta opció per equipar-te de manera automàtica l'equip nou tant bon punt el compris.",
"costumeDisabled": "Has desactivat la teva disfressa",
"costumeDisabled": "Has desactivat la teva disfressa.",
"gearAchievement": "Has aconseguit la fita \"Equipament Definitiu\" per aver actualitzar al màxim l'equipament d'una classe! Has aconseguit els sets complets llistats a continuació:",
"gearAchievementNotification": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class!",
"moreGearAchievements": "To attain more Ultimate Gear badges, change classes on <a href='/user/settings/site' target='_blank'>the Settings &gt; Site page</a> and buy your new class's gear!",
"gearAchievementNotification": "Has aconseguit la fita \"Equipament Definitiu\" per aver actualitzar al màxim l'equipament d'una classe!",
"moreGearAchievements": "Per aconseguir més insígnies d'equipament definitiu, canvia de classe a <a href='/user/settings/site' target='_blank'>la pàgina &gt; de configuració</a> i compra equipament per la nova classe!",
"armoireUnlocked": "Per a més equipament, fes una ullada a l'<strong>Armari Encantat</strong>. Clica sobre la Recompensa de l'Armari Encantat per a obtenir aleatoriament Equipament especial! També pots aconseguir una quantitat aleatòria d'XP o aliments.",
"ultimGearName": "Ultimate Gear - <%= ultClass %>",
"ultimGearText": "Has upgraded to the maximum weapon and armor set for the <%= ultClass %> class.",
"ultimGearName": "Equipament definitiu - <%= ultClass %>",
"ultimGearText": "Has actualitzat al màxim les armes i l'armadura de la classe <%= ultClass %>.",
"level": "Nivell",
"levelUp": "Has pujat de nivell!",
"gainedLevel": "Has pujat un nivell!",
@@ -97,31 +97,31 @@
"xp": "EX",
"health": "Vida",
"allocateStr": "Punts assignats a Força:",
"allocateStrPop": "Add a Point to Strength",
"allocateStrPop": "Afegeix un punt a Força",
"allocateCon": "Punts assignats a Constitució:",
"allocateConPop": "Add a Point to Constitution",
"allocateConPop": "Afegeix un punt a Constitució",
"allocatePer": "Punts assignats a Percepció:",
"allocatePerPop": "Add a Point to Perception",
"allocatePerPop": "Afegeix un punt a Percepció",
"allocateInt": "Punts assignats a Intel·ligència:",
"allocateIntPop": "Add a Point to Intelligence",
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a>, now available for free in the Market.",
"stats": "Estadístiques",
"allocateIntPop": "Afegeix un punt a Intel·ligència",
"noMoreAllocate": "Ara que has arribat al nivell 100, no guanyaràs més punts d'atributs. Pots continuar pujant de nivell o començar una nova aventura al nivell 1 utilitzant<a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>l'esfera de renaixement</a>!",
"stats": "Atributs",
"achievs": "Fites",
"strength": "Força",
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
"strText": "La Força augmenta la possiblitat de fer un \"cop crític\" i de rebre més monedes, experiència i objectes. També ajuda a fer més mal als monstres finals.",
"constitution": "Constitució",
"conText": "La Constitució redueix el mal obtingut dels Habits negatius i les Tasques Diàries",
"conText": "La Constitució redueix el mal obtingut dels Habits negatius i les Tasques Diàries.",
"perception": "Percepció",
"perText": "La percepció augmenta l'Or que aconsegueixes, i un cop has desbloquejat el Mercat, augmenta les possibilitats de trobar objectes quan aconsegueixes tasques.",
"intelligence": "Intel·ligència",
"intText": "La Intel·ligència augmenta la quantitat d'experiència que reps, i un cop hagis desbloquejat les classes, determina el màxim Manà disponible per les habilitats de classe.",
"levelBonus": "Bonificació de nivell",
"levelBonusText": "Each Stat gets a bonus equal to half of (your Level minus 1).",
"levelBonusText": "Cada atribut guanya una bonificació igual a la meitat del (teu nivell menys 1).",
"allocatedPoints": "Punts assignats",
"allocatedPointsText": "Stat Points you've earned and assigned. Assign Points using the Character Build column.",
"allocatedPointsText": "Punts d'atributs que has guanyat i assignat. Assigna punts utilitzant la columna de construcció del personatge.",
"allocated": "Assignats",
"buffs": "Bonificadors",
"buffsText": "Temporary Stat bonuses from abilities and achievements. These wear off at the end of your day. The abilities you've unlocked appear in the Rewards list of your Tasks page.",
"buffsText": "Bonificacions temporals d'atributs d'habilitats i assoliments. S'esgoten al final del dia. Les habilitats que hagis desbloquejat apareixeràn a la llista de recompenses de la pàgina de tasques.",
"characterBuild": "Construcció del personatge",
"class": "Classe",
"experience": "Experiència",
@@ -131,23 +131,23 @@
"mage": "Mag",
"wizard": "Mag",
"mystery": "Objecte misteriós",
"changeClass": "Change Class, Refund Stat Points",
"changeClass": "Canvia de classe, Devolució de punts d'atribut",
"lvl10ChangeClass": "Per canviar de classe has d'estar com a mínim al nivell 10.",
"changeClassConfirmCost": "Estàs segur de que vols canviar la teva classe per 3 diamants?",
"invalidClass": "Classe invalida. Si us plau especifica 'guerrer', 'lladre', 'mag' o 'curander'.",
"levelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
"unallocated": "Unallocated Stat Points",
"haveUnallocated": "You have <%= points %> unallocated Stat Point(s)",
"levelPopover": "Cada nivell et dona un punt per assignar a l'atribut que trïis. Pots fer-ho manualment o deixar que el joc decideixi per tu utilitzant l'opció d'assignació automàtica.",
"unallocated": "Punts d'atribut sense assignar",
"haveUnallocated": "Tens<%= points %> punt(s) d'atribut sense assignar",
"autoAllocation": "Assignació automàtica",
"autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
"evenAllocation": "Distribute Stat Points evenly",
"evenAllocationPop": "Assigns the same number of Points to each Stat.",
"classAllocation": "Distribute Points based on Class",
"classAllocationPop": "Assigns more Points to the Stats important to your Class.",
"taskAllocation": "Distribute Points based on task activity",
"taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
"autoAllocationPop": "Assigna punts als atributs que vulguis quan pugis de nivell.",
"evenAllocation": "Distribueix els punts d'atribut equitativament",
"evenAllocationPop": "Assigna el mateix número de punts a cada atribut.",
"classAllocation": "Distribueix els punts segons la teva classe",
"classAllocationPop": "Assigna més punts als atributs importants per la teva classe.",
"taskAllocation": "Distribueix els punts segons l'activitat de les teves tasques",
"taskAllocationPop": "Assigna els punts segons les categories de Força, Intel·ligència, Constitució i Percepció associades a les tasques que completis.",
"distributePoints": "Distribueix els punts no assignats",
"distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
"distributePointsPop": "Assigna tots els punts d'atributs sense assignar segons l'esquema d'assignació seleccionat.",
"warriorText": "Els Guerrers guanyes més i millors \"cops crítics\", que aleatòriament donen bonificacions d'Or, Experiència i una probabilitat de marcar una tasca. També reben més mal dels monstres finals. Juga amb el Guerrer si t'agraden les recompenses aleatòries o si vols repartir mal als monstres finals!",
"wizardText": "Els Mags aprenen ràpidament, guanyant experiència i pujant de nivell més ràpidament que les altres classes. A més, també es beneficien de més Mana per utilitzar les seves habilitat especials. Juga com a Mag si t'agrada explorar els aspectes més tècnics d'Habitica, o si estàs molt motivat per pujar de nivell ràpid i desbloquejar aspectes més avançats!",
"mageText": "Els Mags aprenen ràpidament, guanyant experiència i pujant de nivell més ràpidament que les altres classes. A més, també es beneficien de més Mana per utilitzar les seves habilitat especials. Juga com a Mag si t'agrada explorar els aspectes més tècnics d'Habitica, o si estàs molt motivat per pujar de nivell ràpid i desbloquejar aspectes més avançats!",
@@ -157,8 +157,8 @@
"optOutOfPMs": "Abandona-les",
"chooseClass": "Tria la teva classe",
"chooseClassLearnMarkdown": "[Aprèn més sobre el sistema de classes d'Habitica](http://habitica.wikia.com/wiki/Class_System)",
"optOutOfClassesText": "Can't be bothered with classes? Want to choose later? Opt out - you'll be a warrior with no special abilities. You can read about the class system later on the wiki and enable classes at any time under User Icon > Settings.",
"selectClass": "Select <%= heroClass %>",
"optOutOfClassesText": "No t'importen les classes? Vols triar més tard? Cap problema - seràs un guerrer sense cap habilitat especial. Pots informar-te sobre els sistema de classes més tard a la wiki i habilitar les classes en qualsevol moment a Icona de l'usuari > Configuració.",
"selectClass": "Selecciona <%= heroClass %>",
"select": "Selecciona",
"stealth": "Sigil",
"stealthNewDay": "Quan comenci un nou dia, evitaràs que aquestes tasques diàries saltades et facin mal.",
@@ -167,15 +167,15 @@
"respawn": "Reviu!",
"youDied": "Has mort!",
"dieText": "Has perdut un nivell, totes les monedes, i una peça de l'equip aleatòria. Alça't, habitícula, i torna-ho a intentar! Domina aquests mals hàbits, sigues diligent en completar les tasques diàries, i mantingue's la mort a ratlla amb una poció de vida si les forces et flaquejen!",
"sureReset": "Are you sure? This will reset your character's class and allocated Stat Points (you'll get them all back to re-allocate), and costs 3 Gems.",
"sureReset": "N'estàs segur? Això reiniciarà la classe del teu personatge i els punts d'atribut assignats (els tornaràs a tenir per reassignar-los) i costa 3 gemmes.",
"purchaseFor": "Comprar per <%= cost %> Gemmes?",
"purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"purchaseForHourglasses": "Compra per <%= cost %> rellotges de sorra?",
"notEnoughMana": "No tens prou manà.",
"invalidTarget": "No pots llençar les teves habilitats en això.",
"youCast": "Llances <%= spell %>.",
"youCastTarget": "Llances <%= spell %> contra <%= target %>.",
"youCastParty": "Llances <%= spell %> per a la festa.",
"critBonus": "Cop crític! Bonificació:",
"critBonus": "Cop crític! Bonificació: ",
"gainedGold": "Has guanyat or",
"gainedMana": "Has guanyat Mana",
"gainedHealth": "Has recuperat una mica de vida",
@@ -184,7 +184,7 @@
"lostMana": "Has utilitzat una mica de Mana",
"lostHealth": "Has perdut una mica de Vida",
"lostExperience": "Has perdut una mica d'Experiència",
"displayNameDescription1": "This is what appears in messages you post in the Tavern, guilds, and party chat, along with what is displayed on your avatar. To change it, click the Edit button above. If instead you want to change your username, go to",
"displayNameDescription1": "Això és el que apareix als missatges que publiquis a la taverna, els gremis i el xat d'equip, juntament amb el que es mostra amb el teu avatar. Per canviar-ho, fes clic al botó superior d'editar. En canvi, si vols canviar el teu nom d'usuari, vés a",
"displayNameDescription2": "Opcions->Pàgina",
"displayNameDescription3": "i mira la secció de Registre.",
"unequipBattleGear": "Desequipar Equip de batalla",
@@ -203,26 +203,30 @@
"con": "CON",
"per": "PER",
"int": "INT",
"showQuickAllocation": "Show Stat Allocation",
"hideQuickAllocation": "Hide Stat Allocation",
"quickAllocationLevelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
"notEnoughAttrPoints": "You don't have enough Stat Points.",
"classNotSelected": "You must select Class before you can assign Stat Points.",
"showQuickAllocation": "Mostra l'assignació d'atributs",
"hideQuickAllocation": "Amaga l'assignació d'atributs",
"quickAllocationLevelPopover": "Cada nivell et dona un punt per assignar a l'atribut que trïis. Pots fer-ho manualment o deixar que el joc decideixi per tu utilitzant una de les opcions d'assignació automàtica que trobaràs a Icona de l'usuari > Atributs.",
"notEnoughAttrPoints": "No tens prous punts d'atributs.",
"classNotSelected": "Selecciona una classe abans d'assignar punts d'atribut.",
"style": "Estil",
"facialhair": "Facial",
"photo": "Fotogràfia",
"facialhair": "Cara",
"photo": "Foto",
"info": "Informació",
"joined": "Unit",
"totalLogins": "Total Check Ins",
"latestCheckin": "Latest Check In",
"totalLogins": "Total d'entrades",
"latestCheckin": "Última entrada",
"editProfile": "Modifica el teu perfil",
"challengesWon": "Reptes guanyats",
"questsCompleted": "Quests Completed",
"headAccess": "Head Access.",
"backAccess": "Back Access.",
"bodyAccess": "Body Access.",
"mainHand": "Main-Hand",
"offHand": "Off-Hand",
"statPoints": "Stat Points",
"pts": "pts"
"questsCompleted": "Missions completades",
"headAccess": "Accessori del cap.",
"backAccess": "Accessori de l'esquena.",
"bodyAccess": "Accessori del cos.",
"mainHand": "Mà principal",
"offHand": "Mà secundària",
"statPoints": "Punts d'atribut",
"pts": "punts",
"chatCastSpellUser": "<%= username %> llança <%= spell %> contra <%= target %>.",
"chatCastSpellParty": "<%= username %> llança <%= spell %> per l'equip.",
"purchasePetItemConfirm": "Aquesta compra supera el número d'objectes que necessites per covar totes les mascotes <%= itemText %> possibles. N'estàs segur?",
"purchaseForGold": "Compra per <%= cost %> monedes?"
}

View File

@@ -1,34 +1,34 @@
{
"iAcceptCommunityGuidelines": "Em comprometo a seguir les Normes de la Comunitat",
"tavernCommunityGuidelinesPlaceholder": "Friendly reminder: this is an all-ages chat, so please keep content and language appropriate! Consult the Community Guidelines in the sidebar if you have questions.",
"lastUpdated": "Last updated:",
"tavernCommunityGuidelinesPlaceholder": "Recorda: aquest és un xat per a totes les edats. Si us plau, utilitza un contingut i llenguatge adeqüats! Consulta les normes de la comunitat a la barra lateral si tens qualsevol dubte.",
"lastUpdated": "Última actualització:",
"commGuideHeadingWelcome": "Benvingut a Habitica!",
"commGuidePara001": "Greetings, adventurer! Welcome to Habitica, the land of productivity, healthy living, and the occasional rampaging gryphon. We have a cheerful community full of helpful people supporting each other on their way to self-improvement. To fit in, all it takes is a positive attitude, a respectful manner, and the understanding that everyone has different skills and limitations -- including you! Habiticans are patient with one another and try to help whenever they can.",
"commGuidePara002": "To help keep everyone safe, happy, and productive in the community, we do have some guidelines. We have carefully crafted them to make them as friendly and easy-to-read as possible. Please take the time to read them before you start chatting.",
"commGuidePara001": "Salutacions, aventurer! Benvingut a Habitica, la terra de la productivitat, la vida saludable i un griu ocasionalment desbocat. Tenim una comunitat alegre plena de gent atenta que es recolza mútuament de camí cap a la superació personal. Per encaixar només es necessita tenir una actitud positiva, una manera respectuosa i comprendre que cadascú té diferents habilitats i limitacions, fins i tot tu! Els habitants d'Habitica són pacients amb els altres i intenten ajudar sempre que poden.",
"commGuidePara002": "Per ajudar a que tothom es senti segur, feliç i productiu a la comunitat tenim unes normes. Les hem dissenyat cuidadosament per fer-les tant agradables i fàcils de llegir com ha estat posible. Si us plau, pren-te el temps que necessitis per llegir-les abans que comencis a xatejar.",
"commGuidePara003": "Aquestes normes valen per tots els espais socials que utilitzem, incloent (però no necessàriament limitant-se a) Trello, Github, Transifex i la Wikia (la wiki). A vegades esdeveniràn situacions imprevistes, com un nou origen de conflicte o un feroç ocultista. Quan això passi, els moderadors poden intervenir editant aquestes normes per mantenir-nos a tots segurs de nous perills. No pateixis: seràs notificat per un anunci d'en Bailey si canvien les normes.",
"commGuidePara004": "Ara prepara les teves plomes i pergamins per prendre nota, i comencem!",
"commGuideHeadingInteractions": "Interactions in Habitica",
"commGuidePara015": "Habitica has two kinds of social spaces: public, and private. Public spaces include the Tavern, Public Guilds, GitHub, Trello, and the Wiki. Private spaces are Private Guilds, Party chat, and Private Messages. All Display Names must comply with the public space guidelines. To change your Display Name, go on the website to User > Profile and click on the \"Edit\" button.",
"commGuideHeadingInteractions": "Interaccions a Habitica",
"commGuidePara015": "Habitica té dos tipus d'espais socials: públic i privat. Els espais públics inclouen la taverna, els gremis públics, GitHub, Trello i la Wiki. Els espais privats són gremis privats, xat de l'equip i missatges privats. Tots els noms públics han de seguir la normativa dels espais públics. Per canviar el vostre nom públic, aneu a la pàgina web a Usuari > Perfil i feu clic al botó \"Edita\".",
"commGuidePara016": "Quan navegues els espais públics de Habitica, hi han algunes normes generals per mantenir a tothom segur i feliç. Aquestes haurien de ser fàcils per a aventurers com tu!",
"commGuideList02A": "<strong>Respect each other</strong>. Be courteous, kind, friendly, and helpful. Remember: Habiticans come from all backgrounds and have had wildly divergent experiences. This is part of what makes Habitica so cool! Building a community means respecting and celebrating our differences as well as our similarities. Here are some easy ways to respect each other:",
"commGuideList02B": "<strong>Obey all of the <a href='/static/terms' target='_blank'>Terms and Conditions</a></strong>.",
"commGuideList02C": "<strong>Do not post images or text that are violent, threatening, or sexually explicit/suggestive, or that promote discrimination, bigotry, racism, sexism, hatred, harassment or harm against any individual or group</strong>. Not even as a joke. This includes slurs as well as statements. Not everyone has the same sense of humor, and so something that you consider a joke may be hurtful to another. Attack your Dailies, not each other.",
"commGuideList02D": "<strong>Keep discussions appropriate for all ages</strong>. We have many young Habiticans who use the site! Let's not tarnish any innocents or hinder any Habiticans in their goals.",
"commGuideList02E": "<strong>Avoid profanity. This includes milder, religious-based oaths that may be acceptable elsewhere</strong>. We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a moderator or staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final</strong>. Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "<strong>Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic</strong>. If you feel that someone has said something rude or hurtful, do not engage them. If someone mentions something that is allowed by the guidelines but which is hurtful to you, its okay to politely let someone know that. If it is against the guidelines or the Terms of Service, you should flag it and let a mod respond. When in doubt, flag the post.",
"commGuideList02G": "<strong>Comply immediately with any Mod request</strong>. This could include, but is not limited to, requesting you limit your posts in a particular space, editing your profile to remove unsuitable content, asking you to move your discussion to a more suitable space, etc.",
"commGuideList02H": "<strong>Take time to reflect instead of responding in anger</strong> if someone tells you that something you said or did made them uncomfortable. There is great strength in being able to sincerely apologize to someone. If you feel that the way they responded to you was inappropriate, contact a mod rather than calling them out on it publicly.",
"commGuideList02I": "<strong>Divisive/contentious conversations should be reported to mods</strong> by flagging the messages involved or using the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a>. If you feel that a conversation is getting heated, overly emotional, or hurtful, cease to engage. Instead, report the posts to let us know about it. Moderators will respond as quickly as possible. It's our job to keep you safe. If you feel that more context is required, you can report the problem using the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a>.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam.<br/><br/>It is up to the mods to decide if something constitutes spam or might lead to spam, even if you dont feel that you have been spamming. For example, advertising a Guild is acceptable once or twice, but multiple posts in one day would probably constitute spam, no matter how useful the Guild is!",
"commGuideList02K": "<strong>Avoid posting large header text in the public chat spaces, particularly the Tavern</strong>. Much like ALL CAPS, it reads as if you were yelling, and interferes with the comfortable atmosphere.",
"commGuideList02L": "<strong>We highly discourage the exchange of personal information -- particularly information that can be used to identify you -- in public chat spaces</strong>. Identifying information can include but is not limited to: your address, your email address, and your API token/password. This is for your safety! Staff or moderators may remove such posts at their discretion. If you are asked for personal information in a private Guild, Party, or PM, we highly recommend that you politely refuse and alert the staff and moderators by either 1) flagging the message if it is in a Party or private Guild, or 2) filling out the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a> and including screenshots.",
"commGuidePara019": "<strong>In private spaces</strong>, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting slurs or any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
"commGuidePara020": "<strong>Private Messages (PMs)</strong> have some additional guidelines. If someone has blocked you, do not contact them elsewhere to ask them to unblock you. Additionally, you should not send PMs to someone asking for support (since public answers to support questions are helpful to the community). Finally, do not send anyone PMs begging for a gift of gems or a subscription, as this can be considered spamming.",
"commGuidePara020A": "<strong>If you see a post that you believe is in violation of the public space guidelines outlined above, or if you see a post that concerns you or makes you uncomfortable, you can bring it to the attention of Moderators and Staff by clicking the flag icon to report it</strong>. A Staff member or Moderator will respond to the situation as soon as possible. Please note that intentionally reporting innocent posts is an infraction of these Guidelines (see below in “Infractions). PMs cannot be flagged at this time, so if you need to report a PM, please contact the Mods via the form on the “Contact Us” page, which you can also access via the help menu by clicking “<a href='http://contact.habitica.com/' target='_blank'>Contact the Moderation Team</a>.” You may want to do this if there are multiple problematic posts by the same person in different Guilds, or if the situation requires some explanation. You may contact us in your native language if that is easier for you: we may have to use Google Translate, but we want you to feel comfortable about contacting us if you have a problem.",
"commGuidePara021": "Furthermore, some public spaces in Habitica have additional guidelines.",
"commGuideHeadingTavern": "La Taverna",
"commGuidePara022": "The Tavern is the main spot for Habiticans to mingle. Daniel the Innkeeper keeps the place spic-and-span, and Lemoness will happily conjure up some lemonade while you sit and chat. Just keep in mind…",
"commGuidePara023": "<strong>Conversation tends to revolve around casual chatting and productivity or life improvement tips</strong>. Because the Tavern chat can only hold 200 messages, <strong>it isn't a good place for prolonged conversations on topics, especially sensitive ones</strong> (ex. politics, religion, depression, whether or not goblin-hunting should be banned, etc.). These conversations should be taken to an applicable Guild. A Mod may direct you to a suitable Guild, but it is ultimately your responsibility to find and post in the appropriate place.",
"commGuideList02A": "<strong>Respectar-se mútuament</strong>. Sigueu cortesos, amables, amistosos i atents. Recordeu: els habitants venen de tot arreu i han viscut experiències extremadament diferents. Això és una de les coses que fan que Habitica sigui divertit! Formar una comunitat significa respectar i celebrar tant les nostres diferències com les semblances. Aquestes són algunes de les maneres de respectar-se mútuament:",
"commGuideList02B": "<strong>Seguiu els <a href='/static/terms' target='_blank'>termes and condicions</a></strong>.",
"commGuideList02C": "<strong>No publiqueu imatges o textos que siguin violents, amenaçadors o sexualment explícits/insinuants o que promoguin discriminació, intolerància, racisme, sexisme, odi, abús o dany contra qualsevol individu o grup</strong>. Ni tan sols com una broma. Això inclou tant insults com declaracions. No tothom té el mateix sentit de l'humor, per tant, coses que considereu una broma poden fer mal a altres. Ataqueu les vostres tasques diaries i no entre vosaltres.",
"commGuideList02D": "<strong>Mantingueu converses apropiades per totes les edats</strong>. Tenim força habitants joves que utilitzen aquesta pàgina! No corromprem cap innocent ni dificultarem a altre habitants assolir els seus objectius.",
"commGuideList02E": "<strong>Eviteu blasfemar. Això inclou comentaris lleus o basats en la religió que poden ser acceptables a altres llocs</strong>. Tenim gent de totes les religions i cultures i volem assegurar-nos que tots es sentin còmodes als espais públics. <strong>Si un moderador o membre del personal us diu que un terme no s'accepta a Habitica, fins i tot si és un terme que no us en havíeu adonat que era problematic, la decisió és final</strong>. A més, les faltes de respecte es tractaràn amb severitat perquè violen els termes d'ús.",
"commGuideList02F": "<strong>Eviteu discussions extenses sobre temes divisoris a la taverna i on estigui fora de lloc</strong>. Si creieu que algú ha fet algun comentari desagradable o punyent, no us hi involucreu. Si algú fa un comentari que està permés segons les normes però que us fa mal, no passa res si ho digueu amablement. Si va contra les normes o els termes d'ús, ho haurieu de denunciar i deixar que un moderador respongui. Quan dubteu, denuncieu la publicació.",
"commGuideList02G": "<strong>Compliu immediatament qualsevol sol·licitud d'un moderador</strong>. Això inclou, entre altres coses, que us demani limitar les vostres publicacions en un espai en particular, editar el vostre perfil per borrar contingut inadequat, demanar-vos que mogueu una discussió a un espai més adequat, etc.",
"commGuideList02H": "<strong>Preneu-vos el temps per reflexionar abans de respondre enfadats</strong> si algú us diu que alguna cosa que heu fet o publicat els ha fet sentir incòmodes. Demanar disculpes sinceres és un gran acte de coratge. Si creieu que la manera de contestar ha estat inadequada, contacteu un moderador en comptes de respondre públicament.",
"commGuideList02I": "<strong>Les converses divisives o controvertides s'han de denunciar als moderadors</strong> assenyalant els missatges en qüestió o utilitzant el <a href='http://contact.habitica.com/' target='_blank'>formulari de contacte</a>. Si creieu que una conversa està pujant de to o és massa emocional o dolorosa, deixeu de participar-hi. A canvi, denuncia les publicacions per fer-nos-ho saber. Els moderadors respondran tan aviat com sigui possible. La nostra feina és protegir-vos. Si creieu necessari donar més context, podeu denunciar el problema utilitzant el <a href='http://contact.habitica.com/' target='_blank'>formulari de contacte</a>.",
"commGuideList02J": "<strong>No feu comentaris brossa</strong>. Els comentaris brossa inclouen però no estan limitats a: publicar el mateix contingut o dubte a més d'un lloc, publicar enllaços sense explicació ni context, publicar missatges sense sentit, publicar múltiples missatges promocionals sobre un gremi, equip o repte, o publicar massa missatges de cop. Demanar gemmes o una subscripció a qualsevol xat o a través de missatges privats també es considera comentari brossa. Si el fet que la gent cliqui el vostre enllaç us beneficia d'alguna manera, n'heu de deixar constància al comentari; sinó, també serà considerat un comentari brossa.<br/><br/>Depèn dels moderadors decidir si alguna cosa és brossa o pot desembocar-hi encara que no creieu que ho hagueu estat fent. Per exemple, promoure un gremi un parell de cops al dia, s'accepta, però múltiples publicacions poden ser considerades comentaris brossa, independentment de com d'útil sigui el gremi!",
"commGuideList02K": "<strong>Eviteu publicar capçaleres grans als espais públics, especialment a la taverna</strong>. Igual que TOT EN MAJÚSCULA es llegeix com si estiguéssiu cridant i interfereix amb un ambient còmode.",
"commGuideList02L": "<strong>Desaconsellem l'intercanvi d'informació personal als espais públics, particularment informació que us pugui identificar</strong>. La informació identificadora pot incolure però no es limita a: la vostra adreça, correu electrònic i contrassenya del codi de l'API. És per la vostra seguretat! El personal o els moderados poden eliminar aquestes publicacions a la seva discreció. Si us demanen informació personal a un gremi privat, equip o MP, recomanem que ho rebutgeu educadament i alerteu al personal o moderadors o bé 1) denunciant el missatge si és en un equip o gremi privat o 2) emplenant el <a href='http://contact.habitica.com/' target='_blank'>formulari de contacte</a> incloent-hi captures de pantalla.",
"commGuidePara019": "<strong>Als espais privats</strong> els usuaris tenen més llibertat per debatre qualsevol tema que vulguin però no poden violar els termes i condicions. Això inclou publicar insults o qualevol contingut discriminatori, violent o amenaçador. Tingueu en compte que, com que el nom del repte apareix al perfil públic del guanyador, TOTS els reptes han de seguir les normes dels espais públics, encara que apareixin en un espai privat.",
"commGuidePara020": "<strong>Els missatges privats (MPs)</strong> tenen normes addicionals. Si algú us ha bloquejat, no els contacteu des d'un altre lloc per demanar que us desbloquejin. A més, tampoc hauríeu d'enviar MPs demanant ajuda perquè les respostes públiques a preguntes d'ajuda són útils per la cominutat. Per acabar, no envieu MPs a ningú demanant regals com gemmes o subscripcions perquè podria ser considerat un comentari brossa.",
"commGuidePara020A": "<strong>Si veieu alguna publicació que creieu que viola les normes de l'espai públic descrites anteriorment o si veieu alguna publicació que us incumbeixi o us incomodi, podeu cridar l'atenció dels moderadors o personal fent clic a la icona de la bandera per denunciar-ho</strong>. Un membre del personal o moderador respondrà el més aviat possible. Tingueu en compte que denunciar publicacions innocents de manera intencionada és una infracció d'aquestes normes (vegeu: \"Infraccions\"). Actualment no es poden denunciar els MPs, de manera que si n'heu de denunciar un, si us plau contacteu els moderadors a través del formulari de la pàgina “Contacta'ns”, on també pots accedir a través del menú d'ajuda fent clic a “<a href='http://contact.habitica.com/' target='_blank'>Contacta l'equip de moderadors</a>.” Pot ser que vulgeu fer això si hi ha múltiples publicacions problemàtiques d'una mateixa person a diferents gremis o si la situació requereix una explicació. Ens podeu contactar en la vostra llengua si us és més còmode. Pot ser que haguem d'utilitzar el Traductor de Google, però volem que us sentiu còmodes si ens heu de contactar per un problema.",
"commGuidePara021": "A més a més, alguns espais públics d'Habitica tenen normes addicionals.",
"commGuideHeadingTavern": "La taverna",
"commGuidePara022": "La taverna és l'epai principal de socialització. Daniel l'hosteler manté el lloc net i ordenat i Lemoness farà aparèixer llimonada mentre seieu a xatejar. Només heu de tenir en compte…",
"commGuidePara023": "<strong>Les converses solen girar al voltant de temes casuals, consells de productivitat o de com millorar la vida</strong>. Com que el xat de la taverna només pot contenir 200 missatges,<strong> no és un bon lloc per converses llargues sobre alguns temes, sobretot els delicats</strong> (per exemple: políticam religió, depressió, si s'hauria de prohibir o no la caça de follets, etc.). Aquestes converses s'haurien de traslladar a un gremi de temàtica adequada. Un moderador et pot guiar a un gremi adequat però al final és responsabilitat teva trobar i publicar al lloc adequat.",
"commGuidePara024": "<strong>Don't discuss anything addictive in the Tavern</strong>. Many people use Habitica to try to quit their bad Habits. Hearing people talk about addictive/illegal substances may make this much harder for them! Respect your fellow Tavern-goers and take this into consideration. This includes, but is not exclusive to: smoking, alcohol, pornography, gambling, and drug use/abuse.",
"commGuidePara027": "<strong>When a moderator directs you to take a conversation elsewhere, if there is no relevant Guild, they may suggest you use the Back Corner</strong>. The Back Corner Guild is a free public space to discuss potentially sensitive subjects that should only be used when directed there by a moderator. It is carefully monitored by the moderation team. It is not a place for general discussions or conversations, and you will be directed there by a mod only when it is appropriate.",
"commGuideHeadingPublicGuilds": "Public Guilds",
@@ -125,4 +125,4 @@
"commGuideLink06": "<a href='https://trello.com/b/vwuE9fbO/' target='_blank'>The Art Trello</a>: for submitting pixel art.",
"commGuideLink07": "<a href='https://trello.com/b/nnv4QIRX/' target='_blank'>The Quest Trello</a>: for submitting quest writing.",
"commGuidePara069": "The following talented artists contributed to these illustrations:"
}
}

Some files were not shown because too many files have changed in this diff Show More