@huyooo/ui 0.5.3 → 0.5.5

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 (48) hide show
  1. package/dist/{AuthkitAuthModal-cEi5Hm14.js → AuthkitAuthModal-BjqMoIed.js} +141 -162
  2. package/dist/AuthkitAuthModal.vue_vue_type_style_index_1_lang-BpOmabWi.js +10 -0
  3. package/dist/{AuthkitAuthorize-DksJZktr.js → AuthkitAuthorize-DWb0xKRa.js} +12 -15
  4. package/dist/{Clipboard-CGm0G1dN.js → Clipboard-Bful1lNJ.js} +1 -1
  5. package/dist/CustomTable-B8i1SbFB.js +202 -0
  6. package/dist/{FeedbackItem-Day3rfSw.js → FeedbackItem-bPlL6uEE.js} +15 -14
  7. package/dist/{FeedbackModal-CsRXm-MY.js → FeedbackModal-DJx3R3rM.js} +22 -25
  8. package/dist/Introduce-e3nEDSRY.js +390 -0
  9. package/dist/LandingPageSectionHeader-Dlc5rL21.js +463 -0
  10. package/dist/LandingPageSectionTabs-CrFrtbqu.js +1369 -0
  11. package/dist/{MessageHandle-DqH_478k.js → MessageHandle-BJH_S-61.js} +37 -45
  12. package/dist/{PaySubscriptions-Dp8y1fdJ.js → PaySubscriptions-BGl9BQru.js} +17 -16
  13. package/dist/{ReferrerReferees-xIXZglpy.js → ReferrerReferees-oi-zzWCo.js} +20 -19
  14. package/dist/{Upload.vue_vue_type_script_setup_true_lang-CxGZSDoo.js → Upload.vue_vue_type_script_setup_true_lang-CDyUt05d.js} +11 -10
  15. package/dist/{UserAccountMenu-DD3zoOBd.js → UserAccountMenu-BD8F9vEK.js} +1 -1
  16. package/dist/{UserPanel-C1NGdsFk.js → UserPanel-C6XusLxb.js} +23 -24
  17. package/dist/{WidthContainer-C30YFs9X.js → WidthContainer-uWfPyPEH.js} +19 -18
  18. package/dist/authkit.js +12 -11
  19. package/dist/common.js +2 -2
  20. package/dist/components/PrivateCom/BodyAndFooterLayout.vue.d.ts +17 -0
  21. package/dist/components/PrivateCom/Footer.vue.d.ts +2 -0
  22. package/dist/components/PrivateCom/Introduce.vue.d.ts +2 -0
  23. package/dist/components/PrivateCom/useSEO.d.ts +71 -0
  24. package/dist/composables.js +26 -25
  25. package/dist/feedback.js +3 -3
  26. package/dist/index-Bb-d5pBq.js +1167 -0
  27. package/dist/index.js +367 -359
  28. package/dist/landingPage.js +46 -45
  29. package/dist/main.d.ts +1 -0
  30. package/dist/message.js +2 -2
  31. package/dist/pay.js +1 -1
  32. package/dist/privateCom.d.ts +4 -0
  33. package/dist/privateCom.js +8 -0
  34. package/dist/referrer.js +1 -1
  35. package/dist/style.css +1 -1
  36. package/dist/upload.js +2 -2
  37. package/dist/{AuthkitAuthModal.vue_vue_type_style_index_1_lang-B-QKS_BT.js → useAuthkitAppsAuthPageInfo-Dr5K7ULW.js} +16 -23
  38. package/dist/{useAuthkitUsersProfile-D2UZf7n0.js → useAuthkitUsersProfile-DNOB_Kuk.js} +1 -1
  39. package/dist/{useMessageNotifications-BahKMcby.js → useMessageNotifications-DOH1MS61.js} +1 -1
  40. package/dist/{useRoutePermission-Uxu5S3m1.js → useRoutePermission-DuZZniIv.js} +18 -17
  41. package/dist/{useUploadCos-DNKp_9xt.js → useUploadCos-B5P_PDcy.js} +2 -2
  42. package/dist/user.js +2 -2
  43. package/package.json +6 -1
  44. package/dist/CustomTable-kfI18phy.js +0 -1359
  45. package/dist/LandingPageSectionTabs-DPTZIwiJ.js +0 -1838
  46. package/dist/utils/landingPage.d.ts +0 -1
  47. /package/dist/{index-DaMA6jEr.js → _commonjsHelpers-DaMA6jEr.js} +0 -0
  48. /package/dist/{index-DZIhLe1R.js → globalConfig-DZIhLe1R.js} +0 -0
