@live-change/user-frontend 0.9.32 → 0.9.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/front/locales/en.json +3 -1
  2. package/front/src/App.vue +32 -1
  3. package/front/src/Index.vue +3 -3
  4. package/front/src/NavBar.vue +8 -8
  5. package/front/src/SettingsTabs.vue +1 -1
  6. package/front/src/config.js +19 -0
  7. package/front/src/connected/ConnectEmail.vue +13 -10
  8. package/front/src/connected/ConnectFinished.vue +4 -4
  9. package/front/src/connected/ConnectPhone.vue +13 -9
  10. package/front/src/connected/Connected.vue +13 -13
  11. package/front/src/delete/Delete.vue +5 -5
  12. package/front/src/delete/DeleteFeedbackSent.vue +4 -4
  13. package/front/src/delete/DeleteFinished.vue +6 -6
  14. package/front/src/google-access/GoogleAccess.vue +4 -4
  15. package/front/src/google-access/GoogleAccessGained.vue +6 -6
  16. package/front/src/identification/IdentificationSettings.vue +17 -14
  17. package/front/src/identification/UserIdentification.vue +8 -8
  18. package/front/src/locale/LocaleSettings.vue +9 -7
  19. package/front/src/message-auth/MessageLink.vue +12 -12
  20. package/front/src/message-auth/MessageSent.vue +20 -17
  21. package/front/src/message-auth/email/ConnectEmail.vue +1 -1
  22. package/front/src/message-auth/email/ResetPasswordEmail.vue +1 -1
  23. package/front/src/message-auth/email/SignInEmail.vue +1 -1
  24. package/front/src/message-auth/email/SignUpEmail.vue +1 -1
  25. package/front/src/nav/UserIcon.vue +11 -12
  26. package/front/src/nav/UserMenu.vue +20 -15
  27. package/front/src/notifications/NotificationButtons.vue +3 -3
  28. package/front/src/notifications/NotificationListPage.vue +2 -2
  29. package/front/src/notifications/NotificationsIcon.vue +12 -10
  30. package/front/src/notifications/NotificationsList.vue +4 -4
  31. package/front/src/notifications/NotificationsSettings.vue +4 -4
  32. package/front/src/notifications/SimpleNotification.vue +3 -3
  33. package/front/src/password/ChangePassword.vue +19 -14
  34. package/front/src/password/ChangePasswordFinished.vue +4 -4
  35. package/front/src/password/Password.vue +406 -449
  36. package/front/src/password/ResetPassword.vue +11 -8
  37. package/front/src/password/ResetPasswordFinished.vue +4 -4
  38. package/front/src/password/ResetPasswordForm.vue +22 -19
  39. package/front/src/phone/CountryInput.vue +13 -15
  40. package/front/src/phone/PhoneInput.vue +3 -3
  41. package/front/src/settings/Settings.vue +5 -5
  42. package/front/src/settings/SettingsIndex.vue +4 -4
  43. package/front/src/settings/SettingsMenu.vue +10 -10
  44. package/front/src/sign/GoogleAuth.vue +4 -4
  45. package/front/src/sign/GoogleAuthReturn.vue +4 -4
  46. package/front/src/sign/LinkedinAuth.vue +4 -4
  47. package/front/src/sign/LinkedinAuthReturn.vue +4 -4
  48. package/front/src/sign/SignInEmail.vue +22 -21
  49. package/front/src/sign/SignInFinished.vue +6 -6
  50. package/front/src/sign/SignOut.vue +5 -5
  51. package/front/src/sign/SignOutFinished.vue +4 -4
  52. package/front/src/sign/SignUpEmail.vue +14 -13
  53. package/front/src/sign/SignUpFinished.vue +19 -16
  54. package/package.json +26 -26
@@ -1,37 +1,39 @@
1
1
  <template>
2
- <div class="w-full lg:w-6 md:w-9" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
- <div class="surface-card border-round shadow-2 p-4" v-if="authenticationData?.state === 'used' && !submitted">
4
- <div class="text-900 font-medium mb-3 text-xl">Authentication done</div>
5
- <p class="mt-0 mb-1 p-0 line-height-3">You authenticated in a different tab.</p>
2
+ <div class="w-full lg:w-6/12 md:w-9/12" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
+ <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="authenticationData?.state === 'used' && !submitted">
4
+ <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">Authentication done</div>
5
+ <p class="mt-0 mb-1 p-0 leading-normal">You authenticated in a different tab.</p>
6
6
  </div>
