@dragonmastery/dragoncore-vue 0.0.30 → 0.0.31

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 (119) hide show
  1. package/dist/{ConsentFlowStep-DsVhXa91.js → ConsentRequired-Bhkxu0rv.js} +119 -11
  2. package/dist/ConsentRequired-Bhkxu0rv.js.map +1 -0
  3. package/dist/{CreateTeamForm-5V_ks5Ie.js → CreateTeamForm-BHgTTHAk.js} +2 -2
  4. package/dist/{CreateTeamForm-B7MsOsiV.js → CreateTeamForm-bpLbK18g.js} +2 -2
  5. package/dist/{CreateTeamForm-B7MsOsiV.js.map → CreateTeamForm-bpLbK18g.js.map} +1 -1
  6. package/dist/{CreateUserPage-DNi45YF4.js → CreateUserPage-C9uOeYDJ.js} +1 -1
  7. package/dist/{CreateUserPage-1WiLNGr_.js → CreateUserPage-CqKcY7_X.js} +1 -1
  8. package/dist/{CreateUserPage-1WiLNGr_.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
  9. package/dist/{CreditBalanceDashboard-CoIEyZWh.js → CreditBalanceDashboard-BEsOr0Rw.js} +2 -2
  10. package/dist/{CreditBalanceDashboard-CoIEyZWh.js.map → CreditBalanceDashboard-BEsOr0Rw.js.map} +1 -1
  11. package/dist/{CreditBalanceDashboard-D_TsFlTp.js → CreditBalanceDashboard-DZQqekKa.js} +4 -4
  12. package/dist/{CreditManagement-CdkqQM7F.js → CreditManagement-ByFH6IHV.js} +4 -4
  13. package/dist/{CreditManagement-CCyU_yja.js → CreditManagement-DiVSMbWZ.js} +2 -2
  14. package/dist/{CreditManagement-CCyU_yja.js.map → CreditManagement-DiVSMbWZ.js.map} +1 -1
  15. package/dist/{CreditTransactionHistory-UPg9uDNy.js → CreditTransactionHistory-mcacl2xG.js} +2 -2
  16. package/dist/{CreditTransactionHistory-UPg9uDNy.js.map → CreditTransactionHistory-mcacl2xG.js.map} +1 -1
  17. package/dist/{CustomerCreateSupportTicketForm-CiTTUqtW.js → CustomerCreateSupportTicketForm-CroUyX15.js} +3 -3
  18. package/dist/{CustomerCreateSupportTicketForm-DFH1JtlA.js → CustomerCreateSupportTicketForm-IefplMnK.js} +2 -2
  19. package/dist/{CustomerCreateSupportTicketForm-DFH1JtlA.js.map → CustomerCreateSupportTicketForm-IefplMnK.js.map} +1 -1
  20. package/dist/{CustomerSupportTicketDetailPage-DAwiE2t6.js → CustomerSupportTicketDetailPage-Dengb4Zx.js} +2 -2
  21. package/dist/{CustomerSupportTicketDetailPage-DAwiE2t6.js.map → CustomerSupportTicketDetailPage-Dengb4Zx.js.map} +1 -1
  22. package/dist/{CustomerSupportTicketList-CKZl8jxx.js → CustomerSupportTicketList-CpOaBgNr.js} +30 -30
  23. package/dist/{CustomerSupportTicketSuccess-BJO2xsQR.js → CustomerSupportTicketSuccess-BPUwEn4h.js} +3 -3
  24. package/dist/{CustomerSupportTicketSuccess-BEhFZgtn.js → CustomerSupportTicketSuccess-RQskseXP.js} +2 -2
  25. package/dist/{CustomerSupportTicketSuccess-BEhFZgtn.js.map → CustomerSupportTicketSuccess-RQskseXP.js.map} +1 -1
  26. package/dist/{DefaultReferralTeamPage-D3UIrIZK.js → DefaultReferralTeamPage-Be7-RI3s.js} +1 -1
  27. package/dist/{DefaultReferralTeamPage-D3UIrIZK.js.map → DefaultReferralTeamPage-Be7-RI3s.js.map} +1 -1
  28. package/dist/{EditTeamForm-Bf4rSgQg.js → EditTeamForm-KX2cNn24.js} +2 -2
  29. package/dist/{EditTeamForm-C1_-p3lZ.js → EditTeamForm-RBO99ocN.js} +2 -2
  30. package/dist/{EditTeamForm-C1_-p3lZ.js.map → EditTeamForm-RBO99ocN.js.map} +1 -1
  31. package/dist/{EditUserPage-CQgp-08o.js → EditUserPage-AcRFhChk.js} +1 -1
  32. package/dist/{EditUserPage-CwsO8naT.js → EditUserPage-DGuV8pzp.js} +1 -1
  33. package/dist/{EditUserPage-CwsO8naT.js.map → EditUserPage-DGuV8pzp.js.map} +1 -1
  34. package/dist/{ForgotPassword-Dd-E3_o1.js → ForgotPassword-DZ-d8rWX.js} +2 -2
  35. package/dist/{ForgotPassword-Dd-E3_o1.js.map → ForgotPassword-DZ-d8rWX.js.map} +1 -1
  36. package/dist/{ForgotPassword-BhmO5Lfd.js → ForgotPassword-LnjRUIY7.js} +1 -1
  37. package/dist/{LoginForm-CFADKiln.js → LoginForm-D-gfB2hS.js} +1 -1
  38. package/dist/{LoginForm-CSMHsZrq.js → LoginForm-DEgTB9RF.js} +2 -2
  39. package/dist/{LoginForm-CSMHsZrq.js.map → LoginForm-DEgTB9RF.js.map} +1 -1
  40. package/dist/{Logout-Bdktl4NZ.js → Logout-Bb2xe5BM.js} +2 -2
  41. package/dist/{Logout-Bdktl4NZ.js.map → Logout-Bb2xe5BM.js.map} +1 -1
  42. package/dist/{Logout-CmKJK14I.js → Logout-Ctq-a1GS.js} +1 -1
  43. package/dist/{MfaSetup-BtfQXhLn.js → MfaSetup-6E6apXWC.js} +2 -2
  44. package/dist/{MfaSetup-Bjc3v0hs.js → MfaSetup-m080C6iX.js} +3 -3
  45. package/dist/{MfaSetup-Bjc3v0hs.js.map → MfaSetup-m080C6iX.js.map} +1 -1
  46. package/dist/{MfaVerify-SUfSRf4m.js → MfaVerify-C95WB9v2.js} +2 -2
  47. package/dist/{MfaVerify-uJlPz8xg.js → MfaVerify-D8Ch-8hN.js} +3 -3
  48. package/dist/{MfaVerify-uJlPz8xg.js.map → MfaVerify-D8Ch-8hN.js.map} +1 -1
  49. package/dist/{ResetPassword-Dz2N3pH4.js → ResetPassword-9DFz-Qt3.js} +1 -1
  50. package/dist/{ResetPassword-CyizBRob.js → ResetPassword-DflPd8Qg.js} +2 -2
  51. package/dist/{ResetPassword-CyizBRob.js.map → ResetPassword-DflPd8Qg.js.map} +1 -1
  52. package/dist/{SavedFiltersPage-Cz01ZeHx.js → SavedFiltersPage-ey8wOr0T.js} +31 -31
  53. package/dist/{SavedFiltersPage-Cz01ZeHx.js.map → SavedFiltersPage-ey8wOr0T.js.map} +1 -1
  54. package/dist/Signup-C052ykf5.js +9 -0
  55. package/dist/{Signup-CkhRQErA.js → Signup-KuiKHB4h.js} +22 -30
  56. package/dist/Signup-KuiKHB4h.js.map +1 -0
  57. package/dist/{SignupRequirementsPage-33z--rhH.js → SignupRequirementsPage-CwnsnQKb.js} +1 -1
  58. package/dist/{SignupRequirementsPage-33z--rhH.js.map → SignupRequirementsPage-CwnsnQKb.js.map} +1 -1
  59. package/dist/{StaffCreateSupportTicketForm-BtR-Aowv.js → StaffCreateSupportTicketForm-75Bo0jdz.js} +2 -2
  60. package/dist/{StaffCreateSupportTicketForm-BtR-Aowv.js.map → StaffCreateSupportTicketForm-75Bo0jdz.js.map} +1 -1
  61. package/dist/{StaffCreateSupportTicketForm-D7ctCaXe.js → StaffCreateSupportTicketForm-DYEddYii.js} +3 -3
  62. package/dist/{StaffSupportTicketDetailPage-LqnNfU34.js → StaffSupportTicketDetailPage-6VyPNdw7.js} +2 -2
  63. package/dist/{StaffSupportTicketDetailPage-LqnNfU34.js.map → StaffSupportTicketDetailPage-6VyPNdw7.js.map} +1 -1
  64. package/dist/{StaffSupportTicketList-GyzlONKe.js → StaffSupportTicketList-CxV6u2gF.js} +30 -30
  65. package/dist/{StaffSupportTicketSuccess-B3N-RMoT.js → StaffSupportTicketSuccess-BYoBXx1i.js} +2 -2
  66. package/dist/{StaffSupportTicketSuccess-B3N-RMoT.js.map → StaffSupportTicketSuccess-BYoBXx1i.js.map} +1 -1
  67. package/dist/{StaffSupportTicketSuccess-DvonYilY.js → StaffSupportTicketSuccess-FfnJXc_k.js} +3 -3
  68. package/dist/{SupportStaffPage-geoITTqt.js → SupportStaffPage-CLxWU628.js} +1 -1
  69. package/dist/{SupportStaffPage-geoITTqt.js.map → SupportStaffPage-CLxWU628.js.map} +1 -1
  70. package/dist/{SupportTicketMaintenancePage-CEKi8xQB.js → SupportTicketMaintenancePage-B07avInx.js} +1 -1
  71. package/dist/{SupportTicketMaintenancePage-CEKi8xQB.js.map → SupportTicketMaintenancePage-B07avInx.js.map} +1 -1
  72. package/dist/{TeamAttachmentsTab-ChP4DaUP.js → TeamAttachmentsTab-D0DOmdnr.js} +30 -30
  73. package/dist/{TeamList-_SsqJicG.js → TeamList-DXQj_Omo.js} +2 -2
  74. package/dist/{TeamList-_SsqJicG.js.map → TeamList-DXQj_Omo.js.map} +1 -1
  75. package/dist/{TeamList-cp8Pa2xg.js → TeamList-hmP44hfw.js} +2 -2
  76. package/dist/{TeamParent-BUnqP-dr.js → TeamParent-6JhqsYaO.js} +2 -2
  77. package/dist/{TeamParent-BUnqP-dr.js.map → TeamParent-6JhqsYaO.js.map} +1 -1
  78. package/dist/{TeamParent-BseZ6Zoi.js → TeamParent-BI9ItLoY.js} +2 -2
  79. package/dist/{TimelineNoteInput-BBZv3X4p.js → TimelineNoteInput-P3ycD18j.js} +1 -1
  80. package/dist/{TimelineNoteInput-BBZv3X4p.js.map → TimelineNoteInput-P3ycD18j.js.map} +1 -1
  81. package/dist/UserListPage-9jhUu3TH.js +5 -0
  82. package/dist/{UserListPage-CDMSZpXK.js → UserListPage-DelzxCID.js} +1 -1
  83. package/dist/{UserListPage-CDMSZpXK.js.map → UserListPage-DelzxCID.js.map} +1 -1
  84. package/dist/{VerifyEmail-CWUhRA1o.js → VerifyEmail-Cy2s4yP0.js} +3 -3
  85. package/dist/{VerifyEmail-CWUhRA1o.js.map → VerifyEmail-Cy2s4yP0.js.map} +1 -1
  86. package/dist/{VerifyEmail-CLDngljq.js → VerifyEmail-DBKMZJMx.js} +2 -2
  87. package/dist/{ViewTeam-ttqX2In8.js → ViewTeam-ByZdYEJG.js} +2 -2
  88. package/dist/{ViewTeam-ttqX2In8.js.map → ViewTeam-ByZdYEJG.js.map} +1 -1
  89. package/dist/{ViewTeam-rLNxVgS2.js → ViewTeam-DEOe7wqT.js} +2 -2
  90. package/dist/{customerSupportTicketRoutes-C-DKBy5g.js → customerSupportTicketRoutes-DvfXGaSC.js} +6 -6
  91. package/dist/{customerSupportTicketRoutes-C-DKBy5g.js.map → customerSupportTicketRoutes-DvfXGaSC.js.map} +1 -1
  92. package/dist/index.d.ts +889 -894
  93. package/dist/index.js +31 -32
  94. package/dist/{mfaSchema-C6PatIbY.js → mfaSchema-Ukqzdyck.js} +1 -1
  95. package/dist/{mfaSchema-C6PatIbY.js.map → mfaSchema-Ukqzdyck.js.map} +1 -1
  96. package/dist/{saved_filter-C2N9l_a9.js → saved_filter-erjEgsdK.js} +2 -2
  97. package/dist/{saved_filter-C2N9l_a9.js.map → saved_filter-erjEgsdK.js.map} +1 -1
  98. package/dist/{src-C8B9TJiH.js → src-DSF_hIBe.js} +23 -56
  99. package/dist/src-DSF_hIBe.js.map +1 -0
  100. package/dist/{staffSupportTicketRoutes-CyMecWpC.js → staffSupportTicketRoutes-73ceKhL-.js} +6 -6
  101. package/dist/{staffSupportTicketRoutes-CyMecWpC.js.map → staffSupportTicketRoutes-73ceKhL-.js.map} +1 -1
  102. package/dist/{teamRoutes-CFDsHPkd.js → teamRoutes-CSBq1DNq.js} +7 -7
  103. package/dist/{teamRoutes-CFDsHPkd.js.map → teamRoutes-CSBq1DNq.js.map} +1 -1
  104. package/dist/{useEmailVerificationChannel-QuMSgzzM.js → useEmailVerificationChannel-C76Gnyi1.js} +2 -2
  105. package/dist/{useEmailVerificationChannel-QuMSgzzM.js.map → useEmailVerificationChannel-C76Gnyi1.js.map} +1 -1
  106. package/dist/{useReturnUrl-B5V3SJf5.js → useReturnUrl-DnezAxBA.js} +2 -10
  107. package/dist/{useReturnUrl-B5V3SJf5.js.map → useReturnUrl-DnezAxBA.js.map} +1 -1
  108. package/package.json +2 -2
  109. package/dist/ConsentFlowStep-DsVhXa91.js.map +0 -1
  110. package/dist/ConsentRequired-B3eLxJgx.js +0 -114
  111. package/dist/ConsentRequired-B3eLxJgx.js.map +0 -1
  112. package/dist/Signup-CkhRQErA.js.map +0 -1
  113. package/dist/Signup-cOvXCtJj.js +0 -9
  114. package/dist/SignupConsentFlow-CKMFsnf5.js +0 -223
  115. package/dist/SignupConsentFlow-CKMFsnf5.js.map +0 -1
  116. package/dist/UserListPage-BABli3QG.js +0 -5
  117. package/dist/signupConsentStorage-pWSoHuhO.js +0 -35
  118. package/dist/signupConsentStorage-pWSoHuhO.js.map +0 -1
  119. package/dist/src-C8B9TJiH.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { o as createLastUsedPresetGuard } from "./saved_filter-C2N9l_a9.js";
1
+ import { o as createLastUsedPresetGuard } from "./saved_filter-erjEgsdK.js";
2
2
  import { c as userAuthenticated, s as staffOnly } from "./userAuthorized-3RiCDXxr.js";
3
3
 
4
4
  //#region src/slices/support_ticket/staff/staffSupportTicketRoutes.ts
@@ -60,7 +60,7 @@ const staffSupportTicketRoutes = [{
60
60
  {
61
61
  path: staffSupportPaths.staff_list.path,
62
62
  name: staffSupportPaths.staff_list.name,
63
- component: () => import("./StaffSupportTicketList-GyzlONKe.js"),
63
+ component: () => import("./StaffSupportTicketList-CxV6u2gF.js"),
64
64
  beforeEnter: (to) => staffListPresetGuard(to),
65
65
  meta: {
66
66
  title: "Manage Support",
@@ -74,7 +74,7 @@ const staffSupportTicketRoutes = [{
74
74
  {
75
75
  path: staffSupportPaths.staff_create.path,
76
76
  name: staffSupportPaths.staff_create.name,
77
- component: () => import("./StaffCreateSupportTicketForm-D7ctCaXe.js"),
77
+ component: () => import("./StaffCreateSupportTicketForm-DYEddYii.js"),
78
78
  meta: {
79
79
  title: "Create Support Ticket",
80
80
  description: "Create new support ticket item",
@@ -90,7 +90,7 @@ const staffSupportTicketRoutes = [{
90
90
  {
91
91
  path: staffSupportPaths.staff_create_success.path,
92
92
  name: staffSupportPaths.staff_create_success.name,
93
- component: () => import("./StaffSupportTicketSuccess-DvonYilY.js"),
93
+ component: () => import("./StaffSupportTicketSuccess-FfnJXc_k.js"),
94
94
  meta: {
95
95
  title: "Support Ticket Created",
96
96
  description: "Support ticket created successfully",
@@ -120,7 +120,7 @@ const staffSupportTicketRoutes = [{
120
120
  children: [{
121
121
  path: "",
122
122
  name: staffSupportPaths.staff_edit.name,
123
- component: () => import("./StaffSupportTicketDetailPage-LqnNfU34.js"),
123
+ component: () => import("./StaffSupportTicketDetailPage-6VyPNdw7.js"),
124
124
  meta: {
125
125
  title: "View Support Ticket",
126
126
  description: "View support ticket details"
@@ -132,4 +132,4 @@ const staffSupportTicketRoutes = [{
132
132
 
133
133
  //#endregion
134
134
  export { staffSupportTicketRoutes as n, staffSupportPaths as t };
135
- //# sourceMappingURL=staffSupportTicketRoutes-CyMecWpC.js.map
135
+ //# sourceMappingURL=staffSupportTicketRoutes-73ceKhL-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"staffSupportTicketRoutes-CyMecWpC.js","names":["staffSupportTicketRoutes: Array<ExtendedRouteRecordRaw>"],"sources":["../src/slices/support_ticket/staff/staffSupportTicketRoutes.ts"],"sourcesContent":["import { createLastUsedPresetGuard } from '../../../slices/saved_filter';\nimport { staffOnly, userAuthenticated } from '../../../middleware/userAuthorized';\nimport type { ExtendedRouteRecordRaw } from '../../../types/ExtendedRoute';\n\nconst staffListPresetGuard = createLastUsedPresetGuard('support_ticket_staff', 'StaffSupportTicketList');\n\nexport const staffSupportPaths = {\n staff_list: {\n path: '',\n full_path: '/staff/support',\n name: 'StaffSupportTicketList',\n },\n staff_create: {\n path: 'create',\n full_path: '/staff/support/create',\n name: 'StaffCreateSupportTicket',\n },\n staff_create_success: {\n path: 'create/success',\n full_path: '/staff/support/create/success',\n name: 'StaffSupportTicketSuccess',\n },\n staff_edit: {\n path: ':id',\n full_path: '/staff/support/:id',\n name: 'StaffEditSupportTicket',\n },\n staff_workflow: {\n path: 'workflow',\n full_path: '/staff/support/:id/workflow',\n name: 'StaffSupportTicketWorkflow',\n },\n staff_customer_notes: {\n path: 'customer-notes',\n full_path: '/staff/support/:id/customer-notes',\n name: 'StaffSupportTicketCustomerNotes',\n },\n staff_internal_notes: {\n path: 'internal-notes',\n full_path: '/staff/support/:id/internal-notes',\n name: 'StaffSupportTicketInternalNotes',\n },\n staff_history: {\n path: 'history',\n full_path: '/staff/support/:id/history',\n name: 'StaffSupportTicketHistory',\n },\n staff_attachments: {\n path: 'attachments',\n full_path: '/staff/support/:id/attachments',\n name: 'StaffSupportTicketAttachments',\n },\n} as const;\n\nexport const staffSupportTicketRoutes: Array<ExtendedRouteRecordRaw> = [\n {\n path: '/staff/support',\n name: 'StaffSupportTicket',\n redirect: { name: staffSupportPaths.staff_list.name },\n beforeEnter: [userAuthenticated, staffOnly],\n meta: {},\n children: [\n {\n path: staffSupportPaths.staff_list.path,\n name: staffSupportPaths.staff_list.name,\n component: () => import('./StaffSupportTicketList.vue'),\n beforeEnter: (to) => staffListPresetGuard(to),\n meta: {\n title: 'Manage Support',\n description: 'Admin support ticket management',\n side_bar: {\n section: ' Staff',\n visible_to: ['staff', 'super_admin'],\n },\n },\n },\n {\n path: staffSupportPaths.staff_create.path,\n name: staffSupportPaths.staff_create.name,\n component: () => import('./StaffCreateSupportTicketForm.vue'),\n meta: {\n title: 'Create Support Ticket',\n description: 'Create new support ticket item',\n breadcrumbs: [\n {\n label: 'Staff Support Ticket',\n to: { name: staffSupportPaths.staff_list.name },\n },\n {\n label: 'Create',\n to: { name: staffSupportPaths.staff_create.name },\n },\n ],\n },\n },\n {\n path: staffSupportPaths.staff_create_success.path,\n name: staffSupportPaths.staff_create_success.name,\n component: () => import('./StaffSupportTicketSuccess.vue'),\n meta: {\n title: 'Support Ticket Created',\n description: 'Support ticket created successfully',\n breadcrumbs: [\n {\n label: 'Staff Support Ticket',\n to: { name: staffSupportPaths.staff_list.name },\n },\n {\n label: 'Create',\n to: { name: staffSupportPaths.staff_create.name },\n },\n {\n label: 'Success',\n to: { name: staffSupportPaths.staff_create_success.name },\n },\n ],\n },\n },\n {\n path: staffSupportPaths.staff_edit.path,\n component: () => import('./StaffSupportTicketParent.vue'),\n meta: {\n title: 'View Support Ticket',\n description: 'View support ticket details',\n },\n children: [\n {\n path: '',\n name: staffSupportPaths.staff_edit.name,\n component: () => import('./StaffSupportTicketDetailPage.vue'),\n meta: {\n title: 'View Support Ticket',\n description: 'View support ticket details',\n },\n },\n ],\n },\n ],\n },\n];\n"],"mappings":";;;;AAIA,MAAM,uBAAuB,0BAA0B,wBAAwB,yBAAyB;AAExG,MAAa,oBAAoB;CAC/B,YAAY;EACV,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,cAAc;EACZ,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,YAAY;EACV,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,gBAAgB;EACd,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,eAAe;EACb,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,mBAAmB;EACjB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACF;AAED,MAAaA,2BAA0D,CACrE;CACE,MAAM;CACN,MAAM;CACN,UAAU,EAAE,MAAM,kBAAkB,WAAW,MAAM;CACrD,aAAa,CAAC,mBAAmB,UAAU;CAC3C,MAAM,EAAE;CACR,UAAU;EACR;GACE,MAAM,kBAAkB,WAAW;GACnC,MAAM,kBAAkB,WAAW;GACnC,iBAAiB,OAAO;GACxB,cAAc,OAAO,qBAAqB,GAAG;GAC7C,MAAM;IACJ,OAAO;IACP,aAAa;IACb,UAAU;KACR,SAAS;KACT,YAAY,CAAC,SAAS,cAAc;KACrC;IACF;GACF;EACD;GACE,MAAM,kBAAkB,aAAa;GACrC,MAAM,kBAAkB,aAAa;GACrC,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACb,aAAa,CACX;KACE,OAAO;KACP,IAAI,EAAE,MAAM,kBAAkB,WAAW,MAAM;KAChD,EACD;KACE,OAAO;KACP,IAAI,EAAE,MAAM,kBAAkB,aAAa,MAAM;KAClD,CACF;IACF;GACF;EACD;GACE,MAAM,kBAAkB,qBAAqB;GAC7C,MAAM,kBAAkB,qBAAqB;GAC7C,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACb,aAAa;KACX;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,WAAW,MAAM;MAChD;KACD;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,aAAa,MAAM;MAClD;KACD;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,qBAAqB,MAAM;MAC1D;KACF;IACF;GACF;EACD;GACE,MAAM,kBAAkB,WAAW;GACnC,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACd;GACD,UAAU,CACR;IACE,MAAM;IACN,MAAM,kBAAkB,WAAW;IACnC,iBAAiB,OAAO;IACxB,MAAM;KACJ,OAAO;KACP,aAAa;KACd;IACF,CACF;GACF;EACF;CACF,CACF"}
1
+ {"version":3,"file":"staffSupportTicketRoutes-73ceKhL-.js","names":["staffSupportTicketRoutes: Array<ExtendedRouteRecordRaw>"],"sources":["../src/slices/support_ticket/staff/staffSupportTicketRoutes.ts"],"sourcesContent":["import { createLastUsedPresetGuard } from '../../../slices/saved_filter';\nimport { staffOnly, userAuthenticated } from '../../../middleware/userAuthorized';\nimport type { ExtendedRouteRecordRaw } from '../../../types/ExtendedRoute';\n\nconst staffListPresetGuard = createLastUsedPresetGuard('support_ticket_staff', 'StaffSupportTicketList');\n\nexport const staffSupportPaths = {\n staff_list: {\n path: '',\n full_path: '/staff/support',\n name: 'StaffSupportTicketList',\n },\n staff_create: {\n path: 'create',\n full_path: '/staff/support/create',\n name: 'StaffCreateSupportTicket',\n },\n staff_create_success: {\n path: 'create/success',\n full_path: '/staff/support/create/success',\n name: 'StaffSupportTicketSuccess',\n },\n staff_edit: {\n path: ':id',\n full_path: '/staff/support/:id',\n name: 'StaffEditSupportTicket',\n },\n staff_workflow: {\n path: 'workflow',\n full_path: '/staff/support/:id/workflow',\n name: 'StaffSupportTicketWorkflow',\n },\n staff_customer_notes: {\n path: 'customer-notes',\n full_path: '/staff/support/:id/customer-notes',\n name: 'StaffSupportTicketCustomerNotes',\n },\n staff_internal_notes: {\n path: 'internal-notes',\n full_path: '/staff/support/:id/internal-notes',\n name: 'StaffSupportTicketInternalNotes',\n },\n staff_history: {\n path: 'history',\n full_path: '/staff/support/:id/history',\n name: 'StaffSupportTicketHistory',\n },\n staff_attachments: {\n path: 'attachments',\n full_path: '/staff/support/:id/attachments',\n name: 'StaffSupportTicketAttachments',\n },\n} as const;\n\nexport const staffSupportTicketRoutes: Array<ExtendedRouteRecordRaw> = [\n {\n path: '/staff/support',\n name: 'StaffSupportTicket',\n redirect: { name: staffSupportPaths.staff_list.name },\n beforeEnter: [userAuthenticated, staffOnly],\n meta: {},\n children: [\n {\n path: staffSupportPaths.staff_list.path,\n name: staffSupportPaths.staff_list.name,\n component: () => import('./StaffSupportTicketList.vue'),\n beforeEnter: (to) => staffListPresetGuard(to),\n meta: {\n title: 'Manage Support',\n description: 'Admin support ticket management',\n side_bar: {\n section: ' Staff',\n visible_to: ['staff', 'super_admin'],\n },\n },\n },\n {\n path: staffSupportPaths.staff_create.path,\n name: staffSupportPaths.staff_create.name,\n component: () => import('./StaffCreateSupportTicketForm.vue'),\n meta: {\n title: 'Create Support Ticket',\n description: 'Create new support ticket item',\n breadcrumbs: [\n {\n label: 'Staff Support Ticket',\n to: { name: staffSupportPaths.staff_list.name },\n },\n {\n label: 'Create',\n to: { name: staffSupportPaths.staff_create.name },\n },\n ],\n },\n },\n {\n path: staffSupportPaths.staff_create_success.path,\n name: staffSupportPaths.staff_create_success.name,\n component: () => import('./StaffSupportTicketSuccess.vue'),\n meta: {\n title: 'Support Ticket Created',\n description: 'Support ticket created successfully',\n breadcrumbs: [\n {\n label: 'Staff Support Ticket',\n to: { name: staffSupportPaths.staff_list.name },\n },\n {\n label: 'Create',\n to: { name: staffSupportPaths.staff_create.name },\n },\n {\n label: 'Success',\n to: { name: staffSupportPaths.staff_create_success.name },\n },\n ],\n },\n },\n {\n path: staffSupportPaths.staff_edit.path,\n component: () => import('./StaffSupportTicketParent.vue'),\n meta: {\n title: 'View Support Ticket',\n description: 'View support ticket details',\n },\n children: [\n {\n path: '',\n name: staffSupportPaths.staff_edit.name,\n component: () => import('./StaffSupportTicketDetailPage.vue'),\n meta: {\n title: 'View Support Ticket',\n description: 'View support ticket details',\n },\n },\n ],\n },\n ],\n },\n];\n"],"mappings":";;;;AAIA,MAAM,uBAAuB,0BAA0B,wBAAwB,yBAAyB;AAExG,MAAa,oBAAoB;CAC/B,YAAY;EACV,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,cAAc;EACZ,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,YAAY;EACV,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,gBAAgB;EACd,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,sBAAsB;EACpB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,eAAe;EACb,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,mBAAmB;EACjB,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACF;AAED,MAAaA,2BAA0D,CACrE;CACE,MAAM;CACN,MAAM;CACN,UAAU,EAAE,MAAM,kBAAkB,WAAW,MAAM;CACrD,aAAa,CAAC,mBAAmB,UAAU;CAC3C,MAAM,EAAE;CACR,UAAU;EACR;GACE,MAAM,kBAAkB,WAAW;GACnC,MAAM,kBAAkB,WAAW;GACnC,iBAAiB,OAAO;GACxB,cAAc,OAAO,qBAAqB,GAAG;GAC7C,MAAM;IACJ,OAAO;IACP,aAAa;IACb,UAAU;KACR,SAAS;KACT,YAAY,CAAC,SAAS,cAAc;KACrC;IACF;GACF;EACD;GACE,MAAM,kBAAkB,aAAa;GACrC,MAAM,kBAAkB,aAAa;GACrC,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACb,aAAa,CACX;KACE,OAAO;KACP,IAAI,EAAE,MAAM,kBAAkB,WAAW,MAAM;KAChD,EACD;KACE,OAAO;KACP,IAAI,EAAE,MAAM,kBAAkB,aAAa,MAAM;KAClD,CACF;IACF;GACF;EACD;GACE,MAAM,kBAAkB,qBAAqB;GAC7C,MAAM,kBAAkB,qBAAqB;GAC7C,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACb,aAAa;KACX;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,WAAW,MAAM;MAChD;KACD;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,aAAa,MAAM;MAClD;KACD;MACE,OAAO;MACP,IAAI,EAAE,MAAM,kBAAkB,qBAAqB,MAAM;MAC1D;KACF;IACF;GACF;EACD;GACE,MAAM,kBAAkB,WAAW;GACnC,iBAAiB,OAAO;GACxB,MAAM;IACJ,OAAO;IACP,aAAa;IACd;GACD,UAAU,CACR;IACE,MAAM;IACN,MAAM,kBAAkB,WAAW;IACnC,iBAAiB,OAAO;IACxB,MAAM;KACJ,OAAO;KACP,aAAa;KACd;IACF,CACF;GACF;EACF;CACF,CACF"}
@@ -54,7 +54,7 @@ const teamRoutes = [{
54
54
  {
55
55
  path: teamPaths.list.path,
56
56
  name: teamPaths.list.name,
57
- component: () => import("./TeamList-cp8Pa2xg.js"),
57
+ component: () => import("./TeamList-hmP44hfw.js"),
58
58
  meta: {
59
59
  title: "Teams",
60
60
  description: "Manage teams",
@@ -72,7 +72,7 @@ const teamRoutes = [{
72
72
  {
73
73
  path: teamPaths.create.path,
74
74
  name: teamPaths.create.name,
75
- component: () => import("./CreateTeamForm-5V_ks5Ie.js"),
75
+ component: () => import("./CreateTeamForm-BHgTTHAk.js"),
76
76
  meta: {
77
77
  title: "Create Team",
78
78
  description: "Create new team",
@@ -87,7 +87,7 @@ const teamRoutes = [{
87
87
  },
88
88
  {
89
89
  path: teamPaths.view.path,
90
- component: () => import("./TeamParent-BseZ6Zoi.js"),
90
+ component: () => import("./TeamParent-BI9ItLoY.js"),
91
91
  meta: { sectionTabs: [
92
92
  {
93
93
  id: "view",
@@ -124,7 +124,7 @@ const teamRoutes = [{
124
124
  {
125
125
  path: "",
126
126
  name: teamPaths.view.name,
127
- component: () => import("./ViewTeam-rLNxVgS2.js"),
127
+ component: () => import("./ViewTeam-DEOe7wqT.js"),
128
128
  meta: {
129
129
  title: "View Team",
130
130
  description: "View team details",
@@ -134,7 +134,7 @@ const teamRoutes = [{
134
134
  {
135
135
  path: teamPaths.edit.path,
136
136
  name: teamPaths.edit.name,
137
- component: () => import("./EditTeamForm-Bf4rSgQg.js"),
137
+ component: () => import("./EditTeamForm-KX2cNn24.js"),
138
138
  meta: {
139
139
  title: "Edit Team",
140
140
  description: "Edit team details",
@@ -154,7 +154,7 @@ const teamRoutes = [{
154
154
  {
155
155
  path: teamPaths.attachments.path,
156
156
  name: teamPaths.attachments.name,
157
- component: () => import("./TeamAttachmentsTab-ChP4DaUP.js"),
157
+ component: () => import("./TeamAttachmentsTab-D0DOmdnr.js"),
158
158
  meta: {
159
159
  title: "Team Attachments",
160
160
  description: "View and manage attachments",
@@ -189,4 +189,4 @@ const teamRoutes = [{
189
189
 
190
190
  //#endregion
191
191
  export { teamRoutes as n, teamPaths as t };
192
- //# sourceMappingURL=teamRoutes-CFDsHPkd.js.map
192
+ //# sourceMappingURL=teamRoutes-CSBq1DNq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"teamRoutes-CFDsHPkd.js","names":["teamRoutes: Array<ExtendedRouteRecordRaw>"],"sources":["../src/slices/team/teamRoutes.ts"],"sourcesContent":["import { userAuthenticated } from '../../middleware/userAuthorized';\nimport type { ExtendedRouteRecordRaw } from '../../types/ExtendedRoute';\nimport { teamMemberPaths, teamMemberRoutes } from './team_member/team_memberRoutes';\n\nexport const teamPaths = {\n list: {\n path: '',\n full_path: '/teams',\n name: 'TeamList',\n },\n create: {\n path: 'create',\n full_path: '/teams/create',\n name: 'CreateTeam',\n },\n view: {\n path: ':id',\n full_path: '/teams/:id',\n name: 'ViewTeam',\n },\n edit: {\n path: 'edit',\n full_path: '/teams/:id/edit',\n name: 'EditTeam',\n },\n notes: {\n path: 'notes',\n full_path: '/teams/:id/notes',\n name: 'TeamNotes',\n },\n attachments: {\n path: 'attachments',\n full_path: '/teams/:id/attachments',\n name: 'TeamAttachments',\n },\n history: {\n path: 'history',\n full_path: '/teams/:id/history',\n name: 'TeamHistory',\n },\n members: {\n path: 'members',\n full_path: '/teams/:id/members',\n name: 'TeamMembers',\n },\n} as const;\n\nexport const teamRoutes: Array<ExtendedRouteRecordRaw> = [\n {\n path: '/teams',\n name: 'Team',\n redirect: { name: teamPaths.list.name },\n beforeEnter: [userAuthenticated],\n meta: {},\n children: [\n {\n path: teamPaths.list.path,\n name: teamPaths.list.name,\n component: () => import('./TeamList.vue'),\n meta: {\n title: 'Teams',\n description: 'Manage teams',\n side_bar: {\n section: 'Teams',\n visible_to: ['consumer', 'lead', 'staff', 'super_admin'],\n },\n },\n },\n {\n path: teamPaths.create.path,\n name: teamPaths.create.name,\n component: () => import('./CreateTeamForm.vue'),\n meta: {\n title: 'Create Team',\n description: 'Create new team',\n breadcrumbs: [\n {\n label: 'Teams',\n to: { name: teamPaths.list.name },\n },\n {\n label: 'Create',\n to: { name: teamPaths.create.name },\n },\n ],\n },\n },\n {\n path: teamPaths.view.path,\n component: () => import('./TeamParent.vue'),\n meta: {\n // Define team detail tabs\n sectionTabs: [\n {\n id: 'view',\n label: 'View',\n to: { name: teamPaths.view.name },\n },\n {\n id: 'edit',\n label: 'Edit',\n to: { name: teamPaths.edit.name },\n },\n {\n id: 'notes',\n label: 'Notes',\n to: { name: teamPaths.notes.name },\n },\n {\n id: 'attachments',\n label: 'Attachments',\n to: { name: teamPaths.attachments.name },\n },\n {\n id: 'history',\n label: 'History',\n to: { name: teamPaths.history.name },\n },\n {\n id: 'members',\n label: 'Members',\n to: { name: teamMemberPaths.list.name },\n },\n ],\n },\n children: [\n {\n path: '',\n name: teamPaths.view.name,\n component: () => import('./ViewTeam.vue'),\n meta: {\n title: 'View Team',\n description: 'View team details',\n currentTab: 'view',\n },\n },\n {\n path: teamPaths.edit.path,\n name: teamPaths.edit.name,\n component: () => import('./EditTeamForm.vue'),\n meta: {\n title: 'Edit Team',\n description: 'Edit team details',\n currentTab: 'edit',\n },\n },\n {\n path: teamPaths.notes.path,\n name: teamPaths.notes.name,\n component: () => import('./TeamNotesTab.vue'),\n meta: {\n title: 'Team Notes',\n description: 'View and manage notes',\n currentTab: 'notes',\n },\n },\n {\n path: teamPaths.attachments.path,\n name: teamPaths.attachments.name,\n component: () => import('./TeamAttachmentsTab.vue'),\n meta: {\n title: 'Team Attachments',\n description: 'View and manage attachments',\n currentTab: 'attachments',\n },\n },\n {\n path: teamPaths.history.path,\n name: teamPaths.history.name,\n component: () => import('./TeamHistoryTab.vue'),\n meta: {\n title: 'Team History',\n description: 'View audit trail and changes',\n currentTab: 'history',\n },\n },\n {\n path: teamPaths.members.path,\n name: teamPaths.members.name,\n component: () => import('./TeamMembersTab.vue'),\n meta: {\n title: 'Team Members',\n description: 'View and manage team members',\n currentTab: 'members',\n },\n children: teamMemberRoutes,\n },\n ],\n },\n ],\n },\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"teamRoutes-CSBq1DNq.js","names":["teamRoutes: Array<ExtendedRouteRecordRaw>"],"sources":["../src/slices/team/teamRoutes.ts"],"sourcesContent":["import { userAuthenticated } from '../../middleware/userAuthorized';\nimport type { ExtendedRouteRecordRaw } from '../../types/ExtendedRoute';\nimport { teamMemberPaths, teamMemberRoutes } from './team_member/team_memberRoutes';\n\nexport const teamPaths = {\n list: {\n path: '',\n full_path: '/teams',\n name: 'TeamList',\n },\n create: {\n path: 'create',\n full_path: '/teams/create',\n name: 'CreateTeam',\n },\n view: {\n path: ':id',\n full_path: '/teams/:id',\n name: 'ViewTeam',\n },\n edit: {\n path: 'edit',\n full_path: '/teams/:id/edit',\n name: 'EditTeam',\n },\n notes: {\n path: 'notes',\n full_path: '/teams/:id/notes',\n name: 'TeamNotes',\n },\n attachments: {\n path: 'attachments',\n full_path: '/teams/:id/attachments',\n name: 'TeamAttachments',\n },\n history: {\n path: 'history',\n full_path: '/teams/:id/history',\n name: 'TeamHistory',\n },\n members: {\n path: 'members',\n full_path: '/teams/:id/members',\n name: 'TeamMembers',\n },\n} as const;\n\nexport const teamRoutes: Array<ExtendedRouteRecordRaw> = [\n {\n path: '/teams',\n name: 'Team',\n redirect: { name: teamPaths.list.name },\n beforeEnter: [userAuthenticated],\n meta: {},\n children: [\n {\n path: teamPaths.list.path,\n name: teamPaths.list.name,\n component: () => import('./TeamList.vue'),\n meta: {\n title: 'Teams',\n description: 'Manage teams',\n side_bar: {\n section: 'Teams',\n visible_to: ['consumer', 'lead', 'staff', 'super_admin'],\n },\n },\n },\n {\n path: teamPaths.create.path,\n name: teamPaths.create.name,\n component: () => import('./CreateTeamForm.vue'),\n meta: {\n title: 'Create Team',\n description: 'Create new team',\n breadcrumbs: [\n {\n label: 'Teams',\n to: { name: teamPaths.list.name },\n },\n {\n label: 'Create',\n to: { name: teamPaths.create.name },\n },\n ],\n },\n },\n {\n path: teamPaths.view.path,\n component: () => import('./TeamParent.vue'),\n meta: {\n // Define team detail tabs\n sectionTabs: [\n {\n id: 'view',\n label: 'View',\n to: { name: teamPaths.view.name },\n },\n {\n id: 'edit',\n label: 'Edit',\n to: { name: teamPaths.edit.name },\n },\n {\n id: 'notes',\n label: 'Notes',\n to: { name: teamPaths.notes.name },\n },\n {\n id: 'attachments',\n label: 'Attachments',\n to: { name: teamPaths.attachments.name },\n },\n {\n id: 'history',\n label: 'History',\n to: { name: teamPaths.history.name },\n },\n {\n id: 'members',\n label: 'Members',\n to: { name: teamMemberPaths.list.name },\n },\n ],\n },\n children: [\n {\n path: '',\n name: teamPaths.view.name,\n component: () => import('./ViewTeam.vue'),\n meta: {\n title: 'View Team',\n description: 'View team details',\n currentTab: 'view',\n },\n },\n {\n path: teamPaths.edit.path,\n name: teamPaths.edit.name,\n component: () => import('./EditTeamForm.vue'),\n meta: {\n title: 'Edit Team',\n description: 'Edit team details',\n currentTab: 'edit',\n },\n },\n {\n path: teamPaths.notes.path,\n name: teamPaths.notes.name,\n component: () => import('./TeamNotesTab.vue'),\n meta: {\n title: 'Team Notes',\n description: 'View and manage notes',\n currentTab: 'notes',\n },\n },\n {\n path: teamPaths.attachments.path,\n name: teamPaths.attachments.name,\n component: () => import('./TeamAttachmentsTab.vue'),\n meta: {\n title: 'Team Attachments',\n description: 'View and manage attachments',\n currentTab: 'attachments',\n },\n },\n {\n path: teamPaths.history.path,\n name: teamPaths.history.name,\n component: () => import('./TeamHistoryTab.vue'),\n meta: {\n title: 'Team History',\n description: 'View audit trail and changes',\n currentTab: 'history',\n },\n },\n {\n path: teamPaths.members.path,\n name: teamPaths.members.name,\n component: () => import('./TeamMembersTab.vue'),\n meta: {\n title: 'Team Members',\n description: 'View and manage team members',\n currentTab: 'members',\n },\n children: teamMemberRoutes,\n },\n ],\n },\n ],\n },\n];\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { o as useUserSessionStore } from "./useRpcAuth-CJtq1dqM.js";
2
- import { t as getAndClearEmailVerificationReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
2
+ import { t as getAndClearEmailVerificationReturnUrl } from "./useReturnUrl-DnezAxBA.js";
3
3
  import { onUnmounted, watch } from "vue";
4
4
 
5
5
  //#region src/slices/auth/useEmailVerificationChannel.ts
@@ -34,4 +34,4 @@ function useEmailVerificationChannel(awaitingVerification, onRedirect, getDefaul
34
34
 
35
35
  //#endregion
36
36
  export { useEmailVerificationChannel as t };
37
- //# sourceMappingURL=useEmailVerificationChannel-QuMSgzzM.js.map
37
+ //# sourceMappingURL=useEmailVerificationChannel-C76Gnyi1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEmailVerificationChannel-QuMSgzzM.js","names":["authChannel: BroadcastChannel | null"],"sources":["../src/slices/auth/useEmailVerificationChannel.ts"],"sourcesContent":["import { useUserSessionStore } from '../../composables/useUserSessionStore';\nimport { getAndClearEmailVerificationReturnUrl } from '../../utils/useReturnUrl';\nimport { onUnmounted, watch } from 'vue';\nimport type { Ref } from 'vue';\n\nconst AUTH_CHANNEL = 'auth';\n\n/**\n * Listens for cross-tab email verification completion via BroadcastChannel.\n * When the user verifies their email in another tab, refreshes the session so this tab\n * has the updated email_verified state, then redirects to the stored return URL.\n * Call this when the signup form is showing \"awaiting verification\" state.\n */\nexport function useEmailVerificationChannel(\n awaitingVerification: Ref<boolean>,\n onRedirect: (targetUrl: string) => void,\n getDefaultRedirect: () => string,\n) {\n const sessionStore = useUserSessionStore();\n let authChannel: BroadcastChannel | null = null;\n\n watch(\n awaitingVerification,\n (isAwaiting) => {\n authChannel?.close();\n authChannel = null;\n if (!isAwaiting) return;\n authChannel = new BroadcastChannel(AUTH_CHANNEL);\n authChannel.onmessage = (event: MessageEvent<{ type: string }>) => {\n if (event.data?.type === 'email_verified') {\n const targetUrl =\n getAndClearEmailVerificationReturnUrl() ?? getDefaultRedirect();\n // Sync from localStorage so this tab has email_verified: true before redirect.\n // Tab B already wrote the new tokens; we just need to read them.\n sessionStore.syncFromStorage();\n onRedirect(targetUrl);\n }\n };\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n authChannel?.close();\n authChannel = null;\n });\n}\n"],"mappings":";;;;;AAKA,MAAM,eAAe;;;;;;;AAQrB,SAAgB,4BACd,sBACA,YACA,oBACA;CACA,MAAM,eAAe,qBAAqB;CAC1C,IAAIA,cAAuC;AAE3C,OACE,uBACC,eAAe;AACd,eAAa,OAAO;AACpB,gBAAc;AACd,MAAI,CAAC,WAAY;AACjB,gBAAc,IAAI,iBAAiB,aAAa;AAChD,cAAY,aAAa,UAA0C;AACjE,OAAI,MAAM,MAAM,SAAS,kBAAkB;IACzC,MAAM,YACJ,uCAAuC,IAAI,oBAAoB;AAGjE,iBAAa,iBAAiB;AAC9B,eAAW,UAAU;;;IAI3B,EAAE,WAAW,MAAM,CACpB;AAED,mBAAkB;AAChB,eAAa,OAAO;AACpB,gBAAc;GACd"}
1
+ {"version":3,"file":"useEmailVerificationChannel-C76Gnyi1.js","names":["authChannel: BroadcastChannel | null"],"sources":["../src/slices/auth/useEmailVerificationChannel.ts"],"sourcesContent":["import { useUserSessionStore } from '../../composables/useUserSessionStore';\nimport { getAndClearEmailVerificationReturnUrl } from '../../utils/useReturnUrl';\nimport { onUnmounted, watch } from 'vue';\nimport type { Ref } from 'vue';\n\nconst AUTH_CHANNEL = 'auth';\n\n/**\n * Listens for cross-tab email verification completion via BroadcastChannel.\n * When the user verifies their email in another tab, refreshes the session so this tab\n * has the updated email_verified state, then redirects to the stored return URL.\n * Call this when the signup form is showing \"awaiting verification\" state.\n */\nexport function useEmailVerificationChannel(\n awaitingVerification: Ref<boolean>,\n onRedirect: (targetUrl: string) => void,\n getDefaultRedirect: () => string,\n) {\n const sessionStore = useUserSessionStore();\n let authChannel: BroadcastChannel | null = null;\n\n watch(\n awaitingVerification,\n (isAwaiting) => {\n authChannel?.close();\n authChannel = null;\n if (!isAwaiting) return;\n authChannel = new BroadcastChannel(AUTH_CHANNEL);\n authChannel.onmessage = (event: MessageEvent<{ type: string }>) => {\n if (event.data?.type === 'email_verified') {\n const targetUrl =\n getAndClearEmailVerificationReturnUrl() ?? getDefaultRedirect();\n // Sync from localStorage so this tab has email_verified: true before redirect.\n // Tab B already wrote the new tokens; we just need to read them.\n sessionStore.syncFromStorage();\n onRedirect(targetUrl);\n }\n };\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n authChannel?.close();\n authChannel = null;\n });\n}\n"],"mappings":";;;;;AAKA,MAAM,eAAe;;;;;;;AAQrB,SAAgB,4BACd,sBACA,YACA,oBACA;CACA,MAAM,eAAe,qBAAqB;CAC1C,IAAIA,cAAuC;AAE3C,OACE,uBACC,eAAe;AACd,eAAa,OAAO;AACpB,gBAAc;AACd,MAAI,CAAC,WAAY;AACjB,gBAAc,IAAI,iBAAiB,aAAa;AAChD,cAAY,aAAa,UAA0C;AACjE,OAAI,MAAM,MAAM,SAAS,kBAAkB;IACzC,MAAM,YACJ,uCAAuC,IAAI,oBAAoB;AAGjE,iBAAa,iBAAiB;AAC9B,eAAW,UAAU;;;IAI3B,EAAE,WAAW,MAAM,CACpB;AAED,mBAAkB;AAChB,eAAa,OAAO;AACpB,gBAAc;GACd"}
@@ -1,14 +1,6 @@
1
1
  //#region src/utils/useReturnUrl.ts
2
2
  /** Storage key for return URL when awaiting email verification from signup (strict mode). */
3
3
  const EMAIL_VERIFICATION_RETURN_URL_KEY = "dragoncore_email_verification_return_url";
4
- /**
5
- * Store return URL for post-verification redirect. Uses localStorage (not sessionStorage)
6
- * so the verification link opened in a new tab can access it.
7
- */
8
- function setEmailVerificationReturnUrl(url) {
9
- if (!url.startsWith("/") || url.startsWith("/auth/")) return;
10
- localStorage.setItem(EMAIL_VERIFICATION_RETURN_URL_KEY, url);
11
- }
12
4
  function getAndClearEmailVerificationReturnUrl() {
13
5
  const url = localStorage.getItem(EMAIL_VERIFICATION_RETURN_URL_KEY);
14
6
  localStorage.removeItem(EMAIL_VERIFICATION_RETURN_URL_KEY);
@@ -62,5 +54,5 @@ function withBackLink(path, backLink, backLinkLabel) {
62
54
  }
63
55
 
64
56
  //#endregion
65
- export { withBackLink as a, setEmailVerificationReturnUrl as i, getBackLinkFromRoute as n, withReturnUrl as o, getValidReturnUrl as r, getAndClearEmailVerificationReturnUrl as t };
66
- //# sourceMappingURL=useReturnUrl-B5V3SJf5.js.map
57
+ export { withReturnUrl as a, withBackLink as i, getBackLinkFromRoute as n, getValidReturnUrl as r, getAndClearEmailVerificationReturnUrl as t };
58
+ //# sourceMappingURL=useReturnUrl-DnezAxBA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useReturnUrl-B5V3SJf5.js","names":[],"sources":["../src/utils/useReturnUrl.ts"],"sourcesContent":["import type { RouteLocationNormalizedLoaded } from 'vue-router';\n\n/** Storage key for return URL when awaiting email verification from signup (strict mode). */\nexport const EMAIL_VERIFICATION_RETURN_URL_KEY = 'dragoncore_email_verification_return_url';\n\n/**\n * Store return URL for post-verification redirect. Uses localStorage (not sessionStorage)\n * so the verification link opened in a new tab can access it.\n */\nexport function setEmailVerificationReturnUrl(url: string): void {\n if (!url.startsWith('/') || url.startsWith('/auth/')) return;\n localStorage.setItem(EMAIL_VERIFICATION_RETURN_URL_KEY, url);\n}\n\nexport function getAndClearEmailVerificationReturnUrl(): string | null {\n const url = localStorage.getItem(EMAIL_VERIFICATION_RETURN_URL_KEY);\n localStorage.removeItem(EMAIL_VERIFICATION_RETURN_URL_KEY);\n return url && url.startsWith('/') && !url.startsWith('/auth/') ? url : null;\n}\n\n/**\n * Validates a return URL: must be a relative path starting with / and not /auth/\n * to avoid redirect loops and external URLs.\n */\nexport function getValidReturnUrl(\n route: RouteLocationNormalizedLoaded,\n defaultPath: string,\n): string {\n const returnUrl = route.query.returnUrl as string | undefined;\n if (!returnUrl) return defaultPath;\n if (returnUrl.startsWith('/') && !returnUrl.startsWith('/auth/')) {\n return returnUrl;\n }\n return defaultPath;\n}\n\n/**\n * Builds a path string with returnUrl preserved in query params.\n * Use when linking to login, logout, etc. from a page that has returnUrl.\n */\nexport function withReturnUrl(path: string, returnUrl: string | undefined): string {\n if (!returnUrl || !returnUrl.startsWith('/') || returnUrl.startsWith('/auth/')) {\n return path;\n }\n const sep = path.includes('?') ? '&' : '?';\n return `${path}${sep}returnUrl=${encodeURIComponent(returnUrl)}`;\n}\n\n/** Same validation as returnUrl: relative path, not /auth/ */\nfunction isValidBackLinkPath(path: string): boolean {\n return path.startsWith('/') && !path.startsWith('/auth/');\n}\n\n/**\n * Extracts a valid back link from route query params.\n * Supports backLink (path) and backLinkLabel (optional label).\n */\nexport function getBackLinkFromRoute(\n route: RouteLocationNormalizedLoaded,\n): { to: string; label?: string } | null {\n const path = route.query.backLink;\n const raw =\n typeof path === 'string' ? path : Array.isArray(path) ? path[0] ?? undefined : undefined;\n if (!raw || typeof raw !== 'string' || !isValidBackLinkPath(raw)) return null;\n const label = route.query.backLinkLabel;\n const labelStr =\n typeof label === 'string' ? label : Array.isArray(label) ? label[0] ?? undefined : undefined;\n return { to: raw, label: labelStr };\n}\n\n/**\n * Appends backLink (and optional backLinkLabel) to a path.\n * Use when linking to auth pages so the Auth layout shows a back link.\n */\nexport function withBackLink(\n path: string,\n backLink: string,\n backLinkLabel?: string,\n): string {\n if (!backLink || !isValidBackLinkPath(backLink)) return path;\n const sep = path.includes('?') ? '&' : '?';\n let result = `${path}${sep}backLink=${encodeURIComponent(backLink)}`;\n if (backLinkLabel) {\n result += `&backLinkLabel=${encodeURIComponent(backLinkLabel)}`;\n }\n return result;\n}\n"],"mappings":";;AAGA,MAAa,oCAAoC;;;;;AAMjD,SAAgB,8BAA8B,KAAmB;AAC/D,KAAI,CAAC,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,SAAS,CAAE;AACtD,cAAa,QAAQ,mCAAmC,IAAI;;AAG9D,SAAgB,wCAAuD;CACrE,MAAM,MAAM,aAAa,QAAQ,kCAAkC;AACnE,cAAa,WAAW,kCAAkC;AAC1D,QAAO,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,WAAW,SAAS,GAAG,MAAM;;;;;;AAOzE,SAAgB,kBACd,OACA,aACQ;CACR,MAAM,YAAY,MAAM,MAAM;AAC9B,KAAI,CAAC,UAAW,QAAO;AACvB,KAAI,UAAU,WAAW,IAAI,IAAI,CAAC,UAAU,WAAW,SAAS,CAC9D,QAAO;AAET,QAAO;;;;;;AAOT,SAAgB,cAAc,MAAc,WAAuC;AACjF,KAAI,CAAC,aAAa,CAAC,UAAU,WAAW,IAAI,IAAI,UAAU,WAAW,SAAS,CAC5E,QAAO;AAGT,QAAO,GAAG,OADE,KAAK,SAAS,IAAI,GAAG,MAAM,IAClB,YAAY,mBAAmB,UAAU;;;AAIhE,SAAS,oBAAoB,MAAuB;AAClD,QAAO,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,WAAW,SAAS;;;;;;AAO3D,SAAgB,qBACd,OACuC;CACvC,MAAM,OAAO,MAAM,MAAM;CACzB,MAAM,MACJ,OAAO,SAAS,WAAW,OAAO,MAAM,QAAQ,KAAK,GAAG,KAAK,MAAM,SAAY;AACjF,KAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,oBAAoB,IAAI,CAAE,QAAO;CACzE,MAAM,QAAQ,MAAM,MAAM;AAG1B,QAAO;EAAE,IAAI;EAAK,OADhB,OAAO,UAAU,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG,MAAM,MAAM,SAAY;EAClD;;;;;;AAOrC,SAAgB,aACd,MACA,UACA,eACQ;AACR,KAAI,CAAC,YAAY,CAAC,oBAAoB,SAAS,CAAE,QAAO;CAExD,IAAI,SAAS,GAAG,OADJ,KAAK,SAAS,IAAI,GAAG,MAAM,IACZ,WAAW,mBAAmB,SAAS;AAClE,KAAI,cACF,WAAU,kBAAkB,mBAAmB,cAAc;AAE/D,QAAO"}
1
+ {"version":3,"file":"useReturnUrl-DnezAxBA.js","names":[],"sources":["../src/utils/useReturnUrl.ts"],"sourcesContent":["import type { RouteLocationNormalizedLoaded } from 'vue-router';\n\n/** Storage key for return URL when awaiting email verification from signup (strict mode). */\nexport const EMAIL_VERIFICATION_RETURN_URL_KEY = 'dragoncore_email_verification_return_url';\n\n/**\n * Store return URL for post-verification redirect. Uses localStorage (not sessionStorage)\n * so the verification link opened in a new tab can access it.\n */\nexport function setEmailVerificationReturnUrl(url: string): void {\n if (!url.startsWith('/') || url.startsWith('/auth/')) return;\n localStorage.setItem(EMAIL_VERIFICATION_RETURN_URL_KEY, url);\n}\n\nexport function getAndClearEmailVerificationReturnUrl(): string | null {\n const url = localStorage.getItem(EMAIL_VERIFICATION_RETURN_URL_KEY);\n localStorage.removeItem(EMAIL_VERIFICATION_RETURN_URL_KEY);\n return url && url.startsWith('/') && !url.startsWith('/auth/') ? url : null;\n}\n\n/**\n * Validates a return URL: must be a relative path starting with / and not /auth/\n * to avoid redirect loops and external URLs.\n */\nexport function getValidReturnUrl(\n route: RouteLocationNormalizedLoaded,\n defaultPath: string,\n): string {\n const returnUrl = route.query.returnUrl as string | undefined;\n if (!returnUrl) return defaultPath;\n if (returnUrl.startsWith('/') && !returnUrl.startsWith('/auth/')) {\n return returnUrl;\n }\n return defaultPath;\n}\n\n/**\n * Builds a path string with returnUrl preserved in query params.\n * Use when linking to login, logout, etc. from a page that has returnUrl.\n */\nexport function withReturnUrl(path: string, returnUrl: string | undefined): string {\n if (!returnUrl || !returnUrl.startsWith('/') || returnUrl.startsWith('/auth/')) {\n return path;\n }\n const sep = path.includes('?') ? '&' : '?';\n return `${path}${sep}returnUrl=${encodeURIComponent(returnUrl)}`;\n}\n\n/** Same validation as returnUrl: relative path, not /auth/ */\nfunction isValidBackLinkPath(path: string): boolean {\n return path.startsWith('/') && !path.startsWith('/auth/');\n}\n\n/**\n * Extracts a valid back link from route query params.\n * Supports backLink (path) and backLinkLabel (optional label).\n */\nexport function getBackLinkFromRoute(\n route: RouteLocationNormalizedLoaded,\n): { to: string; label?: string } | null {\n const path = route.query.backLink;\n const raw =\n typeof path === 'string' ? path : Array.isArray(path) ? path[0] ?? undefined : undefined;\n if (!raw || typeof raw !== 'string' || !isValidBackLinkPath(raw)) return null;\n const label = route.query.backLinkLabel;\n const labelStr =\n typeof label === 'string' ? label : Array.isArray(label) ? label[0] ?? undefined : undefined;\n return { to: raw, label: labelStr };\n}\n\n/**\n * Appends backLink (and optional backLinkLabel) to a path.\n * Use when linking to auth pages so the Auth layout shows a back link.\n */\nexport function withBackLink(\n path: string,\n backLink: string,\n backLinkLabel?: string,\n): string {\n if (!backLink || !isValidBackLinkPath(backLink)) return path;\n const sep = path.includes('?') ? '&' : '?';\n let result = `${path}${sep}backLink=${encodeURIComponent(backLink)}`;\n if (backLinkLabel) {\n result += `&backLinkLabel=${encodeURIComponent(backLinkLabel)}`;\n }\n return result;\n}\n"],"mappings":";;AAGA,MAAa,oCAAoC;AAWjD,SAAgB,wCAAuD;CACrE,MAAM,MAAM,aAAa,QAAQ,kCAAkC;AACnE,cAAa,WAAW,kCAAkC;AAC1D,QAAO,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,WAAW,SAAS,GAAG,MAAM;;;;;;AAOzE,SAAgB,kBACd,OACA,aACQ;CACR,MAAM,YAAY,MAAM,MAAM;AAC9B,KAAI,CAAC,UAAW,QAAO;AACvB,KAAI,UAAU,WAAW,IAAI,IAAI,CAAC,UAAU,WAAW,SAAS,CAC9D,QAAO;AAET,QAAO;;;;;;AAOT,SAAgB,cAAc,MAAc,WAAuC;AACjF,KAAI,CAAC,aAAa,CAAC,UAAU,WAAW,IAAI,IAAI,UAAU,WAAW,SAAS,CAC5E,QAAO;AAGT,QAAO,GAAG,OADE,KAAK,SAAS,IAAI,GAAG,MAAM,IAClB,YAAY,mBAAmB,UAAU;;;AAIhE,SAAS,oBAAoB,MAAuB;AAClD,QAAO,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,WAAW,SAAS;;;;;;AAO3D,SAAgB,qBACd,OACuC;CACvC,MAAM,OAAO,MAAM,MAAM;CACzB,MAAM,MACJ,OAAO,SAAS,WAAW,OAAO,MAAM,QAAQ,KAAK,GAAG,KAAK,MAAM,SAAY;AACjF,KAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,oBAAoB,IAAI,CAAE,QAAO;CACzE,MAAM,QAAQ,MAAM,MAAM;AAG1B,QAAO;EAAE,IAAI;EAAK,OADhB,OAAO,UAAU,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG,MAAM,MAAM,SAAY;EAClD;;;;;;AAOrC,SAAgB,aACd,MACA,UACA,eACQ;AACR,KAAI,CAAC,YAAY,CAAC,oBAAoB,SAAS,CAAE,QAAO;CAExD,IAAI,SAAS,GAAG,OADJ,KAAK,SAAS,IAAI,GAAG,MAAM,IACZ,WAAW,mBAAmB,SAAS;AAClE,KAAI,cACF,WAAU,kBAAkB,mBAAmB,cAAc;AAE/D,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dragonmastery/dragoncore-vue",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "Vue 3 components and composables for dragoncore",
5
5
  "author": "DragonMastery",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -41,7 +41,7 @@
41
41
  "vue3-toastify": "0.2.8"
42
42
  },
43
43
  "peerDependencies": {
44
- "@dragonmastery/dragoncore-shared": "^0.0.30",
44
+ "@dragonmastery/dragoncore-shared": "^0.0.31",
45
45
  "@dragonmastery/zinia-forms-core": ">=0.5.11",
46
46
  "@vueuse/core": ">=14.0.0",
47
47
  "pinia": ">=3.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConsentFlowStep-DsVhXa91.js","names":["$emit"],"sources":["../src/slices/auth/features/shared/ConsentFlowStep.vue"],"sourcesContent":["<template>\n <div class=\"space-y-6\">\n <div class=\"text-center space-y-1\">\n <h1 class=\"text-2xl font-bold\">{{ config.label }}</h1>\n <p class=\"text-base-content/80\">Step {{ currentStep }} of {{ totalSteps }}</p>\n <p class=\"text-base-content/70 text-sm\">Review and accept</p>\n </div>\n\n <div\n v-if=\"submitError\"\n class=\"alert alert-error flex flex-col gap-2\"\n >\n <slot\n name=\"error-recovery\"\n :retry=\"retry\"\n :submitting=\"submitting\"\n >\n <span>{{ submitError }}</span>\n <p class=\"text-sm opacity-90\">You can try again using the buttons below.</p>\n </slot>\n </div>\n\n <p\n v-if=\"displayContent\"\n class=\"text-sm text-base-content/70 mb-2\"\n >\n {{ introText }}\n </p>\n\n <!-- Scrollable terms box when admin provides inline content -->\n <div\n v-if=\"displayContent\"\n :key=\"config.type\"\n :ref=\"(el) => setScrollRef(el)\"\n class=\"border border-base-300 rounded-lg px-3 py-4 sm:p-4 bg-base-100 overflow-y-auto overflow-x-hidden min-h-80 max-h-[min(32rem,70vh)] w-full min-w-0\"\n :data-consent-type=\"config.type\"\n @scroll=\"onScroll\"\n >\n <div\n class=\"prose prose-sm prose-max-w-none max-w-full min-w-0 text-sm prose-headings:font-semibold prose-p:my-2\"\n v-html=\"renderMarkdown(displayContent)\"\n />\n </div>\n\n <!-- Link-only when admin does not provide content -->\n <div v-else-if=\"config.url\">\n <a\n :href=\"config.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"link link-accent inline-flex items-center gap-1.5\"\n >\n View {{ config.label }}\n <ExternalLinkIcon />\n </a>\n </div>\n\n <div class=\"flex flex-col gap-5\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n :disabled=\"(needsScroll ? !hasScrolledToBottom : false) || submitting\"\n @click=\"$emit('accept')\"\n >\n {{ submitting ? submitAcceptLabel : acceptLabel }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-outline btn-sm btn-error\"\n :disabled=\"declining || submitting\"\n @click=\"$emit('decline')\"\n >\n {{ declining ? declineSubmittingLabel : declineLabel }}\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { SignupConsentConfigDto } from '@dragonmastery/dragoncore-shared';\nimport ExternalLinkIcon from '../../../../components/ui/ExternalLinkIcon.vue';\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\nimport { computed, nextTick, ref, watch } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n config: SignupConsentConfigDto;\n currentStep: number;\n totalSteps: number;\n submitting?: boolean;\n submitError?: string | null;\n declining?: boolean;\n /** e.g. \"Accept and continue\" */\n acceptLabel?: string;\n /** e.g. \"Submitting...\" or \"Saving...\" */\n submitAcceptLabel?: string;\n /** e.g. \"Decline\" or \"Decline and log out\" */\n declineLabel?: string;\n /** e.g. \"Returning...\" or \"Logging out...\" */\n declineSubmittingLabel?: string;\n /** Intro text when content is shown, e.g. \"Please read the full document before accepting...\" */\n introText?: string;\n }>(),\n {\n submitting: false,\n submitError: null,\n declining: false,\n acceptLabel: 'Accept and continue',\n submitAcceptLabel: 'Submitting...',\n declineLabel: 'Decline',\n declineSubmittingLabel: 'Returning...',\n introText:\n \"Please read the full document before accepting. Scroll to the bottom when you've finished reading.\",\n },\n);\n\nconst emit = defineEmits<{\n accept: [];\n decline: [];\n}>();\n\nfunction retry() {\n emit('accept');\n}\n\nconst displayContent = computed(() => props.config.content ?? null);\n\nconst needsScroll = computed(() => Boolean(displayContent.value));\n\nconst hasScrolledToBottom = ref(!needsScroll.value);\nconst scrollEl = ref<HTMLElement | null>(null);\n\nfunction setScrollRef(el: unknown) {\n scrollEl.value = el instanceof HTMLElement ? el : null;\n}\n\nwatch(\n () => props.config,\n (config) => {\n hasScrolledToBottom.value = !(config?.content ?? null);\n nextTick(() => {\n scrollEl.value?.scrollTo(0, 0);\n });\n },\n { immediate: true },\n);\n\nwatch(displayContent, (content) => {\n hasScrolledToBottom.value = !content;\n nextTick(() => {\n scrollEl.value?.scrollTo(0, 0);\n });\n});\n\nfunction renderMarkdown(content: string): string {\n const html = marked.parse(content) as string;\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n 'p',\n 'br',\n 'strong',\n 'em',\n 'u',\n 'a',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'blockquote',\n 'code',\n 'pre',\n 'hr',\n ],\n ALLOWED_ATTR: ['href', 'target', 'rel'],\n });\n}\n\nfunction checkScrolledToBottom() {\n const el = scrollEl.value;\n if (!el) return;\n const { scrollTop, scrollHeight, clientHeight } = el;\n const atBottom = scrollHeight - scrollTop - clientHeight < 10;\n if (atBottom) {\n hasScrolledToBottom.value = true;\n }\n}\n\nfunction onScroll() {\n checkScrolledToBottom();\n}\n</script>\n"],"mappings":"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"}
@@ -1,114 +0,0 @@
1
- import { o as useUserSessionStore } from "./useRpcAuth-CJtq1dqM.js";
2
- import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
3
- import "./useQueryCache-alzaRWEb.js";
4
- import { t as useMutation } from "./useMutation-BLNuJoYl.js";
5
- import { t as useQuery } from "./useQuery-BzUGEOj0.js";
6
- import { r as getValidReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
7
- import "./ExternalLinkIcon-BKVV5Gjm.js";
8
- import { t as ConsentFlowStep_default } from "./ConsentFlowStep-DsVhXa91.js";
9
- import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, watch } from "vue";
10
- import { useRoute, useRouter } from "vue-router";
11
- import { toast } from "vue3-toastify";
12
-
13
- //#region src/slices/auth/features/consent_required/ConsentRequired.vue
14
- const _hoisted_1 = { class: "w-full max-w-md mx-auto mb-8 sm:mb-10 bg-base-200 px-3 py-4 sm:px-6 sm:py-6 rounded-xl shadow-md container min-w-0" };
15
- const _hoisted_2 = {
16
- key: 0,
17
- class: "text-center"
18
- };
19
- const _hoisted_3 = {
20
- key: 1,
21
- class: "space-y-6"
22
- };
23
- const _sfc_main = /* @__PURE__ */ defineComponent({
24
- __name: "ConsentRequired",
25
- setup(__props) {
26
- const sessionStore = useUserSessionStore();
27
- const router = useRouter();
28
- const route = useRoute();
29
- const { data: pendingConsents, loading } = useQuery((api) => api.users.getPendingConsents(), { skipAuthCheck: false });
30
- const currentStep = ref(1);
31
- const totalSteps = computed(() => (pendingConsents.value ?? []).length);
32
- const currentConfig = computed(() => (pendingConsents.value ?? [])[currentStep.value - 1] ?? null);
33
- const declining = ref(false);
34
- const submitting = ref(false);
35
- const submitError = ref(null);
36
- function getErrorMessage(error) {
37
- if (error instanceof Error && error.message) return error.message;
38
- if (error && typeof error === "object" && "message" in error && typeof error.message === "string") return error.message;
39
- return "Failed to record consents. Please try again.";
40
- }
41
- const { mutate: recordConsentsMutate } = useMutation((api, input) => api.users.recordConsents(input), { skipAuthCheck: false });
42
- async function handleAccept() {
43
- const config = currentConfig.value;
44
- const consents = pendingConsents.value ?? [];
45
- if (!config || consents.length === 0) return;
46
- submitError.value = null;
47
- const acceptancesSoFar = {};
48
- for (let i = 0; i < currentStep.value; i++) {
49
- const c = consents[i];
50
- if (c) acceptancesSoFar[c.type] = true;
51
- }
52
- if (currentStep.value >= totalSteps.value) {
53
- submitting.value = true;
54
- try {
55
- await recordConsentsMutate({ acceptances: acceptancesSoFar });
56
- await sessionStore.refreshToken();
57
- window.scrollTo(0, 0);
58
- const targetUrl = getValidReturnUrl(route, "/");
59
- await router.push(targetUrl);
60
- toast.success("Consents recorded. You can now continue.");
61
- } catch (err) {
62
- submitError.value = getErrorMessage(err);
63
- } finally {
64
- submitting.value = false;
65
- }
66
- return;
67
- }
68
- currentStep.value++;
69
- nextTick();
70
- }
71
- async function handleDecline() {
72
- declining.value = true;
73
- try {
74
- sessionStore.clearSession();
75
- await router.push("/auth/login");
76
- toast.info("You have declined. You have been logged out.");
77
- } finally {
78
- declining.value = false;
79
- }
80
- }
81
- watch([pendingConsents, loading], ([consents, isLoading]) => {
82
- if (!isLoading && Array.isArray(consents) && consents.length === 0) router.push(getValidReturnUrl(route, "/"));
83
- }, { immediate: true });
84
- return (_ctx, _cache) => {
85
- return openBlock(), createElementBlock("div", _hoisted_1, [unref(loading) ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [createElementVNode("p", { class: "text-base-content/80" }, "Loading...", -1)])])) : currentConfig.value ? (openBlock(), createElementBlock("div", _hoisted_3, [createVNode(ConsentFlowStep_default, {
86
- config: currentConfig.value,
87
- "current-step": currentStep.value,
88
- "total-steps": totalSteps.value,
89
- submitting: submitting.value,
90
- "submit-error": submitError.value,
91
- declining: declining.value,
92
- "accept-label": "Accept and continue",
93
- "submit-accept-label": "Saving...",
94
- "decline-label": "Decline and log out",
95
- "decline-submitting-label": "Logging out...",
96
- "intro-text": "Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, you will not have access to the application and will be logged out.",
97
- onAccept: handleAccept,
98
- onDecline: handleDecline
99
- }, null, 8, [
100
- "config",
101
- "current-step",
102
- "total-steps",
103
- "submitting",
104
- "submit-error",
105
- "declining"
106
- ])])) : createCommentVNode("v-if", true)]);
107
- };
108
- }
109
- });
110
- var ConsentRequired_default = _sfc_main;
111
-
112
- //#endregion
113
- export { ConsentRequired_default as default };
114
- //# sourceMappingURL=ConsentRequired-B3eLxJgx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConsentRequired-B3eLxJgx.js","names":["acceptancesSoFar: Record<string, boolean>"],"sources":["../src/slices/auth/features/consent_required/ConsentRequired.vue"],"sourcesContent":["<template>\n <div class=\"w-full max-w-md mx-auto mb-8 sm:mb-10 bg-base-200 px-3 py-4 sm:px-6 sm:py-6 rounded-xl shadow-md container min-w-0\">\n <div v-if=\"loading\" class=\"text-center\">\n <p class=\"text-base-content/80\">Loading...</p>\n </div>\n\n <div v-else-if=\"currentConfig\" class=\"space-y-6\">\n <ConsentFlowStep\n :config=\"currentConfig\"\n :current-step=\"currentStep\"\n :total-steps=\"totalSteps\"\n :submitting=\"submitting\"\n :submit-error=\"submitError\"\n :declining=\"declining\"\n accept-label=\"Accept and continue\"\n submit-accept-label=\"Saving...\"\n decline-label=\"Decline and log out\"\n decline-submitting-label=\"Logging out...\"\n intro-text=\"Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, you will not have access to the application and will be logged out.\"\n @accept=\"handleAccept\"\n @decline=\"handleDecline\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { RecordConsentsInputDto } from '@dragonmastery/dragoncore-shared';\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport ConsentFlowStep from '../shared/ConsentFlowStep.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl } from '../../../../utils/useReturnUrl';\n\nconst sessionStore = useUserSessionStore();\nconst router = useRouter();\nconst route = useRoute();\n\nconst { data: pendingConsents, loading } = useQuery(\n (api) => api.users.getPendingConsents(),\n { skipAuthCheck: false },\n);\n\nconst currentStep = ref(1);\nconst totalSteps = computed(() => (pendingConsents.value ?? []).length);\nconst currentConfig = computed(\n () => (pendingConsents.value ?? [])[currentStep.value - 1] ?? null,\n);\n\nconst declining = ref(false);\nconst submitting = ref(false);\nconst submitError = ref<string | null>(null);\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error && error.message) return error.message;\n if (error && typeof error === 'object' && 'message' in error && typeof (error as { message: unknown }).message === 'string') {\n return (error as { message: string }).message;\n }\n return 'Failed to record consents. Please try again.';\n}\n\nconst { mutate: recordConsentsMutate } = useMutation(\n (api, input: RecordConsentsInputDto) => api.users.recordConsents(input),\n { skipAuthCheck: false },\n);\n\nasync function handleAccept() {\n const config = currentConfig.value;\n const consents = pendingConsents.value ?? [];\n if (!config || consents.length === 0) return;\n\n submitError.value = null;\n\n const acceptancesSoFar: Record<string, boolean> = {};\n for (let i = 0; i < currentStep.value; i++) {\n const c = consents[i];\n if (c) acceptancesSoFar[c.type] = true;\n }\n\n if (currentStep.value >= totalSteps.value) {\n submitting.value = true;\n try {\n await recordConsentsMutate({ acceptances: acceptancesSoFar });\n await sessionStore.refreshToken();\n window.scrollTo(0, 0);\n const targetUrl = getValidReturnUrl(route, '/');\n await router.push(targetUrl);\n toast.success('Consents recorded. You can now continue.');\n } catch (err) {\n submitError.value = getErrorMessage(err);\n } finally {\n submitting.value = false;\n }\n return;\n }\n\n currentStep.value++;\n nextTick();\n}\n\nasync function handleDecline() {\n declining.value = true;\n try {\n sessionStore.clearSession();\n await router.push('/auth/login');\n toast.info('You have declined. You have been logged out.');\n } finally {\n declining.value = false;\n }\n}\n\n// If no pending consents (e.g. already completed or consent disabled), redirect\nwatch(\n [pendingConsents, loading],\n ([consents, isLoading]) => {\n if (!isLoading && Array.isArray(consents) && consents.length === 0) {\n router.push(getValidReturnUrl(route, '/'));\n }\n },\n { immediate: true },\n);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAqCA,MAAM,eAAe,qBAAqB;EAC1C,MAAM,SAAS,WAAW;EAC1B,MAAM,QAAQ,UAAU;EAExB,MAAM,EAAE,MAAM,iBAAiB,YAAY,UACxC,QAAQ,IAAI,MAAM,oBAAoB,EACvC,EAAE,eAAe,OAAO,CACzB;EAED,MAAM,cAAc,IAAI,EAAE;EAC1B,MAAM,aAAa,gBAAgB,gBAAgB,SAAS,EAAE,EAAE,OAAO;EACvE,MAAM,gBAAgB,gBACb,gBAAgB,SAAS,EAAE,EAAE,YAAY,QAAQ,MAAM,KAC/D;EAED,MAAM,YAAY,IAAI,MAAM;EAC5B,MAAM,aAAa,IAAI,MAAM;EAC7B,MAAM,cAAc,IAAmB,KAAK;EAE5C,SAAS,gBAAgB,OAAwB;AAC/C,OAAI,iBAAiB,SAAS,MAAM,QAAS,QAAO,MAAM;AAC1D,OAAI,SAAS,OAAO,UAAU,YAAY,aAAa,SAAS,OAAQ,MAA+B,YAAY,SACjH,QAAQ,MAA8B;AAExC,UAAO;;EAGT,MAAM,EAAE,QAAQ,yBAAyB,aACtC,KAAK,UAAkC,IAAI,MAAM,eAAe,MAAM,EACvE,EAAE,eAAe,OAAO,CACzB;EAED,eAAe,eAAe;GAC5B,MAAM,SAAS,cAAc;GAC7B,MAAM,WAAW,gBAAgB,SAAS,EAAE;AAC5C,OAAI,CAAC,UAAU,SAAS,WAAW,EAAG;AAEtC,eAAY,QAAQ;GAEpB,MAAMA,mBAA4C,EAAE;AACpD,QAAK,IAAI,IAAI,GAAG,IAAI,YAAY,OAAO,KAAK;IAC1C,MAAM,IAAI,SAAS;AACnB,QAAI,EAAG,kBAAiB,EAAE,QAAQ;;AAGpC,OAAI,YAAY,SAAS,WAAW,OAAO;AACzC,eAAW,QAAQ;AACnB,QAAI;AACF,WAAM,qBAAqB,EAAE,aAAa,kBAAkB,CAAC;AAC7D,WAAM,aAAa,cAAc;AACjC,YAAO,SAAS,GAAG,EAAE;KACrB,MAAM,YAAY,kBAAkB,OAAO,IAAI;AAC/C,WAAM,OAAO,KAAK,UAAU;AAC5B,WAAM,QAAQ,2CAA2C;aAClD,KAAK;AACZ,iBAAY,QAAQ,gBAAgB,IAAI;cAChC;AACR,gBAAW,QAAQ;;AAErB;;AAGF,eAAY;AACZ,aAAU;;EAGZ,eAAe,gBAAgB;AAC7B,aAAU,QAAQ;AAClB,OAAI;AACF,iBAAa,cAAc;AAC3B,UAAM,OAAO,KAAK,cAAc;AAChC,UAAM,KAAK,+CAA+C;aAClD;AACR,cAAU,QAAQ;;;AAKtB,QACE,CAAC,iBAAiB,QAAQ,GACzB,CAAC,UAAU,eAAe;AACzB,OAAI,CAAC,aAAa,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAC/D,QAAO,KAAK,kBAAkB,OAAO,IAAI,CAAC;KAG9C,EAAE,WAAW,MAAM,CACpB;;uBA1HC,mBAsBM,OAtBN,YAsBM,CArBO,MAAA,QAAO,IAAA,WAAA,EAAlB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAA8C,KAAA,EAA3C,OAAM,wBAAsB,EAAC,cAAU,GAAA,CAAA,EAAA,CAAA,IAG5B,cAAA,SAAA,WAAA,EAAhB,mBAgBM,OAhBN,YAgBM,CAfJ,YAcE,yBAAA;IAbC,QAAQ,cAAA;IACR,gBAAc,YAAA;IACd,eAAa,WAAA;IACb,YAAY,WAAA;IACZ,gBAAc,YAAA;IACd,WAAW,UAAA;IACZ,gBAAa;IACb,uBAAoB;IACpB,iBAAc;IACd,4BAAyB;IACzB,cAAW;IACV,UAAQ;IACR,WAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Signup-CkhRQErA.js","names":["payload: SignupInitiateInputDto"],"sources":["../src/slices/auth/utils/isEmailVerificationRequiredError.ts","../src/slices/auth/features/signup/signupSchema.ts","../src/slices/auth/features/signup/Signup.vue"],"sourcesContent":["/**\n * Detects if an error indicates that email verification is required before login.\n * Used in signup flow when auto-login after signup fails due to unverified email.\n */\nexport function isEmailVerificationRequiredError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n const e = error as {\n error_type?: string;\n error_name?: string;\n name?: string;\n message?: string;\n };\n if (\n e.error_type === 'EmailVerificationRequiredError' ||\n e.error_name === 'EmailVerificationRequiredError' ||\n e.name === 'EmailVerificationRequiredError'\n ) {\n return true;\n }\n const msg = typeof e.message === 'string' ? e.message : '';\n return msg.includes('Please verify your email before logging in');\n}\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { signupInitiateSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the signup form type (signupInitiate: email + passwords only)\nexport type SignupForm = z.infer<typeof signupInitiateSchema>;\n\n// Enhance the schema with metadata\nexport const signupSchemaWithMetadata = withMetadata(signupInitiateSchema, 'signupInitiateSchema', {\n email: {\n inputType: 'email',\n placeholder: 'you@example.com',\n helpText: 'Enter the email address you used to register',\n autocomplete: 'email',\n className: 'login-field',\n autofocus: true,\n },\n 'passwords.password': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n 'passwords.password_confirm': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n});\n","<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Sign Up</h1>\n\n <div\n v-if=\"awaitingVerification\"\n class=\"space-y-4 text-center\"\n >\n <p class=\"text-base-content/80\">\n We sent a verification link to your email address. Click the link to verify your account,\n then you can continue.\n </p>\n <p class=\"text-sm text-base-content/60\">\n If you opened the link in another tab, we'll redirect you automatically when verification\n completes.\n </p>\n </div>\n\n <div v-else-if=\"declinedMessage\" class=\"mb-4\">\n <div class=\"alert alert-warning\">\n <span>{{ declinedMessage }}</span>\n </div>\n </div>\n\n <ZiniaForm\n v-if=\"!awaitingVerification\"\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n >\n <zinia.EmailField />\n <zinia.PasswordsPasswordField />\n <zinia.PasswordsPasswordConfirmField />\n\n <div\n v-if=\"showConsentSection\"\n class=\"mb-6 p-4 rounded-lg bg-base-100 border border-base-300\"\n >\n <p class=\"font-medium mb-2\">{{ signupConsentBeforeText }}</p>\n <ul class=\"list-disc list-inside space-y-1 text-sm text-base-content/80\">\n <li\n v-for=\"link in legalLinks\"\n :key=\"link.path\"\n >\n <AppLink\n :to=\"link.path\"\n class=\"link link-accent\"\n >\n {{ link.label }}\n </AppLink>\n </li>\n </ul>\n <p\n v-if=\"signupConsentAfterText\"\n class=\"mt-2 text-sm text-base-content/70\"\n >\n {{ signupConsentAfterText }}\n </p>\n </div>\n\n <ZiniaSubmitButton submitText=\"Sign Up\" submittingText=\"Signing up...\" />\n\n <div class=\"text-center mt-2\">\n <p>\n Already have an account?\n <AppLink class=\"link-accent link\" :to=\"loginLink\">Login</AppLink>\n </p>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {\n SignupInitiateInputDto,\n SignupInitiateResponseDto,\n} from '@dragonmastery/dragoncore-shared';\nimport type { UserDetailsTokenPayload } from '../../../../lib/models/userSession';\nimport AppLink from '../../../../components/AppLink.vue';\nimport { setSignupConsentFlowData } from '../../signupConsentStorage';\nimport { SIGNUP_EXTENSIBILITY_KEYS } from '../../signupExtensibilityKeys';\nimport { useEnv } from '../../../../composables/useEnv';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl, withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { useEmailVerificationChannel } from '../../useEmailVerificationChannel';\nimport { isEmailVerificationRequiredError } from '../../utils/isEmailVerificationRequiredError';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { jwtDecode } from 'jwt-decode';\nimport { computed, inject, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { signupSchemaWithMetadata } from './signupSchema';\n\nconst REDIRECTED_TO_CONSENTS = Symbol('redirected-to-consents');\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(signupSchemaWithMetadata, {\n storeName: 'signup-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n});\n\nconst sessionStore = useUserSessionStore();\nconst route = useRoute();\nconst router = useRouter();\nconst { emailVerificationMode } = useEnv();\n\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst loginLink = computed(() => withReturnUrl('/auth/login', returnUrl.value));\nconst awaitingVerification = ref(false);\n\nconst getSignupMetadata = inject(SIGNUP_EXTENSIBILITY_KEYS.getSignupMetadata);\nconst signupConsentBeforeText = inject<string>(\n 'signupConsentBeforeText',\n 'By signing up you agree to these terms:',\n);\nconst signupConsentAfterText = inject<string>(\n 'signupConsentAfterText',\n \"After you click Sign Up, we'll show you each document to review and accept.\",\n);\n\n// Legal routes - auto-collected from router (meta.legal: true) for the consent preview\nconst legalLinks = computed(() => {\n const routes = router.getRoutes();\n return routes\n .filter((r) => r.meta?.legal === true)\n .map((r) => {\n const resolved = router.resolve({ name: r.name as string });\n return {\n path: resolved.path,\n label: (r.meta?.title as string) ?? (r.name as string) ?? r.path,\n };\n })\n .sort((a, b) => a.path.localeCompare(b.path));\n});\n\nconst showConsentSection = computed(() => legalLinks.value.length > 0);\n\n// Show declined message when returning from consent flow\nconst declinedMessage = computed(() => {\n const declined = route.query.declined;\n if (declined === '1' || declined === 'true') {\n return 'You declined the consent. Your account was not created.';\n }\n return null;\n});\n\nconst { mutate: signupInitiateMutate } = useMutation<\n import('@dragonmastery/dragoncore-shared').DragoncoreApi,\n SignupInitiateInputDto,\n SignupInitiateResponseDto\n>(\n (api, input: SignupInitiateInputDto) => api.users.signupInitiate(input),\n { skipAuthCheck: true, credentials: 'include' },\n);\n\n// Handle form submission\nconst handleSubmit = async (data: SignupInitiateInputDto) => {\n const metadata = {\n ...(getSignupMetadata?.() ?? {}),\n ...(data.metadata ?? {}),\n };\n const payload: SignupInitiateInputDto = {\n ...data,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n const result = await signupInitiateMutate(payload);\n if (!result) throw new Error('Signup failed');\n\n if (result.created) {\n if (!result.session?.access_token || !result.session?.user_details_token) {\n throw new Error('Failed to get session after signup');\n }\n return {\n access_token: result.session.access_token,\n user_details_token: result.session.user_details_token,\n };\n }\n\n setSignupConsentFlowData({\n token: result.signup_consent_token,\n consents: result.consents,\n metadata: payload.metadata,\n });\n const basePath = withReturnUrl('/auth/signup-consents', returnUrl.value);\n const sep = basePath.includes('?') ? '&' : '?';\n await router.push(`${basePath}${sep}token=${encodeURIComponent(result.signup_consent_token)}`);\n return REDIRECTED_TO_CONSENTS;\n};\n\n// Handle success (not called when we redirect to consent flow)\nconst handleSuccess = async (data: { access_token: string; user_details_token: string } | symbol) => {\n if (data === REDIRECTED_TO_CONSENTS) return;\n\n const payload = data as { access_token: string; user_details_token: string };\n sessionStore.setSession(payload.user_details_token);\n sessionStore.setAccessToken(payload.access_token);\n\n form.reset();\n\n const defaultRedirect = getValidReturnUrl(route, '/');\n const redirectTo =\n emailVerificationMode !== 'disabled'\n ? (() => {\n try {\n const tokenPayload = jwtDecode<UserDetailsTokenPayload>(payload.user_details_token);\n const emailVerified = tokenPayload.details?.user?.email_verified ?? true;\n return emailVerified ? defaultRedirect : withReturnUrl('/auth/verify-email', returnUrl.value);\n } catch {\n return defaultRedirect;\n }\n })()\n : defaultRedirect;\n\n await router.push(redirectTo);\n const wentToVerify = typeof redirectTo === 'string' && redirectTo.startsWith('/auth/verify-email');\n toast.success(\n !wentToVerify\n ? 'Registration successful! You are now logged in.'\n : 'Registration successful! Please check your email to verify your account.',\n );\n};\n\n// Handle error\nconst handleError = (error: unknown) => {\n if (isEmailVerificationRequiredError(error)) {\n return;\n }\n const message = error instanceof Error ? error.message : 'Registration failed';\n toast.error(message);\n};\n\nuseEmailVerificationChannel(\n awaitingVerification,\n (targetUrl) => router.push(targetUrl),\n () => getValidReturnUrl(route, '/'),\n);\n</script>\n"],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import "./useRpcAuth-CJtq1dqM.js";
2
- import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
3
- import "./useQueryCache-alzaRWEb.js";
4
- import "./useMutation-BLNuJoYl.js";
5
- import "./AppLink-FcNGKgvG.js";
6
- import "./useEmailVerificationChannel-QuMSgzzM.js";
7
- import { t as Signup_default } from "./Signup-CkhRQErA.js";
8
-
9
- export { Signup_default as default };