@huyooo/ui 1.0.3 → 1.0.4

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 (182) hide show
  1. package/dist/AuthkitAppSetting-BN8-xgNq.js +2674 -0
  2. package/dist/{Contact-M6iyuyNL.js → Contact-DBH8CyKp.js} +105 -113
  3. package/dist/CustomTable-BzGfaAVH.js +276 -0
  4. package/dist/FeedbackModal.vue_vue_type_script_setup_true_lang-B9BqGWm8.js +1480 -0
  5. package/dist/LandingPageDescription-BczWZHKy.js +12 -0
  6. package/dist/{LandingPageLinkGroup-DDNRivMt.js → LandingPageLinkGroup-r-t3H1X0.js} +87 -88
  7. package/dist/LandingPageSectionHeader-CVAqc7bx.js +137 -0
  8. package/dist/{LandingPageSectionTabs-Ce3_Rc2L.js → LandingPageSectionTabs-DhKpOj5F.js} +300 -309
  9. package/dist/LegalDocViewer-DlaLKGyX.js +2501 -0
  10. package/dist/Menu-uCexrsKP.js +199 -0
  11. package/dist/MessageHandle-mEkCsv9e.js +1173 -0
  12. package/dist/MessageList-Ce-_LNTk.js +244 -0
  13. package/dist/PaySubscriptions-CXkEjqr2.js +1326 -0
  14. package/dist/PricingPlans-DoWP5aX7.js +427 -0
  15. package/dist/ReferrerReferees-DgygiIiE.js +237 -0
  16. package/dist/{Upload.vue_vue_type_script_setup_true_lang-B6NOZjK0.js → Upload.vue_vue_type_script_setup_true_lang-VGh2V4o0.js} +1 -1
  17. package/dist/UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-zgjpFVln.js +592 -0
  18. package/dist/WidthContainer-PeWkCK0p.js +721 -0
  19. package/dist/{apiClients-DrGX2iJy.js → apiClients-BcXOLuYu.js} +131 -98
  20. package/dist/authkit.d.ts +6 -2
  21. package/dist/authkit.js +53 -44
  22. package/dist/common/authProviderIcons.d.ts +12 -0
  23. package/dist/common/globalConfig.d.ts +5 -0
  24. package/dist/common/tableColumnWidths.d.ts +11 -0
  25. package/dist/common.js +3 -3
  26. package/dist/components/AuthProviderIcon.vue.d.ts +12 -0
  27. package/dist/components/Authkit/AppSetting/AuthkitEmailVerify.vue.d.ts +2 -2
  28. package/dist/components/Authkit/AppSetting/AuthkitOAuthBinding.vue.d.ts +2 -1
  29. package/dist/components/Authkit/AppSetting/AuthkitPasskeyBinding.vue.d.ts +14 -0
  30. package/dist/components/Authkit/AppSetting/AuthkitPasswordUpdate.vue.d.ts +11 -1
  31. package/dist/components/Authkit/AppSetting/AuthkitPersonalInformation.vue.d.ts +1 -3
  32. package/dist/components/Authkit/AppSetting/AuthkitPhoneVerify.vue.d.ts +13 -3
  33. package/dist/components/Authkit/Auth/AuthkitBindEmail.vue.d.ts +29 -2
  34. package/dist/components/Authkit/Auth/AuthkitBindPhone.vue.d.ts +2 -2
  35. package/dist/components/Authkit/Auth/AuthkitEmailUpdate.vue.d.ts +2 -2
  36. package/dist/components/Authkit/Auth/AuthkitOauthItem.vue.d.ts +37 -9
  37. package/dist/components/Authkit/Auth/AuthkitOauthList.vue.d.ts +7 -11
  38. package/dist/components/Authkit/Auth/AuthkitPasswordUpdateAndVerify.vue.d.ts +2 -2
  39. package/dist/components/Authkit/Auth/AuthkitPhonePasswordUpdateAndVerify.vue.d.ts +2 -2
  40. package/dist/components/Authkit/Auth/AuthkitServiceAgreementAndPrivacyProtection.vue.d.ts +11 -7
  41. package/dist/components/Authkit/Auth/AuthkitSignInEmailCode.vue.d.ts +2 -2
  42. package/dist/components/Authkit/Auth/AuthkitSignInPhone.vue.d.ts +3 -62
  43. package/dist/components/Authkit/Auth/AuthkitSignUpPhone.vue.d.ts +2 -2
  44. package/dist/components/Authkit/Auth/AuthkitSwitchSignUpOrResetPassword.vue.d.ts +9 -0
  45. package/dist/components/Authkit/AuthkitAuth.vue.d.ts +2 -8
  46. package/dist/components/Authkit/AuthkitAuthModal.vue.d.ts +0 -4
  47. package/dist/components/Authkit/AuthkitProvider.vue.d.ts +5 -2
  48. package/dist/components/Authkit/AuthkitSendVerifyCode.vue.d.ts +2 -1
  49. package/dist/components/CustomTable.vue.d.ts +27 -1
  50. package/dist/components/Ellipsis.vue.d.ts +2 -6
  51. package/dist/components/Feedback/FeedbackList.vue.d.ts +4 -1
  52. package/dist/components/Gradientbackground.vue.d.ts +2 -2
  53. package/dist/components/HeaderMenus.vue.d.ts +4 -1
  54. package/dist/components/InfiniteLoading.vue.d.ts +1 -1
  55. package/dist/components/LandingPage/LandingPageContainer.vue.d.ts +2 -2
  56. package/dist/components/LandingPage/LandingPagePageContent.vue.d.ts +2 -2
  57. package/dist/components/LegalDoc/LegalDocViewer.vue.d.ts +7 -0
  58. package/dist/components/Menu.vue.d.ts +2 -1
  59. package/dist/components/MenuItem.vue.d.ts +3 -1
  60. package/dist/components/Message/MessageAppMessage.vue.d.ts +12 -2
  61. package/dist/components/Message/MessageDetails.vue.d.ts +9 -161
  62. package/dist/components/Message/MessageHandle.vue.d.ts +16 -4
  63. package/dist/components/Message/MessageList.vue.d.ts +4 -3
  64. package/dist/components/Message/MessageNotificationDetails.vue.d.ts +13 -0
  65. package/dist/components/Message/messageBody/DescriptionsMessageBody.vue.d.ts +3 -0
  66. package/dist/components/Message/messageBody/JsonMessageBodyFallback.vue.d.ts +3 -0
  67. package/dist/components/Message/messageBody/TextMessageBody.vue.d.ts +3 -0
  68. package/dist/components/Message/messageBody/descriptionRows.d.ts +14 -0
  69. package/dist/components/Message/messageBody/descriptionsMessageBody.d.ts +32 -0
  70. package/dist/components/Message/messageBody/descriptionsValueRender.d.ts +4 -0
  71. package/dist/components/Message/messageBody/messageBodyRegistry.d.ts +9 -0
  72. package/dist/components/Message/messageBody/registerBuiltinMessageBodies.d.ts +2 -0
  73. package/dist/components/Message/messageBody/types.d.ts +7 -0
  74. package/dist/components/Referrer/ReferrerRefereeCell.vue.d.ts +7 -0
  75. package/dist/components/Referrer/ReferrerReferees.vue.d.ts +1 -0
  76. package/dist/components/UserMenu/UserAccountMenu.vue.d.ts +1 -16
  77. package/dist/components/UserMenu/UserMenuItem.vue.d.ts +4 -0
  78. package/dist/components/UserMenu/UserMenuModals.vue.d.ts +18 -4
  79. package/dist/components/UserMenu/parts/UserAvatar.vue.d.ts +6 -0
  80. package/dist/components/UserMenu/parts/UserBasicInformation.vue.d.ts +7 -2
  81. package/dist/composables/Authkit/fetchAuthPageAboutUs.d.ts +3 -0
  82. package/dist/composables/Authkit/resolveRoutePermission.d.ts +2 -0
  83. package/dist/composables/Authkit/useAuthkitAppsAuthPageInfo.d.ts +16 -0
  84. package/dist/composables/Authkit/useAuthkitAuth.d.ts +2 -0
  85. package/dist/composables/Authkit/useAuthkitPasskey.d.ts +10 -0
  86. package/dist/composables/Authkit/useLegalDocHostActions.d.ts +6 -0
  87. package/dist/composables/Authkit/useLegalDocs.d.ts +19 -0
  88. package/dist/composables/Authkit/useOauth.d.ts +17 -4
  89. package/dist/composables/Authkit/useRegistrationTerms.d.ts +24 -0
  90. package/dist/composables/Authkit/verifyCodeCooldown.d.ts +19 -0
  91. package/dist/composables/Billing/useBillingPlans.d.ts +0 -4
  92. package/dist/composables/Billing/useBillingStatusOptions.d.ts +2 -6
  93. package/dist/composables/Billing/useBillingSubscriptionSummary.d.ts +16 -0
  94. package/dist/composables/Billing/usePaidProductOptions.d.ts +5 -0
  95. package/dist/composables/Message/messageCenterBadgeCounts.d.ts +28 -0
  96. package/dist/composables/UserMenu/useUserMenuBadgeCounts.d.ts +9 -0
  97. package/dist/composables/useInfiniteList.d.ts +19 -0
  98. package/dist/composables/useMessageNotifications.d.ts +3 -6
  99. package/dist/composables.d.ts +4 -2
  100. package/dist/composables.js +50 -45
  101. package/dist/feedback.d.ts +1 -0
  102. package/dist/feedback.js +12 -11
  103. package/dist/fetchAuthPageAboutUs-dzTSwRsB.js +25 -0
  104. package/dist/{Clipboard-Bo7gdpR6.js → index-BkLvw1PU.js} +1 -1
  105. package/dist/landingPage.js +21 -21
  106. package/dist/legalDocs/buildBuiltinUrl.d.ts +3 -0
  107. package/dist/{utils/legalLinks.d.ts → legalDocs/constants.d.ts} +0 -10
  108. package/dist/legalDocs/index.d.ts +7 -0
  109. package/dist/legalDocs/isConfigured.d.ts +7 -0
  110. package/dist/legalDocs/open.d.ts +3 -0
  111. package/dist/legalDocs/resolveAppId.d.ts +8 -0
  112. package/dist/legalDocs/resolveTarget.d.ts +4 -0
  113. package/dist/legalDocs/types.d.ts +12 -0
  114. package/dist/main.js +320 -308
  115. package/dist/message.d.ts +3 -0
  116. package/dist/message.js +301 -21
  117. package/dist/pay.d.ts +1 -1
  118. package/dist/pay.js +14 -17
  119. package/dist/privateCom.js +1 -1
  120. package/dist/referrer.js +1 -1
  121. package/dist/style.css +1 -1
  122. package/dist/types/api/auth.generated.d.ts +1385 -328
  123. package/dist/types/api/billing.generated.d.ts +907 -76
  124. package/dist/types/api/ones.generated.d.ts +131 -2
  125. package/dist/types/api.d.ts +1 -0
  126. package/dist/types/app.d.ts +10 -0
  127. package/dist/types/user.d.ts +1 -0
  128. package/dist/upload.js +2 -2
  129. package/dist/{useAuthkitAppsAuthPageInfo-C2yKgl8t.js → useAuthkitAppsAuthPageInfo-CNudJd04.js} +18 -17
  130. package/dist/useAuthkitAuth-3m0yW6uP.js +267 -0
  131. package/dist/{useAuthkitCreateAndUpdate-oo9517Gj.js → useAuthkitCreateAndUpdate-BsINsI-E.js} +1 -1
  132. package/dist/{useAuthkitUsersProfile-BZDk21c8.js → useAuthkitUsersProfile-DJlMsftY.js} +3 -3
  133. package/dist/useBillingStatusOptions-CfHQOFNw.js +71 -0
  134. package/dist/{useEnsureAuthenticated-BuIbxqsO.js → useEnsureAuthenticated-DNkCCy_Y.js} +2 -2
  135. package/dist/useLegalDocs-DQP_Yq6B.js +106 -0
  136. package/dist/{useMessageNotifications-D85_-mDq.js → useMessageNotifications-CAphguOm.js} +21 -24
  137. package/dist/useRoutePermission-CEiya9AM.js +218 -0
  138. package/dist/useSEO-CDWxbk8B.js +221 -0
  139. package/dist/useSubscriptionCheckout-d_M_rKRa.js +368 -0
  140. package/dist/{useUploadCos-BRKRzSy3.js → useUploadCos-C8BqFPkx.js} +1 -1
  141. package/dist/user.js +1 -1
  142. package/dist/userMenuModal-D-nDaYqM.js +66 -0
  143. package/dist/utils/apiMiddlewares.d.ts +5 -5
  144. package/dist/utils/apiResponse.d.ts +11 -0
  145. package/dist/utils/authProviderIcon.d.ts +3 -0
  146. package/dist/utils/authkit.d.ts +20 -7
  147. package/dist/utils/formatPoints.d.ts +8 -0
  148. package/dist/utils/messageNotificationContent.d.ts +4 -0
  149. package/dist/utils/messageTextLink.d.ts +9 -0
  150. package/dist/utils/passkeySupport.d.ts +8 -0
  151. package/dist/utils/pointsFlowTypes.d.ts +10 -0
  152. package/dist/utils/pointsHistoryDisplay.d.ts +8 -0
  153. package/dist/utils/refundStatusDisplay.d.ts +1 -0
  154. package/dist/utils/subscriptionDisplay.d.ts +7 -0
  155. package/dist/utils/userDisplay.d.ts +41 -0
  156. package/package.json +11 -3
  157. package/dist/AuthkitAppSetting-C-0uuLSg.js +0 -1921
  158. package/dist/AuthkitGithubBinding-C5zEy9zN.js +0 -2207
  159. package/dist/CustomTable-nsxN4Ja4.js +0 -276
  160. package/dist/FeedbackModal.vue_vue_type_script_setup_true_lang-M1NQ-rx-.js +0 -1396
  161. package/dist/LandingPageFAQ-CZJXvor9.js +0 -80
  162. package/dist/LandingPageSectionHeader-D_74W4My.js +0 -69
  163. package/dist/Menu-Cy2ZPeaz.js +0 -170
  164. package/dist/MessageHandle-BG12aX0i.js +0 -924
  165. package/dist/MessageList-CrCF8mU6.js +0 -233
  166. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-gsjL6yAe.js +0 -142
  167. package/dist/PaySubscriptions-lWnEioX5.js +0 -1241
  168. package/dist/PricingPlans-DFcjOMWS.js +0 -404
  169. package/dist/ReferrerReferees-Cn7KaO8z.js +0 -106
  170. package/dist/UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-P0X1Exyu.js +0 -520
  171. package/dist/WidthContainer-CF3qOLWW.js +0 -688
  172. package/dist/components/Feedback/FeedbackDetails.vue.d.ts +0 -178
  173. package/dist/composables/Authkit/useLegalLinks.d.ts +0 -34
  174. package/dist/index-D3Kp6R4z.js +0 -4
  175. package/dist/useAuthkitAuth-DmS-H7M2.js +0 -175
  176. package/dist/useBillingStatusOptions-B7xLU3fs.js +0 -145
  177. package/dist/useLegalLinks-Cwr45PBT.js +0 -60
  178. package/dist/useRoutePermission-CaWtjLRA.js +0 -212
  179. package/dist/useSEO-BSMQdBR9.js +0 -158
  180. package/dist/useSubscriptionCheckout-BRk5h9aC.js +0 -365
  181. package/dist/useTableHandle-BdujaiNX.js +0 -69
  182. /package/dist/components/{Feedback/FeedbackVideoPreview.vue.d.ts → VideoPreview.vue.d.ts} +0 -0
