@mesob/auth-react 0.3.4 → 0.4.0

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 (142) hide show
  1. package/dist/components/auth/auth-layout.d.ts +1 -1
  2. package/dist/components/auth/auth-layout.js +10 -2
  3. package/dist/components/auth/auth-layout.js.map +1 -1
  4. package/dist/components/auth/countdown.js +8 -6
  5. package/dist/components/auth/countdown.js.map +1 -1
  6. package/dist/components/auth/forgot-password.js +21 -19
  7. package/dist/components/auth/forgot-password.js.map +1 -1
  8. package/dist/components/auth/reset-password-form.js +22 -21
  9. package/dist/components/auth/reset-password-form.js.map +1 -1
  10. package/dist/components/auth/set-password.d.ts +9 -0
  11. package/dist/components/auth/set-password.js +527 -0
  12. package/dist/components/auth/set-password.js.map +1 -0
  13. package/dist/components/auth/sign-in.js +45 -26
  14. package/dist/components/auth/sign-in.js.map +1 -1
  15. package/dist/components/auth/sign-up.js +25 -29
  16. package/dist/components/auth/sign-up.js.map +1 -1
  17. package/dist/components/auth/verification-form.js +24 -27
  18. package/dist/components/auth/verification-form.js.map +1 -1
  19. package/dist/components/auth/verify-email.js +40 -31
  20. package/dist/components/auth/verify-email.js.map +1 -1
  21. package/dist/components/auth/verify-phone.js +40 -31
  22. package/dist/components/auth/verify-phone.js.map +1 -1
  23. package/dist/components/authorization/deny.d.ts +11 -0
  24. package/dist/components/authorization/deny.js +52 -0
  25. package/dist/components/authorization/deny.js.map +1 -0
  26. package/dist/components/authorization/grant.d.ts +12 -0
  27. package/dist/components/authorization/grant.js +57 -0
  28. package/dist/components/authorization/grant.js.map +1 -0
  29. package/dist/components/iam/permission-selector.d.ts +19 -0
  30. package/dist/components/iam/permission-selector.js +122 -0
  31. package/dist/components/iam/permission-selector.js.map +1 -0
  32. package/dist/components/iam/permissions.js +21 -33
  33. package/dist/components/iam/permissions.js.map +1 -1
  34. package/dist/components/iam/role-detail-layout.d.ts +11 -0
  35. package/dist/components/iam/role-detail-layout.js +137 -0
  36. package/dist/components/iam/role-detail-layout.js.map +1 -0
  37. package/dist/components/iam/role-detail-page.d.ts +9 -0
  38. package/dist/components/iam/role-detail-page.js +229 -0
  39. package/dist/components/iam/role-detail-page.js.map +1 -0
  40. package/dist/components/iam/role-permissions-page.d.ts +8 -0
  41. package/dist/components/iam/role-permissions-page.js +397 -0
  42. package/dist/components/iam/role-permissions-page.js.map +1 -0
  43. package/dist/components/iam/roles.js +20 -10
  44. package/dist/components/iam/roles.js.map +1 -1
  45. package/dist/components/iam/tenants.js +9 -2
  46. package/dist/components/iam/tenants.js.map +1 -1
  47. package/dist/components/iam/users.js +10 -9
  48. package/dist/components/iam/users.js.map +1 -1
  49. package/dist/components/profile/account.js +110 -19
  50. package/dist/components/profile/account.js.map +1 -1
  51. package/dist/components/profile/change-email-form.js +26 -29
  52. package/dist/components/profile/change-email-form.js.map +1 -1
  53. package/dist/components/profile/change-phone-form.js +26 -29
  54. package/dist/components/profile/change-phone-form.js.map +1 -1
  55. package/dist/components/profile/change-profile.d.ts +2 -1
  56. package/dist/components/profile/change-profile.js +16 -8
  57. package/dist/components/profile/change-profile.js.map +1 -1
  58. package/dist/components/profile/otp-verification-modal.js +24 -27
  59. package/dist/components/profile/otp-verification-modal.js.map +1 -1
  60. package/dist/components/profile/security.js +88 -57
  61. package/dist/components/profile/security.js.map +1 -1
  62. package/dist/components/profile/verify-change-email-form.js +24 -27
  63. package/dist/components/profile/verify-change-email-form.js.map +1 -1
  64. package/dist/components/profile/verify-change-phone-form.js +24 -27
  65. package/dist/components/profile/verify-change-phone-form.js.map +1 -1
  66. package/dist/index.d.ts +9 -1
  67. package/dist/index.js +1897 -821
  68. package/dist/index.js.map +1 -1
  69. package/dist/pages/auth/forgot-password.d.ts +7 -0
  70. package/dist/pages/auth/forgot-password.js +784 -0
  71. package/dist/pages/auth/forgot-password.js.map +1 -0
  72. package/dist/pages/auth/layout.d.ts +8 -0
  73. package/dist/pages/auth/layout.js +562 -0
  74. package/dist/pages/auth/layout.js.map +1 -0
  75. package/dist/pages/auth/reset-password.d.ts +10 -0
  76. package/dist/pages/auth/reset-password.js +913 -0
  77. package/dist/pages/auth/reset-password.js.map +1 -0
  78. package/dist/pages/auth/set-password.d.ts +10 -0
  79. package/dist/pages/auth/set-password.js +946 -0
  80. package/dist/pages/auth/set-password.js.map +1 -0
  81. package/dist/pages/auth/sign-in.d.ts +10 -0
  82. package/dist/pages/auth/sign-in.js +984 -0
  83. package/dist/pages/auth/sign-in.js.map +1 -0
  84. package/dist/pages/auth/sign-up.d.ts +10 -0
  85. package/dist/pages/auth/sign-up.js +940 -0
  86. package/dist/pages/auth/sign-up.js.map +1 -0
  87. package/dist/pages/auth/verify-email.d.ts +10 -0
  88. package/dist/pages/auth/verify-email.js +950 -0
  89. package/dist/pages/auth/verify-email.js.map +1 -0
  90. package/dist/pages/auth/verify-phone.d.ts +10 -0
  91. package/dist/pages/auth/verify-phone.js +964 -0
  92. package/dist/pages/auth/verify-phone.js.map +1 -0
  93. package/dist/pages/iam/permissions.d.ts +5 -0
  94. package/dist/pages/iam/permissions.js +308 -0
  95. package/dist/pages/iam/permissions.js.map +1 -0
  96. package/dist/pages/iam/role-detail-layout.d.ts +12 -0
  97. package/dist/pages/iam/role-detail-layout.js +145 -0
  98. package/dist/pages/iam/role-detail-layout.js.map +1 -0
  99. package/dist/pages/iam/role-detail.d.ts +12 -0
  100. package/dist/pages/iam/role-detail.js +241 -0
  101. package/dist/pages/iam/role-detail.js.map +1 -0
  102. package/dist/pages/iam/role-permissions.d.ts +12 -0
  103. package/dist/pages/iam/role-permissions.js +409 -0
  104. package/dist/pages/iam/role-permissions.js.map +1 -0
  105. package/dist/pages/iam/role-users.d.ts +12 -0
  106. package/dist/pages/iam/role-users.js +825 -0
  107. package/dist/pages/iam/role-users.js.map +1 -0
  108. package/dist/pages/iam/roles.d.ts +5 -0
  109. package/dist/pages/iam/roles.js +684 -0
  110. package/dist/pages/iam/roles.js.map +1 -0
  111. package/dist/pages/iam/sessions.d.ts +5 -0
  112. package/dist/pages/iam/sessions.js +315 -0
  113. package/dist/pages/iam/sessions.js.map +1 -0
  114. package/dist/pages/iam/tenant-detail.d.ts +10 -0
  115. package/dist/pages/iam/tenant-detail.js +186 -0
  116. package/dist/pages/iam/tenant-detail.js.map +1 -0
  117. package/dist/pages/iam/tenants.d.ts +5 -0
  118. package/dist/pages/iam/tenants.js +610 -0
  119. package/dist/pages/iam/tenants.js.map +1 -0
  120. package/dist/pages/iam/user-activity.d.ts +10 -0
  121. package/dist/pages/iam/user-activity.js +850 -0
  122. package/dist/pages/iam/user-activity.js.map +1 -0
  123. package/dist/pages/iam/user-detail-layout.d.ts +12 -0
  124. package/dist/pages/iam/user-detail-layout.js +106 -0
  125. package/dist/pages/iam/user-detail-layout.js.map +1 -0
  126. package/dist/pages/iam/user-detail.d.ts +10 -0
  127. package/dist/pages/iam/user-detail.js +102 -0
  128. package/dist/pages/iam/user-detail.js.map +1 -0
  129. package/dist/pages/iam/users.d.ts +5 -0
  130. package/dist/pages/iam/users.js +1275 -0
  131. package/dist/pages/iam/users.js.map +1 -0
  132. package/dist/pages/profile/account.d.ts +5 -0
  133. package/dist/pages/profile/account.js +182 -0
  134. package/dist/pages/profile/account.js.map +1 -0
  135. package/dist/pages/profile/layout.d.ts +8 -0
  136. package/dist/pages/profile/layout.js +133 -0
  137. package/dist/pages/profile/layout.js.map +1 -0
  138. package/dist/pages/profile/security.d.ts +5 -0
  139. package/dist/pages/profile/security.js +1539 -0
  140. package/dist/pages/profile/security.js.map +1 -0
  141. package/dist/{types-vcfvnAzQ.d.ts → types-g9QcNRxT.d.ts} +13 -7
  142. package/package.json +102 -3
