@hefou/dux 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -2
  3. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -0
  4. package/dist/cjs/components/Layout.cjs +1 -0
  5. package/dist/cjs/components/Layout.vue_vue_type_script_setup_true_lang.cjs +1 -0
  6. package/dist/cjs/components/common/Badge.cjs +1 -0
  7. package/dist/cjs/components/common/Badge.vue_vue_type_script_setup_true_lang.cjs +1 -0
  8. package/dist/cjs/components/common/NavDropdown.cjs +1 -0
  9. package/dist/cjs/components/common/NavDropdown.vue_vue_type_script_setup_true_lang.cjs +1 -0
  10. package/dist/cjs/components/common/PageHero.cjs +1 -0
  11. package/dist/cjs/components/common/PageHero.vue_vue_type_script_setup_true_lang.cjs +1 -0
  12. package/dist/cjs/components/common/SocialIcons.cjs +1 -0
  13. package/dist/cjs/components/common/SocialIcons.vue_vue_type_script_setup_true_lang.cjs +1 -0
  14. package/dist/cjs/components/docs/DocFooter.cjs +1 -0
  15. package/dist/cjs/components/docs/DocFooter.vue_vue_type_script_setup_true_lang.cjs +1 -0
  16. package/dist/cjs/components/docs/Outline.cjs +1 -0
  17. package/dist/cjs/components/docs/Outline.vue_vue_type_script_setup_true_lang.cjs +1 -0
  18. package/dist/cjs/components/docs/Sidebar.cjs +1 -0
  19. package/dist/cjs/components/docs/Sidebar.vue_vue_type_script_setup_true_lang.cjs +1 -0
  20. package/dist/cjs/components/home/Features.cjs +1 -0
  21. package/dist/cjs/components/home/Features.vue_vue_type_script_setup_true_lang.cjs +1 -0
  22. package/dist/cjs/components/home/Hero.cjs +1 -0
  23. package/dist/cjs/components/home/Hero.vue_vue_type_script_setup_true_lang.cjs +1 -0
  24. package/dist/cjs/components/home/QuickStart.cjs +1 -0
  25. package/dist/cjs/components/home/QuickStart.vue_vue_type_script_setup_true_lang.cjs +1 -0
  26. package/dist/cjs/components/layout/Footer.cjs +1 -0
  27. package/dist/cjs/components/layout/Footer.vue_vue_type_script_setup_true_lang.cjs +1 -0
  28. package/dist/cjs/components/layout/Header.cjs +1 -0
  29. package/dist/cjs/components/layout/Header.vue_vue_type_script_setup_true_lang.cjs +1 -0
  30. package/dist/cjs/components/pages/ChangeLog.cjs +1 -0
  31. package/dist/cjs/components/pages/ChangeLog.vue_vue_type_script_setup_true_lang.cjs +1 -0
  32. package/dist/cjs/components/pages/Doc.cjs +1 -0
  33. package/dist/cjs/components/pages/Doc.vue_vue_type_script_setup_true_lang.cjs +1 -0
  34. package/dist/cjs/components/pages/Home.cjs +1 -0
  35. package/dist/cjs/components/pages/Home.vue_vue_type_script_setup_true_lang.cjs +1 -0
  36. package/dist/cjs/components/pages/Jump.cjs +1 -0
  37. package/dist/cjs/components/pages/Jump.vue_vue_type_script_setup_true_lang.cjs +1 -0
  38. package/dist/cjs/components/pages/NotFound.cjs +1 -0
  39. package/dist/cjs/components/pages/NotFound.vue_vue_type_script_setup_true_lang.cjs +1 -0
  40. package/dist/cjs/components/pages/SinglePage.cjs +1 -0
  41. package/dist/cjs/components/pages/SinglePage.vue_vue_type_script_setup_true_lang.cjs +1 -0
  42. package/dist/cjs/components/pages/Sponsor.cjs +1 -0
  43. package/dist/cjs/components/pages/Sponsor.vue_vue_type_script_setup_true_lang.cjs +1 -0
  44. package/dist/cjs/components/search/MiniSearchModal.cjs +1 -0
  45. package/dist/cjs/components/search/MiniSearchModal.vue_vue_type_script_setup_true_lang.cjs +1 -0
  46. package/dist/cjs/components/search/SearchButton.cjs +1 -0
  47. package/dist/cjs/components/search/SearchButton.vue_vue_type_script_setup_true_lang.cjs +1 -0
  48. package/dist/cjs/composables/search.data.cjs +1 -0
  49. package/dist/cjs/composables/useIcon.cjs +1 -0
  50. package/dist/cjs/composables/useLink.cjs +1 -0
  51. package/dist/cjs/composables/useLocale.cjs +1 -0
  52. package/dist/cjs/composables/useReadingTime.cjs +1 -0
  53. package/dist/cjs/composables/useSearch.cjs +1 -0
  54. package/dist/cjs/config.cjs +1 -0
  55. package/dist/cjs/dux.css +3 -0
  56. package/dist/cjs/index.cjs +1 -0
  57. package/dist/cjs/locales/de-DE.cjs +1 -0
  58. package/dist/cjs/locales/en-US.cjs +1 -0
  59. package/dist/cjs/locales/es-ES.cjs +1 -0
  60. package/dist/cjs/locales/fr-FR.cjs +1 -0
  61. package/dist/cjs/locales/ja-JP.cjs +1 -0
  62. package/dist/cjs/locales/ko-KR.cjs +1 -0
  63. package/dist/cjs/locales/ru-RU.cjs +1 -0
  64. package/dist/cjs/locales/zh-CN.cjs +1 -0
  65. package/dist/cjs/locales/zh-TW.cjs +1 -0
  66. package/dist/cjs/shims/dayjs.cjs +1 -0
  67. package/dist/cjs/shims/sanitize-url.cjs +1 -0
  68. package/dist/esm/components/Layout.js +4 -0
  69. package/dist/esm/components/Layout.vue_vue_type_script_setup_true_lang.js +51 -0
  70. package/dist/esm/components/common/Badge.js +4 -0
  71. package/dist/esm/components/common/Badge.vue_vue_type_script_setup_true_lang.js +20 -0
  72. package/dist/esm/components/common/NavDropdown.js +4 -0
  73. package/dist/esm/components/common/NavDropdown.vue_vue_type_script_setup_true_lang.js +75 -0
  74. package/dist/esm/components/common/PageHero.js +4 -0
  75. package/dist/esm/components/common/PageHero.vue_vue_type_script_setup_true_lang.js +46 -0
  76. package/dist/esm/components/common/SocialIcons.js +4 -0
  77. package/dist/esm/components/common/SocialIcons.vue_vue_type_script_setup_true_lang.js +87 -0
  78. package/dist/esm/components/docs/DocFooter.js +4 -0
  79. package/dist/esm/components/docs/DocFooter.vue_vue_type_script_setup_true_lang.js +84 -0
  80. package/dist/esm/components/docs/Outline.js +4 -0
  81. package/dist/esm/components/docs/Outline.vue_vue_type_script_setup_true_lang.js +75 -0
  82. package/dist/esm/components/docs/Sidebar.js +4 -0
  83. package/dist/esm/components/docs/Sidebar.vue_vue_type_script_setup_true_lang.js +88 -0
  84. package/dist/esm/components/home/Features.js +4 -0
  85. package/dist/esm/components/home/Features.vue_vue_type_script_setup_true_lang.js +115 -0
  86. package/dist/esm/components/home/Hero.js +4 -0
  87. package/dist/esm/components/home/Hero.vue_vue_type_script_setup_true_lang.js +110 -0
  88. package/dist/esm/components/home/QuickStart.js +4 -0
  89. package/dist/esm/components/home/QuickStart.vue_vue_type_script_setup_true_lang.js +71 -0
  90. package/dist/esm/components/layout/Footer.js +4 -0
  91. package/dist/esm/components/layout/Footer.vue_vue_type_script_setup_true_lang.js +27 -0
  92. package/dist/esm/components/layout/Header.js +4 -0
  93. package/dist/esm/components/layout/Header.vue_vue_type_script_setup_true_lang.js +144 -0
  94. package/dist/esm/components/pages/ChangeLog.js +4 -0
  95. package/dist/esm/components/pages/ChangeLog.vue_vue_type_script_setup_true_lang.js +22 -0
  96. package/dist/esm/components/pages/Doc.js +4 -0
  97. package/dist/esm/components/pages/Doc.vue_vue_type_script_setup_true_lang.js +64 -0
  98. package/dist/esm/components/pages/Home.js +4 -0
  99. package/dist/esm/components/pages/Home.vue_vue_type_script_setup_true_lang.js +29 -0
  100. package/dist/esm/components/pages/Jump.js +4 -0
  101. package/dist/esm/components/pages/Jump.vue_vue_type_script_setup_true_lang.js +93 -0
  102. package/dist/esm/components/pages/NotFound.js +4 -0
  103. package/dist/esm/components/pages/NotFound.vue_vue_type_script_setup_true_lang.js +24 -0
  104. package/dist/esm/components/pages/SinglePage.js +4 -0
  105. package/dist/esm/components/pages/SinglePage.vue_vue_type_script_setup_true_lang.js +29 -0
  106. package/dist/esm/components/pages/Sponsor.js +4 -0
  107. package/dist/esm/components/pages/Sponsor.vue_vue_type_script_setup_true_lang.js +94 -0
  108. package/dist/esm/components/search/MiniSearchModal.js +4 -0
  109. package/dist/esm/components/search/MiniSearchModal.vue_vue_type_script_setup_true_lang.js +121 -0
  110. package/dist/esm/components/search/SearchButton.js +4 -0
  111. package/dist/esm/components/search/SearchButton.vue_vue_type_script_setup_true_lang.js +23 -0
  112. package/dist/esm/composables/search.data.js +20 -0
  113. package/dist/esm/composables/useIcon.js +12 -0
  114. package/dist/esm/composables/useLink.js +30 -0
  115. package/dist/esm/composables/useLocale.js +55 -0
  116. package/dist/esm/composables/useReadingTime.js +36 -0
  117. package/dist/esm/composables/useSearch.js +71 -0
  118. package/dist/esm/config.js +58 -0
  119. package/dist/esm/dux.css +3 -0
  120. package/dist/esm/index.js +19 -0
  121. package/dist/esm/locales/de-DE.js +72 -0
  122. package/dist/esm/locales/en-US.js +72 -0
  123. package/dist/esm/locales/es-ES.js +72 -0
  124. package/dist/esm/locales/fr-FR.js +72 -0
  125. package/dist/esm/locales/ja-JP.js +72 -0
  126. package/dist/esm/locales/ko-KR.js +72 -0
  127. package/dist/esm/locales/ru-RU.js +72 -0
  128. package/dist/esm/locales/zh-CN.js +72 -0
  129. package/dist/esm/locales/zh-TW.js +72 -0
  130. package/dist/esm/shims/dayjs.js +5 -0
  131. package/dist/esm/shims/sanitize-url.js +5 -0
  132. package/dist/types/components/Layout.vue.d.ts +3 -0
  133. package/dist/types/components/common/Badge.vue.d.ts +9 -0
  134. package/dist/types/components/common/NavDropdown.vue.d.ts +16 -0
  135. package/dist/types/components/common/PageHero.vue.d.ts +27 -0
  136. package/dist/types/components/common/SocialIcons.vue.d.ts +9 -0
  137. package/dist/types/components/docs/DocFooter.vue.d.ts +3 -0
  138. package/dist/types/components/docs/Outline.vue.d.ts +3 -0
  139. package/dist/types/components/docs/Sidebar.vue.d.ts +3 -0
  140. package/dist/types/components/home/Features.vue.d.ts +18 -0
  141. package/dist/types/components/home/Hero.vue.d.ts +33 -0
  142. package/dist/types/components/home/QuickStart.vue.d.ts +22 -0
  143. package/dist/types/components/layout/Footer.vue.d.ts +10 -0
  144. package/dist/types/components/layout/Header.vue.d.ts +10 -0
  145. package/dist/types/components/pages/ChangeLog.vue.d.ts +3 -0
  146. package/dist/types/components/pages/Doc.vue.d.ts +3 -0
  147. package/dist/types/components/pages/Home.vue.d.ts +3 -0
  148. package/dist/types/components/pages/Jump.vue.d.ts +3 -0
  149. package/dist/types/components/pages/NotFound.vue.d.ts +3 -0
  150. package/dist/types/components/pages/SinglePage.vue.d.ts +3 -0
  151. package/dist/types/components/pages/Sponsor.vue.d.ts +3 -0
  152. package/dist/types/components/search/MiniSearchModal.vue.d.ts +3 -0
  153. package/dist/types/components/search/SearchButton.vue.d.ts +3 -0
  154. package/dist/types/composables/search.data.d.ts +3 -0
  155. package/dist/types/composables/useIcon.d.ts +11 -0
  156. package/dist/types/composables/useLink.d.ts +10 -0
  157. package/dist/types/composables/useLocale.d.ts +12 -0
  158. package/dist/types/composables/useReadingTime.d.ts +9 -0
  159. package/dist/types/composables/useSearch.d.ts +65 -0
  160. package/dist/types/config.d.ts +6 -0
  161. package/dist/types/index.d.ts +16 -0
  162. package/dist/types/types/index.d.ts +65 -0
  163. package/package.json +87 -3