7
- <div class="surface-card border-round shadow-2 p-4" v-else>
8
- <div class="text-900 font-medium mb-3 text-xl">Message sent</div>
9
- <p class="mt-0 mb-1 p-0 line-height-3">We sent special secret message to the contact you already provided.</p>
10
- <p class="mt-0 mb-4 p-0 line-height-3">Click on the link or enter the code you found in that message.</p>
7
+ <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-else>
8
+ <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">Message sent</div>
9
+ <p class="mt-0 mb-1 p-0 leading-normal">We sent special secret message to the contact you already provided.</p>
10
+ <p class="mt-0 mb-6 p-0 leading-normal">Click on the link or enter the code you found in that message.</p>
11
11
  <Secured :events="['wrong-secret-code']" :actions="['checkSecretCode']">
12
12
  <command-form service="messageAuthentication" action="finishMessageAuthentication"
13
13
  :parameters="{ secretType: 'code', authentication }" :key="authentication"
14
14
  ref="form"
15
15
  @submit="handleSubmit" @done="handleAuthenticated" @error="handleError"
16
16
  v-slot="{ data }">
17
- <div class="flex justify-content-center flex-column align-items-center">
18
- <div class="p-field mx-1 flex flex-column mb-3">
17
+ <div class="flex justify-center flex-col items-center">
18
+ <div class="p-field mx-1 flex flex-col mb-4">
19
19
  <label for="code" class="p-sr-only">Code</label>
20
20
  <InputOtp id="code" :length="6" class="mb-2"
21
21
  v-model="data.secret"
22
- aria-describedby="code-help" :class="{ 'p-invalid': data.secretError }" />
22
+ aria-describedby="code-help" :invalid="!!data.secretError" />
23
23
  <!-- <InputMask id="code" class="p-inputtext-lg" mask="999999" slotChar="######" placeholder="Enter code"
24
24
  v-model="data.secret"
25
- aria-describedby="code-help" :class="{ 'p-invalid': data.secretError }" />-->
26
- <span v-if="data.secretError" id="code-help" class="p-error">{{ t(`errors.${data.secretError}`) }}</span>
25
+ aria-describedby="code-help" :invalid="!!data.secretError" />-->
26
+ <Message v-if="data.secretError" severity="error" variant="simple">
27
+ {{ t(`errors.${data.secretError}`) }}
28
+ </Message>
27
29
  </div>
28
- <div class="flex flex-column">
29
- <Button label="OK" type="submit" class="p-button-lg flex-grow-0"
30
+ <div class="flex flex-col">
31
+ <Button label="OK" type="submit" class="p-button-lg grow-0"
30
32
  :disableda="data.secret?.length < 6" />
31
33
  </div>
32
34
  </div>
33
- <div v-if="data.secretError === 'codeExpired'" class="mt-3 text-center">
34
- <p class="mt-0 mb-2 p-0 line-height-3">To send another code click button below.</p>
35
+ <div v-if="data.secretError === 'codeExpired'" class="mt-4 text-center">
36
+ <p class="mt-0 mb-2 p-0 leading-normal">To send another code click button below.</p>
35
37
  <Button label="Resend secret code" class="p-button-lg" @click="resend" />
36
38
  </div>
37
39
  </command-form>
@@ -44,6 +46,7 @@
44
46
  import InputMask from "primevue/inputmask"
45
47
  import InputOtp from "primevue/inputotp"
46
48
  import Button from "primevue/button"
49
+ import Message from "primevue/message"
47
50
 
48
51
  import { Secured } from "@live-change/security-frontend"
49
52
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
- <div data-html class="message m-6">
3
+ <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
5
  Hello!
6
6
  </p>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
- <div data-html class="message m-6">
3
+ <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
5
  Hello!
6
6
  </p>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
- <div data-html class="message m-6">
3
+ <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
5
  Hello!
6
6
  </p>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
- <div data-html class="message m-6">
3
+ <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
5
  Hello!
6
6
  </p>
@@ -1,30 +1,29 @@
1
1
  <template>
2
2
  <a v-ripple
3
- v-styleclass="{ selector: '@next', enterClass: 'hidden', leaveToClass: 'hidden', hideOnOutsideClick: true }"
4
- class="relative shadow-none">
5
- <span class="flex mx-0 px-3 align-items-center font-medium
3
+ v-styleclass="{ selector: '@next', enterFromClass: 'hidden', leaveToClass: 'hidden', hideOnOutsideClick: true }"
4
+ class="relative shadow-none b shrink-0">
5
+ <span class="flex mx-0 px-3 align-items-center font-medium justify-content-center
6
6
  cursor-pointer transition-colors transition-duration-150 border-round">