@@ -1,14 +1,7 @@
1
1
  "use client";
2
2
 
3
- // src/components/profile/change-email-form.tsx
4
- import {
5
- Button as Button4,
6
- Collapsible,
7
- CollapsibleContent,
8
- CollapsibleTrigger
9
- } from "@mesob/ui/components";
10
- import { IconChevronDown } from "@tabler/icons-react";
11
- import { useState as useState5 } from "react";
3
+ // src/components/profile/security.tsx
4
+ import { Badge, Card, CardContent, Separator } from "@mesob/ui/components";
12
5
 
13
6
  // src/provider.tsx
14
7
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
@@ -80,6 +73,16 @@ function useConfig() {
80
73
  return context;
81
74
  }
82
75
 
76
+ // src/components/profile/change-email-form.tsx
77
+ import {
78
+ Button as Button3,
79
+ Collapsible,
80
+ CollapsibleContent,
81
+ CollapsibleTrigger
82
+ } from "@mesob/ui/components";
83
+ import { IconChevronDown } from "@tabler/icons-react";
84
+ import { useState as useState5 } from "react";
85
+
83
86
  // src/components/profile/request-change-email-form.tsx
84
87
  import { zodResolver } from "@hookform/resolvers/zod";
85
88
  import { Button, Input, Label, Spinner } from "@mesob/ui/components";