@@ -0,0 +1,88 @@
1
+ import { useLocale as e } from "../../composables/useLocale.js";
2
+ import { useLink as t } from "../../composables/useLink.js";
3
+ import { Fragment as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, normalizeClass as s, onMounted as c, openBlock as l, ref as u, renderList as d, toDisplayString as f, unref as p, watch as m } from "vue";
4
+ import { useData as h, useRoute as g } from "vitepress";
5
+ // components/docs/Sidebar.vue?vue&type=script&setup=true&lang.ts
6
+ var _ = { class: "flex items-center py-3 md:hidden" }, v = { class: "relative overflow-hidden h-full py-6 px-4 md:pr-6 lg:py-8" }, y = { class: "flex items-center justify-between mb-4 md:hidden" }, b = { class: "text-lg font-semibold" }, x = { class: "w-full" }, S = { class: "pb-4 hidden md:block" }, C = { class: "mb-1 rounded-md px-2 py-1 text-base font-semibold" }, w = { class: "overflow-y-auto max-h-[calc(100vh-12rem)] md:max-h-[calc(100vh-8rem)]" }, T = { class: "sidebar-nav" }, E = {
7
+ key: 0,
8
+ class: "sidebar-group mb-4"
9
+ }, D = { class: "sidebar-group-title text-sm font-semibold text-gray-900 dark:text-gray-100 mb-2 px-2 py-1" }, O = {
10
+ key: 0,
11
+ class: "sidebar-group-items space-y-1"
12
+ }, k = ["href"], A = {
13
+ key: 1,
14
+ class: "ml-2"
15
+ }, j = { class: "text-sm font-medium text-gray-700 dark:text-gray-300 mb-1 px-2 py-1" }, M = { class: "space-y-1" }, N = ["href"], P = {
16
+ key: 1,
17
+ class: "mb-1"
18
+ }, F = ["href"], I = /*@__PURE__*/ o({
19
+ __name: "Sidebar",
20
+ setup(o) {
21
+ let { page: I, theme: L } = h(), R = g(), { resolveLink: z } = t(), B = e("sidebar"), V = u([]), H = u(!1), U = () => {
22
+ let e = L.value.sidebar;
23
+ if (!e) V.value = [], H.value = !1;
24
+ else if (typeof e == "object" && !Array.isArray(e)) {
25
+ let t = I.value.relativePath;
26
+ for (let [n, r] of Object.entries(e)) if (t.startsWith(n.replace(/^\//, ""))) {
27
+ V.value = Array.isArray(r) ? r : [], H.value = V.value.length > 0;
28
+ return;
29
+ }
30
+ V.value = [], H.value = !1;
31
+ } else V.value = Array.isArray(e) ? e : [], H.value = V.value.length > 0;
32
+ }, W = u(!1), G = (e) => {
33
+ if (!e) return !1;
34
+ let t = e.replace(/^\//, "").replace(/\/$/, ""), n = I.value.relativePath.replace(/^\//, "").replace(/\.md$/, "").replace(/\/index$/, "");
35
+ if (t === "" || t.endsWith("/")) {
36
+ let e = t.replace(/\/$/, "");
37
+ return n === e || n === e + "/index";
38
+ }
39
+ return n === t;
40
+ }, K = () => {
41
+ W.value = !0, document.body.style.overflow = "hidden";
42
+ }, q = () => {
43
+ W.value = !1, document.body.style.overflow = "";
44
+ }, J = () => {
45
+ window.innerWidth < 768 && q();
46
+ };
47
+ return m(() => R.path, () => {
48
+ U();
49
+ }), c(() => {
50
+ U();
51
+ let e = () => {
52
+ window.innerWidth >= 768 && q();
53
+ };
54
+ return window.addEventListener("resize", e), () => {
55
+ window.removeEventListener("resize", e);
56
+ };
57
+ }), (e, t) => (l(), i(n, null, [a("div", _, [a("button", {
58
+ type: "button",
59
+ class: "flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground",
60
+ onClick: K
61
+ }, [t[0] ||= a("div", { class: "icon-[heroicons--bars-3] h-4 w-4" }, null, -1), a("span", null, f(p(B).toggleButtonText), 1)])]), H.value ? (l(), i("aside", {
62
+ key: 0,
63
+ class: s(["fixed top-16 left-0 z-40 w-full h-[calc(100vh-4rem)] transform transition-transform md:translate-x-0 md:top-14 md:z-30 md:w-auto md:h-[calc(100vh-3.5rem)] md:bg-transparent shrink-0 md:sticky md:block", W.value ? "translate-x-0" : "-translate-x-full"])
64
+ }, [W.value ? (l(), i("div", {
65
+ key: 0,
66
+ class: "fixed inset-0 bg-black/50 -z-10 md:hidden",
67
+ onClick: q
68
+ })) : r("", !0), a("div", v, [a("div", y, [a("h4", b, f(p(B).mobileTitle), 1), a("button", {
69
+ type: "button",
70
+ class: "p-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-md",
71
+ onClick: q
72
+ }, [...t[1] ||= [a("div", { class: "icon-[heroicons--x-mark] h-5 w-5" }, null, -1)]])]), a("div", x, [a("div", S, [a("h4", C, f(p(B).docNavTitle), 1)]), a("div", w, [a("nav", T, [(l(!0), i(n, null, d(V.value, (e) => (l(), i(n, { key: e.text }, [e.text && !e.link ? (l(), i("div", E, [a("h3", D, f(e.text), 1), e.items ? (l(), i("ul", O, [(l(!0), i(n, null, d(e.items, (e) => (l(), i("li", { key: e.link || e.text }, [e.link ? (l(), i("a", {
73
+ key: 0,
74
+ href: p(z)(e.link),
75
+ class: s(["block px-3 py-2 text-sm rounded-md transition-colors duration-200", G(e.link) ? "bg-primary-100 dark:bg-primary-900 text-primary-700 dark:text-primary-300 font-medium border-l-2 border-primary-500" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-50 dark:hover:bg-gray-800"]),
76
+ onClick: J
77
+ }, f(e.text), 11, k)) : e.items ? (l(), i("div", A, [a("h4", j, f(e.text), 1), a("ul", M, [(l(!0), i(n, null, d(e.items, (e) => (l(), i("li", { key: e.link }, [a("a", {
78
+ href: p(z)(e.link),
79
+ class: s(["block px-3 py-2 text-sm rounded-md transition-colors duration-200 ml-2", G(e.link) ? "bg-primary-100 dark:bg-primary-900 text-primary-700 dark:text-primary-300 font-medium border-l-2 border-primary-500" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-50 dark:hover:bg-gray-800"]),
80
+ onClick: J
81
+ }, f(e.text), 11, N)]))), 128))])])) : r("", !0)]))), 128))])) : r("", !0)])) : e.link ? (l(), i("div", P, [a("a", {
82
+ href: p(z)(e.link),
83
+ class: s(["block px-3 py-2 text-sm rounded-md transition-colors duration-200", G(e.link) ? "bg-primary-100 dark:bg-primary-900 text-primary-700 dark:text-primary-300 font-medium border-l-2 border-primary-500" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-50 dark:hover:bg-gray-800"]),
84
+ onClick: J
85
+ }, f(e.text), 11, F)])) : r("", !0)], 64))), 128))])])])])], 2)) : r("", !0)], 64));
86
+ }
87
+ });
88
+ export { I as default };
@@ -0,0 +1,4 @@
1
+ import e from "./Features.vue_vue_type_script_setup_true_lang.js";
2
+ // components/home/Features.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,115 @@
1
+ import { useIcon as e } from "../../composables/useIcon.js";
2
+ import { useLink as t } from "../../composables/useLink.js";
3
+ import { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, defineComponent as c, normalizeClass as l, normalizeStyle as u, openBlock as d, renderList as f, toDisplayString as p } from "vue";
4
+ // components/home/Features.vue?vue&type=script&setup=true&lang.ts
5
+ var m = {
6
+ key: 0,
7
+ class: "section-padding bg-white dark:bg-gray-900 overflow-hidden"
8
+ }, h = { class: "container-section" }, g = {
9
+ key: 0,
10
+ class: "text-center max-w-3xl mx-auto mb-20"
11
+ }, _ = {
12
+ key: 0,
13
+ class: "badge-primary mb-6"
14
+ }, v = { class: "text-sm font-medium text-primary-700 dark:text-primary-300" }, y = {
15
+ key: 1,
16
+ class: "text-section-title mb-6"
17
+ }, b = {
18
+ key: 0,
19
+ class: "text-primary-linear"
20
+ }, x = {
21
+ key: 2,
22
+ class: "text-xl text-muted"
23
+ }, S = { class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-7xl mx-auto mb-20" }, C = [
24
+ "href",
25
+ "target",
26
+ "rel"
27
+ ], w = { class: "relative p-8" }, T = { class: "flex items-center mb-6" }, E = ["innerHTML"], D = { class: "text-xl font-semibold text-gray-900 dark:text-gray-100 mb-4 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors duration-300" }, O = { class: "text-gray-600 dark:text-gray-400 leading-relaxed" }, k = { class: "relative p-8" }, A = { class: "flex items-center mb-6" }, j = ["innerHTML"], M = { class: "text-xl font-semibold text-gray-900 dark:text-gray-100 mb-4 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors duration-300" }, N = { class: "text-gray-600 dark:text-gray-400 leading-relaxed" }, P = {
28
+ key: 0,
29
+ class: "container-section"
30
+ }, F = { class: "relative overflow-hidden rounded-3xl bg-linear-to-r from-primary-500 via-primary-600 to-primary-500 dark:from-primary-600 dark:via-primary-700 dark:to-primary-600 p-12 text-center shadow-2xl" }, I = { class: "relative" }, L = {
31
+ key: 0,
32
+ class: "text-3xl md:text-4xl font-bold text-white mb-6"
33
+ }, R = {
34
+ key: 1,
35
+ class: "text-xl text-primary-100 dark:text-primary-200 mb-8 max-w-3xl mx-auto leading-relaxed"
36
+ }, z = {
37
+ key: 2,
38
+ class: "flex flex-wrap justify-center gap-3"
39
+ }, B = /*@__PURE__*/ c({
40
+ __name: "Features",
41
+ props: {
42
+ features: {},
43
+ config: {}
44
+ },
45
+ setup(c) {
46
+ let B = c, { getIconClass: V } = e(), { resolveLink: H } = t(), U = {
47
+ blue: "from-blue-500 to-blue-600",
48
+ green: "from-green-500 to-green-600",
49
+ purple: "from-purple-500 to-purple-600",
50
+ orange: "from-orange-500 to-orange-600",
51
+ red: "from-red-500 to-red-600",
52
+ pink: "from-pink-500 to-pink-600",
53
+ indigo: "from-indigo-500 to-indigo-600",
54
+ teal: "from-teal-500 to-teal-600",
55
+ cyan: "from-cyan-500 to-cyan-600",
56
+ amber: "from-amber-500 to-amber-600"
57
+ }, W = (e) => U[e] || U.blue, G = r(() => B.features.map((e) => ({
58
+ ...e,
59
+ icon: e.icon || "star",
60
+ color: e.color || "blue",
61
+ iconClass: typeof e.icon == "string" ? V(e.icon) : e.icon,
62
+ link: e.link ? H(e.link) : void 0
63
+ })));
64
+ return (e, t) => G.value.length ? (d(), a("section", m, [
65
+ t[2] ||= o("div", { class: "absolute inset-0" }, [o("div", { class: "absolute top-0 left-1/4 w-72 h-72 bg-primary-100/20 dark:bg-primary-800/20 rounded-full blur-3xl opacity-60" }), o("div", { class: "absolute bottom-0 right-1/4 w-96 h-96 bg-primary-200/15 dark:bg-primary-700/15 rounded-full blur-3xl opacity-40" })], -1),
66
+ o("div", h, [c.config ? (d(), a("div", g, [
67
+ c.config.badge ? (d(), a("div", _, [t[0] ||= o("div", { class: "icon-[heroicons--star] w-4 h-4 text-primary-600 dark:text-primary-400 mr-2" }, null, -1), o("span", v, p(c.config.badge), 1)])) : i("", !0),
68
+ c.config.title || c.config.subtitle ? (d(), a("h2", y, [s(p(c.config.title) + " ", 1), c.config.subtitle ? (d(), a("span", b, p(c.config.subtitle), 1)) : i("", !0)])) : i("", !0),
69
+ c.config.description ? (d(), a("p", x, p(c.config.description), 1)) : i("", !0)
70
+ ])) : i("", !0), o("div", S, [(d(!0), a(n, null, f(G.value, (e, r) => (d(), a(n, { key: e.title }, [e.link ? (d(), a("a", {
71
+ key: 0,
72
+ href: e.link,
73
+ target: e.target || "_self",
74
+ rel: e.target === "_blank" ? "noopener noreferrer" : void 0,
75
+ class: "group relative overflow-hidden rounded-3xl bg-white dark:bg-gray-800 border border-gray-100 dark:border-gray-700 shadow-xl hover:shadow-2xl transition-all duration-500 hover:-translate-y-3 scale-in cursor-pointer",
76
+ style: u(`animation-delay: ${r * .1}s;`)
77
+ }, [o("div", w, [
78
+ o("div", T, [o("div", { class: l(`flex items-center justify-center w-14 h-14 rounded-xl bg-linear-to-br ${W(e.color)} shadow-sm group-hover:scale-105 transition-all duration-300`) }, [e.iconClass.startsWith("icon-[") ? (d(), a("div", {
79
+ key: 1,
80
+ class: l(`${e.iconClass} w-7 h-7 text-white`)
81
+ }, null, 2)) : (d(), a("div", {
82
+ key: 0,
83
+ innerHTML: e.iconClass,
84
+ class: "w-7 h-7 text-white text-2xl flex items-center justify-center"
85
+ }, null, 8, E))], 2)]),
86
+ o("h3", D, p(e.title), 1),
87
+ o("p", O, p(e.details), 1)
88
+ ]), t[1] ||= o("div", { class: "absolute top-4 right-4 opacity-0 group-hover:opacity-100 transition-opacity duration-300" }, [o("div", { class: "w-8 h-8 rounded-full bg-primary-500/20 flex items-center justify-center" }, [o("div", { class: "icon-[heroicons--arrow-right] w-4 h-4 text-primary-600 dark:text-primary-400" })])], -1)], 12, C)) : (d(), a("div", {
89
+ key: 1,
90
+ class: "group relative overflow-hidden rounded-3xl bg-white dark:bg-gray-800 border border-gray-100 dark:border-gray-700 shadow-xl hover:shadow-2xl transition-all duration-500 hover:-translate-y-3 scale-in",
91
+ style: u(`animation-delay: ${r * .1}s;`)
92
+ }, [o("div", k, [
93
+ o("div", A, [o("div", { class: l(`flex items-center justify-center w-14 h-14 rounded-xl bg-linear-to-br ${W(e.color)} shadow-sm group-hover:scale-105 transition-all duration-300`) }, [e.iconClass.startsWith("icon-[") ? (d(), a("div", {
94
+ key: 1,
95
+ class: l(`${e.iconClass} w-7 h-7 text-white`)
96
+ }, null, 2)) : (d(), a("div", {
97
+ key: 0,
98
+ innerHTML: e.iconClass,
99
+ class: "w-7 h-7 text-white text-2xl flex items-center justify-center"
100
+ }, null, 8, j))], 2)]),
101
+ o("h3", M, p(e.title), 1),
102
+ o("p", N, p(e.details), 1)
103
+ ])], 4))], 64))), 128))])]),
104
+ c.config?.extraSection ? (d(), a("div", P, [o("div", F, [o("div", I, [
105
+ c.config?.extraSection?.title ? (d(), a("h3", L, p(c.config.extraSection.title), 1)) : i("", !0),
106
+ c.config?.extraSection?.description ? (d(), a("p", R, p(c.config.extraSection.description), 1)) : i("", !0),
107
+ c.config?.extraSection?.tags?.length || c.config?.tags?.length ? (d(), a("div", z, [(d(!0), a(n, null, f(c.config?.extraSection?.tags || c.config?.tags || [], (e) => (d(), a("span", {
108
+ key: e,
109
+ class: "inline-flex items-center px-4 py-2 rounded-full bg-white/20 backdrop-blur-sm text-white font-medium text-sm border border-white/30 hover:bg-white/30 transition-colors"
110
+ }, p(e), 1))), 128))])) : i("", !0)
111
+ ])])])) : i("", !0)
112
+ ])) : i("", !0);
113
+ }
114
+ });
115
+ export { B as default };
@@ -0,0 +1,4 @@
1
+ import e from "./Hero.vue_vue_type_script_setup_true_lang.js";
2
+ // components/home/Hero.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,110 @@
1
+ import { useLink as e } from "../../composables/useLink.js";
2
+ import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createStaticVNode as s, createTextVNode as c, defineComponent as l, normalizeClass as u, normalizeStyle as d, openBlock as f, renderList as p, resolveDynamicComponent as m, toDisplayString as h, unref as g, withCtx as _ } from "vue";
3
+ // components/home/Hero.vue?vue&type=script&setup=true&lang.ts
4
+ var v = {
5
+ key: 0,
6
+ class: "relative min-h-screen flex items-center justify-center overflow-hidden bg-linear-to-br from-white via-primary-50/30 to-primary-100/50 dark:bg-linear-to-br dark:from-gray-900 dark:via-gray-800/50 dark:to-primary-950/30"
7
+ }, y = { class: "container-section py-20 text-center z-1" }, b = {
8
+ key: 0,
9
+ class: "fade-in mb-8"
10
+ }, x = { class: "badge-primary" }, S = { class: "text-sm font-medium text-primary-700 dark:text-primary-300" }, C = { class: "fade-in space-y-4 mb-8" }, w = { class: "text-hero-title" }, T = { class: "block text-primary-linear mb-2" }, E = {
11
+ key: 0,
12
+ class: "max-w-3xl mx-auto font-medium text-2xl text-muted"
13
+ }, D = {
14
+ key: 1,
15
+ class: "max-w-3xl mx-auto text-xl text-muted opacity-50"
16
+ }, O = {
17
+ key: 1,
18
+ class: "scale-in flex flex-col sm:flex-row items-center justify-center gap-4 mb-16"
19
+ }, k = [
20
+ "href",
21
+ "target",
22
+ "rel"
23
+ ], A = {
24
+ key: 2,
25
+ class: "scale-in mb-16"
26
+ }, j = { class: "flex flex-wrap items-start justify-center gap-8" }, M = ["src", "alt"], N = { class: "mt-3 text-base font-semibold text-gray-900 dark:text-white" }, P = {
27
+ key: 3,
28
+ class: "scale-in max-w-5xl mx-auto"
29
+ }, F = { class: "relative group" }, ee = { class: "relative bg-white dark:bg-gray-800 rounded-xl shadow-2xl overflow-hidden" }, I = { class: "flex items-center justify-between px-4 py-3 bg-gray-100 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600" }, L = { class: "flex-1 max-w-md mx-4" }, R = { class: "bg-white dark:bg-gray-600 rounded-md px-3 py-1 text-sm text-gray-600 dark:text-gray-300 text-center" }, z = { class: "aspect-16/8" }, B = ["src", "alt"], V = {
30
+ key: 1,
31
+ class: "w-full h-full bg-linear-to-br from-gray-50 to-white dark:from-gray-900 dark:to-gray-800 p-8 flex flex-col"
32
+ }, H = /*@__PURE__*/ l({
33
+ __name: "Hero",
34
+ props: { hero: {} },
35
+ setup(l) {
36
+ let H = l, { resolveLink: U, resolveAsset: W } = e(), G = n(() => H.hero.actions?.map((e) => ({
37
+ ...e,
38
+ primary: e.theme === "brand",
39
+ href: U(e.link)
40
+ })) || []), K = n(() => H.hero.mockUrl || "vitepress.dev"), q = n(() => H.hero.qrCodes || []), J = n(() => q.value.length > 0);
41
+ function Y(e, t) {
42
+ return e == null || e === "" ? t : typeof e == "number" ? `${e}px` : e;
43
+ }
44
+ let X = n(() => Y(H.hero.qrCodeSize, "8rem")), Z = n(() => ({
45
+ width: X.value,
46
+ height: X.value
47
+ }));
48
+ function Q(e) {
49
+ return e ? U(e) : void 0;
50
+ }
51
+ function $(e) {
52
+ return e && /^https?:\/\//.test(e) ? "_blank" : "_self";
53
+ }
54
+ return (e, n) => l.hero.name || l.hero.text || l.hero.tagline ? (f(), a("section", v, [n[7] ||= o("div", { class: "absolute inset-0 overflow-hidden" }, [
55
+ o("div", { class: "absolute -top-40 -right-32 w-80 h-80 bg-primary-200/20 dark:bg-primary-800/20 rounded-full blur-3xl" }),
56
+ o("div", { class: "absolute -bottom-40 -left-32 w-96 h-96 bg-primary-300/15 dark:bg-primary-700/15 rounded-full blur-3xl" }),
57
+ o("div", { class: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-150 h-150 bg-linear-to-r from-primary-100/10 to-primary-200/10 dark:from-primary-900/10 dark:to-primary-800/10 rounded-full blur-3xl" })
58
+ ], -1), o("div", y, [
59
+ l.hero.subtitle ? (f(), a("div", b, [o("div", x, [n[0] ||= o("div", { class: "icon-[heroicons--bolt] w-4 h-4 text-primary-600 dark:text-primary-400 mr-2" }, null, -1), o("span", S, h(l.hero.subtitle), 1)])])) : i("", !0),
60
+ o("div", C, [
61
+ o("h1", w, [o("span", T, h(l.hero.name), 1)]),
62
+ l.hero.text ? (f(), a("p", E, h(l.hero.text), 1)) : i("", !0),
63
+ l.hero.tagline ? (f(), a("p", D, h(l.hero.tagline), 1)) : i("", !0)
64
+ ]),
65
+ G.value.length > 0 ? (f(), a("div", O, [(f(!0), a(t, null, p(G.value, (e) => (f(), a("a", {
66
+ key: e.text,
67
+ href: e.href,
68
+ target: e.target || "_self",
69
+ rel: e.target === "_blank" ? "noopener noreferrer" : void 0,
70
+ class: u(e.primary ? "btn-primary group" : "btn-secondary group")
71
+ }, [e.primary ? (f(), a(t, { key: 0 }, [c(h(e.text) + " ", 1), n[1] ||= o("div", { class: "icon-[heroicons--arrow-right] ml-2 w-5 h-5 group-hover:translate-x-1 transition-transform" }, null, -1)], 64)) : (f(), a(t, { key: 1 }, [n[2] ||= o("div", { class: "icon-[heroicons--code-bracket] mr-2 w-5 h-5" }, null, -1), c(" " + h(e.text), 1)], 64))], 10, k))), 128))])) : i("", !0),
72
+ J.value ? (f(), a("div", A, [o("div", j, [(f(!0), a(t, null, p(q.value, (e) => (f(), r(m(e.link ? "a" : "div"), {
73
+ key: `${e.title}-${e.image}`,
74
+ href: Q(e.link),
75
+ target: e.link ? $(e.link) : void 0,
76
+ rel: e.link ? "noopener noreferrer" : void 0,
77
+ class: "group flex flex-col items-center text-center"
78
+ }, {
79
+ default: _(() => [o("div", {
80
+ style: d(Z.value),
81
+ class: "flex items-center justify-center overflow-hidden"
82
+ }, [o("img", {
83
+ src: g(W)(e.image),
84
+ alt: e.alt || e.title,
85
+ class: "h-full w-full object-contain"
86
+ }, null, 8, M)], 4), o("div", N, h(e.title), 1)]),
87
+ _: 2
88
+ }, 1032, [
89
+ "href",
90
+ "target",
91
+ "rel"
92
+ ]))), 128))])])) : i("", !0),
93
+ !J.value && l.hero.hasOwnProperty("image") ? (f(), a("div", P, [o("div", F, [o("div", ee, [o("div", I, [
94
+ n[3] ||= o("div", { class: "flex items-center space-x-2" }, [
95
+ o("div", { class: "w-3 h-3 bg-red-500 rounded-full" }),
96
+ o("div", { class: "w-3 h-3 bg-yellow-500 rounded-full" }),
97
+ o("div", { class: "w-3 h-3 bg-green-500 rounded-full" })
98
+ ], -1),
99
+ o("div", L, [o("div", R, h(K.value), 1)]),
100
+ n[4] ||= o("div", { class: "w-16" }, null, -1)
101
+ ]), o("div", z, [l.hero.image && l.hero.image.src ? (f(), a("img", {
102
+ key: 0,
103
+ src: g(W)(l.hero.image.src),
104
+ alt: l.hero.image.alt || "",
105
+ class: "w-full h-full object-cover object-top-left"
106
+ }, null, 8, B)) : (f(), a("div", V, [...n[5] ||= [s("<div class=\"text-center mb-8\"><div class=\"h-8 bg-gray-200 dark:bg-gray-600 rounded w-64 mx-auto mb-3\"></div><div class=\"h-4 bg-gray-100 dark:bg-gray-700 rounded w-80 mx-auto\"></div></div><div class=\"flex justify-center space-x-8 mb-8\"><div class=\"h-3 bg-primary-500 rounded w-12\"></div><div class=\"h-3 bg-gray-300 dark:bg-gray-600 rounded w-16\"></div><div class=\"h-3 bg-gray-300 dark:bg-gray-600 rounded w-14\"></div><div class=\"h-3 bg-gray-300 dark:bg-gray-600 rounded w-18\"></div></div><div class=\"flex-1 grid grid-cols-3 gap-6\"><div class=\"space-y-3\"><div class=\"h-4 bg-primary-200 dark:bg-primary-800 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded w-4/5\"></div><div class=\"h-3 bg-gray-100 dark:bg-gray-700 rounded w-3/5\"></div></div><div class=\"space-y-3\"><div class=\"h-4 bg-primary-200 dark:bg-primary-800 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded w-5/6\"></div><div class=\"h-3 bg-gray-100 dark:bg-gray-700 rounded w-2/3\"></div></div><div class=\"space-y-3\"><div class=\"h-4 bg-primary-200 dark:bg-primary-800 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded\"></div><div class=\"h-3 bg-gray-200 dark:bg-gray-600 rounded w-3/4\"></div><div class=\"h-3 bg-gray-100 dark:bg-gray-700 rounded w-1/2\"></div></div></div>", 3)]]))])]), n[6] ||= o("div", { class: "absolute inset-0 rounded-xl bg-linear-to-r from-primary-500/5 to-primary-400/5 opacity-0 group-hover:opacity-100 transition-opacity duration-300" }, null, -1)])])) : i("", !0)
107
+ ])])) : i("", !0);
108
+ }
109
+ });
110
+ export { H as default };
@@ -0,0 +1,4 @@
1
+ import e from "./QuickStart.vue_vue_type_script_setup_true_lang.js";
2
+ // components/home/QuickStart.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,71 @@
1
+ import { useIcon as e } from "../../composables/useIcon.js";
2
+ import { useLink as t } from "../../composables/useLink.js";
3
+ import { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createStaticVNode as s, createTextVNode as c, defineComponent as l, normalizeClass as u, normalizeStyle as d, openBlock as f, renderList as p, toDisplayString as m, unref as h } from "vue";
4
+ // components/home/QuickStart.vue?vue&type=script&setup=true&lang.ts
5
+ var g = {
6
+ key: 0,
7
+ class: "section-padding bg-gray-50 dark:bg-gray-950/25 overflow-hidden relative"
8
+ }, _ = { class: "container-section" }, v = { class: "text-center max-w-3xl mx-auto mb-20" }, y = {
9
+ key: 0,
10
+ class: "badge-primary mb-6"
11
+ }, b = { class: "text-sm font-medium text-primary-700 dark:text-primary-300" }, x = {
12
+ key: 1,
13
+ class: "text-section-title mb-6"
14
+ }, S = {
15
+ key: 0,
16
+ class: "text-primary-linear"
17
+ }, C = {
18
+ key: 2,
19
+ class: "text-xl text-muted"
20
+ }, w = {
21
+ key: 0,
22
+ class: "max-w-6xl mx-auto"
23
+ }, T = { class: "grid grid-cols-1 lg:grid-cols-3 gap-8 relative" }, E = { class: "relative backdrop-blur rounded-3xl shadow-lg hover:shadow-2xl transition-all duration-500 hover:-translate-y-2 p-8 bg-white/95 dark:bg-gray-800/95 border border-gray-100 dark:border-gray-600/30 group-hover:border-primary-100/60 dark:group-hover:border-primary-600/60 h-full flex flex-col" }, D = { class: "relative flex flex-col h-full" }, O = { class: "flex items-center justify-between mb-6" }, k = ["innerHTML"], A = { class: "text-right" }, j = { class: "text-4xl font-bold text-gray-200 dark:text-gray-600 group-hover:text-primary-300 dark:group-hover:text-primary-400 transition-colors" }, M = { class: "space-y-4 flex-1 flex flex-col" }, N = { class: "text-card-title group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors" }, P = { class: "text-muted" }, F = { class: "relative flex-1" }, I = { class: "h-full bg-gray-900 dark:bg-black rounded-xl p-4 overflow-x-auto" }, L = { class: "text-sm font-mono text-green-400 whitespace-pre-wrap" }, R = {
24
+ key: 0,
25
+ class: "mt-20 text-center"
26
+ }, z = { class: "inline-flex items-center px-6 py-3 bg-linear-to-r from-primary-50 to-primary-100 dark:from-primary-900/50 dark:to-primary-800/50 border border-primary-200/50 dark:border-primary-700/50 rounded-2xl" }, B = { class: "text-primary-700 dark:text-primary-300 font-medium" }, V = ["href"], H = /*@__PURE__*/ l({
27
+ __name: "QuickStart",
28
+ props: { quickStart: {} },
29
+ setup(l) {
30
+ let H = l, { getIconClass: U } = e(), { resolveLink: W } = t(), G = r(() => H.quickStart?.steps || []), K = r(() => G.value.map((e) => ({
31
+ ...e,
32
+ iconClass: typeof e.icon == "string" ? U(e.icon) : e.icon
33
+ }))), q = {
34
+ blue: "from-blue-500 to-blue-600",
35
+ green: "from-green-500 to-green-600",
36
+ purple: "from-purple-500 to-purple-600",
37
+ orange: "from-orange-500 to-orange-600",
38
+ red: "from-red-500 to-red-600",
39
+ pink: "from-pink-500 to-pink-600",
40
+ indigo: "from-indigo-500 to-indigo-600",
41
+ teal: "from-teal-500 to-teal-600",
42
+ cyan: "from-cyan-500 to-cyan-600",
43
+ amber: "from-amber-500 to-amber-600"
44
+ }, J = (e) => q[e] || q.blue;
45
+ return (e, t) => l.quickStart ? (f(), a("section", g, [t[6] ||= o("div", { class: "absolute inset-0" }, [o("div", { class: "absolute top-1/2 left-0 w-64 h-64 bg-primary-100/30 dark:bg-primary-800/20 rounded-full blur-3xl -translate-y-1/2 -translate-x-1/2" }), o("div", { class: "absolute top-1/2 right-0 w-80 h-80 bg-primary-200/20 dark:bg-primary-700/15 rounded-full blur-3xl -translate-y-1/2 translate-x-1/2" })], -1), o("div", _, [o("div", v, [
46
+ l.quickStart.badge ? (f(), a("div", y, [t[0] ||= o("div", { class: "icon-[heroicons--clock] w-4 h-4 text-primary-600 dark:text-primary-400 mr-2" }, null, -1), o("span", b, m(l.quickStart.badge), 1)])) : i("", !0),
47
+ l.quickStart.title || l.quickStart.subtitle ? (f(), a("h2", x, [l.quickStart.subtitle ? (f(), a("span", S, m(l.quickStart.subtitle), 1)) : i("", !0), c(" " + m(l.quickStart.title && l.quickStart.title.replace(l.quickStart.subtitle || "", "").trim()), 1)])) : i("", !0),
48
+ l.quickStart.description ? (f(), a("p", C, m(l.quickStart.description), 1)) : i("", !0)
49
+ ]), G.value.length ? (f(), a("div", w, [o("div", T, [t[4] ||= s("<div class=\"hidden lg:block absolute top-20 left-1/6 right-1/6 h-0.5 bg-linear-to-r from-primary-200 via-primary-300 to-primary-200 dark:from-primary-700 dark:via-primary-600 dark:to-primary-700\"></div><div class=\"absolute inset-0 opacity-60\"><div class=\"absolute top-10 left-10 w-32 h-32 bg-primary-300/40 dark:bg-primary-700/40 rounded-full blur-2xl\"></div><div class=\"absolute bottom-10 right-10 w-40 h-40 bg-primary-400/30 dark:bg-primary-600/30 rounded-full blur-2xl\"></div><div class=\"absolute top-1/2 left-1/3 w-28 h-28 bg-primary-200/50 dark:bg-primary-800/50 rounded-full blur-xl\"></div></div>", 2), (f(!0), a(n, null, p(K.value, (e, n) => (f(), a("div", {
50
+ key: n,
51
+ class: "relative group scale-in",
52
+ style: d(`animation-delay: ${n * .2}s;`)
53
+ }, [t[3] ||= o("div", { class: "hidden lg:block absolute -top-2 left-1/2 -translate-x-1/2 w-4 h-4 bg-primary-400 dark:bg-primary-500 rounded-full border-4 border-white dark:border-gray-900 shadow-lg z-10" }, null, -1), o("div", E, [t[2] ||= o("div", { class: "absolute inset-0 bg-linear-to-br from-primary-50/50 to-transparent dark:from-primary-900/20 dark:to-transparent rounded-3xl opacity-0 group-hover:opacity-100 transition-opacity duration-300" }, null, -1), o("div", D, [o("div", O, [o("div", { class: u(`flex items-center justify-center shadow-lg w-16 h-16 rounded-2xl bg-linear-to-br ${J(e.color)} group-hover:scale-110 transition-transform duration-300`) }, [e.iconClass.startsWith("icon-[") ? (f(), a("div", {
54
+ key: 1,
55
+ class: u(`${e.iconClass} w-8 h-8 text-white`)
56
+ }, null, 2)) : (f(), a("div", {
57
+ key: 0,
58
+ innerHTML: e.iconClass,
59
+ class: "w-8 h-8 text-white text-2xl flex items-center justify-center"
60
+ }, null, 8, k))], 2), o("div", A, [o("span", j, m(e.step), 1)])]), o("div", M, [
61
+ o("h3", N, m(e.title), 1),
62
+ o("p", P, m(e.description), 1),
63
+ o("div", F, [o("div", I, [t[1] ||= s("<div class=\"flex items-center mb-2\"><div class=\"flex space-x-2\"><div class=\"w-3 h-3 bg-red-500 rounded-full\"></div><div class=\"w-3 h-3 bg-yellow-500 rounded-full\"></div><div class=\"w-3 h-3 bg-green-500 rounded-full\"></div></div></div>", 1), o("code", L, "$ " + m(e.code), 1)])])
64
+ ])])])], 4))), 128))]), l.quickStart.helpText || l.quickStart.helpLink ? (f(), a("div", R, [o("div", z, [t[5] ||= o("div", { class: "icon-[heroicons--information-circle] w-5 h-5 text-primary-600 dark:text-primary-400 mr-3" }, null, -1), o("span", B, [c(m(l.quickStart.helpText) + " ", 1), l.quickStart.helpLink ? (f(), a("a", {
65
+ key: 0,
66
+ href: h(W)(l.quickStart.helpLink),
67
+ class: "underline hover:no-underline"
68
+ }, m(l.quickStart.helpLinkText), 9, V)) : i("", !0)])])])) : i("", !0)])) : i("", !0)])])) : i("", !0);
69
+ }
70
+ });
71
+ export { H as default };
@@ -0,0 +1,4 @@
1
+ import e from "./Footer.vue_vue_type_script_setup_true_lang.js";
2
+ // components/layout/Footer.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,27 @@
1
+ import e from "../common/SocialIcons.js";
2
+ import { createCommentVNode as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, openBlock as s, toDisplayString as c } from "vue";
3
+ // components/layout/Footer.vue?vue&type=script&setup=true&lang.ts
4
+ var l = { class: "border-t border-gray-200 dark:border-gray-700 bg-background" }, u = { class: "container mx-auto px-4 py-8" }, d = { class: "flex flex-col items-center gap-4 md:flex-row md:justify-between md:gap-2" }, f = { class: "flex items-center gap-4" }, p = { class: "text-center text-sm leading-loose text-muted-foreground md:text-right flex items-center gap-2" }, m = ["innerHTML"], h = ["innerHTML"], g = { key: 2 }, _ = /*@__PURE__*/ o({
5
+ __name: "Footer",
6
+ props: {
7
+ footer: {},
8
+ themeConfig: {}
9
+ },
10
+ setup(o) {
11
+ return (_, v) => (s(), n("footer", l, [r("div", u, [r("div", d, [r("div", f, [a(e, { variant: "footer" })]), r("div", p, [o.footer.message ? (s(), n("span", {
12
+ key: 0,
13
+ innerHTML: o.footer.message
14
+ }, null, 8, m)) : t("", !0), o.footer.copyright ? (s(), n("span", {
15
+ key: 1,
16
+ innerHTML: o.footer.copyright
17
+ }, null, 8, h)) : (s(), n("span", g, [
18
+ v[0] ||= i(" Powered by ", -1),
19
+ v[1] ||= r("a", {
20
+ href: "https://github.com/duxweb/dux-docs",
21
+ class: "font-medium underline underline-offset-4 hover:text-foreground transition-colors"
22
+ }, "dux-docs", -1),
23
+ i(" · © " + c((/* @__PURE__ */ new Date()).getFullYear()), 1)
24
+ ]))])])])]));
25
+ }
26
+ });
27
+ export { _ as default };
@@ -0,0 +1,4 @@
1
+ import e from "./Header.vue_vue_type_script_setup_true_lang.js";
2
+ // components/layout/Header.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,144 @@
1
+ import e from "../search/SearchButton.js";
2
+ import t from "../common/SocialIcons.js";
3
+ import n from "../common/NavDropdown.js";
4
+ import { useLocale as r } from "../../composables/useLocale.js";
5
+ import { useLink as i } from "../../composables/useLink.js";
6
+ import { Fragment as a, Transition as o, computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createVNode as f, defineComponent as p, onMounted as m, onUnmounted as h, openBlock as g, ref as _, renderList as v, toDisplayString as y, unref as b, withCtx as ee } from "vue";
7
+ import { useData as te, useRouter as x } from "vitepress";
8
+ // components/layout/Header.vue?vue&type=script&setup=true&lang.ts
9
+ var ne = { class: "sticky top-0 z-50 w-full border-b border-gray-200 dark:border-gray-700 bg-white/95 dark:bg-gray-900/95 backdrop-blur supports-backdrop-filter:bg-white/60 dark:supports-backdrop-filter:bg-gray-900/60" }, S = { class: "container mx-auto flex h-16 max-w-screen-2xl items-center px-4" }, C = { class: "mr-4 flex" }, w = ["href"], T = ["src"], E = ["src"], D = ["src"], O = {
10
+ key: 1,
11
+ class: "font-bold"
12
+ }, k = { class: "hidden md:flex items-center gap-6 text-sm" }, re = { class: "flex flex-1 items-center justify-end space-x-2" }, ie = ["aria-label", "title"], ae = {
13
+ key: 0,
14
+ class: "absolute right-0 top-full mt-2 py-1 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 origin-top-right z-50"
15
+ }, A = ["onClick"], j = ["aria-label"], M = {
16
+ id: "mobile-menu",
17
+ class: "hidden md:hidden border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900"
18
+ }, N = { class: "container mx-auto px-4 py-4 space-y-4" }, P = { class: "flex flex-col space-y-2" }, F = /*@__PURE__*/ p({
19
+ __name: "Header",
20
+ props: {
21
+ themeConfig: {},
22
+ site: {},
23
+ isDark: { type: Boolean },
24
+ lang: {}
25
+ },
26
+ setup(p) {
27
+ let { isDark: F, site: I, theme: L, localeIndex: R } = te(), z = x(), B = r("ui"), { resolveLink: V } = i(), H = s(() => ({
28
+ switchTheme: {
29
+ dark: B.value?.switchTheme?.dark || "Switch to dark mode",
30
+ light: B.value?.switchTheme?.light || "Switch to light mode"
31
+ },
32
+ language: {
33
+ ariaLabel: B.value?.language?.ariaLabel || "language",
34
+ switchLanguage: B.value?.language?.switchLanguage || "Switch language"
35
+ }
36
+ })), U = p, W = s(() => U.themeConfig || L.value), G = s(() => U.site || I.value), K = s(() => W.value.siteTitle === !1 ? !1 : W.value.siteTitle || G.value.title), q = s(() => W.value.nav || []), J = s(() => {
37
+ let e = W.value.logo;
38
+ return e ? typeof e == "string" ? V(e) : typeof e == "object" ? {
39
+ light: e.light ? V(e.light) : null,
40
+ dark: e.dark ? V(e.dark) : null
41
+ } : null : null;
42
+ }), Y = s(() => I.value.locales || {}), X = s(() => {
43
+ let e = Y.value[R.value];
44
+ return !e || typeof e != "object" ? null : e;
45
+ }), oe = s(() => {
46
+ let e = [];
47
+ for (let [t, n] of Object.entries(Y.value)) if (t !== R.value && n && typeof n == "object") {
48
+ let r = n, i = "";
49
+ i = r.link ? V(r.link) : V(t === "root" ? "/" : `/${t}/`), e.push({
50
+ key: t,
51
+ label: r.label || t,
52
+ link: i
53
+ });
54
+ }
55
+ return e;
56
+ }), Z = _(!1), Q = _(), $ = (e) => {
57
+ Q.value && !Q.value.contains(e.target) && (Z.value = !1);
58
+ };
59
+ m(() => {
60
+ document.addEventListener("click", $);
61
+ }), h(() => {
62
+ document.removeEventListener("click", $);
63
+ });
64
+ let se = (e) => {
65
+ z.go(e), Z.value = !1;
66
+ }, ce = () => {
67
+ "startViewTransition" in document && window.matchMedia("(prefers-reduced-motion: no-preference)").matches ? document.startViewTransition(() => {
68
+ F.value = !F.value;
69
+ }) : F.value = !F.value;
70
+ }, le = () => {
71
+ document.getElementById("mobile-menu")?.classList.toggle("hidden");
72
+ };
73
+ return (r, i) => (g(), u("header", ne, [d("div", S, [
74
+ d("div", C, [d("a", {
75
+ href: b(V)("/"),
76
+ class: "mr-6 flex items-center space-x-2"
77
+ }, [J.value ? (g(), u(a, { key: 0 }, [typeof J.value == "string" ? (g(), u("img", {
78
+ key: 0,
79
+ src: J.value,
80
+ alt: "Logo",
81
+ class: "h-6 w-6"
82
+ }, null, 8, T)) : typeof J.value == "object" ? (g(), u(a, { key: 1 }, [b(F) && J.value.dark ? (g(), u("img", {
83
+ key: 0,
84
+ src: J.value.dark,
85
+ alt: "Logo",
86
+ class: "h-6 w-6"
87
+ }, null, 8, E)) : !b(F) && J.value.light ? (g(), u("img", {
88
+ key: 1,
89
+ src: J.value.light,
90
+ alt: "Logo",
91
+ class: "h-6 w-6"
92
+ }, null, 8, D)) : l("", !0)], 64)) : l("", !0)], 64)) : l("", !0), K.value ? (g(), u("span", O, y(K.value), 1)) : l("", !0)], 8, w)]),
93
+ d("nav", k, [(g(!0), u(a, null, v(q.value, (e) => (g(), c(n, {
94
+ key: e.text,
95
+ item: e
96
+ }, null, 8, ["item"]))), 128))]),
97
+ d("div", re, [
98
+ f(e, { class: "hidden md:flex" }),
99
+ Object.keys(Y.value).length > 1 ? (g(), u("div", {
100
+ key: 0,
101
+ class: "relative",
102
+ ref_key: "langMenuRef",
103
+ ref: Q
104
+ }, [d("button", {
105
+ type: "button",
106
+ class: "btn-ghost px-2 [w-2rem] h-8",
107
+ onClick: i[0] ||= (e) => Z.value = !Z.value,
108
+ "aria-label": X.value?.label || H.value.language.ariaLabel,
109
+ title: X.value?.label || H.value.language.switchLanguage
110
+ }, [...i[1] ||= [d("div", { class: "icon-[heroicons--language] h-4 w-4" }, null, -1)]], 8, ie), f(o, {
111
+ "enter-active-class": "transition-all duration-200 ease-out",
112
+ "enter-from-class": "opacity-0 transform scale-95 -translate-y-1",
113
+ "enter-to-class": "opacity-100 transform scale-100 translate-y-0",
114
+ "leave-active-class": "transition-all duration-150 ease-in",
115
+ "leave-from-class": "opacity-100 transform scale-100 translate-y-0",
116
+ "leave-to-class": "opacity-0 transform scale-95 -translate-y-1"
117
+ }, {
118
+ default: ee(() => [Z.value ? (g(), u("div", ae, [(g(!0), u(a, null, v(oe.value, (e) => (g(), u("button", {
119
+ key: e.key,
120
+ onClick: (t) => se(e.link),
121
+ class: "block w-full text-left px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 first:rounded-t-md last:rounded-b-md transition-colors duration-150"
122
+ }, y(e.label), 9, A))), 128))])) : l("", !0)]),
123
+ _: 1
124
+ })], 512)) : l("", !0),
125
+ f(t, { variant: "header" }),
126
+ d("button", {
127
+ type: "button",
128
+ class: "btn-ghost px-2 theme-toggle",
129
+ onClick: ce,
130
+ "aria-label": b(F) ? H.value.switchTheme.light : H.value.switchTheme.dark
131
+ }, [...i[2] ||= [d("div", { class: "icon-[tabler--sun] h-4 w-4 sun-icon" }, null, -1), d("div", { class: "icon-[tabler--moon] h-4 w-4 moon-icon" }, null, -1)]], 8, j),
132
+ d("button", {
133
+ type: "button",
134
+ class: "btn-ghost px-2 [w-2rem] h-8 md:hidden",
135
+ onClick: le
136
+ }, [...i[3] ||= [d("div", { class: "icon-[heroicons--bars-3] h-4 w-4" }, null, -1)]])
137
+ ])
138
+ ]), d("div", M, [d("div", N, [f(e, { class: "w-full" }), d("nav", P, [(g(!0), u(a, null, v(q.value, (e) => (g(), c(n, {
139
+ key: e.text,
140
+ item: e
141
+ }, null, 8, ["item"]))), 128))])])])]));
142
+ }
143
+ });
144
+ export { F as default };
@@ -0,0 +1,4 @@
1
+ import e from "./ChangeLog.vue_vue_type_script_setup_true_lang.js";
2
+ // components/pages/ChangeLog.vue
3
+ var t = e;
4
+ export { t as default };
@@ -0,0 +1,22 @@
1
+ import e from "../common/PageHero.js";
2
+ import { createElementBlock as t, createElementVNode as n, createVNode as r, defineComponent as i, openBlock as a, resolveComponent as o, unref as s } from "vue";
3
+ import { useData as c } from "vitepress";
4
+ // components/pages/ChangeLog.vue?vue&type=script&setup=true&lang.ts
5
+ var l = { class: "changelog-container" }, u = { class: "changelog-main" }, d = { class: "changelog-main-container" }, f = { class: "changelog-content prose-content" }, p = /*@__PURE__*/ i({
6
+ __name: "ChangeLog",
7
+ setup(i) {
8
+ let { frontmatter: p } = c();
9
+ return (i, c) => {
10
+ let m = o("Content");
11
+ return a(), t("div", l, [r(e, {
12
+ title: s(p).title || "",
13
+ description: s(p).description || "",
14
+ icon: "icon-[tabler--news]",
15
+ color: "primary",
16
+ align: "center",
17
+ size: "md"
18
+ }, null, 8, ["title", "description"]), n("main", u, [n("div", d, [n("div", f, [r(m)])])])]);
19
+ };
20
+ }
21
+ });
22
+ export { p as default };
@@ -0,0 +1,4 @@
1
+ import e from "./Doc.vue_vue_type_script_setup_true_lang.js";
2
+ // components/pages/Doc.vue
3
+ var t = e;
4
+ export { t as default };