7
- <Image v-if="myIdentification?.image" :image="myIdentification.image"
8
- class="mr-0 border-circle border-1 surface-border" style="width: 3rem; " />
7
+ <Image v-if="myIdentification?.image" :image="myIdentification.image" width="56" height="56"
8
+ class="mr-0 rounded-full border-1 border-surface-400 dark:border-surface-600 object-cover w-12 max-w-none" />
9
9
  <img v-else-if="ownerData[0] === 'session_Session'" src="/images/empty-user-photo.svg"
10
- class="mr-0 border-circle" style="width: 3rem;" />
10
+ class="mr-0 rounded-full border-1 border-surface-400 dark:border-surface-600 w-12 max-w-none" />
11
11
  <img v-else :src="identiconUrl"
12
- class="mr-0 border-circle border-1 surface-border" style="width: 3rem;" />
12
+ class="mr-0 rounded-full border-1 border-surface-400 dark:border-surface-600 w-12 max-w-none" />
13
13
  </span>
14
-
15
14
  </a>
16
- <div class="align-items-center flex-grow-1 justify-content-between hidden absolute w-full md:w-auto surface-overlay
17
- right-0 top-100 z-5 shadow-2">
15
+ <div class="align-items-center flex-grow-1 justify-content-between hidden absolute w-full md:w-auto bg-surface-0
16
+ right-0 top-full z-5 shadow">
18
17
  <loading-zone suspense>
19
18
  <template v-slot:loading>
20
- <div class="flex align-items-center justify-content-center top-0 left-0 notifications-loading">
19
+ <div class="flex items-center justify-center top-0 left-0 notifications-loading">
21
20
  <ProgressSpinner animationDuration=".5s"/>
22
21
  </div>
23
22
  </template>
24
23
  <template v-slot:default="{ isLoading }">
25
24
  <working-zone>
26
25
  <template v-slot:working>
27
- <div class="fixed w-full h-full flex align-items-center justify-content-center top-0 left-0">
26
+ <div class="fixed w-full h-full flex items-center justify-center top-0 left-0">
28
27
  <ProgressSpinner animationDuration=".5s"/>
29
28
  </div>
30
29
  </template>
@@ -1,52 +1,57 @@
1
1
  <template>
2
- <ul class="list-none p-0 m-0 flex select-none flex-column flex-row">
2
+ <ul class="list-none p-0 m-0 flex select-none flex-col">
3
3
  <li>
4
4
  <router-link :to="{ name: 'user:identification' }"
5
5
  v-ripple
6
- class="flex px-6 py-2 align-items-center text-600 hover:text-900 hover:surface-100
6
+ class="flex px-6 py-2 items-center text-surface-600 hover:text-surface-900
7
+ hover:bg-surface-100
7
8
  font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple no-underline"
8
9
  >
9
- <i class="pi pi-user mr-2"></i>
10
+ <i class="pi pi-user mr-3"></i>
10
11
  <span>Profile</span>
11
12
  </router-link>
12
13
  </li>
13
14
  <li v-if="!client.user">
14
15
  <router-link :to="{ name: 'user:signUpEmail' }"
15
16
  v-ripple
16
- class="flex px-6 py-2 align-items-center text-600 hover:text-900 hover:surface-100
17
- font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple no-underline"
17
+ class="flex px-6 py-2 items-center text-surface-600 hover:text-surface-900 hover:bg-surface-100
18
+ font-medium border-round cursor-pointer p-ripple no-underline
19
+ transition-colors duration-300 ease-in-out"
18
20
  >
19
- <i class="pi pi-user-plus mr-2"></i>
21
+ <i class="pi pi-user-plus mr-3"></i>
20
22
  <span>Sign Up</span>
21
23
  </router-link>
22
24
  </li>
23
25
  <li v-if="!client.user">
24
26
  <router-link :to="{ name: 'user:signInEmail' }"
25
27
  v-ripple
26
- class="flex px-6 py-2 align-items-center text-600 hover:text-900 hover:surface-100
27
- font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple no-underline"
28
+ class="flex px-6 py-2 items-center text-surface-600 hover:text-surface-900 hover:bg-surface-100
29
+ font-medium border-round cursor-pointer p-ripple no-underline
30
+ transition-colors duration-300 ease-in-out"
28
31
  >