@@ -342,7 +345,7 @@ import {
342
345
  // src/components/auth/verification-form.tsx
343
346
  import { zodResolver as zodResolver2 } from "@hookform/resolvers/zod";
344
347
  import {
345
- Button as Button3,
348
+ Button as Button2,
346
349
  Form,
347
350
  FormControl,
348
351
  FormField,
@@ -351,8 +354,7 @@ import {
351
354
  FormMessage,
352
355
  InputOTP,
353
356
  InputOTPGroup,
354
- InputOTPSlot,
355
- Spinner as Spinner3
357
+ InputOTPSlot
356
358
  } from "@mesob/ui/components";
357
359
  import { useForm as useForm2 } from "react-hook-form";
358
360
  import { z as z2 } from "zod";
@@ -372,7 +374,7 @@ function useTranslator(namespace) {
372
374
  }
373
375
 
374
376
  // src/components/auth/countdown.tsx
375
- import { Button as Button2, Spinner as Spinner2 } from "@mesob/ui/components";
377
+ import { Spinner as Spinner2 } from "@mesob/ui/components";
376
378
  import { useEffect as useEffect2, useState as useState3 } from "react";
377
379
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
378
380
  var Countdown = ({
@@ -408,17 +410,19 @@ var Countdown = ({
408
410
  setIsResending(false);
409
411
  }
410
412
  };
413
+ const busy = isResending || resending;
411
414
  if (seconds > 0) {
412
- return /* @__PURE__ */ jsx3(Button2, { variant: "ghost", disabled: true, children: t("resendIn", { seconds }) });
415
+ return /* @__PURE__ */ jsx3("p", { className: "text-sm text-muted-foreground", children: t("resendIn", { seconds }) });
413
416
  }
414
417
  return /* @__PURE__ */ jsxs2(
415
- Button2,
418
+ "button",
416
419
  {
417
- variant: "ghost",
420
+ type: "button",
418
421
  onClick: handleResend,
419
- disabled: isResending || resending,
422
+ disabled: busy,
423
+ className: "text-sm text-primary hover:underline disabled:opacity-50 flex items-center gap-1",
420
424
  children: [
421
- isResending || resending && /* @__PURE__ */ jsx3(Spinner2, {}),
425
+ busy && /* @__PURE__ */ jsx3(Spinner2, { className: "h-3 w-3" }),
422
426
  t("resend")
423
427
  ]
424
428
  }
@@ -438,13 +442,12 @@ var VerificationForm = ({
438
442
  const t = useTranslator("Auth.verification");
439
443
  const form = useForm2({
440
444
  resolver: zodResolver2(verificationSchema(t)),
441
- defaultValues: {
442
- code: ""
443
- }
445
+ defaultValues: { code: "" }
444
446
  });
445
447
  const handleSubmit = form.handleSubmit(async (values) => {
446
448
  await onSubmit(values);
447
449
  });
450
+ const codeLength = form.watch("code").length;
448
451
  return /* @__PURE__ */ jsx4(Form, { ...form, children: /* @__PURE__ */ jsxs3(
449
452
  "form",
450
453
  {
@@ -482,21 +485,18 @@ var VerificationForm = ({
482
485
  ] })
483
486
  }
484
487
  ),
485
- /* @__PURE__ */ jsxs3("div", { className: "flex justify-between items-center", children: [
486
- /* @__PURE__ */ jsx4(Countdown, { onResend, resending: isLoading }),
487
- /* @__PURE__ */ jsxs3(
488
- Button3,
489
- {
490
- type: "submit",
491
- form: "verification-form",
492
- disabled: isLoading || form.watch("code").length !== 6,
493
- children: [
494
- isLoading && /* @__PURE__ */ jsx4(Spinner3, {}),
495
- t("form.confirm")
496
- ]
497
- }
498
- )
499
- ] })
488
+ /* @__PURE__ */ jsx4(
489
+ Button2,
490
+ {
491
+ type: "submit",
492
+ form: "verification-form",
493
+ className: "w-full",
494
+ disabled: isLoading || codeLength !== 6,
495
+ loading: isLoading,
496
+ children: t("form.confirm")
497
+ }
498
+ ),
499
+ /* @__PURE__ */ jsx4("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx4(Countdown, { onResend, resending: isLoading }) })
500
500
  ]
501
501
  }
502
502
  ) });
@@ -700,7 +700,7 @@ function ChangeEmailForm() {
700
700
  CollapsibleTrigger,
701
701
  {
702
702
  render: /* @__PURE__ */ jsx7(
703
- Button4,
703
+ Button3,
704
704
  {
705
705
  variant: "ghost",
706
706
  className: "w-full justify-between p-4 h-auto"
@@ -742,13 +742,13 @@ function ChangeEmailForm() {
742
742
  // src/components/profile/change-password-form.tsx
743
743
  import { zodResolver as zodResolver3 } from "@hookform/resolvers/zod";
744
744
  import {
745
- Button as Button5,
745
+ Button as Button4,
746
746
  Collapsible as Collapsible2,
747
747
  CollapsibleContent as CollapsibleContent2,
748
748
  CollapsibleTrigger as CollapsibleTrigger2,
749
749
  Input as Input2,
750
750
  Label as Label2,
751
- Spinner as Spinner4
751
+ Spinner as Spinner3
752
752
  } from "@mesob/ui/components";
753
753
  import { IconChevronDown as IconChevronDown2, IconEye as IconEye2, IconEyeOff as IconEyeOff2 } from "@tabler/icons-react";
754
754
  import { useState as useState6 } from "react";
@@ -844,7 +844,7 @@ function ChangePasswordForm() {
844
844
  CollapsibleTrigger2,
845
845
  {
846
846
  render: /* @__PURE__ */ jsx8(
847
- Button5,
847
+ Button4,
848
848
  {
849
849
  variant: "ghost",
850
850
  className: "w-full justify-between p-4 h-auto"
@@ -947,7 +947,7 @@ function ChangePasswordForm() {
947
947
  ] }),
948
948
  /* @__PURE__ */ jsxs6("div", { className: "flex justify-end gap-2", children: [
949
949
  /* @__PURE__ */ jsx8(
950
- Button5,
950
+ Button4,
951
951
  {
952
952
  type: "button",
953
953
  variant: "outline",
@@ -959,8 +959,8 @@ function ChangePasswordForm() {
959
959
  children: "Cancel"
960
960
  }
961
961
  ),
962
- /* @__PURE__ */ jsxs6(Button5, { type: "submit", disabled: isSubmitting, children: [
963
- isSubmitting && /* @__PURE__ */ jsx8(Spinner4, { className: "mr-2 h-4 w-4" }),
962
+ /* @__PURE__ */ jsxs6(Button4, { type: "submit", disabled: isSubmitting, children: [
963
+ isSubmitting && /* @__PURE__ */ jsx8(Spinner3, { className: "mr-2 h-4 w-4" }),
964
964
  "Change Password"
965
965
  ] })
966
966
  ] })
@@ -972,7 +972,7 @@ function ChangePasswordForm() {
972
972
 
973
973
  // src/components/profile/change-phone-form.tsx
974
974
  import {
975
- Button as Button7,
975
+ Button as Button6,
976
976
  Collapsible as Collapsible3,
977
977
  CollapsibleContent as CollapsibleContent3,
978
978
  CollapsibleTrigger as CollapsibleTrigger3
@@ -982,7 +982,7 @@ import { useState as useState9 } from "react";
982
982
 
983
983
  // src/components/profile/request-change-phone-form.tsx
984
984
  import { zodResolver as zodResolver4 } from "@hookform/resolvers/zod";
985
- import { Button as Button6, Input as Input3, Label as Label3, Spinner as Spinner5 } from "@mesob/ui/components";
985
+ import { Button as Button5, Input as Input3, Label as Label3, Spinner as Spinner4 } from "@mesob/ui/components";
986
986
  import { IconEye as IconEye3, IconEyeOff as IconEyeOff3 } from "@tabler/icons-react";
987
987
  import { useEffect as useEffect3, useState as useState7 } from "react";
988
988
  import { useForm as useForm4 } from "react-hook-form";
@@ -1240,7 +1240,7 @@ function RequestChangePhoneForm({
1240
1240
  ] }),
1241
1241
  /* @__PURE__ */ jsxs7("div", { className: "flex justify-end gap-2", children: [
1242
1242
  /* @__PURE__ */ jsx9(
1243
- Button6,
1243
+ Button5,
1244
1244
  {
1245
1245
  type: "button",
1246
1246
  variant: "outline",
@@ -1249,8 +1249,8 @@ function RequestChangePhoneForm({
1249
1249
  children: "Cancel"
1250
1250
  }
1251
1251
  ),
1252
- /* @__PURE__ */ jsxs7(Button6, { type: "submit", disabled: isLoading, children: [
1253
- isLoading && /* @__PURE__ */ jsx9(Spinner5, { className: "mr-2 h-4 w-4" }),
1252
+ /* @__PURE__ */ jsxs7(Button5, { type: "submit", disabled: isLoading, children: [
1253
+ isLoading && /* @__PURE__ */ jsx9(Spinner4, { className: "mr-2 h-4 w-4" }),
1254
1254
  isChecking ? "Checking\u2026" : buttonText
1255
1255
  ] })
1256
1256
  ] })
@@ -1423,7 +1423,7 @@ function ChangePhoneForm() {
1423
1423
  CollapsibleTrigger3,
1424
1424
  {
1425
1425
  render: /* @__PURE__ */ jsx11(
1426
- Button7,
1426
+ Button6,
1427
1427
  {
1428
1428
  variant: "ghost",
1429
1429
  className: "w-full justify-between p-4 h-auto"
@@ -1465,15 +1465,46 @@ function ChangePhoneForm() {
1465
1465
  // src/components/profile/security.tsx
1466
1466
  import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
1467
1467
  function Security() {
1468
- return /* @__PURE__ */ jsxs9("div", { className: "p-6 space-y-6", children: [
1469
- /* @__PURE__ */ jsxs9("div", { children: [
1470
- /* @__PURE__ */ jsx12("h1", { className: "text-2xl font-semibold", children: "Security" }),
1471
- /* @__PURE__ */ jsx12("p", { className: "text-muted-foreground", children: "Manage your security settings" })
1468
+ const { user } = useSession();
1469
+ return /* @__PURE__ */ jsxs9("div", { className: "mx-auto flex w-full max-w-6xl flex-col gap-6", children: [
1470
+ /* @__PURE__ */ jsxs9("div", { className: "relative overflow-hidden rounded-[2rem] border border-border/60 bg-gradient-to-br from-background via-background to-amber-500/5 p-6 shadow-sm", children: [
1471
+ /* @__PURE__ */ jsx12("div", { className: "absolute left-0 top-0 h-32 w-32 rounded-full bg-primary/10 blur-3xl" }),
1472
+ /* @__PURE__ */ jsxs9("div", { className: "relative flex flex-col gap-4", children: [
1473
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-wrap gap-2", children: [
1474
+ /* @__PURE__ */ jsx12(Badge, { variant: "outline", children: "Security center" }),
1475
+ /* @__PURE__ */ jsx12(Badge, { variant: "secondary", children: user?.emailVerified || user?.phoneVerified ? "Recovery methods available" : "Add a recovery method" })
1476
+ ] }),
1477
+ /* @__PURE__ */ jsxs9("div", { className: "space-y-2", children: [
1478
+ /* @__PURE__ */ jsx12("h1", { className: "text-2xl font-semibold tracking-tight", children: "Security" }),
1479
+ /* @__PURE__ */ jsx12("p", { className: "max-w-2xl text-sm text-muted-foreground", children: "Password, email, and phone updates all live here. Keep recovery channels current so account recovery stays predictable." })
1480
+ ] })
1481
+ ] })
1472
1482
  ] }),
1473
- /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
1474
- /* @__PURE__ */ jsx12(ChangePasswordForm, {}),
1475
- /* @__PURE__ */ jsx12(ChangeEmailForm, {}),
1476
- /* @__PURE__ */ jsx12(ChangePhoneForm, {})
1483
+ /* @__PURE__ */ jsxs9("div", { className: "grid gap-4 lg:grid-cols-[0.85fr_1.4fr]", children: [
1484
+ /* @__PURE__ */ jsx12(Card, { className: "rounded-[1.75rem] border-border/60 shadow-sm", children: /* @__PURE__ */ jsxs9(CardContent, { className: "space-y-5 p-6", children: [
1485
+ /* @__PURE__ */ jsxs9("div", { className: "space-y-1", children: [
1486
+ /* @__PURE__ */ jsx12("div", { className: "text-sm font-medium text-muted-foreground", children: "Verification state" }),
1487
+ /* @__PURE__ */ jsx12("div", { className: "text-lg font-semibold", children: "Recovery readiness" })
1488
+ ] }),
1489
+ /* @__PURE__ */ jsx12(Separator, {}),
1490
+ /* @__PURE__ */ jsxs9("div", { className: "space-y-3", children: [
1491
+ /* @__PURE__ */ jsxs9("div", { className: "rounded-2xl border border-border/60 bg-muted/20 p-4", children: [
1492
+ /* @__PURE__ */ jsx12("div", { className: "text-sm font-medium", children: "Email" }),
1493
+ /* @__PURE__ */ jsx12("div", { className: "mt-1 text-sm text-muted-foreground", children: user?.email ?? "No email added" }),
1494
+ /* @__PURE__ */ jsx12("div", { className: "mt-3", children: /* @__PURE__ */ jsx12(Badge, { variant: "outline", children: user?.emailVerified ? "Verified" : "Unverified" }) })
1495
+ ] }),
1496
+ /* @__PURE__ */ jsxs9("div", { className: "rounded-2xl border border-border/60 bg-muted/20 p-4", children: [
1497
+ /* @__PURE__ */ jsx12("div", { className: "text-sm font-medium", children: "Phone" }),
1498
+ /* @__PURE__ */ jsx12("div", { className: "mt-1 text-sm text-muted-foreground", children: user?.phone ?? "No phone added" }),
1499
+ /* @__PURE__ */ jsx12("div", { className: "mt-3", children: /* @__PURE__ */ jsx12(Badge, { variant: "outline", children: user?.phoneVerified ? "Verified" : "Unverified" }) })
1500
+ ] })
1501
+ ] })
1502
+ ] }) }),
1503
+ /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
1504
+ /* @__PURE__ */ jsx12(ChangePasswordForm, {}),
1505
+ /* @__PURE__ */ jsx12(ChangeEmailForm, {}),
1506
+ /* @__PURE__ */ jsx12(ChangePhoneForm, {})
1507
+ ] })
1477
1508
  ] })
1478
1509
  ] });
1479
1510
  }