@trifle/trifle-hub 1.0.163 → 1.1.1
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/README.md +83 -0
- package/dist/{AccountIndex-Dn3bQlHS.js → AccountIndex-D60Jm77t.js} +2 -2
- package/dist/Earn-Du-QbIyl.js +297 -0
- package/dist/{ExchangeController-DKSzd5W5.js → ExchangeController-Co2XHJuv.js} +1 -1
- package/dist/{Games-D5-koQ_A.js → Games-C5XkMCaw.js} +51 -50
- package/dist/{HelpersUtil-BPK4Kvyf.js → HelpersUtil-D9b9TbXb.js} +2 -2
- package/dist/{Leaderboard-X08Wq92h.js → Leaderboard-BUdRf7Qs.js} +1 -1
- package/dist/{Profile-DcXgQ25_.js → Profile-yM_ILkFM.js} +2 -2
- package/dist/{QuestCard-ABFoFHer.js → QuestCard-BAD8PgfA.js} +1 -1
- package/dist/{ReownAuthentication-CttWwnWi.js → ReownAuthentication-wpUvwiIU.js} +1 -1
- package/dist/{SocialsButtons-DtwEuVa-.js → SocialsButtons-WqOFzwOG.js} +1 -1
- package/dist/{SwapBalls-jt0cB6dz.js → SwapBalls-Cs5xWzGZ.js} +36 -41
- package/dist/{SwapController-BbHqYHlv.js → SwapController-v4pppXIt.js} +1 -1
- package/dist/{TrifleGuide-z_HgLvDF.js → TrifleGuide-B7DyPFtl.js} +1 -1
- package/dist/{data-capture-BAONGzwU.js → data-capture-hSUmouVX.js} +4 -4
- package/dist/{email-BpcL1Cj2.js → email-CIK5zeKM.js} +8 -8
- package/dist/{embedded-wallet-BjpZdaIk.js → embedded-wallet-u6gqaxUu.js} +12 -12
- package/dist/{features-BZ1A8Jw6.js → features-B8WA4eje.js} +1 -1
- package/dist/{if-defined-DmV0aIGE.js → if-defined-BnV-ervM.js} +1 -1
- package/dist/{index-BOY5M7KG.js → index-4yRoGOQO.js} +3 -3
- package/dist/{index-BfeL-deq.js → index-9LMXvg6z.js} +2 -2
- package/dist/{index-65kw7NXq.js → index-9P_OBje2.js} +31 -31
- package/dist/{index-BwERftbf.js → index-B-to9VUX.js} +2 -2
- package/dist/{index-hdzaDr7r.js → index-B20n3ETF.js} +3 -3
- package/dist/{index-CwMgCQF9.js → index-B2kQv26f.js} +1 -1
- package/dist/{index-Bv-YtpxG.js → index-BDXO44FI.js} +1 -1
- package/dist/{index-DTz2CwC1.js → index-BEw-Pamy.js} +3 -3
- package/dist/{index-c7T8N6lx.js → index-BFnrZgM2.js} +3 -3
- package/dist/{index-DacQRuok.js → index-BHuyhGC4.js} +3 -3
- package/dist/{index-CaMtpfj6.js → index-BLewXRlj.js} +2 -2
- package/dist/{index-n-vdz18K.js → index-BO7yZWBD.js} +3 -3
- package/dist/{index-C6jVAUHA.js → index-BVAmuOm6.js} +13 -13
- package/dist/{index--wmNzxU2.js → index-BYUIgFYz.js} +4 -4
- package/dist/{index-BqmTrFwO.js → index-Bb87kDJL.js} +2 -2
- package/dist/{index-B_6bbCRZ.js → index-BjgdEoUq.js} +12 -12
- package/dist/{index-PJbwRCkP.js → index-BtuYCqDV.js} +4 -4
- package/dist/{index-Cd-9CkD7.js → index-BzHS6p-l.js} +2 -2
- package/dist/{index-DU-zD9-x.js → index-BzRlqe1H.js} +2 -2
- package/dist/{index-B4sI2uyx.js → index-C-O4WPQJ.js} +2 -2
- package/dist/{index-zUAmz5W0.js → index-CVL_07UF.js} +3 -3
- package/dist/{index-DpgkQYtx.js → index-Cdq2oZWs.js} +3 -3
- package/dist/{index-Cn96EYGe.js → index-CeBr-U9c.js} +4 -4
- package/dist/{index-D5foIVXV.js → index-CphuOhcf.js} +2 -2
- package/dist/{index-1GzFses_.js → index-CqP96ufb.js} +2 -2
- package/dist/{index-CPLK5vz3.js → index-D2kFWzbc.js} +3 -3
- package/dist/{index-C9HDtjum.js → index-DBiZORSw.js} +4 -4
- package/dist/{index-COS_unoF.js → index-DHdHH03r.js} +4 -4
- package/dist/{index-DikDXdTK.js → index-DM1fdCr_.js} +3 -3
- package/dist/{index-Bsz4RhGO.js → index-D_0pIlko.js} +3 -3
- package/dist/{index-DY1X4FAj.js → index-Dadi5DZf.js} +3 -3
- package/dist/{index-DZ4JGqbI.js → index-DyKoAen5.js} +1 -1
- package/dist/{index-Snl54idt.js → index-Dz6b_m4q.js} +4 -4
- package/dist/{index-DLyASpCu.js → index-O1OqNkfY.js} +7 -7
- package/dist/{index-5ech7jLW.js → index-qeopR1ky.js} +7 -7
- package/dist/{index-D9Wrhsie.js → index-u_gtG9Tx.js} +4 -4
- package/dist/index.es.js +2 -2
- package/dist/{onramp-BUV27771.js → onramp-ChLiUFfL.js} +14 -14
- package/dist/{pay-with-exchange-BONwE5c2.js → pay-with-exchange-Blj6-UQk.js} +15 -15
- package/dist/{receive-DjIsYMrY.js → receive-BRvyfS7O.js} +5 -5
- package/dist/{ref-BnJwwV1J.js → ref-BBOIalX3.js} +2 -2
- package/dist/{send-DCCN5WWk.js → send-DvOYRAqW.js} +15 -15
- package/dist/{socials-sQlxpcN4.js → socials-COpGew42.js} +10 -10
- package/dist/{swaps-BR-jpNEV.js → swaps-CsqJhRVb.js} +11 -11
- package/dist/{transactions-BI02pyWr.js → transactions-BN1AxMlP.js} +3 -3
- package/dist/trifle-hub.css +2134 -0
- package/dist/{w3m-modal-Dblq6D4h.js → w3m-modal-DkzTBu_K.js} +12 -12
- package/package.json +2 -2
- package/dist/Earn-BVtdNUxL.js +0 -255
package/README.md
CHANGED
|
@@ -69,6 +69,89 @@ Add the TrifleHub component to your app layout:
|
|
|
69
69
|
</script>
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
## Styles
|
|
73
|
+
|
|
74
|
+
CSS is automatically injected when the plugin is registered — no separate stylesheet import is required.
|
|
75
|
+
|
|
76
|
+
Since v1.1.0, all compiled styles ship inside `@layer trifle-hub`. This keeps trifle-hub's styles from polluting the global cascade and lets you control where they sit relative to your own CSS.
|
|
77
|
+
|
|
78
|
+
trifle-hub ships its own element reset (preflight) inside `@layer trifle-hub.base`. If your app has no preflight of its own, trifle-hub provides the baseline for buttons, inputs, etc.
|
|
79
|
+
|
|
80
|
+
### Layer order
|
|
81
|
+
|
|
82
|
+
For trifle-hub's utility classes (e.g. `_bg-metallic-linear`, `_shadow-panel`) to correctly override element resets on tags like `<button>`, `trifle-hub` must be declared **after** `base` in the layer order. This ensures trifle-hub utility classes beat preflight resets, while your own app utilities still win over trifle-hub when they conflict.
|
|
83
|
+
|
|
84
|
+
#### Why `index.html` — not your CSS file
|
|
85
|
+
|
|
86
|
+
trifle-hub injects its CSS via JavaScript at runtime. Because CSS layer order is locked by the **first** appearance of each layer name, any `@layer` declaration in your app's CSS file may arrive too late if trifle-hub's JS runs first (which depends on import order in `main.js`).
|
|
87
|
+
|
|
88
|
+
The safest approach for any Vite app is to declare the layer order as a `<style>` tag in `index.html`. It is processed by the browser before any JavaScript runs, so trifle-hub's injection always lands in the correct position.
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<!-- index.html <head> — before any <script> tags -->
|
|
92
|
+
<style>@layer theme, base, trifle-hub, components, utilities;</style>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Include `theme` if you use Tailwind v4 (it has an extra `@layer properties, theme, ...` that v3 does not).
|
|
96
|
+
|
|
97
|
+
#### Tailwind v4
|
|
98
|
+
|
|
99
|
+
In `index.html`:
|
|
100
|
+
|
|
101
|
+
```html
|
|
102
|
+
<style>@layer properties, theme, base, trifle-hub, components, utilities;</style>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Your `style.css` needs no extra layer declaration:
|
|
106
|
+
|
|
107
|
+
```css
|
|
108
|
+
@import "tailwindcss";
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Tailwind v3 — with your own preflight
|
|
112
|
+
|
|
113
|
+
In `index.html`:
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<style>@layer base, trifle-hub, components, utilities;</style>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Tailwind v3 outputs **unlayered** CSS by default, which unconditionally beats any `@layer` rule. To opt in to the layer system, wrap each directive in an explicit `@layer` block in your CSS:
|
|
120
|
+
|
|
121
|
+
```css
|
|
122
|
+
@layer base {
|
|
123
|
+
@tailwind base;
|
|
124
|
+
}
|
|
125
|
+
@layer components {
|
|
126
|
+
@tailwind components;
|
|
127
|
+
}
|
|
128
|
+
@layer utilities {
|
|
129
|
+
@tailwind utilities;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Any styles written outside a `@layer` block remain unlayered and beat everything above.
|
|
134
|
+
|
|
135
|
+
#### Tailwind v3 — without your own preflight
|
|
136
|
+
|
|
137
|
+
In `index.html`:
|
|
138
|
+
|
|
139
|
+
```html
|
|
140
|
+
<style>@layer trifle-hub;</style>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
If your app has `@tailwind base` commented out (relying on trifle-hub's built-in reset), your unlayered `@tailwind components/utilities` output naturally beats `@layer trifle-hub` without needing any wrapping:
|
|
144
|
+
|
|
145
|
+
```css
|
|
146
|
+
/* @tailwind base; */ ← leave commented out
|
|
147
|
+
@tailwind components;
|
|
148
|
+
@tailwind utilities;
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Standalone CSS file
|
|
152
|
+
|
|
153
|
+
The compiled stylesheet is available at `dist/trifle-hub.css` if you prefer to manage it explicitly (e.g., for SSR, critical CSS extraction, or strict layer ordering). The `style` field in the package manifest points to this file. If importing it directly, note that the JS bundle also auto-injects the CSS — disable one or the other to avoid loading styles twice.
|
|
154
|
+
|
|
72
155
|
## Available Provide/Inject Resources
|
|
73
156
|
|
|
74
157
|
The TrifleHub plugin provides several resources via Vue's provide/inject system:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inject as g, computed as n, createBlock as _, openBlock as p, withCtx as a, createElementVNode as i, createVNode as u, createTextVNode as l, normalizeClass as A, toDisplayString as k, unref as L, onMounted as C, watch as x } from "vue";
|
|
2
2
|
import { storeToRefs as T } from "pinia";
|
|
3
|
-
import { A as N, a as W, _ as o, b as F } from "./Profile-
|
|
4
|
-
import { o as S } from "./index-
|
|
3
|
+
import { A as N, a as W, _ as o, b as F } from "./Profile-yM_ILkFM.js";
|
|
4
|
+
import { o as S } from "./index-BjgdEoUq.js";
|
|
5
5
|
const $ = ["data"], B = { class: "_w-full _max-w-[22em] _mx-auto _px-1.5 sm:_px-8 _flex _flex-col _gap-4 _items-center" }, D = { class: "_flex _flex-col _w-full _leading-none" }, P = {
|
|
6
6
|
__name: "ConnectAccount",
|
|
7
7
|
setup(y) {
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { inject as H, ref as f, computed as N, watch as Q, onMounted as G, nextTick as J, createElementBlock as r, openBlock as a, createElementVNode as t, createVNode as I, createCommentVNode as m, withCtx as C, createTextVNode as W, unref as b, normalizeStyle as k, toDisplayString as D, normalizeClass as S, TransitionGroup as Z, Fragment as j, renderList as E, createBlock as K } from "vue";
|
|
2
|
+
import { m as X, n as V } from "./index-BjgdEoUq.js";
|
|
3
|
+
import { H as q } from "./HubPageHeader-VDMilTIN.js";
|
|
4
|
+
import { storeToRefs as ee } from "pinia";
|
|
5
|
+
import { _ as te } from "./SocialsButtons-WqOFzwOG.js";
|
|
6
|
+
import { _ as le } from "./QuestCard-BAD8PgfA.js";
|
|
7
|
+
import { _ as se } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
8
|
+
const ne = { class: "_flex-1 _overflow-y-scroll-masked _no-scrollbar _px-5 _w-full _flex _flex-col" }, oe = { class: "_-mt-3.5 _space-y-3.5" }, ae = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "_mt-4 _px-3.5 _py-3 _flex _flex-col _gap-3 _rounded-lg _overflow-hidden _shadow-panel _bg-metallic-cone"
|
|
11
|
+
}, ie = { class: "_relative _flex _flex-col _gap-2.5" }, re = { class: "_flex _justify-between _items-center" }, _e = { class: "_flex _items-center _min-w-0 _flex-1" }, de = { class: "_text-right _min-w-0 _truncate _text-stroke-3xl" }, ce = { class: "_gap-[0.45rem] _mt-6 _grid _grid-cols-2 _text-stroke-2xl _text-xl _tracking-wide _mb-3" }, ue = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "_space-y-4"
|
|
14
|
+
}, pe = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "_space-y-2"
|
|
17
|
+
}, fe = {
|
|
18
|
+
key: 1,
|
|
19
|
+
class: "_p-4 _bg-red-100 _text-red-700 _rounded-lg"
|
|
20
|
+
}, me = {
|
|
21
|
+
key: 2,
|
|
22
|
+
class: "_space-y-2"
|
|
23
|
+
}, ge = {
|
|
24
|
+
key: 1,
|
|
25
|
+
class: "_space-y-3"
|
|
26
|
+
}, be = { class: "_bg-metallic-coneff _-mx-2 _p-2.5ff _rounded-lg_shadow-panel-inset _text-center _flex _flex-col _gap-4" }, he = ["href"], ve = {
|
|
27
|
+
class: "masked-oval _relative _flex _items-center _justify-center _pointer-events-none",
|
|
28
|
+
style: { "aspect-ratio": "14.5/9" }
|
|
29
|
+
}, xe = ["src"], ye = { class: "_px-2.5 _mx-6 _flex _justify-center _-mt-5 _relative _p-2" }, ke = { class: "_bg-metallic-linearff _shadow-panel-insetff _rounded-lg _flex _items-center _w-fullff _justify-between _flex-col _gap-1 _shadow-panel-insetff _rounded-full _w-full _pb-5" }, we = ["href"], Pe = {
|
|
30
|
+
key: 0,
|
|
31
|
+
class: "_relative _-mt-3 _shadow-panel-inset _rounded-md"
|
|
32
|
+
}, Te = ["innerHTML"], $e = { class: "_mt-6 _bg-metallic-linear _p-4 _rounded-lg _shadow-panel _text-center _flex _flex-col _gap-3 _pb-5" }, Le = { class: "_grid _grid-cols-2 _gap-2" }, Be = {
|
|
33
|
+
__name: "Earn",
|
|
34
|
+
setup(Ie) {
|
|
35
|
+
const d = H("TrifleHub/store"), h = H("hub"), { openHub: z } = h, w = f([]), v = f(!0), x = f(null), P = f(0), T = f("all"), c = f("earn"), { backendUrl: F, isAuthenticated: y } = ee(d), O = () => {
|
|
36
|
+
var s;
|
|
37
|
+
d.setProfileUsername((s = d.user) == null ? void 0 : s.username), z("profile");
|
|
38
|
+
}, M = N(() => {
|
|
39
|
+
var s;
|
|
40
|
+
return (s = h.highlightQuestId) == null ? void 0 : s.value;
|
|
41
|
+
}), U = N(() => {
|
|
42
|
+
var e;
|
|
43
|
+
let s = [];
|
|
44
|
+
const l = d.isFarcaster ? "farcaster" : "web", i = w.value.filter(
|
|
45
|
+
(n) => !n.hiddenFromQuests && (!n.platforms || n.platforms.includes(l))
|
|
46
|
+
);
|
|
47
|
+
T.value === "all" ? s = i : T.value === "once" ? s = i.filter((n) => n.once) : T.value === "ongoing" ? s = i.filter((n) => !n.once) : s = i;
|
|
48
|
+
const _ = s.slice().sort((n, o) => {
|
|
49
|
+
if (n.enabled && !o.enabled) return -1;
|
|
50
|
+
if (!n.enabled && o.enabled) return 1;
|
|
51
|
+
if (n.enabled && o.enabled) {
|
|
52
|
+
const p = n.completed && n.once, g = o.completed && o.once;
|
|
53
|
+
if (p && !g) return 1;
|
|
54
|
+
if (!p && g) return -1;
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
}), u = (e = h.highlightQuestId) == null ? void 0 : e.value;
|
|
58
|
+
if (u) {
|
|
59
|
+
const n = _.findIndex((o) => o.id === u);
|
|
60
|
+
if (n > 0) {
|
|
61
|
+
const [o] = _.splice(n, 1);
|
|
62
|
+
_.unshift(o);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return _;
|
|
66
|
+
}), $ = async () => {
|
|
67
|
+
var s, l, i, _, u;
|
|
68
|
+
v.value = !0, x.value = null;
|
|
69
|
+
try {
|
|
70
|
+
if (y.value || (l = (s = d.isFarcaster) == null ? void 0 : s.user) != null && l.id) {
|
|
71
|
+
const e = await fetch(`${F.value}/balls/point-categories-with-counts`, {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: {
|
|
74
|
+
"Content-Type": "application/json"
|
|
75
|
+
// Authorization: `Bearer ${auth.authToken}`
|
|
76
|
+
},
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
userId: ((i = d.user) == null ? void 0 : i.id) || ((u = (_ = d.isFarcaster) == null ? void 0 : _.user) == null ? void 0 : u.id)
|
|
79
|
+
})
|
|
80
|
+
});
|
|
81
|
+
if (!e.ok)
|
|
82
|
+
throw new Error(`HTTP error! status: ${e.status}`);
|
|
83
|
+
const n = await e.json();
|
|
84
|
+
P.value = n.balls.total, w.value = V.map((o) => {
|
|
85
|
+
const p = n.balls.data.filter((B) => B.name === o.id), g = p.length > 0;
|
|
86
|
+
let L = null;
|
|
87
|
+
if (!o.once && g)
|
|
88
|
+
if (o.id === "gm") {
|
|
89
|
+
const B = (/* @__PURE__ */ new Date()).toDateString(), R = p.filter(
|
|
90
|
+
(Y) => new Date(Y.createdAt).toDateString() === B
|
|
91
|
+
);
|
|
92
|
+
L = Math.min(R.length / 10 * 100, 100);
|
|
93
|
+
} else o.id === "burn-kudzu" && (L = Math.min(p.length % 10 * 10, 100));
|
|
94
|
+
return {
|
|
95
|
+
...o,
|
|
96
|
+
completed: g,
|
|
97
|
+
progress: L,
|
|
98
|
+
requiresLogin: !1,
|
|
99
|
+
enabled: o.enabled !== void 0 ? o.enabled : !0,
|
|
100
|
+
link: o.link || null
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
} else
|
|
104
|
+
P.value = 0, w.value = V.map((e) => ({
|
|
105
|
+
...e,
|
|
106
|
+
completed: !1,
|
|
107
|
+
progress: null,
|
|
108
|
+
requiresLogin: !0,
|
|
109
|
+
enabled: e.enabled !== void 0 ? e.enabled : !0,
|
|
110
|
+
link: e.link || null
|
|
111
|
+
}));
|
|
112
|
+
} catch (e) {
|
|
113
|
+
console.error("Error fetching quest data:", e), x.value = "Failed to load quest data. Please try again later.";
|
|
114
|
+
} finally {
|
|
115
|
+
v.value = !1;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
Q(y, () => {
|
|
119
|
+
$();
|
|
120
|
+
}), G(() => {
|
|
121
|
+
$();
|
|
122
|
+
}), Q(
|
|
123
|
+
() => {
|
|
124
|
+
var s;
|
|
125
|
+
return [(s = h.highlightQuestId) == null ? void 0 : s.value, v.value];
|
|
126
|
+
},
|
|
127
|
+
async ([s, l]) => {
|
|
128
|
+
var i;
|
|
129
|
+
!s || l || (await J(), (i = document.getElementById(`thub-quest-${s}`)) == null || i.scrollIntoView({
|
|
130
|
+
behavior: "smooth",
|
|
131
|
+
block: "nearest"
|
|
132
|
+
}));
|
|
133
|
+
},
|
|
134
|
+
{ flush: "post" }
|
|
135
|
+
);
|
|
136
|
+
const A = [
|
|
137
|
+
{
|
|
138
|
+
name: "like-lottery",
|
|
139
|
+
title: "NEW PRIZES SOON",
|
|
140
|
+
link: "https://trifle.life/prizes",
|
|
141
|
+
linkDisabled: !0,
|
|
142
|
+
bgVideo: "https://gm-trifle.b-cdn.net/dsiwc6udm/video/upload/q_auto:eco/v1757079745/lottery-gif-loop-better-shorter__16-9__240p-400br_f5bx63.mp4",
|
|
143
|
+
bgBlur: 0,
|
|
144
|
+
isNewUntil: /* @__PURE__ */ new Date("September 30, 2099")
|
|
145
|
+
}
|
|
146
|
+
];
|
|
147
|
+
return (s, l) => {
|
|
148
|
+
var i, _, u;
|
|
149
|
+
return a(), r("div", ne, [
|
|
150
|
+
t("header", oe, [
|
|
151
|
+
I(q, null, {
|
|
152
|
+
icon: C(() => l[3] || (l[3] = [
|
|
153
|
+
t("img", {
|
|
154
|
+
src: X,
|
|
155
|
+
alt: "📈🪩",
|
|
156
|
+
class: "_h-[1.75em]"
|
|
157
|
+
}, null, -1)
|
|
158
|
+
])),
|
|
159
|
+
default: C(() => [
|
|
160
|
+
l[4] || (l[4] = W(" BALL$ "))
|
|
161
|
+
]),
|
|
162
|
+
_: 1
|
|
163
|
+
}),
|
|
164
|
+
b(y) ? m("", !0) : (a(), r("section", ae, [
|
|
165
|
+
t("div", ie, [
|
|
166
|
+
l[7] || (l[7] = t("div", null, [
|
|
167
|
+
t("p", { class: "_text-mlg" }, "You might have 🪩BALL$ to claim!")
|
|
168
|
+
], -1)),
|
|
169
|
+
t("div", re, [
|
|
170
|
+
l[6] || (l[6] = t("p", { class: "_italic _text-[#888] _text-em-sm _animate-blink" }, "Login to claim →", -1)),
|
|
171
|
+
t("button", {
|
|
172
|
+
class: "_bubble-btn _px-6 _py-2",
|
|
173
|
+
style: { filter: "hue-rotate(-340deg) saturate(1.8)" },
|
|
174
|
+
onClick: l[0] || (l[0] = (e) => b(z)("account"))
|
|
175
|
+
}, l[5] || (l[5] = [
|
|
176
|
+
t("span", { style: { filter: "hue-rotate(340deg) saturate(0.5)" } }, "Login", -1)
|
|
177
|
+
]))
|
|
178
|
+
])
|
|
179
|
+
])
|
|
180
|
+
])),
|
|
181
|
+
b(y) ? (a(), r("section", {
|
|
182
|
+
key: 1,
|
|
183
|
+
class: "_px-3 _py-3 _bg-metallic-cone _rounded-lg _shadow-panel _flex _justify-between _items-center _flex-wrap _gap-2 _leading-none _text-3xl _cursor-pointer _whitespace-nowrap",
|
|
184
|
+
onClick: O
|
|
185
|
+
}, [
|
|
186
|
+
t("div", _e, [
|
|
187
|
+
(i = b(d).user) != null && i.avatar ? (a(), r("div", {
|
|
188
|
+
key: 0,
|
|
189
|
+
class: "_size-[1.125em] _block _rounded-full _shadow-panel-inset _bg-cover _bg-center",
|
|
190
|
+
style: k({ backgroundImage: `url(${(_ = b(d).user) == null ? void 0 : _.avatar})` })
|
|
191
|
+
}, null, 4)) : m("", !0),
|
|
192
|
+
l[8] || (l[8] = t("div", { class: "_opacity-30 _text-mlg _text-stroke-lg _ml-[0.37em] _min-w-0 _truncate" }, " Your Balance ", -1))
|
|
193
|
+
]),
|
|
194
|
+
t("div", de, D(((u = P.value) == null ? void 0 : u.toLocaleString()) || "???"), 1),
|
|
195
|
+
l[9] || (l[9] = t("div", { class: "_flex-shrink-0" }, "🪩", -1))
|
|
196
|
+
])) : m("", !0)
|
|
197
|
+
]),
|
|
198
|
+
t("nav", ce, [
|
|
199
|
+
t("button", {
|
|
200
|
+
class: S(["_bubble-btn _px-4.5 _h-16", { "_animate-wiggle-sm": c.value === "earn" }]),
|
|
201
|
+
onClick: l[1] || (l[1] = (e) => c.value = "earn"),
|
|
202
|
+
style: k(c.value === "earn" ? "filter: hue-rotate(-70deg) saturate(1.6)" : "")
|
|
203
|
+
}, " earn ", 6),
|
|
204
|
+
t("button", {
|
|
205
|
+
class: S(["_bubble-btn _px-4.5 _h-16", { "_animate-wiggle-sm": c.value === "spend" }]),
|
|
206
|
+
onClick: l[2] || (l[2] = (e) => c.value = "spend"),
|
|
207
|
+
style: k(c.value === "spend" ? "filter: hue-rotate(-345deg) saturate(2.5)" : "")
|
|
208
|
+
}, " spend ", 6)
|
|
209
|
+
]),
|
|
210
|
+
I(Z, { name: "thub-page-group" }, {
|
|
211
|
+
default: C(() => [
|
|
212
|
+
c.value === "earn" ? (a(), r("div", ue, [
|
|
213
|
+
v.value ? (a(), r("div", pe, [
|
|
214
|
+
(a(), r(j, null, E(3, (e) => t("div", {
|
|
215
|
+
key: `loader-${e}`,
|
|
216
|
+
class: "_flex _items-center _gap-3 _p-3 _bg-metallic-linear _shadow-panel _rounded-lg animate-pulse"
|
|
217
|
+
}, l[10] || (l[10] = [
|
|
218
|
+
t("div", { class: "_size-8 _rounded-full _bg-black/30" }, null, -1),
|
|
219
|
+
t("div", { class: "_flex-1 _space-y-2" }, [
|
|
220
|
+
t("div", { class: "_h-4 _bg-black/30 _rounded w-3/4" })
|
|
221
|
+
], -1),
|
|
222
|
+
t("div", { class: "_h-6 _w-12 _bg-black/30 _rounded" }, null, -1)
|
|
223
|
+
]))), 64))
|
|
224
|
+
])) : x.value ? (a(), r("div", fe, D(x.value), 1)) : (a(), r("div", me, [
|
|
225
|
+
(a(!0), r(j, null, E(U.value, (e) => (a(), K(le, {
|
|
226
|
+
key: e.id,
|
|
227
|
+
quest: e,
|
|
228
|
+
highlight: e.id === M.value,
|
|
229
|
+
onPointsUpdated: $
|
|
230
|
+
}, null, 8, ["quest", "highlight"]))), 128))
|
|
231
|
+
]))
|
|
232
|
+
])) : m("", !0),
|
|
233
|
+
c.value === "spend" ? (a(), r("div", ge, [
|
|
234
|
+
t("section", be, [
|
|
235
|
+
(a(), r(j, null, E(A, (e) => t("section", {
|
|
236
|
+
key: e.name,
|
|
237
|
+
class: "_relative _group"
|
|
238
|
+
}, [
|
|
239
|
+
t("a", {
|
|
240
|
+
href: e.linkDisabled ? null : e.link,
|
|
241
|
+
class: "_block _pointer-events-auto _cursor-pointer _scale-[1.05] mouse:hover:_scale-[1.1] _duration-500"
|
|
242
|
+
}, [
|
|
243
|
+
t("figure", ve, [
|
|
244
|
+
t("video", {
|
|
245
|
+
src: e.bgVideo,
|
|
246
|
+
autoplay: "",
|
|
247
|
+
muted: "",
|
|
248
|
+
playsinline: "",
|
|
249
|
+
"webkit-playsinline": "",
|
|
250
|
+
preload: "auto",
|
|
251
|
+
loop: "",
|
|
252
|
+
class: "_absolute _top-0 _left-0 _w-full _h-full _object-cover",
|
|
253
|
+
style: k({
|
|
254
|
+
filter: e.bgBlur ? `blur(${e.bgBlur}px)` : "none"
|
|
255
|
+
// imageRendering: 'pixelated'
|
|
256
|
+
}),
|
|
257
|
+
loading: "lazy"
|
|
258
|
+
}, null, 12, xe)
|
|
259
|
+
])
|
|
260
|
+
], 8, he),
|
|
261
|
+
t("div", ye, [
|
|
262
|
+
t("div", ke, [
|
|
263
|
+
t("a", {
|
|
264
|
+
href: e.linkDisabled ? null : e.link,
|
|
265
|
+
class: S(["_-mt-8 _relative _z-10 _bg-metallic-cone _shadow-panel _rounded-full _px-8 _py-1.5 _weight-black _text-em-2xl sm:_text-em-3xl mouse:hover:_scale-[1.05] _duration-150", {
|
|
266
|
+
"_animate-rainbow-wiggle-sm": !0,
|
|
267
|
+
// '_tracking-[0.2em]': !game.title,
|
|
268
|
+
"_tracking-[0.05em]": e.title
|
|
269
|
+
}])
|
|
270
|
+
}, D(e.title), 11, we),
|
|
271
|
+
e.description ? (a(), r("div", Pe, [
|
|
272
|
+
t("p", {
|
|
273
|
+
class: "_px-4.5 _leading-none _py-4.5 _italic _opacity-50ff _whitespace-nowrap _text-stroke-lg _tracking-[0.01em]",
|
|
274
|
+
innerHTML: e.description
|
|
275
|
+
}, null, 8, Te)
|
|
276
|
+
])) : m("", !0)
|
|
277
|
+
])
|
|
278
|
+
])
|
|
279
|
+
])), 64))
|
|
280
|
+
])
|
|
281
|
+
])) : m("", !0)
|
|
282
|
+
]),
|
|
283
|
+
_: 1
|
|
284
|
+
}),
|
|
285
|
+
t("section", $e, [
|
|
286
|
+
l[11] || (l[11] = t("header", { class: "_-mt-0.5 _opacity-30 _animate-wiggle-sm" }, "follow for updates", -1)),
|
|
287
|
+
t("div", Le, [
|
|
288
|
+
I(te)
|
|
289
|
+
])
|
|
290
|
+
])
|
|
291
|
+
]);
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}, Ne = /* @__PURE__ */ se(Be, [["__scopeId", "data-v-086e7ded"]]);
|
|
295
|
+
export {
|
|
296
|
+
Ne as default
|
|
297
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as k, g as U, C as l, E as w, b as E, S as A, c as x, f as P, d as N, e as I, O as L, N as f, h as C, B as T, i as W, s as _, j as v } from "./index-
|
|
1
|
+
import { a as k, g as U, C as l, E as w, b as E, S as A, c as x, f as P, d as N, e as I, O as L, N as f, h as C, B as T, i as W, s as _, j as v } from "./index-BjgdEoUq.js";
|
|
2
2
|
const D = 0, b = {
|
|
3
3
|
paymentAsset: null,
|
|
4
4
|
amount: null,
|