@@ -0,0 +1,427 @@
1
+ /* empty css */
2
+ import "./userMenuModal-D-nDaYqM.js";
3
+ import { f as ve } from "./apiClients-BcXOLuYu.js";
4
+ /* empty css */
5
+ import { defineComponent as K, computed as h, onMounted as ne, onUnmounted as pe, openBlock as n, createElementBlock as s, createElementVNode as i, unref as e, createBlock as O, toDisplayString as a, createVNode as k, withCtx as w, createTextVNode as A, ref as ye, resolveDirective as he, withDirectives as ke, normalizeClass as R, Fragment as I, renderList as C, createCommentVNode as y } from "vue";
6
+ import { Spin as se, Button as D, Message as B } from "@arco-design/web-vue";
7
+ import { useRoute as be, useRouter as Te } from "vue-router";
8
+ import { b as we } from "./PaySubscriptions-CXkEjqr2.js";
9
+ import { _ as U } from "./_plugin-vue_export-helper-CHgC5LLL.js";
10
+ import { L as Ie, a as Ce, b as Be } from "./LandingPageSectionHeader-CVAqc7bx.js";
11
+ import { Icon as te } from "@iconify/vue";
12
+ import { u as Le, a as Re } from "./useSubscriptionCheckout-d_M_rKRa.js";
13
+ import { u as Ae } from "./useEnsureAuthenticated-DNkCCy_Y.js";
14
+ const kt = "/Pay/Return";
15
+ function G(l) {
16
+ const _ = typeof l.scene == "string" ? l.scene : null, c = typeof l.orderId == "string" ? l.orderId : null, d = typeof l.returnTo == "string" ? l.returnTo.trim() : null, P = d != null && d.startsWith("/") && !d.startsWith("//") ? d : null;
17
+ return _ !== "subscription" && _ !== "recharge" && _ !== "agreement" ? {
18
+ scene: null,
19
+ orderId: c,
20
+ returnTo: P
21
+ } : {
22
+ scene: _,
23
+ orderId: (c == null ? void 0 : c.trim()) || null,
24
+ returnTo: P
25
+ };
26
+ }
27
+ function De(l, _) {
28
+ const {
29
+ returnTo: c
30
+ } = G(l);
31
+ return c || _;
32
+ }
33
+ const Se = {
34
+ class: "payment-return-page"
35
+ }, $e = {
36
+ class: "payment-return-card"
37
+ }, qe = {
38
+ key: 1,
39
+ class: "payment-return-icon success"
40
+ }, Fe = {
41
+ key: 2,
42
+ class: "payment-return-icon failed"
43
+ }, Ee = {
44
+ key: 3,
45
+ class: "payment-return-actions"
46
+ }, Ne = {
47
+ key: 4,
48
+ class: "payment-return-actions"
49
+ }, xe = /* @__PURE__ */ K({
50
+ __name: "PaymentReturnPage",
51
+ props: {
52
+ defaultReturnTo: {
53
+ default: "/Pricing"
54
+ }
55
+ },
56
+ setup(l) {
57
+ const _ = l, c = be(), d = Te();
58
+ function P() {
59
+ return De(c.query, _.defaultReturnTo);
60
+ }
61
+ const {
62
+ phase: f,
63
+ message: b,
64
+ checking: E,
65
+ confirmPayment: S,
66
+ stopPolling: N,
67
+ verifyNow: $
68
+ } = we(P), q = h(() => f.value === "success" ? "支付成功" : f.value === "failed" ? "支付未完成" : "正在确认支付");
69
+ function L() {
70
+ d.replace(P());
71
+ }
72
+ async function x() {
73
+ const {
74
+ scene: m,
75
+ orderId: u
76
+ } = G(c.query);
77
+ if (!m || !u) {
78
+ B.error("支付参数无效");
79
+ return;
80
+ }
81
+ try {
82
+ const v = await $(m, u);
83
+ if (v.success) {
84
+ f.value = "success", b.value = v.message || "支付成功", window.setTimeout(() => {
85
+ d.replace(P());
86
+ }, 1200);
87
+ return;
88
+ }
89
+ b.value = v.message || "等待支付确认...";
90
+ } catch (v) {
91
+ B.error(v instanceof Error ? v.message : "确认支付失败");
92
+ }
93
+ }
94
+ return ne(() => {
95
+ const {
96
+ scene: m,
97
+ orderId: u
98
+ } = G(c.query);
99
+ if (!m || !u) {
100
+ f.value = "failed", b.value = "缺少支付回跳参数";
101
+ return;
102
+ }
103
+ if (m === "agreement") {
104
+ f.value = "success", b.value = "签约流程已完成,正在返回...", window.setTimeout(() => {
105
+ d.replace(P());
106
+ }, 1200);
107
+ return;
108
+ }
109
+ S(m, u);
110
+ }), pe(N), (m, u) => (n(), s("div", Se, [i("div", $e, [e(f) === "loading" ? (n(), O(e(se), {
111
+ key: 0,
112
+ size: 36
113
+ })) : e(f) === "success" ? (n(), s("div", qe, "✓")) : (n(), s("div", Fe, "!")), i("h1", null, a(q.value), 1), i("p", null, a(e(b)), 1), e(f) === "loading" ? (n(), s("div", Ee, [k(e(D), {
114
+ loading: e(E),
115
+ type: "primary",
116
+ onClick: x
117
+ }, {
118
+ default: w(() => [...u[0] || (u[0] = [A(" 我已完成支付 ", -1)])]),
119
+ _: 1
120
+ }, 8, ["loading"]), k(e(D), {
121
+ onClick: L
122
+ }, {
123
+ default: w(() => [...u[1] || (u[1] = [A("返回", -1)])]),
124
+ _: 1
125
+ })])) : (n(), s("div", Ne, [k(e(D), {
126
+ type: "primary",
127
+ onClick: L
128
+ }, {
129
+ default: w(() => [...u[2] || (u[2] = [A("返回", -1)])]),
130
+ _: 1
131
+ })]))])]));
132
+ }
133
+ }), bt = /* @__PURE__ */ U(xe, [["__scopeId", "data-v-b72bedf1"]]), Me = /* @__PURE__ */ K({
134
+ __name: "PricingFAQ",
135
+ props: {
136
+ title: {
137
+ default: "订阅常见问题"
138
+ },
139
+ subtitle: {
140
+ default: "关于试用、付款、配额、升级和取消订阅的说明。"
141
+ },
142
+ activeKeys: {
143
+ default: () => []
144
+ },
145
+ faqItems: {
146
+ default: void 0
147
+ }
148
+ },
149
+ setup(l) {
150
+ const _ = [{
151
+ question: "可以先试用再付费吗?",
152
+ answer: "可以。支持试用的方案会在卡片按钮上标明试用天数。试用期间可使用对应方案能力,到期后再决定是否继续订阅。"
153
+ }, {
154
+ question: "月付和年付有什么区别?",
155
+ answer: "月付适合短期验证和灵活使用,年付适合稳定团队和长期项目,通常会有更优惠的价格。"
156
+ }, {
157
+ question: "已有订阅后可以升级或切换方案吗?",
158
+ answer: "可以。升级或切换方案时,系统会根据当前订阅和新方案计算差额;如需补差价,会跳转到支付页面完成支付。"
159
+ }, {
160
+ question: "取消订阅后还能继续使用吗?",
161
+ answer: "可以。取消订阅后,当前计费周期内仍可继续使用,周期结束后订阅权益将停止续期。"
162
+ }, {
163
+ question: "配额什么时候重置?",
164
+ answer: "配额按订阅周期重置,不一定是自然月月初。例如您在 4 月 15 日订阅月付方案,下一次配额重置通常发生在 5 月 15 日。"
165
+ }, {
166
+ question: "不同方案的技术支持有什么区别?",
167
+ answer: "基础方案适合个人和轻量团队,包含常规支持;更高等级方案面向正式团队和生产场景,通常包含更高优先级支持。"
168
+ }, {
169
+ question: "是否支持退款?",
170
+ answer: "订阅可随时取消。退款规则以付费服务协议为准,如遇到重复扣费或异常支付,可以联系支持团队处理。"
171
+ }, {
172
+ question: "使用订阅服务有什么限制?",
173
+ answer: "请按正常业务场景使用服务,禁止共享、转售订阅或用于违法违规场景。严重滥用可能导致服务受限或账户终止。"
174
+ }], c = l, d = h(() => c.faqItems ?? _);
175
+ return (P, f) => (n(), O(Ie, {
176
+ class: "PricingFAQ"
177
+ }, {
178
+ BlockHeader: w(() => [k(Be, {
179
+ title: l.title,
180
+ subtitle: l.subtitle
181
+ }, null, 8, ["title", "subtitle"])]),
182
+ BlockBody: w(() => [k(Ce, {
183
+ "active-keys": l.activeKeys,
184
+ "faq-items": d.value
185
+ }, null, 8, ["active-keys", "faq-items"])]),
186
+ _: 1
187
+ }));
188
+ }
189
+ }), Tt = /* @__PURE__ */ U(Me, [["__scopeId", "data-v-fcab2f05"]]), Qe = {
190
+ class: "PricingPlans"
191
+ }, Ve = {
192
+ class: "PricingPlans__trialMain"
193
+ }, ze = {
194
+ class: "PricingPlans__trialCopy"
195
+ }, He = {
196
+ key: 0,
197
+ class: "PricingPlans__trialFeatures"
198
+ }, Ge = {
199
+ class: "PricingPlans__trialAction"
200
+ }, Ke = {
201
+ key: 1,
202
+ class: "PricingPlans__toolbar"
203
+ }, Oe = {
204
+ key: 0,
205
+ class: "PricingPlans__toggle",
206
+ role: "tablist",
207
+ "aria-label": "计费周期"
208
+ }, Ue = ["onClick"], We = {
209
+ key: 0,
210
+ class: "PricingPlans__toggleBadge"
211
+ }, je = {
212
+ key: 1,
213
+ class: "PricingPlans__note"
214
+ }, Ye = {
215
+ class: "PricingPlans__badgeRow"
216
+ }, Je = {
217
+ class: "PricingPlans__header"
218
+ }, Xe = {
219
+ class: "PricingPlans__price"
220
+ }, Ze = {
221
+ key: 0,
222
+ class: "PricingPlans__originalPrice"
223
+ }, et = {
224
+ class: "PricingPlans__amount"
225
+ }, tt = {
226
+ class: "PricingPlans__cycle"
227
+ }, nt = {
228
+ key: 0,
229
+ class: "PricingPlans__promotion"
230
+ }, st = {
231
+ class: "PricingPlans__summary"
232
+ }, it = {
233
+ class: "PricingPlans__featureGroups"
234
+ }, rt = {
235
+ class: "PricingPlans__features"
236
+ }, at = {
237
+ key: 3,
238
+ class: "PricingPlans__empty"
239
+ }, lt = /* @__PURE__ */ K({
240
+ __name: "PricingPlans",
241
+ props: {
242
+ appName: {
243
+ default: "Huyooo"
244
+ },
245
+ defaultInterval: {
246
+ default: "month"
247
+ },
248
+ note: {
249
+ default: ""
250
+ }
251
+ },
252
+ setup(l) {
253
+ const _ = l, {
254
+ products: c,
255
+ plans: d,
256
+ currentSubscription: P,
257
+ currentLoading: f,
258
+ listLoading: b,
259
+ billingInterval: E,
260
+ billingIntervalTabs: S,
261
+ setBillingInterval: N,
262
+ currentTrial: $,
263
+ isCurrentPlan: q,
264
+ isRecommendedPlan: L,
265
+ isFreePlan: x,
266
+ isPlanActionDisabled: m,
267
+ getDisplayPrice: u,
268
+ getDisplayOriginalPrice: v,
269
+ getDisplayCycle: ie,
270
+ getPromotionLabel: W,
271
+ getBadgeLabels: re,
272
+ getButtonLabel: ae,
273
+ getPlanSummary: j,
274
+ getFeatureGroups: Y,
275
+ loadCurrentSubscription: M,
276
+ refresh: le
277
+ } = Le(_.defaultInterval), p = h(() => {
278
+ if (!P.value)
279
+ for (const r of c.value) {
280
+ const o = r.prices.find((g) => g.type === "free");
281
+ if (o)
282
+ return {
283
+ ...r,
284
+ features: o.features ?? [],
285
+ selectedPrice: o
286
+ };
287
+ }
288
+ }), F = h(() => d.value.filter((r) => !x(r))), Q = ye(!1), oe = h(() => !!localStorage.getItem("jwtToken")), V = h(() => !!$.value), ce = h(() => {
289
+ var g, t;
290
+ const r = $.value, o = (t = (g = p.value) == null ? void 0 : g.selectedPrice) == null ? void 0 : t.id;
291
+ return !r || !o ? !1 : r.priceId === o;
292
+ }), z = h(() => Q.value || oe.value && f.value && !V.value), J = h(() => V.value || z.value), {
293
+ checkout: ue,
294
+ isCheckingOut: de
295
+ } = Re({
296
+ currentSubscription: P,
297
+ refreshCurrentSubscription: M
298
+ }), {
299
+ ensureAuthenticated: _e
300
+ } = Ae();
301
+ function ge(r) {
302
+ return r === 1 ? "适合团队协作与更高频使用" : "适合个人和轻量团队使用";
303
+ }
304
+ function X(r) {
305
+ return Y(r.features).flatMap((o) => o.items).slice(0, 3);
306
+ }
307
+ function Pe(r) {
308
+ return (r.description || j(r, 0)).replace(/^\s*\d+\s*天(?:免费)?体验[,,、\s]*/, "").replace(/^\s*免费体验[,,、\s]*/, "").trim();
309
+ }
310
+ function fe() {
311
+ return z.value ? "权益加载中" : ce.value ? "正在体验免费体验" : V.value ? "已有当前权益" : "立即体验";
312
+ }
313
+ async function me() {
314
+ var o;
315
+ const r = p.value;
316
+ if (!((o = r == null ? void 0 : r.selectedPrice) != null && o.id)) {
317
+ B.warning("当前暂无可用体验方案");
318
+ return;
319
+ }
320
+ Q.value = !0;
321
+ try {
322
+ const {
323
+ error: g
324
+ } = await ve.trials.start.post({
325
+ priceId: r.selectedPrice.id
326
+ });
327
+ if (g) {
328
+ const t = g.message || "领取免费体验失败";
329
+ t.includes("已领取") && B.info(t), await M();
330
+ return;
331
+ }
332
+ B.success("免费体验已开始"), await M();
333
+ } catch (g) {
334
+ B.error(g instanceof Error ? g.message : "领取免费体验失败");
335
+ } finally {
336
+ Q.value = !1;
337
+ }
338
+ }
339
+ async function Z() {
340
+ J.value || _e(() => Z()) && await me();
341
+ }
342
+ return ne(() => {
343
+ le();
344
+ }), (r, o) => {
345
+ const g = he("motion-slide-top");
346
+ return n(), s("section", Qe, [ke((n(), O(e(se), {
347
+ loading: e(b),
348
+ tip: "数据加载中",
349
+ class: "PricingPlans__spin"
350
+ }, {
351
+ default: w(() => [p.value ? (n(), s("article", {
352
+ key: 0,
353
+ class: R(["PricingPlans__trial", {
354
+ "is-current": e(q)(p.value)
355
+ }])
356
+ }, [i("div", Ve, [i("div", ze, [i("h2", null, a(p.value.name), 1), i("p", null, a(Pe(p.value)), 1), X(p.value).length ? (n(), s("ul", He, [(n(!0), s(I, null, C(X(p.value), (t) => (n(), s("li", {
357
+ key: t.title
358
+ }, [k(e(te), {
359
+ icon: "mingcute:check-circle-fill",
360
+ class: "PricingPlans__trialFeatureIcon"
361
+ }), i("span", null, a(t.title), 1)]))), 128))])) : y("", !0)]), i("div", Ge, [k(e(D), {
362
+ size: "large",
363
+ class: "PricingPlans__trialButton",
364
+ loading: z.value,
365
+ disabled: J.value,
366
+ onClick: Z
367
+ }, {
368
+ default: w(() => [A(a(fe()), 1)]),
369
+ _: 1
370
+ }, 8, ["loading", "disabled"])])])], 2)) : y("", !0), F.value.length ? (n(), s("div", Ke, [e(S).length > 1 ? (n(), s("div", Oe, [(n(!0), s(I, null, C(e(S), (t) => (n(), s("button", {
371
+ key: t.value,
372
+ type: "button",
373
+ class: R(["PricingPlans__toggleItem", {
374
+ "is-active": e(E) === t.value
375
+ }]),
376
+ onClick: (H) => e(N)(t.value)
377
+ }, [i("span", null, a(t.label), 1), t.badge ? (n(), s("span", We, a(t.badge), 1)) : y("", !0)], 10, Ue))), 128))])) : y("", !0), l.note ? (n(), s("p", je, a(l.note), 1)) : y("", !0)])) : y("", !0), F.value.length ? (n(), s("div", {
378
+ key: 2,
379
+ class: R(["PricingPlans__grid", {
380
+ "PricingPlans__grid--compact": F.value.length <= 2
381
+ }])
382
+ }, [(n(!0), s(I, null, C(F.value, (t, H) => (n(), s("article", {
383
+ key: t.id,
384
+ class: R(["PricingPlans__card", {
385
+ "is-recommended": e(L)(t),
386
+ "is-current": e(q)(t)
387
+ }])
388
+ }, [i("div", Ye, [(n(!0), s(I, null, C(e(re)(t), (T) => (n(), s("span", {
389
+ key: T.type,
390
+ class: R(["PricingPlans__badge", `is-${T.type}`])
391
+ }, a(T.label), 3))), 128))]), i("div", Je, [i("h2", null, a(t.name), 1), i("p", null, a(t.description || ge(H)), 1)]), i("div", Xe, [e(v)(t) ? (n(), s("span", Ze, " ¥" + a(e(v)(t)), 1)) : y("", !0), o[0] || (o[0] = i("span", {
392
+ class: "PricingPlans__currency"
393
+ }, "¥", -1)), i("span", et, a(e(u)(t)), 1), i("span", tt, a(e(ie)(t)), 1)]), e(W)(t) ? (n(), s("p", nt, a(e(W)(t)), 1)) : y("", !0), i("p", st, a(e(j)(t, H)), 1), k(e(D), {
394
+ long: "",
395
+ size: "large",
396
+ class: "PricingPlans__button",
397
+ type: e(L)(t) ? "primary" : "outline",
398
+ loading: e(de)(t),
399
+ disabled: e(m)(t),
400
+ onClick: (T) => e(ue)(t)
401
+ }, {
402
+ default: w(() => [A(a(e(ae)(t)), 1)]),
403
+ _: 2
404
+ }, 1032, ["type", "loading", "disabled", "onClick"]), o[1] || (o[1] = i("div", {
405
+ class: "PricingPlans__divider"
406
+ }, null, -1)), i("div", it, [(n(!0), s(I, null, C(e(Y)(t.features), (T) => (n(), s("section", {
407
+ key: T.title,
408
+ class: "PricingPlans__featureGroup"
409
+ }, [i("h3", null, a(T.title), 1), i("ul", rt, [(n(!0), s(I, null, C(T.items, (ee) => (n(), s("li", {
410
+ key: ee.title
411
+ }, [k(e(te), {
412
+ icon: "mingcute:check-circle-fill",
413
+ class: "PricingPlans__featureIcon"
414
+ }), i("span", null, a(ee.title), 1)]))), 128))])]))), 128))])], 2))), 128))], 2)) : !p.value && !e(b) ? (n(), s("div", at, " 当前暂无可订阅方案 ")) : y("", !0)]),
415
+ _: 1
416
+ }, 8, ["loading"])), [[g]])]);
417
+ };
418
+ }
419
+ }), wt = /* @__PURE__ */ U(lt, [["__scopeId", "data-v-ac377d88"]]);
420
+ export {
421
+ kt as P,
422
+ bt as a,
423
+ Tt as b,
424
+ wt as c,
425
+ G as p,
426
+ De as r
427
+ };
@@ -0,0 +1,237 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ import { U as V } from "./userMenuModal-D-nDaYqM.js";
4
+ import { defineComponent as U, computed as C, openBlock as I, createElementBlock as b, createVNode as N, unref as o, withCtx as k, createTextVNode as A, toDisplayString as h, createElementVNode as m, createCommentVNode as w, ref as _, createBlock as x } from "vue";
5
+ import { Avatar as W, Modal as z } from "@arco-design/web-vue";
6
+ import { e as B } from "./apiClients-BcXOLuYu.js";
7
+ import { C as P } from "./CustomTable-BzGfaAVH.js";
8
+ import { C as G } from "./index-BkLvw1PU.js";
9
+ /* empty css */
10
+ import { _ as D } from "./_plugin-vue_export-helper-CHgC5LLL.js";
11
+ import { u as H } from "./useAuthkitUsersProfile-DJlMsftY.js";
12
+ const j = {
13
+ email: "邮箱",
14
+ phone: "手机",
15
+ "oauth.github": "GitHub",
16
+ "oauth.google": "Google",
17
+ "oauth.microsoft": "Microsoft",
18
+ "oauth.wechat": "微信"
19
+ };
20
+ function O(e) {
21
+ return e ? j[e] || e : "—";
22
+ }
23
+ function i(e) {
24
+ return (e == null ? void 0 : e.trim()) || "";
25
+ }
26
+ function q(e, t) {
27
+ const r = i(e), a = i(t);
28
+ return !r || !a ? !1 : r === `用户${a.slice(-6)}`;
29
+ }
30
+ function L(e, t) {
31
+ const r = i(e);
32
+ return !!r && !q(r, t);
33
+ }
34
+ function S(e) {
35
+ return i(e.email) || i(e.phone);
36
+ }
37
+ function he(e) {
38
+ const t = S(e);
39
+ return L(e.nickname, e.userId) ? i(e.nickname) : t || i(e.nickname);
40
+ }
41
+ function ge(e) {
42
+ const t = S(e);
43
+ return !L(e.nickname, e.userId) || !t ? "" : t;
44
+ }
45
+ function T(e, t) {
46
+ const r = i(e == null ? void 0 : e.displayName);
47
+ if (r)
48
+ return r;
49
+ const a = i(t || (e == null ? void 0 : e.id));
50
+ return a ? `用户${a.slice(-6)}` : "未知用户";
51
+ }
52
+ function J(e) {
53
+ return i(e == null ? void 0 : e.maskedContact) || "";
54
+ }
55
+ function K(e, t) {
56
+ const r = T(e, t);
57
+ return r === "未知用户" ? "?" : r.charAt(0).toUpperCase();
58
+ }
59
+ function Q(e) {
60
+ return i(e == null ? void 0 : e.avatarUrl);
61
+ }
62
+ const X = {
63
+ class: "referrer-referee-cell"
64
+ }, Y = {
65
+ class: "referrer-referee-cell__meta"
66
+ }, Z = {
67
+ class: "referrer-referee-cell__primary"
68
+ }, F = {
69
+ key: 0,
70
+ class: "referrer-referee-cell__secondary"
71
+ }, ee = /* @__PURE__ */ U({
72
+ __name: "ReferrerRefereeCell",
73
+ props: {
74
+ user: {},
75
+ userId: {}
76
+ },
77
+ setup(e) {
78
+ const t = e, r = C(() => T(t.user, t.userId)), a = C(() => J(t.user)), n = C(() => K(t.user, t.userId)), l = C(() => Q(t.user));
79
+ return (c, v) => (I(), b("div", X, [N(o(W), {
80
+ size: 32,
81
+ "image-url": l.value,
82
+ "object-fit": "cover"
83
+ }, {
84
+ default: k(() => [A(h(n.value), 1)]),
85
+ _: 1
86
+ }, 8, ["image-url"]), m("div", Y, [m("span", Z, h(r.value), 1), a.value ? (I(), b("span", F, h(a.value), 1)) : w("", !0)])]));
87
+ }
88
+ }), te = /* @__PURE__ */ D(ee, [["__scopeId", "data-v-8e8704b9"]]);
89
+ function re(e, t = {}) {
90
+ const r = t.pageSize ?? 10, a = _([]), n = _(!1), l = _(!1), c = _(1);
91
+ async function v() {
92
+ if (!n.value) {
93
+ c.value = 1, l.value = !1, n.value = !0;
94
+ try {
95
+ const s = await e({
96
+ current: c.value,
97
+ pageSize: r
98
+ }), f = (s == null ? void 0 : s.items) ?? [];
99
+ a.value = f, l.value = f.length < r;
100
+ } finally {
101
+ n.value = !1;
102
+ }
103
+ }
104
+ }
105
+ async function M() {
106
+ if (!(n.value || l.value)) {
107
+ c.value += 1, n.value = !0;
108
+ try {
109
+ const s = await e({
110
+ current: c.value,
111
+ pageSize: r
112
+ }), f = (s == null ? void 0 : s.items) ?? [];
113
+ a.value = [...a.value, ...f], l.value = f.length < r;
114
+ } finally {
115
+ n.value = !1;
116
+ }
117
+ }
118
+ }
119
+ return {
120
+ items: a,
121
+ loading: n,
122
+ finished: l,
123
+ refresh: v,
124
+ loadMore: M
125
+ };
126
+ }
127
+ const ae = {
128
+ class: "invite-code-section"
129
+ }, ne = {
130
+ class: "invite-code-value"
131
+ }, oe = /* @__PURE__ */ U({
132
+ __name: "ReferrerReferees",
133
+ emits: ["cancel"],
134
+ setup(e, {
135
+ expose: t,
136
+ emit: r
137
+ }) {
138
+ const a = r, {
139
+ userProfile: n
140
+ } = H(), l = [{
141
+ dataIndex: "referee",
142
+ slotName: "referee",
143
+ title: "被邀请人",
144
+ minWidth: 220,
145
+ ellipsis: !0,
146
+ tooltip: !0
147
+ }, {
148
+ dataIndex: "registerMethod",
149
+ slotName: "registerMethod",
150
+ title: "注册方式",
151
+ minWidth: 100
152
+ }, {
153
+ dataIndex: "createAt",
154
+ slotName: "createAt",
155
+ title: "邀请时间",
156
+ minWidth: 172,
157
+ ellipsis: !0,
158
+ tooltip: !0
159
+ }], {
160
+ items: c,
161
+ loading: v,
162
+ finished: M,
163
+ refresh: s,
164
+ loadMore: f
165
+ } = re(async ({
166
+ current: p,
167
+ pageSize: d
168
+ }) => {
169
+ const {
170
+ data: u
171
+ } = await B.referrer.referees.post({
172
+ current: p,
173
+ pageSize: d
174
+ });
175
+ return u ? {
176
+ items: u.items ?? []
177
+ } : {
178
+ items: []
179
+ };
180
+ }), g = _(!1);
181
+ function $() {
182
+ g.value = !1, a("cancel");
183
+ }
184
+ function E(p) {
185
+ g.value = p, p && s();
186
+ }
187
+ return t({
188
+ setData: E,
189
+ refresh: s
190
+ }), (p, d) => (I(), x(o(z), {
191
+ visible: g.value,
192
+ "onUpdate:visible": d[0] || (d[0] = (u) => g.value = u),
193
+ title: "我的邀请",
194
+ width: o(V),
195
+ "ok-loading": o(v),
196
+ footer: !1,
197
+ "mask-closable": !1,
198
+ "unmount-on-close": "",
199
+ onCancel: $
200
+ }, {
201
+ default: k(() => {
202
+ var u, R;
203
+ return [m("div", ae, [d[1] || (d[1] = m("div", {
204
+ class: "invite-code-label"
205
+ }, "我的邀请码:", -1)), m("div", ne, [m("span", null, h(((u = o(n)) == null ? void 0 : u.personalInviteCode) || "-"), 1), (R = o(n)) != null && R.personalInviteCode ? (I(), x(G, {
206
+ key: 0,
207
+ value: o(n).personalInviteCode,
208
+ message: "邀请码复制成功"
209
+ }, null, 8, ["value"])) : w("", !0)])]), N(P, {
210
+ columns: l,
211
+ data: o(c),
212
+ loading: o(v),
213
+ "infinite-scroll": "",
214
+ finished: o(M),
215
+ onLoadMore: o(f)
216
+ }, {
217
+ referee: k(({
218
+ record: y
219
+ }) => [N(te, {
220
+ user: y.refereeInfo,
221
+ "user-id": y.refereeId
222
+ }, null, 8, ["user", "user-id"])]),
223
+ registerMethod: k(({
224
+ record: y
225
+ }) => [A(h(o(O)(y.registerMethod)), 1)]),
226
+ _: 1
227
+ }, 8, ["data", "loading", "finished", "onLoadMore"])];
228
+ }),
229
+ _: 1
230
+ }, 8, ["visible", "width", "ok-loading"]));
231
+ }
232
+ }), ye = /* @__PURE__ */ D(oe, [["__scopeId", "data-v-5844abd6"]]);
233
+ export {
234
+ ye as R,
235
+ ge as a,
236
+ he as g
237
+ };
@@ -6,7 +6,7 @@
6
6
  /* empty css */
7
7
  import { defineComponent as g, openBlock as F, createBlock as h, unref as q, mergeProps as y, createSlots as I, withCtx as p, renderSlot as u } from "vue";
8
8
  import { Upload as S } from "@arco-design/web-vue";
9
- import { u as _ } from "./useUploadCos-BRKRzSy3.js";
9
+ import { u as _ } from "./useUploadCos-C8BqFPkx.js";
10
10
  const N = /* @__PURE__ */ g({
11
11
  __name: "Upload",
12
12
  props: {