diff --git a/website/client/assets/scss/form.scss b/website/client/assets/scss/form.scss
index 27d13af033..6c3ae19579 100644
--- a/website/client/assets/scss/form.scss
+++ b/website/client/assets/scss/form.scss
@@ -65,6 +65,7 @@ input, textarea, input.form-control, textarea.form-control {
padding-right: 40px;
background-image: url(~client/assets/svg/for-css/alert.svg);
background-size: 16px 16px;
+ margin-bottom: 0.1rem;
}
}
diff --git a/website/client/components/creatorIntro.vue b/website/client/components/creatorIntro.vue
index 9f9702f91e..9896ebe5ee 100644
--- a/website/client/components/creatorIntro.vue
+++ b/website/client/components/creatorIntro.vue
@@ -5,7 +5,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
h3(v-once) {{$t('welcomeTo')}}
.svg-icon.logo(v-html='icons.logoPurple')
- .avatar-section.row(:class='{"page-2": modalPage === 2}')
+ .avatar-section.row(v-if='modalPage > 1 || user.auth.local.email', :class='{"page-2": modalPage === 2}')
.col-6.offset-3
.user-creation-bg(v-if='!editing')
avatar(:member='user', :avatarOnly='!editing', :class='{"edit-avatar": editing}')
@@ -187,18 +187,18 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
#extra.section.container.customize-section(v-if='activeTopPage === "extra"')
.row.sub-menu
.col-3.offset-1.text-center.sub-menu-item(@click='changeSubPage("glasses")', :class='{active: activeSubPage === "glasses"}')
- strong(v-once) {{$t('glasses')}}
+ strong(v-once) {{ $t('glasses') }}
.col-4.text-center.sub-menu-item(@click='changeSubPage("wheelchair")', :class='{active: activeSubPage === "wheelchair"}')
- strong(v-once) {{$t('wheelchair')}}
+ strong(v-once) {{ $t('wheelchair') }}
.col-3.text-center.sub-menu-item(@click='changeSubPage("flower")', :class='{active: activeSubPage === "flower"}')
- strong(v-once) {{$t('accent')}}
+ strong(v-once) {{ $t('accent') }}
.row.sub-menu(v-if='editing')
.col-4.text-center.sub-menu-item(@click='changeSubPage("ears")' :class='{active: activeSubPage === "ears"}')
- strong(v-once) {{$t('animalEars')}}
+ strong(v-once) {{ $t('animalEars') }}
.col-4.text-center.sub-menu-item(@click='changeSubPage("tails")' :class='{active: activeSubPage === "tails"}')
- strong(v-once) {{$t('animalTails')}}
+ strong(v-once) {{ $t('animalTails') }}
.col-4.text-center.sub-menu-item(@click='changeSubPage("headband")' :class='{active: activeSubPage === "headband"}')
- strong(v-once) {{$t('headband')}}
+ strong(v-once) {{ $t('headband') }}
#glasses.row(v-if='activeSubPage === "glasses"')
.col-12.customize-options
.option(v-for='option in eyewear', :class='{active: option.active}')
@@ -305,7 +305,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
)
span.svg-icon.inline.icon-12.color(v-html="icons.pin")
.purchase-background.set(v-if='!ownsSet("background", set.items) && set.identifier !== "incentiveBackgrounds"' @click='unlock(setKeys("background", set.items))')
- span.label Purchase Set
+ span.label {{ $t('purchaseAll') }}
.svg-icon.gem(v-html='icons.gem')
span.price 15
.row.customize-menu(v-if='filterBackgrounds')
@@ -320,7 +320,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.container.interests-section(v-if='modalPage === 3 && !editing')
.section.row
.col-12.text-center
- h2 I want to work on:
+ h2 {{ $t('wantToWorkOn') }}
.section.row
.col-6
.task-option
@@ -353,28 +353,36 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
input.custom-control-input#self_care(type="checkbox", value='self_care', v-model='taskCategories')
label.custom-control-label(v-once, for="self_care") {{ $t('self_care') }}
- .section.row.justin-message-section(:class='{top: modalPage > 1}', v-if='!editing')
- .col-12
- .justin-message.d-flex.flex-column.justify-content-center
- .featured-label
- span.rectangle
- span.text Justin
- span.rectangle
- .npc_justin_textbox
+ .section.d-flex.justify-content-center(:class='{top: modalPage > 1}', v-if='!editing')
+ .justin-section.d-flex.align-items-center
+ .featured-label
+ span.rectangle
+ span.text Justin
+ span.rectangle
+ .justin-message
+ .corner-decoration(:style="{top: '-2px', right: '-2px'}")
+ .corner-decoration(:style="{top: '-2px', left: '-2px'}")
+ .corner-decoration(:style="{bottom: '-2px', right: '-2px'}")
+ .corner-decoration(:style="{bottom: '-2px', left: '-2px'}")
div(v-if='modalPage === 1')
- p(v-once) {{$t('justinIntroMessage1')}}
- p(v-once) {{$t('justinIntroMessage2')}}
+ p(v-once, v-html='$t("justinIntroMessage1")')
+ p(v-once, v-if='user.auth.local.email') {{ $t('justinIntroMessage2') }}
+ p(v-once, v-if='!user.auth.local.email') {{ $t('justinIntroMessageUsername') }}
div(v-if='modalPage === 2')
- p So how would you like to look? Don’t worry, you can change this later.
+ p {{ $t('justinIntroMessageAppearance') }}
div(v-if='modalPage === 3')
- p(v-once) {{$t('justinIntroMessage3')}}
+ p(v-once) {{ $t('justinIntroMessage3') }}
+ .npc-justin-textbox
+ .section.mr-5.ml-5(v-if='modalPage === 1 && !user.auth.local.email')
+ username-form(@usernameConfirmed='modalPage += 1', :avatarIntro='"true"')
+ .small.text-center(v-html="$t('usernameTOSRequirements')")
- .section.container.footer(v-if='!editing')
- .row
+ .section.container.footer
+ .row(v-if='!editing && !(modalPage === 1 && !user.auth.local.email)')
.col-3.offset-1.text-center
div(v-if='modalPage > 1', @click='prev()')
.prev-arrow
- .prev(v-once) {{$t('prev')}}
+ .prev(v-once) {{ $t('prev') }}
.col-4.text-center.circles
.circle(:class="{active: modalPage === 1}")
.circle(:class="{active: modalPage === 2}")
@@ -390,12 +398,9 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
+
+
diff --git a/website/client/components/settings/verifyUsername.vue b/website/client/components/settings/verifyUsername.vue
index 024b1f190e..5fc0ec6ceb 100644
--- a/website/client/components/settings/verifyUsername.vue
+++ b/website/client/components/settings/verifyUsername.vue
@@ -10,36 +10,7 @@
div.nametag-header(v-html='icons.helloNametag')
h2.text-center {{ $t('usernameTime') }}
p.text-center(v-html="$t('usernameInfo')")
- .form-group
- .row.align-items-center
- .col-3
- label(for='displayName') {{ $t('displayName') }}
- .col-9
- input#displayName.form-control(
- type='text',
- :placeholder="$t('newDisplayName')",
- v-model='temporaryDisplayName',
- @blur='restoreEmptyDisplayName()',
- :class='{"is-invalid input-invalid": displayNameInvalid, "input-valid": displayNameValid, "text-darker": temporaryDisplayName.length > 0}')
- .mb-3(v-if="displayNameIssues.length > 0")
- .input-error.text-center(v-for="issue in displayNameIssues") {{ issue }}
- .form-group
- .row.align-items-center
- .col-3
- label(for='username') {{ $t('username') }}
- .col-9
- .input-group-prepend.input-group-text @
- input#username.form-control(
- type='text',
- :placeholder="$t('newUsername')",
- v-model='temporaryUsername',
- @blur='restoreEmptyUsername()',
- :class='{"is-invalid input-invalid": usernameInvalid, "input-valid": usernameValid, "text-darker": temporaryUsername.length > 0}')
- .mb-3(v-if="usernameIssues.length > 0")
- .input-error.text-center(v-for="issue in usernameIssues") {{ issue }}
- .small.text-center {{ $t('usernameLimitations') }}
- .row.justify-content-center
- button.btn.btn-primary(type='submit', @click='submitNames()' :disabled='usernameCannotSubmit') {{ $t('saveAndConfirm') }}
+ username-form
.scene_veteran_pets.center-block
.small.text-center.mb-3 {{ $t('verifyUsernameVeteranPet') }}
.small.text-center.tos-footer(v-html="$t('usernameTOSRequirements')")
@@ -62,57 +33,15 @@
diff --git a/website/common/locales/en/character.json b/website/common/locales/en/character.json
index 75b255069b..919594aa21 100644
--- a/website/common/locales/en/character.json
+++ b/website/common/locales/en/character.json
@@ -7,7 +7,7 @@
"noPhoto": "This Habitican hasn't added a photo.",
"other": "Other",
"fullName": "Full Name",
- "displayName": "Display Name",
+ "displayName": "Display name",
"changeDisplayName": "Change Display Name",
"newDisplayName": "New Display Name",
"displayPhoto": "Photo",
diff --git a/website/common/locales/en/front.json b/website/common/locales/en/front.json
index 6c70e575f3..35b55ea0f8 100644
--- a/website/common/locales/en/front.json
+++ b/website/common/locales/en/front.json
@@ -329,7 +329,7 @@
"joinToday": "Join Habitica Today",
"featuredIn": "Featured in",
"signup": "Sign Up",
- "getStarted": "Get Started",
+ "getStarted": "Get Started!",
"mobileApps": "Mobile Apps",
"learnMore": "Learn More"
}
diff --git a/website/common/locales/en/generic.json b/website/common/locales/en/generic.json
index 202b0e0ba6..4e967ee950 100644
--- a/website/common/locales/en/generic.json
+++ b/website/common/locales/en/generic.json
@@ -254,6 +254,7 @@
"resetFilters": "Clear all filters",
"applyFilters": "Apply Filters",
+ "wantToWorkOn": "I want to work on:",
"categories": "Categories",
"habiticaOfficial": "Habitica Official",
"animals": "Animals",
diff --git a/website/common/locales/en/npc.json b/website/common/locales/en/npc.json
index 5c404f64d4..f9e862ccd3 100644
--- a/website/common/locales/en/npc.json
+++ b/website/common/locales/en/npc.json
@@ -6,9 +6,11 @@
"welcomeTo": "Welcome to",
"welcomeBack": "Welcome back!",
"justin": "Justin",
- "justinIntroMessage1": "Hello there! You must be new here. My name is Justin, your guide to Habitica.",
+ "justinIntroMessage1": "Hello there! You must be new here. My name is Justin, and I'll be your guide in Habitica.",
"justinIntroMessage2": "To start, you'll need to create an avatar.",
"justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
+ "justinIntroMessageUsername": "Before we begin, let’s figure out what to call you. Below you’ll find a display name and username I’ve generated for you. After you’ve picked a display name and username, we’ll get started by creating an avatar!",
+ "justinIntroMessageAppearance": "So how would you like to look? Don’t worry, you can change this later.",
"introTour": "Here we are! I've filled out some Tasks for you based on your interests, so you can get started right away. Click a Task to edit or add new Tasks to fit your routine!",
"prev": "Prev",
"next": "Next",
diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json
index 046341dd3b..973ba65172 100644
--- a/website/common/locales/en/subscriber.json
+++ b/website/common/locales/en/subscriber.json
@@ -210,7 +210,7 @@
"haveCouponCode": "Do you have a coupon code?",
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to User icon > Settings > Subscription.",
- "purchaseAll": "Purchase All",
+ "purchaseAll": "Purchase Set",
"gemsPurchaseNote": "Subscribers can buy gems for gold in the Market! For easy access, you can also pin the gem to your Rewards column.",
"gemsRemaining": "gems remaining",
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"