29
- <i class="pi pi-key mr-2"></i>
32
+ <i class="pi pi-key mr-3"></i>
30
33
  <span>Sign In</span>
31
34
  </router-link>
32
35
  </li>
33
36
  <li v-if="client.user">
34
37
  <router-link :to="{ name: 'user:settings' }"
35
38
  v-ripple
36
- class="flex px-6 py-2 align-items-center text-600 hover:text-900 hover:surface-100
37
- font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple no-underline"
39
+ class="flex px-6 py-2 items-center text-surface-600 hover:text-surface-900 hover:bg-surface-100
40
+ font-medium border-round cursor-pointer p-ripple no-underline
41
+ transition-colors duration-300 ease-in-out"
38
42
  >
39
- <i class="pi pi-cog mr-2"></i>
43
+ <i class="pi pi-cog mr-3"></i>
40
44
  <span>Settings</span>
41
45
  </router-link>
42
46
  </li>
43
47
  <li v-if="client.user">
44
48
  <router-link :to="{ name: 'user:signOut' }"
45
49
  v-ripple
46
- class="flex px-6 py-2 align-items-center text-600 hover:text-900 hover:surface-100
47
- font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple no-underline"
50
+ class="flex px-6 py-2 items-center text-surface-600 hover:text-surface-900 hover:bg-surface-100
51
+ font-medium border-round cursor-pointer p-ripple no-underline
52
+ transition-colors duration-300 ease-in-out"
48
53
  >
49
- <i class="pi pi-power-off mr-2"></i>
54
+ <i class="pi pi-power-off mr-3"></i>
50
55
  <span>Sign Out</span>
51
56
  </router-link>
52
57
  </li>
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div class="notification-buttons">
3
3
  <Button v-if="notification.readState === 'new'" @click="markRead()"
4
- icon="pi pi-eye" class="p-button-rounded p-button-outlined surface-0 " />
4
+ icon="pi pi-eye" class="p-button-rounded p-button-outlined bg-surface-0 dark:bg-surface-900 " />
5
5
  <Button v-if="notification.readState === 'read'" @click="markUnread()"
6
- icon="pi pi-eye-slash" class="p-button-rounded p-button-outlined surface-0" />
6
+ icon="pi pi-eye-slash" class="p-button-rounded p-button-outlined bg-surface-0 dark:bg-surface-900" />
7
7
  <Button @click="deleteNotification()"
8
- icon="pi pi-trash" class="p-button-rounded p-button-outlined ml-1 surface-0" />
8
+ icon="pi pi-trash" class="p-button-rounded p-button-outlined ml-1 bg-surface-0 dark:bg-surface-900" />
9
9
  </div>
10
10
  </template>
11
11
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="w-full lg:w-6 md:w-9">
3
- <div v-if="isMounted" class="surface-card border-round shadow-2 p-4">
2
+ <div class="w-full lg:w-6/12 md:w-9/12">
3
+ <div v-if="isMounted" class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
4
4
  <NotificationsList />
5
5
  </div>
6
6
  </div>
@@ -1,27 +1,29 @@
1
1
  <template>
2
2
  <a v-if="unreadNotificationsCount"
3
3
  v-ripple
4
- v-styleclass="{ selector: '@next', enterClass: 'hidden', leaveToClass: 'hidden', hideOnOutsideClick: true }"
5
- class="flex mx-0 pl-3 pr-5 p-3 py-3 align-items-center text-600 hover:text-900 overflow-visible
4
+ v-styleclass="{ selector: '@next', enterFromClass: 'hidden', leaveToClass: 'hidden', hideOnOutsideClick: true }"
5
+ class="flex mx-0 pl-4 pr-6 pt-3 pb-2 items-center text-surface-500 dark:text-surface-400
6
+ hover:text-surface-900 hover:dark:text-surface-100 overflow-visible
6
7
  font-medium border-round cursor-pointer transition-colors transition-duration-150 p-ripple">
7
- <i class="pi pi-bell text-base text-2xl p-overlay-badge">
8
- <Badge v-if="unreadNotificationsCount?.count" :value="unreadNotificationsCount?.count ?? 0"></Badge>
9
- </i>
8
+ <OverlayBadge v-if="unreadNotificationsCount?.count" :value="unreadNotificationsCount?.count ?? 0" size="small">
9
+ <i class="pi pi-bell" style="font-size: 1.5rem" />
10
+ </OverlayBadge>
10
11
  </a>
11
12
  <div
