@burdenoff/microfe-billing 2026.531.1 → 2026.531.2
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/billing/modules/addons/pages/AddonsBrowsePage.js +391 -190
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.js.map +1 -1
- package/dist/billing/modules/billing/pages/InvoicesListPage.js +7 -1
- package/dist/billing/modules/billing/pages/InvoicesListPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/TransactionsPage.js +1 -1
- package/dist/billing/modules/billing/pages/TransactionsPage.js.map +1 -1
- package/dist/billing/modules/checkout/components/CompleteBillingAccountModal.js +261 -0
- package/dist/billing/modules/checkout/components/CompleteBillingAccountModal.js.map +1 -0
- package/dist/billing/modules/checkout/components/index.js +1 -0
- package/dist/billing/modules/checkout/index.js +1 -0
- package/dist/billing/modules/checkout/pages/CheckoutPage.js +354 -340
- package/dist/billing/modules/checkout/pages/CheckoutPage.js.map +1 -1
- package/dist/generated/global-operations.js +3 -0
- package/dist/generated/global-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,11 +7,28 @@ import { useAddons as s } from "../hooks/useAddons.js";
|
|
|
7
7
|
import "../hooks/index.js";
|
|
8
8
|
import { useDefaultBillingCurrency as c } from "../../../hooks/useDefaultBillingCurrency.js";
|
|
9
9
|
import { useMemo as l, useState as u } from "react";
|
|
10
|
-
import { Minus as d,
|
|
11
|
-
import { Fragment as
|
|
12
|
-
import { useI18n as
|
|
10
|
+
import { Minus as d, Package as f, Plus as p, ShoppingCart as m, Trash2 as h, X as g } from "lucide-react";
|
|
11
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
12
|
+
import { useI18n as b } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
13
13
|
//#region src/billing/modules/addons/pages/AddonsBrowsePage.tsx
|
|
14
|
-
function
|
|
14
|
+
function x(e) {
|
|
15
|
+
let t = /* @__PURE__ */ new Map();
|
|
16
|
+
for (let n of e) {
|
|
17
|
+
let e = n.name.indexOf(" — "), r = e === -1 ? n.name : n.name.slice(0, e).trim(), i = t.get(r) ?? [];
|
|
18
|
+
i.push(n), t.set(r, i);
|
|
19
|
+
}
|
|
20
|
+
let n = [];
|
|
21
|
+
for (let [e, r] of t) r.length > 1 ? n.push({
|
|
22
|
+
type: "group",
|
|
23
|
+
name: e,
|
|
24
|
+
addons: r
|
|
25
|
+
}) : n.push({
|
|
26
|
+
type: "standalone",
|
|
27
|
+
addon: r[0]
|
|
28
|
+
});
|
|
29
|
+
return n;
|
|
30
|
+
}
|
|
31
|
+
function S(e) {
|
|
15
32
|
let t = /* @__PURE__ */ new Map();
|
|
16
33
|
for (let n of e) {
|
|
17
34
|
if (!n.quota) continue;
|
|
@@ -24,7 +41,7 @@ function b(e) {
|
|
|
24
41
|
}
|
|
25
42
|
return Array.from(t.values());
|
|
26
43
|
}
|
|
27
|
-
function
|
|
44
|
+
function C(e, t = "USD") {
|
|
28
45
|
if (e.currencyPrices && typeof e.currencyPrices == "object") {
|
|
29
46
|
let n = e.currencyPrices;
|
|
30
47
|
if (n[t] !== void 0 && n[t] !== null) return {
|
|
@@ -37,113 +54,113 @@ function x(e, t = "USD") {
|
|
|
37
54
|
currency: e.currency || "USD"
|
|
38
55
|
};
|
|
39
56
|
}
|
|
40
|
-
var
|
|
41
|
-
let { t } =
|
|
57
|
+
var w = () => {
|
|
58
|
+
let { t } = b(), n = (e, n) => {
|
|
42
59
|
let r = t(e);
|
|
43
60
|
return r === e ? n : r;
|
|
44
|
-
}, r = o(), { productId: i } = e(), { addons:
|
|
61
|
+
}, r = o(), { productId: i } = e(), { addons: d, isLoading: f, error: p, refetch: m } = s({
|
|
45
62
|
includeFree: !1,
|
|
46
63
|
productId: i ?? void 0
|
|
47
|
-
}), { addToCart:
|
|
48
|
-
return
|
|
64
|
+
}), { addToCart: h, removeFromCart: g, updateQuantity: _, isInCart: S, getCartItem: C } = a(), [w, k] = u("grid"), [A, j] = u("all"), M = c(), N = d.filter((e) => !(!e.isActive || A !== "all" && e.duration !== A)), P = l(() => x(N), [N]);
|
|
65
|
+
return f && d.length === 0 ? /* @__PURE__ */ y("div", {
|
|
49
66
|
className: "space-y-6 p-6",
|
|
50
|
-
children: [/* @__PURE__ */
|
|
67
|
+
children: [/* @__PURE__ */ v("div", { className: "h-8 w-48 bg-muted animate-pulse rounded" }), /* @__PURE__ */ v("div", {
|
|
51
68
|
className: "grid grid-cols-1 md:grid-cols-3 gap-6",
|
|
52
69
|
children: [
|
|
53
70
|
1,
|
|
54
71
|
2,
|
|
55
72
|
3
|
|
56
|
-
].map((e) => /* @__PURE__ */
|
|
73
|
+
].map((e) => /* @__PURE__ */ y("div", {
|
|
57
74
|
className: "border border-border rounded-lg p-6 space-y-4",
|
|
58
75
|
children: [
|
|
59
|
-
/* @__PURE__ */
|
|
60
|
-
/* @__PURE__ */
|
|
61
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ v("div", { className: "h-6 w-24 bg-muted animate-pulse rounded" }),
|
|
77
|
+
/* @__PURE__ */ v("div", { className: "h-8 w-32 bg-muted animate-pulse rounded" }),
|
|
78
|
+
/* @__PURE__ */ v("div", {
|
|
62
79
|
className: "space-y-2",
|
|
63
80
|
children: [
|
|
64
81
|
1,
|
|
65
82
|
2,
|
|
66
83
|
3
|
|
67
|
-
].map((e) => /* @__PURE__ */
|
|
84
|
+
].map((e) => /* @__PURE__ */ v("div", { className: "h-4 w-full bg-muted animate-pulse rounded" }, e))
|
|
68
85
|
})
|
|
69
86
|
]
|
|
70
87
|
}, e))
|
|
71
88
|
})]
|
|
72
|
-
}) :
|
|
89
|
+
}) : p ? /* @__PURE__ */ v("div", {
|
|
73
90
|
className: "flex items-center justify-center h-full min-h-[400px]",
|
|
74
|
-
children: /* @__PURE__ */
|
|
91
|
+
children: /* @__PURE__ */ y("div", {
|
|
75
92
|
className: "text-center space-y-4",
|
|
76
93
|
children: [
|
|
77
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ v("h2", {
|
|
78
95
|
className: "text-lg font-semibold text-foreground",
|
|
79
96
|
children: n("billing.addons.failedToLoad", "Failed to load addons")
|
|
80
97
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
98
|
+
/* @__PURE__ */ v("p", {
|
|
82
99
|
className: "text-sm text-muted-foreground",
|
|
83
|
-
children:
|
|
100
|
+
children: p.message
|
|
84
101
|
}),
|
|
85
|
-
/* @__PURE__ */
|
|
102
|
+
/* @__PURE__ */ v("button", {
|
|
86
103
|
type: "button",
|
|
87
|
-
onClick: () =>
|
|
104
|
+
onClick: () => m(),
|
|
88
105
|
className: "px-4 py-2 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors",
|
|
89
106
|
children: "Try Again"
|
|
90
107
|
})
|
|
91
108
|
]
|
|
92
109
|
})
|
|
93
|
-
}) : /* @__PURE__ */
|
|
110
|
+
}) : /* @__PURE__ */ y("div", {
|
|
94
111
|
className: "space-y-6 p-6",
|
|
95
112
|
children: [
|
|
96
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
|
|
97
114
|
className: "text-2xl font-bold text-foreground",
|
|
98
115
|
children: n("billing.addons.title", "Addons")
|
|
99
|
-
}), /* @__PURE__ */
|
|
116
|
+
}), /* @__PURE__ */ v("p", {
|
|
100
117
|
className: "text-sm text-muted-foreground mt-1",
|
|
101
118
|
children: n("billing.addons.subtitle", "Enhance your subscription with additional features")
|
|
102
119
|
})] }),
|
|
103
|
-
/* @__PURE__ */
|
|
120
|
+
/* @__PURE__ */ y("div", {
|
|
104
121
|
className: "flex flex-wrap items-center gap-4 pb-4 border-b border-border",
|
|
105
|
-
children: [/* @__PURE__ */
|
|
122
|
+
children: [/* @__PURE__ */ v("div", {
|
|
106
123
|
className: "inline-flex rounded-lg border border-border p-1 bg-muted/50",
|
|
107
124
|
children: [
|
|
108
125
|
"all",
|
|
109
126
|
"monthly",
|
|
110
127
|
"yearly"
|
|
111
|
-
].map((e) => /* @__PURE__ */
|
|
128
|
+
].map((e) => /* @__PURE__ */ v("button", {
|
|
112
129
|
type: "button",
|
|
113
|
-
onClick: () =>
|
|
114
|
-
className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${
|
|
130
|
+
onClick: () => j(e),
|
|
131
|
+
className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${A === e ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
115
132
|
children: e === "all" ? "All" : e === "monthly" ? "Monthly" : "Yearly"
|
|
116
133
|
}, e))
|
|
117
|
-
}), /* @__PURE__ */
|
|
134
|
+
}), /* @__PURE__ */ y("div", {
|
|
118
135
|
className: "ml-auto inline-flex rounded-lg border border-border p-1 bg-muted/50",
|
|
119
|
-
children: [/* @__PURE__ */
|
|
136
|
+
children: [/* @__PURE__ */ v("button", {
|
|
120
137
|
type: "button",
|
|
121
|
-
onClick: () =>
|
|
122
|
-
className: `p-1.5 rounded-md transition-colors ${
|
|
138
|
+
onClick: () => k("grid"),
|
|
139
|
+
className: `p-1.5 rounded-md transition-colors ${w === "grid" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
123
140
|
title: "Grid view",
|
|
124
|
-
children: /* @__PURE__ */
|
|
141
|
+
children: /* @__PURE__ */ v("svg", {
|
|
125
142
|
className: "size-4",
|
|
126
143
|
fill: "none",
|
|
127
144
|
viewBox: "0 0 24 24",
|
|
128
145
|
stroke: "currentColor",
|
|
129
|
-
children: /* @__PURE__ */
|
|
146
|
+
children: /* @__PURE__ */ v("path", {
|
|
130
147
|
strokeLinecap: "round",
|
|
131
148
|
strokeLinejoin: "round",
|
|
132
149
|
strokeWidth: 2,
|
|
133
150
|
d: "M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"
|
|
134
151
|
})
|
|
135
152
|
})
|
|
136
|
-
}), /* @__PURE__ */
|
|
153
|
+
}), /* @__PURE__ */ v("button", {
|
|
137
154
|
type: "button",
|
|
138
|
-
onClick: () =>
|
|
139
|
-
className: `p-1.5 rounded-md transition-colors ${
|
|
155
|
+
onClick: () => k("list"),
|
|
156
|
+
className: `p-1.5 rounded-md transition-colors ${w === "list" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
140
157
|
title: "List view",
|
|
141
|
-
children: /* @__PURE__ */
|
|
158
|
+
children: /* @__PURE__ */ v("svg", {
|
|
142
159
|
className: "size-4",
|
|
143
160
|
fill: "none",
|
|
144
161
|
viewBox: "0 0 24 24",
|
|
145
162
|
stroke: "currentColor",
|
|
146
|
-
children: /* @__PURE__ */
|
|
163
|
+
children: /* @__PURE__ */ v("path", {
|
|
147
164
|
strokeLinecap: "round",
|
|
148
165
|
strokeLinejoin: "round",
|
|
149
166
|
strokeWidth: 2,
|
|
@@ -153,17 +170,17 @@ var S = () => {
|
|
|
153
170
|
})]
|
|
154
171
|
})]
|
|
155
172
|
}),
|
|
156
|
-
|
|
173
|
+
N.length === 0 ? /* @__PURE__ */ y("div", {
|
|
157
174
|
className: "flex flex-col items-center justify-center py-12 border border-dashed border-border rounded-lg",
|
|
158
175
|
children: [
|
|
159
|
-
/* @__PURE__ */
|
|
176
|
+
/* @__PURE__ */ v("div", {
|
|
160
177
|
className: "size-12 rounded-full bg-muted flex items-center justify-center mb-4",
|
|
161
|
-
children: /* @__PURE__ */
|
|
178
|
+
children: /* @__PURE__ */ v("svg", {
|
|
162
179
|
className: "size-6 text-muted-foreground",
|
|
163
180
|
fill: "none",
|
|
164
181
|
viewBox: "0 0 24 24",
|
|
165
182
|
stroke: "currentColor",
|
|
166
|
-
children: /* @__PURE__ */
|
|
183
|
+
children: /* @__PURE__ */ v("path", {
|
|
167
184
|
strokeLinecap: "round",
|
|
168
185
|
strokeLinejoin: "round",
|
|
169
186
|
strokeWidth: 2,
|
|
@@ -171,55 +188,239 @@ var S = () => {
|
|
|
171
188
|
})
|
|
172
189
|
})
|
|
173
190
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ v("h3", {
|
|
175
192
|
className: "text-lg font-medium text-foreground",
|
|
176
193
|
children: n("billing.addons.noAddonsAvailable", "No addons available")
|
|
177
194
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
195
|
+
/* @__PURE__ */ v("p", {
|
|
179
196
|
className: "text-sm text-muted-foreground mt-1",
|
|
180
197
|
children: n("billing.addons.checkBackLater", "Check back later for new addons.")
|
|
181
198
|
})
|
|
182
199
|
]
|
|
183
|
-
}) :
|
|
184
|
-
className: "
|
|
185
|
-
children:
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
displayCurrency:
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
onRemoveFromCart: h,
|
|
210
|
-
displayCurrency: k
|
|
211
|
-
}, e.id);
|
|
200
|
+
}) : /* @__PURE__ */ v("div", {
|
|
201
|
+
className: "space-y-8",
|
|
202
|
+
children: P.map((e) => {
|
|
203
|
+
if (e.type === "group") return /* @__PURE__ */ v(T, {
|
|
204
|
+
groupName: e.name,
|
|
205
|
+
addons: e.addons,
|
|
206
|
+
viewMode: w,
|
|
207
|
+
getCartItem: C,
|
|
208
|
+
isInCart: S,
|
|
209
|
+
addToCart: h,
|
|
210
|
+
updateQuantity: _,
|
|
211
|
+
removeFromCart: g,
|
|
212
|
+
displayCurrency: M,
|
|
213
|
+
navigateTo: r
|
|
214
|
+
}, e.name);
|
|
215
|
+
let t = e.addon, n = C(t.id);
|
|
216
|
+
return v(w === "grid" ? E : D, {
|
|
217
|
+
addon: t,
|
|
218
|
+
onView: () => r(`/addons/${t.id}`),
|
|
219
|
+
isInCart: S(t.id),
|
|
220
|
+
cartQuantity: n?.quantity || 0,
|
|
221
|
+
onAddToCart: h,
|
|
222
|
+
onUpdateQuantity: _,
|
|
223
|
+
onRemoveFromCart: g,
|
|
224
|
+
displayCurrency: M
|
|
225
|
+
}, t.id);
|
|
212
226
|
})
|
|
213
227
|
}),
|
|
214
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ v(O, { displayCurrency: M })
|
|
215
229
|
]
|
|
216
230
|
});
|
|
217
|
-
},
|
|
218
|
-
let
|
|
219
|
-
return /* @__PURE__ */
|
|
231
|
+
}, T = ({ groupName: e, addons: i, viewMode: a, getCartItem: o, isInCart: s, addToCart: c, updateQuantity: l, removeFromCart: u, displayCurrency: g, navigateTo: _ }) => {
|
|
232
|
+
let b = i.filter((e) => s(e.id)).length;
|
|
233
|
+
return /* @__PURE__ */ y("div", {
|
|
234
|
+
className: "border border-border rounded-xl overflow-hidden",
|
|
235
|
+
children: [/* @__PURE__ */ y("div", {
|
|
236
|
+
className: "flex items-center justify-between px-5 py-3 bg-muted/40 border-b border-border",
|
|
237
|
+
children: [/* @__PURE__ */ y("div", {
|
|
238
|
+
className: "flex items-center gap-2",
|
|
239
|
+
children: [
|
|
240
|
+
/* @__PURE__ */ v(f, { className: "size-4 text-muted-foreground" }),
|
|
241
|
+
/* @__PURE__ */ v("h2", {
|
|
242
|
+
className: "font-semibold text-foreground",
|
|
243
|
+
children: e
|
|
244
|
+
}),
|
|
245
|
+
/* @__PURE__ */ y("span", {
|
|
246
|
+
className: "text-xs text-muted-foreground",
|
|
247
|
+
children: [
|
|
248
|
+
i.length,
|
|
249
|
+
" option",
|
|
250
|
+
i.length === 1 ? "" : "s"
|
|
251
|
+
]
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
}), b > 0 && /* @__PURE__ */ y("span", {
|
|
255
|
+
className: "text-xs font-medium px-2 py-0.5 bg-primary text-primary-foreground rounded-full",
|
|
256
|
+
children: [b, " in cart"]
|
|
257
|
+
})]
|
|
258
|
+
}), a === "grid" ? /* @__PURE__ */ v("div", {
|
|
259
|
+
className: "p-4 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",
|
|
260
|
+
children: i.map((e) => {
|
|
261
|
+
let i = o(e.id), a = e.name.includes(" — ") ? e.name.slice(e.name.indexOf(" — ") + 3).trim() : e.name, f = s(e.id), b = i?.quantity ?? 0, { price: x, currency: S } = (() => {
|
|
262
|
+
if (e.currencyPrices && typeof e.currencyPrices == "object") {
|
|
263
|
+
let t = e.currencyPrices;
|
|
264
|
+
if (t[g] != null) return {
|
|
265
|
+
price: t[g],
|
|
266
|
+
currency: g
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
price: e.price,
|
|
271
|
+
currency: e.currency || "USD"
|
|
272
|
+
};
|
|
273
|
+
})();
|
|
274
|
+
return /* @__PURE__ */ y("div", {
|
|
275
|
+
className: `relative flex flex-col rounded-lg border p-4 transition-all ${f ? "border-primary bg-primary/5" : "border-border bg-card hover:border-primary/40 hover:shadow-sm"}`,
|
|
276
|
+
children: [
|
|
277
|
+
f && /* @__PURE__ */ y("span", {
|
|
278
|
+
className: "absolute top-2 right-2 text-xs font-medium bg-primary text-primary-foreground px-1.5 py-0.5 rounded",
|
|
279
|
+
children: ["×", b]
|
|
280
|
+
}),
|
|
281
|
+
/* @__PURE__ */ v("p", {
|
|
282
|
+
className: "font-semibold text-foreground text-sm mb-1",
|
|
283
|
+
children: a
|
|
284
|
+
}),
|
|
285
|
+
/* @__PURE__ */ v("p", {
|
|
286
|
+
className: "text-xs text-muted-foreground mb-3",
|
|
287
|
+
children: r(e.duration)
|
|
288
|
+
}),
|
|
289
|
+
/* @__PURE__ */ y("p", {
|
|
290
|
+
className: "text-lg font-bold text-foreground mb-3",
|
|
291
|
+
children: [t(x, S), /* @__PURE__ */ y("span", {
|
|
292
|
+
className: "text-xs font-normal text-muted-foreground ml-1",
|
|
293
|
+
children: ["/ ", n(e.duration)]
|
|
294
|
+
})]
|
|
295
|
+
}),
|
|
296
|
+
/* @__PURE__ */ y("div", {
|
|
297
|
+
className: "mt-auto flex flex-col gap-2",
|
|
298
|
+
children: [f ? /* @__PURE__ */ y("div", {
|
|
299
|
+
className: "flex items-center gap-1",
|
|
300
|
+
children: [
|
|
301
|
+
/* @__PURE__ */ v("button", {
|
|
302
|
+
type: "button",
|
|
303
|
+
onClick: () => l(e.id, b - 1),
|
|
304
|
+
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
305
|
+
children: /* @__PURE__ */ v(d, { className: "size-3" })
|
|
306
|
+
}),
|
|
307
|
+
/* @__PURE__ */ v("span", {
|
|
308
|
+
className: "flex-1 text-center text-sm font-medium",
|
|
309
|
+
children: b
|
|
310
|
+
}),
|
|
311
|
+
/* @__PURE__ */ v("button", {
|
|
312
|
+
type: "button",
|
|
313
|
+
onClick: () => l(e.id, b + 1),
|
|
314
|
+
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
315
|
+
children: /* @__PURE__ */ v(p, { className: "size-3" })
|
|
316
|
+
}),
|
|
317
|
+
/* @__PURE__ */ v("button", {
|
|
318
|
+
type: "button",
|
|
319
|
+
onClick: () => u(e.id),
|
|
320
|
+
className: "p-1 rounded text-destructive hover:bg-destructive/10 transition-colors",
|
|
321
|
+
children: /* @__PURE__ */ v(h, { className: "size-3" })
|
|
322
|
+
})
|
|
323
|
+
]
|
|
324
|
+
}) : /* @__PURE__ */ y("button", {
|
|
325
|
+
type: "button",
|
|
326
|
+
onClick: () => c(e),
|
|
327
|
+
className: "w-full py-1.5 text-xs font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors flex items-center justify-center gap-1",
|
|
328
|
+
children: [/* @__PURE__ */ v(m, { className: "size-3" }), "Add to Cart"]
|
|
329
|
+
}), /* @__PURE__ */ v("button", {
|
|
330
|
+
type: "button",
|
|
331
|
+
onClick: () => _(`/addons/${e.id}`),
|
|
332
|
+
className: "w-full py-1.5 text-xs font-medium border border-border text-foreground rounded-md hover:bg-muted transition-colors",
|
|
333
|
+
children: "Details"
|
|
334
|
+
})]
|
|
335
|
+
})
|
|
336
|
+
]
|
|
337
|
+
}, e.id);
|
|
338
|
+
})
|
|
339
|
+
}) : /* @__PURE__ */ v("div", {
|
|
340
|
+
className: "divide-y divide-border",
|
|
341
|
+
children: i.map((e) => {
|
|
342
|
+
let i = o(e.id), a = e.name.includes(" — ") ? e.name.slice(e.name.indexOf(" — ") + 3).trim() : e.name, f = s(e.id), b = i?.quantity ?? 0, { price: x, currency: S } = (() => {
|
|
343
|
+
if (e.currencyPrices && typeof e.currencyPrices == "object") {
|
|
344
|
+
let t = e.currencyPrices;
|
|
345
|
+
if (t[g] != null) return {
|
|
346
|
+
price: t[g],
|
|
347
|
+
currency: g
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
price: e.price,
|
|
352
|
+
currency: e.currency || "USD"
|
|
353
|
+
};
|
|
354
|
+
})();
|
|
355
|
+
return /* @__PURE__ */ y("div", {
|
|
356
|
+
className: `flex items-center gap-4 px-5 py-3 transition-colors ${f ? "bg-primary/5" : "hover:bg-muted/30"}`,
|
|
357
|
+
children: [
|
|
358
|
+
/* @__PURE__ */ y("div", {
|
|
359
|
+
className: "flex-1 min-w-0",
|
|
360
|
+
children: [/* @__PURE__ */ v("p", {
|
|
361
|
+
className: "font-medium text-foreground text-sm",
|
|
362
|
+
children: a
|
|
363
|
+
}), /* @__PURE__ */ v("p", {
|
|
364
|
+
className: "text-xs text-muted-foreground",
|
|
365
|
+
children: r(e.duration)
|
|
366
|
+
})]
|
|
367
|
+
}),
|
|
368
|
+
/* @__PURE__ */ y("p", {
|
|
369
|
+
className: "font-semibold text-foreground text-sm whitespace-nowrap",
|
|
370
|
+
children: [t(x, S), /* @__PURE__ */ y("span", {
|
|
371
|
+
className: "text-xs font-normal text-muted-foreground ml-1",
|
|
372
|
+
children: ["/ ", n(e.duration)]
|
|
373
|
+
})]
|
|
374
|
+
}),
|
|
375
|
+
f ? /* @__PURE__ */ y("div", {
|
|
376
|
+
className: "flex items-center gap-1",
|
|
377
|
+
children: [
|
|
378
|
+
/* @__PURE__ */ v("button", {
|
|
379
|
+
type: "button",
|
|
380
|
+
onClick: () => l(e.id, b - 1),
|
|
381
|
+
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
382
|
+
children: /* @__PURE__ */ v(d, { className: "size-3" })
|
|
383
|
+
}),
|
|
384
|
+
/* @__PURE__ */ v("span", {
|
|
385
|
+
className: "w-6 text-center text-sm font-medium",
|
|
386
|
+
children: b
|
|
387
|
+
}),
|
|
388
|
+
/* @__PURE__ */ v("button", {
|
|
389
|
+
type: "button",
|
|
390
|
+
onClick: () => l(e.id, b + 1),
|
|
391
|
+
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
392
|
+
children: /* @__PURE__ */ v(p, { className: "size-3" })
|
|
393
|
+
}),
|
|
394
|
+
/* @__PURE__ */ v("button", {
|
|
395
|
+
type: "button",
|
|
396
|
+
onClick: () => u(e.id),
|
|
397
|
+
className: "p-1 rounded text-destructive hover:bg-destructive/10 transition-colors",
|
|
398
|
+
children: /* @__PURE__ */ v(h, { className: "size-3" })
|
|
399
|
+
})
|
|
400
|
+
]
|
|
401
|
+
}) : /* @__PURE__ */ y("button", {
|
|
402
|
+
type: "button",
|
|
403
|
+
onClick: () => c(e),
|
|
404
|
+
className: "px-2 py-1 text-xs font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors flex items-center gap-1",
|
|
405
|
+
children: [/* @__PURE__ */ v(m, { className: "size-3" }), "Add"]
|
|
406
|
+
}),
|
|
407
|
+
/* @__PURE__ */ v("button", {
|
|
408
|
+
type: "button",
|
|
409
|
+
onClick: () => _(`/addons/${e.id}`),
|
|
410
|
+
className: "px-2 py-1 text-xs font-medium border border-border text-foreground rounded-md hover:bg-muted transition-colors",
|
|
411
|
+
children: "Details"
|
|
412
|
+
})
|
|
413
|
+
]
|
|
414
|
+
}, e.id);
|
|
415
|
+
})
|
|
416
|
+
})]
|
|
417
|
+
});
|
|
418
|
+
}, E = ({ addon: e, onView: i, isInCart: a, cartQuantity: o, onAddToCart: s, onUpdateQuantity: c, onRemoveFromCart: u, displayCurrency: f }) => {
|
|
419
|
+
let g = l(() => S(e.features || []), [e.features]);
|
|
420
|
+
return /* @__PURE__ */ y("div", {
|
|
220
421
|
className: `relative border rounded-lg p-6 transition-all hover:shadow-md flex flex-col h-full ${a ? "border-primary bg-primary/5" : "border-border bg-card"}`,
|
|
221
422
|
children: [
|
|
222
|
-
a && /* @__PURE__ */
|
|
423
|
+
a && /* @__PURE__ */ y("span", {
|
|
223
424
|
className: "absolute top-4 right-4 px-2 py-1 text-xs font-medium bg-primary text-primary-foreground rounded",
|
|
224
425
|
children: [
|
|
225
426
|
"In Cart (",
|
|
@@ -227,14 +428,14 @@ var S = () => {
|
|
|
227
428
|
")"
|
|
228
429
|
]
|
|
229
430
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
431
|
+
/* @__PURE__ */ v("div", {
|
|
231
432
|
className: "size-10 rounded-lg bg-primary/10 flex items-center justify-center mb-4",
|
|
232
|
-
children: /* @__PURE__ */
|
|
433
|
+
children: /* @__PURE__ */ v("svg", {
|
|
233
434
|
className: "size-5 text-primary",
|
|
234
435
|
fill: "none",
|
|
235
436
|
viewBox: "0 0 24 24",
|
|
236
437
|
stroke: "currentColor",
|
|
237
|
-
children: /* @__PURE__ */
|
|
438
|
+
children: /* @__PURE__ */ v("path", {
|
|
238
439
|
strokeLinecap: "round",
|
|
239
440
|
strokeLinejoin: "round",
|
|
240
441
|
strokeWidth: 2,
|
|
@@ -242,55 +443,55 @@ var S = () => {
|
|
|
242
443
|
})
|
|
243
444
|
})
|
|
244
445
|
}),
|
|
245
|
-
/* @__PURE__ */
|
|
446
|
+
/* @__PURE__ */ y("div", {
|
|
246
447
|
className: "mb-4",
|
|
247
|
-
children: [/* @__PURE__ */
|
|
448
|
+
children: [/* @__PURE__ */ v("h3", {
|
|
248
449
|
className: "text-lg font-bold text-foreground",
|
|
249
450
|
children: e.name
|
|
250
|
-
}), /* @__PURE__ */
|
|
451
|
+
}), /* @__PURE__ */ v("span", {
|
|
251
452
|
className: "text-sm text-muted-foreground",
|
|
252
453
|
children: r(e.duration)
|
|
253
454
|
})]
|
|
254
455
|
}),
|
|
255
|
-
/* @__PURE__ */
|
|
456
|
+
/* @__PURE__ */ y("div", {
|
|
256
457
|
className: "flex items-baseline gap-1 mb-4",
|
|
257
|
-
children: [/* @__PURE__ */
|
|
458
|
+
children: [/* @__PURE__ */ v("span", {
|
|
258
459
|
className: "text-2xl font-bold text-foreground",
|
|
259
460
|
children: (() => {
|
|
260
|
-
let { price: n, currency: r } =
|
|
461
|
+
let { price: n, currency: r } = C(e, f);
|
|
261
462
|
return t(n, r);
|
|
262
463
|
})()
|
|
263
|
-
}), /* @__PURE__ */
|
|
464
|
+
}), /* @__PURE__ */ y("span", {
|
|
264
465
|
className: "text-muted-foreground text-sm",
|
|
265
466
|
children: ["/ ", n(e.duration)]
|
|
266
467
|
})]
|
|
267
468
|
}),
|
|
268
|
-
g.length > 0 && /* @__PURE__ */
|
|
469
|
+
g.length > 0 && /* @__PURE__ */ y("ul", {
|
|
269
470
|
className: "space-y-2 mb-4",
|
|
270
|
-
children: [g.slice(0, 4).map((e) => /* @__PURE__ */
|
|
471
|
+
children: [g.slice(0, 4).map((e) => /* @__PURE__ */ y("li", {
|
|
271
472
|
className: "flex items-center justify-between text-sm",
|
|
272
|
-
children: [/* @__PURE__ */
|
|
473
|
+
children: [/* @__PURE__ */ y("div", {
|
|
273
474
|
className: "flex items-center gap-2",
|
|
274
|
-
children: [/* @__PURE__ */
|
|
475
|
+
children: [/* @__PURE__ */ v("svg", {
|
|
275
476
|
className: "size-4 text-status-success-text shrink-0",
|
|
276
477
|
fill: "none",
|
|
277
478
|
viewBox: "0 0 24 24",
|
|
278
479
|
stroke: "currentColor",
|
|
279
|
-
children: /* @__PURE__ */
|
|
480
|
+
children: /* @__PURE__ */ v("path", {
|
|
280
481
|
strokeLinecap: "round",
|
|
281
482
|
strokeLinejoin: "round",
|
|
282
483
|
strokeWidth: 2,
|
|
283
484
|
d: "M5 13l4 4L19 7"
|
|
284
485
|
})
|
|
285
|
-
}), /* @__PURE__ */
|
|
486
|
+
}), /* @__PURE__ */ v("span", {
|
|
286
487
|
className: "text-foreground",
|
|
287
488
|
children: e.name
|
|
288
489
|
})]
|
|
289
|
-
}), /* @__PURE__ */
|
|
490
|
+
}), /* @__PURE__ */ v("span", {
|
|
290
491
|
className: "font-medium text-foreground",
|
|
291
492
|
children: e.totalValue.toLocaleString()
|
|
292
493
|
})]
|
|
293
|
-
}, e.quotaId)), g.length > 4 && /* @__PURE__ */
|
|
494
|
+
}, e.quotaId)), g.length > 4 && /* @__PURE__ */ y("li", {
|
|
294
495
|
className: "text-sm text-muted-foreground pl-6",
|
|
295
496
|
children: [
|
|
296
497
|
"+",
|
|
@@ -299,43 +500,43 @@ var S = () => {
|
|
|
299
500
|
]
|
|
300
501
|
})]
|
|
301
502
|
}),
|
|
302
|
-
/* @__PURE__ */
|
|
503
|
+
/* @__PURE__ */ y("div", {
|
|
303
504
|
className: "space-y-2 pt-4 border-t border-border mt-auto",
|
|
304
|
-
children: [a ? /* @__PURE__ */
|
|
505
|
+
children: [a ? /* @__PURE__ */ y("div", {
|
|
305
506
|
className: "flex items-center justify-between gap-2",
|
|
306
|
-
children: [/* @__PURE__ */
|
|
507
|
+
children: [/* @__PURE__ */ y("div", {
|
|
307
508
|
className: "flex items-center gap-1",
|
|
308
509
|
children: [
|
|
309
|
-
/* @__PURE__ */
|
|
510
|
+
/* @__PURE__ */ v("button", {
|
|
310
511
|
type: "button",
|
|
311
512
|
onClick: () => c(e.id, o - 1),
|
|
312
513
|
className: "p-1.5 rounded border border-border hover:bg-muted transition-colors",
|
|
313
|
-
children: /* @__PURE__ */
|
|
514
|
+
children: /* @__PURE__ */ v(d, { className: "size-4" })
|
|
314
515
|
}),
|
|
315
|
-
/* @__PURE__ */
|
|
516
|
+
/* @__PURE__ */ v("span", {
|
|
316
517
|
className: "w-10 text-center font-medium",
|
|
317
518
|
children: o
|
|
318
519
|
}),
|
|
319
|
-
/* @__PURE__ */
|
|
520
|
+
/* @__PURE__ */ v("button", {
|
|
320
521
|
type: "button",
|
|
321
522
|
onClick: () => c(e.id, o + 1),
|
|
322
523
|
className: "p-1.5 rounded border border-border hover:bg-muted transition-colors",
|
|
323
|
-
children: /* @__PURE__ */
|
|
524
|
+
children: /* @__PURE__ */ v(p, { className: "size-4" })
|
|
324
525
|
})
|
|
325
526
|
]
|
|
326
|
-
}), /* @__PURE__ */
|
|
527
|
+
}), /* @__PURE__ */ v("button", {
|
|
327
528
|
type: "button",
|
|
328
529
|
onClick: () => u(e.id),
|
|
329
530
|
className: "p-1.5 rounded text-destructive hover:bg-destructive/10 transition-colors",
|
|
330
531
|
title: "Remove from cart",
|
|
331
|
-
children: /* @__PURE__ */
|
|
532
|
+
children: /* @__PURE__ */ v(h, { className: "size-4" })
|
|
332
533
|
})]
|
|
333
|
-
}) : /* @__PURE__ */
|
|
534
|
+
}) : /* @__PURE__ */ y("button", {
|
|
334
535
|
type: "button",
|
|
335
536
|
onClick: () => s(e),
|
|
336
537
|
className: "w-full px-4 py-2 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors flex items-center justify-center gap-2",
|
|
337
|
-
children: [/* @__PURE__ */
|
|
338
|
-
}), /* @__PURE__ */
|
|
538
|
+
children: [/* @__PURE__ */ v(m, { className: "size-4" }), "Add to Cart"]
|
|
539
|
+
}), /* @__PURE__ */ v("button", {
|
|
339
540
|
type: "button",
|
|
340
541
|
onClick: i,
|
|
341
542
|
className: "w-full px-4 py-2 text-sm font-medium border border-border text-foreground rounded-md hover:bg-muted transition-colors",
|
|
@@ -344,19 +545,19 @@ var S = () => {
|
|
|
344
545
|
})
|
|
345
546
|
]
|
|
346
547
|
});
|
|
347
|
-
},
|
|
348
|
-
let
|
|
349
|
-
return /* @__PURE__ */
|
|
548
|
+
}, D = ({ addon: e, onView: r, isInCart: i, cartQuantity: a, onAddToCart: o, onUpdateQuantity: s, onRemoveFromCart: c, displayCurrency: u }) => {
|
|
549
|
+
let f = l(() => S(e.features || []), [e.features]);
|
|
550
|
+
return /* @__PURE__ */ y("div", {
|
|
350
551
|
className: `flex items-center gap-4 p-4 border rounded-lg transition-all hover:shadow-sm ${i ? "border-primary bg-primary/5" : "border-border bg-card"}`,
|
|
351
552
|
children: [
|
|
352
|
-
/* @__PURE__ */
|
|
553
|
+
/* @__PURE__ */ v("div", {
|
|
353
554
|
className: "size-10 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",
|
|
354
|
-
children: /* @__PURE__ */
|
|
555
|
+
children: /* @__PURE__ */ v("svg", {
|
|
355
556
|
className: "size-5 text-primary",
|
|
356
557
|
fill: "none",
|
|
357
558
|
viewBox: "0 0 24 24",
|
|
358
559
|
stroke: "currentColor",
|
|
359
|
-
children: /* @__PURE__ */
|
|
560
|
+
children: /* @__PURE__ */ v("path", {
|
|
360
561
|
strokeLinecap: "round",
|
|
361
562
|
strokeLinejoin: "round",
|
|
362
563
|
strokeWidth: 2,
|
|
@@ -364,14 +565,14 @@ var S = () => {
|
|
|
364
565
|
})
|
|
365
566
|
})
|
|
366
567
|
}),
|
|
367
|
-
/* @__PURE__ */
|
|
568
|
+
/* @__PURE__ */ y("div", {
|
|
368
569
|
className: "flex-1 min-w-0",
|
|
369
|
-
children: [/* @__PURE__ */
|
|
570
|
+
children: [/* @__PURE__ */ y("div", {
|
|
370
571
|
className: "flex items-center gap-2",
|
|
371
|
-
children: [/* @__PURE__ */
|
|
572
|
+
children: [/* @__PURE__ */ v("h3", {
|
|
372
573
|
className: "font-semibold text-foreground truncate",
|
|
373
574
|
children: e.name
|
|
374
|
-
}), i && /* @__PURE__ */
|
|
575
|
+
}), i && /* @__PURE__ */ y("span", {
|
|
375
576
|
className: "px-2 py-0.5 text-xs font-medium bg-primary text-primary-foreground rounded",
|
|
376
577
|
children: [
|
|
377
578
|
"In Cart (",
|
|
@@ -379,62 +580,62 @@ var S = () => {
|
|
|
379
580
|
")"
|
|
380
581
|
]
|
|
381
582
|
})]
|
|
382
|
-
}), /* @__PURE__ */
|
|
583
|
+
}), /* @__PURE__ */ y("p", {
|
|
383
584
|
className: "text-sm text-muted-foreground",
|
|
384
585
|
children: [
|
|
385
|
-
|
|
586
|
+
f.length,
|
|
386
587
|
" quota",
|
|
387
|
-
|
|
588
|
+
f.length === 1 ? "" : "s"
|
|
388
589
|
]
|
|
389
590
|
})]
|
|
390
591
|
}),
|
|
391
|
-
/* @__PURE__ */
|
|
592
|
+
/* @__PURE__ */ y("div", {
|
|
392
593
|
className: "text-right",
|
|
393
|
-
children: [/* @__PURE__ */
|
|
594
|
+
children: [/* @__PURE__ */ v("div", {
|
|
394
595
|
className: "font-semibold text-foreground",
|
|
395
596
|
children: (() => {
|
|
396
|
-
let { price: n, currency: r } =
|
|
597
|
+
let { price: n, currency: r } = C(e, u);
|
|
397
598
|
return t(n, r);
|
|
398
599
|
})()
|
|
399
|
-
}), /* @__PURE__ */
|
|
600
|
+
}), /* @__PURE__ */ y("div", {
|
|
400
601
|
className: "text-sm text-muted-foreground",
|
|
401
602
|
children: ["per ", n(e.duration)]
|
|
402
603
|
})]
|
|
403
604
|
}),
|
|
404
|
-
i ? /* @__PURE__ */
|
|
605
|
+
i ? /* @__PURE__ */ y("div", {
|
|
405
606
|
className: "flex items-center gap-1",
|
|
406
607
|
children: [
|
|
407
|
-
/* @__PURE__ */
|
|
608
|
+
/* @__PURE__ */ v("button", {
|
|
408
609
|
type: "button",
|
|
409
610
|
onClick: () => s(e.id, a - 1),
|
|
410
611
|
className: "p-1.5 rounded border border-border hover:bg-muted transition-colors",
|
|
411
|
-
children: /* @__PURE__ */
|
|
612
|
+
children: /* @__PURE__ */ v(d, { className: "size-4" })
|
|
412
613
|
}),
|
|
413
|
-
/* @__PURE__ */
|
|
614
|
+
/* @__PURE__ */ v("span", {
|
|
414
615
|
className: "w-8 text-center font-medium",
|
|
415
616
|
children: a
|
|
416
617
|
}),
|
|
417
|
-
/* @__PURE__ */
|
|
618
|
+
/* @__PURE__ */ v("button", {
|
|
418
619
|
type: "button",
|
|
419
620
|
onClick: () => s(e.id, a + 1),
|
|
420
621
|
className: "p-1.5 rounded border border-border hover:bg-muted transition-colors",
|
|
421
|
-
children: /* @__PURE__ */
|
|
622
|
+
children: /* @__PURE__ */ v(p, { className: "size-4" })
|
|
422
623
|
}),
|
|
423
|
-
/* @__PURE__ */
|
|
624
|
+
/* @__PURE__ */ v("button", {
|
|
424
625
|
type: "button",
|
|
425
626
|
onClick: () => c(e.id),
|
|
426
627
|
className: "p-1.5 rounded text-destructive hover:bg-destructive/10 transition-colors ml-1",
|
|
427
628
|
title: "Remove from cart",
|
|
428
|
-
children: /* @__PURE__ */
|
|
629
|
+
children: /* @__PURE__ */ v(h, { className: "size-4" })
|
|
429
630
|
})
|
|
430
631
|
]
|
|
431
|
-
}) : /* @__PURE__ */
|
|
632
|
+
}) : /* @__PURE__ */ y("button", {
|
|
432
633
|
type: "button",
|
|
433
634
|
onClick: () => o(e),
|
|
434
635
|
className: "px-3 py-1.5 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors flex items-center gap-1.5",
|
|
435
|
-
children: [/* @__PURE__ */
|
|
636
|
+
children: [/* @__PURE__ */ v(m, { className: "size-4" }), "Add"]
|
|
436
637
|
}),
|
|
437
|
-
/* @__PURE__ */
|
|
638
|
+
/* @__PURE__ */ v("button", {
|
|
438
639
|
type: "button",
|
|
439
640
|
onClick: r,
|
|
440
641
|
className: "px-3 py-1.5 text-sm font-medium border border-border text-foreground rounded-md hover:bg-muted transition-colors",
|
|
@@ -442,18 +643,18 @@ var S = () => {
|
|
|
442
643
|
})
|
|
443
644
|
]
|
|
444
645
|
});
|
|
445
|
-
},
|
|
446
|
-
let { t: r } =
|
|
646
|
+
}, O = ({ displayCurrency: e }) => {
|
|
647
|
+
let { t: r } = b(), i = (e, t) => {
|
|
447
648
|
let n = r(e);
|
|
448
649
|
return n === e ? t : n;
|
|
449
|
-
}, s = o(), { items: c, isCartOpen: l, toggleCart: u, closeCart:
|
|
450
|
-
return c.length === 0 && !l ? null : /* @__PURE__ */
|
|
650
|
+
}, s = o(), { items: c, isCartOpen: l, toggleCart: u, closeCart: f, removeFromCart: x, updateQuantity: S, clearCart: w } = a(), T = c.reduce((e, t) => e + t.quantity, 0);
|
|
651
|
+
return c.length === 0 && !l ? null : /* @__PURE__ */ y(_, { children: [!l && c.length > 0 && /* @__PURE__ */ y("button", {
|
|
451
652
|
type: "button",
|
|
452
653
|
onClick: u,
|
|
453
654
|
className: "fixed bottom-6 right-6 z-50 flex items-center gap-2 px-4 py-3 bg-primary text-primary-foreground rounded-full shadow-lg hover:bg-primary/90 transition-all",
|
|
454
655
|
children: [
|
|
455
|
-
/* @__PURE__ */
|
|
456
|
-
/* @__PURE__ */
|
|
656
|
+
/* @__PURE__ */ v(m, { className: "size-5" }),
|
|
657
|
+
/* @__PURE__ */ y("span", {
|
|
457
658
|
className: "font-medium",
|
|
458
659
|
children: [
|
|
459
660
|
T,
|
|
@@ -461,33 +662,33 @@ var S = () => {
|
|
|
461
662
|
T === 1 ? "" : "s"
|
|
462
663
|
]
|
|
463
664
|
}),
|
|
464
|
-
/* @__PURE__ */
|
|
665
|
+
/* @__PURE__ */ v("span", {
|
|
465
666
|
className: "px-2 py-0.5 bg-primary-foreground/20 rounded-full text-sm",
|
|
466
667
|
children: t(c.reduce((t, { addon: n, quantity: r }) => {
|
|
467
|
-
let { price: i } =
|
|
668
|
+
let { price: i } = C(n, e);
|
|
468
669
|
return t + i * r;
|
|
469
670
|
}, 0), e)
|
|
470
671
|
})
|
|
471
672
|
]
|
|
472
|
-
}), l && /* @__PURE__ */
|
|
673
|
+
}), l && /* @__PURE__ */ y("div", {
|
|
473
674
|
className: "fixed inset-0 z-50 flex items-end sm:items-center justify-center",
|
|
474
|
-
children: [/* @__PURE__ */
|
|
675
|
+
children: [/* @__PURE__ */ v("div", {
|
|
475
676
|
className: "absolute inset-0 bg-overlay-scrim",
|
|
476
|
-
onClick:
|
|
477
|
-
}), /* @__PURE__ */
|
|
677
|
+
onClick: f
|
|
678
|
+
}), /* @__PURE__ */ y("div", {
|
|
478
679
|
className: "relative w-full max-w-md max-h-[80vh] bg-card border border-border rounded-t-xl sm:rounded-xl shadow-xl overflow-hidden",
|
|
479
680
|
children: [
|
|
480
|
-
/* @__PURE__ */
|
|
681
|
+
/* @__PURE__ */ y("div", {
|
|
481
682
|
className: "flex items-center justify-between px-4 py-3 border-b border-border bg-muted/30",
|
|
482
|
-
children: [/* @__PURE__ */
|
|
683
|
+
children: [/* @__PURE__ */ y("div", {
|
|
483
684
|
className: "flex items-center gap-2",
|
|
484
685
|
children: [
|
|
485
|
-
/* @__PURE__ */
|
|
486
|
-
/* @__PURE__ */
|
|
686
|
+
/* @__PURE__ */ v(m, { className: "size-5 text-foreground" }),
|
|
687
|
+
/* @__PURE__ */ v("h3", {
|
|
487
688
|
className: "font-semibold text-foreground",
|
|
488
689
|
children: i("billing.addons.yourCart", "Your Cart")
|
|
489
690
|
}),
|
|
490
|
-
/* @__PURE__ */
|
|
691
|
+
/* @__PURE__ */ y("span", {
|
|
491
692
|
className: "px-2 py-0.5 text-xs bg-primary text-primary-foreground rounded-full",
|
|
492
693
|
children: [
|
|
493
694
|
T,
|
|
@@ -496,28 +697,28 @@ var S = () => {
|
|
|
496
697
|
]
|
|
497
698
|
})
|
|
498
699
|
]
|
|
499
|
-
}), /* @__PURE__ */
|
|
700
|
+
}), /* @__PURE__ */ v("button", {
|
|
500
701
|
type: "button",
|
|
501
|
-
onClick:
|
|
702
|
+
onClick: f,
|
|
502
703
|
className: "p-1.5 rounded hover:bg-muted transition-colors",
|
|
503
|
-
children: /* @__PURE__ */
|
|
704
|
+
children: /* @__PURE__ */ v(g, { className: "size-5" })
|
|
504
705
|
})]
|
|
505
706
|
}),
|
|
506
|
-
/* @__PURE__ */
|
|
707
|
+
/* @__PURE__ */ v("div", {
|
|
507
708
|
className: "overflow-y-auto max-h-[50vh] divide-y divide-border",
|
|
508
|
-
children: c.map(({ addon: r, quantity: i }) => /* @__PURE__ */
|
|
709
|
+
children: c.map(({ addon: r, quantity: i }) => /* @__PURE__ */ y("div", {
|
|
509
710
|
className: "p-4 flex items-center gap-3",
|
|
510
711
|
children: [
|
|
511
|
-
/* @__PURE__ */
|
|
712
|
+
/* @__PURE__ */ y("div", {
|
|
512
713
|
className: "flex-1 min-w-0",
|
|
513
|
-
children: [/* @__PURE__ */
|
|
714
|
+
children: [/* @__PURE__ */ v("h4", {
|
|
514
715
|
className: "font-medium text-foreground truncate",
|
|
515
716
|
children: r.name
|
|
516
|
-
}), /* @__PURE__ */
|
|
717
|
+
}), /* @__PURE__ */ y("p", {
|
|
517
718
|
className: "text-sm text-muted-foreground",
|
|
518
719
|
children: [
|
|
519
720
|
(() => {
|
|
520
|
-
let { price: n, currency: i } =
|
|
721
|
+
let { price: n, currency: i } = C(r, e);
|
|
521
722
|
return t(n, i);
|
|
522
723
|
})(),
|
|
523
724
|
" ",
|
|
@@ -526,68 +727,68 @@ var S = () => {
|
|
|
526
727
|
]
|
|
527
728
|
})]
|
|
528
729
|
}),
|
|
529
|
-
/* @__PURE__ */
|
|
730
|
+
/* @__PURE__ */ y("div", {
|
|
530
731
|
className: "flex items-center gap-1",
|
|
531
732
|
children: [
|
|
532
|
-
/* @__PURE__ */
|
|
733
|
+
/* @__PURE__ */ v("button", {
|
|
533
734
|
type: "button",
|
|
534
|
-
onClick: () =>
|
|
735
|
+
onClick: () => S(r.id, i - 1),
|
|
535
736
|
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
536
|
-
children: /* @__PURE__ */
|
|
737
|
+
children: /* @__PURE__ */ v(d, { className: "size-3" })
|
|
537
738
|
}),
|
|
538
|
-
/* @__PURE__ */
|
|
739
|
+
/* @__PURE__ */ v("span", {
|
|
539
740
|
className: "w-6 text-center text-sm font-medium",
|
|
540
741
|
children: i
|
|
541
742
|
}),
|
|
542
|
-
/* @__PURE__ */
|
|
743
|
+
/* @__PURE__ */ v("button", {
|
|
543
744
|
type: "button",
|
|
544
|
-
onClick: () =>
|
|
745
|
+
onClick: () => S(r.id, i + 1),
|
|
545
746
|
className: "p-1 rounded border border-border hover:bg-muted transition-colors",
|
|
546
|
-
children: /* @__PURE__ */
|
|
747
|
+
children: /* @__PURE__ */ v(p, { className: "size-3" })
|
|
547
748
|
})
|
|
548
749
|
]
|
|
549
750
|
}),
|
|
550
|
-
/* @__PURE__ */
|
|
751
|
+
/* @__PURE__ */ v("p", {
|
|
551
752
|
className: "font-medium text-foreground",
|
|
552
753
|
children: (() => {
|
|
553
|
-
let { price: n, currency: a } =
|
|
754
|
+
let { price: n, currency: a } = C(r, e);
|
|
554
755
|
return t(n * i, a);
|
|
555
756
|
})()
|
|
556
757
|
}),
|
|
557
|
-
/* @__PURE__ */
|
|
758
|
+
/* @__PURE__ */ v("button", {
|
|
558
759
|
type: "button",
|
|
559
|
-
onClick: () =>
|
|
760
|
+
onClick: () => x(r.id),
|
|
560
761
|
className: "p-1.5 rounded text-destructive hover:bg-destructive/10 transition-colors",
|
|
561
|
-
children: /* @__PURE__ */
|
|
762
|
+
children: /* @__PURE__ */ v(h, { className: "size-4" })
|
|
562
763
|
})
|
|
563
764
|
]
|
|
564
765
|
}, r.id))
|
|
565
766
|
}),
|
|
566
|
-
/* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ y("div", {
|
|
567
768
|
className: "border-t border-border p-4 space-y-3 bg-muted/20",
|
|
568
|
-
children: [/* @__PURE__ */
|
|
769
|
+
children: [/* @__PURE__ */ y("div", {
|
|
569
770
|
className: "flex items-center justify-between text-lg font-semibold",
|
|
570
|
-
children: [/* @__PURE__ */
|
|
771
|
+
children: [/* @__PURE__ */ v("span", {
|
|
571
772
|
className: "text-foreground",
|
|
572
773
|
children: i("billing.addons.total", "Total")
|
|
573
|
-
}), /* @__PURE__ */
|
|
774
|
+
}), /* @__PURE__ */ v("span", {
|
|
574
775
|
className: "text-foreground",
|
|
575
776
|
children: t(c.reduce((t, { addon: n, quantity: r }) => {
|
|
576
|
-
let { price: i } =
|
|
777
|
+
let { price: i } = C(n, e);
|
|
577
778
|
return t + i * r;
|
|
578
779
|
}, 0), e)
|
|
579
780
|
})]
|
|
580
|
-
}), /* @__PURE__ */
|
|
781
|
+
}), /* @__PURE__ */ y("div", {
|
|
581
782
|
className: "flex gap-2",
|
|
582
|
-
children: [/* @__PURE__ */
|
|
783
|
+
children: [/* @__PURE__ */ v("button", {
|
|
583
784
|
type: "button",
|
|
584
785
|
onClick: w,
|
|
585
786
|
className: "flex-1 px-4 py-2.5 text-sm font-medium border border-border text-foreground rounded-md hover:bg-muted transition-colors",
|
|
586
787
|
children: "Clear Cart"
|
|
587
|
-
}), /* @__PURE__ */
|
|
788
|
+
}), /* @__PURE__ */ v("button", {
|
|
588
789
|
type: "button",
|
|
589
790
|
onClick: () => {
|
|
590
|
-
|
|
791
|
+
f(), s("/checkout/addons");
|
|
591
792
|
},
|
|
592
793
|
className: "flex-1 px-4 py-2.5 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors",
|
|
593
794
|
children: "Checkout"
|
|
@@ -599,6 +800,6 @@ var S = () => {
|
|
|
599
800
|
})] });
|
|
600
801
|
};
|
|
601
802
|
//#endregion
|
|
602
|
-
export {
|
|
803
|
+
export { w as AddonsBrowsePage };
|
|
603
804
|
|
|
604
805
|
//# sourceMappingURL=AddonsBrowsePage.js.map
|