@@ -0,0 +1,1369 @@
1
+ import { createElementBlock as o, openBlock as n, renderSlot as g, defineComponent as _, createVNode as p, withCtx as m, createElementVNode as e, normalizeStyle as w, Fragment as v, createTextVNode as h, ref as k, renderList as b, toDisplayString as l, normalizeClass as x, unref as L, withModifiers as M, createCommentVNode as S, withDirectives as T, vModelText as A, createBlock as P, computed as q, createStaticVNode as z, watch as B, vShow as j } from "vue";
2
+ import { _ as u } from "./_plugin-vue_export-helper-CHgC5LLL.js";
3
+ import { k as E, l as N, i as O, D as C, g as U } from "./LandingPageSectionHeader-Dlc5rL21.js";
4
+ import { Icon as I } from "@iconify/vue";
5
+ import { C as G, a as R } from "./CollapseItem-Cw1vcdLu.js";
6
+ /* empty css */
7
+ /* empty css */
8
+ import { Tag as W } from "@arco-design/web-vue";
9
+ const K = {}, J = {
10
+ class: "SubTitle"
11
+ };
12
+ function Z(a, t) {
13
+ return n(), o("div", J, [g(a.$slots, "default", {}, void 0, !0)]);
14
+ }
15
+ const V = /* @__PURE__ */ u(K, [["render", Z], ["__scopeId", "data-v-3decf2d4"]]), Q = {}, Y = {
16
+ class: "Title"
17
+ };
18
+ function X(a, t) {
19
+ return n(), o("h2", Y, [g(a.$slots, "default", {}, void 0, !0)]);
20
+ }
21
+ const D = /* @__PURE__ */ u(Q, [["render", X], ["__scopeId", "data-v-58078aa8"]]), ee = {
22
+ class: "BlockHeader"
23
+ }, te = /* @__PURE__ */ _({
24
+ __name: "LandingPageBlockHeader",
25
+ setup(a) {
26
+ return (t, c) => (n(), o("div", ee, [p(D, {
27
+ class: "BlockHeaderTitle"
28
+ }, {
29
+ default: m(() => [g(t.$slots, "title", {}, void 0, !0)]),
30
+ _: 3
31
+ }), p(V, {
32
+ class: "BlockHeaderSubTitle"
33
+ }, {
34
+ default: m(() => [g(t.$slots, "subTitle", {}, void 0, !0)]),
35
+ _: 3
36
+ })]));
37
+ }
38
+ }), se = /* @__PURE__ */ u(te, [["__scopeId", "data-v-8d51bb3a"]]), ae = {
39
+ class: "BlockLayout"
40
+ }, ne = /* @__PURE__ */ _({
41
+ __name: "LandingPageBlockLayout",
42
+ props: {
43
+ columns: {
44
+ type: Number,
45
+ default: 1
46
+ },
47
+ flexDirection: {
48
+ type: String,
49
+ default: "column"
50
+ }
51
+ },
52
+ setup(a) {
53
+ const t = a;
54
+ return (c, i) => (n(), o("section", ae, [g(c.$slots, "BlockHeader", {}, void 0, !0), e("div", {
55
+ class: "BlockBody",
56
+ style: w({
57
+ gridTemplateColumns: `repeat(${t.columns}, 1fr)`,
58
+ flexDirection: t.flexDirection
59
+ })
60
+ }, [g(c.$slots, "BlockBody", {}, void 0, !0)], 4)]));
61
+ }
62
+ }), oe = /* @__PURE__ */ u(ne, [["__scopeId", "data-v-84ed1aaa"]]), ie = /* @__PURE__ */ _({
63
+ __name: "LandingPageAbout",
64
+ setup(a) {
65
+ const t = [{
66
+ data: {
67
+ name: "Janette Lynch",
68
+ title: "Senior Director",
69
+ avatar: {
70
+ src: "https://images.unsplash.com/photo-1580489944761-15a19d654956?&fit=crop&w=280",
71
+ alt: "Janette Lynch"
72
+ }
73
+ }
74
+ }, {
75
+ data: {
76
+ name: "Marcell Ziemann",
77
+ title: "Principal Strategist",
78
+ avatar: {
79
+ src: "https://images.unsplash.com/photo-1633332755192-727a05c4013d?&fit=crop&w=280",
80
+ alt: "Marcell Ziemann"
81
+ }
82
+ }
83
+ }, {
84
+ data: {
85
+ name: "Robert Palmer",
86
+ title: "Marketing Engineer",
87
+ avatar: {
88
+ src: "https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?&fit=crop&w=280",
89
+ alt: "Robert Palmer"
90
+ }
91
+ }
92
+ }, {
93
+ data: {
94
+ name: "Daniel Collins",
95
+ title: "Chief Sales Officer",
96
+ avatar: {
97
+ src: "https://astroship-pro.web3templates.com/_astro/photo-1487309078313-fad80c3ec1e5_6PMfa.avif",
98
+ alt: "Robert Palmer"
99
+ }
100
+ }
101
+ }];
102
+ return (c, i) => (n(), o(v, null, [p(oe, null, {
103
+ BlockHeader: m(() => [p(se, null, {
104
+ title: m(() => [...i[0] || (i[0] = [h("核心团队", -1)])]),
105
+ subTitle: m(() => [...i[1] || (i[1] = [h("我们是一个充满激情的小团队。", -1)])]),
106
+ _: 1
107
+ })]),
108
+ BlockBody: m(() => [p(E, {
109
+ title: "Empowering the world with Astro.",
110
+ description: "We're a multi-cultural team from around the world! We come from diverse backgrounds, bringing different personalities, experiences and skills to the job. This is what makes our team so special."
111
+ }), p(N, {
112
+ "published-team-members": t
113
+ })]),
114
+ _: 1
115
+ }), p(O, {
116
+ image: "https://astroship-pro.web3templates.com/_astro/employee.DPridi10_Z23eRat.avif",
117
+ "image-alt": "Happy Team",
118
+ title: "Mission",
119
+ highlight: "Our ",
120
+ description: "We're a multi-cultural team from around the world! ...",
121
+ features: ["Intelligent Task Management", "Real-time Collaboration", "Data Security & Privacy"]
122
+ })], 64));
123
+ }
124
+ }), ca = /* @__PURE__ */ u(ie, [["__scopeId", "data-v-a40e05a5"]]), ce = {
125
+ class: "nav"
126
+ }, le = {
127
+ class: "section"
128
+ }, re = ["href"], de = {
129
+ class: "section"
130
+ }, ue = ["href"], _e = /* @__PURE__ */ _({
131
+ __name: "LandingPageAside",
132
+ setup(a) {
133
+ const t = k([{
134
+ text: "Editor",
135
+ href: "/docs/editor/getting-started/overview"
136
+ }, {
137
+ text: "Collaboration",
138
+ href: "/docs/collaboration/getting-started/overview"
139
+ }, {
140
+ text: "Content AI",
141
+ href: "/docs/content-ai/getting-started/overview"
142
+ }, {
143
+ text: "Comments",
144
+ href: "/docs/comments/getting-started/overview"
145
+ }, {
146
+ text: "Documents",
147
+ href: "/docs/collaboration/documents"
148
+ }]), c = k([{
149
+ text: "Guides",
150
+ href: "/docs/guides"
151
+ }, {
152
+ text: "Examples",
153
+ href: "/docs/examples"
154
+ }, {
155
+ text: "Contributing",
156
+ href: "/docs/resources/contributing"
157
+ }, {
158
+ text: "Editor changelog",
159
+ href: "/docs/resources/changelog"
160
+ }, {
161
+ text: "Pro license",
162
+ href: "/docs/resources/pro-license"
163
+ }]);
164
+ return (i, s) => (n(), o("nav", ce, [s[2] || (s[2] = e("div", {
165
+ class: "section"
166
+ }, [e("div", {
167
+ class: "section-title"
168
+ }, "Getting started"), e("div", null, [e("a", {
169
+ class: "link active",
170
+ href: "/docs"
171
+ }, "Overview")])], -1)), e("div", le, [s[0] || (s[0] = e("div", {
172
+ class: "section-title"
173
+ }, "Browse by feature", -1)), e("div", null, [(n(!0), o(v, null, b(t.value, (r) => (n(), o("a", {
174
+ key: r.text,
175
+ class: "link",
176
+ href: r.href
177
+ }, l(r.text), 9, re))), 128))])]), e("div", de, [s[1] || (s[1] = e("div", {
178
+ class: "section-title"
179
+ }, "Resources", -1)), e("div", null, [(n(!0), o(v, null, b(c.value, (r) => (n(), o("a", {
180
+ key: r.text,
181
+ class: "link",
182
+ href: r.href
183
+ }, l(r.text), 9, ue))), 128))])])]));
184
+ }
185
+ }), la = /* @__PURE__ */ u(_e, [["__scopeId", "data-v-b516bb75"]]), pe = /* @__PURE__ */ _({
186
+ __name: "LandingPageButton",
187
+ props: {
188
+ type: {}
189
+ },
190
+ setup(a) {
191
+ return (t, c) => (n(), o("div", {
192
+ class: x(["heroButton", [a.type === "primary" ? "heroButtonPrimary" : "heroButtonSecondary"]])
193
+ }, [g(t.$slots, "default", {}, void 0, !0)], 2));
194
+ }
195
+ }), me = /* @__PURE__ */ u(pe, [["__scopeId", "data-v-d26fdf8b"]]), fe = {}, he = {
196
+ class: "Card"
197
+ };
198
+ function ge(a, t) {
199
+ return n(), o("div", he, [g(a.$slots, "default", {}, void 0, !0)]);
200
+ }
201
+ const H = /* @__PURE__ */ u(fe, [["render", ge], ["__scopeId", "data-v-cdb3f77d"]]), ve = {
202
+ class: "contact-container"
203
+ }, $e = {
204
+ class: "contact-info-section"
205
+ }, be = {
206
+ class: "contact-title"
207
+ }, ye = {
208
+ class: "contact-info"
209
+ }, ke = {
210
+ class: "contact-info-item"
211
+ }, xe = {
212
+ class: "contact-info-item"
213
+ }, Pe = ["href"], Le = {
214
+ class: "contact-info-item"
215
+ }, we = ["href"], Ce = {
216
+ class: "contact-form-section"
217
+ }, Ie = /* @__PURE__ */ _({
218
+ __name: "LandingPageContact",
219
+ props: {
220
+ title: {
221
+ default: ""
222
+ },
223
+ subTitle: {
224
+ default: ""
225
+ },
226
+ contact: {
227
+ default: () => ({
228
+ title: "联系我们",
229
+ description: "有什么想说的吗?我们随时为您提供帮助。请填写表单或发送邮件或拨打电话。"
230
+ })
231
+ },
232
+ address: {
233
+ default: "北京市朝阳区建国门外大街1号"
234
+ },
235
+ email: {
236
+ default: "hello@example.com"
237
+ },
238
+ phone: {
239
+ default: "+86 138 0000 0000"
240
+ },
241
+ mapIcon: {
242
+ default: "uil:map-marker"
243
+ },
244
+ emailIcon: {
245
+ default: "uil:envelope"
246
+ },
247
+ phoneIcon: {
248
+ default: "uil:phone"
249
+ }
250
+ },
251
+ setup(a) {
252
+ const t = a;
253
+ return (c, i) => (n(), o("div", ve, [e("div", $e, [e("h2", be, l(t.contact.title), 1), p(C, null, {
254
+ default: m(() => [h(l(t.contact.description), 1)]),
255
+ _: 1
256
+ }), e("div", ye, [e("div", ke, [p(L(I), {
257
+ class: "contact-info-icon",
258
+ icon: a.mapIcon
259
+ }, null, 8, ["icon"]), e("span", null, l(t.address), 1)]), e("div", xe, [p(L(I), {
260
+ class: "contact-info-icon",
261
+ icon: t.emailIcon
262
+ }, null, 8, ["icon"]), e("a", {
263
+ href: `mailto:${a.email}`
264
+ }, l(t.email), 9, Pe)]), e("div", Le, [p(L(I), {
265
+ class: "contact-info-icon",
266
+ icon: t.phoneIcon
267
+ }, null, 8, ["icon"]), e("a", {
268
+ href: `tel:${a.phone}`
269
+ }, l(t.phone), 9, we)])])]), e("div", Ce, [g(c.$slots, "contact-form", {}, void 0, !0)])]));
270
+ }
271
+ }), ra = /* @__PURE__ */ u(Ie, [["__scopeId", "data-v-50d64cb9"]]), Se = ["value"], Te = ["value"], Ae = {
272
+ class: "form-group"
273
+ }, Be = {
274
+ class: "form-group"
275
+ }, qe = {
276
+ class: "form-group"
277
+ }, Ve = {
278
+ type: "submit",
279
+ class: "form-button"
280
+ }, De = {
281
+ key: 0,
282
+ class: "button-content"
283
+ }, He = {
284
+ key: 1
285
+ }, Fe = /* @__PURE__ */ _({
286
+ __name: "LandingPageContactForm",
287
+ props: {
288
+ accessKey: {
289
+ default: "YOUR_ACCESS_KEY_HERE"
290
+ },
291
+ to: {
292
+ default: "support@huyooo.com"
293
+ }
294
+ },
295
+ setup(a) {
296
+ const t = a, c = k(!1), i = k(""), s = k(""), r = k({
297
+ name: "",
298
+ email: "",
299
+ message: ""
300
+ }), y = async ($) => {
301
+ c.value = !0;
302
+ const d = $.target;
303
+ if (!d.checkValidity()) {
304
+ d.querySelectorAll(":invalid")[0].focus();
305
+ return;
306
+ }
307
+ i.value = "发送中...", s.value = "";
308
+ try {
309
+ const f = await fetch("https://api.web3forms.com/submit", {
310
+ method: "POST",
311
+ headers: {
312
+ "Content-Type": "application/json",
313
+ Accept: "application/json"
314
+ },
315
+ body: JSON.stringify({
316
+ access_key: t.accessKey,
317
+ to: t.to,
318
+ name: r.value.name,
319
+ email: r.value.email,
320
+ message: r.value.message
321
+ })
322
+ });
323
+ await f.json(), f.status === 200 ? (s.value = "text-green", i.value = "消息发送成功!我们会尽快回复您。") : (s.value = "text-red", i.value = "发送失败,请检查网络连接后重试。");
324
+ } catch {
325
+ s.value = "text-red", i.value = "发送失败,请稍后再试!";
326
+ } finally {
327
+ d.reset(), c.value = !1, setTimeout(() => {
328
+ i.value = "";
329
+ }, 5e3);
330
+ }
331
+ };
332
+ return ($, d) => (n(), o("form", {
333
+ id: "form",
334
+ action: "https://api.web3forms.com/submit",
335
+ method: "POST",
336
+ class: x(["contact-form", {
337
+ "was-validated": c.value
338
+ }]),
339
+ novalidate: "",
340
+ onSubmit: M(y, ["prevent"])
341
+ }, [e("input", {
342
+ type: "hidden",
343
+ name: "access_key",
344
+ value: t.accessKey
345
+ }, null, 8, Se), e("input", {
346
+ type: "hidden",
347
+ name: "to",
348
+ value: t.to
349
+ }, null, 8, Te), d[11] || (d[11] = e("input", {
350
+ type: "checkbox",
351
+ class: "hidden",
352
+ style: {
353
+ display: "none"
354
+ },
355
+ name: "botcheck"
356
+ }, null, -1)), e("div", Ae, [d[3] || (d[3] = e("label", {
357
+ for: "name",
358
+ class: "form-label"
359
+ }, [h(" 姓名 "), e("span", {
360
+ class: "required"
361
+ }, "*")], -1)), T(e("input", {
362
+ id: "name",
363
+ "onUpdate:modelValue": d[0] || (d[0] = (f) => r.value.name = f),
364
+ type: "text",
365
+ placeholder: "请输入您的姓名",
366
+ required: "",
367
+ class: "form-input",
368
+ name: "name"
369
+ }, null, 512), [[A, r.value.name]]), d[4] || (d[4] = e("div", {
370
+ class: "empty-feedback invalid-feedback form-error"
371
+ }, " 请输入您的姓名。 ", -1))]), e("div", Be, [d[5] || (d[5] = e("label", {
372
+ for: "email_address",
373
+ class: "form-label"
374
+ }, [h(" 邮箱地址 "), e("span", {
375
+ class: "required"
376
+ }, "*")], -1)), T(e("input", {
377
+ id: "email_address",
378
+ "onUpdate:modelValue": d[1] || (d[1] = (f) => r.value.email = f),
379
+ type: "email",
380
+ placeholder: "请输入您的邮箱地址",
381
+ name: "email",
382
+ required: "",
383
+ class: "form-input"
384
+ }, null, 512), [[A, r.value.email]]), d[6] || (d[6] = e("div", {
385
+ class: "empty-feedback form-error"
386
+ }, " 请输入您的邮箱地址。 ", -1)), d[7] || (d[7] = e("div", {
387
+ class: "invalid-feedback form-error"
388
+ }, " 请输入有效的邮箱地址。 ", -1))]), e("div", qe, [d[8] || (d[8] = e("label", {
389
+ for: "message",
390
+ class: "form-label"
391
+ }, [h(" 留言内容 "), e("span", {
392
+ class: "required"
393
+ }, "*")], -1)), T(e("textarea", {
394
+ id: "message",
395
+ "onUpdate:modelValue": d[2] || (d[2] = (f) => r.value.message = f),
396
+ name: "message",
397
+ required: "",
398
+ placeholder: "请输入您的留言内容",
399
+ class: "form-textarea",
400
+ rows: "4"
401
+ }, null, 512), [[A, r.value.message]]), d[9] || (d[9] = e("div", {
402
+ class: "empty-feedback invalid-feedback form-error"
403
+ }, " 请输入您的留言内容。 ", -1))]), e("button", Ve, [i.value === "发送中..." ? (n(), o("span", De, [...d[10] || (d[10] = [e("svg", {
404
+ class: "spinner",
405
+ xmlns: "http://www.w3.org/2000/svg",
406
+ fill: "none",
407
+ viewBox: "0 0 24 24"
408
+ }, [e("circle", {
409
+ class: "spinner-circle",
410
+ cx: "12",
411
+ cy: "12",
412
+ r: "10",
413
+ stroke: "currentColor",
414
+ "stroke-width": "4"
415
+ }), e("path", {
416
+ class: "spinner-path",
417
+ fill: "currentColor",
418
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
419
+ })], -1), h(" 发送中... ", -1)])])) : (n(), o("span", He, "发送信息"))]), i.value && i.value !== "发送中..." ? (n(), o("div", {
420
+ key: 0,
421
+ class: x(["form-result", s.value])
422
+ }, l(i.value), 3)) : S("", !0)], 34));
423
+ }
424
+ }), da = /* @__PURE__ */ u(Fe, [["__scopeId", "data-v-bd2eaefb"]]), Me = /* @__PURE__ */ _({
425
+ __name: "LandingPageContainer",
426
+ props: {
427
+ flexDirection: {
428
+ default: "column"
429
+ },
430
+ gap: {
431
+ default: "80px"
432
+ },
433
+ padding: {
434
+ default: "0px"
435
+ }
436
+ },
437
+ setup(a) {
438
+ const t = a;
439
+ return (c, i) => (n(), o("div", {
440
+ class: "landing-page-container",
441
+ style: w({
442
+ flexDirection: t.flexDirection,
443
+ gap: t.gap,
444
+ padding: t.padding
445
+ })
446
+ }, [g(c.$slots, "default", {}, void 0, !0)], 4));
447
+ }
448
+ }), ua = /* @__PURE__ */ u(Me, [["__scopeId", "data-v-4566ee86"]]), ze = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1744'%20height='480'%20viewBox='0%200%201744%20480'%20fill='none'%3e%3cg%20style='mix-blend-mode:luminosity'%20opacity='0.5'%3e%3ccircle%20opacity='0.7'%20cx='861.225'%20cy='247.836'%20r='322.59'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.6'%20cx='861.225'%20cy='247.836'%20r='387.237'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.5'%20cx='861.226'%20cy='247.836'%20r='451.884'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.4'%20cx='861.225'%20cy='247.835'%20r='516.532'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.3'%20cx='861.225'%20cy='247.836'%20r='581.179'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.2'%20cx='861.225'%20cy='247.836'%20r='645.826'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.15'%20cx='861.225'%20cy='247.836'%20r='710.473'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.1'%20cx='861.225'%20cy='247.836'%20r='775.12'%20stroke='%2300000050'%20stroke-width='1.29295'%20/%3e%3ccircle%20opacity='0.1'%20cx='862.695'%20cy='238.041'%20r='842.161'%20stroke='%2300000050'%20stroke-width='1.40477'%20/%3e%3ccircle%20opacity='0.1'%20cx='872'%20cy='240'%20r='907.243'%20stroke='%2300000050'%20stroke-width='1.51333'%20/%3e%3c/g%3e%3c/svg%3e", je = {
449
+ class: "cta-container"
450
+ }, Ee = ["src"], Ne = {
451
+ class: "cta-content"
452
+ }, Oe = {
453
+ class: "cta-title"
454
+ }, Ue = {
455
+ class: "cta-description"
456
+ }, Ge = {
457
+ class: "cta-actions"
458
+ }, Re = /* @__PURE__ */ _({
459
+ __name: "LandingPageCta",
460
+ props: {
461
+ title: {
462
+ default: "迫不及待想使用翻译?"
463
+ },
464
+ description: {
465
+ default: "立即开始您的翻译之旅"
466
+ },
467
+ backgroundUrl: {
468
+ default: ze
469
+ },
470
+ backgroundSize: {
471
+ default: "120%"
472
+ }
473
+ },
474
+ setup(a) {
475
+ const t = a;
476
+ return (c, i) => (n(), o("div", je, [e("img", {
477
+ src: t.backgroundUrl,
478
+ class: "cta-background",
479
+ alt: "background",
480
+ style: w({
481
+ width: t.backgroundSize,
482
+ height: t.backgroundSize
483
+ })
484
+ }, null, 12, Ee), e("div", Ne, [e("h1", Oe, l(t.title), 1), e("div", Ue, l(t.description), 1), e("div", Ge, [g(c.$slots, "actions", {}, void 0, !0)])])]));
485
+ }
486
+ }), _a = /* @__PURE__ */ u(Re, [["__scopeId", "data-v-4a709ec3"]]), We = /* @__PURE__ */ _({
487
+ __name: "LandingPageFAQ",
488
+ props: {
489
+ activeKeys: {
490
+ default: () => []
491
+ },
492
+ faqItems: {
493
+ default: () => [{
494
+ question: "你们有免费试用吗?",
495
+ answer: "我们提供1个月的免费试用"
496
+ }, {
497
+ question: "我可以申请退款吗?",
498
+ answer: "不支持退款,但您可以随时取消订阅。取消订阅后将于下一个结算日的次日生效,在此之前您可以使用服务。为了避免被收取下一计费期的费用,请在下一个计费日期前至少 24 小时取消。"
499
+ }, {
500
+ question: "付费会员的配额什么时候会重置?会在月初吗?",
501
+ answer: "配额重置发生在您订阅后一个月,并非基于日历月。例如,如果您在4月15日订阅,您的配额将在5月15日重置。"
502
+ }, {
503
+ question: "从月付费订阅升级至年付费订阅,费用和有效期是如何计算的?",
504
+ answer: "从月度付费升级至年度付费时,会基于您剩余的月度付费价值计算差额。服务期从升级日起至次年同日。"
505
+ }, {
506
+ question: "你们提供技术支持吗?",
507
+ answer: "是的,在付费期间我们提供全天候的技术支持,可以通过电子邮箱和微信联系我们。"
508
+ }, {
509
+ question: "使用期间有什么限制吗?",
510
+ answer: "在使用期间如果发现开发者违反法律法规或在恶意应用程序中使用等任何不当使用行为,包括但不限于共享或出售订阅,都是被禁止的,可能会导致您的账户被终止且不予退款。我们有权终止服务,详情请参阅《付费服务协议》"
511
+ }]
512
+ }
513
+ },
514
+ setup(a) {
515
+ const t = a;
516
+ return (c, i) => (n(), P(G, {
517
+ "active-keys": t.activeKeys
518
+ }, {
519
+ default: m(() => [(n(!0), o(v, null, b(t.faqItems, (s, r) => (n(), P(R, {
520
+ key: r,
521
+ index: r
522
+ }, {
523
+ header: m(() => [h(l(s.question), 1)]),
524
+ default: m(() => [p(C, null, {
525
+ default: m(() => [h(l(s.answer), 1)]),
526
+ _: 2
527
+ }, 1024)]),
528
+ _: 2
529
+ }, 1032, ["index"]))), 128))]),
530
+ _: 1
531
+ }, 8, ["active-keys"]));
532
+ }
533
+ }), pa = /* @__PURE__ */ u(We, [["__scopeId", "data-v-581e8f75"]]), Ke = {
534
+ class: "Features"
535
+ }, Je = {
536
+ class: "feature-title"
537
+ }, Ze = /* @__PURE__ */ _({
538
+ __name: "LandingPageFeatures",
539
+ props: {
540
+ features: {
541
+ default: () => [{
542
+ title: "什么是ShipAny?",
543
+ description: "ShipAny是一个无代码平台,帮助您在几小时内而不是几天内构建和发布AI产品。",
544
+ icon: ""
545
+ }, {
546
+ title: "认证与支付",
547
+ description: "内置认证和Stripe支付处理,开箱即用。",
548
+ icon: ""
549
+ }, {
550
+ title: "数据基础设施",
551
+ description: "为您的AI模型和用户数据提供安全且可扩展的数据库基础设施。",
552
+ icon: ""
553
+ }, {
554
+ title: "实时部署",
555
+ description: "持续部署工作流,确保您的AI创业公司始终保持最新状态。",
556
+ icon: ""
557
+ }, {
558
+ title: "业务分析",
559
+ description: "跟踪用户行为和业务指标,做出明智决策。",
560
+ icon: ""
561
+ }, {
562
+ title: "AI模型集成",
563
+ description: "轻松集成来自OpenAI、Anthropic等的最新AI模型。",
564
+ icon: ""
565
+ }]
566
+ },
567
+ iconColor: {
568
+ default: "rgb(184, 154, 120)"
569
+ },
570
+ iconBorderColor: {
571
+ default: "rgb(184, 154, 120)"
572
+ }
573
+ },
574
+ setup(a) {
575
+ const t = a;
576
+ return (c, i) => (n(), o("div", Ke, [(n(!0), o(v, null, b(t.features, (s) => (n(), P(H, {
577
+ key: s.title
578
+ }, {
579
+ default: m(() => [e("div", {
580
+ class: "icon-container",
581
+ style: w({
582
+ color: t.iconColor,
583
+ border: `1px solid ${t.iconBorderColor}`
584
+ })
585
+ }, [p(L(I), {
586
+ class: "icon",
587
+ icon: s.icon
588
+ }, null, 8, ["icon"])], 4), e("h3", Je, l(s.title), 1), p(C, null, {
589
+ default: m(() => [h(l(s.description), 1)]),
590
+ _: 2
591
+ }, 1024)]),
592
+ _: 2
593
+ }, 1024))), 128))]));
594
+ }
595
+ }), ma = /* @__PURE__ */ u(Ze, [["__scopeId", "data-v-1ee2db18"]]), Qe = {
596
+ class: "tt-feature-list"
597
+ }, Ye = {
598
+ class: "tt-feature-content"
599
+ }, Xe = {
600
+ class: "heading-small"
601
+ }, et = {
602
+ class: "text-small"
603
+ }, tt = /* @__PURE__ */ _({
604
+ __name: "LandingPageFeatures2",
605
+ props: {
606
+ list: {
607
+ type: Array,
608
+ required: !0
609
+ }
610
+ },
611
+ setup(a) {
612
+ const t = a;
613
+ return (c, i) => (n(), o("div", Qe, [(n(!0), o(v, null, b(t.list, (s, r) => (n(), o("div", {
614
+ key: r,
615
+ class: "tt-feature-item centered"
616
+ }, [i[1] || (i[1] = e("div", {
617
+ class: "tt-feature-icon"
618
+ }, [e("img", {
619
+ src: "https://cdn.prod.website-files.com/645a9acecda2e0594fac6126/66cda872417824f6aabdc2ad_check-highlight-badge.svg",
620
+ loading: "lazy",
621
+ class: "feature-media"
622
+ })], -1)), e("div", Ye, [e("h3", Xe, l(s.title), 1), e("p", et, [h(l(s.descriptions) + " ", 1), i[0] || (i[0] = e("br", null, null, -1))])])]))), 128))]));
623
+ }
624
+ }), fa = /* @__PURE__ */ u(tt, [["__scopeId", "data-v-abd3c70a"]]), st = {
625
+ class: "hero"
626
+ }, at = {
627
+ class: "heroContent"
628
+ }, nt = {
629
+ class: "heroHeading"
630
+ }, ot = {
631
+ class: "heroTitle"
632
+ }, it = {
633
+ class: "heroDescription"
634
+ }, ct = {
635
+ class: "heroActions"
636
+ }, lt = {
637
+ class: "heroImage"
638
+ }, rt = /* @__PURE__ */ _({
639
+ __name: "LandingPageHero",
640
+ props: {
641
+ title: {
642
+ type: String,
643
+ default: () => ""
644
+ },
645
+ description: {
646
+ type: String,
647
+ default: () => ""
648
+ },
649
+ heroSource: {
650
+ type: String,
651
+ default: () => ""
652
+ }
653
+ },
654
+ setup(a) {
655
+ const t = a;
656
+ return (c, i) => (n(), o("main", st, [e("div", at, [e("div", nt, [e("h1", ot, [g(c.$slots, "title", {}, () => [h(l(t.title), 1)], !0)])]), e("div", it, [e("div", null, l(t.description), 1)]), e("div", ct, [g(c.$slots, "actions", {}, void 0, !0)])]), e("div", lt, [g(c.$slots, "heroSource", {}, void 0, !0)])]));
657
+ }
658
+ }), ha = /* @__PURE__ */ u(rt, [["__scopeId", "data-v-38f97a3c"]]), dt = {
659
+ class: "logos-list"
660
+ }, ut = /* @__PURE__ */ _({
661
+ __name: "LandingPageLogos",
662
+ props: {
663
+ title: {
664
+ default: "Works with your technologies"
665
+ },
666
+ subTitle: {
667
+ default: ""
668
+ },
669
+ logos: {
670
+ default: () => [{
671
+ name: "simple-icons:react"
672
+ }, {
673
+ name: "simple-icons:svelte"
674
+ }, {
675
+ name: "simple-icons:astro"
676
+ }, {
677
+ name: "simple-icons:css3"
678
+ }, {
679
+ name: "simple-icons:alpinedotjs"
680
+ }, {
681
+ name: "simple-icons:vercel"
682
+ }]
683
+ }
684
+ },
685
+ setup(a) {
686
+ const t = a;
687
+ return (c, i) => (n(), o("div", dt, [(n(!0), o(v, null, b(t.logos, (s, r) => (n(), P(L(I), {
688
+ key: r,
689
+ icon: s.name,
690
+ class: "logo-icon"
691
+ }, null, 8, ["icon"]))), 128))]));
692
+ }
693
+ }), ga = /* @__PURE__ */ u(ut, [["__scopeId", "data-v-1a08e627"]]), _t = /* @__PURE__ */ _({
694
+ __name: "LandingPagePageContent",
695
+ props: {
696
+ maxWidth: {
697
+ default: "1380px"
698
+ },
699
+ center: {
700
+ type: Boolean,
701
+ default: !0
702
+ },
703
+ padding: {
704
+ default: "0px 0px 40px 0px "
705
+ },
706
+ gap: {
707
+ default: "90px"
708
+ },
709
+ flexDirection: {
710
+ default: "column"
711
+ }
712
+ },
713
+ setup(a) {
714
+ const t = a, c = q(() => ({
715
+ maxWidth: t.maxWidth,
716
+ margin: t.center ? "0 auto" : void 0,
717
+ width: "100%",
718
+ padding: t.padding,
719
+ display: "flex",
720
+ flexDirection: t.flexDirection ?? "column",
721
+ gap: t.gap
722
+ }));
723
+ return (i, s) => (n(), o("div", {
724
+ class: "PageContent",
725
+ style: w(c.value)
726
+ }, [g(i.$slots, "default", {}, void 0, !0)], 4));
727
+ }
728
+ }), va = /* @__PURE__ */ u(_t, [["__scopeId", "data-v-00ec8180"]]), pt = {
729
+ class: "Tabs"
730
+ }, mt = {
731
+ class: "tabs-root"
732
+ }, ft = {
733
+ role: "radiogroup",
734
+ "aria-required": "false",
735
+ dir: "ltr",
736
+ class: "tabs-group",
737
+ tabindex: "0"
738
+ }, ht = ["id", "aria-checked", "data-state", "value", "tabindex", "onClick"], gt = {
739
+ key: 0,
740
+ "data-state": "checked",
741
+ class: "tabs-radio-icon"
742
+ }, vt = ["for"], $t = {
743
+ key: 0,
744
+ class: "tabs-badge"
745
+ }, bt = /* @__PURE__ */ _({
746
+ __name: "LandingPageTabs",
747
+ props: {
748
+ tabs: {
749
+ type: Array,
750
+ required: !0
751
+ },
752
+ modelValue: {
753
+ type: String,
754
+ required: !0
755
+ }
756
+ },
757
+ emits: ["update:modelValue"],
758
+ setup(a) {
759
+ const t = a;
760
+ return (c, i) => (n(), o("div", pt, [e("div", mt, [e("div", ft, [(n(!0), o(v, null, b(t.tabs, (s) => (n(), o("div", {
761
+ key: s.value,
762
+ class: x(["tabs-item", {
763
+ "tabs-item-active": s.value === a.modelValue
764
+ }])
765
+ }, [e("button", {
766
+ id: s.value,
767
+ type: "button",
768
+ role: "radio",
769
+ "aria-checked": s.value === a.modelValue,
770
+ "data-state": s.value === a.modelValue ? "checked" : "unchecked",
771
+ value: s.value,
772
+ class: "tabs-radio",
773
+ tabindex: s.value === a.modelValue ? 0 : -1,
774
+ onClick: (r) => c.$emit("update:modelValue", s.value)
775
+ }, [s.value === a.modelValue ? (n(), o("span", gt)) : S("", !0)], 8, ht), e("label", {
776
+ class: "tabs-label",
777
+ for: s.value
778
+ }, [e("span", null, l(s.label), 1), s.badge ? (n(), o("div", $t, l(s.badge), 1)) : S("", !0)], 8, vt)], 2))), 128))])])]));
779
+ }
780
+ }), yt = /* @__PURE__ */ u(bt, [["__scopeId", "data-v-9eb67a93"]]), kt = {
781
+ class: "PriceGroup"
782
+ }, xt = /* @__PURE__ */ _({
783
+ __name: "LandingPagePriceGroup",
784
+ setup(a) {
785
+ const t = k("subscribe-monthly");
786
+ return (c, i) => (n(), o("div", kt, [p(yt, {
787
+ modelValue: t.value,
788
+ "onUpdate:modelValue": i[0] || (i[0] = (s) => t.value = s),
789
+ tabs: [{
790
+ value: "subscribe-monthly",
791
+ label: "按月订阅"
792
+ }, {
793
+ value: "subscribe-yearly",
794
+ label: "按年订阅",
795
+ badge: "节省17%"
796
+ }, {
797
+ value: "pay-as-you-go",
798
+ label: "按需付费"
799
+ }]
800
+ }, null, 8, ["modelValue"]), g(c.$slots, "default", {}, void 0, !0)]));
801
+ }
802
+ }), $a = /* @__PURE__ */ u(xt, [["__scopeId", "data-v-43a35f55"]]), Pt = {
803
+ class: "PricingCard"
804
+ }, Lt = {
805
+ class: "title"
806
+ }, wt = {
807
+ class: "titleText"
808
+ }, Ct = {
809
+ class: "description"
810
+ }, It = {
811
+ class: "priceAndDiscount"
812
+ }, St = {
813
+ class: "price"
814
+ }, Tt = {
815
+ class: "discount"
816
+ }, At = {
817
+ style: {
818
+ position: "relative",
819
+ top: "3px"
820
+ }
821
+ }, Bt = {
822
+ key: 1,
823
+ class: "priceNotDiscount"
824
+ }, qt = {
825
+ class: "cycle"
826
+ }, Vt = {
827
+ class: "features"
828
+ }, Dt = /* @__PURE__ */ _({
829
+ __name: "LandingPagePricingCard",
830
+ props: {
831
+ loading: {
832
+ type: Boolean,
833
+ required: !1,
834
+ default: () => !1
835
+ },
836
+ title: {
837
+ type: String,
838
+ required: !0
839
+ },
840
+ description: {
841
+ type: String,
842
+ required: !0
843
+ },
844
+ price: {
845
+ type: Number,
846
+ required: !0
847
+ },
848
+ discount: {
849
+ type: Number,
850
+ required: !1,
851
+ default: () => 99
852
+ },
853
+ unit: {
854
+ type: String,
855
+ required: !0
856
+ },
857
+ cycle: {
858
+ type: String,
859
+ required: !0
860
+ },
861
+ highlight: {
862
+ type: Boolean,
863
+ required: !0
864
+ },
865
+ badge: {
866
+ type: Object,
867
+ required: !0
868
+ },
869
+ button: {
870
+ type: Object,
871
+ required: !0
872
+ },
873
+ orientation: {
874
+ type: String,
875
+ required: !0
876
+ },
877
+ align: {
878
+ type: String,
879
+ required: !0
880
+ },
881
+ features: {
882
+ type: Array,
883
+ required: !0
884
+ }
885
+ },
886
+ emits: ["toPay"],
887
+ setup(a, {
888
+ emit: t
889
+ }) {
890
+ const c = t, i = a;
891
+ function s() {
892
+ c("toPay");
893
+ }
894
+ return (r, y) => (n(), o("div", Pt, [e("div", null, [e("div", Lt, [e("span", wt, l(i.title), 1), i.badge.label ? (n(), P(L(W), {
895
+ key: 0,
896
+ color: "arcoblue"
897
+ }, {
898
+ default: m(() => [h(l(i.badge.label), 1)]),
899
+ _: 1
900
+ })) : S("", !0)]), e("div", Ct, l(i.description), 1)]), e("div", It, [i.discount !== null ? (n(), o(v, {
901
+ key: 0
902
+ }, [e("span", St, [e("span", null, l(i.price), 1), e("span", null, l(i.unit), 1)]), e("span", Tt, [e("span", At, l(i.discount), 1), e("span", null, l(i.unit), 1)])], 64)) : (n(), o("span", Bt, [e("span", null, l(i.price), 1), e("span", null, l(i.unit), 1)])), e("span", qt, l(i.cycle), 1)]), e("div", Vt, [(n(!0), o(v, null, b(i.features, ($, d) => (n(), P(U, {
903
+ key: d,
904
+ description: $.title
905
+ }, null, 8, ["description"]))), 128))]), p(me, {
906
+ class: "handle",
907
+ type: "primary",
908
+ loading: i.loading,
909
+ disabled: !(i.discount || i.price),
910
+ onClick: s
911
+ }, {
912
+ default: m(() => [h(l(i.button.label), 1)]),
913
+ _: 1
914
+ }, 8, ["loading", "disabled"])]));
915
+ }
916
+ }), ba = /* @__PURE__ */ u(Dt, [["__scopeId", "data-v-0b730439"]]), Ht = {}, Ft = {
917
+ class: "PricingGrid"
918
+ }, Mt = {
919
+ class: "content"
920
+ };
921
+ function zt(a, t) {
922
+ return n(), o("div", Ft, [e("div", Mt, [g(a.$slots, "default", {}, void 0, !0)])]);
923
+ }
924
+ const ya = /* @__PURE__ */ u(Ht, [["render", zt], ["__scopeId", "data-v-1f26d3ee"]]), jt = {
925
+ class: "sections-container"
926
+ }, Et = {
927
+ class: "container"
928
+ }, Nt = {
929
+ class: "image-container"
930
+ }, Ot = ["src", "alt"], Ut = {
931
+ class: "text-container"
932
+ }, Gt = {
933
+ class: "header"
934
+ }, Rt = {
935
+ class: "features-list"
936
+ }, Wt = {
937
+ class: "content"
938
+ }, Kt = {
939
+ class: "feature-title"
940
+ }, Jt = /* @__PURE__ */ _({
941
+ __name: "LandingPageSections",
942
+ props: {
943
+ title: {
944
+ default: "什么是ShipAny"
945
+ },
946
+ subTitle: {
947
+ default: "ShipAny是一个用于构建AI优先创业公司的无代码框架。在几分钟内构建美观、生产就绪的AI应用程序。"
948
+ },
949
+ imageUrl: {
950
+ default: "https://picsum.photos/600/400?random=6"
951
+ },
952
+ imageAlt: {
953
+ default: "ShipAny平台截图"
954
+ },
955
+ features: {
956
+ default: () => [{
957
+ title: "即用型模板",
958
+ description: "从数十个生产就绪的AI模板中选择,快速开始。",
959
+ color: "green",
960
+ iconPath: "M5 13l4 4L19 7"
961
+ }, {
962
+ title: "专业设计",
963
+ description: "由专业人士精心打造的UI组件,遵循最佳实践。",
964
+ color: "blue",
965
+ iconPath: "M13 10V3L4 14h7v7l9-11h-7z"
966
+ }, {
967
+ title: "内置部署",
968
+ description: "几分钟内将您的AI应用程序部署到生产环境。",
969
+ color: "purple",
970
+ iconPath: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"
971
+ }]
972
+ },
973
+ reverse: {
974
+ type: Boolean,
975
+ default: !1
976
+ }
977
+ },
978
+ setup(a) {
979
+ const t = a;
980
+ return (c, i) => (n(), o("section", jt, [e("div", Et, [e("div", {
981
+ class: x(["content-wrapper", {
982
+ reverse: t.reverse
983
+ }])
984
+ }, [e("div", Nt, [e("img", {
985
+ src: t.imageUrl,
986
+ alt: t.imageAlt,
987
+ class: "image"
988
+ }, null, 8, Ot)]), e("div", Ut, [e("div", Gt, [p(D, null, {
989
+ default: m(() => [h(l(t.title), 1)]),
990
+ _: 1
991
+ }), p(V, null, {
992
+ default: m(() => [h(l(t.subTitle), 1)]),
993
+ _: 1
994
+ })]), e("div", Rt, [(n(!0), o(v, null, b(t.features, (s, r) => (n(), o("div", {
995
+ key: r,
996
+ class: "feature-item"
997
+ }, [e("div", {
998
+ class: x(["icon-container", [`icon-${s.color}`]])
999
+ }, [...i[0] || (i[0] = [e("div", {
1000
+ class: "dot"
1001
+ }, null, -1)])], 2), e("div", Wt, [e("div", Kt, l(s.title), 1), p(C, null, {
1002
+ default: m(() => [h(l(s.description), 1)]),
1003
+ _: 2
1004
+ }, 1024)])]))), 128))])])], 2)])]));
1005
+ }
1006
+ }), ka = /* @__PURE__ */ u(Jt, [["__scopeId", "data-v-ac2b71bb"]]), Zt = {
1007
+ class: "Showcase"
1008
+ }, Qt = ["onClick"], Yt = ["src", "alt"], Xt = {
1009
+ class: "card-content"
1010
+ }, es = {
1011
+ class: "card-title"
1012
+ }, ts = /* @__PURE__ */ _({
1013
+ __name: "LandingPageShowcase",
1014
+ props: {
1015
+ items: {},
1016
+ showControls: {
1017
+ type: Boolean,
1018
+ default: !0
1019
+ },
1020
+ columns: {
1021
+ default: 4
1022
+ },
1023
+ cardHeight: {
1024
+ default: 160
1025
+ },
1026
+ objectFit: {
1027
+ default: "cover"
1028
+ }
1029
+ },
1030
+ emits: ["cardClick"],
1031
+ setup(a, {
1032
+ emit: t
1033
+ }) {
1034
+ const c = a, i = t;
1035
+ function s(y) {
1036
+ i("cardClick", y);
1037
+ }
1038
+ const r = q(() => ({
1039
+ height: `${c.cardHeight}px`,
1040
+ objectFit: c.objectFit
1041
+ }));
1042
+ return (y, $) => (n(), o("div", Zt, [(n(!0), o(v, null, b(c.items, (d, f) => (n(), o("div", {
1043
+ key: f,
1044
+ class: "showcase-card",
1045
+ onClick: (F) => s(d)
1046
+ }, [e("img", {
1047
+ src: d.image,
1048
+ alt: d.alt,
1049
+ style: w(r.value)
1050
+ }, null, 12, Yt), e("div", Xt, [e("div", es, l(d.title), 1), p(C, null, {
1051
+ default: m(() => [h(l(d.description), 1)]),
1052
+ _: 2
1053
+ }, 1024)])], 8, Qt))), 128))]));
1054
+ }
1055
+ }), xa = /* @__PURE__ */ u(ts, [["__scopeId", "data-v-381ed6a6"]]), ss = {
1056
+ class: "Stats"
1057
+ }, as = {
1058
+ key: 0,
1059
+ class: "stats-label"
1060
+ }, ns = {
1061
+ class: "stats-number"
1062
+ }, os = {
1063
+ class: "stats-label"
1064
+ }, is = /* @__PURE__ */ _({
1065
+ __name: "LandingPageStats",
1066
+ props: {
1067
+ title: {
1068
+ default: "用户喜爱ShipAny"
1069
+ },
1070
+ subTitle: {
1071
+ default: "看看我们的客户怎么说"
1072
+ },
1073
+ stats: {
1074
+ default: () => [{
1075
+ title: "",
1076
+ number: "250+",
1077
+ label: "已启动的创业公司"
1078
+ }, {
1079
+ title: "",
1080
+ number: "30+",
1081
+ label: "AI模板"
1082
+ }, {
1083
+ title: "",
1084
+ number: "5",
1085
+ label: "星级评分"
1086
+ }]
1087
+ }
1088
+ },
1089
+ setup(a) {
1090
+ const t = a;
1091
+ return (c, i) => (n(), o("div", ss, [(n(!0), o(v, null, b(t.stats, (s, r) => (n(), o("div", {
1092
+ key: r,
1093
+ class: "stats-item"
1094
+ }, [s.title ? (n(), o("div", as, l(s.title), 1)) : S("", !0), e("div", ns, l(s.number), 1), e("div", os, l(s.label), 1)]))), 128))]));
1095
+ }
1096
+ }), Pa = /* @__PURE__ */ u(is, [["__scopeId", "data-v-7aa9af80"]]), cs = {
1097
+ class: "stepNumber"
1098
+ }, ls = {
1099
+ class: "count"
1100
+ }, rs = {
1101
+ class: "stepTitle"
1102
+ }, ds = /* @__PURE__ */ _({
1103
+ __name: "LandingPageSteps",
1104
+ props: {
1105
+ columns: {
1106
+ type: Number,
1107
+ default: 3
1108
+ },
1109
+ steps: {
1110
+ type: Array,
1111
+ default: () => [{
1112
+ title: "选择您的项目",
1113
+ description: "从我们的AI模板库中选择或使用我们的拖放构建器从头开始。"
1114
+ }, {
1115
+ title: "构建您的项目",
1116
+ description: "使用我们的直观编辑器自定义您的项目。添加您的品牌、内容并配置AI模型。"
1117
+ }, {
1118
+ title: "部署到生产环境",
1119
+ description: "一键将您的AI应用程序部署到我们的全球基础设施并开始服务客户。"
1120
+ }]
1121
+ }
1122
+ },
1123
+ setup(a) {
1124
+ const t = a;
1125
+ return (c, i) => (n(), o("div", {
1126
+ class: "Steps",
1127
+ style: w({
1128
+ gridTemplateColumns: `repeat(${t.columns}, 1fr)`
1129
+ // flexDirection: props.flexDirection,
1130
+ })
1131
+ }, [(n(!0), o(v, null, b(t.steps, (s, r) => (n(), o("div", {
1132
+ key: r,
1133
+ class: "stepItem"
1134
+ }, [e("div", cs, [e("span", ls, l(r + 1), 1)]), e("h3", rs, l(s.title), 1), p(C, null, {
1135
+ default: m(() => [h(l(s.description), 1)]),
1136
+ _: 2
1137
+ }, 1024)]))), 128))], 4));
1138
+ }
1139
+ }), La = /* @__PURE__ */ u(ds, [["__scopeId", "data-v-1ecd9597"]]), us = {
1140
+ class: "Testimonial"
1141
+ }, _s = {
1142
+ class: "user-info"
1143
+ }, ps = {
1144
+ class: "user-avatar"
1145
+ }, ms = ["src", "alt"], fs = {
1146
+ class: "user-name"
1147
+ }, hs = {
1148
+ class: "user-title"
1149
+ }, gs = /* @__PURE__ */ _({
1150
+ __name: "LandingPageTestimonial",
1151
+ props: {
1152
+ testimonials: {
1153
+ default: () => []
1154
+ }
1155
+ },
1156
+ setup(a) {
1157
+ const t = a;
1158
+ return (c, i) => (n(), o("div", us, [(n(!0), o(v, null, b(t.testimonials, (s, r) => (n(), P(H, {
1159
+ key: r
1160
+ }, {
1161
+ default: m(() => [e("div", null, [p(C, null, {
1162
+ default: m(() => [h(l(`"${s.content}"`), 1)]),
1163
+ _: 2
1164
+ }, 1024)]), e("div", _s, [e("span", ps, [e("img", {
1165
+ src: s.avatar,
1166
+ alt: s.name
1167
+ }, null, 8, ms)]), e("div", null, [e("div", fs, l(s.name), 1), e("div", hs, l(s.title), 1)])])]),
1168
+ _: 2
1169
+ }, 1024))), 128))]));
1170
+ }
1171
+ }), wa = /* @__PURE__ */ u(gs, [["__scopeId", "data-v-bc49d7bc"]]), vs = ["href"], $s = /* @__PURE__ */ _({
1172
+ __name: "LandingPageTips",
1173
+ props: {
1174
+ href: {
1175
+ type: String,
1176
+ default: "/zh"
1177
+ },
1178
+ text: {
1179
+ type: String,
1180
+ default: "✨ 免费吉卜力AI艺术!立即注册获得3次免费创作!☝️"
1181
+ }
1182
+ },
1183
+ setup(a) {
1184
+ const t = a;
1185
+ return (c, i) => (n(), o("a", {
1186
+ href: t.href,
1187
+ class: "tips-link"
1188
+ }, l(t.text), 9, vs));
1189
+ }
1190
+ }), Ca = /* @__PURE__ */ u($s, [["__scopeId", "data-v-f5784dd1"]]), bs = {}, ys = {
1191
+ class: "sidebar"
1192
+ };
1193
+ function ks(a, t) {
1194
+ return n(), o("div", ys, [...t[0] || (t[0] = [z('<div data-v-251905ff><div class="sidebar-title" data-v-251905ff>On this page</div><a class="sidebar-link active" href="#page-title" data-v-251905ff>Introduction</a><a class="sidebar-link" href="#browse-by-feature" data-v-251905ff>Browse by feature</a><a class="sidebar-link" href="#implement-a-template" data-v-251905ff>Implement a template</a><a class="sidebar-link" href="#integrate-or-deploy-tiptap" data-v-251905ff>Integrate or deploy Tiptap</a><a class="sidebar-link" href="#manage-your-documents" data-v-251905ff>Manage your documents</a><a class="sidebar-link" href="#examples" data-v-251905ff>Examples</a><a class="sidebar-link" href="#guides" data-v-251905ff>Guides</a><a class="sidebar-link" href="#community" data-v-251905ff>Community</a></div>', 1)])]);
1195
+ }
1196
+ const Ia = /* @__PURE__ */ u(bs, [["render", ks], ["__scopeId", "data-v-251905ff"]]), xs = {
1197
+ class: "feature-card"
1198
+ }, Ps = {
1199
+ class: "feature-image"
1200
+ }, Ls = ["src", "alt"], ws = {
1201
+ class: "feature-title"
1202
+ }, Cs = {
1203
+ class: "feature-description"
1204
+ }, Is = {
1205
+ class: "feature-platforms"
1206
+ }, Ss = /* @__PURE__ */ _({
1207
+ __name: "LandingPageFeatureCard",
1208
+ props: {
1209
+ feature: {}
1210
+ },
1211
+ setup(a) {
1212
+ return (t, c) => (n(), o("div", xs, [e("div", Ps, [e("img", {
1213
+ src: a.feature.image,
1214
+ alt: a.feature.title,
1215
+ loading: "lazy",
1216
+ decoding: "async"
1217
+ }, null, 8, Ls)]), e("h3", ws, l(a.feature.title), 1), e("p", Cs, l(a.feature.description), 1), e("div", Is, [(n(!0), o(v, null, b(a.feature.platforms, (i) => (n(), P(L(I), {
1218
+ key: i.name,
1219
+ icon: i.icon,
1220
+ class: "platform-icon"
1221
+ }, null, 8, ["icon"]))), 128))])]));
1222
+ }
1223
+ }), Sa = /* @__PURE__ */ u(Ss, [["__scopeId", "data-v-474acd19"]]), Ts = {
1224
+ class: "feature-section-header"
1225
+ }, As = {
1226
+ class: "feature-section-title"
1227
+ }, Bs = ["innerHTML"], qs = /* @__PURE__ */ _({
1228
+ __name: "LandingPageFeatureSectionHeader",
1229
+ props: {
1230
+ title: {},
1231
+ description: {}
1232
+ },
1233
+ setup(a) {
1234
+ return (t, c) => (n(), o("div", Ts, [e("h2", As, l(a.title), 1), e("p", {
1235
+ class: "feature-section-description",
1236
+ innerHTML: a.description
1237
+ }, null, 8, Bs)]));
1238
+ }
1239
+ }), Ta = /* @__PURE__ */ u(qs, [["__scopeId", "data-v-8fe145ad"]]), Vs = {}, Ds = {
1240
+ class: "features-grid"
1241
+ };
1242
+ function Hs(a, t) {
1243
+ return n(), o("div", Ds, [g(a.$slots, "default", {}, void 0, !0)]);
1244
+ }
1245
+ const Aa = /* @__PURE__ */ u(Vs, [["render", Hs], ["__scopeId", "data-v-392f636b"]]), Fs = {
1246
+ class: "testimonials-container"
1247
+ }, Ms = {
1248
+ class: "testimonial-header"
1249
+ }, zs = ["onClick"], js = {
1250
+ class: "user-avatar"
1251
+ }, Es = ["src", "alt"], Ns = {
1252
+ class: "user-info"
1253
+ }, Os = {
1254
+ class: "user-name"
1255
+ }, Us = {
1256
+ class: "user-title"
1257
+ }, Gs = {
1258
+ class: "testimonial-content"
1259
+ }, Rs = /* @__PURE__ */ _({
1260
+ __name: "LandingPageTestimonialCard",
1261
+ props: {
1262
+ testimonials: {}
1263
+ },
1264
+ setup(a) {
1265
+ function t(c) {
1266
+ c.link && window.open(c.link, "_blank");
1267
+ }
1268
+ return (c, i) => (n(), o("div", Fs, [(n(!0), o(v, null, b(a.testimonials, (s) => (n(), o("div", {
1269
+ key: s.name,
1270
+ class: "testimonial-card"
1271
+ }, [e("div", Ms, [e("div", {
1272
+ class: x(["user-link", {
1273
+ "no-link": !s.link
1274
+ }]),
1275
+ onClick: (r) => t(s)
1276
+ }, [e("div", js, [e("img", {
1277
+ src: s.avatar,
1278
+ alt: s.name,
1279
+ width: "260",
1280
+ height: "260",
1281
+ loading: "lazy",
1282
+ decoding: "async",
1283
+ class: "avatar-image"
1284
+ }, null, 8, Es)]), e("div", Ns, [e("span", Os, l(s.name), 1), e("span", Us, l(s.title), 1)])], 10, zs)]), e("p", Gs, l(s.content), 1)]))), 128))]));
1285
+ }
1286
+ }), Ba = /* @__PURE__ */ u(Rs, [["__scopeId", "data-v-6e10d8a8"]]), Ws = {
1287
+ class: "tabs"
1288
+ }, Ks = {
1289
+ class: "tabs-header"
1290
+ }, Js = ["onClick"], Zs = {
1291
+ class: "tab-label"
1292
+ }, Qs = {
1293
+ class: "tabs-content"
1294
+ }, Ys = /* @__PURE__ */ _({
1295
+ __name: "LandingPageSectionTabs",
1296
+ props: {
1297
+ tabs: {},
1298
+ defaultActiveTab: {
1299
+ default: ""
1300
+ },
1301
+ modelValue: {
1302
+ default: ""
1303
+ }
1304
+ },
1305
+ emits: ["update:modelValue", "tabChange"],
1306
+ setup(a, {
1307
+ emit: t
1308
+ }) {
1309
+ var y;
1310
+ const c = a, i = t, s = k(c.modelValue || c.defaultActiveTab || ((y = c.tabs[0]) == null ? void 0 : y.id) || "");
1311
+ function r($) {
1312
+ s.value = $, i("update:modelValue", $), i("tabChange", $);
1313
+ }
1314
+ return B(() => c.modelValue, ($) => {
1315
+ $ && (s.value = $);
1316
+ }), B(() => c.defaultActiveTab, ($) => {
1317
+ $ && !c.modelValue && (s.value = $);
1318
+ }), ($, d) => (n(), o("div", Ws, [e("div", Ks, [(n(!0), o(v, null, b(a.tabs, (f) => (n(), o("div", {
1319
+ key: f.id,
1320
+ class: x(["tab-item", {
1321
+ active: s.value === f.id
1322
+ }]),
1323
+ onClick: (F) => r(f.id)
1324
+ }, [e("span", Zs, l(f.label), 1)], 10, Js))), 128))]), e("div", Qs, [(n(!0), o(v, null, b(a.tabs, (f) => T((n(), o("div", {
1325
+ key: f.id,
1326
+ class: "tab-panel"
1327
+ }, [g($.$slots, f.id, {
1328
+ tab: f
1329
+ }, () => [g($.$slots, "default", {
1330
+ tab: f
1331
+ }, void 0, !0)], !0)])), [[j, s.value === f.id]])), 128))])]));
1332
+ }
1333
+ }), qa = /* @__PURE__ */ u(Ys, [["__scopeId", "data-v-22e880ae"]]);
1334
+ export {
1335
+ Aa as A,
1336
+ me as B,
1337
+ H as C,
1338
+ Ba as D,
1339
+ qa as E,
1340
+ ca as L,
1341
+ V as S,
1342
+ yt as T,
1343
+ la as a,
1344
+ se as b,
1345
+ oe as c,
1346
+ ra as d,
1347
+ da as e,
1348
+ ua as f,
1349
+ _a as g,
1350
+ pa as h,
1351
+ ma as i,
1352
+ fa as j,
1353
+ ha as k,
1354
+ ga as l,
1355
+ va as m,
1356
+ $a as n,
1357
+ ba as o,
1358
+ ya as p,
1359
+ ka as q,
1360
+ xa as r,
1361
+ Pa as s,
1362
+ La as t,
1363
+ wa as u,
1364
+ Ca as v,
1365
+ D as w,
1366
+ Ia as x,
1367
+ Sa as y,
1368
+ Ta as z
1369
+ };