12
- class="align-items-center flex-grow-1 justify-content-between hidden absolute w-full md:w-auto surface-overlay
13
- right-0 top-100 z-1 shadow-2 overflow-x-hidden overflow-y-auto"
13
+ class="align-items-center flex-grow-1 justify-content-between hidden absolute w-full md:w-auto
14
+ bg-surface-0 dark:bg-surface-950
15
+ right-0 top-full z-1 shadow overflow-x-hidden overflow-y-auto"
14
16
  style="max-height: calc(100vh - 8rem)">
15
17
  <loading-zone suspense>
16
18
  <template v-slot:loading>
17
- <div class="flex align-items-center justify-content-center top-0 left-0 notifications-loading">
19
+ <div class="flex items-center justify-center top-0 left-0 notifications-loading">
18
20
  <ProgressSpinner animationDuration=".5s"/>
19
21
  </div>
20
22
  </template>
21
23
  <template v-slot:default="{ isLoading }">
22
24
  <working-zone>
23
25
  <template v-slot:working>
24
- <div class="fixed w-full h-full flex align-items-center justify-content-center top-0 left-0">
26
+ <div class="fixed w-full h-full flex items-center justify-center top-0 left-0">
25
27
  <ProgressSpinner animationDuration=".5s"/>
26
28
  </div>
27
29
  </template>
@@ -38,7 +40,7 @@
38
40
 
39
41
  <script setup>
40
42
 
41
- import Badge from "primevue/badge"
43
+ import OverlayBadge from "primevue/overlaybadge"
42
44
  import ProgressSpinner from "primevue/progressspinner"
43
45
 
44
46
  import NotificationsList from "./NotificationsList.vue"
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="flex align-items-center justify-content-between mb-1 px-3 pt-1">
3
- <div class="text-900 font-medium text-xl">Notifications</div>
2
+ <div class="flex items-center justify-between mb-1 px-4 pt-1">
3
+ <div class="text-surface-900 dark:text-surface-0 font-medium text-xl">Notifications</div>
4
4
  <div>
5
5
  <Button @click="$refs.menu.toggle($event)"
6
6
  icon="pi pi-ellipsis-v" class="p-button-text p-button-plain p-button-rounded" />
@@ -12,10 +12,10 @@
12
12
  :style="{ backgroundz: `hsl(${bucket.id * 11}, 100%, 80%)` }">
13
13
  <div v-for="(notification, index) in bucket.data" :key="notification.id"
14
14
  :ref="el => bucket.domElements[index] = el"
15
- class="notification border-bottom-1 surface-border"
15
+ class="notification border-b border-surface"
16
16
  :class="{ selected: selectedNotification === notification.to }">
17
17
  <component :is="notificationComponent(notification)" :notification="notification" />
18
- <div class="notification-more-button flex align-items-end justify-content-center">
18
+ <div class="notification-more-button flex items-end justify-center">
19
19
  <Button @click="() => selectNotification(notification)"
20
20
  icon="pi pi-ellipsis-h" class="p-button-rounded p-button-text " />
21
21
  </div>
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="w-full lg:w-6 md:w-9" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
- <div class="surface-card p-4 shadow-2 border-round">
2
+ <div class="w-full lg:w-6/12 md:w-9/12" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
+ <div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
4
4
  <div>
5
5
  <h1>Notifications settings</h1>
6
6
  </div>
@@ -12,8 +12,8 @@
12
12
  </div>
13
13
  <div>
14
14
  <div v-for="contact in notificationType.contacts"
15
- class="flex flex-row align-items-center mb-3">
16
- <div class="flex-grow-1 md:mb-2">
15
+ class="flex flex-row items-center mb-4">
16
+ <div class="grow md:mb-2">
17
17
  <i class="pi" :class="contactTypesIcons[contact.contactType]"></i>
18
18
  <span class="ml-2">{{ contactText(contact.contact, contact.contactType) }}</span>
19
19
  </div>
@@ -1,8 +1,8 @@
1
1
  <template>
2
- <div :class="['px-3 py-2 flex align-items-start justify-content-between flex-column',
3
- notification.readState === 'new' ? 'surface-0 hover:surface-100' : 'surface-100 hover:surface-200'] ">
2
+ <div :class="['px-4 py-2 flex items-start justify-between flex-col',
3
+ notification.readState === 'new' ? 'bg-surface-0 dark:bg-surface-900 hover:bg-surface-100 dark:hover:bg-surface-700' : 'bg-surface-100 dark:bg-surface-700 hover:bg-surface-200 dark:hover:bg-surface-600'] ">
4
4
  <slot></slot>
