@ansidev-oss/vitepress-theme-ansidev 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/{Donation-BBPb8v5p.js → Donation-BJ2fj2Gs.js} +35 -13
- package/dist/client/{GoogleAnalytics-34XEM7eO.js → GoogleAnalytics-DwvjYPU_.js} +7 -1
- package/dist/client/index.js +108 -106
- package/dist/client/plugins/donation/index.d.ts +8 -0
- package/dist/client/styles.css +1 -1
- package/dist/node/config.d.mts +8 -0
- package/package.json +1 -1
- package/src/client/components/Footer.vue +1 -1
- package/src/client/components/LocaleSwitcher.vue +15 -2
- package/src/client/components/TermLink.vue +11 -1
- package/src/client/index.ts +1 -1
- package/src/client/layouts/Layout.vue +1 -1
- package/src/client/plugins/donation/components/DonationButton.vue +8 -0
- package/src/client/plugins/donation/index.ts +11 -3
- package/src/client/plugins/google-analytics/components/GoogleAnalytics.vue +19 -1
|
@@ -1,44 +1,66 @@
|
|
|
1
|
-
import { Fragment as e, computed as t, createBlock as n, createElementBlock as r, createElementVNode as i, defineComponent as a, mergeProps as o, normalizeStyle as s, openBlock as c, renderList as l } from "vue";
|
|
1
|
+
import { Fragment as e, computed as t, createBlock as n, createElementBlock as r, createElementVNode as i, defineComponent as a, mergeProps as o, normalizeStyle as s, openBlock as c, renderList as l, unref as u } from "vue";
|
|
2
2
|
// src/client/plugins/donation/index.ts
|
|
3
|
-
var
|
|
3
|
+
var d = {
|
|
4
4
|
buymeacoffee: {
|
|
5
5
|
donationBaseUrl: "https://buymeacoffee.com",
|
|
6
6
|
donationButtonImage: "https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png",
|
|
7
7
|
donationButtonStyle: {
|
|
8
8
|
height: "60px !important",
|
|
9
9
|
width: "217px !important"
|
|
10
|
+
},
|
|
11
|
+
donationButtonSize: {
|
|
12
|
+
width: 545,
|
|
13
|
+
height: 153
|
|
10
14
|
}
|
|
11
15
|
},
|
|
12
16
|
kofi: {
|
|
13
17
|
donationBaseUrl: "https://ko-fi.com",
|
|
14
18
|
donationButtonImage: "https://storage.ko-fi.com/cdn/brandasset/kofi_bg_tag_white.png",
|
|
15
|
-
donationButtonStyle: { height: "60px !important" }
|
|
19
|
+
donationButtonStyle: { height: "60px !important" },
|
|
20
|
+
donationButtonSize: {
|
|
21
|
+
width: 341,
|
|
22
|
+
height: 129
|
|
23
|
+
}
|
|
16
24
|
},
|
|
17
25
|
paypal: {
|
|
18
26
|
donationBaseUrl: "https://paypal.me",
|
|
19
|
-
donationButtonImage: "https://paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"
|
|
27
|
+
donationButtonImage: "https://paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif",
|
|
28
|
+
donationButtonSize: {
|
|
29
|
+
width: 147,
|
|
30
|
+
height: 47
|
|
31
|
+
}
|
|
20
32
|
}
|
|
21
|
-
},
|
|
33
|
+
}, f = ["href"], p = [
|
|
34
|
+
"src",
|
|
35
|
+
"alt",
|
|
36
|
+
"width",
|
|
37
|
+
"height"
|
|
38
|
+
], m = /* @__PURE__ */ a({
|
|
22
39
|
__name: "DonationButton",
|
|
23
40
|
props: {
|
|
24
41
|
donationPlatform: {},
|
|
25
42
|
donationId: {},
|
|
26
43
|
donationBaseUrl: {},
|
|
27
44
|
donationButtonImage: {},
|
|
28
|
-
donationButtonStyle: {}
|
|
45
|
+
donationButtonStyle: {},
|
|
46
|
+
donationButtonSize: {}
|
|
29
47
|
},
|
|
30
48
|
setup(e) {
|
|
31
|
-
let n = e, a = t(() => new URL(n.donationId, n.donationBaseUrl).toString());
|
|
49
|
+
let n = e, a = t(() => new URL(n.donationId, n.donationBaseUrl).toString()), o = n.donationButtonSize;
|
|
32
50
|
return (t, n) => (c(), r("a", {
|
|
33
51
|
href: a.value,
|
|
34
52
|
target: "_blank"
|
|
35
53
|
}, [i("img", {
|
|
36
54
|
src: e.donationButtonImage,
|
|
37
55
|
alt: e.donationPlatform,
|
|
38
|
-
style: s(e.donationButtonStyle)
|
|
39
|
-
|
|
56
|
+
style: s(e.donationButtonStyle),
|
|
57
|
+
width: u(o)?.width,
|
|
58
|
+
height: u(o)?.height,
|
|
59
|
+
loading: "lazy",
|
|
60
|
+
decoding: "async"
|
|
61
|
+
}, null, 12, p)], 8, f));
|
|
40
62
|
}
|
|
41
|
-
}),
|
|
63
|
+
}), h = /* @__PURE__ */ a({
|
|
42
64
|
__name: "Donation",
|
|
43
65
|
props: { donation: {} },
|
|
44
66
|
setup(i) {
|
|
@@ -48,7 +70,7 @@ var u = {
|
|
|
48
70
|
if (t === "custom") continue;
|
|
49
71
|
let n = a[t];
|
|
50
72
|
e[t] = {
|
|
51
|
-
...
|
|
73
|
+
...d[t],
|
|
52
74
|
donationId: n
|
|
53
75
|
};
|
|
54
76
|
}
|
|
@@ -57,10 +79,10 @@ var u = {
|
|
|
57
79
|
...a.custom
|
|
58
80
|
};
|
|
59
81
|
});
|
|
60
|
-
return (t, i) => (c(!0), r(e, null, l(s.value, (e, t) => (c(), n(
|
|
82
|
+
return (t, i) => (c(!0), r(e, null, l(s.value, (e, t) => (c(), n(m, o({
|
|
61
83
|
key: e?.name,
|
|
62
84
|
ref_for: !0
|
|
63
85
|
}, e, { "donation-platform": t }), null, 16, ["donation-platform"]))), 128));
|
|
64
86
|
}
|
|
65
87
|
});
|
|
66
|
-
export {
|
|
88
|
+
export { h as default };
|
|
@@ -19,7 +19,13 @@ var n = /* @__PURE__ */ e({
|
|
|
19
19
|
`, document.head.appendChild(t);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
function a() {
|
|
23
|
+
let e = () => {
|
|
24
|
+
typeof window.requestIdleCallback == "function" ? window.requestIdleCallback(() => i(), { timeout: 5e3 }) : setTimeout(i, 3e3);
|
|
25
|
+
};
|
|
26
|
+
document.readyState === "complete" ? e() : window.addEventListener("load", e, { once: !0 });
|
|
27
|
+
}
|
|
28
|
+
return n && t(a), (e, t) => null;
|
|
23
29
|
}
|
|
24
30
|
});
|
|
25
31
|
export { n as default };
|
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Icon as e } from "@iconify/vue";
|
|
2
|
-
import t, { useLayout as n } from "vitepress/theme";
|
|
2
|
+
import t, { useLayout as n } from "vitepress/theme-without-fonts";
|
|
3
3
|
import { useData as r, useRoute as i, useRouter as a } from "vitepress";
|
|
4
4
|
import { Fragment as o, Text as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineAsyncComponent as h, defineComponent as g, effectScope as _, getCurrentInstance as v, getCurrentScope as y, guardReactiveProps as b, h as x, inject as ee, isRef as te, mergeProps as S, normalizeClass as C, normalizeProps as ne, onMounted as re, onScopeDispose as w, onUnmounted as ie, openBlock as T, ref as ae, renderList as oe, renderSlot as se, resolveComponent as ce, shallowRef as le, toDisplayString as E, unref as D, watch as ue, watchEffect as de, withCtx as O } from "vue";
|
|
5
5
|
// src/client/composables/lang.ts
|
|
@@ -29,13 +29,13 @@ var k = () => {
|
|
|
29
29
|
__name: "DonationWidget",
|
|
30
30
|
props: { direction: {} },
|
|
31
31
|
setup(e) {
|
|
32
|
-
let { theme: t } = r(), n = e.direction === "vertical" ? "space-y-4" : "space-x-4", i = t.value.donation ? h(() => import("./Donation-
|
|
32
|
+
let { theme: t } = r(), n = e.direction === "vertical" ? "space-y-4" : "space-x-4", i = t.value.donation ? h(() => import("./Donation-BJ2fj2Gs.js")) : () => null;
|
|
33
33
|
return (e, r) => (T(), d("div", { class: C(["flex flex-wrap py-4 items-center justify-center", D(n)]) }, [m(D(i), { donation: D(t).donation }, null, 8, ["donation"])], 2));
|
|
34
34
|
}
|
|
35
35
|
}), ge = { class: "container" }, _e = ["innerHTML"], ve = ["innerHTML"], ye = /*@__PURE__*/ g({
|
|
36
36
|
__name: "Footer",
|
|
37
37
|
setup(e) {
|
|
38
|
-
let { theme: t, frontmatter: i } = r(), { hasSidebar: a, hasAside: s } = n(), p = c(() => typeof t.value.themeFooter.copyright == "string" ? t.value.themeFooter.copyright.replace(/#\{present\}/g, (/* @__PURE__ */ new Date()).getFullYear().toString()) : t.value.themeFooter.copyright), g = t.value.googleAnalytics ? h(() => import("./GoogleAnalytics-
|
|
38
|
+
let { theme: t, frontmatter: i } = r(), { hasSidebar: a, hasAside: s } = n(), p = c(() => typeof t.value.themeFooter.copyright == "string" ? t.value.themeFooter.copyright.replace(/#\{present\}/g, (/* @__PURE__ */ new Date()).getFullYear().toString()) : t.value.themeFooter.copyright), g = t.value.googleAnalytics ? h(() => import("./GoogleAnalytics-DwvjYPU_.js")) : () => null, _ = t.value.swetrix ? h(() => import("./Swetrix-GKEyGNrV.js")) : () => null;
|
|
39
39
|
return (e, n) => (T(), d(o, null, [
|
|
40
40
|
D(s) ? u("", !0) : (T(), l(he, {
|
|
41
41
|
key: 0,
|
|
@@ -61,7 +61,7 @@ var k = () => {
|
|
|
61
61
|
let n = e.__vccOpts || e;
|
|
62
62
|
for (let [e, r] of t) n[e] = r;
|
|
63
63
|
return n;
|
|
64
|
-
}, xe = /*#__PURE__*/ be(ye, [["__scopeId", "data-v-
|
|
64
|
+
}, xe = /*#__PURE__*/ be(ye, [["__scopeId", "data-v-6216a7be"]]), A = typeof window < "u", j, Se;
|
|
65
65
|
if (process.env.NODE_ENV !== "production") {
|
|
66
66
|
let e = A && window.performance;
|
|
67
67
|
e && e.mark && e.measure && e.clearMarks && e.clearMeasures && (j = (t) => {
|
|
@@ -3136,7 +3136,7 @@ process.env.NODE_ENV;
|
|
|
3136
3136
|
var Ba = (e, t) => {
|
|
3137
3137
|
let n = e;
|
|
3138
3138
|
t.value = n[(n.indexOf(t.value) + 1) % n.length];
|
|
3139
|
-
}, Va = ["aria-label"], Ha = /*#__PURE__*/ be(/* @__PURE__ */ g({
|
|
3139
|
+
}, Va = ["aria-label"], Ha = ["width", "height"], Ua = "<g fill=\"currentColor\"><path d=\"M4.545 6.714L4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286zm1.634-.736L5.5 3.956h-.049l-.679 2.022z\"/><path d=\"M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm7.138 9.995q.289.451.63.846c-.748.575-1.673 1.001-2.768 1.292c.178.217.451.635.555.867c1.125-.359 2.08-.844 2.886-1.494c.777.665 1.739 1.165 2.93 1.472c.133-.254.414-.673.629-.89c-1.125-.253-2.057-.694-2.82-1.284c.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6 6 0 0 1-.415-.492a2 2 0 0 1-.94.31\"/></g>", Wa = /*#__PURE__*/ be(/* @__PURE__ */ g({
|
|
3140
3140
|
__name: "LocaleSwitcher",
|
|
3141
3141
|
props: { size: {
|
|
3142
3142
|
type: Number,
|
|
@@ -3145,21 +3145,22 @@ var Ba = (e, t) => {
|
|
|
3145
3145
|
} },
|
|
3146
3146
|
setup(e) {
|
|
3147
3147
|
let { t, availableLocales: n, locale: r } = $(), i = () => Ba(n, r);
|
|
3148
|
-
return (n, r) => {
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
}
|
|
3148
|
+
return (n, r) => (T(), d(o, null, [r[0] ||= f("div", { class: "divider" }, null, -1), f("button", {
|
|
3149
|
+
"aria-label": D(t)("button.toggle_locale"),
|
|
3150
|
+
type: "button",
|
|
3151
|
+
class: "VPLocaleSwitcher",
|
|
3152
|
+
onClick: i
|
|
3153
|
+
}, [(T(), d("svg", {
|
|
3154
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3155
|
+
"aria-hidden": "true",
|
|
3156
|
+
role: "img",
|
|
3157
|
+
width: e.size,
|
|
3158
|
+
height: e.size,
|
|
3159
|
+
viewBox: "0 0 16 16",
|
|
3160
|
+
innerHTML: Ua
|
|
3161
|
+
}, null, 8, Ha))], 8, Va)], 64));
|
|
3162
|
+
}
|
|
3163
|
+
}), [["__scopeId", "data-v-871d7d08"]]), Ga = /* @__PURE__ */ g({
|
|
3163
3164
|
__name: "SharingWidget",
|
|
3164
3165
|
setup(e) {
|
|
3165
3166
|
let t = i(), { theme: n, frontmatter: a, page: o } = r(), s = n.value.sharing ? h(() => import("./Sharing-CpagX9oy.js")) : () => null, c = new URL(t.path, n.value.siteURL).href, u = a.value.title || o.value.title;
|
|
@@ -3168,7 +3169,7 @@ var Ba = (e, t) => {
|
|
|
3168
3169
|
text: D(u)
|
|
3169
3170
|
}, null, 8, ["url", "text"]));
|
|
3170
3171
|
}
|
|
3171
|
-
}),
|
|
3172
|
+
}), Ka = { class: "vp-doc" }, qa = /* @__PURE__ */ g({
|
|
3172
3173
|
__name: "Layout",
|
|
3173
3174
|
setup(e) {
|
|
3174
3175
|
let { Layout: n } = t, { frontmatter: a, theme: o } = r(), s = i(), c = null;
|
|
@@ -3182,15 +3183,15 @@ var Ba = (e, t) => {
|
|
|
3182
3183
|
return re(u), ue(() => s.path, (e, t) => {
|
|
3183
3184
|
e !== t && u();
|
|
3184
3185
|
}), (e, t) => (T(), l(D(n), null, {
|
|
3185
|
-
"doc-before": O(() => [f("div",
|
|
3186
|
-
"nav-bar-content-after": O(() => [m(
|
|
3187
|
-
"aside-outline-after": O(() => [m(
|
|
3186
|
+
"doc-before": O(() => [f("div", Ka, [f("h1", null, E(D(a).title), 1)])]),
|
|
3187
|
+
"nav-bar-content-after": O(() => [m(Wa)]),
|
|
3188
|
+
"aside-outline-after": O(() => [m(Ga)]),
|
|
3188
3189
|
"aside-ads-before": O(() => [m(he, { direction: "vertical" })]),
|
|
3189
3190
|
"layout-bottom": O(() => [m(xe)]),
|
|
3190
3191
|
_: 1
|
|
3191
3192
|
}));
|
|
3192
3193
|
}
|
|
3193
|
-
}),
|
|
3194
|
+
}), Ja = ["href"], Ya = /* @__PURE__ */ g({
|
|
3194
3195
|
__name: "RouterLink",
|
|
3195
3196
|
props: { to: {
|
|
3196
3197
|
type: String,
|
|
@@ -3202,9 +3203,9 @@ var Ba = (e, t) => {
|
|
|
3202
3203
|
return (n, r) => (T(), d("a", S({
|
|
3203
3204
|
href: e.to,
|
|
3204
3205
|
onClick: r[0] ||= (n) => D(t).go(e.to)
|
|
3205
|
-
}, n.$attrs), [se(n.$slots, "default")], 16,
|
|
3206
|
+
}, n.$attrs), [se(n.$slots, "default")], 16, Ja));
|
|
3206
3207
|
}
|
|
3207
|
-
}),
|
|
3208
|
+
}), Xa = ["href"], Za = ["href"], Qa = /* @__PURE__ */ g({
|
|
3208
3209
|
__name: "Link",
|
|
3209
3210
|
props: {
|
|
3210
3211
|
href: {
|
|
@@ -3220,7 +3221,7 @@ var Ba = (e, t) => {
|
|
|
3220
3221
|
},
|
|
3221
3222
|
setup(e) {
|
|
3222
3223
|
let t = e, n = t.href?.startsWith("/") && !t.disableRouterLink, r = t.href?.startsWith("#");
|
|
3223
|
-
return (t, i) => D(n) || D(r) ? (T(), l(
|
|
3224
|
+
return (t, i) => D(n) || D(r) ? (T(), l(Ya, S({
|
|
3224
3225
|
key: 0,
|
|
3225
3226
|
to: e.href
|
|
3226
3227
|
}, t.$attrs), {
|
|
@@ -3230,14 +3231,14 @@ var Ba = (e, t) => {
|
|
|
3230
3231
|
key: 1,
|
|
3231
3232
|
target: "_self",
|
|
3232
3233
|
href: e.href
|
|
3233
|
-
}, t.$attrs), [se(t.$slots, "default")], 16,
|
|
3234
|
+
}, t.$attrs), [se(t.$slots, "default")], 16, Xa)) : (T(), d("a", S({
|
|
3234
3235
|
key: 2,
|
|
3235
3236
|
target: "_blank",
|
|
3236
3237
|
rel: "noopener noreferrer",
|
|
3237
3238
|
href: e.href
|
|
3238
|
-
}, t.$attrs), [se(t.$slots, "default")], 16,
|
|
3239
|
+
}, t.$attrs), [se(t.$slots, "default")], 16, Za));
|
|
3239
3240
|
}
|
|
3240
|
-
}),
|
|
3241
|
+
}), $a = { class: "inline-flex items-center justify-center w-4 h-4 ms-2 text-xs font-semibold text-gray-900 dark:text-white bg-gray-300 dark:bg-gray-700 p-2.5 rounded" }, eo = /* @__PURE__ */ g({
|
|
3241
3242
|
__name: "TermBadge",
|
|
3242
3243
|
props: {
|
|
3243
3244
|
title: {
|
|
@@ -3254,16 +3255,16 @@ var Ba = (e, t) => {
|
|
|
3254
3255
|
}
|
|
3255
3256
|
},
|
|
3256
3257
|
setup(e) {
|
|
3257
|
-
return (t, n) => (T(), l(
|
|
3258
|
+
return (t, n) => (T(), l(Qa, {
|
|
3258
3259
|
key: e.title,
|
|
3259
3260
|
href: e.href,
|
|
3260
3261
|
class: "inline-flex items-center mt-2 mb-2 mr-2 px-5 py-2.5 text-sm font-medium text-center text-white component-border"
|
|
3261
3262
|
}, {
|
|
3262
|
-
default: O(() => [p(E(e.title) + " ", 1), f("span",
|
|
3263
|
+
default: O(() => [p(E(e.title) + " ", 1), f("span", $a, E(e.count), 1)]),
|
|
3263
3264
|
_: 1
|
|
3264
3265
|
}, 8, ["href"]));
|
|
3265
3266
|
}
|
|
3266
|
-
}),
|
|
3267
|
+
}), to = (e) => e.replace(/#/, "-sharp-").replace(/\./, "-dot-").replace(/-$/, "").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/đ/g, "d").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, ""), no = (e) => (t) => to(t) === e, ro = (e) => {
|
|
3267
3268
|
let t = e instanceof Date ? e : new Date(e);
|
|
3268
3269
|
return t.setUTCHours(12), {
|
|
3269
3270
|
time: +t,
|
|
@@ -3271,7 +3272,7 @@ var Ba = (e, t) => {
|
|
|
3271
3272
|
month: t.toLocaleDateString("en-US", { month: "short" }),
|
|
3272
3273
|
year: t.toLocaleDateString("en-US", { year: "numeric" })
|
|
3273
3274
|
};
|
|
3274
|
-
},
|
|
3275
|
+
}, io = (e) => {
|
|
3275
3276
|
switch (e) {
|
|
3276
3277
|
case "active": return {
|
|
3277
3278
|
fontSize: "text-sm",
|
|
@@ -3296,13 +3297,13 @@ var Ba = (e, t) => {
|
|
|
3296
3297
|
};
|
|
3297
3298
|
default: return {};
|
|
3298
3299
|
}
|
|
3299
|
-
},
|
|
3300
|
+
}, ao = (e) => {
|
|
3300
3301
|
let t = e.reduce((e, t) => (e[t] = (e[t] || 0) + 1, e), {}), n = Object.entries(t);
|
|
3301
3302
|
return Object.fromEntries(n.sort(([, e], [, t]) => t - e));
|
|
3302
|
-
},
|
|
3303
|
+
}, oo = { class: "flex flex-wrap pt-4" }, so = {
|
|
3303
3304
|
key: 0,
|
|
3304
3305
|
class: "mt-2 mb-2 mr-5"
|
|
3305
|
-
},
|
|
3306
|
+
}, co = /* @__PURE__ */ g({
|
|
3306
3307
|
__name: "ArchivesPage",
|
|
3307
3308
|
props: { posts: {
|
|
3308
3309
|
type: Object,
|
|
@@ -3310,11 +3311,11 @@ var Ba = (e, t) => {
|
|
|
3310
3311
|
default: []
|
|
3311
3312
|
} },
|
|
3312
3313
|
setup(e) {
|
|
3313
|
-
let t = e, { t: n } = $(), r = c(() =>
|
|
3314
|
+
let t = e, { t: n } = $(), r = c(() => ao(t.posts.flatMap((e) => new Date(e.date).getFullYear().toString()))), i = c(() => Object.keys(r.value).map((e) => Number(e)).reverse());
|
|
3314
3315
|
return (e, t) => {
|
|
3315
3316
|
let a = ce("Page");
|
|
3316
3317
|
return T(), l(a, { title: D(n)("archives") }, {
|
|
3317
|
-
default: O(() => [f("div",
|
|
3318
|
+
default: O(() => [f("div", oo, [Object.keys(i.value).length === 0 ? (T(), d("div", so, E(D(n)("no_archive")), 1)) : u("", !0), (T(!0), d(o, null, oe(i.value, (e) => (T(), l(eo, {
|
|
3318
3319
|
key: e,
|
|
3319
3320
|
title: `${e}`,
|
|
3320
3321
|
count: r.value[e],
|
|
@@ -3328,10 +3329,10 @@ var Ba = (e, t) => {
|
|
|
3328
3329
|
}, 8, ["title"]);
|
|
3329
3330
|
};
|
|
3330
3331
|
}
|
|
3331
|
-
}),
|
|
3332
|
+
}), lo = { class: "flex flex-wrap pt-4" }, uo = {
|
|
3332
3333
|
key: 0,
|
|
3333
3334
|
class: "mt-2 mb-2 mr-5"
|
|
3334
|
-
},
|
|
3335
|
+
}, fo = /* @__PURE__ */ g({
|
|
3335
3336
|
__name: "CategoriesPage",
|
|
3336
3337
|
props: { posts: {
|
|
3337
3338
|
type: Object,
|
|
@@ -3339,15 +3340,15 @@ var Ba = (e, t) => {
|
|
|
3339
3340
|
default: []
|
|
3340
3341
|
} },
|
|
3341
3342
|
setup(e) {
|
|
3342
|
-
let t = e, { t: n } = $(), r = c(() =>
|
|
3343
|
+
let t = e, { t: n } = $(), r = c(() => ao(t.posts.flatMap((e) => e.categories)));
|
|
3343
3344
|
return (e, t) => {
|
|
3344
3345
|
let i = ce("Page");
|
|
3345
3346
|
return T(), l(i, { title: D(n)("categories") }, {
|
|
3346
|
-
default: O(() => [f("div",
|
|
3347
|
+
default: O(() => [f("div", lo, [Object.keys(r.value).length === 0 ? (T(), d("div", uo, E(D(n)("no_category")), 1)) : u("", !0), (T(!0), d(o, null, oe(r.value, (e, t) => (T(), l(eo, {
|
|
3347
3348
|
key: t,
|
|
3348
3349
|
title: t,
|
|
3349
3350
|
count: e,
|
|
3350
|
-
href: `/categories/${D(
|
|
3351
|
+
href: `/categories/${D(to)(t)}`
|
|
3351
3352
|
}, null, 8, [
|
|
3352
3353
|
"title",
|
|
3353
3354
|
"count",
|
|
@@ -3357,7 +3358,7 @@ var Ba = (e, t) => {
|
|
|
3357
3358
|
}, 8, ["title"]);
|
|
3358
3359
|
};
|
|
3359
3360
|
}
|
|
3360
|
-
}),
|
|
3361
|
+
}), po = /* @__PURE__ */ g({
|
|
3361
3362
|
__name: "HomePage",
|
|
3362
3363
|
props: { posts: {
|
|
3363
3364
|
type: Object,
|
|
@@ -3374,7 +3375,7 @@ var Ba = (e, t) => {
|
|
|
3374
3375
|
}, null, 8, ["title", "posts"]);
|
|
3375
3376
|
};
|
|
3376
3377
|
}
|
|
3377
|
-
}),
|
|
3378
|
+
}), mo = { class: "main" }, ho = { class: "pt-6 pb-8 space-y-2 md:space-y-5" }, go = { class: "mb-6 text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14" }, _o = /* @__PURE__ */ g({
|
|
3378
3379
|
__name: "Page",
|
|
3379
3380
|
props: { title: {
|
|
3380
3381
|
type: String,
|
|
@@ -3382,9 +3383,9 @@ var Ba = (e, t) => {
|
|
|
3382
3383
|
default: ""
|
|
3383
3384
|
} },
|
|
3384
3385
|
setup(e) {
|
|
3385
|
-
return (t, n) => (T(), d("main",
|
|
3386
|
+
return (t, n) => (T(), d("main", mo, [f("div", ho, [f("h1", go, E(e.title), 1)]), se(t.$slots, "default")]));
|
|
3386
3387
|
}
|
|
3387
|
-
}),
|
|
3388
|
+
}), vo = /* @__PURE__ */ g({
|
|
3388
3389
|
__name: "TermLink",
|
|
3389
3390
|
props: {
|
|
3390
3391
|
text: {
|
|
@@ -3397,44 +3398,45 @@ var Ba = (e, t) => {
|
|
|
3397
3398
|
}
|
|
3398
3399
|
},
|
|
3399
3400
|
setup(e) {
|
|
3400
|
-
let t = e, n = c(() =>
|
|
3401
|
-
return (t, n) => (T(), l(
|
|
3401
|
+
let t = e, n = c(() => to(t.text)), r = c(() => `${t.basePath}${n.value}`), i = c(() => t.basePath === "/categories/" ? `View all posts in category ${t.text}` : `View all projects using ${t.text}`);
|
|
3402
|
+
return (t, n) => (T(), l(Ya, {
|
|
3402
3403
|
to: r.value,
|
|
3404
|
+
"aria-label": i.value,
|
|
3403
3405
|
class: "mr-2 text-sm font-medium uppercase link-alt"
|
|
3404
3406
|
}, {
|
|
3405
3407
|
default: O(() => [p(E(e.text), 1)]),
|
|
3406
3408
|
_: 1
|
|
3407
|
-
}, 8, ["to"]));
|
|
3409
|
+
}, 8, ["to", "aria-label"]));
|
|
3408
3410
|
}
|
|
3409
|
-
}),
|
|
3411
|
+
}), yo = { class: "flex p-4 component-border" }, bo = {
|
|
3410
3412
|
class: "text-center",
|
|
3411
3413
|
style: { "min-width": "80px" }
|
|
3412
|
-
},
|
|
3414
|
+
}, xo = { class: "text-6xl font-bold" }, So = { class: "pl-8" }, Co = { class: "flex flex-wrap mb-3" }, wo = ["href", "title"], To = { class: "flex flex-wrap mb-3" }, Eo = ["innerHTML"], Do = /* @__PURE__ */ g({
|
|
3413
3415
|
__name: "PostItem",
|
|
3414
3416
|
props: { post: {
|
|
3415
3417
|
type: Object,
|
|
3416
3418
|
required: !0
|
|
3417
3419
|
} },
|
|
3418
3420
|
setup(e) {
|
|
3419
|
-
let t = e, n = c(() =>
|
|
3420
|
-
return (t, r) => (T(), d("div",
|
|
3421
|
-
f("div",
|
|
3421
|
+
let t = e, n = c(() => ro(t.post.date));
|
|
3422
|
+
return (t, r) => (T(), d("div", yo, [f("div", bo, [f("div", xo, E(n.value?.day), 1), f("div", null, E(n.value?.month) + ", " + E(n.value?.year), 1)]), f("div", So, [
|
|
3423
|
+
f("div", Co, [f("a", {
|
|
3422
3424
|
class: "text-2xl font-bold leading-8 tracking-tight",
|
|
3423
3425
|
href: e.post?.url,
|
|
3424
3426
|
title: e.post.title
|
|
3425
|
-
}, E(e.post.title), 9,
|
|
3426
|
-
f("div",
|
|
3427
|
+
}, E(e.post.title), 9, wo)]),
|
|
3428
|
+
f("div", To, [(T(!0), d(o, null, oe(e.post.categories, (e) => (T(), l(vo, {
|
|
3427
3429
|
key: e,
|
|
3428
3430
|
text: e,
|
|
3429
3431
|
basePath: "/categories/"
|
|
3430
3432
|
}, null, 8, ["text"]))), 128))]),
|
|
3431
|
-
f("div", { innerHTML: e.post?.excerpt }, null, 8,
|
|
3433
|
+
f("div", { innerHTML: e.post?.excerpt }, null, 8, Eo)
|
|
3432
3434
|
])]));
|
|
3433
3435
|
}
|
|
3434
|
-
}),
|
|
3436
|
+
}), Oo = {
|
|
3435
3437
|
key: 0,
|
|
3436
3438
|
class: "grid grid-cols-1 lg:grid-cols-2 gap-4 mt-4"
|
|
3437
|
-
},
|
|
3439
|
+
}, ko = { key: 1 }, Ao = /* @__PURE__ */ g({
|
|
3438
3440
|
__name: "PostList",
|
|
3439
3441
|
props: { posts: {
|
|
3440
3442
|
type: Object,
|
|
@@ -3443,12 +3445,12 @@ var Ba = (e, t) => {
|
|
|
3443
3445
|
} },
|
|
3444
3446
|
setup(e) {
|
|
3445
3447
|
let { t } = $();
|
|
3446
|
-
return (n, r) => (T(), d(o, null, [e.posts.length > 0 ? (T(), d("div",
|
|
3448
|
+
return (n, r) => (T(), d(o, null, [e.posts.length > 0 ? (T(), d("div", Oo, [(T(!0), d(o, null, oe(e.posts, (e) => (T(), l(Do, {
|
|
3447
3449
|
key: e?.url,
|
|
3448
3450
|
post: e
|
|
3449
|
-
}, null, 8, ["post"]))), 128))])) : u("", !0), e.posts.length === 0 ? (T(), d("p",
|
|
3451
|
+
}, null, 8, ["post"]))), 128))])) : u("", !0), e.posts.length === 0 ? (T(), d("p", ko, E(D(t)("no_post")), 1)) : u("", !0)], 64));
|
|
3450
3452
|
}
|
|
3451
|
-
}),
|
|
3453
|
+
}), jo = /* @__PURE__ */ g({
|
|
3452
3454
|
__name: "PostsPage",
|
|
3453
3455
|
props: {
|
|
3454
3456
|
title: {
|
|
@@ -3465,12 +3467,12 @@ var Ba = (e, t) => {
|
|
|
3465
3467
|
return (t, n) => {
|
|
3466
3468
|
let r = ce("Page");
|
|
3467
3469
|
return T(), l(r, { title: e.title }, {
|
|
3468
|
-
default: O(() => [m(
|
|
3470
|
+
default: O(() => [m(Ao, { posts: e.posts }, null, 8, ["posts"])]),
|
|
3469
3471
|
_: 1
|
|
3470
3472
|
}, 8, ["title"]);
|
|
3471
3473
|
};
|
|
3472
3474
|
}
|
|
3473
|
-
}),
|
|
3475
|
+
}), Mo = { class: "sr-only" }, No = ["datetime"], Po = /* @__PURE__ */ g({
|
|
3474
3476
|
__name: "PostDate",
|
|
3475
3477
|
props: {
|
|
3476
3478
|
date: [Date, String],
|
|
@@ -3500,9 +3502,9 @@ var Ba = (e, t) => {
|
|
|
3500
3502
|
string: i(e, r.value)
|
|
3501
3503
|
};
|
|
3502
3504
|
});
|
|
3503
|
-
return (t, r) => (T(), d("dl", null, [f("dt",
|
|
3505
|
+
return (t, r) => (T(), d("dl", null, [f("dt", Mo, E(D(n)("posted_on")), 1), f("dd", { class: C(["font-medium leading-6", [e.textSize ? `text-${e.textSize}` : "text-base"]]) }, [f("time", { datetime: a.value.iso }, E(a.value.string), 9, No)], 2)]));
|
|
3504
3506
|
}
|
|
3505
|
-
}),
|
|
3507
|
+
}), Fo = /* @__PURE__ */ g({
|
|
3506
3508
|
__name: "StatusBadge",
|
|
3507
3509
|
props: {
|
|
3508
3510
|
backgroundColor: {
|
|
@@ -3552,24 +3554,24 @@ var Ba = (e, t) => {
|
|
|
3552
3554
|
e.rounded ? "rounded" : ""
|
|
3553
3555
|
]]) }, [se(t.$slots, "default")], 2));
|
|
3554
3556
|
}
|
|
3555
|
-
}),
|
|
3557
|
+
}), Io = { class: "flex flex-col p-4 component-border" }, Lo = { class: "flex flex-row justify-between items-center mb-4" }, Ro = ["href"], zo = { class: "flex flex-row" }, Bo = ["href"], Vo = ["href"], Ho = { class: "project-info" }, Uo = ["innerHTML"], Wo = { class: "flex flex-col justify-between" }, Go = {
|
|
3556
3558
|
key: 0,
|
|
3557
3559
|
class: "mb-3"
|
|
3558
|
-
},
|
|
3560
|
+
}, Ko = { key: 1 }, qo = { class: "mb-3" }, Jo = { class: "flex flex-wrap mb-3" }, Yo = { class: "text-end" }, Xo = ["href", "aria-label"], Zo = /* @__PURE__ */ g({
|
|
3559
3561
|
__name: "ProjectCard",
|
|
3560
3562
|
props: { project: {
|
|
3561
3563
|
type: Object,
|
|
3562
3564
|
required: !0
|
|
3563
3565
|
} },
|
|
3564
3566
|
setup(e) {
|
|
3565
|
-
let t = e, { t: n } = $(), r = c(() =>
|
|
3567
|
+
let t = e, { t: n } = $(), r = c(() => io(t.project.developmentStatus));
|
|
3566
3568
|
return (t, i) => {
|
|
3567
3569
|
let a = ce("Icon");
|
|
3568
|
-
return T(), d("div",
|
|
3569
|
-
f("div",
|
|
3570
|
+
return T(), d("div", Io, [
|
|
3571
|
+
f("div", Lo, [f("a", {
|
|
3570
3572
|
href: e.project.url,
|
|
3571
3573
|
class: "text-2xl font-bold leading-8 tracking-tight"
|
|
3572
|
-
}, E(e.project.title), 9,
|
|
3574
|
+
}, E(e.project.title), 9, Ro), f("div", zo, [e.project.showcaseUrl ? (T(), d("a", {
|
|
3573
3575
|
key: 0,
|
|
3574
3576
|
class: "mx-1 text-gray-500 hover:text-gray-600",
|
|
3575
3577
|
target: "_blank",
|
|
@@ -3578,7 +3580,7 @@ var Ba = (e, t) => {
|
|
|
3578
3580
|
}, [i[0] ||= f("span", { class: "sr-only" }, "external-link", -1), m(a, {
|
|
3579
3581
|
icon: "bi:box-arrow-up-right",
|
|
3580
3582
|
class: "text-dark dark:text-white ml-2"
|
|
3581
|
-
})], 8,
|
|
3583
|
+
})], 8, Bo)) : u("", !0), e.project.repositoryUrl ? (T(), d("a", {
|
|
3582
3584
|
key: 1,
|
|
3583
3585
|
class: "mx-1 text-gray-500 hover:text-gray-600",
|
|
3584
3586
|
target: "_blank",
|
|
@@ -3587,41 +3589,41 @@ var Ba = (e, t) => {
|
|
|
3587
3589
|
}, [i[1] ||= f("span", { class: "sr-only" }, "github", -1), m(a, {
|
|
3588
3590
|
icon: "bi:github",
|
|
3589
3591
|
class: "text-dark dark:text-white ml-2"
|
|
3590
|
-
})], 8,
|
|
3591
|
-
f("div",
|
|
3592
|
-
e.project.license ? (T(), d("div",
|
|
3592
|
+
})], 8, Vo)) : u("", !0)])]),
|
|
3593
|
+
f("div", Ho, [f("div", { innerHTML: e.project.excerpt }, null, 8, Uo), f("div", Wo, [
|
|
3594
|
+
e.project.license ? (T(), d("div", Go, [p(E(D(n)("license")) + ": ", 1), e.project.licenseUrl ? (T(), l(Qa, {
|
|
3593
3595
|
key: 0,
|
|
3594
3596
|
href: e.project.licenseUrl,
|
|
3595
3597
|
class: "link-alt"
|
|
3596
3598
|
}, {
|
|
3597
3599
|
default: O(() => [p(E(e.project.license), 1)]),
|
|
3598
3600
|
_: 1
|
|
3599
|
-
}, 8, ["href"])) : (T(), d("span",
|
|
3600
|
-
f("div",
|
|
3601
|
+
}, 8, ["href"])) : (T(), d("span", Ko, E(e.project.license), 1))])) : u("", !0),
|
|
3602
|
+
f("div", qo, [p(E(D(n)("development_status.title")) + ": ", 1), m(Fo, ne(b(r.value)), {
|
|
3601
3603
|
default: O(() => [p(E(t.$t(`development_status.${e.project.developmentStatus}`)), 1)]),
|
|
3602
3604
|
_: 1
|
|
3603
3605
|
}, 16)]),
|
|
3604
|
-
f("div",
|
|
3606
|
+
f("div", Jo, [(T(!0), d(o, null, oe(e.project.techs, (e) => (T(), l(vo, {
|
|
3605
3607
|
key: e,
|
|
3606
3608
|
text: e,
|
|
3607
3609
|
basePath: "/projects?tech="
|
|
3608
3610
|
}, null, 8, ["text"]))), 128))]),
|
|
3609
|
-
m(
|
|
3611
|
+
m(Po, {
|
|
3610
3612
|
date: e.project.date,
|
|
3611
3613
|
"text-size": "sm"
|
|
3612
3614
|
}, null, 8, ["date"])
|
|
3613
3615
|
])]),
|
|
3614
|
-
f("div",
|
|
3616
|
+
f("div", Yo, [f("a", {
|
|
3615
3617
|
href: e.project.url,
|
|
3616
3618
|
"aria-label": `Read ${e.project.title}`
|
|
3617
|
-
}, E(D(n)("button.read_more")) + " → ", 9,
|
|
3619
|
+
}, E(D(n)("button.read_more")) + " → ", 9, Xo)])
|
|
3618
3620
|
]);
|
|
3619
3621
|
};
|
|
3620
3622
|
}
|
|
3621
|
-
}),
|
|
3623
|
+
}), Qo = {
|
|
3622
3624
|
key: 0,
|
|
3623
3625
|
class: "grid grid-cols-1 lg:grid-cols-2 gap-4 mt-4"
|
|
3624
|
-
},
|
|
3626
|
+
}, $o = { key: 1 }, es = /* @__PURE__ */ g({
|
|
3625
3627
|
__name: "ProjectList",
|
|
3626
3628
|
props: { projects: {
|
|
3627
3629
|
type: Object,
|
|
@@ -3630,12 +3632,12 @@ var Ba = (e, t) => {
|
|
|
3630
3632
|
} },
|
|
3631
3633
|
setup(e) {
|
|
3632
3634
|
let { t } = $();
|
|
3633
|
-
return (n, r) => (T(), d(o, null, [e.projects.length > 0 ? (T(), d("div",
|
|
3635
|
+
return (n, r) => (T(), d(o, null, [e.projects.length > 0 ? (T(), d("div", Qo, [(T(!0), d(o, null, oe(e.projects, (e) => (T(), l(Zo, {
|
|
3634
3636
|
key: e?.url,
|
|
3635
3637
|
project: e
|
|
3636
|
-
}, null, 8, ["project"]))), 128))])) : u("", !0), e.projects.length === 0 ? (T(), d("p",
|
|
3638
|
+
}, null, 8, ["project"]))), 128))])) : u("", !0), e.projects.length === 0 ? (T(), d("p", $o, E(D(t)("no_post")), 1)) : u("", !0)], 64));
|
|
3637
3639
|
}
|
|
3638
|
-
}),
|
|
3640
|
+
}), ts = ["href"], ns = { class: "flex flex-row flex-wrap" }, rs = ["href"], is = /* @__PURE__ */ g({
|
|
3639
3641
|
__name: "ProjectsPage",
|
|
3640
3642
|
props: {
|
|
3641
3643
|
projectPage: {
|
|
@@ -3654,10 +3656,10 @@ var Ba = (e, t) => {
|
|
|
3654
3656
|
}
|
|
3655
3657
|
},
|
|
3656
3658
|
setup(e) {
|
|
3657
|
-
let t = e, { t: n } = $(), r = t.technology, i = typeof r == "string" && r.length > 0, a = (e) => !i || e.techs.some(
|
|
3659
|
+
let t = e, { t: n } = $(), r = t.technology, i = typeof r == "string" && r.length > 0, a = (e) => !i || e.techs.some(no(r)), s = c(() => t.projects.filter(a)), p = c(() => [...new Set(t.projects.flatMap((e) => e.techs))].map((e) => ({
|
|
3658
3660
|
name: e,
|
|
3659
|
-
slug:
|
|
3660
|
-
selected: i &&
|
|
3661
|
+
slug: to(e),
|
|
3662
|
+
selected: i && to(e) === r
|
|
3661
3663
|
})).sort((e, t) => t.selected === e.selected ? 0 : t.selected ? 1 : -1));
|
|
3662
3664
|
return (t, r) => {
|
|
3663
3665
|
let a = ce("Page");
|
|
@@ -3665,18 +3667,18 @@ var Ba = (e, t) => {
|
|
|
3665
3667
|
default: O(() => [f("div", null, [f("p", null, [r[0] ||= f("span", { class: "mr-2" }, "Technologies", -1), D(i) ? (T(), d("a", {
|
|
3666
3668
|
key: 0,
|
|
3667
3669
|
href: e.projectPage
|
|
3668
|
-
}, "Reset", 8,
|
|
3670
|
+
}, "Reset", 8, ts)) : u("", !0)]), f("p", ns, [(T(!0), d(o, null, oe(p.value, (e) => (T(), d("a", {
|
|
3669
3671
|
class: C(["border rounded-md m-1 p-1", e.selected ? "bg-primary text-white! border-primary" : ""]),
|
|
3670
3672
|
href: `/projects-by-tech/${e.slug}`
|
|
3671
|
-
}, E(e.name), 11,
|
|
3673
|
+
}, E(e.name), 11, rs))), 256))])]), m(es, { projects: s.value }, null, 8, ["projects"])]),
|
|
3672
3674
|
_: 1
|
|
3673
3675
|
}, 8, ["title"]);
|
|
3674
3676
|
};
|
|
3675
3677
|
}
|
|
3676
|
-
}),
|
|
3678
|
+
}), as = { class: "flex flex-wrap pt-4" }, os = {
|
|
3677
3679
|
key: 0,
|
|
3678
3680
|
class: "mt-2 mb-2 mr-5"
|
|
3679
|
-
},
|
|
3681
|
+
}, ss = /* @__PURE__ */ g({
|
|
3680
3682
|
__name: "TagsPage",
|
|
3681
3683
|
props: { posts: {
|
|
3682
3684
|
type: Object,
|
|
@@ -3684,15 +3686,15 @@ var Ba = (e, t) => {
|
|
|
3684
3686
|
default: []
|
|
3685
3687
|
} },
|
|
3686
3688
|
setup(e) {
|
|
3687
|
-
let t = e, { t: n } = $(), r = c(() =>
|
|
3689
|
+
let t = e, { t: n } = $(), r = c(() => ao(t.posts.flatMap((e) => e.tags)));
|
|
3688
3690
|
return (e, t) => {
|
|
3689
3691
|
let i = ce("Page");
|
|
3690
3692
|
return T(), l(i, { title: D(n)("tags") }, {
|
|
3691
|
-
default: O(() => [f("div",
|
|
3693
|
+
default: O(() => [f("div", as, [Object.keys(r.value).length === 0 ? (T(), d("div", os, E(D(n)("no_tag")), 1)) : u("", !0), (T(!0), d(o, null, oe(r.value, (e, t) => (T(), l(eo, {
|
|
3692
3694
|
key: t,
|
|
3693
3695
|
title: t,
|
|
3694
3696
|
count: e,
|
|
3695
|
-
href: `/tags/${D(
|
|
3697
|
+
href: `/tags/${D(to)(t)}`
|
|
3696
3698
|
}, null, 8, [
|
|
3697
3699
|
"title",
|
|
3698
3700
|
"count",
|
|
@@ -3702,7 +3704,7 @@ var Ba = (e, t) => {
|
|
|
3702
3704
|
}, 8, ["title"]);
|
|
3703
3705
|
};
|
|
3704
3706
|
}
|
|
3705
|
-
}),
|
|
3707
|
+
}), cs = Oa({
|
|
3706
3708
|
legacy: !1,
|
|
3707
3709
|
locale: "en",
|
|
3708
3710
|
messages: {
|
|
@@ -3757,14 +3759,14 @@ var Ba = (e, t) => {
|
|
|
3757
3759
|
}
|
|
3758
3760
|
}
|
|
3759
3761
|
}
|
|
3760
|
-
}),
|
|
3762
|
+
}), ls = {
|
|
3761
3763
|
extends: t,
|
|
3762
|
-
Layout:
|
|
3764
|
+
Layout: qa,
|
|
3763
3765
|
enhanceApp({ app: t }) {
|
|
3764
|
-
t.component("Icon", e), t.component("Page",
|
|
3766
|
+
t.component("Icon", e), t.component("Page", _o), t.component("PostsPage", jo), t.component("HomePage", po), t.component("ProjectsPage", is), t.component("CategoriesPage", fo), t.component("TagsPage", ss), t.component("ArchivesPage", co), t.use(cs);
|
|
3765
3767
|
},
|
|
3766
3768
|
setup() {
|
|
3767
|
-
fe(), me(
|
|
3769
|
+
fe(), me(cs);
|
|
3768
3770
|
}
|
|
3769
3771
|
};
|
|
3770
|
-
export {
|
|
3772
|
+
export { ls as default, pe as matchLocale, fe as useHtmlLang, k as usePageLang, me as usePageLocale, ro as usePostDate, io as useProjectStatusStyle, ao as useRank, to as useSlug, no as useSlugFilter };
|
|
@@ -10,6 +10,14 @@ export declare interface CustomDonationBaseConfig {
|
|
|
10
10
|
donationBaseUrl: string;
|
|
11
11
|
donationButtonImage: string;
|
|
12
12
|
donationButtonStyle?: Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Intrinsic image dimensions, used for width/height attributes so the
|
|
15
|
+
* browser can reserve layout space before the image loads.
|
|
16
|
+
*/
|
|
17
|
+
donationButtonSize?: {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
22
|
export declare interface CustomDonationConfig extends CustomDonationBaseConfig {
|
|
15
23
|
donationId: string;
|
package/dist/client/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.VPFooter[data-v-84ab49a2]{z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);background-color:var(--vp-c-bg);padding:32px 24px;position:relative}.VPFooter.has-sidebar[data-v-84ab49a2]{display:none}.VPFooter[data-v-84ab49a2] a{text-underline-offset:2px;text-decoration-line:underline;transition:none}.VPFooter[data-v-84ab49a2] a:hover{color:var(--vp-c-text-1)}@media (width>=768px){.VPFooter[data-v-84ab49a2]{padding:32px}}.container[data-v-84ab49a2]{max-width:var(--vp-layout-max-width);text-align:center;margin:0 auto}.message[data-v-84ab49a2],.copyright[data-v-84ab49a2]{color:var(--vp-c-text-2);font-size:14px;font-weight:500;line-height:24px}.divider[data-v-6a2933ea]{background-color:var(--vp-c-divider);content:"";width:1px;height:24px;margin-left:16px;margin-right:8px}.VPLocaleSwitcher[data-v-6a2933ea]{width:36px;height:36px;color:var(--vp-c-text-2);justify-content:center;align-items:center;transition:none;display:flex}.VPLocaleSwitcher[data-v-6a2933ea]:hover{color:var(--vp-c-text-1);transition:none}.VPLocaleSwitcher[data-v-6a2933ea]>svg{fill:currentColor;width:20px;height:20px}:root{--vp-z-index-aside:25}.VPDoc.has-aside .aside-container{z-index:var(--vp-z-index-aside)}.medium-zoom--opened .medium-zoom-overlay{z-index:calc(var(--vp-z-index-aside) + 1)}.medium-zoom-image--opened{z-index:calc(var(--vp-z-index-aside) + 2)}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-800:oklch(44.4% .177 26.899);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-100:oklch(96.2% .044 156.743);--color-green-800:oklch(44.8% .119 151.328);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#3b82f6;--color-primary-alt:#1d4ed8;--color-primary-alt-dark:#93c5fd;--color-secondary:#ef4444;--color-secondary-dark:#eab308}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-1{margin:var(--spacing)}.mx-1{margin-inline:var(--spacing)}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-5{margin-right:calc(var(--spacing) * 5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing) * 4)}.w-4{width:calc(var(--spacing) * 4)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(var(--spacing) * var(--tw-space-x-reverse));margin-inline-end:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.component-border{border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-500)}@media (hover:hover){.component-border:hover{border-color:var(--color-secondary)}.component-border:where(.dark,.dark *):hover{border-color:var(--color-secondary-dark)}}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-primary{border-color:var(--color-primary)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-green-100{background-color:var(--color-green-100)}.bg-primary{background-color:var(--color-primary)}.bg-red-100{background-color:var(--color-red-100)}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-4{padding:calc(var(--spacing) * 4)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-end{text-align:end}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/\[32px\]{font-size:var(--text-sm);line-height:32px}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.link-alt{text-decoration-line:none!important}@media (hover:hover){.link-alt:hover{color:var(--color-secondary)!important}.link-alt:where(.dark,.dark *):hover{color:var(--color-secondary-dark)!important}}.link-alt{color:var(--color-primary-alt)!important}.link-alt:where(.dark,.dark *){color:var(--color-primary-alt-dark)!important}.link{text-decoration-line:none}@media (hover:hover){.link:hover{color:var(--color-secondary)}.link:where(.dark,.dark *):hover{color:var(--color-secondary-dark)}}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-800{color:var(--color-green-800)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\!{color:var(--color-white)!important}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:text-blue-500:hover{color:var(--color-blue-500)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}}@media (width>=40rem){.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}}@media (width>=48rem){:where(.md\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.dark\:bg-blue-800:where(.dark,.dark *){background-color:var(--color-blue-800)}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:bg-green-800:where(.dark,.dark *){background-color:var(--color-green-800)}.dark\:bg-red-800:where(.dark,.dark *){background-color:var(--color-red-800)}.dark\:bg-yellow-800:where(.dark,.dark *){background-color:var(--color-yellow-800)}.dark\:text-blue-100:where(.dark,.dark *){color:var(--color-blue-100)}.dark\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\:text-green-100:where(.dark,.dark *){color:var(--color-green-100)}.dark\:text-red-100:where(.dark,.dark *){color:var(--color-red-100)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-100:where(.dark,.dark *){color:var(--color-yellow-100)}@media (hover:hover){.dark\:hover\:text-blue-400:where(.dark,.dark *):hover{color:var(--color-blue-400)}}}:root{--vp-c-brand-1:var(--color-primary)}.vp-doc a{text-decoration-line:none}@media (hover:hover){.vp-doc a:hover{color:var(--color-secondary)}.vp-doc a:where(.dark,.dark *):hover{color:var(--color-secondary-dark)}}:root{--vp-font-family-base:"Inter", ui-sans-serif, system-ui, sans-serif;--vp-font-family-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--accent:#644ac9;--accent-soft:#8668e0;--green:#14710a;--vp-c-bg:#fffbeb;--vp-c-bg-alt:#f5f1df;--vp-c-bg-elv:#ece8d3;--vp-c-bg-soft:#f7f3e1;--vp-c-divider:#d9d4bb;--vp-c-gutter:#f5f1df;--vp-c-text-1:#1f1f1f;--vp-c-text-2:#4b4b52;--vp-c-text-3:#6c664b;--vp-c-brand-1:#644ac9;--vp-c-brand-2:#7459d8;--vp-c-brand-3:#644ac9;--vp-c-brand-soft:#644ac91f;--color-primary:#644ac9;--color-primary-alt:#4f39a8;--color-primary-alt-dark:#8668e0;--color-secondary:#3b2a8a;--color-secondary-dark:#3b2a8a;--color-green-100:#d4f2cf;--color-green-800:#14710a}.dark{--accent:#bd93f9;--accent-soft:#d6bcfa;--green:#50fa7b;--color-primary:#9d6ff0;--color-primary-alt:#8a5cd8;--color-primary-alt-dark:#d6bcfa;--color-secondary:#f8f8f2;--color-secondary-dark:#f8f8f2;--color-green-100:#50fa7b;--color-green-800:#1f4d33;--vp-c-bg:#282a36;--vp-c-bg-alt:#21222c;--vp-c-bg-elv:#343746;--vp-c-bg-soft:#2f3241;--vp-c-divider:#44475a;--vp-c-gutter:#21222c;--vp-c-text-1:#f8f8f2;--vp-c-text-2:#b6b8c9;--vp-c-text-3:#8e94b3;--vp-c-brand-1:var(--accent);--vp-c-brand-2:var(--accent);--vp-c-brand-3:#9d6ff0;--vp-c-brand-soft:#bd93f929}body{letter-spacing:-.005em}.VPNav .VPNavBar,.VPNavBar .content-body{-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px)}.VPNavBar:not(.has-sidebar):not(.home.top){background-color:#fffbebd9}.dark .VPNavBar:not(.has-sidebar):not(.home.top){background-color:#282a36cc}.component-border{background:var(--vp-c-bg-soft);border:1px solid var(--vp-c-divider);border-radius:0;transition:none}.component-border:hover,.component-border:focus-within{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{border-color:color-mix(in srgb, var(--accent) 55%, transparent)}}.component-border:hover,.component-border:focus-within{background:linear-gradient(180deg, var(--accent), var(--vp-c-bg-soft))}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 7%, var(--vp-c-bg-soft)), var(--vp-c-bg-soft))}}.component-border:hover,.component-border:focus-within{box-shadow:0 0 0 1px var(--accent), 0 8px 30px -12px var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 45%, transparent)}}.component-border>.pl-8 a.text-2xl,.component-border a.text-2xl{color:var(--vp-c-text-1);letter-spacing:-.02em;font-weight:600}.component-border a.text-2xl{transition:none}.component-border a.text-2xl:hover{color:var(--accent);text-shadow:0 0 18px var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border a.text-2xl:hover{text-shadow:0 0 18px color-mix(in srgb, var(--accent) 45%, transparent)}}.component-border a.text-2xl:active{color:var(--accent-soft);text-shadow:none}.component-border .text-6xl{font-family:var(--vp-font-family-mono);color:var(--vp-c-text-1);font-size:2.5rem;font-weight:500;line-height:1}a.link-alt.uppercase,.component-border a.uppercase{border:1px solid var(--vp-c-divider);background:var(--vp-c-bg-elv);letter-spacing:.04em;border-radius:0;margin-bottom:4px;padding:2px 10px;font-size:.7rem;font-weight:500;transition:none;display:inline-block}a.link-alt.uppercase:hover{border-color:var(--accent);background:var(--accent)}@supports (color:color-mix(in lab, red, red)){a.link-alt.uppercase:hover{background:color-mix(in srgb, var(--accent) 16%, var(--vp-c-bg-elv))}}a.link-alt.uppercase:active{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){a.link-alt.uppercase:active{background:color-mix(in srgb, var(--accent) 30%, var(--vp-c-bg-elv))}}a.link-alt.uppercase:active{transform:translateY(1px)}a.component-border{border-radius:0}.vp-doc a,.vp-doc a:hover{color:var(--vp-c-brand-1);font-weight:500;text-decoration:none}.vp-doc a:hover{color:var(--vp-c-brand-2)}a,a:hover,.vp-doc a,.vp-doc a:hover,.vp-doc .header-anchor{text-decoration:none!important}.vp-doc h1{letter-spacing:-.03em;font-weight:700}.vp-doc h2{letter-spacing:-.02em;border-top-color:var(--vp-c-divider)}.vp-doc p,.vp-doc li{line-height:1.75}.vp-doc :not(pre)>code{color:var(--green);font-family:var(--vp-font-family-mono);border:1px solid var(--vp-c-divider);border-radius:0;font-size:.85em}.vp-doc div[class*=language-]{border:1px solid var(--vp-c-divider);border-radius:0}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:0}.home-hero{padding:56px 0 8px}.home-hero h1{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,5vw,3.25rem);font-weight:700;line-height:1.1}.home-hero h1 span{background:linear-gradient(90deg, var(--vp-c-text-1), var(--accent-soft) 70%, var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text}.home-hero p{max-width:36rem;color:var(--vp-c-text-2);margin:16px 0 0;font-size:1.1rem;line-height:1.6}@media (prefers-reduced-motion:reduce){.component-border,a.link-alt.uppercase{transition:none}}[class*=rounded],.VPNavBarSearchButton,.vp-doc [class*=language-],.vp-doc :not(pre)>code,.vp-doc img,.vp-doc table,.custom-block,.VPLocalSearchBox .results .result,.VPSkipLink,.keys,button.copy,.VPSwitch,.VPSwitch .check{border-radius:0!important}p.flex.flex-wrap>a.border.m-1{margin:.25rem;padding:.25rem .875rem;transition:none}p.flex.flex-wrap>a.border.m-1:hover{border-color:var(--accent);background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){p.flex.flex-wrap>a.border.m-1:hover{background-color:color-mix(in srgb, var(--accent) 14%, transparent)}}@media (width<=639px){.component-border.flex:has(>.text-center){flex-direction:column}.component-border>.text-center{text-align:left;align-items:baseline;gap:.5rem;margin-bottom:.5rem;display:flex;min-width:0!important}.component-border>.text-center .text-6xl{font-size:1.75rem}.component-border>.pl-8{padding-left:0}p.flex.flex-wrap:has(>a.border.m-1){-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;margin-inline:-.25rem;padding-bottom:.25rem;overflow-x:auto}p.flex.flex-wrap:has(>a.border.m-1)::-webkit-scrollbar{display:none}p.flex.flex-wrap>a.border.m-1{white-space:nowrap;flex:none;align-items:center;min-height:2.25rem;display:inline-flex}div.pt-6.pb-8{padding-top:.75rem;padding-bottom:.5rem}div.pt-6.pb-8>h1.mb-6{margin-bottom:.75rem}a.link-alt.uppercase,.component-border a.uppercase{margin-bottom:6px;padding:6px 12px}}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com]){gap:12px}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com])>a{justify-content:center;align-items:center;width:200px;height:56px;display:flex;margin:0!important}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com])>a img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}div.flex.flex-wrap.py-4.items-center.justify-center.space-y-4:has(>a[href*=ko-fi\.com]){flex-flow:column}div.flex.flex-wrap.py-4.items-center.justify-center.space-x-4:has(>a[href*=ko-fi\.com]){grid-template-columns:repeat(2,168px);justify-content:center;gap:12px;display:grid}div.flex.flex-wrap.py-4.items-center.justify-center.space-x-4:has(>a[href*=ko-fi\.com])>a{width:168px;height:52px}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}
|
|
1
|
+
.VPFooter[data-v-6216a7be]{z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);background-color:var(--vp-c-bg);padding:32px 24px;position:relative}.VPFooter.has-sidebar[data-v-6216a7be]{display:none}.VPFooter[data-v-6216a7be] a{text-underline-offset:2px;text-decoration-line:underline;transition:none}.VPFooter[data-v-6216a7be] a:hover{color:var(--vp-c-text-1)}@media (width>=768px){.VPFooter[data-v-6216a7be]{padding:32px}}.container[data-v-6216a7be]{max-width:var(--vp-layout-max-width);text-align:center;margin:0 auto}.message[data-v-6216a7be],.copyright[data-v-6216a7be]{color:var(--vp-c-text-2);font-size:14px;font-weight:500;line-height:24px}.divider[data-v-871d7d08]{background-color:var(--vp-c-divider);content:"";width:1px;height:24px;margin-left:16px;margin-right:8px}.VPLocaleSwitcher[data-v-871d7d08]{width:36px;height:36px;color:var(--vp-c-text-2);justify-content:center;align-items:center;transition:none;display:flex}.VPLocaleSwitcher[data-v-871d7d08]:hover{color:var(--vp-c-text-1);transition:none}.VPLocaleSwitcher[data-v-871d7d08]>svg{fill:currentColor;width:20px;height:20px}:root{--vp-z-index-aside:25}.VPDoc.has-aside .aside-container{z-index:var(--vp-z-index-aside)}.medium-zoom--opened .medium-zoom-overlay{z-index:calc(var(--vp-z-index-aside) + 1)}.medium-zoom-image--opened{z-index:calc(var(--vp-z-index-aside) + 2)}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-800:oklch(44.4% .177 26.899);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-100:oklch(96.2% .044 156.743);--color-green-800:oklch(44.8% .119 151.328);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#3b82f6;--color-primary-alt:#1d4ed8;--color-primary-alt-dark:#93c5fd;--color-secondary:#ef4444;--color-secondary-dark:#eab308}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-1{margin:var(--spacing)}.mx-1{margin-inline:var(--spacing)}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-5{margin-right:calc(var(--spacing) * 5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing) * 4)}.w-4{width:calc(var(--spacing) * 4)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(var(--spacing) * var(--tw-space-x-reverse));margin-inline-end:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.component-border{border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-500)}@media (hover:hover){.component-border:hover{border-color:var(--color-secondary)}.component-border:where(.dark,.dark *):hover{border-color:var(--color-secondary-dark)}}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-primary{border-color:var(--color-primary)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-green-100{background-color:var(--color-green-100)}.bg-primary{background-color:var(--color-primary)}.bg-red-100{background-color:var(--color-red-100)}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-4{padding:calc(var(--spacing) * 4)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-end{text-align:end}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/\[32px\]{font-size:var(--text-sm);line-height:32px}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.link-alt{text-decoration-line:none!important}@media (hover:hover){.link-alt:hover{color:var(--color-secondary)!important}.link-alt:where(.dark,.dark *):hover{color:var(--color-secondary-dark)!important}}.link-alt{color:var(--color-primary-alt)!important}.link-alt:where(.dark,.dark *){color:var(--color-primary-alt-dark)!important}.link{text-decoration-line:none}@media (hover:hover){.link:hover{color:var(--color-secondary)}.link:where(.dark,.dark *):hover{color:var(--color-secondary-dark)}}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-800{color:var(--color-green-800)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\!{color:var(--color-white)!important}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:text-blue-500:hover{color:var(--color-blue-500)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}}@media (width>=40rem){.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}}@media (width>=48rem){:where(.md\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.dark\:bg-blue-800:where(.dark,.dark *){background-color:var(--color-blue-800)}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:bg-green-800:where(.dark,.dark *){background-color:var(--color-green-800)}.dark\:bg-red-800:where(.dark,.dark *){background-color:var(--color-red-800)}.dark\:bg-yellow-800:where(.dark,.dark *){background-color:var(--color-yellow-800)}.dark\:text-blue-100:where(.dark,.dark *){color:var(--color-blue-100)}.dark\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\:text-green-100:where(.dark,.dark *){color:var(--color-green-100)}.dark\:text-red-100:where(.dark,.dark *){color:var(--color-red-100)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-100:where(.dark,.dark *){color:var(--color-yellow-100)}@media (hover:hover){.dark\:hover\:text-blue-400:where(.dark,.dark *):hover{color:var(--color-blue-400)}}}:root{--vp-c-brand-1:var(--color-primary)}.vp-doc a{text-decoration-line:none}@media (hover:hover){.vp-doc a:hover{color:var(--color-secondary)}.vp-doc a:where(.dark,.dark *):hover{color:var(--color-secondary-dark)}}:root{--vp-font-family-base:"Inter", ui-sans-serif, system-ui, sans-serif;--vp-font-family-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--accent:#644ac9;--accent-soft:#8668e0;--green:#14710a;--vp-c-bg:#fffbeb;--vp-c-bg-alt:#f5f1df;--vp-c-bg-elv:#ece8d3;--vp-c-bg-soft:#f7f3e1;--vp-c-divider:#d9d4bb;--vp-c-gutter:#f5f1df;--vp-c-text-1:#1f1f1f;--vp-c-text-2:#4b4b52;--vp-c-text-3:#6c664b;--vp-c-brand-1:#644ac9;--vp-c-brand-2:#7459d8;--vp-c-brand-3:#644ac9;--vp-c-brand-soft:#644ac91f;--color-primary:#644ac9;--color-primary-alt:#4f39a8;--color-primary-alt-dark:#8668e0;--color-secondary:#3b2a8a;--color-secondary-dark:#3b2a8a;--color-green-100:#d4f2cf;--color-green-800:#14710a}.dark{--accent:#bd93f9;--accent-soft:#d6bcfa;--green:#50fa7b;--color-primary:#9d6ff0;--color-primary-alt:#8a5cd8;--color-primary-alt-dark:#d6bcfa;--color-secondary:#f8f8f2;--color-secondary-dark:#f8f8f2;--color-green-100:#50fa7b;--color-green-800:#1f4d33;--vp-c-bg:#282a36;--vp-c-bg-alt:#21222c;--vp-c-bg-elv:#343746;--vp-c-bg-soft:#2f3241;--vp-c-divider:#44475a;--vp-c-gutter:#21222c;--vp-c-text-1:#f8f8f2;--vp-c-text-2:#b6b8c9;--vp-c-text-3:#8e94b3;--vp-c-brand-1:var(--accent);--vp-c-brand-2:var(--accent);--vp-c-brand-3:#9d6ff0;--vp-c-brand-soft:#bd93f929}body{letter-spacing:-.005em}.VPNav .VPNavBar,.VPNavBar .content-body{-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px)}.VPNavBar:not(.has-sidebar):not(.home.top){background-color:#fffbebd9}.dark .VPNavBar:not(.has-sidebar):not(.home.top){background-color:#282a36cc}.component-border{background:var(--vp-c-bg-soft);border:1px solid var(--vp-c-divider);border-radius:0;transition:none}.component-border:hover,.component-border:focus-within{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{border-color:color-mix(in srgb, var(--accent) 55%, transparent)}}.component-border:hover,.component-border:focus-within{background:linear-gradient(180deg, var(--accent), var(--vp-c-bg-soft))}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 7%, var(--vp-c-bg-soft)), var(--vp-c-bg-soft))}}.component-border:hover,.component-border:focus-within{box-shadow:0 0 0 1px var(--accent), 0 8px 30px -12px var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border:hover,.component-border:focus-within{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 45%, transparent)}}.component-border>.pl-8 a.text-2xl,.component-border a.text-2xl{color:var(--vp-c-text-1);letter-spacing:-.02em;font-weight:600}.component-border a.text-2xl{transition:none}.component-border a.text-2xl:hover{color:var(--accent);text-shadow:0 0 18px var(--accent)}@supports (color:color-mix(in lab, red, red)){.component-border a.text-2xl:hover{text-shadow:0 0 18px color-mix(in srgb, var(--accent) 45%, transparent)}}.component-border a.text-2xl:active{color:var(--accent-soft);text-shadow:none}.component-border .text-6xl{font-family:var(--vp-font-family-mono);color:var(--vp-c-text-1);font-size:2.5rem;font-weight:500;line-height:1}a.link-alt.uppercase,.component-border a.uppercase{border:1px solid var(--vp-c-divider);background:var(--vp-c-bg-elv);letter-spacing:.04em;border-radius:0;margin-bottom:4px;padding:2px 10px;font-size:.7rem;font-weight:500;transition:none;display:inline-block}a.link-alt.uppercase:hover{border-color:var(--accent);background:var(--accent)}@supports (color:color-mix(in lab, red, red)){a.link-alt.uppercase:hover{background:color-mix(in srgb, var(--accent) 16%, var(--vp-c-bg-elv))}}a.link-alt.uppercase:active{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){a.link-alt.uppercase:active{background:color-mix(in srgb, var(--accent) 30%, var(--vp-c-bg-elv))}}a.link-alt.uppercase:active{transform:translateY(1px)}a.component-border{border-radius:0}.vp-doc a,.vp-doc a:hover{color:var(--vp-c-brand-1);font-weight:500;text-decoration:none}.vp-doc a:hover{color:var(--vp-c-brand-2)}a,a:hover,.vp-doc a,.vp-doc a:hover,.vp-doc .header-anchor{text-decoration:none!important}.vp-doc h1{letter-spacing:-.03em;font-weight:700}.vp-doc h2{letter-spacing:-.02em;border-top-color:var(--vp-c-divider)}.vp-doc p,.vp-doc li{line-height:1.75}.vp-doc :not(pre)>code{color:var(--green);font-family:var(--vp-font-family-mono);border:1px solid var(--vp-c-divider);border-radius:0;font-size:.85em}.vp-doc div[class*=language-]{border:1px solid var(--vp-c-divider);border-radius:0}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:0}.home-hero{padding:56px 0 8px}.home-hero h1{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,5vw,3.25rem);font-weight:700;line-height:1.1}.home-hero h1 span{background:linear-gradient(90deg, var(--vp-c-text-1), var(--accent-soft) 70%, var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text}.home-hero p{max-width:36rem;color:var(--vp-c-text-2);margin:16px 0 0;font-size:1.1rem;line-height:1.6}@media (prefers-reduced-motion:reduce){.component-border,a.link-alt.uppercase{transition:none}}[class*=rounded],.VPNavBarSearchButton,.vp-doc [class*=language-],.vp-doc :not(pre)>code,.vp-doc img,.vp-doc table,.custom-block,.VPLocalSearchBox .results .result,.VPSkipLink,.keys,button.copy,.VPSwitch,.VPSwitch .check{border-radius:0!important}p.flex.flex-wrap>a.border.m-1{margin:.25rem;padding:.25rem .875rem;transition:none}p.flex.flex-wrap>a.border.m-1:hover{border-color:var(--accent);background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){p.flex.flex-wrap>a.border.m-1:hover{background-color:color-mix(in srgb, var(--accent) 14%, transparent)}}@media (width<=639px){.component-border.flex:has(>.text-center){flex-direction:column}.component-border>.text-center{text-align:left;align-items:baseline;gap:.5rem;margin-bottom:.5rem;display:flex;min-width:0!important}.component-border>.text-center .text-6xl{font-size:1.75rem}.component-border>.pl-8{padding-left:0}p.flex.flex-wrap:has(>a.border.m-1){-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;margin-inline:-.25rem;padding-bottom:.25rem;overflow-x:auto}p.flex.flex-wrap:has(>a.border.m-1)::-webkit-scrollbar{display:none}p.flex.flex-wrap>a.border.m-1{white-space:nowrap;flex:none;align-items:center;min-height:2.25rem;display:inline-flex}div.pt-6.pb-8{padding-top:.75rem;padding-bottom:.5rem}div.pt-6.pb-8>h1.mb-6{margin-bottom:.75rem}a.link-alt.uppercase,.component-border a.uppercase{margin-bottom:6px;padding:6px 12px}}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com]){gap:12px}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com])>a{justify-content:center;align-items:center;width:200px;height:56px;display:flex;margin:0!important}div.flex.flex-wrap.py-4.items-center.justify-center:has(>a[href*=ko-fi\.com])>a img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}div.flex.flex-wrap.py-4.items-center.justify-center.space-y-4:has(>a[href*=ko-fi\.com]){flex-flow:column}div.flex.flex-wrap.py-4.items-center.justify-center.space-x-4:has(>a[href*=ko-fi\.com]){grid-template-columns:repeat(2,168px);justify-content:center;gap:12px;display:grid}div.flex.flex-wrap.py-4.items-center.justify-center.space-x-4:has(>a[href*=ko-fi\.com])>a{width:168px;height:52px}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/node/config.d.mts
CHANGED
|
@@ -13,6 +13,14 @@ declare interface CustomDonationBaseConfig {
|
|
|
13
13
|
donationBaseUrl: string;
|
|
14
14
|
donationButtonImage: string;
|
|
15
15
|
donationButtonStyle?: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Intrinsic image dimensions, used for width/height attributes so the
|
|
18
|
+
* browser can reserve layout space before the image loads.
|
|
19
|
+
*/
|
|
20
|
+
donationButtonSize?: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
};
|
|
16
24
|
}
|
|
17
25
|
declare interface CustomDonationConfig extends CustomDonationBaseConfig {
|
|
18
26
|
donationId: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { useData } from 'vitepress'
|
|
3
|
-
import { useLayout } from 'vitepress/theme'
|
|
3
|
+
import { useLayout } from 'vitepress/theme-without-fonts'
|
|
4
4
|
import { computed, defineAsyncComponent } from 'vue'
|
|
5
5
|
import DonationWidget from './DonationWidget.vue'
|
|
6
6
|
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
import { useI18n } from 'vue-i18n'
|
|
3
3
|
import { switchLocale } from '../composables/locale'
|
|
4
4
|
|
|
5
|
+
// Inline SVG instead of @iconify/vue's <Icon>: that component renders an
|
|
6
|
+
// empty svg during SSR and fills it in after hydration, which shows up as a
|
|
7
|
+
// late navbar visual change (Speed Index). This renders on the server.
|
|
8
|
+
const translateIconBody =
|
|
9
|
+
'<g fill="currentColor"><path d="M4.545 6.714L4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286zm1.634-.736L5.5 3.956h-.049l-.679 2.022z"/><path d="M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm7.138 9.995q.289.451.63.846c-.748.575-1.673 1.001-2.768 1.292c.178.217.451.635.555.867c1.125-.359 2.08-.844 2.886-1.494c.777.665 1.739 1.165 2.93 1.472c.133-.254.414-.673.629-.89c-1.125-.253-2.057-.694-2.82-1.284c.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6 6 0 0 1-.415-.492a2 2 0 0 1-.94.31"/></g>'
|
|
10
|
+
|
|
5
11
|
defineProps({
|
|
6
12
|
size: {
|
|
7
13
|
type: Number,
|
|
@@ -22,10 +28,17 @@ const toggleLocale = () => switchLocale(availableLocales, locale)
|
|
|
22
28
|
class="VPLocaleSwitcher"
|
|
23
29
|
@click="toggleLocale"
|
|
24
30
|
>
|
|
25
|
-
<
|
|
31
|
+
<svg
|
|
32
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
33
|
+
aria-hidden="true"
|
|
34
|
+
role="img"
|
|
35
|
+
:width="size"
|
|
36
|
+
:height="size"
|
|
37
|
+
viewBox="0 0 16 16"
|
|
38
|
+
v-html="translateIconBody"
|
|
39
|
+
></svg>
|
|
26
40
|
</button>
|
|
27
41
|
</template>
|
|
28
|
-
|
|
29
42
|
<style scoped>
|
|
30
43
|
.divider {
|
|
31
44
|
margin-right: 8px;
|
|
@@ -16,10 +16,20 @@ const props = defineProps({
|
|
|
16
16
|
|
|
17
17
|
const slug = computed(() => useSlug(props.text))
|
|
18
18
|
const link = computed(() => `${props.basePath}${slug.value}`)
|
|
19
|
+
const label = computed(() => {
|
|
20
|
+
if (props.basePath === '/categories/') {
|
|
21
|
+
return `View all posts in category ${props.text}`
|
|
22
|
+
}
|
|
23
|
+
return `View all projects using ${props.text}`
|
|
24
|
+
})
|
|
19
25
|
</script>
|
|
20
26
|
|
|
21
27
|
<template>
|
|
22
|
-
<RouterLink
|
|
28
|
+
<RouterLink
|
|
29
|
+
:to="link"
|
|
30
|
+
:aria-label="label"
|
|
31
|
+
class="mr-2 text-sm font-medium uppercase link-alt"
|
|
32
|
+
>
|
|
23
33
|
{{ text }}
|
|
24
34
|
</RouterLink>
|
|
25
35
|
</template>
|
package/src/client/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Icon } from '@iconify/vue'
|
|
2
2
|
import type { Theme } from 'vitepress'
|
|
3
|
-
import DefaultTheme from 'vitepress/theme'
|
|
3
|
+
import DefaultTheme from 'vitepress/theme-without-fonts'
|
|
4
4
|
import { useHtmlLang, usePageLocale } from './composables/lang'
|
|
5
5
|
import Layout from './layouts/Layout.vue'
|
|
6
6
|
import ArchivesPage from './pages/ArchivesPage.vue'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { useData, useRoute } from 'vitepress'
|
|
3
|
-
import DefaultTheme from 'vitepress/theme'
|
|
3
|
+
import DefaultTheme from 'vitepress/theme-without-fonts'
|
|
4
4
|
import { onMounted, watch } from 'vue'
|
|
5
5
|
import DonationWidget from '../components/DonationWidget.vue'
|
|
6
6
|
import Footer from '../components/Footer.vue'
|
|
@@ -11,6 +11,10 @@ const props = defineProps<DonationButtonProps>()
|
|
|
11
11
|
const donationUrl = computed(() =>
|
|
12
12
|
new URL(props.donationId, props.donationBaseUrl).toString()
|
|
13
13
|
)
|
|
14
|
+
|
|
15
|
+
// Intrinsic sizes of the platform button images so the browser can reserve
|
|
16
|
+
// space before they load (avoids unsized-image CLS risk).
|
|
17
|
+
const size = props.donationButtonSize
|
|
14
18
|
</script>
|
|
15
19
|
|
|
16
20
|
<template>
|
|
@@ -19,6 +23,10 @@ const donationUrl = computed(() =>
|
|
|
19
23
|
:src="donationButtonImage"
|
|
20
24
|
:alt="donationPlatform"
|
|
21
25
|
:style="donationButtonStyle"
|
|
26
|
+
:width="size?.width"
|
|
27
|
+
:height="size?.height"
|
|
28
|
+
loading="lazy"
|
|
29
|
+
decoding="async"
|
|
22
30
|
/>
|
|
23
31
|
</a>
|
|
24
32
|
</template>
|
|
@@ -11,6 +11,11 @@ export declare interface CustomDonationBaseConfig {
|
|
|
11
11
|
donationBaseUrl: string
|
|
12
12
|
donationButtonImage: string
|
|
13
13
|
donationButtonStyle?: Record<string, string>
|
|
14
|
+
/**
|
|
15
|
+
* Intrinsic image dimensions, used for width/height attributes so the
|
|
16
|
+
* browser can reserve layout space before the image loads.
|
|
17
|
+
*/
|
|
18
|
+
donationButtonSize?: { width: number; height: number }
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
export declare interface CustomDonationConfig extends CustomDonationBaseConfig {
|
|
@@ -27,7 +32,8 @@ export const supportedDonationPlatforms: {
|
|
|
27
32
|
donationButtonStyle: {
|
|
28
33
|
height: '60px !important',
|
|
29
34
|
width: '217px !important'
|
|
30
|
-
}
|
|
35
|
+
},
|
|
36
|
+
donationButtonSize: { width: 545, height: 153 }
|
|
31
37
|
},
|
|
32
38
|
kofi: {
|
|
33
39
|
donationBaseUrl: 'https://ko-fi.com',
|
|
@@ -35,11 +41,13 @@ export const supportedDonationPlatforms: {
|
|
|
35
41
|
'https://storage.ko-fi.com/cdn/brandasset/kofi_bg_tag_white.png',
|
|
36
42
|
donationButtonStyle: {
|
|
37
43
|
height: '60px !important'
|
|
38
|
-
}
|
|
44
|
+
},
|
|
45
|
+
donationButtonSize: { width: 341, height: 129 }
|
|
39
46
|
},
|
|
40
47
|
paypal: {
|
|
41
48
|
donationBaseUrl: 'https://paypal.me',
|
|
42
49
|
donationButtonImage:
|
|
43
|
-
'https://paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif'
|
|
50
|
+
'https://paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif',
|
|
51
|
+
donationButtonSize: { width: 147, height: 47 }
|
|
44
52
|
}
|
|
45
53
|
}
|
|
@@ -44,8 +44,26 @@ function init() {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
function scheduleInit() {
|
|
48
|
+
const start = () => {
|
|
49
|
+
// Defer loading until the browser is idle so analytics never competes
|
|
50
|
+
// with critical rendering / interaction on the initial navigation.
|
|
51
|
+
if (typeof (window as any).requestIdleCallback === 'function') {
|
|
52
|
+
;(window as any).requestIdleCallback(() => init(), { timeout: 5000 })
|
|
53
|
+
} else {
|
|
54
|
+
setTimeout(init, 3000)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (document.readyState === 'complete') {
|
|
59
|
+
start()
|
|
60
|
+
} else {
|
|
61
|
+
window.addEventListener('load', start, { once: true })
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
47
65
|
if (googleAnalyticsOptions) {
|
|
48
|
-
onMounted(
|
|
66
|
+
onMounted(scheduleInit)
|
|
49
67
|
}
|
|
50
68
|
</script>
|
|
51
69
|
|