5
- <span class="block text-500 font-medium mt-2">
5
+ <span class="block text-surface-500 dark:text-surface-300 font-medium mt-2">
6
6
  {{ DateTime.fromISO(notification.time).toRelative({ base: DateTime.fromMillis(now) }) }}
7
7
  </span>
8
8
  </div>
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <div class="w-full lg:w-6 md:w-9">
2
+ <div class="w-full lg:w-6/12 md:w-9/12">
3
3
 
4
- <div class="surface-card p-4 shadow-2 border-round">
5
- <div class="text-center mb-5">
6
- <div class="text-900 text-3xl font-medium mb-3">
4
+ <div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
5
+ <div class="text-center mb-8">
6
+ <div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
7
7
  {{ passwordExists ? 'Change password' : 'Set password' }}
8
8
  </div>
9
9
  </div>
@@ -14,20 +14,22 @@
14
14
 
15
15
  <template v-if="isMounted">
16
16
 
17
- <div class="p-field mb-3" v-if="passwordExists">
18
- <label for="currentPassword" class="block text-900 font-medium mb-2">Current password</label>
17
+ <div class="p-field mb-4" v-if="passwordExists">
18
+ <label for="currentPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">Current password</label>
19
19
  <Password id="currentPassword" class="w-full" inputClass="w-full"
20
20
  toggle-mask v-model:masked="masked"
21
- :class="{ 'p-invalid': data.currentPasswordHashError }"
21
+ :invalid="!!data.currentPasswordHashError"
22
22
  v-model="data.currentPasswordHash" />
23
- <small v-if="data.currentPasswordHashError" id="currentPassword-help" class="p-error">{{ t(`errors.${data.currentPasswordHashError}`) }}</small>
23
+ <Message v-if="data.currentPasswordHashError" severity="error" variant="simple" size="small">
24
+ {{ t(`errors.${data.currentPasswordHashError}`) }}
25
+ </Message>
24
26
  </div>
25
27
 
26
- <div class="p-field mb-3">
27
- <label for="newPassword" class="block text-900 font-medium mb-2">New password</label>
28
+ <div class="p-field mb-4">
29
+ <label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">New password</label>
28
30
  <Password id="newPassword" class="w-full" inputClass="w-full"
29
31
  toggle-mask v-model:masked="masked"
30
- :class="{ 'p-invalid': data.passwordHashError }"
32
+ :invalid="!!data.passwordHashError"
31
33
  v-model="data.passwordHash">
32
34
  <template #footer>
33
35
  <Divider />
@@ -40,11 +42,13 @@
40
42
  </ul>
41
43
  </template>
42
44
  </Password>
43
- <small v-if="data.passwordHashError" id="newPassword-help" class="p-error">{{ t(`errors.${data.passwordHashError}`) }}</small>
45
+ <Message v-if="data.passwordHashError" severity="error" variant="simple" size="small">
46
+ {{ t(`errors.${data.passwordHashError}`) }}
47
+ </Message>
44
48
  </div>
45
49
 
46
- <div class="p-field mb-3">
47
- <label for="reenterPassword" class="block text-900 font-medium mb-2">Re-enter password</label>
50
+ <div class="p-field mb-4">
51
+ <label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">Re-enter password</label>
48
52
  <Password id="reenterPassword" class="w-full" inputClass="w-full"
49
53
  toggle-mask v-model:masked="masked"
50
54
  v-model="secondPassword"
@@ -67,6 +71,7 @@
67
71
 
68
72
  import Button from "primevue/button"
69
73
  import Divider from "primevue/divider"
74
+ import Message from "primevue/message"
70
75
  import Password from "./Password.vue"
71
76
 
72
77
  import { live, path } from '@live-change/vue3-ssr'
@@ -1,8 +1,8 @@
1
1
  <template>
2
- <div class="w-full lg:w-6 md:w-9" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
- <div class="surface-card border-round shadow-2 p-4">
4
- <div class="text-900 font-medium mb-3 text-xl mb-4">Password changed</div>
5
- <p class="mt-0 p-0 line-height-3">You have successfully set your password.</p>
2
+ <div class="w-full lg:w-6/12 md:w-9/12" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
+ <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
4
+ <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">Password changed</div>
5
+ <p class="mt-0 p-0 leading-normal">You have successfully set your password.</p>
6
6
  </div>
7
7
  </div>
8
8
  </template>