@retinalabsllc/zairusjs 18.0.1 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -38
- package/dist/index.d.ts +1 -38
- package/dist/index.js +465 -703
- package/dist/index.mjs +473 -718
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -53,7 +53,6 @@ __export(index_exports, {
|
|
|
53
53
|
MedicalFeatureStatsBlock: () => MedicalFeatureStatsBlock,
|
|
54
54
|
MobileNav: () => MobileNav,
|
|
55
55
|
NumberInput: () => NumberInput,
|
|
56
|
-
OpenBidHome: () => OpenBidHome,
|
|
57
56
|
PageSpinner: () => PageSpinner,
|
|
58
57
|
PinDialerBottomSheet: () => PinDialerBottomSheet,
|
|
59
58
|
PipleAuth: () => PipleAuth,
|
|
@@ -108,6 +107,7 @@ var Faq = ({
|
|
|
108
107
|
}
|
|
109
108
|
},
|
|
110
109
|
{ threshold: 0.1 }
|
|
110
|
+
// Triggers when 10% of the title is visible
|
|
111
111
|
);
|
|
112
112
|
if (titleRef.current) {
|
|
113
113
|
observer.observe(titleRef.current);
|
|
@@ -121,39 +121,57 @@ var Faq = ({
|
|
|
121
121
|
"h2",
|
|
122
122
|
{
|
|
123
123
|
ref: titleRef,
|
|
124
|
-
className:
|
|
124
|
+
className: `text-3xl text-black tracking-tight leading-[1.15] ${isAnimating ? "" : ""}`,
|
|
125
|
+
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
125
126
|
},
|
|
126
127
|
"FAQ"
|
|
127
128
|
)), /* @__PURE__ */ import_react.default.createElement("div", { className: "flex flex-col gap-3 w-full" }, items.map((faq, index) => {
|
|
128
129
|
const isOpen = activeFaq === index;
|
|
130
|
+
const getShadowStyle = () => {
|
|
131
|
+
if (isOpen) return `
|
|
132
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.2),
|
|
133
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.3),
|
|
134
|
+
0 4px 0 0 #0c0c0c,
|
|
135
|
+
0 12px 24px rgba(0, 0, 0, 0.1)
|
|
136
|
+
`;
|
|
137
|
+
return "none";
|
|
138
|
+
};
|
|
129
139
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
130
140
|
"div",
|
|
131
141
|
{
|
|
132
142
|
key: index,
|
|
133
|
-
className: `transition-all duration-
|
|
143
|
+
className: `relative transition-all duration-500 rounded-4xl overflow-hidden ${isOpen ? "bg-black border-transparent" : "border border-stone-200 hover:border-stone-300"}`,
|
|
144
|
+
style: { boxShadow: getShadowStyle() }
|
|
134
145
|
},
|
|
146
|
+
isOpen && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
150
|
+
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
151
|
+
}
|
|
152
|
+
), /* @__PURE__ */ import_react.default.createElement("span", { className: "absolute inset-0 rounded-4xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" })),
|
|
135
153
|
/* @__PURE__ */ import_react.default.createElement(
|
|
136
154
|
"button",
|
|
137
155
|
{
|
|
138
|
-
className: "flex items-center justify-between w-full gap-4 text-left px-6 py-5 outline-none cursor-pointer group",
|
|
156
|
+
className: "relative z-20 flex items-center justify-between w-full gap-4 text-left px-6 py-5 outline-none cursor-pointer group",
|
|
139
157
|
onClick: () => toggleFaq(index)
|
|
140
158
|
},
|
|
141
159
|
/* @__PURE__ */ import_react.default.createElement(
|
|
142
160
|
"span",
|
|
143
161
|
{
|
|
144
|
-
className: `text-
|
|
162
|
+
className: `text-sm transition-colors duration-300 flex items-center gap-2 ${isOpen ? "text-white" : "text-black"}`
|
|
145
163
|
},
|
|
146
|
-
/* @__PURE__ */ import_react.default.createElement("span", { className: isOpen ? "text-
|
|
164
|
+
/* @__PURE__ */ import_react.default.createElement("span", { className: isOpen ? "text-stone-400" : "text-stone-400" }, index + 1, "."),
|
|
147
165
|
faq.question
|
|
148
166
|
),
|
|
149
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-
|
|
167
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-black group-hover:text-black/70"}` }, isOpen ? /* @__PURE__ */ import_react.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /* @__PURE__ */ import_react.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M8 12h8", strokeLinecap: "round" })) : /* @__PURE__ */ import_react.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /* @__PURE__ */ import_react.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M12 8v8M8 12h8", strokeLinecap: "round" })))
|
|
150
168
|
),
|
|
151
169
|
/* @__PURE__ */ import_react.default.createElement(
|
|
152
170
|
"div",
|
|
153
171
|
{
|
|
154
|
-
className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`
|
|
172
|
+
className: `relative z-20 grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`
|
|
155
173
|
},
|
|
156
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react.default.createElement("p", { className: `text-
|
|
174
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react.default.createElement("p", { className: `text-sm leading-relaxed px-6 pb-6 pt-0 pr-12 transition-colors duration-300 ${isOpen ? "text-stone-300" : "text-transparent"}` }, faq.answer))
|
|
157
175
|
)
|
|
158
176
|
);
|
|
159
177
|
}))));
|
|
@@ -175,7 +193,7 @@ var ThreeDButton = ({
|
|
|
175
193
|
onClick,
|
|
176
194
|
className: `
|
|
177
195
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
178
|
-
bg-[#
|
|
196
|
+
bg-[#062c25] hover:bg-[#0573d6] text-white text-xs
|
|
179
197
|
transition-colors duration-150 select-none group outline-none
|
|
180
198
|
${className}
|
|
181
199
|
`
|
|
@@ -207,7 +225,7 @@ var ThreeDActionButton = ({
|
|
|
207
225
|
style,
|
|
208
226
|
className: `
|
|
209
227
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
210
|
-
bg-[#
|
|
228
|
+
bg-[#062c25] text-white text-xs tracking-widest
|
|
211
229
|
transition-colors duration-150 select-none group outline-none
|
|
212
230
|
${isInteractionDisabled ? "opacity-50 cursor-not-allowed" : "hover:bg-[#0573d6]"}
|
|
213
231
|
${className}
|
|
@@ -229,8 +247,8 @@ var NavLink = ({
|
|
|
229
247
|
}) => {
|
|
230
248
|
const pathname = (0, import_navigation.usePathname)();
|
|
231
249
|
const isActive = pathname === href;
|
|
232
|
-
const activeClass = "text-
|
|
233
|
-
const inactiveClass = "text-
|
|
250
|
+
const activeClass = "text-stone-900 ";
|
|
251
|
+
const inactiveClass = "text-stone-500 hover:text-stone-900";
|
|
234
252
|
return /* @__PURE__ */ import_react5.default.createElement(
|
|
235
253
|
import_link2.default,
|
|
236
254
|
{
|
|
@@ -257,8 +275,8 @@ var Header = ({
|
|
|
257
275
|
const headerLayoutWidth = compact ? "w-fit mx-auto gap-8 md:gap-16" : "w-full justify-between";
|
|
258
276
|
const hasBrandSection = showLogo || !hideHeaderText;
|
|
259
277
|
const headerBgClass = "bg-white/80";
|
|
260
|
-
const brandTitleClass = "text-
|
|
261
|
-
const brandSubtitleClass = "text-
|
|
278
|
+
const brandTitleClass = "text-stone-900";
|
|
279
|
+
const brandSubtitleClass = "text-stone-500";
|
|
262
280
|
const shouldInvertLogo = !invert;
|
|
263
281
|
if (!mounted) {
|
|
264
282
|
return /* @__PURE__ */ import_react5.default.createElement("div", { className: "w-full h-20 px-4 pt-4 sm:pt-6" });
|
|
@@ -275,7 +293,7 @@ var Header = ({
|
|
|
275
293
|
className: `object-contain w-8 h-auto ${shouldInvertLogo ? "invert" : ""}`,
|
|
276
294
|
priority: true
|
|
277
295
|
}
|
|
278
|
-
), !hideHeaderText && /* @__PURE__ */ import_react5.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react5.default.createElement("span", { className: `text-
|
|
296
|
+
), !hideHeaderText && /* @__PURE__ */ import_react5.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react5.default.createElement("span", { className: `text-sm leading-none tracking-wide mb-1 ${brandTitleClass}` }, companyName), subtitle && /* @__PURE__ */ import_react5.default.createElement("span", { className: `text-xs tracking-widest leading-none ${brandSubtitleClass}` }, subtitle)))), /* @__PURE__ */ import_react5.default.createElement("nav", { className: "flex items-center gap-1 md:gap-2 shrink-0" }, links.map((link, index) => /* @__PURE__ */ import_react5.default.createElement(
|
|
279
297
|
NavLink,
|
|
280
298
|
{
|
|
281
299
|
key: index,
|
|
@@ -295,10 +313,10 @@ var import_react_google_recaptcha_v3 = require("react-google-recaptcha-v3");
|
|
|
295
313
|
var import_browser = require("@simplewebauthn/browser");
|
|
296
314
|
var import_react7 = require("@hugeicons/react");
|
|
297
315
|
var import_core_free_icons2 = require("@hugeicons/core-free-icons");
|
|
298
|
-
var InputSpinner = () => /* @__PURE__ */ import_react6.default.createElement("svg", { className: "animate-spin h-4 w-4 text-
|
|
316
|
+
var InputSpinner = () => /* @__PURE__ */ import_react6.default.createElement("svg", { className: "animate-spin h-4 w-4 text-stone-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react6.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react6.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
299
317
|
var ImageLoader = ({ src }) => {
|
|
300
318
|
const [loaded, setLoaded] = (0, import_react6.useState)(false);
|
|
301
|
-
return /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative w-full h-full bg-
|
|
319
|
+
return /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative w-full h-full bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && /* @__PURE__ */ import_react6.default.createElement(import_react7.HugeiconsIcon, { icon: import_core_free_icons2.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 24 }), /* @__PURE__ */ import_react6.default.createElement(
|
|
302
320
|
"img",
|
|
303
321
|
{
|
|
304
322
|
src,
|
|
@@ -495,25 +513,25 @@ function AuthFormInner({
|
|
|
495
513
|
}
|
|
496
514
|
return false;
|
|
497
515
|
};
|
|
498
|
-
return /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-h-screen w-full bg-white flex flex-col md:flex-row" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "hidden md:flex md:w-1/2 lg:w-[45%] h-screen sticky top-0 left-0 bg-
|
|
516
|
+
return /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-h-screen w-full bg-white flex flex-col md:flex-row" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "hidden md:flex md:w-1/2 lg:w-[45%] h-screen sticky top-0 left-0 bg-stone-100" }, /* @__PURE__ */ import_react6.default.createElement(ImageLoader, { src: heroImageUrl })), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex-1 flex flex-col items-center pt-16 md:pt-0 md:justify-center px-6 sm:px-12 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full max-w-sm mx-auto" }, step === "INPUT" && /* @__PURE__ */ import_react6.default.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "mb-12 mt-2" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "text-2xl text-black mb-2 tracking-tight" }, mode === "LOGIN" ? `${companyName} ${workspaceLabel}` : "Create Account"), /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-sm text-stone-500" }, mode === "LOGIN" ? /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, "Don't have an account? ", /* @__PURE__ */ import_react6.default.createElement("button", { type: "button", onClick: () => {
|
|
499
517
|
setMode("SIGNUP");
|
|
500
518
|
setSignupStep(getInitialSignupStep());
|
|
501
|
-
}, className: "text-[#
|
|
519
|
+
}, className: "text-[#062c25] transition-colors ml-1 outline-none" }, "Sign up")) : /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, "Already have an account? ", /* @__PURE__ */ import_react6.default.createElement("button", { type: "button", onClick: () => setMode("LOGIN"), className: "text-[#062c25] transition-colors ml-1 outline-none" }, "Log in")))), /* @__PURE__ */ import_react6.default.createElement("form", { className: "space-y-6", autoComplete: "off", onSubmit: (e) => {
|
|
502
520
|
e.preventDefault();
|
|
503
521
|
if (mode === "SIGNUP" && signupStep === "NAME") handleNextSignupStep();
|
|
504
522
|
else if (mode === "SIGNUP" && signupStep === "ORGANIZATION") handleNextSignupStep();
|
|
505
523
|
else handleAuthRequestSubmit();
|
|
506
|
-
} }, mode === "SIGNUP" && signupStep === "NAME" && requireNames && /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "text-
|
|
524
|
+
} }, mode === "SIGNUP" && signupStep === "NAME" && requireNames && /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block " }, "First Name"), /* @__PURE__ */ import_react6.default.createElement("input", { type: "text", value: firstName, onChange: (e) => setFirstName(cleanAlpha(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "First name" })), /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block " }, "Last Name"), /* @__PURE__ */ import_react6.default.createElement("input", { type: "text", value: lastName, onChange: (e) => setLastName(cleanAlpha(e.target.value)), required: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "Last name" }))), mode === "SIGNUP" && signupStep === "ORGANIZATION" && requireOrganization && /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block " }, "Workspace Name"), /* @__PURE__ */ import_react6.default.createElement("input", { type: "text", value: orgName, onChange: (e) => setOrgName(cleanOrgName(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "Acme Corporation" }))), (mode === "LOGIN" || mode === "SIGNUP" && signupStep === "EMAIL_ID") && /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-6 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block " }, "Email ID"), /* @__PURE__ */ import_react6.default.createElement("input", { type: "email", value: emailId, onChange: (e) => setEmailId(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), mode === "SIGNUP" && /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-start gap-3 mt-4" }, /* @__PURE__ */ import_react6.default.createElement(
|
|
507
525
|
"input",
|
|
508
526
|
{
|
|
509
527
|
type: "checkbox",
|
|
510
528
|
id: "zairus-terms",
|
|
511
529
|
checked: agreedToTerms,
|
|
512
530
|
onChange: (e) => setAgreedToTerms(e.target.checked),
|
|
513
|
-
className: "mt-0.5 w-4 h-4 bg-white border-
|
|
531
|
+
className: "mt-0.5 w-4 h-4 bg-white border-stone-300 rounded text-[#062c25] focus:ring-[#062c25] accent-[#062c25] cursor-pointer",
|
|
514
532
|
required: true
|
|
515
533
|
}
|
|
516
|
-
), /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "zairus-terms", className: "text-
|
|
534
|
+
), /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "zairus-terms", className: "text-xs text-stone-500 cursor-pointer leading-snug select-none" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ import_react6.default.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#062c25] hover:underline outline-none" }, "Terms of Service"), " and ", /* @__PURE__ */ import_react6.default.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#062c25] hover:underline outline-none" }, "Privacy Policy"), "."))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "pt-4" }, /* @__PURE__ */ import_react6.default.createElement(ThreeDActionButton, { type: "submit", disabled: isContinueDisabled(), isLoading: isSubmitting, className: "w-full shadow-md shadow-stone-200/50" }, "Continue")))), step === "OTP" && /* @__PURE__ */ import_react6.default.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "mb-10 mt-2" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "text-2xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ import_react6.default.createElement("p", { className: "text-sm text-stone-500" }, userHas2FA ? "Enter the code from your authenticator app." : `Enter the code sent to ${emailId}`)), /* @__PURE__ */ import_react6.default.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
517
535
|
e.preventDefault();
|
|
518
536
|
verifyOtpCode(otp.join(""));
|
|
519
537
|
} }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ import_react6.default.createElement(
|
|
@@ -531,15 +549,15 @@ function AuthFormInner({
|
|
|
531
549
|
onKeyDown: (e) => {
|
|
532
550
|
if (e.key === "Backspace" && !otp[index] && index > 0) inputRefs.current[index - 1]?.focus();
|
|
533
551
|
},
|
|
534
|
-
className: "w-10 h-10 text-center text-sm bg-transparent border-b-2 border-
|
|
552
|
+
className: "w-10 h-10 text-center text-sm bg-transparent border-b-2 border-stone-200 text-black outline-none focus:border-black transition-all duration-300"
|
|
535
553
|
}
|
|
536
|
-
))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react6.default.createElement(ThreeDActionButton, { type: "submit", disabled: otp.join("").length < 6, isLoading: isSubmitting, className: "w-full shadow-md shadow-
|
|
554
|
+
))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react6.default.createElement(ThreeDActionButton, { type: "submit", disabled: otp.join("").length < 6, isLoading: isSubmitting, className: "w-full shadow-md shadow-stone-200/50" }, "Verify Code"), !userHas2FA && /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-center pt-2" }, /* @__PURE__ */ import_react6.default.createElement(
|
|
537
555
|
"button",
|
|
538
556
|
{
|
|
539
557
|
type: "button",
|
|
540
558
|
onClick: handleResendCode,
|
|
541
559
|
disabled: countdown > 0 || isSubmitting,
|
|
542
|
-
className: "text-
|
|
560
|
+
className: "text-xs text-stone-500 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
543
561
|
},
|
|
544
562
|
countdown > 0 ? `Resend code in ${countdown}s` : "Resend verification code"
|
|
545
563
|
)))), userHasPasskey && /* @__PURE__ */ import_react6.default.createElement("div", { className: "pt-6 " }, /* @__PURE__ */ import_react6.default.createElement(
|
|
@@ -547,7 +565,7 @@ function AuthFormInner({
|
|
|
547
565
|
{
|
|
548
566
|
onClick: triggerPasskeyLogin,
|
|
549
567
|
disabled: isSubmitting,
|
|
550
|
-
className: "w-full py-2.5 rounded-full text-black border border-
|
|
568
|
+
className: "w-full py-2.5 rounded-full text-black border border-stone-200 hover:bg-stone-50 text-sm tracking-wide transition-colors outline-none disabled:opacity-50"
|
|
551
569
|
},
|
|
552
570
|
"Use Passkey Biometrics"
|
|
553
571
|
))))));
|
|
@@ -574,37 +592,37 @@ var Footer = ({
|
|
|
574
592
|
const toggleColumn = (idx) => {
|
|
575
593
|
setOpenCol(openCol === idx ? null : idx);
|
|
576
594
|
};
|
|
577
|
-
return /* @__PURE__ */ import_react8.default.createElement("div", { className: "" }, topSection && topSection, /* @__PURE__ */ import_react8.default.createElement("footer", { className: "relative px-6 overflow-hidden flex flex-col" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "relative w-full max-w-7xl mx-auto z-20 flex flex-col" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "relative py-12 md:py-16" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start gap-12 lg:gap-16 mb-12 text-left" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "w-full lg:max-w-sm flex flex-col items-start justify-between shrink-0" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ import_react8.default.createElement("img", { src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/ndpr.avif", alt: "NDPR", className: "w-28 h-auto object-contain filter grayscale opacity-80" }), /* @__PURE__ */ import_react8.default.createElement("img", { src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/gdpr.avif", alt: "GDPR", className: "w-12 h-12 object-contain filter grayscale opacity-80" })), /* @__PURE__ */ import_react8.default.createElement("div", null, /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-
|
|
595
|
+
return /* @__PURE__ */ import_react8.default.createElement("div", { className: "" }, topSection && topSection, /* @__PURE__ */ import_react8.default.createElement("footer", { className: "relative px-6 overflow-hidden flex flex-col" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "relative w-full max-w-7xl mx-auto z-20 flex flex-col" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "relative py-12 md:py-16" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start gap-12 lg:gap-16 mb-12 text-left" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "w-full lg:max-w-sm flex flex-col items-start justify-between shrink-0" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ import_react8.default.createElement("img", { src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/ndpr.avif", alt: "NDPR", className: "w-28 h-auto object-contain filter grayscale opacity-80" }), /* @__PURE__ */ import_react8.default.createElement("img", { src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/gdpr.avif", alt: "GDPR", className: "w-12 h-12 object-contain filter grayscale opacity-80" })), /* @__PURE__ */ import_react8.default.createElement("div", null, /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed pr-4" }, description))), /* @__PURE__ */ import_react8.default.createElement("div", { className: "w-full lg:flex-1 lg:max-w-2xl" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "hidden md:grid grid-cols-2 gap-x-16 lg:gap-x-24 gap-y-12" }, columns.map((col, idx) => /* @__PURE__ */ import_react8.default.createElement("div", { key: idx, className: "flex flex-col" }, /* @__PURE__ */ import_react8.default.createElement("h4", { className: "text-sm tracking-[0.2em] text-black mb-6 " }, col.title), /* @__PURE__ */ import_react8.default.createElement("ul", { className: "space-y-4 text-xs text-stone-500" }, col.links.map((link, lIdx) => /* @__PURE__ */ import_react8.default.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ import_react8.default.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors block truncate" }, link.label) : /* @__PURE__ */ import_react8.default.createElement(import_link3.default, { href: link.href, className: "hover:text-black transition-colors block truncate" }, link.label))))))), /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col md:hidden w-full border-t border-stone-200 mt-4" }, columns.map((col, idx) => {
|
|
578
596
|
const isOpen = openCol === idx;
|
|
579
|
-
return /* @__PURE__ */ import_react8.default.createElement("div", { key: idx, className: "border-b border-
|
|
597
|
+
return /* @__PURE__ */ import_react8.default.createElement("div", { key: idx, className: "border-b border-stone-200" }, /* @__PURE__ */ import_react8.default.createElement(
|
|
580
598
|
"button",
|
|
581
599
|
{
|
|
582
600
|
onClick: () => toggleColumn(idx),
|
|
583
601
|
className: "w-full flex items-center justify-between py-5 text-left outline-none"
|
|
584
602
|
},
|
|
585
|
-
/* @__PURE__ */ import_react8.default.createElement("span", { className: "text-
|
|
603
|
+
/* @__PURE__ */ import_react8.default.createElement("span", { className: "text-xs tracking-[0.2em] text-black " }, col.title),
|
|
586
604
|
/* @__PURE__ */ import_react8.default.createElement(
|
|
587
605
|
"svg",
|
|
588
606
|
{
|
|
589
|
-
className: `w-4 h-4 text-
|
|
607
|
+
className: `w-4 h-4 text-stone-400 transition-transform duration-300 ${isOpen ? "rotate-180" : ""}`,
|
|
590
608
|
fill: "none",
|
|
591
609
|
viewBox: "0 0 24 24",
|
|
592
610
|
stroke: "currentColor"
|
|
593
611
|
},
|
|
594
612
|
/* @__PURE__ */ import_react8.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 9l-7 7-7-7" })
|
|
595
613
|
)
|
|
596
|
-
), /* @__PURE__ */ import_react8.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react8.default.createElement("ul", { className: "space-y-4 text-
|
|
597
|
-
})))), /* @__PURE__ */ import_react8.default.createElement("div", { className: "pt-12 mt-4 border-t border-
|
|
614
|
+
), /* @__PURE__ */ import_react8.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react8.default.createElement("ul", { className: "space-y-4 text-xs text-stone-500 pt-2" }, col.links.map((link, lIdx) => /* @__PURE__ */ import_react8.default.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ import_react8.default.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors" }, link.label) : /* @__PURE__ */ import_react8.default.createElement(import_link3.default, { href: link.href, className: "hover:text-black transition-colors" }, link.label)))))));
|
|
615
|
+
})))), /* @__PURE__ */ import_react8.default.createElement("div", { className: "pt-12 mt-4 border-t border-stone-200 flex flex-col items-center justify-center gap-8 relative z-20 text-center" }, socialLinks && socialLinks.length > 0 && /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex items-center justify-center gap-6" }, socialLinks.map((social, idx) => /* @__PURE__ */ import_react8.default.createElement(
|
|
598
616
|
"a",
|
|
599
617
|
{
|
|
600
618
|
key: idx,
|
|
601
619
|
href: social.href,
|
|
602
620
|
target: "_blank",
|
|
603
621
|
rel: "noopener noreferrer",
|
|
604
|
-
className: "text-
|
|
622
|
+
className: "text-stone-400 hover:text-black transition-colors"
|
|
605
623
|
},
|
|
606
624
|
/* @__PURE__ */ import_react8.default.createElement(import_react9.HugeiconsIcon, { icon: social.icon, size: 20 })
|
|
607
|
-
))), /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-
|
|
625
|
+
))), /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-xs text-stone-400 leading-relaxed max-w-5xl mx-auto" }, "Retina Labs Company (RC - 9235780) is an artificial intelligence research organization and software developer headquartered in Lagos, Nigeria, and the Netherlands. Unauthorized reproduction or redistribution of copyrighted materials on this website and Retina Labs Company's digital media pages is strictly prohibited. By clicking on some of the links above, you may leave our website and be directed to a third-party website. The privacy practices of those third parties may differ from ours. We recommend you review the privacy statements of those third-party websites, as Retina Labs Company is not responsible for those third parties' privacy or security practices. For inquiries, contact us via phone at +234 201 700 1157 / +1 507 773 0007 or email at labs@theretinalabs.com. Additional disclosures and legal resources can be found in the respective sections of our platform."), /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-xs text-stone-500 tracking-widest mt-8" }, copyrightText))))));
|
|
608
626
|
};
|
|
609
627
|
|
|
610
628
|
// src/components/UniversalHuddleDetails.tsx
|
|
@@ -665,16 +683,16 @@ var ReusableOptions = ({
|
|
|
665
683
|
const filteredOptions = options.filter(
|
|
666
684
|
(opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
|
|
667
685
|
);
|
|
668
|
-
return /* @__PURE__ */ import_react11.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react11.default.createElement("h3", { className: "text-
|
|
686
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react11.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, title), /* @__PURE__ */ import_react11.default.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react11.default.createElement(
|
|
669
687
|
"input",
|
|
670
688
|
{
|
|
671
689
|
type: "text",
|
|
672
690
|
placeholder: "Search...",
|
|
673
691
|
value: searchQuery,
|
|
674
692
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
675
|
-
className: "w-full pl-10 pr-4 py-2.5 bg-
|
|
693
|
+
className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors"
|
|
676
694
|
}
|
|
677
|
-
))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, filteredOptions.length === 0 ? /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-6 text-center text-
|
|
695
|
+
))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, filteredOptions.length === 0 ? /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-6 text-center text-xs text-stone-400" }, "No options found.") : filteredOptions.map((opt) => {
|
|
678
696
|
const isSelected = selectedOption === opt;
|
|
679
697
|
return /* @__PURE__ */ import_react11.default.createElement(
|
|
680
698
|
"button",
|
|
@@ -684,7 +702,7 @@ var ReusableOptions = ({
|
|
|
684
702
|
onSelect(opt);
|
|
685
703
|
onClose();
|
|
686
704
|
},
|
|
687
|
-
className: `w-full text-left p-4 text-
|
|
705
|
+
className: `w-full text-left p-4 text-sm tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#062c25] bg-[#062c25]/10" : "text-stone-600 hover:bg-stone-50/50"}`
|
|
688
706
|
},
|
|
689
707
|
opt.charAt(0).toUpperCase() + opt.slice(1).toLowerCase()
|
|
690
708
|
);
|
|
@@ -781,26 +799,26 @@ var CalendarPicker = ({
|
|
|
781
799
|
onConfirm(final);
|
|
782
800
|
onClose();
|
|
783
801
|
};
|
|
784
|
-
return /* @__PURE__ */ import_react13.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "p-4 pb-0 flex flex-col gap-4" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react13.default.createElement("h3", { className: "text-
|
|
802
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "p-4 pb-0 flex flex-col gap-4" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react13.default.createElement("h3", { className: "text-sm text-black tracking-tight " }, "Select Date & Time"), /* @__PURE__ */ import_react13.default.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
785
803
|
"button",
|
|
786
804
|
{
|
|
787
805
|
onClick: () => setMode("DATE"),
|
|
788
|
-
className: `pb-2 text-
|
|
806
|
+
className: `pb-2 text-xs tracking-wide outline-none border-b-2 transition-colors ${mode === "DATE" ? "border-[#062c25] text-[#062c25]" : "border-transparent text-stone-500 hover:text-black"}`
|
|
789
807
|
},
|
|
790
808
|
"Date"
|
|
791
809
|
), /* @__PURE__ */ import_react13.default.createElement(
|
|
792
810
|
"button",
|
|
793
811
|
{
|
|
794
812
|
onClick: () => setMode("TIME"),
|
|
795
|
-
className: `pb-2 text-
|
|
813
|
+
className: `pb-2 text-xs tracking-wide outline-none border-b-2 transition-colors ${mode === "TIME" ? "border-[#062c25] text-[#062c25]" : "border-transparent text-stone-500 hover:text-black"}`
|
|
796
814
|
},
|
|
797
815
|
"Time"
|
|
798
|
-
))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "p-5" }, mode === "DATE" && /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col gap-4 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-between px-2" }, /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-
|
|
816
|
+
))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "p-5" }, mode === "DATE" && /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col gap-4 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-between px-2" }, /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-sm text-black" }, MONTHS[viewMonth], " ", viewYear), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
799
817
|
"button",
|
|
800
818
|
{
|
|
801
819
|
onClick: handlePrevMonth,
|
|
802
820
|
disabled: viewYear === today.getFullYear() && viewMonth === today.getMonth(),
|
|
803
|
-
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-
|
|
821
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
|
|
804
822
|
},
|
|
805
823
|
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowLeft01Icon, size: 16, className: "text-black" })
|
|
806
824
|
), /* @__PURE__ */ import_react13.default.createElement(
|
|
@@ -808,10 +826,10 @@ var CalendarPicker = ({
|
|
|
808
826
|
{
|
|
809
827
|
onClick: handleNextMonth,
|
|
810
828
|
disabled: viewYear === maxDate.getFullYear() && viewMonth === 11,
|
|
811
|
-
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-
|
|
829
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
|
|
812
830
|
},
|
|
813
831
|
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowRight01Icon, size: 16, className: "text-black" })
|
|
814
|
-
))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "grid grid-cols-7 gap-1" }, DAYS_OF_WEEK.map((d) => /* @__PURE__ */ import_react13.default.createElement("div", { key: d, className: "text-center text-
|
|
832
|
+
))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "grid grid-cols-7 gap-1" }, DAYS_OF_WEEK.map((d) => /* @__PURE__ */ import_react13.default.createElement("div", { key: d, className: "text-center text-xs text-stone-400 py-2" }, d)), Array.from({ length: firstDayOffset }).map((_, i) => /* @__PURE__ */ import_react13.default.createElement("div", { key: `empty-${i}` })), Array.from({ length: daysInMonth }).map((_, i) => {
|
|
815
833
|
const day = i + 1;
|
|
816
834
|
const isDisabled = isDateDisabled(viewYear, viewMonth, day);
|
|
817
835
|
const isSelected = selectedDate.getFullYear() === viewYear && selectedDate.getMonth() === viewMonth && selectedDate.getDate() === day;
|
|
@@ -821,16 +839,16 @@ var CalendarPicker = ({
|
|
|
821
839
|
key: day,
|
|
822
840
|
disabled: isDisabled,
|
|
823
841
|
onClick: () => setSelectedDate(new Date(viewYear, viewMonth, day)),
|
|
824
|
-
className: `h-9 w-9 rounded-full flex items-center justify-center text-
|
|
825
|
-
${isDisabled ? "text-
|
|
842
|
+
className: `h-9 w-9 rounded-full flex items-center justify-center text-xs transition-colors outline-none
|
|
843
|
+
${isDisabled ? "text-stone-300 cursor-not-allowed" : isSelected ? "bg-[#062c25] text-white" : "text-black hover:bg-stone-100"}`
|
|
826
844
|
},
|
|
827
845
|
day
|
|
828
846
|
);
|
|
829
|
-
}))), mode === "TIME" && /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-center gap-6 py-6 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("H", 1), className: "p-2 rounded-full hover:bg-
|
|
847
|
+
}))), mode === "TIME" && /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-center gap-6 py-6 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("H", 1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowUp01Icon, size: 20, className: "text-stone-500" })), /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-3xl text-black w-12 text-center" }, hour.toString().padStart(2, "0")), /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("H", -1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowDown01Icon, size: 20, className: "text-stone-500" }))), /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-3xl text-stone-300 pb-2" }, ":"), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("M", 1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowUp01Icon, size: 20, className: "text-stone-500" })), /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-3xl text-black w-12 text-center" }, minute.toString().padStart(2, "0")), /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("M", -1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowDown01Icon, size: 20, className: "text-stone-500" }))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col items-center gap-4 ml-2" }, /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("A", 1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowUp01Icon, size: 20, className: "text-stone-500" })), /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-xl text-[#062c25] w-12 text-center" }, ampm), /* @__PURE__ */ import_react13.default.createElement("button", { onClick: () => adjustTime("A", -1), className: "p-2 rounded-full hover:bg-stone-100 outline-none" }, /* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons4.ArrowDown01Icon, size: 20, className: "text-stone-500" }))))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "p-5 flex justify-end shrink-0" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
830
848
|
"button",
|
|
831
849
|
{
|
|
832
850
|
onClick: handleSave,
|
|
833
|
-
className: "text-[#
|
|
851
|
+
className: "text-[#062c25] hover:text-[#0573d6] transition-colors outline-none text-sm tracking-wide"
|
|
834
852
|
},
|
|
835
853
|
"Done"
|
|
836
854
|
))));
|
|
@@ -858,12 +876,12 @@ var ConfirmationDialog = ({
|
|
|
858
876
|
className: "absolute inset-0 bg-black/40 ",
|
|
859
877
|
onClick: () => !isProcessing && onClose()
|
|
860
878
|
}
|
|
861
|
-
), /* @__PURE__ */ import_react15.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "p-6 pb-4 text-center w-full" }, /* @__PURE__ */ import_react15.default.createElement("h3", { className: "text-
|
|
879
|
+
), /* @__PURE__ */ import_react15.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "p-6 pb-4 text-center w-full" }, /* @__PURE__ */ import_react15.default.createElement("h3", { className: "text-lg text-black tracking-tight mb-2" }, title), /* @__PURE__ */ import_react15.default.createElement("p", { className: "text-xs text-stone-500 leading-relaxed px-2" }, message)), /* @__PURE__ */ import_react15.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react15.default.createElement(
|
|
862
880
|
"button",
|
|
863
881
|
{
|
|
864
882
|
onClick: onClose,
|
|
865
883
|
disabled: isProcessing,
|
|
866
|
-
className: "flex-1 py-4 text-
|
|
884
|
+
className: "flex-1 py-4 text-sm text-stone-500 hover:bg-stone-50 transition-colors disabled:opacity-50 outline-none "
|
|
867
885
|
},
|
|
868
886
|
cancelText
|
|
869
887
|
), /* @__PURE__ */ import_react15.default.createElement(
|
|
@@ -871,7 +889,7 @@ var ConfirmationDialog = ({
|
|
|
871
889
|
{
|
|
872
890
|
onClick: onConfirm,
|
|
873
891
|
disabled: isProcessing,
|
|
874
|
-
className: `flex-1 py-4 text-
|
|
892
|
+
className: `flex-1 py-4 text-sm transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-stone-50" : "text-black hover:bg-stone-50"}`
|
|
875
893
|
},
|
|
876
894
|
isProcessing ? /* @__PURE__ */ import_react15.default.createElement(import_react16.HugeiconsIcon, { icon: import_core_free_icons5.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
|
|
877
895
|
))));
|
|
@@ -882,7 +900,7 @@ var MemberAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
882
900
|
const [loaded, setLoaded] = (0, import_react17.useState)(false);
|
|
883
901
|
const [error, setError] = (0, import_react17.useState)(false);
|
|
884
902
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
885
|
-
return /* @__PURE__ */ import_react17.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "w-full h-full rounded-lg bg-
|
|
903
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react17.default.createElement("img", { src: error || !src ? defaultAvatar : src, alt: "Avatar", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })));
|
|
886
904
|
};
|
|
887
905
|
var STANDARD_TIMEZONES = [
|
|
888
906
|
"UTC",
|
|
@@ -1014,7 +1032,7 @@ var UniversalHuddleDetails = ({
|
|
|
1014
1032
|
onClose: () => setConfirmDialog(null),
|
|
1015
1033
|
onConfirm: handleDelete
|
|
1016
1034
|
}
|
|
1017
|
-
), /* @__PURE__ */ import_react17.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react17.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#
|
|
1035
|
+
), /* @__PURE__ */ import_react17.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react17.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#062c25] hover:text-[#062c25] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "mb-8 px-1 flex flex-col sm:flex-row sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react17.default.createElement("div", null, /* @__PURE__ */ import_react17.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Huddle Details"), /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-xs text-stone-500" }, "Review or modify your scheduled session.")), liveStatus === "ONGOING" && /* @__PURE__ */ import_react17.default.createElement("div", { className: "px-4 py-1.5 bg-emerald-50 text-emerald-600 rounded-full text-xs flex items-center gap-2 self-start sm:self-auto" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "w-2 h-2 rounded-full bg-emerald-500 animate-pulse" }), " Ongoing Now"), liveStatus === "SCHEDULED" && timeRemaining && /* @__PURE__ */ import_react17.default.createElement("div", { className: "px-4 py-1.5 bg-amber-50 text-amber-600 rounded-full text-xs self-start sm:self-auto" }, "Starting in ", timeRemaining), liveStatus === "COMPLETED" && /* @__PURE__ */ import_react17.default.createElement("div", { className: "px-4 py-1.5 bg-stone-200 text-stone-600 rounded-full text-xs self-start sm:self-auto" }, "Completed"), liveStatus === "CANCELLED" && /* @__PURE__ */ import_react17.default.createElement("div", { className: "px-4 py-1.5 bg-stone-200 text-stone-500 rounded-full text-xs self-start sm:self-auto" }, "Cancelled")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col gap-1 w-full" }, /* @__PURE__ */ import_react17.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Huddle Subject"), isEditingTitle ? /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1018
1036
|
"input",
|
|
1019
1037
|
{
|
|
1020
1038
|
value: title,
|
|
@@ -1022,10 +1040,10 @@ var UniversalHuddleDetails = ({
|
|
|
1022
1040
|
setTitle(e.target.value.substring(0, 80));
|
|
1023
1041
|
setIsDirty(true);
|
|
1024
1042
|
},
|
|
1025
|
-
className: "w-full text-sm border-b border-
|
|
1043
|
+
className: "w-full text-sm border-b border-stone-200 focus:border-black outline-none py-2 text-black bg-transparent",
|
|
1026
1044
|
autoFocus: true
|
|
1027
1045
|
}
|
|
1028
|
-
), /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setIsEditingTitle(false), className: "text-
|
|
1046
|
+
), /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setIsEditingTitle(false), className: "text-xs text-[#062c25] outline-none " }, "Done")) : /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-sm text-black py-2" }, title), enableEdits && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setIsEditingTitle(true), className: "text-xs text-[#062c25] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react17.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Calendar01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react17.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))), enableEdits && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setCalendarMode("DATE"), className: "text-xs text-[#062c25] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react17.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Clock01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react17.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))), enableEdits && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setCalendarMode("TIME"), className: "text-xs text-[#062c25] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react17.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Globe02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react17.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)), enableEdits && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setShowTimezoneModal(true), className: "text-xs text-[#062c25] hover:underline outline-none" }, "Edit")))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center justify-between py-2 mt-2" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-stone-500" }, "Only invited members can join.")), /* @__PURE__ */ import_react17.default.createElement(
|
|
1029
1047
|
"button",
|
|
1030
1048
|
{
|
|
1031
1049
|
type: "button",
|
|
@@ -1036,10 +1054,10 @@ var UniversalHuddleDetails = ({
|
|
|
1036
1054
|
}
|
|
1037
1055
|
},
|
|
1038
1056
|
disabled: !enableEdits,
|
|
1039
|
-
className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#
|
|
1057
|
+
className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#062c25]" : "bg-stone-200"} ${!enableEdits && "opacity-50 cursor-not-allowed"}`
|
|
1040
1058
|
},
|
|
1041
1059
|
/* @__PURE__ */ import_react17.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` })
|
|
1042
|
-
)), isPrivate && /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-
|
|
1060
|
+
)), isPrivate && /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-black tracking-tight" }, "Participants"), /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-[#062c25] " }, selectedParticipants.size, " added")), enableEdits && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setShowMembersModal(true), className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access")), isDirty && /* @__PURE__ */ import_react17.default.createElement("div", { className: "pt-4 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react17.default.createElement(ThreeDActionButton, { onClick: handleUpdate, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Save Changes")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 " }, (liveStatus === "SCHEDULED" || liveStatus === "ONGOING") && /* @__PURE__ */ import_react17.default.createElement("a", { href: `/app/join/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-[#062c25] text-[#062c25] rounded-full text-center text-xs transition-colors hover:bg-[#062c25]/5" }, "Join Huddle"), /* @__PURE__ */ import_react17.default.createElement("a", { href: `/app/assets/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Huddle Assets"), canDelete && liveStatus === "SCHEDULED" && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setConfirmDialog("CANCEL"), className: "flex-1 w-full py-2.5 bg-transparent border border-rose-200 text-rose-600 rounded-full text-center text-xs transition-colors hover:bg-rose-50" }, "Cancel Huddle"), canDelete && liveStatus !== "SCHEDULED" && /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setConfirmDialog("DELETE"), className: "flex-1 w-full py-2.5 bg-transparent border border-rose-200 text-rose-600 rounded-full text-center text-xs transition-colors hover:bg-rose-50" }, "Delete Huddle"))), /* @__PURE__ */ import_react17.default.createElement(
|
|
1043
1061
|
CalendarPicker,
|
|
1044
1062
|
{
|
|
1045
1063
|
isOpen: calendarMode !== null,
|
|
@@ -1065,10 +1083,10 @@ var UniversalHuddleDetails = ({
|
|
|
1065
1083
|
},
|
|
1066
1084
|
showSearch: true
|
|
1067
1085
|
}
|
|
1068
|
-
), showMembersModal && /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react17.default.createElement("h3", { className: "text-
|
|
1086
|
+
), showMembersModal && /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react17.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Manage Participants"), /* @__PURE__ */ import_react17.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#062c25] hover:text-[#062c25] transition-colors outline-none text-sm " }, "Done")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react17.default.createElement("input", { type: "text", placeholder: "Search team...", value: localSearchQuery, onChange: handleSearchInput, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors" }))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ import_react17.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react17.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
|
|
1069
1087
|
const isChecked = selectedParticipants.has(member.userId);
|
|
1070
|
-
return /* @__PURE__ */ import_react17.default.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-
|
|
1071
|
-
})), /* @__PURE__ */ import_react17.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-
|
|
1088
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react17.default.createElement(MemberAvatar, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#062c25]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.Tick02Icon, size: 14, className: "text-white" }))));
|
|
1089
|
+
})), /* @__PURE__ */ import_react17.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react17.default.createElement("button", { disabled: membersCurrentPage <= 1 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react17.default.createElement("button", { disabled: membersCurrentPage >= membersTotalPages || membersTotalPages === 0 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons6.ArrowRight01Icon, size: 12 })))))));
|
|
1072
1090
|
};
|
|
1073
1091
|
|
|
1074
1092
|
// src/components/MobileNav.tsx
|
|
@@ -1091,7 +1109,7 @@ var MobileNav = ({ items }) => {
|
|
|
1091
1109
|
href: item.href,
|
|
1092
1110
|
className: "flex flex-col items-center justify-center gap-1 min-w-14 transition-transform active:scale-95 outline-none"
|
|
1093
1111
|
},
|
|
1094
|
-
/* @__PURE__ */ import_react19.default.createElement("div", { className: `transition-colors duration-300 ${isActive ? "text-black" : "text-
|
|
1112
|
+
/* @__PURE__ */ import_react19.default.createElement("div", { className: `transition-colors duration-300 ${isActive ? "text-black" : "text-stone-400 hover:text-stone-600"}` }, /* @__PURE__ */ import_react19.default.createElement(
|
|
1095
1113
|
import_react20.HugeiconsIcon,
|
|
1096
1114
|
{
|
|
1097
1115
|
icon: item.icon,
|
|
@@ -1101,7 +1119,7 @@ var MobileNav = ({ items }) => {
|
|
|
1101
1119
|
/* @__PURE__ */ import_react19.default.createElement(
|
|
1102
1120
|
"span",
|
|
1103
1121
|
{
|
|
1104
|
-
className: `text-
|
|
1122
|
+
className: `text-xs tracking-wide transition-colors duration-300 ${isActive ? "text-black" : "text-stone-400"}`
|
|
1105
1123
|
},
|
|
1106
1124
|
item.label
|
|
1107
1125
|
)
|
|
@@ -1125,7 +1143,7 @@ var TextInput = ({
|
|
|
1125
1143
|
readOnly,
|
|
1126
1144
|
type = "text",
|
|
1127
1145
|
onClick
|
|
1128
|
-
}) => /* @__PURE__ */ import_react21.default.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ import_react21.default.createElement("label", { className: "text-
|
|
1146
|
+
}) => /* @__PURE__ */ import_react21.default.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ import_react21.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, label), /* @__PURE__ */ import_react21.default.createElement(
|
|
1129
1147
|
"input",
|
|
1130
1148
|
{
|
|
1131
1149
|
type,
|
|
@@ -1136,7 +1154,7 @@ var TextInput = ({
|
|
|
1136
1154
|
readOnly,
|
|
1137
1155
|
autoComplete: "off",
|
|
1138
1156
|
spellCheck: "false",
|
|
1139
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-
|
|
1157
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-black disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
1140
1158
|
}
|
|
1141
1159
|
));
|
|
1142
1160
|
var NumberInput = ({
|
|
@@ -1146,7 +1164,7 @@ var NumberInput = ({
|
|
|
1146
1164
|
placeholder,
|
|
1147
1165
|
maxLength,
|
|
1148
1166
|
disabled
|
|
1149
|
-
}) => /* @__PURE__ */ import_react21.default.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ import_react21.default.createElement("label", { className: "text-
|
|
1167
|
+
}) => /* @__PURE__ */ import_react21.default.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ import_react21.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, label), /* @__PURE__ */ import_react21.default.createElement(
|
|
1150
1168
|
"input",
|
|
1151
1169
|
{
|
|
1152
1170
|
type: "text",
|
|
@@ -1159,7 +1177,7 @@ var NumberInput = ({
|
|
|
1159
1177
|
disabled,
|
|
1160
1178
|
autoComplete: "off",
|
|
1161
1179
|
spellCheck: "false",
|
|
1162
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-
|
|
1180
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-black disabled:opacity-50"
|
|
1163
1181
|
}
|
|
1164
1182
|
));
|
|
1165
1183
|
|
|
@@ -1189,7 +1207,7 @@ var Banner = ({
|
|
|
1189
1207
|
titleColor: "text-[#143731]",
|
|
1190
1208
|
msgColor: "text-[#143731]",
|
|
1191
1209
|
defaultIcon: import_core_free_icons7.CheckmarkBadge01Icon,
|
|
1192
|
-
closeHover: "hover:bg-
|
|
1210
|
+
closeHover: "hover:bg-stone-50 text-stone-500"
|
|
1193
1211
|
},
|
|
1194
1212
|
warning: {
|
|
1195
1213
|
bg: "bg-[#ceff8a22]",
|
|
@@ -1197,7 +1215,7 @@ var Banner = ({
|
|
|
1197
1215
|
titleColor: "text-[#143731]",
|
|
1198
1216
|
msgColor: "text-[#143731]",
|
|
1199
1217
|
defaultIcon: import_core_free_icons7.InformationCircleIcon,
|
|
1200
|
-
closeHover: "hover:bg-
|
|
1218
|
+
closeHover: "hover:bg-stone-50 text-stone-500"
|
|
1201
1219
|
},
|
|
1202
1220
|
alert: {
|
|
1203
1221
|
bg: "bg-[#ff6b6b22]",
|
|
@@ -1205,11 +1223,11 @@ var Banner = ({
|
|
|
1205
1223
|
titleColor: "text-[#143731]",
|
|
1206
1224
|
msgColor: "text-[#143731]",
|
|
1207
1225
|
defaultIcon: import_core_free_icons7.Alert02Icon,
|
|
1208
|
-
closeHover: "hover:bg-
|
|
1226
|
+
closeHover: "hover:bg-stone-50 text-stone-500"
|
|
1209
1227
|
}
|
|
1210
1228
|
};
|
|
1211
1229
|
const currentConfig = config[type];
|
|
1212
|
-
return /* @__PURE__ */ import_react22.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ import_react22.default.createElement("h4", { className: `text-
|
|
1230
|
+
return /* @__PURE__ */ import_react22.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ import_react22.default.createElement("h4", { className: `text-xs tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react22.default.createElement("p", { className: `text-sm leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react22.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react22.default.createElement(
|
|
1213
1231
|
"button",
|
|
1214
1232
|
{
|
|
1215
1233
|
onClick: handleDismiss,
|
|
@@ -1222,7 +1240,7 @@ var Banner = ({
|
|
|
1222
1240
|
// src/components/UniversalOrganizationPage.tsx
|
|
1223
1241
|
var import_react25 = require("@hugeicons/react");
|
|
1224
1242
|
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1225
|
-
var InputSpinner2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { className: "animate-spin h-4 w-4 text-
|
|
1243
|
+
var InputSpinner2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { className: "animate-spin h-4 w-4 text-stone-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react24.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react24.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
1226
1244
|
var UniversalOrganizationPage = ({
|
|
1227
1245
|
initialOrgName,
|
|
1228
1246
|
initialSlug,
|
|
@@ -1318,11 +1336,11 @@ var UniversalOrganizationPage = ({
|
|
|
1318
1336
|
"button",
|
|
1319
1337
|
{
|
|
1320
1338
|
onClick: onBackHandler,
|
|
1321
|
-
className: "flex items-center gap-2 text-
|
|
1339
|
+
className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none"
|
|
1322
1340
|
},
|
|
1323
1341
|
/* @__PURE__ */ import_react24.default.createElement(import_react25.HugeiconsIcon, { icon: import_core_free_icons8.ArrowLeft01Icon, size: 16 }),
|
|
1324
1342
|
" Back"
|
|
1325
|
-
)), /* @__PURE__ */ import_react24.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react24.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react24.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react24.default.createElement("div", null, /* @__PURE__ */ import_react24.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react24.default.createElement("p", { className: "text-xs text-
|
|
1343
|
+
)), /* @__PURE__ */ import_react24.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react24.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react24.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react24.default.createElement("div", null, /* @__PURE__ */ import_react24.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react24.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ import_react24.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react24.default.createElement(import_react25.HugeiconsIcon, { icon: import_core_free_icons8.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react24.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react24.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react24.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react24.default.createElement(
|
|
1326
1344
|
TextInput,
|
|
1327
1345
|
{
|
|
1328
1346
|
label: "Display Name",
|
|
@@ -1342,7 +1360,7 @@ var UniversalOrganizationPage = ({
|
|
|
1342
1360
|
placeholder: "sovereignuser",
|
|
1343
1361
|
maxLength: 30
|
|
1344
1362
|
}
|
|
1345
|
-
), /* @__PURE__ */ import_react24.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react24.default.createElement("label", { className: "text-
|
|
1363
|
+
), /* @__PURE__ */ import_react24.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react24.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Wallet Username"), /* @__PURE__ */ import_react24.default.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300" }, /* @__PURE__ */ import_react24.default.createElement(
|
|
1346
1364
|
"input",
|
|
1347
1365
|
{
|
|
1348
1366
|
type: "text",
|
|
@@ -1354,7 +1372,7 @@ var UniversalOrganizationPage = ({
|
|
|
1354
1372
|
className: "w-full px-2 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1355
1373
|
placeholder: "sovereign-user-handle"
|
|
1356
1374
|
}
|
|
1357
|
-
), /* @__PURE__ */ import_react24.default.createElement("span", { className: "text-
|
|
1375
|
+
), /* @__PURE__ */ import_react24.default.createElement("span", { className: "text-stone-400 text-sm py-3 pr-8 shrink-0 whitespace-nowrap" }, slugPrefixUrl), /* @__PURE__ */ import_react24.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react24.default.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react24.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react24.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react24.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react24.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react24.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react24.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react24.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react24.default.createElement(
|
|
1358
1376
|
ThreeDActionButton,
|
|
1359
1377
|
{
|
|
1360
1378
|
type: "submit",
|
|
@@ -1372,7 +1390,7 @@ var UniversalOrganizationPage = ({
|
|
|
1372
1390
|
setSlug(initialSlug);
|
|
1373
1391
|
setUsername(resolvedInitialUsername);
|
|
1374
1392
|
},
|
|
1375
|
-
className: "text-
|
|
1393
|
+
className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none"
|
|
1376
1394
|
},
|
|
1377
1395
|
"Cancel"
|
|
1378
1396
|
))))));
|
|
@@ -1478,11 +1496,11 @@ var UniversalProfileSettings = ({
|
|
|
1478
1496
|
"button",
|
|
1479
1497
|
{
|
|
1480
1498
|
onClick: onBackHandler,
|
|
1481
|
-
className: "flex items-center gap-2 text-
|
|
1499
|
+
className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none"
|
|
1482
1500
|
},
|
|
1483
1501
|
/* @__PURE__ */ import_react26.default.createElement(import_react27.HugeiconsIcon, { icon: import_core_free_icons9.ArrowLeft01Icon, size: 16 }),
|
|
1484
1502
|
" Back"
|
|
1485
|
-
)), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react26.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react26.default.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react26.default.createElement("p", { className: "text-xs text-
|
|
1503
|
+
)), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react26.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react26.default.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react26.default.createElement("p", { className: "text-xs text-stone-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react26.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react26.default.createElement(import_react27.HugeiconsIcon, { icon: import_core_free_icons9.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react26.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react26.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react26.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react26.default.createElement(
|
|
1486
1504
|
TextInput,
|
|
1487
1505
|
{
|
|
1488
1506
|
label: "First Name",
|
|
@@ -1509,12 +1527,12 @@ var UniversalProfileSettings = ({
|
|
|
1509
1527
|
},
|
|
1510
1528
|
disabled: true
|
|
1511
1529
|
}
|
|
1512
|
-
), /* @__PURE__ */ import_react26.default.createElement("p", { className: "text-
|
|
1530
|
+
), /* @__PURE__ */ import_react26.default.createElement("p", { className: "text-xs text-stone-500 mt-1 truncate" }, "To change your primary number, please contact support.")), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react26.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em] block truncate" }, "Account Status"), /* @__PURE__ */ import_react26.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react26.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react26.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em] block truncate" }, "Member Since"), /* @__PURE__ */ import_react26.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A")), /* @__PURE__ */ import_react26.default.createElement("div", { className: "min-w-0 pl-4" }, /* @__PURE__ */ import_react26.default.createElement(
|
|
1513
1531
|
"button",
|
|
1514
1532
|
{
|
|
1515
1533
|
type: "button",
|
|
1516
1534
|
onClick: () => setIsPasscodeModalOpen(true),
|
|
1517
|
-
className: "w-9 h-9 flex items-center justify-center border border-
|
|
1535
|
+
className: "w-9 h-9 flex items-center justify-center border border-stone-200 rounded-full text-black hover:bg-stone-50 transition-colors outline-none"
|
|
1518
1536
|
},
|
|
1519
1537
|
/* @__PURE__ */ import_react26.default.createElement(import_react27.HugeiconsIcon, { icon: import_core_free_icons9.LockKeyIcon, size: 17, className: "text-black" })
|
|
1520
1538
|
))), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react26.default.createElement(
|
|
@@ -1525,7 +1543,7 @@ var UniversalProfileSettings = ({
|
|
|
1525
1543
|
setFirstName(initialFirstName);
|
|
1526
1544
|
setLastName(initialLastName);
|
|
1527
1545
|
},
|
|
1528
|
-
className: "text-
|
|
1546
|
+
className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
|
|
1529
1547
|
},
|
|
1530
1548
|
"Cancel"
|
|
1531
1549
|
), /* @__PURE__ */ import_react26.default.createElement(
|
|
@@ -1537,7 +1555,7 @@ var UniversalProfileSettings = ({
|
|
|
1537
1555
|
className: "min-w-32 w-full sm:w-auto"
|
|
1538
1556
|
},
|
|
1539
1557
|
"Save Changes"
|
|
1540
|
-
))))), isPasscodeModalOpen && /* @__PURE__ */ import_react26.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ import_react26.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react26.default.createElement("h3", { className: "text-
|
|
1558
|
+
))))), isPasscodeModalOpen && /* @__PURE__ */ import_react26.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ import_react26.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react26.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ import_react26.default.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react26.default.createElement(import_react27.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react26.default.createElement("div", { className: "p-6" }, isPasscodeLoading ? /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ import_react26.default.createElement(import_react27.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, size: 28, className: "animate-spin text-stone-400 mb-4" })) : /* @__PURE__ */ import_react26.default.createElement("form", { onSubmit: handlePasscodeSubmit, className: "flex flex-col gap-6" }, hasPasscode && /* @__PURE__ */ import_react26.default.createElement(
|
|
1541
1559
|
TextInput,
|
|
1542
1560
|
{
|
|
1543
1561
|
type: "password",
|
|
@@ -1603,7 +1621,7 @@ var PageSpinner = ({
|
|
|
1603
1621
|
{
|
|
1604
1622
|
icon: import_core_free_icons10.Loading03Icon,
|
|
1605
1623
|
size,
|
|
1606
|
-
className: `animate-spin text-[#
|
|
1624
|
+
className: `animate-spin text-[#062c25] mb-4 ${iconClassName}`
|
|
1607
1625
|
}
|
|
1608
1626
|
))
|
|
1609
1627
|
);
|
|
@@ -1640,11 +1658,11 @@ var UniversalErrorView = ({
|
|
|
1640
1658
|
title = "Access Restricted";
|
|
1641
1659
|
description = apiMessage || `You have insufficient permissions to view this ${envName}. Please contact your administrator.`;
|
|
1642
1660
|
}
|
|
1643
|
-
return /* @__PURE__ */ import_react30.default.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ import_react30.default.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ import_react30.default.createElement(import_react31.HugeiconsIcon, { icon: IconComponent, size: 48, className: "text-
|
|
1661
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ import_react30.default.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ import_react30.default.createElement(import_react31.HugeiconsIcon, { icon: IconComponent, size: 48, className: "text-stone-300" })), /* @__PURE__ */ import_react30.default.createElement("h2", { className: "text-lg text-black tracking-tight " }, title), /* @__PURE__ */ import_react30.default.createElement("p", { className: "text-xs mt-2 mb-8 text-stone-500 max-w-sm text-center leading-relaxed" }, description), /* @__PURE__ */ import_react30.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full justify-center sm:w-auto" }, isNotFoundError || isPermissionError ? /* @__PURE__ */ import_react30.default.createElement(
|
|
1644
1662
|
"button",
|
|
1645
1663
|
{
|
|
1646
1664
|
onClick: () => window.location.href = returnUrl,
|
|
1647
|
-
className: "px-6 py-2 text-black border border-
|
|
1665
|
+
className: "px-6 py-2 text-black border border-stone-200 hover:bg-stone-50 rounded-full text-xs tracking-widest transition-colors w-full sm:w-auto outline-none "
|
|
1648
1666
|
},
|
|
1649
1667
|
returnLabel
|
|
1650
1668
|
) : (
|
|
@@ -1653,14 +1671,14 @@ var UniversalErrorView = ({
|
|
|
1653
1671
|
"button",
|
|
1654
1672
|
{
|
|
1655
1673
|
onClick: () => window.location.href = returnUrl,
|
|
1656
|
-
className: "px-6 py-2 bg-transparent border border-
|
|
1674
|
+
className: "px-6 py-2 bg-transparent border border-stone-200 text-stone-500 hover:text-black hover:bg-stone-50 rounded-full text-xs tracking-widest transition-colors w-full sm:w-auto outline-none "
|
|
1657
1675
|
},
|
|
1658
1676
|
"Back Home"
|
|
1659
1677
|
), /* @__PURE__ */ import_react30.default.createElement(
|
|
1660
1678
|
"button",
|
|
1661
1679
|
{
|
|
1662
1680
|
onClick: onRetry,
|
|
1663
|
-
className: "px-6 py-2 bg-black text-white hover:bg-
|
|
1681
|
+
className: "px-6 py-2 bg-black text-white hover:bg-stone-800 rounded-full text-xs tracking-widest transition-colors w-full sm:w-auto outline-none capitalize "
|
|
1664
1682
|
},
|
|
1665
1683
|
"Refresh ",
|
|
1666
1684
|
envName
|
|
@@ -1698,7 +1716,7 @@ var getStatusClasses = (status) => {
|
|
|
1698
1716
|
case "REVERSED":
|
|
1699
1717
|
return "text-sky-700 bg-sky-100";
|
|
1700
1718
|
default:
|
|
1701
|
-
return "text-
|
|
1719
|
+
return "text-stone-500 bg-stone-50";
|
|
1702
1720
|
}
|
|
1703
1721
|
};
|
|
1704
1722
|
var UniversalTransactionPage = ({
|
|
@@ -1775,44 +1793,44 @@ var UniversalTransactionPage = ({
|
|
|
1775
1793
|
}
|
|
1776
1794
|
};
|
|
1777
1795
|
const isListLoading = isLoading || isTyping;
|
|
1778
|
-
return /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react32.default.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.Search01Icon, size: 16, className: "text-
|
|
1796
|
+
return /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react32.default.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react32.default.createElement(
|
|
1779
1797
|
"input",
|
|
1780
1798
|
{
|
|
1781
1799
|
type: "text",
|
|
1782
1800
|
placeholder: "Search reference or amount...",
|
|
1783
1801
|
value: localSearchQuery,
|
|
1784
1802
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1785
|
-
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-
|
|
1803
|
+
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black"
|
|
1786
1804
|
}
|
|
1787
1805
|
)), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1788
1806
|
"button",
|
|
1789
1807
|
{
|
|
1790
1808
|
onClick: () => setIsDirectionModalOpen(true),
|
|
1791
|
-
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-
|
|
1809
|
+
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none"
|
|
1792
1810
|
},
|
|
1793
1811
|
/* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.SearchList02Icon, size: 16 })
|
|
1794
1812
|
), /* @__PURE__ */ import_react32.default.createElement(
|
|
1795
1813
|
"button",
|
|
1796
1814
|
{
|
|
1797
1815
|
onClick: () => setIsTypeModalOpen(true),
|
|
1798
|
-
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-
|
|
1816
|
+
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none"
|
|
1799
1817
|
},
|
|
1800
1818
|
/* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.ListSettingIcon, size: 16 })
|
|
1801
|
-
))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-xs text-
|
|
1819
|
+
))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-xs text-stone-500" }, headerDescription))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full overflow-hidden" }, isListLoading ? /* @__PURE__ */ import_react32.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react32.default.createElement("div", null, transactions.length === 0 ? /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No transactions found") : transactions.map((tx) => /* @__PURE__ */ import_react32.default.createElement(
|
|
1802
1820
|
"div",
|
|
1803
1821
|
{
|
|
1804
1822
|
key: tx.id,
|
|
1805
1823
|
onClick: () => setSelectedTransaction(tx),
|
|
1806
|
-
className: "flex items-center justify-between py-4 hover:bg-
|
|
1824
|
+
className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
1807
1825
|
},
|
|
1808
|
-
/* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-
|
|
1809
|
-
/* @__PURE__ */ import_react32.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-
|
|
1810
|
-
))), !hidePagination && /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-
|
|
1826
|
+
/* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-stone-200 text-black` }, /* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: tx.direction === "CREDIT" ? import_core_free_icons12.ArrowDownRight01Icon : import_core_free_icons12.ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ import_react32.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-sm text-black truncate" }, tx.name), /* @__PURE__ */ import_react32.default.createElement("p", { className: `text-xs text-stone-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.amount))),
|
|
1827
|
+
/* @__PURE__ */ import_react32.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs text-stone-400" }, formatDate2(tx.createdAt)), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs text-stone-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1828
|
+
))), !hidePagination && /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1811
1829
|
"button",
|
|
1812
1830
|
{
|
|
1813
1831
|
onClick: () => onPageChange(currentPage - 1),
|
|
1814
1832
|
disabled: currentPage <= 1 || isListLoading,
|
|
1815
|
-
className: "p-2 bg-white border border-
|
|
1833
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1816
1834
|
},
|
|
1817
1835
|
/* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.ArrowLeft01Icon, size: 14 })
|
|
1818
1836
|
), /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -1820,21 +1838,21 @@ var UniversalTransactionPage = ({
|
|
|
1820
1838
|
{
|
|
1821
1839
|
onClick: () => onPageChange(currentPage + 1),
|
|
1822
1840
|
disabled: currentPage >= totalPages || isListLoading || totalPages === 0,
|
|
1823
|
-
className: "p-2 bg-white border border-
|
|
1841
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1824
1842
|
},
|
|
1825
1843
|
/* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.ArrowRight01Icon, size: 14 })
|
|
1826
|
-
)))))), selectedTransaction && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react32.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-
|
|
1844
|
+
)))))), selectedTransaction && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react32.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react32.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 border border-stone-200 text-black` }, /* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons12.ArrowDownRight01Icon : import_core_free_icons12.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react32.default.createElement("p", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.amount), /* @__PURE__ */ import_react32.default.createElement("span", { className: `text-xs tracking-widest px-4 py-1.5 rounded-full ${getStatusClasses(selectedTransaction.status)}` }, selectedTransaction.status)), /* @__PURE__ */ import_react32.default.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black truncate min-w-0 block" }, truncateReference(selectedTransaction.reference)), /* @__PURE__ */ import_react32.default.createElement(
|
|
1827
1845
|
"button",
|
|
1828
1846
|
{
|
|
1829
1847
|
onClick: () => handleCopyReference(selectedTransaction.reference),
|
|
1830
|
-
className: "text-
|
|
1848
|
+
className: "text-stone-400 hover:text-black transition-colors outline-none"
|
|
1831
1849
|
},
|
|
1832
1850
|
/* @__PURE__ */ import_react32.default.createElement(import_react33.HugeiconsIcon, { icon: import_core_free_icons12.Copy01Icon, size: 14 })
|
|
1833
|
-
))), /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-
|
|
1851
|
+
))), /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Description"), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black" }, selectedTransaction.description)), /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-2 text-sm text-black" }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-stone-400" }, "\u2192"), /* @__PURE__ */ import_react32.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1834
1852
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1835
1853
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
1836
1854
|
const formattedKey = key.includes(" ") ? key : key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
|
|
1837
|
-
return /* @__PURE__ */ import_react32.default.createElement("div", { key }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-
|
|
1855
|
+
return /* @__PURE__ */ import_react32.default.createElement("div", { key }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, formattedKey), /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-sm text-black break-all" }, String(value)));
|
|
1838
1856
|
})), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1839
1857
|
ThreeDActionButton,
|
|
1840
1858
|
{
|
|
@@ -1847,10 +1865,10 @@ var UniversalTransactionPage = ({
|
|
|
1847
1865
|
"button",
|
|
1848
1866
|
{
|
|
1849
1867
|
onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
|
|
1850
|
-
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-
|
|
1868
|
+
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide mt-2"
|
|
1851
1869
|
},
|
|
1852
1870
|
"Report Transaction"
|
|
1853
|
-
))))), isDirectionModalOpen && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ import_react32.default.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-
|
|
1871
|
+
))))), isDirectionModalOpen && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ import_react32.default.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Payment Type")), /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "CREDIT", "DEBIT"].map((option) => /* @__PURE__ */ import_react32.default.createElement(
|
|
1854
1872
|
"button",
|
|
1855
1873
|
{
|
|
1856
1874
|
key: option,
|
|
@@ -1858,17 +1876,17 @@ var UniversalTransactionPage = ({
|
|
|
1858
1876
|
onDirectionFilterChange(option);
|
|
1859
1877
|
setIsDirectionModalOpen(false);
|
|
1860
1878
|
},
|
|
1861
|
-
className: `text-left px-4 py-3 text-
|
|
1879
|
+
className: `text-left px-4 py-3 text-xs tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeDirectionFilter === option ? "bg-stone-100 text-black " : "text-stone-500 hover:bg-stone-50 hover:text-black"}`
|
|
1862
1880
|
},
|
|
1863
1881
|
/* @__PURE__ */ import_react32.default.createElement("span", { className: "truncate pr-2" }, option.charAt(0).toUpperCase() + option.slice(1).toLowerCase())
|
|
1864
1882
|
))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full flex mt-2 " }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1865
1883
|
"button",
|
|
1866
1884
|
{
|
|
1867
1885
|
onClick: () => setIsDirectionModalOpen(false),
|
|
1868
|
-
className: "w-full py-4 text-
|
|
1886
|
+
className: "w-full py-4 text-sm text-stone-500 hover:text-black transition-colors outline-none "
|
|
1869
1887
|
},
|
|
1870
1888
|
"Cancel"
|
|
1871
|
-
)))), isTypeModalOpen && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsTypeModalOpen(false) }), /* @__PURE__ */ import_react32.default.createElement("div", { ref: typeDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-
|
|
1889
|
+
)))), isTypeModalOpen && /* @__PURE__ */ import_react32.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsTypeModalOpen(false) }), /* @__PURE__ */ import_react32.default.createElement("div", { ref: typeDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react32.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Transactions Type")), /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, [
|
|
1872
1890
|
{ label: "All Transactions", value: "ALL" },
|
|
1873
1891
|
{ label: "Wallet Transactions", value: "WALLET_TRANSACTION" },
|
|
1874
1892
|
{ label: "Card Transactions", value: "CARD_TRANSACTION" }
|
|
@@ -1880,14 +1898,14 @@ var UniversalTransactionPage = ({
|
|
|
1880
1898
|
onTypeFilterChange(option.value);
|
|
1881
1899
|
setIsTypeModalOpen(false);
|
|
1882
1900
|
},
|
|
1883
|
-
className: `text-left px-4 py-3 text-
|
|
1901
|
+
className: `text-left px-4 py-3 text-xs tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTypeFilter === option.value ? "bg-stone-100 text-black " : "text-stone-500 hover:bg-stone-50 hover:text-black"}`
|
|
1884
1902
|
},
|
|
1885
1903
|
/* @__PURE__ */ import_react32.default.createElement("span", { className: "truncate pr-2" }, option.label.charAt(0).toUpperCase() + option.label.slice(1).toLowerCase())
|
|
1886
1904
|
))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "w-full flex mt-2 " }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1887
1905
|
"button",
|
|
1888
1906
|
{
|
|
1889
1907
|
onClick: () => setIsTypeModalOpen(false),
|
|
1890
|
-
className: "w-full py-4 text-
|
|
1908
|
+
className: "w-full py-4 text-sm text-stone-500 hover:text-black transition-colors outline-none "
|
|
1891
1909
|
},
|
|
1892
1910
|
"Cancel"
|
|
1893
1911
|
)))));
|
|
@@ -1920,7 +1938,7 @@ var UniversalHomeView = ({
|
|
|
1920
1938
|
const fallbackAvatarUrl = `/api/avatar/?name=${encodeURIComponent(fullName || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
1921
1939
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
1922
1940
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
1923
|
-
return /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-10 h-10 rounded-full bg-white p-0.75 flex items-center justify-center cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-
|
|
1941
|
+
return /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-10 h-10 rounded-full bg-white p-0.75 flex items-center justify-center cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-stone-100 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ import_react34.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-stone-100" }, /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ import_react34.default.createElement(
|
|
1924
1942
|
"img",
|
|
1925
1943
|
{
|
|
1926
1944
|
src: finalAvatarSrc,
|
|
@@ -1935,7 +1953,7 @@ var UniversalHomeView = ({
|
|
|
1935
1953
|
setShowNotifDialog(true);
|
|
1936
1954
|
setSelectedNotif(null);
|
|
1937
1955
|
},
|
|
1938
|
-
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-
|
|
1956
|
+
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
|
|
1939
1957
|
},
|
|
1940
1958
|
/* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.Notification01Icon, size: 20, className: "text-black" }),
|
|
1941
1959
|
hasUnreadNotifs && /* @__PURE__ */ import_react34.default.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
|
|
@@ -1945,7 +1963,7 @@ var UniversalHomeView = ({
|
|
|
1945
1963
|
onClick: buyCryptoAction?.onClick,
|
|
1946
1964
|
className: "bg-[#143731] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
1947
1965
|
},
|
|
1948
|
-
/* @__PURE__ */ import_react34.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-
|
|
1966
|
+
/* @__PURE__ */ import_react34.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-sm sm:text-sm text-white leading-tight " }, "Buy", /* @__PURE__ */ import_react34.default.createElement("br", null), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-white/70" }, "Crypto")), /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.ArrowUpRight01Icon, size: 16, className: "text-white" }))),
|
|
1949
1967
|
/* @__PURE__ */ import_react34.default.createElement(
|
|
1950
1968
|
"img",
|
|
1951
1969
|
{
|
|
@@ -1960,7 +1978,7 @@ var UniversalHomeView = ({
|
|
|
1960
1978
|
onClick: referralAction?.onClick,
|
|
1961
1979
|
className: "bg-[#ceff8a] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
1962
1980
|
},
|
|
1963
|
-
/* @__PURE__ */ import_react34.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-
|
|
1981
|
+
/* @__PURE__ */ import_react34.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-sm sm:text-sm text-black leading-tight " }, "My", /* @__PURE__ */ import_react34.default.createElement("br", null), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-black/60" }, "Rewards")), /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 16, className: "text-black" }))),
|
|
1964
1982
|
/* @__PURE__ */ import_react34.default.createElement(
|
|
1965
1983
|
"img",
|
|
1966
1984
|
{
|
|
@@ -1977,7 +1995,7 @@ var UniversalHomeView = ({
|
|
|
1977
1995
|
hideBalanceAmounts: false,
|
|
1978
1996
|
hidePagination: true
|
|
1979
1997
|
}
|
|
1980
|
-
)), showNotifDialog && /* @__PURE__ */ import_react34.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react34.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ import_react34.default.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-
|
|
1998
|
+
)), showNotifDialog && /* @__PURE__ */ import_react34.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react34.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ import_react34.default.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-stone-400 hover:text-black transition-colors outline-none flex items-center gap-2 text-xs tracking-widest " }, /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react34.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications", isNotifsLoading && /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 14, className: "animate-spin text-stone-400" })), /* @__PURE__ */ import_react34.default.createElement("button", { onClick: () => setShowNotifDialog(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, selectedNotif ? /* @__PURE__ */ import_react34.default.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ import_react34.default.createElement("h4", { className: "text-sm text-black mb-1 " }, selectedNotif.title), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block " }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message)) : /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex flex-col divide-y divide-stone-50/50" }, notifications?.length === 0 && !isNotifsLoading ? /* @__PURE__ */ import_react34.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "You have no notifications.") : notifications?.map((notif) => /* @__PURE__ */ import_react34.default.createElement(
|
|
1981
1999
|
"div",
|
|
1982
2000
|
{
|
|
1983
2001
|
key: notif.id,
|
|
@@ -1985,16 +2003,16 @@ var UniversalHomeView = ({
|
|
|
1985
2003
|
setSelectedNotif(notif);
|
|
1986
2004
|
onNotificationClick?.(notif);
|
|
1987
2005
|
},
|
|
1988
|
-
className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-
|
|
2006
|
+
className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-stone-50"}`
|
|
1989
2007
|
},
|
|
1990
2008
|
/* @__PURE__ */ import_react34.default.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-1.5 h-1.5 bg-red-500 rounded-full" }) : /* @__PURE__ */ import_react34.default.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
|
|
1991
|
-
/* @__PURE__ */ import_react34.default.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ import_react34.default.createElement("h5", { className: `text-
|
|
1992
|
-
)))), !selectedNotif && /* @__PURE__ */ import_react34.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 " }, /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-
|
|
2009
|
+
/* @__PURE__ */ import_react34.default.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ import_react34.default.createElement("h5", { className: `text-xs truncate ${notif.isRead ? "text-stone-500" : "text-black "}` }, notif.title), /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-xs text-stone-400 truncate mt-0.5" }, notif.message), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mt-2 block " }, formatNotifDate(notif.createdAt)))
|
|
2010
|
+
)))), !selectedNotif && /* @__PURE__ */ import_react34.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 " }, /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest " }, "Page ", notificationPage, " of ", notificationTotalPages === 0 ? 1 : notificationTotalPages), /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react34.default.createElement(
|
|
1993
2011
|
"button",
|
|
1994
2012
|
{
|
|
1995
2013
|
disabled: notificationPage <= 1 || isNotifsLoading,
|
|
1996
2014
|
onClick: () => onNotificationPageChange?.(notificationPage - 1),
|
|
1997
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
2015
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
1998
2016
|
},
|
|
1999
2017
|
/* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 12 })
|
|
2000
2018
|
), /* @__PURE__ */ import_react34.default.createElement(
|
|
@@ -2002,7 +2020,7 @@ var UniversalHomeView = ({
|
|
|
2002
2020
|
{
|
|
2003
2021
|
disabled: notificationPage >= notificationTotalPages || notificationTotalPages === 0 || isNotifsLoading,
|
|
2004
2022
|
onClick: () => onNotificationPageChange?.(notificationPage + 1),
|
|
2005
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
2023
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
2006
2024
|
},
|
|
2007
2025
|
/* @__PURE__ */ import_react34.default.createElement(import_react35.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 12 })
|
|
2008
2026
|
))))));
|
|
@@ -2020,7 +2038,7 @@ var truncateAddress2 = (ref) => {
|
|
|
2020
2038
|
};
|
|
2021
2039
|
var WalletLogo = ({ src, alt, sizeClass = "w-10 h-10" }) => {
|
|
2022
2040
|
const [isLoaded, setIsLoaded] = (0, import_react36.useState)(false);
|
|
2023
|
-
return /* @__PURE__ */ import_react36.default.createElement("div", { className: `relative shrink-0 rounded-full bg-
|
|
2041
|
+
return /* @__PURE__ */ import_react36.default.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 16, className: "animate-spin text-stone-400 absolute" }), /* @__PURE__ */ import_react36.default.createElement("img", { src, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
2024
2042
|
};
|
|
2025
2043
|
var UniversalWalletPage = ({
|
|
2026
2044
|
headerTitle,
|
|
@@ -2158,16 +2176,16 @@ var UniversalWalletPage = ({
|
|
|
2158
2176
|
setIsProcessing(false);
|
|
2159
2177
|
}
|
|
2160
2178
|
};
|
|
2161
|
-
return /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react36.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-
|
|
2179
|
+
return /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react36.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react36.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react36.default.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react36.default.createElement(
|
|
2162
2180
|
"input",
|
|
2163
2181
|
{
|
|
2164
2182
|
type: "text",
|
|
2165
2183
|
placeholder: "Search wallets by name or network...",
|
|
2166
2184
|
value: localSearchQuery,
|
|
2167
2185
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
2168
|
-
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-
|
|
2186
|
+
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black"
|
|
2169
2187
|
}
|
|
2170
|
-
)), !external && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react36.default.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-
|
|
2188
|
+
)), !external && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react36.default.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.PlusSignIcon, size: 16 })), /* @__PURE__ */ import_react36.default.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Upload01Icon, size: 16 })))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-xs text-stone-500" }, headerDescription))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react36.default.createElement(PageSpinner3, null) : /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react36.default.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ import_react36.default.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ import_react36.default.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react36.default.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ import_react36.default.createElement("span", { className: `text-xs px-1.5 py-0.5 rounded-sm tracking-widest ${wallet.isActive ? "bg-emerald-50 text-emerald-600" : "bg-red-50 text-red-600"}` }, wallet.isActive ? "Active" : "Inactive")), /* @__PURE__ */ import_react36.default.createElement("p", { className: `text-sm text-stone-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs tracking-wide text-stone-600 bg-stone-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react36.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ import_react36.default.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ import_react36.default.createElement(Banner, { type: "alert", title: "Critical Warning", message: "You are about to generate a Self-Custodial Recovery Phrase. This phrase is the absolute master key to your wallet and all assets within it. Aeona DOES NOT store this phrase. If you lose it, your funds are permanently lost. Do not share this phrase with anyone.", isDismissible: false }), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-stone-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ import_react36.default.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-48 overflow-y-auto custom-scrollbar pr-1" }, generatedPhrase.split(" ").map((word, idx) => /* @__PURE__ */ import_react36.default.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-stone-50 rounded-lg p-2 selection:bg-stone-100" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs text-stone-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-sm text-black " }, word)))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Copy01Icon, size: 14 }), " Copy Phrase"), /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-stone-200 mt-2" }, /* @__PURE__ */ import_react36.default.createElement("input", { type: "checkbox", id: "backup-confirm", checked: hasBackedUp, onChange: (e) => setHasBackedUp(e.target.checked), className: "mt-0.5 w-4 h-4 bg-white border-stone-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ import_react36.default.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-stone-600 cursor-pointer leading-relaxed" }, "I have securely copied and stored my recovery phrase. I understand that if I lose it, my funds are gone forever.")), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-stone-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ import_react36.default.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, verifyWords.map((word, idx) => /* @__PURE__ */ import_react36.default.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-stone-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs text-stone-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ import_react36.default.createElement(
|
|
2171
2189
|
"input",
|
|
2172
2190
|
{
|
|
2173
2191
|
type: "text",
|
|
@@ -2190,9 +2208,9 @@ var UniversalWalletPage = ({
|
|
|
2190
2208
|
import_react_hot_toast6.default.success("Phrase auto-filled.");
|
|
2191
2209
|
}
|
|
2192
2210
|
},
|
|
2193
|
-
className: "w-full bg-transparent text-
|
|
2211
|
+
className: "w-full bg-transparent text-sm text-black outline-none min-w-0"
|
|
2194
2212
|
}
|
|
2195
|
-
)))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setVerifyWords, verifyWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Verify Backup")), flowStep === 4 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement(Banner, { type: "success", title: "Phrase Verified", message: "Your phrase is correct. Now set a local password to encrypt your wallet on this browser.", isDismissible: false }), /* @__PURE__ */ import_react36.default.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("generated"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Save Wallet"))))), importModalOpen && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setImportModalOpen(false) }), /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react36.default.createElement("h3", { className: "text-
|
|
2213
|
+
)))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setVerifyWords, verifyWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Verify Backup")), flowStep === 4 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement(Banner, { type: "success", title: "Phrase Verified", message: "Your phrase is correct. Now set a local password to encrypt your wallet on this browser.", isDismissible: false }), /* @__PURE__ */ import_react36.default.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("generated"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Save Wallet"))))), importModalOpen && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setImportModalOpen(false) }), /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react36.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Import Wallet"), /* @__PURE__ */ import_react36.default.createElement("button", { onClick: () => !isProcessing && setImportModalOpen(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-stone-600" }, "Enter your 12 or 24-word recovery phrase to restore your wallet on this device."), /* @__PURE__ */ import_react36.default.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, importWords.map((word, idx) => /* @__PURE__ */ import_react36.default.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-stone-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs text-stone-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ import_react36.default.createElement(
|
|
2196
2214
|
"input",
|
|
2197
2215
|
{
|
|
2198
2216
|
type: "text",
|
|
@@ -2216,9 +2234,9 @@ var UniversalWalletPage = ({
|
|
|
2216
2234
|
import_react_hot_toast6.default.success("Phrase auto-filled.");
|
|
2217
2235
|
}
|
|
2218
2236
|
},
|
|
2219
|
-
className: "w-full bg-transparent text-
|
|
2237
|
+
className: "w-full bg-transparent text-sm text-black outline-none min-w-0"
|
|
2220
2238
|
}
|
|
2221
|
-
)))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-
|
|
2239
|
+
)))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-sm text-stone-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ import_react36.default.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ import_react36.default.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react36.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react36.default.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ import_react36.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ import_react36.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react36.default.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react36.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-[6px] opacity-40 select-none" : ""}` }, external ? selectedWallet.currency : `${selectedWallet.balance} ${selectedWallet.currency}`), /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs tracking-widest text-stone-500 px-4 py-1.5 rounded-full border border-stone-200 mt-1 " }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ import_react36.default.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, renderQrCode(selectedWallet)), external && /* @__PURE__ */ import_react36.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react36.default.createElement(
|
|
2222
2240
|
Banner,
|
|
2223
2241
|
{
|
|
2224
2242
|
type: "warning",
|
|
@@ -2226,7 +2244,7 @@ var UniversalWalletPage = ({
|
|
|
2226
2244
|
message: `Ensure you only send assets using the exact network specified. Minimum deposit is 15 ${selectedWallet.currency}. Sending funds through an unsupported network or under the minimum will result in permanent loss of funds.`,
|
|
2227
2245
|
isDismissible: false
|
|
2228
2246
|
}
|
|
2229
|
-
)), /* @__PURE__ */ import_react36.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-
|
|
2247
|
+
)), /* @__PURE__ */ import_react36.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-sm text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons14.Copy01Icon, size: 14 })))), !external && /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react36.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ import_react36.default.createElement(
|
|
2230
2248
|
ConfirmationDialog,
|
|
2231
2249
|
{
|
|
2232
2250
|
isOpen: showCopyWarning,
|
|
@@ -2277,7 +2295,7 @@ var UniversalCardPage = ({
|
|
|
2277
2295
|
img.onload = () => setIsBgLoaded(true);
|
|
2278
2296
|
}, [activeCard?.cardBgSrc]);
|
|
2279
2297
|
if (!activeCard || sortedCards.length === 0) {
|
|
2280
|
-
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative min-h-100 justify-center" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react38.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", className: "w-12 h-12 fill-
|
|
2298
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative min-h-100 justify-center" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react38.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", className: "w-12 h-12 fill-stone-100" }, /* @__PURE__ */ import_react38.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" }))), /* @__PURE__ */ import_react38.default.createElement("h1", { className: "text-xl text-black tracking-tight mb-4" }, "No cards available"), /* @__PURE__ */ import_react38.default.createElement("p", { className: "text-sm leading-[1.8] text-stone-600 mb-12" }, "You do not have any active cards on your account.")));
|
|
2281
2299
|
}
|
|
2282
2300
|
const isActivated = activeCard.status === "ACTIVATED";
|
|
2283
2301
|
const isFrozen = activeCard.status === "FROZEN";
|
|
@@ -2286,7 +2304,7 @@ var UniversalCardPage = ({
|
|
|
2286
2304
|
const actionsDisabled = !isActivated && !isFrozen || isDead;
|
|
2287
2305
|
const showActionOverlay = !isActivated && isBgLoaded || isFrozen;
|
|
2288
2306
|
const overlayClasses = activeCard.contentDark ? "bg-white/30 backdrop-blur-[3px]" : "bg-black/30 backdrop-blur-[3px]";
|
|
2289
|
-
const buttonClasses = activeCard.contentDark ? "bg-black text-white hover:bg-black/80 " : "bg-white text-black hover:bg-
|
|
2307
|
+
const buttonClasses = activeCard.contentDark ? "bg-black text-white hover:bg-black/80 " : "bg-white text-black hover:bg-stone-100 ";
|
|
2290
2308
|
const handleToggleFreeze = async () => {
|
|
2291
2309
|
if (actionsDisabled || isFreezing || !onFreeze) return;
|
|
2292
2310
|
setIsFreezing(true);
|
|
@@ -2310,7 +2328,7 @@ var UniversalCardPage = ({
|
|
|
2310
2328
|
{
|
|
2311
2329
|
key: tab.id,
|
|
2312
2330
|
onClick: () => setActiveTabIndex(idx),
|
|
2313
|
-
className: `px-4 py-1.5 rounded-full text-
|
|
2331
|
+
className: `px-4 py-1.5 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${activeTabIndex === idx ? "bg-stone-100 text-black" : "text-stone-500 hover:text-black hover:bg-stone-50/50"}`
|
|
2314
2332
|
},
|
|
2315
2333
|
formatTabLabel(tab.type)
|
|
2316
2334
|
)))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-full pt-2 pb-6 flex justify-center" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative w-full max-w-85", style: { height: 179 } }, !isBgLoaded && /* @__PURE__ */ import_react38.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.Loading03Icon, size: 28, className: "animate-spin text-black" })), showActionOverlay && /* @__PURE__ */ import_react38.default.createElement("div", { className: `absolute inset-0 z-40 w-full h-full rounded-2xl flex flex-col items-center justify-center transition-all ${overlayClasses}` }, isUnactivated && /* @__PURE__ */ import_react38.default.createElement(
|
|
@@ -2320,16 +2338,16 @@ var UniversalCardPage = ({
|
|
|
2320
2338
|
e.stopPropagation();
|
|
2321
2339
|
router.push(`${actionPath}${activeCard.id}`);
|
|
2322
2340
|
},
|
|
2323
|
-
className: `px-6 py-2 text-
|
|
2341
|
+
className: `px-6 py-2 text-xs rounded-full transition-all outline-none ${buttonClasses}`
|
|
2324
2342
|
},
|
|
2325
2343
|
"Activate Card"
|
|
2326
|
-
), isFrozen && /* @__PURE__ */ import_react38.default.createElement("div", { className: `px-6 py-2.5 text-
|
|
2344
|
+
), isFrozen && /* @__PURE__ */ import_react38.default.createElement("div", { className: `px-6 py-2.5 text-xs rounded-full flex items-center gap-2 ${buttonClasses}` }, "Card Frozen")), /* @__PURE__ */ import_react38.default.createElement("div", { className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}` }, /* @__PURE__ */ import_react38.default.createElement(
|
|
2327
2345
|
"div",
|
|
2328
2346
|
{
|
|
2329
2347
|
className: "absolute inset-0 bg-cover bg-center",
|
|
2330
2348
|
style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
|
|
2331
2349
|
}
|
|
2332
|
-
), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-start justify-end w-full gap-4" }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react38.default.createElement("span", { className: `text-
|
|
2350
|
+
), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-start justify-end w-full gap-4" }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react38.default.createElement("span", { className: `text-xs tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/70"} drop-shadow-sm` }, "Balance"), /* @__PURE__ */ import_react38.default.createElement("span", { className: `text-sm tracking-widest ${activeCard.contentDark ? "text-black" : "text-white"} drop-shadow-sm` }, activeCard.balance)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react38.default.createElement(
|
|
2333
2351
|
"img",
|
|
2334
2352
|
{
|
|
2335
2353
|
src: activeCard.networkLogoSrc,
|
|
@@ -2397,7 +2415,7 @@ var UniversalCardPage = ({
|
|
|
2397
2415
|
}
|
|
2398
2416
|
));
|
|
2399
2417
|
};
|
|
2400
|
-
var MenuRow = ({ icon, title, subtitle, onClick, isLast = false, isToggle = false, toggleState = false, toggleLoading = false, disabled = false }) => /* @__PURE__ */ import_react38.default.createElement("div", { onClick: disabled ? void 0 : onClick, className: `flex items-center p-3 transition-colors ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-
|
|
2418
|
+
var MenuRow = ({ icon, title, subtitle, onClick, isLast = false, isToggle = false, toggleState = false, toggleLoading = false, disabled = false }) => /* @__PURE__ */ import_react38.default.createElement("div", { onClick: disabled ? void 0 : onClick, className: `flex items-center p-3 transition-colors ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-stone-50"}` }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-9 h-9 rounded-full border border-stone-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon, size: 16, className: "text-black" })), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react38.default.createElement("p", { className: "text-sm truncate text-black" }, title), /* @__PURE__ */ import_react38.default.createElement("p", { className: "text-xs text-stone-500 truncate" }, subtitle)), isToggle ? /* @__PURE__ */ import_react38.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-stone-100"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react38.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.ArrowRight01Icon, size: 18, className: "text-stone-400 shrink-0 ml-2" }));
|
|
2401
2419
|
var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
|
|
2402
2420
|
if (!isOpen || !cardDetails) return null;
|
|
2403
2421
|
const handleCopy = (text, label) => {
|
|
@@ -2405,7 +2423,7 @@ var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
|
|
|
2405
2423
|
import_react_hot_toast7.default.success(`${label} copied to clipboard`);
|
|
2406
2424
|
};
|
|
2407
2425
|
const formattedCardNumber = cardDetails.card_number.replace(/(.{4})/g, "$1 ").trim();
|
|
2408
|
-
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react38.default.createElement("h3", { className: "text-
|
|
2426
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react38.default.createElement("h3", { className: "text-sm text-black tracking-tight " }, "Secure Card Details"), /* @__PURE__ */ import_react38.default.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 mb-6" }, /* @__PURE__ */ import_react38.default.createElement("div", null, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1.5 " }, "Card Number"), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-stone-200" }, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-sm tracking-widest text-black block" }, formattedCardNumber), /* @__PURE__ */ import_react38.default.createElement("button", { onClick: () => handleCopy(cardDetails.card_number, "Card Number"), className: "text-stone-400 hover:text-black outline-none shrink-0 ml-3" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.Copy01Icon, size: 16 })))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ import_react38.default.createElement("div", null, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1.5 " }, "Expiry Date"), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-stone-200" }, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-sm text-black block" }, cardDetails.expiry), /* @__PURE__ */ import_react38.default.createElement("button", { onClick: () => handleCopy(cardDetails.expiry, "Expiry Date"), className: "text-stone-400 hover:text-black outline-none shrink-0 ml-2" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.Copy01Icon, size: 16 })))), /* @__PURE__ */ import_react38.default.createElement("div", null, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1.5 " }, "CVV"), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-stone-200" }, /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-sm text-black block" }, cardDetails.cvv), /* @__PURE__ */ import_react38.default.createElement("button", { onClick: () => handleCopy(cardDetails.cvv, "CVV"), className: "text-stone-400 hover:text-black outline-none shrink-0 ml-2" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.Copy01Icon, size: 16 })))))))));
|
|
2409
2427
|
};
|
|
2410
2428
|
var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
2411
2429
|
const [amount, setAmount] = (0, import_react38.useState)("");
|
|
@@ -2429,7 +2447,7 @@ var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
|
2429
2447
|
setIsProcessing(false);
|
|
2430
2448
|
}
|
|
2431
2449
|
};
|
|
2432
|
-
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react38.default.createElement("h3", { className: "text-
|
|
2450
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ import_react38.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react38.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Fund Card"), /* @__PURE__ */ import_react38.default.createElement("button", { disabled: isProcessing, onClick: onClose, className: "text-stone-400 hover:text-black outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons15.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex-1 p-6" }, /* @__PURE__ */ import_react38.default.createElement("form", { onSubmit: handleFundCard, className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
2433
2451
|
NumberInput,
|
|
2434
2452
|
{
|
|
2435
2453
|
label: "Amount to Add",
|
|
@@ -2488,12 +2506,12 @@ var UniversalProfilePage = ({
|
|
|
2488
2506
|
}
|
|
2489
2507
|
};
|
|
2490
2508
|
const getBadgeColorClass = (role) => {
|
|
2491
|
-
if (!role) return "text-
|
|
2509
|
+
if (!role) return "text-stone-400";
|
|
2492
2510
|
const r = role.toLowerCase();
|
|
2493
|
-
if (r.includes("basic")) return "text-
|
|
2511
|
+
if (r.includes("basic")) return "text-stone-400";
|
|
2494
2512
|
if (r.includes("standard")) return "text-blue-500";
|
|
2495
2513
|
if (r.includes("platinum")) return "text-yellow-400";
|
|
2496
|
-
return "text-
|
|
2514
|
+
return "text-stone-400";
|
|
2497
2515
|
};
|
|
2498
2516
|
return /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
2499
2517
|
"div",
|
|
@@ -2501,7 +2519,7 @@ var UniversalProfilePage = ({
|
|
|
2501
2519
|
onClick: onAvatarTap,
|
|
2502
2520
|
className: `w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center ${onAvatarTap ? "cursor-pointer group" : ""}`
|
|
2503
2521
|
},
|
|
2504
|
-
/* @__PURE__ */ import_react40.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-
|
|
2522
|
+
/* @__PURE__ */ import_react40.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-stone-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ import_react40.default.createElement(import_react40.default.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ import_react40.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-stone-100" }, /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ import_react40.default.createElement(
|
|
2505
2523
|
"img",
|
|
2506
2524
|
{
|
|
2507
2525
|
src: avatarSrc,
|
|
@@ -2509,8 +2527,8 @@ var UniversalProfilePage = ({
|
|
|
2509
2527
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2510
2528
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2511
2529
|
}
|
|
2512
|
-
)) : /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.UserIcon, size: 40, className: "text-
|
|
2513
|
-
), /* @__PURE__ */ import_react40.default.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ import_react40.default.createElement("span", { className: "text-
|
|
2530
|
+
)) : /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.UserIcon, size: 40, className: "text-stone-300" }), onAvatarTap && /* @__PURE__ */ import_react40.default.createElement("div", { className: "absolute inset-0 bg-black/30 backdrop-blur-[1px] flex items-center justify-center opacity-80 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity duration-200 z-20" }, /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.Camera01Icon, size: 24, className: "text-white" })))
|
|
2531
|
+
), /* @__PURE__ */ import_react40.default.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ import_react40.default.createElement("span", { className: "text-xs text-black" }, roleName), /* @__PURE__ */ import_react40.default.createElement("span", { className: getBadgeColorClass(roleName), "aria-hidden": true }, /* @__PURE__ */ import_react40.default.createElement("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react40.default.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), /* @__PURE__ */ import_react40.default.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react40.default.createElement("g", { id: "SVGRepo_iconCarrier" }, " ", /* @__PURE__ */ import_react40.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.5924 3.20027C9.34888 3.4078 9.22711 3.51158 9.09706 3.59874C8.79896 3.79854 8.46417 3.93721 8.1121 4.00672C7.95851 4.03705 7.79903 4.04977 7.48008 4.07522C6.6787 4.13918 6.278 4.17115 5.94371 4.28923C5.17051 4.56233 4.56233 5.17051 4.28923 5.94371C4.17115 6.278 4.13918 6.6787 4.07522 7.48008C4.04977 7.79903 4.03705 7.95851 4.00672 8.1121C3.93721 8.46417 3.79854 8.79896 3.59874 9.09706C3.51158 9.22711 3.40781 9.34887 3.20027 9.5924C2.67883 10.2043 2.4181 10.5102 2.26522 10.8301C1.91159 11.57 1.91159 12.43 2.26522 13.1699C2.41811 13.4898 2.67883 13.7957 3.20027 14.4076C3.40778 14.6511 3.51158 14.7729 3.59874 14.9029C3.79854 15.201 3.93721 15.5358 4.00672 15.8879C4.03705 16.0415 4.04977 16.201 4.07522 16.5199C4.13918 17.3213 4.17115 17.722 4.28923 18.0563C4.56233 18.8295 5.17051 19.4377 5.94371 19.7108C6.278 19.8288 6.6787 19.8608 7.48008 19.9248C7.79903 19.9502 7.95851 19.963 8.1121 19.9933C8.46417 20.0628 8.79896 20.2015 9.09706 20.4013C9.22711 20.4884 9.34887 20.5922 9.5924 20.7997C10.2043 21.3212 10.5102 21.5819 10.8301 21.7348C11.57 22.0884 12.43 22.0884 13.1699 21.7348C13.4898 21.5819 13.7957 21.3212 14.4076 20.7997C14.6511 20.5922 14.7729 20.4884 14.9029 20.4013C15.201 20.2015 15.5358 20.0628 15.8879 19.9933C16.0415 19.963 16.201 19.9502 16.5199 19.9248C17.3213 19.8608 17.722 19.8288 18.0563 19.7108C18.8295 19.4377 19.4377 18.8295 19.7108 18.0563C19.8288 17.722 19.8608 17.3213 19.9248 16.5199C19.9502 16.201 19.963 16.0415 19.9933 15.8879C20.0628 15.5358 20.2015 15.201 20.4013 14.9029C20.4884 14.7729 20.5922 14.6511 20.7997 14.4076C21.3212 13.7957 21.5819 13.4898 21.7348 13.1699C22.0884 12.43 22.0884 11.57 21.7348 10.8301C21.5819 10.5102 21.3212 10.2043 20.7997 9.5924C20.5922 9.34887 20.4884 9.22711 20.4013 9.09706C20.2015 8.79896 20.0628 8.46417 19.9933 8.1121C19.963 7.95851 19.9502 7.79903 19.9248 7.48008C19.8608 6.6787 19.8288 6.278 19.7108 5.94371C19.4377 5.17051 18.8295 4.56233 18.0563 4.28923C17.722 4.17115 17.3213 4.13918 16.5199 4.07522C16.201 4.04977 16.0415 4.03705 15.8879 4.00672C15.5358 3.93721 15.201 3.79854 14.9029 3.59874C14.7729 3.51158 14.6511 3.40781 14.4076 3.20027C13.7957 2.67883 13.4898 2.41811 13.1699 2.26522C12.43 1.91159 11.57 1.91159 10.8301 2.26522C10.5102 2.4181 10.2043 2.67883 9.5924 3.20027ZM16.3735 9.86314C16.6913 9.5453 16.6913 9.03 16.3735 8.71216C16.0557 8.39433 15.5403 8.39433 15.2225 8.71216L10.3723 13.5624L8.77746 11.9676C8.45963 11.6498 7.94432 11.6498 7.62649 11.9676C7.30866 12.2854 7.30866 12.8007 7.62649 13.1186L9.79678 15.2889C10.1146 15.6067 10.6299 15.6067 10.9478 15.2889L16.3735 9.86314Z", fill: "currentColor" }), " ")))), /* @__PURE__ */ import_react40.default.createElement("span", { className: "text-xs text-stone-500" }, memberSince)), /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
2514
2532
|
MenuRow2,
|
|
2515
2533
|
{
|
|
2516
2534
|
icon: import_core_free_icons16.UserIcon,
|
|
@@ -2599,11 +2617,11 @@ var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titl
|
|
|
2599
2617
|
"div",
|
|
2600
2618
|
{
|
|
2601
2619
|
onClick,
|
|
2602
|
-
className: `flex items-center p-4 cursor-pointer hover:bg-
|
|
2620
|
+
className: `flex items-center p-4 cursor-pointer hover:bg-stone-50 transition-colors ${!isLast ? "" : ""}`
|
|
2603
2621
|
},
|
|
2604
|
-
/* @__PURE__ */ import_react40.default.createElement("div", { className: "w-9 h-9 rounded-full border border-
|
|
2605
|
-
/* @__PURE__ */ import_react40.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react40.default.createElement("p", { className: `text-
|
|
2606
|
-
/* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 18, className: "text-
|
|
2622
|
+
/* @__PURE__ */ import_react40.default.createElement("div", { className: "w-9 h-9 rounded-full border border-stone-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2623
|
+
/* @__PURE__ */ import_react40.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react40.default.createElement("p", { className: `text-sm truncate ${titleColor}` }, title), /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-xs text-stone-500 truncate" }, subtitle)),
|
|
2624
|
+
/* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 18, className: "text-stone-400 shrink-0 ml-2" })
|
|
2607
2625
|
);
|
|
2608
2626
|
|
|
2609
2627
|
// src/components/UniversalSidebar.tsx
|
|
@@ -2642,7 +2660,7 @@ var UniversalSidebar = ({
|
|
|
2642
2660
|
key: item.name,
|
|
2643
2661
|
href: item.path,
|
|
2644
2662
|
onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
|
|
2645
|
-
className: `flex items-center justify-center w-12 h-12 mx-auto rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-white text-black" : "text-
|
|
2663
|
+
className: `flex items-center justify-center w-12 h-12 mx-auto rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-white text-black" : "text-stone-500 hover:text-black hover:bg-white/50"}`,
|
|
2646
2664
|
title: item.name
|
|
2647
2665
|
},
|
|
2648
2666
|
/* @__PURE__ */ import_react42.default.createElement(
|
|
@@ -2650,7 +2668,7 @@ var UniversalSidebar = ({
|
|
|
2650
2668
|
{
|
|
2651
2669
|
icon: item.icon,
|
|
2652
2670
|
size: 20,
|
|
2653
|
-
className: `shrink-0 transition-colors ${isCurrentRoute ? "text-black" : "text-
|
|
2671
|
+
className: `shrink-0 transition-colors ${isCurrentRoute ? "text-black" : "text-stone-400 group-hover:text-black"}`
|
|
2654
2672
|
}
|
|
2655
2673
|
)
|
|
2656
2674
|
);
|
|
@@ -2658,7 +2676,7 @@ var UniversalSidebar = ({
|
|
|
2658
2676
|
"button",
|
|
2659
2677
|
{
|
|
2660
2678
|
onClick: () => setShowLogoutDialog(true),
|
|
2661
|
-
className: "w-12 h-12 rounded-full flex items-center justify-center text-
|
|
2679
|
+
className: "w-12 h-12 rounded-full flex items-center justify-center text-stone-500 hover:bg-white/50 transition-all outline-none"
|
|
2662
2680
|
},
|
|
2663
2681
|
/* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons17.LogoutCircle02Icon, size: 20 })
|
|
2664
2682
|
))), showLogoutAction && /* @__PURE__ */ import_react42.default.createElement(
|
|
@@ -2727,7 +2745,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2727
2745
|
{
|
|
2728
2746
|
onClick: onClose,
|
|
2729
2747
|
disabled: isLoading,
|
|
2730
|
-
className: "absolute top-4 right-4 p-2 text-
|
|
2748
|
+
className: "absolute top-4 right-4 p-2 text-stone-700 hover:text-stone-400 transition-colors disabled:opacity-50 outline-none"
|
|
2731
2749
|
},
|
|
2732
2750
|
/* @__PURE__ */ import_react44.default.createElement(
|
|
2733
2751
|
"svg",
|
|
@@ -2746,7 +2764,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2746
2764
|
/* @__PURE__ */ import_react44.default.createElement("path", { d: "m6 6 12 12" })
|
|
2747
2765
|
)
|
|
2748
2766
|
),
|
|
2749
|
-
/* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react44.default.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-
|
|
2767
|
+
/* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react44.default.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-stone-500 leading-relaxed" }, "Be the first to be notified when we launch. Secure your early access spot today.")), /* @__PURE__ */ import_react44.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react44.default.createElement(
|
|
2750
2768
|
TextInput,
|
|
2751
2769
|
{
|
|
2752
2770
|
label: "Email ID",
|
|
@@ -2845,7 +2863,7 @@ var HeroSection = ({
|
|
|
2845
2863
|
className: "leading-[0.85] tracking-[-0.07em] text-[18.2vw] sm:text-[16.8vw] md:text-[15.4vw] lg:text-[14vw] xl:text-[13.3vw] 2xl:text-[14vw] text-[#ffffff]"
|
|
2846
2864
|
},
|
|
2847
2865
|
/* @__PURE__ */ import_react45.default.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ import_react45.default.createElement("br", null), highlightText, /* @__PURE__ */ import_react45.default.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2848
|
-
)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-xs text-[#ffffff]/70 sm:text-sm md:text-
|
|
2866
|
+
)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-xs text-[#ffffff]/70 sm:text-sm md:text-xs leading-[1.2] max-w-md transition-opacity duration-1000 delay-300" }, subtitle), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-4" }, ctaText && // Changed from <button> to <Link> so it actually navigates!
|
|
2849
2867
|
/* @__PURE__ */ import_react45.default.createElement(
|
|
2850
2868
|
import_link6.default,
|
|
2851
2869
|
{
|
|
@@ -2862,7 +2880,7 @@ var HeroSection = ({
|
|
|
2862
2880
|
className: "inline-flex h-10 items-center self-start justify-center text-xs tracking-wide rounded-full px-6 border border-[#ffffff]/30 text-[#ffffff] hover:bg-[#ffffff]/10 transition-colors"
|
|
2863
2881
|
},
|
|
2864
2882
|
secondaryCtaText
|
|
2865
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-
|
|
2883
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-xs tracking-widest text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react45.default.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-7 sm:w-7 opacity-70 hover:opacity-100 transition-opacity invert" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2866
2884
|
import_image2.default,
|
|
2867
2885
|
{
|
|
2868
2886
|
src: logo.src,
|
|
@@ -2904,7 +2922,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2904
2922
|
}
|
|
2905
2923
|
return () => observer.disconnect();
|
|
2906
2924
|
}, []);
|
|
2907
|
-
return /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-
|
|
2925
|
+
return /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react46.default.createElement(
|
|
2908
2926
|
"h2",
|
|
2909
2927
|
{
|
|
2910
2928
|
ref: titleRef,
|
|
@@ -2918,18 +2936,28 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2918
2936
|
const isNeutral = i === 2;
|
|
2919
2937
|
const getBgStyle = () => {
|
|
2920
2938
|
if (isWhite) return "bg-white";
|
|
2921
|
-
if (isBlack) return "bg-
|
|
2922
|
-
if (isNeutral) return "bg-
|
|
2923
|
-
return "bg-
|
|
2939
|
+
if (isBlack) return "bg-black";
|
|
2940
|
+
if (isNeutral) return "bg-stone-200";
|
|
2941
|
+
return "bg-stone-200";
|
|
2942
|
+
};
|
|
2943
|
+
const getShadowStyle = () => {
|
|
2944
|
+
if (isBlack) return `
|
|
2945
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.2),
|
|
2946
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.3),
|
|
2947
|
+
0 4px 0 0 #0c0c0c,
|
|
2948
|
+
0 12px 24px rgba(0, 0, 0, 0.1)
|
|
2949
|
+
`;
|
|
2950
|
+
return "none";
|
|
2924
2951
|
};
|
|
2925
2952
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2926
|
-
const subTextColor = isBlack ? "text-
|
|
2927
|
-
const labelColor = isBlack ? "text-
|
|
2953
|
+
const subTextColor = isBlack ? "text-stone-300" : "text-stone-600";
|
|
2954
|
+
const labelColor = isBlack ? "text-stone-400" : "text-stone-500";
|
|
2928
2955
|
return /* @__PURE__ */ import_react46.default.createElement(
|
|
2929
2956
|
"div",
|
|
2930
2957
|
{
|
|
2931
2958
|
key: i,
|
|
2932
|
-
className: `relative rounded-
|
|
2959
|
+
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2960
|
+
style: { boxShadow: getShadowStyle() }
|
|
2933
2961
|
},
|
|
2934
2962
|
/* @__PURE__ */ import_react46.default.createElement(
|
|
2935
2963
|
"div",
|
|
@@ -2938,9 +2966,9 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2938
2966
|
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
2939
2967
|
}
|
|
2940
2968
|
),
|
|
2941
|
-
isBlack && /* @__PURE__ */ import_react46.default.createElement("span", { className: "absolute inset-0 rounded-
|
|
2969
|
+
isBlack && /* @__PURE__ */ import_react46.default.createElement("span", { className: "absolute inset-0 rounded-2xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
2942
2970
|
/* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isBlack ? "text-white/5" : "text-black/5"}` }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
2943
|
-
/* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-
|
|
2971
|
+
/* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-xs tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react46.default.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react46.default.createElement("p", { className: `text-sm leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2944
2972
|
);
|
|
2945
2973
|
})))));
|
|
2946
2974
|
};
|
|
@@ -3044,7 +3072,7 @@ var UniversalSecurityPage = ({
|
|
|
3044
3072
|
"button",
|
|
3045
3073
|
{
|
|
3046
3074
|
onClick: onBack,
|
|
3047
|
-
className: "flex items-center gap-2 text-
|
|
3075
|
+
className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none"
|
|
3048
3076
|
},
|
|
3049
3077
|
/* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.ArrowLeft01Icon, size: 16 }),
|
|
3050
3078
|
" Back"
|
|
@@ -3069,7 +3097,7 @@ var UniversalSecurityPage = ({
|
|
|
3069
3097
|
toggleLoading: isPasskeyLoading,
|
|
3070
3098
|
isLast: true
|
|
3071
3099
|
}
|
|
3072
|
-
))), isPasscodeModalOpen && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-
|
|
3100
|
+
))), isPasscodeModalOpen && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6" }, isPasscodeLoading ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.Loading03Icon, size: 28, className: "animate-spin text-stone-400 mb-4" })) : /* @__PURE__ */ import_react48.default.createElement("form", { onSubmit: handlePasscodeSubmit, className: "flex flex-col gap-6" }, hasPasscode && /* @__PURE__ */ import_react48.default.createElement(
|
|
3073
3101
|
TextInput,
|
|
3074
3102
|
{
|
|
3075
3103
|
type: "password",
|
|
@@ -3111,7 +3139,7 @@ var UniversalSecurityPage = ({
|
|
|
3111
3139
|
className: "w-full"
|
|
3112
3140
|
},
|
|
3113
3141
|
hasPasscode ? "Update Passcode" : "Set Passcode"
|
|
3114
|
-
)))))), showPasskeyModal && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-
|
|
3142
|
+
)))))), showPasskeyModal && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-stone-500 mb-8 leading-relaxed" }, "Use your device's biometrics (Face ID, Touch ID, or PIN) to securely sign into your account without needing a password."), /* @__PURE__ */ import_react48.default.createElement(
|
|
3115
3143
|
ThreeDActionButton,
|
|
3116
3144
|
{
|
|
3117
3145
|
onClick: submitEnablePasskey,
|
|
@@ -3137,11 +3165,11 @@ var MenuRow3 = ({
|
|
|
3137
3165
|
"div",
|
|
3138
3166
|
{
|
|
3139
3167
|
onClick: disabled ? void 0 : onClick,
|
|
3140
|
-
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-
|
|
3168
|
+
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-stone-50"}`
|
|
3141
3169
|
},
|
|
3142
|
-
/* @__PURE__ */ import_react48.default.createElement("div", { className: "w-9 h-9 rounded-full border border-
|
|
3143
|
-
/* @__PURE__ */ import_react48.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: `text-
|
|
3144
|
-
isToggle ? /* @__PURE__ */ import_react48.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-
|
|
3170
|
+
/* @__PURE__ */ import_react48.default.createElement("div", { className: "w-9 h-9 rounded-full border border-stone-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
3171
|
+
/* @__PURE__ */ import_react48.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: `text-sm truncate ${titleColor}` }, title), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-stone-500 truncate" }, subtitle)),
|
|
3172
|
+
isToggle ? /* @__PURE__ */ import_react48.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-stone-100"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react48.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons18.ArrowRight01Icon, size: 18, className: "text-stone-400 shrink-0 ml-2" })
|
|
3145
3173
|
);
|
|
3146
3174
|
|
|
3147
3175
|
// src/components/FeatureScroll.tsx
|
|
@@ -3152,7 +3180,7 @@ var import_core_free_icons19 = require("@hugeicons/core-free-icons");
|
|
|
3152
3180
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
3153
3181
|
const [isBgLoading, setIsBgLoading] = (0, import_react50.useState)(true);
|
|
3154
3182
|
const [isFgLoading, setIsFgLoading] = (0, import_react50.useState)(!!feature.image);
|
|
3155
|
-
return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative w-full aspect-16/10 bg-
|
|
3183
|
+
return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative w-full aspect-16/10 bg-stone-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
3156
3184
|
import_image3.default,
|
|
3157
3185
|
{
|
|
3158
3186
|
src: bgImage,
|
|
@@ -3173,7 +3201,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3173
3201
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
3174
3202
|
}
|
|
3175
3203
|
}
|
|
3176
|
-
), isFgLoading && feature.image && /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-
|
|
3204
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-stone-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons19.Loading03Icon, size: 32, className: "animate-spin text-stone-400" })), feature.image && /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
3177
3205
|
import_image3.default,
|
|
3178
3206
|
{
|
|
3179
3207
|
src: feature.image,
|
|
@@ -3186,7 +3214,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3186
3214
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
3187
3215
|
`
|
|
3188
3216
|
}
|
|
3189
|
-
))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-
|
|
3217
|
+
))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm leading-relaxed text-stone-600 max-w-[90%]" }, feature.desc)));
|
|
3190
3218
|
};
|
|
3191
3219
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
3192
3220
|
const scrollRef = (0, import_react50.useRef)(null);
|
|
@@ -3215,12 +3243,12 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3215
3243
|
"https://storage.googleapis.com/retina-cloud-v2/assets/images/bg_6.avif",
|
|
3216
3244
|
"https://storage.googleapis.com/retina-cloud-v2/assets/images/bg_1.avif"
|
|
3217
3245
|
];
|
|
3218
|
-
return /* @__PURE__ */ import_react50.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-
|
|
3246
|
+
return /* @__PURE__ */ import_react50.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 block mb-4" }, tagline), /* @__PURE__ */ import_react50.default.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
3219
3247
|
"button",
|
|
3220
3248
|
{
|
|
3221
3249
|
onClick: () => scroll("left"),
|
|
3222
3250
|
disabled: !canScrollLeft,
|
|
3223
|
-
className: "p-4 border border-
|
|
3251
|
+
className: "p-4 border border-stone-200 rounded-full text-stone-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-stone-200 disabled:hover:text-stone-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
3224
3252
|
},
|
|
3225
3253
|
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons19.ArrowLeft01Icon, size: 20 })
|
|
3226
3254
|
), /* @__PURE__ */ import_react50.default.createElement(
|
|
@@ -3228,7 +3256,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3228
3256
|
{
|
|
3229
3257
|
onClick: () => scroll("right"),
|
|
3230
3258
|
disabled: !canScrollRight,
|
|
3231
|
-
className: "p-4 border border-
|
|
3259
|
+
className: "p-4 border border-stone-200 rounded-full text-stone-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-stone-200 disabled:hover:text-stone-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
3232
3260
|
},
|
|
3233
3261
|
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons19.ArrowRight01Icon, size: 20 })
|
|
3234
3262
|
))), /* @__PURE__ */ import_react50.default.createElement(
|
|
@@ -3244,7 +3272,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3244
3272
|
{
|
|
3245
3273
|
onClick: () => scroll("left"),
|
|
3246
3274
|
disabled: !canScrollLeft,
|
|
3247
|
-
className: "p-4 border border-
|
|
3275
|
+
className: "p-4 border border-stone-200 rounded-full text-stone-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
3248
3276
|
},
|
|
3249
3277
|
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons19.ArrowLeft01Icon, size: 20 })
|
|
3250
3278
|
), /* @__PURE__ */ import_react50.default.createElement(
|
|
@@ -3252,7 +3280,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3252
3280
|
{
|
|
3253
3281
|
onClick: () => scroll("right"),
|
|
3254
3282
|
disabled: !canScrollRight,
|
|
3255
|
-
className: "p-4 border border-
|
|
3283
|
+
className: "p-4 border border-stone-200 rounded-full text-stone-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
3256
3284
|
},
|
|
3257
3285
|
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons19.ArrowRight01Icon, size: 20 })
|
|
3258
3286
|
))));
|
|
@@ -3267,15 +3295,15 @@ var PlatformFeatures = ({
|
|
|
3267
3295
|
description,
|
|
3268
3296
|
features
|
|
3269
3297
|
}) => {
|
|
3270
|
-
return /* @__PURE__ */ import_react52.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-
|
|
3298
|
+
return /* @__PURE__ */ import_react52.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 block mb-4" }, tagline), /* @__PURE__ */ import_react52.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm leading-[1.8] text-stone-600 max-w-2xl" }, description)), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full h-px bg-stone-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
3271
3299
|
"div",
|
|
3272
3300
|
{
|
|
3273
3301
|
key: idx,
|
|
3274
3302
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
3275
3303
|
style: { animationDelay: feature.delay || "0ms" }
|
|
3276
3304
|
},
|
|
3277
|
-
/* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-
|
|
3278
|
-
/* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-
|
|
3305
|
+
/* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-stone-200 flex items-center justify-center text-stone-600 transition-colors duration-300" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-xs tracking-widest text-stone-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react52.default.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
3306
|
+
/* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm leading-relaxed text-stone-600 pr-4" }, feature.desc))
|
|
3279
3307
|
)))));
|
|
3280
3308
|
};
|
|
3281
3309
|
|
|
@@ -3310,7 +3338,7 @@ var ManagedDocument = ({
|
|
|
3310
3338
|
}, []);
|
|
3311
3339
|
return (
|
|
3312
3340
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
3313
|
-
/* @__PURE__ */ import_react54.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-
|
|
3341
|
+
/* @__PURE__ */ import_react54.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ import_react54.default.createElement(
|
|
3314
3342
|
"h1",
|
|
3315
3343
|
{
|
|
3316
3344
|
ref: titleRef,
|
|
@@ -3318,7 +3346,7 @@ var ManagedDocument = ({
|
|
|
3318
3346
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3319
3347
|
},
|
|
3320
3348
|
title
|
|
3321
|
-
)), sections.map((section, index) => /* @__PURE__ */ import_react54.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react54.default.createElement("p", { className: " text-
|
|
3349
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react54.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react54.default.createElement("p", { className: " text-xs tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "text-sm leading-[1.8] text-stone-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react54.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react54.default.createElement("div", { className: `border-stone-200 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-stone-900 text-sm md:text-sm leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-stone-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react54.default.createElement(
|
|
3322
3350
|
"a",
|
|
3323
3351
|
{
|
|
3324
3352
|
href: `mailto:${contactEmail}`,
|
|
@@ -3359,7 +3387,7 @@ var ManagedContactBlock = ({
|
|
|
3359
3387
|
backgroundRepeat: "repeat"
|
|
3360
3388
|
}
|
|
3361
3389
|
}
|
|
3362
|
-
), /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react55.default.createElement("span", { className: "text-
|
|
3390
|
+
), /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react55.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ import_react55.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react55.default.createElement("div", { className: "space-y-3 text-xs text-stone-600 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react55.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react55.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
3363
3391
|
"a",
|
|
3364
3392
|
{
|
|
3365
3393
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
@@ -3373,24 +3401,24 @@ var ManagedContactBlock = ({
|
|
|
3373
3401
|
className: "transition-colors hover:text-black"
|
|
3374
3402
|
},
|
|
3375
3403
|
company.phone2
|
|
3376
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-
|
|
3404
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react55.default.createElement("div", { className: "space-y-6 text-sm" }, emails.map((email, idx) => /* @__PURE__ */ import_react55.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-xs tracking-[0.2em] mb-1.5 text-stone-500 " }, email.label), /* @__PURE__ */ import_react55.default.createElement(
|
|
3377
3405
|
SecureEmail,
|
|
3378
3406
|
{
|
|
3379
3407
|
user: email.user,
|
|
3380
3408
|
domain: email.domain,
|
|
3381
|
-
className: "text-
|
|
3409
|
+
className: "text-stone-600 transition-colors hover:text-black"
|
|
3382
3410
|
}
|
|
3383
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-
|
|
3411
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react55.default.createElement(
|
|
3384
3412
|
"a",
|
|
3385
3413
|
{
|
|
3386
3414
|
key: idx,
|
|
3387
3415
|
href: social.href,
|
|
3388
3416
|
target: "_blank",
|
|
3389
3417
|
rel: "noopener noreferrer",
|
|
3390
|
-
className: "flex items-center gap-3 transition-colors group text-
|
|
3418
|
+
className: "flex items-center gap-3 transition-colors group text-stone-600 hover:text-black"
|
|
3391
3419
|
},
|
|
3392
3420
|
/* @__PURE__ */ import_react55.default.createElement(import_react56.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
3393
|
-
/* @__PURE__ */ import_react55.default.createElement("span", { className: "text-
|
|
3421
|
+
/* @__PURE__ */ import_react55.default.createElement("span", { className: "text-xs" }, social.label)
|
|
3394
3422
|
)))))))));
|
|
3395
3423
|
};
|
|
3396
3424
|
|
|
@@ -3429,7 +3457,7 @@ var ManagedPricingBlock = ({
|
|
|
3429
3457
|
}, []);
|
|
3430
3458
|
const hasTabs = tabs && tabs.length > 0;
|
|
3431
3459
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
3432
|
-
return /* @__PURE__ */ import_react57.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-
|
|
3460
|
+
return /* @__PURE__ */ import_react57.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-xs tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ import_react57.default.createElement(
|
|
3433
3461
|
"h1",
|
|
3434
3462
|
{
|
|
3435
3463
|
ref: titleRef,
|
|
@@ -3444,7 +3472,7 @@ var ManagedPricingBlock = ({
|
|
|
3444
3472
|
{
|
|
3445
3473
|
key: idx,
|
|
3446
3474
|
onClick: () => setActiveTabIndex(idx),
|
|
3447
|
-
className: `px-4 py-1.5 rounded-full text-
|
|
3475
|
+
className: `px-4 py-1.5 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-stone-50 text-black " : "text-stone-500 hover:text-black hover:bg-stone-50/50 "}`
|
|
3448
3476
|
},
|
|
3449
3477
|
tab.label
|
|
3450
3478
|
);
|
|
@@ -3454,7 +3482,7 @@ var ManagedPricingBlock = ({
|
|
|
3454
3482
|
key: `${activeTabIndex}-${planIdx}`,
|
|
3455
3483
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
3456
3484
|
},
|
|
3457
|
-
/* @__PURE__ */ import_react57.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react57.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-xs text-
|
|
3485
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react57.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-xs text-stone-500" }, plan.period)), /* @__PURE__ */ import_react57.default.createElement("p", { className: "text-xs text-stone-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react57.default.createElement(
|
|
3458
3486
|
"div",
|
|
3459
3487
|
{
|
|
3460
3488
|
key: logoIdx,
|
|
@@ -3475,14 +3503,14 @@ var ManagedPricingBlock = ({
|
|
|
3475
3503
|
import_link7.default,
|
|
3476
3504
|
{
|
|
3477
3505
|
href: plan.ctaHref,
|
|
3478
|
-
className: "w-full py-2 px-5 rounded-full border border-
|
|
3506
|
+
className: "w-full py-2.5 px-5 rounded-full border border-stone-200 text-center text-black text-xs hover:bg-stone-50 transition-colors mb-6 outline-none block"
|
|
3479
3507
|
},
|
|
3480
3508
|
plan.ctaText
|
|
3481
3509
|
),
|
|
3482
3510
|
/* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
3483
3511
|
const isAvailable = feature.value !== false;
|
|
3484
3512
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
3485
|
-
return /* @__PURE__ */ import_react57.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react57.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react57.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react57.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-
|
|
3513
|
+
return /* @__PURE__ */ import_react57.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react57.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react57.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react57.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-stone-800" : "text-stone-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-stone-500 ml-1" }, "(", valueText, ")")));
|
|
3486
3514
|
}))
|
|
3487
3515
|
)))));
|
|
3488
3516
|
};
|
|
@@ -3498,7 +3526,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
3498
3526
|
href,
|
|
3499
3527
|
target: "_blank",
|
|
3500
3528
|
rel: "noopener noreferrer",
|
|
3501
|
-
className: "text-
|
|
3529
|
+
className: "text-stone-400 hover:text-black transition-colors"
|
|
3502
3530
|
},
|
|
3503
3531
|
/* @__PURE__ */ import_react58.default.createElement(import_react59.HugeiconsIcon, { icon, size: 16 })
|
|
3504
3532
|
);
|
|
@@ -3518,7 +3546,7 @@ var ManagedBoardBlock = ({
|
|
|
3518
3546
|
backgroundRepeat: "repeat"
|
|
3519
3547
|
}
|
|
3520
3548
|
}
|
|
3521
|
-
), /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react58.default.createElement("span", { className: "text-
|
|
3549
|
+
), /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react58.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ import_react58.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ import_react58.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
3522
3550
|
import_image5.default,
|
|
3523
3551
|
{
|
|
3524
3552
|
src: member.imageSrc,
|
|
@@ -3527,7 +3555,7 @@ var ManagedBoardBlock = ({
|
|
|
3527
3555
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
3528
3556
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
3529
3557
|
}
|
|
3530
|
-
)), /* @__PURE__ */ import_react58.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react58.default.createElement("h3", { className: " text-
|
|
3558
|
+
)), /* @__PURE__ */ import_react58.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react58.default.createElement("h3", { className: " text-sm text-black tracking-tight" }, member.name), /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-xs tracking-[0.2em] text-stone-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-xs leading-[1.8] text-stone-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react58.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react58.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react58.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react58.default.createElement(
|
|
3531
3559
|
MemberSocialLink,
|
|
3532
3560
|
{
|
|
3533
3561
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -3543,7 +3571,7 @@ var ManagedBoardBlock = ({
|
|
|
3543
3571
|
label: "LinkedIn",
|
|
3544
3572
|
name: member.name
|
|
3545
3573
|
}
|
|
3546
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-
|
|
3574
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-xs text-stone-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react58.default.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
3547
3575
|
};
|
|
3548
3576
|
|
|
3549
3577
|
// src/components/ManagedNotFoundBlock.tsx
|
|
@@ -3557,10 +3585,10 @@ var ManagedNotFoundBlock = ({
|
|
|
3557
3585
|
{
|
|
3558
3586
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3559
3587
|
viewBox: "0 0 24 24",
|
|
3560
|
-
className: "w-12 h-12 fill-
|
|
3588
|
+
className: "w-12 h-12 fill-stone-100"
|
|
3561
3589
|
},
|
|
3562
3590
|
/* @__PURE__ */ import_react60.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
3563
|
-
)), /* @__PURE__ */ import_react60.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-
|
|
3591
|
+
)), /* @__PURE__ */ import_react60.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-sm leading-[1.8] text-stone-600 mb-12" }, description)));
|
|
3564
3592
|
};
|
|
3565
3593
|
|
|
3566
3594
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
@@ -3613,11 +3641,11 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3613
3641
|
backgroundRepeat: "repeat"
|
|
3614
3642
|
}
|
|
3615
3643
|
}
|
|
3616
|
-
), /* @__PURE__ */ import_react61.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "mb-10 border-b border-
|
|
3644
|
+
), /* @__PURE__ */ import_react61.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "mb-10 border-b border-stone-200 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react61.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 " }, tagline), /* @__PURE__ */ import_react61.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-xs tracking-[0.2em] text-stone-500 " }, subtitle)), /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-sm leading-[1.8] text-stone-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react61.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react61.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "grow h-px bg-stone-100" }), /* @__PURE__ */ import_react61.default.createElement("span", { className: "shrink mx-4 text-xs tracking-[0.2em] text-stone-400 " }, dividerText), /* @__PURE__ */ import_react61.default.createElement("div", { className: "grow h-px bg-stone-100" })), ctaText && ctaHref && /* @__PURE__ */ import_react61.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3617
3645
|
ThreeDButton,
|
|
3618
3646
|
{
|
|
3619
3647
|
href: ctaHref,
|
|
3620
|
-
className: "py-3 tracking-widest text-
|
|
3648
|
+
className: "py-3 tracking-widest text-xs"
|
|
3621
3649
|
},
|
|
3622
3650
|
ctaText
|
|
3623
3651
|
)))))));
|
|
@@ -3673,7 +3701,7 @@ var PortfolioHero = ({
|
|
|
3673
3701
|
ref: heroContentRef,
|
|
3674
3702
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3675
3703
|
},
|
|
3676
|
-
/* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-
|
|
3704
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-stone-200 shrink-0 shadow-sm" }, /* @__PURE__ */ import_react62.default.createElement(
|
|
3677
3705
|
import_image7.default,
|
|
3678
3706
|
{
|
|
3679
3707
|
src: imageSrc,
|
|
@@ -3684,29 +3712,29 @@ var PortfolioHero = ({
|
|
|
3684
3712
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3685
3713
|
quality: 100
|
|
3686
3714
|
}
|
|
3687
|
-
)), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react62.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-
|
|
3715
|
+
)), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react62.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react62.default.createElement(
|
|
3688
3716
|
"a",
|
|
3689
3717
|
{
|
|
3690
3718
|
href: socialLinkHref,
|
|
3691
3719
|
target: "_blank",
|
|
3692
3720
|
rel: "noopener noreferrer",
|
|
3693
|
-
className: "text-
|
|
3721
|
+
className: "text-xs md:text-sm text-black hover:text-stone-500 transition-colors mt-1 underline underline-offset-4 decoration-stone-300"
|
|
3694
3722
|
},
|
|
3695
3723
|
socialLinkText
|
|
3696
3724
|
))),
|
|
3697
|
-
/* @__PURE__ */ import_react62.default.createElement("p", { className: "text-
|
|
3725
|
+
/* @__PURE__ */ import_react62.default.createElement("p", { className: "text-sm leading-[1.8] max-w-4xl mb-12 text-stone-600" }, bio),
|
|
3698
3726
|
/* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react62.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react62.default.createElement(
|
|
3699
3727
|
ThreeDButton,
|
|
3700
3728
|
{
|
|
3701
3729
|
href: primaryCtaHref,
|
|
3702
|
-
className: "py-3 tracking-widest text-
|
|
3730
|
+
className: "py-3 tracking-widest text-xs"
|
|
3703
3731
|
},
|
|
3704
3732
|
primaryCtaText
|
|
3705
3733
|
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react62.default.createElement(
|
|
3706
3734
|
import_link8.default,
|
|
3707
3735
|
{
|
|
3708
3736
|
href: secondaryCtaHref,
|
|
3709
|
-
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-
|
|
3737
|
+
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-xs tracking-[0.2em] rounded-full px-8 py-3.5 bg-stone-200 transition-colors text-black hover:bg-stone-50 outline-none"
|
|
3710
3738
|
},
|
|
3711
3739
|
secondaryCtaText,
|
|
3712
3740
|
/* @__PURE__ */ import_react62.default.createElement(import_react63.HugeiconsIcon, { icon: import_core_free_icons21.ArrowRight01Icon, size: 16 })
|
|
@@ -3727,7 +3755,7 @@ var GifFeatureCard = ({
|
|
|
3727
3755
|
className = "aspect-video"
|
|
3728
3756
|
}) => {
|
|
3729
3757
|
const [isLoading, setIsLoading] = (0, import_react64.useState)(true);
|
|
3730
|
-
return /* @__PURE__ */ import_react64.default.createElement("div", { className: `relative w-full bg-black overflow-hidden
|
|
3758
|
+
return /* @__PURE__ */ import_react64.default.createElement("div", { className: `relative w-full bg-black overflow-hidden ${className}` }, isLoading && /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react64.default.createElement(
|
|
3731
3759
|
import_react65.HugeiconsIcon,
|
|
3732
3760
|
{
|
|
3733
3761
|
icon: import_core_free_icons22.Loading03Icon,
|
|
@@ -3755,7 +3783,7 @@ var GifFeatureCard = ({
|
|
|
3755
3783
|
{
|
|
3756
3784
|
className: "absolute inset-x-0 bottom-0 h-1/2 sm:h-2/3 bg-linear-to-t from-black/95 via-black/40 to-transparent z-10 pointer-events-none transition-opacity duration-700"
|
|
3757
3785
|
}
|
|
3758
|
-
), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react64.default.createElement("h3", { className: "
|
|
3786
|
+
), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react64.default.createElement("h3", { className: "text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-xs leading-relaxed text-stone-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
3759
3787
|
};
|
|
3760
3788
|
|
|
3761
3789
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
@@ -3796,7 +3824,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3796
3824
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3797
3825
|
},
|
|
3798
3826
|
bottomHeadline
|
|
3799
|
-
), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-
|
|
3827
|
+
), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-sm leading-relaxed text-stone-500" }, bottomDescription)), /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react66.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-stone-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react66.default.createElement(
|
|
3800
3828
|
import_image9.default,
|
|
3801
3829
|
{
|
|
3802
3830
|
src,
|
|
@@ -3805,7 +3833,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3805
3833
|
sizes: "48px",
|
|
3806
3834
|
className: "object-cover"
|
|
3807
3835
|
}
|
|
3808
|
-
)))), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-
|
|
3836
|
+
)))), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-xs text-stone-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react66.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-sm text-stone-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react66.default.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
3809
3837
|
};
|
|
3810
3838
|
|
|
3811
3839
|
// src/components/ConsultantShowcase.tsx
|
|
@@ -3815,7 +3843,7 @@ var import_react68 = require("@hugeicons/react");
|
|
|
3815
3843
|
var import_core_free_icons23 = require("@hugeicons/core-free-icons");
|
|
3816
3844
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3817
3845
|
const [isLoading, setIsLoading] = (0, import_react67.useState)(true);
|
|
3818
|
-
return /* @__PURE__ */ import_react67.default.createElement("div", { className: `absolute inset-0 bg-
|
|
3846
|
+
return /* @__PURE__ */ import_react67.default.createElement("div", { className: `absolute inset-0 bg-stone-800 ${className}` }, isLoading && /* @__PURE__ */ import_react67.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-stone-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon: import_core_free_icons23.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react67.default.createElement(
|
|
3819
3847
|
import_image10.default,
|
|
3820
3848
|
{
|
|
3821
3849
|
src,
|
|
@@ -3864,7 +3892,7 @@ var ConsultantShowcase = ({
|
|
|
3864
3892
|
return /* @__PURE__ */ import_react67.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
3865
3893
|
"div",
|
|
3866
3894
|
{
|
|
3867
|
-
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-
|
|
3895
|
+
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-stone-900 group select-none",
|
|
3868
3896
|
onTouchStart,
|
|
3869
3897
|
onTouchMove,
|
|
3870
3898
|
onTouchEnd
|
|
@@ -3887,7 +3915,7 @@ var ConsultantShowcase = ({
|
|
|
3887
3915
|
),
|
|
3888
3916
|
/* @__PURE__ */ import_react67.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3889
3917
|
/* @__PURE__ */ import_react67.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
|
|
3890
|
-
/* @__PURE__ */ import_react67.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react67.default.createElement("h2", { className: "text-
|
|
3918
|
+
/* @__PURE__ */ import_react67.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react67.default.createElement("h2", { className: "text-lg tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-sm text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-sm text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
3891
3919
|
);
|
|
3892
3920
|
}),
|
|
3893
3921
|
/* @__PURE__ */ import_react67.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide }),
|
|
@@ -3921,9 +3949,9 @@ var ContentGridBlock = ({
|
|
|
3921
3949
|
bgDecoRotation_1,
|
|
3922
3950
|
bgDecoRotation_2
|
|
3923
3951
|
}) => {
|
|
3924
|
-
return /* @__PURE__ */ import_react69.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react69.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react69.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-
|
|
3952
|
+
return /* @__PURE__ */ import_react69.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react69.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react69.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-sm text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react69.default.createElement("span", { className: "mb-auto text-xs text-stone-100 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("h4", { className: "text-sm text-white" }, leftCard.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-stone-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react69.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative mx-h-95" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-xs text-stone-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react69.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react69.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-sm text-stone-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "grow flex flex-col mt-10 justify-center items-center py-6" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "px-5 py-2 rounded-full bg-stone-50/50 border border-stone-200 text-sm text-stone-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react69.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-sm text-stone-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("h4", { className: "text-sm text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-stone-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react69.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-sm text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => {
|
|
3925
3953
|
const isSecondCard = idx === 1;
|
|
3926
|
-
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#ffffff]" : bgColor_1 || "bg-[#
|
|
3954
|
+
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#ffffff]" : bgColor_1 || "bg-[#062c25]";
|
|
3927
3955
|
const defaultDeco_a = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_a.avif";
|
|
3928
3956
|
const defaultDeco_b = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_b.avif";
|
|
3929
3957
|
const bgDecoImage = isSecondCard ? bgDeco_2 || defaultDeco_b : bgDeco_1 || defaultDeco_a;
|
|
@@ -3943,7 +3971,7 @@ var ContentGridBlock = ({
|
|
|
3943
3971
|
}
|
|
3944
3972
|
),
|
|
3945
3973
|
/* @__PURE__ */ import_react69.default.createElement("div", { className: `absolute inset-0 z-20 pointer-events-none ${isSecondCard ? "" : "bg-black/20"}` }),
|
|
3946
|
-
/* @__PURE__ */ import_react69.default.createElement("div", { className: `absolute inset-0 z-30 p-6 flex flex-col justify-end ${isSecondCard ? "text-black" : "text-white"}` }, /* @__PURE__ */ import_react69.default.createElement("p", { className: `text-
|
|
3974
|
+
/* @__PURE__ */ import_react69.default.createElement("div", { className: `absolute inset-0 z-30 p-6 flex flex-col justify-end ${isSecondCard ? "text-black" : "text-white"}` }, /* @__PURE__ */ import_react69.default.createElement("p", { className: `text-sm leading-snug mb-3 pr-2 ${isSecondCard ? "text-black/90" : "text-white/90"}` }, card.mainText), card.tag && /* @__PURE__ */ import_react69.default.createElement("span", { className: `mb-4 text-xs tracking-widest ${isSecondCard ? "text-black/70" : "text-white/50"}` }, card.tag), /* @__PURE__ */ import_react69.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react69.default.createElement("h4", { className: `text-sm tracking-wide ${isSecondCard ? "text-black" : "text-white"}` }, card.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: `text-xs ${isSecondCard ? "text-black/60" : "text-white/60"}` }, card.subtitle)))
|
|
3947
3975
|
);
|
|
3948
3976
|
})))));
|
|
3949
3977
|
};
|
|
@@ -3970,9 +3998,9 @@ var ManagedProjectsBlock = ({
|
|
|
3970
3998
|
backgroundRepeat: "repeat"
|
|
3971
3999
|
}
|
|
3972
4000
|
}
|
|
3973
|
-
), /* @__PURE__ */ import_react71.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react71.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-
|
|
4001
|
+
), /* @__PURE__ */ import_react71.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react71.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ import_react71.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
3974
4002
|
const isLast = index === projects.length - 1;
|
|
3975
|
-
const projectContent = /* @__PURE__ */ import_react71.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react71.default.createElement("h2", { className: " text-
|
|
4003
|
+
const projectContent = /* @__PURE__ */ import_react71.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react71.default.createElement("h2", { className: " text-sm text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-xs opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ import_react71.default.createElement("span", { className: `text-xs px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-black text-white" : "bg-stone-100 text-stone-500 group-hover:bg-stone-50 group-hover:text-black"}` }, project.status)), /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-500 shrink-0 " }, project.date)), /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-sm leading-[1.8] text-stone-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
3976
4004
|
return /* @__PURE__ */ import_react71.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react71.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react71.default.createElement(import_link9.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
3977
4005
|
}))));
|
|
3978
4006
|
};
|
|
@@ -3997,32 +4025,32 @@ var VerificationRow = ({
|
|
|
3997
4025
|
switch (status) {
|
|
3998
4026
|
case "APPROVED":
|
|
3999
4027
|
statusText = "Completed";
|
|
4000
|
-
statusColor = "text-
|
|
4028
|
+
statusColor = "text-stone-600";
|
|
4001
4029
|
StatusIcon = import_core_free_icons25.CheckmarkCircle01Icon;
|
|
4002
|
-
bg = "bg-
|
|
4030
|
+
bg = "bg-stone-50";
|
|
4003
4031
|
iconColor = "text-green-500";
|
|
4004
4032
|
break;
|
|
4005
4033
|
case "PENDING":
|
|
4006
4034
|
statusText = "Awaiting Approval";
|
|
4007
|
-
statusColor = "text-
|
|
4035
|
+
statusColor = "text-stone-500";
|
|
4008
4036
|
StatusIcon = import_core_free_icons25.Time02Icon;
|
|
4009
|
-
bg = "bg-
|
|
4037
|
+
bg = "bg-stone-50";
|
|
4010
4038
|
iconColor = "text-orange-500";
|
|
4011
4039
|
break;
|
|
4012
4040
|
case "REJECTED":
|
|
4013
4041
|
statusText = "Action required to fix issue";
|
|
4014
|
-
statusColor = "text-
|
|
4015
|
-
bg = "bg-
|
|
4042
|
+
statusColor = "text-stone-500";
|
|
4043
|
+
bg = "bg-stone-50";
|
|
4016
4044
|
StatusIcon = import_core_free_icons25.InformationCircleIcon;
|
|
4017
4045
|
iconColor = "text-red-500";
|
|
4018
4046
|
break;
|
|
4019
4047
|
case "ACTION_REQUIRED":
|
|
4020
4048
|
default:
|
|
4021
4049
|
statusText = "Start verification";
|
|
4022
|
-
statusColor = "text-
|
|
4023
|
-
bg = "bg-
|
|
4050
|
+
statusColor = "text-stone-500";
|
|
4051
|
+
bg = "bg-stone-50";
|
|
4024
4052
|
StatusIcon = import_core_free_icons25.InformationCircleIcon;
|
|
4025
|
-
iconColor = "text-
|
|
4053
|
+
iconColor = "text-stone-400";
|
|
4026
4054
|
break;
|
|
4027
4055
|
}
|
|
4028
4056
|
const isDisabled = status === "APPROVED" || isLoading;
|
|
@@ -4030,10 +4058,10 @@ var VerificationRow = ({
|
|
|
4030
4058
|
"div",
|
|
4031
4059
|
{
|
|
4032
4060
|
onClick: isDisabled ? void 0 : onClick,
|
|
4033
|
-
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${isDisabled ? "opacity-70 cursor-default" : "cursor-pointer hover:bg-
|
|
4061
|
+
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${isDisabled ? "opacity-70 cursor-default" : "cursor-pointer hover:bg-stone-50"}`
|
|
4034
4062
|
},
|
|
4035
|
-
/* @__PURE__ */ import_react72.default.createElement("div", { className: "w-9 h-9 rounded-full border border-
|
|
4036
|
-
/* @__PURE__ */ import_react72.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react72.default.createElement("p", { className: "text-
|
|
4063
|
+
/* @__PURE__ */ import_react72.default.createElement("div", { className: "w-9 h-9 rounded-full border border-stone-200 bg-white flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon, size: 16, className: "text-black" })),
|
|
4064
|
+
/* @__PURE__ */ import_react72.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react72.default.createElement("p", { className: "text-sm truncate text-black" }, title), /* @__PURE__ */ import_react72.default.createElement("p", { className: `text-xs inline-flex items-center ${bg} rounded-full px-2 py-1 ${statusColor} mt-0.5` }, statusText)),
|
|
4037
4065
|
/* @__PURE__ */ import_react72.default.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.Loading03Icon, size: 20, className: "animate-spin text-black" }) : /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: StatusIcon, size: 20, className: iconColor }))
|
|
4038
4066
|
);
|
|
4039
4067
|
};
|
|
@@ -4051,7 +4079,7 @@ var UniversalVerificationPage = ({
|
|
|
4051
4079
|
"button",
|
|
4052
4080
|
{
|
|
4053
4081
|
onClick: onBack,
|
|
4054
|
-
className: "flex items-center gap-2 text-
|
|
4082
|
+
className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none"
|
|
4055
4083
|
},
|
|
4056
4084
|
/* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.ArrowLeft01Icon, size: 16 }),
|
|
4057
4085
|
" Back"
|
|
@@ -4103,7 +4131,7 @@ var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
|
4103
4131
|
const [isLoaded, setIsLoaded] = (0, import_react74.useState)(false);
|
|
4104
4132
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
4105
4133
|
const finalSrc = src || fallbackUrl;
|
|
4106
|
-
return /* @__PURE__ */ import_react74.default.createElement("div", { className: `relative shrink-0 rounded-full bg-
|
|
4134
|
+
return /* @__PURE__ */ import_react74.default.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.Loading03Icon, size: 16, className: "animate-spin text-stone-400 absolute" }), /* @__PURE__ */ import_react74.default.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4107
4135
|
};
|
|
4108
4136
|
var UniversalRewardPage = ({
|
|
4109
4137
|
leaderboardToday,
|
|
@@ -4153,30 +4181,30 @@ var UniversalRewardPage = ({
|
|
|
4153
4181
|
setIsClaiming(false);
|
|
4154
4182
|
}
|
|
4155
4183
|
};
|
|
4156
|
-
return /* @__PURE__ */ import_react74.default.createElement("div", null, /* @__PURE__ */ import_react74.default.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react74.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-
|
|
4184
|
+
return /* @__PURE__ */ import_react74.default.createElement("div", null, /* @__PURE__ */ import_react74.default.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react74.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react74.default.createElement(ManagedToaster, null), showConfetti && /* @__PURE__ */ import_react74.default.createElement("div", { className: "fixed inset-0 z-200 pointer-events-none" }, /* @__PURE__ */ import_react74.default.createElement(import_react_confetti.default, { width, height, recycle: false, numberOfPieces: 500, gravity: 0.15 })), isLoading ? /* @__PURE__ */ import_react74.default.createElement(PageSpinner4, null) : /* @__PURE__ */ import_react74.default.createElement(import_react74.default.Fragment, null, /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full p-4 pt-10 mb-6 flex items-end justify-center gap-2 sm:gap-6 h-64 relative overflow-hidden" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, secondPlace ? /* @__PURE__ */ import_react74.default.createElement(import_react74.default.Fragment, null, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-black text-xs mb-2 truncate max-w-full px-1" }, formatWeb3Name(secondPlace.profile.web3Name)), /* @__PURE__ */ import_react74.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react74.default.createElement(AvatarLogo, { src: secondPlace.profile.avatarUrl, alt: secondPlace.profile.username, name: formatWeb3Name(secondPlace.profile.web3Name), sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react74.default.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-[#ceff8a] text-black flex items-center justify-center text-xs border border-white " }, "2")), /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-100 to-[#ceff8a] rounded-t-xl h-24 flex items-center justify-center" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-stone-800/30 text-2xl " }, "2nd"))) : /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-200 to-stone-100 rounded-t-xl h-24 mt-auto" })), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-20 -mt-8" }, firstPlace ? /* @__PURE__ */ import_react74.default.createElement(import_react74.default.Fragment, null, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-black text-xs mb-2 truncate max-w-full px-1" }, formatWeb3Name(firstPlace.profile.web3Name)), /* @__PURE__ */ import_react74.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react74.default.createElement(AvatarLogo, { src: firstPlace.profile.avatarUrl, alt: firstPlace.profile.username, name: formatWeb3Name(firstPlace.profile.web3Name), sizeClass: "w-17 h-17" }), /* @__PURE__ */ import_react74.default.createElement("div", { className: "absolute -bottom-2 right-2 w-5 h-5 rounded-full bg-[#143731] text-white flex items-center justify-center text-xs border border-white " }, "1")), /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-100 to-[#143731] rounded-t-xl h-32 flex items-center justify-center " }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-white/40 text-3xl tracking-widest" }, "1st"))) : /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-200 to-stone-100 rounded-t-xl h-32 mt-auto" })), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, thirdPlace ? /* @__PURE__ */ import_react74.default.createElement(import_react74.default.Fragment, null, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-black text-xs mb-2 truncate max-w-full px-1" }, formatWeb3Name(thirdPlace.profile.web3Name)), /* @__PURE__ */ import_react74.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react74.default.createElement(AvatarLogo, { src: thirdPlace.profile.avatarUrl, alt: thirdPlace.profile.username, name: formatWeb3Name(thirdPlace.profile.web3Name), sizeClass: "w-12 h-12" }), /* @__PURE__ */ import_react74.default.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-[#ceff8a] text-black flex items-center justify-center text-xs border border-white " }, "3")), /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-100 to-[#ceff8a] rounded-t-xl h-20 flex items-center justify-center" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-stone-800/30 text-xl " }, "3rd"))) : /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full bg-linear-to-t from-stone-200 to-stone-100 rounded-t-xl h-20 mt-auto" }))), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center justify-center mb-6 sm:mb-8 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, tabs.map((tab, idx) => {
|
|
4157
4185
|
const isActive = activeTabIndex === idx;
|
|
4158
4186
|
return /* @__PURE__ */ import_react74.default.createElement(
|
|
4159
4187
|
"button",
|
|
4160
4188
|
{
|
|
4161
4189
|
key: idx,
|
|
4162
4190
|
onClick: () => setActiveTabIndex(idx),
|
|
4163
|
-
className: `px-5 py-1.5 rounded-full text-
|
|
4191
|
+
className: `px-5 py-1.5 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-stone-100 text-black " : "text-stone-500 hover:text-black hover:bg-stone-50/50"}`
|
|
4164
4192
|
},
|
|
4165
4193
|
tab.label
|
|
4166
4194
|
);
|
|
4167
|
-
}))), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react74.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Available Tasks"), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col" }, rewards.length === 0 ? /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-xs text-
|
|
4195
|
+
}))), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react74.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Available Tasks"), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col" }, rewards.length === 0 ? /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No rewards available at the moment.") : rewards.map((reward) => {
|
|
4168
4196
|
const statusText = reward.status === "CLAIMED" ? "Claimed" : "Unclaimed";
|
|
4169
4197
|
return /* @__PURE__ */ import_react74.default.createElement(
|
|
4170
4198
|
"div",
|
|
4171
4199
|
{
|
|
4172
4200
|
key: reward.id,
|
|
4173
4201
|
onClick: () => setSelectedReward(reward),
|
|
4174
|
-
className: "flex items-center justify-between py-4 hover:bg-
|
|
4202
|
+
className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4175
4203
|
},
|
|
4176
|
-
/* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-
|
|
4177
|
-
/* @__PURE__ */ import_react74.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-
|
|
4204
|
+
/* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-stone-200 text-black" }, /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.GiftIcon, size: 16 })), /* @__PURE__ */ import_react74.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col items-start gap-0.5 pr-4" }, /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-sm text-black truncate w-full" }, reward.title), /* @__PURE__ */ import_react74.default.createElement("p", { className: `text-xs inline-flex items-center bg-stone-50 rounded-full px-2 py-1 text-stone-500 mt-0.5` }, statusText))),
|
|
4205
|
+
/* @__PURE__ */ import_react74.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-sm text-black" }, reward.amount))
|
|
4178
4206
|
);
|
|
4179
|
-
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */ import_react74.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react74.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Leaderboard"), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col" }, remainingLeaderboard.map((lb) => /* @__PURE__ */ import_react74.default.createElement("div", { key: lb.profile.username, className: "flex items-center justify-between py-3 min-w-0" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "text-
|
|
4207
|
+
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */ import_react74.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react74.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Leaderboard"), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col" }, remainingLeaderboard.map((lb) => /* @__PURE__ */ import_react74.default.createElement("div", { key: lb.profile.username, className: "flex items-center justify-between py-3 min-w-0" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "text-xs text-stone-400 w-4" }, lb.position), /* @__PURE__ */ import_react74.default.createElement(AvatarLogo, { src: lb.profile.avatarUrl, alt: lb.profile.username, name: formatWeb3Name(lb.profile.web3Name), sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react74.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col" }, /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-sm text-black truncate" }, formatWeb3Name(lb.profile.web3Name)), /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-xs text-stone-400 truncate" }, "@", lb.profile.username))), /* @__PURE__ */ import_react74.default.createElement("div", { className: "shrink-0 text-sm text-black" }, lb.amount))))))), selectedReward && /* @__PURE__ */ import_react74.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isClaiming && setSelectedReward(null) }), /* @__PURE__ */ import_react74.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-3xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex-1 p-6 flex flex-col items-center text-center mt-2" }, /* @__PURE__ */ import_react74.default.createElement("h2", { className: "text-xl text-black mb-2" }, selectedReward.title), /* @__PURE__ */ import_react74.default.createElement("p", { className: "text-sm text-stone-500 mb-6 leading-relaxed" }, selectedReward.description), selectedReward.progressText && /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-full mb-6" }, /* @__PURE__ */ import_react74.default.createElement("div", { className: `px-4 py-2 rounded-full text-xs tracking-wide ${selectedReward.status === "CLAIMED" ? "bg-green-50 text-green-600" : selectedReward.isEligible ? "bg-blue-50 text-blue-600" : "bg-stone-100 text-stone-600"}` }, selectedReward.progressText)), /* @__PURE__ */ import_react74.default.createElement("div", { className: " w-full rounded-xl p-4 mb-8 flex flex-col items-center" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-xs tracking-widest text-stone-400 mb-1" }, "Reward Value"), /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-3xl text-black " }, selectedReward.amount)), /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col gap-3 w-full" }, /* @__PURE__ */ import_react74.default.createElement(
|
|
4180
4208
|
ThreeDActionButton,
|
|
4181
4209
|
{
|
|
4182
4210
|
onClick: handleClaimReward,
|
|
@@ -4190,7 +4218,7 @@ var UniversalRewardPage = ({
|
|
|
4190
4218
|
{
|
|
4191
4219
|
onClick: () => setSelectedReward(null),
|
|
4192
4220
|
disabled: isClaiming,
|
|
4193
|
-
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-
|
|
4221
|
+
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide mt-2"
|
|
4194
4222
|
},
|
|
4195
4223
|
"Cancel"
|
|
4196
4224
|
)))))));
|
|
@@ -4236,21 +4264,21 @@ var UniversalReferralPage = ({
|
|
|
4236
4264
|
const [isLoaded, setIsLoaded] = (0, import_react76.useState)(false);
|
|
4237
4265
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=e0e0e0&color=000000&size=100&font-size=0.33`;
|
|
4238
4266
|
const finalSrc = src || fallbackUrl;
|
|
4239
|
-
return /* @__PURE__ */ import_react76.default.createElement("div", { className: `relative shrink-0 rounded-full bg-
|
|
4267
|
+
return /* @__PURE__ */ import_react76.default.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, size: 16, className: "animate-spin text-stone-400 absolute" }), /* @__PURE__ */ import_react76.default.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4240
4268
|
};
|
|
4241
|
-
return /* @__PURE__ */ import_react76.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react76.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react76.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react76.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-
|
|
4269
|
+
return /* @__PURE__ */ import_react76.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react76.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react76.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react76.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-4 mb-6 px-1" }, /* @__PURE__ */ import_react76.default.createElement("div", null, /* @__PURE__ */ import_react76.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Your Referrals"), /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-xs text-stone-500" }, "Invite friends and earn rewards when they verify and activate cards.")), /* @__PURE__ */ import_react76.default.createElement("div", { className: "bg-[#143731] rounded-3xl p-6 relative overflow-hidden flex flex-col min-h-25 w-full mt-2" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-xs text-white leading-tight mb-1" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-white/60" }, "AFT Balance")), isLoading ? /* @__PURE__ */ import_react76.default.createElement("div", { className: "h-8 w-32 bg-white/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-lg text-white tracking-tight mt-1" }, referralCoins)))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-6 p-4 rounded-3xl bg-white w-full" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "border border-stone-200 rounded-xl p-4 flex items-center justify-between" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-xs tracking-widest text-stone-400 " }, "Invitation Code"), isLoading && !referralCode ? /* @__PURE__ */ import_react76.default.createElement("div", { className: "h-6 w-24 bg-stone-50 animate-pulse rounded mt-1" }) : /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-sm text-black tracking-widest" }, referralCode)), /* @__PURE__ */ import_react76.default.createElement(
|
|
4242
4270
|
"button",
|
|
4243
4271
|
{
|
|
4244
4272
|
onClick: handleCopyCode,
|
|
4245
4273
|
disabled: isLoading || !referralCode,
|
|
4246
|
-
className: "w-10 h-10 rounded-full bg-white flex items-center justify-center text-
|
|
4274
|
+
className: "w-10 h-10 rounded-full bg-white flex items-center justify-center text-stone-500 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4247
4275
|
},
|
|
4248
4276
|
/* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.Copy01Icon, size: 18 })
|
|
4249
|
-
)), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between text-
|
|
4277
|
+
)), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between text-sm text-stone-500 px-1" }, /* @__PURE__ */ import_react76.default.createElement("span", null, "Total Invited: ", /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-black " }, isLoading && !totalCount ? "-" : totalCount)))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react76.default.createElement(PageSpinner5, null) : /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react76.default.createElement("div", null, referrals.length === 0 ? /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col items-center justify-center py-8 opacity-50" }, /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-xs text-stone-500 text-center" }, "You haven't referred anyone yet.")) : referrals.map((ref, idx) => /* @__PURE__ */ import_react76.default.createElement(
|
|
4250
4278
|
"div",
|
|
4251
4279
|
{
|
|
4252
4280
|
key: `${ref.profile.username}-${idx}`,
|
|
4253
|
-
className: "flex items-center justify-between py-4 hover:bg-
|
|
4281
|
+
className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4254
4282
|
},
|
|
4255
4283
|
/* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react76.default.createElement(
|
|
4256
4284
|
AvatarLogo2,
|
|
@@ -4259,14 +4287,14 @@ var UniversalReferralPage = ({
|
|
|
4259
4287
|
alt: ref.profile.username,
|
|
4260
4288
|
name: formatWeb3Name2(ref.profile.web3Name)
|
|
4261
4289
|
}
|
|
4262
|
-
), /* @__PURE__ */ import_react76.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5 pr-4" }, /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-
|
|
4263
|
-
/* @__PURE__ */ import_react76.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-
|
|
4264
|
-
))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-
|
|
4290
|
+
), /* @__PURE__ */ import_react76.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5 pr-4" }, /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-sm text-black truncate" }, formatWeb3Name2(ref.profile.web3Name)), /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-xs text-stone-500 truncate" }, "@", ref.profile.username))),
|
|
4291
|
+
/* @__PURE__ */ import_react76.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-xs text-stone-400" }, "Joined"), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-xs text-black" }, formatDate(ref.joinedAt)))
|
|
4292
|
+
))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react76.default.createElement(
|
|
4265
4293
|
"button",
|
|
4266
4294
|
{
|
|
4267
4295
|
onClick: () => onPageChange(currentPage - 1),
|
|
4268
4296
|
disabled: currentPage <= 1 || isLoading,
|
|
4269
|
-
className: "p-2 bg-white border border-
|
|
4297
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4270
4298
|
},
|
|
4271
4299
|
/* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.ArrowLeft01Icon, size: 14 })
|
|
4272
4300
|
), /* @__PURE__ */ import_react76.default.createElement(
|
|
@@ -4274,7 +4302,7 @@ var UniversalReferralPage = ({
|
|
|
4274
4302
|
{
|
|
4275
4303
|
onClick: () => onPageChange(currentPage + 1),
|
|
4276
4304
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
4277
|
-
className: "p-2 bg-white border border-
|
|
4305
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4278
4306
|
},
|
|
4279
4307
|
/* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14 })
|
|
4280
4308
|
)))))));
|
|
@@ -4295,7 +4323,7 @@ var formatTierName = (name) => {
|
|
|
4295
4323
|
var getTierGlow = (tier) => {
|
|
4296
4324
|
switch (tier.toUpperCase()) {
|
|
4297
4325
|
case "PLATINUM":
|
|
4298
|
-
return "from-
|
|
4326
|
+
return "from-stone-300";
|
|
4299
4327
|
case "PREMIUM":
|
|
4300
4328
|
return "from-purple-200";
|
|
4301
4329
|
case "GOLD":
|
|
@@ -4311,7 +4339,7 @@ var getTierGlow = (tier) => {
|
|
|
4311
4339
|
case "ZERO":
|
|
4312
4340
|
return "from-rose-200";
|
|
4313
4341
|
default:
|
|
4314
|
-
return "from-
|
|
4342
|
+
return "from-stone-100";
|
|
4315
4343
|
}
|
|
4316
4344
|
};
|
|
4317
4345
|
var UniversalCardActionPage = ({
|
|
@@ -4372,11 +4400,11 @@ var UniversalCardActionPage = ({
|
|
|
4372
4400
|
"button",
|
|
4373
4401
|
{
|
|
4374
4402
|
onClick: onBackHandler,
|
|
4375
|
-
className: "flex items-center gap-2 text-
|
|
4403
|
+
className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none"
|
|
4376
4404
|
},
|
|
4377
4405
|
/* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 16 }),
|
|
4378
4406
|
" Back"
|
|
4379
|
-
)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-
|
|
4407
|
+
)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-400 block mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ import_react78.default.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-stone-500 max-w-lg" }, hasPreordered ? "You have already secured your card. Upgrades are disabled while your order is pending processing." : "Upgrade your tier or secure your card now. Pre-orders guarantee priority processing when the batch goes live.")), isLoadingData ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 32, className: "animate-spin text-stone-300" })) : /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-4xl mx-auto px-4" }, availableTiers.map((tier) => {
|
|
4380
4408
|
const isCurrent = tier.tierName === currentTier;
|
|
4381
4409
|
const isCardDisabled = hasPreordered && !isCurrent;
|
|
4382
4410
|
const isHighlighted = hasPreordered && isCurrent;
|
|
@@ -4399,7 +4427,7 @@ var UniversalCardActionPage = ({
|
|
|
4399
4427
|
}
|
|
4400
4428
|
),
|
|
4401
4429
|
isThisCardLoading && /* @__PURE__ */ import_react78.default.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 32, className: "animate-spin text-black" })),
|
|
4402
|
-
/* @__PURE__ */ import_react78.default.createElement("div", { className: "mb-6 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-between items-start mb-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-black text-sm tracking-widest " }, formatTierName(tier.tierName)), isCurrent && !hasPreordered && /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-
|
|
4430
|
+
/* @__PURE__ */ import_react78.default.createElement("div", { className: "mb-6 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-between items-start mb-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-black text-sm tracking-widest " }, formatTierName(tier.tierName)), isCurrent && !hasPreordered && /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs bg-stone-100 text-stone-600 px-2 py-1 rounded-full tracking-wider" }, "Current")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-baseline gap-1 mt-2" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-3xl font-light text-black" }, tier.priceUSD === 0 ? "Free" : `$${tier.priceUSD.toFixed(2)}`), tier.priceUSD > 0 && /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs text-stone-500" }, tier.isYearly ? "/ year" : "one-time")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-stone-500 mt-3 min-h-12 leading-relaxed" }, tier.description)),
|
|
4403
4431
|
/* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-2.5 mb-6 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: isPrimaryDisabled ? "opacity-50 pointer-events-none" : "" }, /* @__PURE__ */ import_react78.default.createElement(
|
|
4404
4432
|
ThreeDActionButton,
|
|
4405
4433
|
{
|
|
@@ -4414,7 +4442,7 @@ var UniversalCardActionPage = ({
|
|
|
4414
4442
|
disabled: isWaitlistDisabled,
|
|
4415
4443
|
onClick: () => handleTierClick(tier, "join_waitlist"),
|
|
4416
4444
|
className: `w-full py-2.5 rounded-full text-xs tracking-wide transition-all outline-none border
|
|
4417
|
-
${isCurrent && (onWaitlist || hasPreordered) ? "bg-
|
|
4445
|
+
${isCurrent && (onWaitlist || hasPreordered) ? "bg-stone-50 border-stone-200 text-stone-400 cursor-not-allowed" : "bg-white border-stone-200 text-black hover:bg-stone-50"}
|
|
4418
4446
|
disabled:opacity-40 disabled:cursor-not-allowed
|
|
4419
4447
|
`
|
|
4420
4448
|
},
|
|
@@ -4423,7 +4451,7 @@ var UniversalCardActionPage = ({
|
|
|
4423
4451
|
/* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3 relative z-10" }, tier.features.map((feature, featureIdx) => {
|
|
4424
4452
|
const isAvailable = feature.value !== false;
|
|
4425
4453
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
4426
|
-
return /* @__PURE__ */ import_react78.default.createElement("div", { key: featureIdx, className: "flex items-center gap-3" }, isAvailable ? /* @__PURE__ */ import_react78.default.createElement(CheckIcon2, null) : /* @__PURE__ */ import_react78.default.createElement(CrossIcon2, null), /* @__PURE__ */ import_react78.default.createElement("span", { className: `text-
|
|
4454
|
+
return /* @__PURE__ */ import_react78.default.createElement("div", { key: featureIdx, className: "flex items-center gap-3" }, isAvailable ? /* @__PURE__ */ import_react78.default.createElement(CheckIcon2, null) : /* @__PURE__ */ import_react78.default.createElement(CrossIcon2, null), /* @__PURE__ */ import_react78.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-stone-800" : "text-stone-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-stone-500 ml-1 " }, valueText)));
|
|
4427
4455
|
}))
|
|
4428
4456
|
);
|
|
4429
4457
|
}))), selectedTier && intendedAction !== "join_waitlist" && /* @__PURE__ */ import_react78.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && setSelectedTier(null) }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react78.default.createElement(
|
|
@@ -4431,15 +4459,15 @@ var UniversalCardActionPage = ({
|
|
|
4431
4459
|
{
|
|
4432
4460
|
className: `absolute -top-10 -right-10 w-40 h-40 bg-linear-to-bl ${getTierGlow(selectedTier.tierName)} to-transparent opacity-40 blur-2xl rounded-full pointer-events-none`
|
|
4433
4461
|
}
|
|
4434
|
-
), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-
|
|
4462
|
+
), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Confirm Action"), /* @__PURE__ */ import_react78.default.createElement(
|
|
4435
4463
|
"button",
|
|
4436
4464
|
{
|
|
4437
4465
|
disabled: isProcessing,
|
|
4438
4466
|
onClick: () => setSelectedTier(null),
|
|
4439
|
-
className: "text-
|
|
4467
|
+
className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4440
4468
|
},
|
|
4441
4469
|
/* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.CancelCircleIcon, size: 18 })
|
|
4442
|
-
)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-2xl text-black mb-1" }, selectedTier.priceUSD === 0 ? "Free" : `$${selectedTier.priceUSD.toFixed(2)}`), /* @__PURE__ */ import_react78.default.createElement("span", { className: `text-
|
|
4470
|
+
)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 relative z-10" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-2xl text-black mb-1" }, selectedTier.priceUSD === 0 ? "Free" : `$${selectedTier.priceUSD.toFixed(2)}`), /* @__PURE__ */ import_react78.default.createElement("span", { className: `text-xs tracking-widest px-4 py-1.5 rounded-full bg-stone-100 text-black mt-1` }, formatTierName(selectedTier.tierName), " ", formatTierName(cardType))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 mb-8 mt-4" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1" }, "Action"), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-sm text-black " }, intendedAction === "upgrade" ? `Upgrade to ${formatTierName(selectedTier.tierName)}` : `Pre-order Card`)), intendedAction === "pre_order" && selectedTier.priceUSD > 0 && /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1" }, "Payment Notice"), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs text-stone-600 leading-relaxed block" }, "By confirming, $", selectedTier.priceUSD.toFixed(2), " will be securely deducted from your USD asset balance to guarantee your order."))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react78.default.createElement(
|
|
4443
4471
|
ThreeDActionButton,
|
|
4444
4472
|
{
|
|
4445
4473
|
onClick: processAction,
|
|
@@ -4452,7 +4480,7 @@ var UniversalCardActionPage = ({
|
|
|
4452
4480
|
{
|
|
4453
4481
|
disabled: isProcessing,
|
|
4454
4482
|
onClick: () => setSelectedTier(null),
|
|
4455
|
-
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-
|
|
4483
|
+
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-sm mt-1 disabled:opacity-50"
|
|
4456
4484
|
},
|
|
4457
4485
|
"Cancel"
|
|
4458
4486
|
))))), selectedTier && intendedAction === "join_waitlist" && /* @__PURE__ */ import_react78.default.createElement(
|
|
@@ -4499,14 +4527,14 @@ var PinDialerBottomSheet = ({
|
|
|
4499
4527
|
if (!isVerifying) onClose();
|
|
4500
4528
|
}
|
|
4501
4529
|
}
|
|
4502
|
-
), /* @__PURE__ */ import_react80.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react80.default.createElement("h3", { className: "text-
|
|
4530
|
+
), /* @__PURE__ */ import_react80.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react80.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, title), /* @__PURE__ */ import_react80.default.createElement(
|
|
4503
4531
|
"button",
|
|
4504
4532
|
{
|
|
4505
4533
|
onClick: () => {
|
|
4506
4534
|
if (!isVerifying) onClose();
|
|
4507
4535
|
},
|
|
4508
4536
|
disabled: isVerifying,
|
|
4509
|
-
className: "text-
|
|
4537
|
+
className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4510
4538
|
},
|
|
4511
4539
|
/* @__PURE__ */ import_react80.default.createElement(import_react81.HugeiconsIcon, { icon: import_core_free_icons29.CancelCircleIcon, size: 20 })
|
|
4512
4540
|
)), /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ import_react80.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react80.default.createElement(
|
|
@@ -4540,7 +4568,7 @@ var import_core_free_icons30 = require("@hugeicons/core-free-icons");
|
|
|
4540
4568
|
var CircularLogo = ({ src, alt, fallbackText }) => {
|
|
4541
4569
|
const [isLoaded, setIsLoaded] = (0, import_react82.useState)(false);
|
|
4542
4570
|
const [hasError, setHasError] = (0, import_react82.useState)(false);
|
|
4543
|
-
return /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative w-5 h-5 rounded-full overflow-hidden bg-
|
|
4571
|
+
return /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative w-5 h-5 rounded-full overflow-hidden bg-stone-100 flex items-center justify-center shrink-0" }, !hasError && src ? /* @__PURE__ */ import_react82.default.createElement(import_react82.default.Fragment, null, !isLoaded && /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0 bg-stone-200 animate-pulse" }), /* @__PURE__ */ import_react82.default.createElement(
|
|
4544
4572
|
"img",
|
|
4545
4573
|
{
|
|
4546
4574
|
src,
|
|
@@ -4549,7 +4577,7 @@ var CircularLogo = ({ src, alt, fallbackText }) => {
|
|
|
4549
4577
|
onError: () => setHasError(true),
|
|
4550
4578
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}`
|
|
4551
4579
|
}
|
|
4552
|
-
)) : /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-
|
|
4580
|
+
)) : /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black uppercase" }, fallbackText.substring(0, 2)));
|
|
4553
4581
|
};
|
|
4554
4582
|
var DEFAULT_NETWORK_REGEX = {
|
|
4555
4583
|
EVM: /^0x[a-fA-F0-9]{40}$/,
|
|
@@ -4712,7 +4740,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4712
4740
|
}
|
|
4713
4741
|
};
|
|
4714
4742
|
const isButtonDisabled = isSubmitting || isCalculating || !fiatAmount || !cryptoAmount || !isAddressValid || !currentRateKey;
|
|
4715
|
-
return /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react82.default.createElement(ManagedToaster, null), !hideBackButton && /* @__PURE__ */ import_react82.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-
|
|
4743
|
+
return /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react82.default.createElement(ManagedToaster, null), !hideBackButton && /* @__PURE__ */ import_react82.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-stone-500 hover:text-black transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react82.default.createElement(import_react83.HugeiconsIcon, { icon: import_core_free_icons30.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ import_react82.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Buy Crypto"), /* @__PURE__ */ import_react82.default.createElement("p", { className: "text-xs text-stone-500" }, "Purchase digital assets instantly in your local currency with direct wallet delivery.")), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-6 p-6 sm:p-8 rounded-3xl bg-white w-full " }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative flex flex-col gap-3" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "border border-stone-200 rounded-2xl p-4 flex items-center justify-between transition-all focus-within:border-black" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-1 flex-1 pr-3 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs tracking-widest text-stone-400" }, "You Pay (", fiatCurrency.code, ")"), isCalculating && activeSource === "CRYPTO" ? /* @__PURE__ */ import_react82.default.createElement("div", { className: "h-7 w-32 bg-stone-100 animate-pulse rounded-md mt-1" }) : /* @__PURE__ */ import_react82.default.createElement(
|
|
4716
4744
|
"input",
|
|
4717
4745
|
{
|
|
4718
4746
|
type: "text",
|
|
@@ -4721,9 +4749,9 @@ var UniversalBuyCryptoPage = ({
|
|
|
4721
4749
|
onChange: handleFiatInputChange,
|
|
4722
4750
|
placeholder: "0.00",
|
|
4723
4751
|
disabled: isSubmitting,
|
|
4724
|
-
className: "text-lg sm:text-xl text-black bg-transparent outline-none w-full placeholder-
|
|
4752
|
+
className: "text-lg sm:text-xl text-black bg-transparent outline-none w-full placeholder-stone-300 "
|
|
4725
4753
|
}
|
|
4726
|
-
)), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center gap-2 bg-
|
|
4754
|
+
)), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center gap-2 bg-stone-50 rounded-full px-3 py-1.5 shrink-0 select-none" }, /* @__PURE__ */ import_react82.default.createElement(CircularLogo, { src: fiatCurrency.logoUrl, alt: fiatCurrency.code, fallbackText: fiatCurrency.code }), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black" }, fiatCurrency.code))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-10 h-10 rounded-full bg-white border border-stone-200 flex items-center justify-center" }, /* @__PURE__ */ import_react82.default.createElement("svg", { className: "w-4 h-4 text-black", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ import_react82.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" })))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "border border-stone-200 rounded-2xl p-4 flex items-center justify-between transition-all focus-within:border-black" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-1 flex-1 pr-3 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs tracking-widest text-stone-400" }, "You Receive"), isCalculating && activeSource === "FIAT" ? /* @__PURE__ */ import_react82.default.createElement("div", { className: "h-7 w-32 bg-stone-100 animate-pulse rounded-md mt-1" }) : /* @__PURE__ */ import_react82.default.createElement(
|
|
4727
4755
|
"input",
|
|
4728
4756
|
{
|
|
4729
4757
|
type: "text",
|
|
@@ -4732,7 +4760,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4732
4760
|
onChange: handleCryptoInputChange,
|
|
4733
4761
|
placeholder: "0.00",
|
|
4734
4762
|
disabled: isSubmitting,
|
|
4735
|
-
className: "text-lg sm:text-xl text-black bg-transparent outline-none w-full placeholder-
|
|
4763
|
+
className: "text-lg sm:text-xl text-black bg-transparent outline-none w-full placeholder-stone-300 "
|
|
4736
4764
|
}
|
|
4737
4765
|
)), /* @__PURE__ */ import_react82.default.createElement(
|
|
4738
4766
|
"button",
|
|
@@ -4740,21 +4768,21 @@ var UniversalBuyCryptoPage = ({
|
|
|
4740
4768
|
type: "button",
|
|
4741
4769
|
onClick: () => setIsCryptoDialogOpen(true),
|
|
4742
4770
|
disabled: isSubmitting,
|
|
4743
|
-
className: "flex items-center gap-2 bg-
|
|
4771
|
+
className: "flex items-center gap-2 bg-stone-100 hover:bg-stone-200 transition-colors rounded-full px-1 py-1.5 shrink-0 outline-none"
|
|
4744
4772
|
},
|
|
4745
4773
|
/* @__PURE__ */ import_react82.default.createElement(CircularLogo, { src: selectedCrypto.logoUrl, alt: selectedCrypto.code, fallbackText: selectedCrypto.code }),
|
|
4746
4774
|
/* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black" }, selectedCrypto.code),
|
|
4747
|
-
/* @__PURE__ */ import_react82.default.createElement("svg", { className: "w-3.5 h-3.5 text-
|
|
4748
|
-
))), rateDisplay && /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center justify-between text-
|
|
4775
|
+
/* @__PURE__ */ import_react82.default.createElement("svg", { className: "w-3.5 h-3.5 text-stone-500 ml-0.5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ import_react82.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
4776
|
+
))), rateDisplay && /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center justify-between text-xs text-stone-500 px-1 -mt-2" }, /* @__PURE__ */ import_react82.default.createElement("span", null, "Exchange Rate"), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-black" }, rateDisplay)), !hideRecipientSection && /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-6 pt-4 border-t border-stone-100" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "space-y-2 flex-1 w-full relative" }, /* @__PURE__ */ import_react82.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Network / Blockchain"), /* @__PURE__ */ import_react82.default.createElement(
|
|
4749
4777
|
"button",
|
|
4750
4778
|
{
|
|
4751
4779
|
type: "button",
|
|
4752
4780
|
onClick: () => !readOnlyRecipientSection && setIsNetworkDialogOpen(true),
|
|
4753
4781
|
disabled: isSubmitting || selectedCrypto?.networks?.length <= 1 || readOnlyRecipientSection,
|
|
4754
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b text-black transition-all outline-none flex items-center justify-between ${readOnlyRecipientSection ? "border-
|
|
4782
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b text-black transition-all outline-none flex items-center justify-between ${readOnlyRecipientSection ? "border-stone-200 cursor-default opacity-80" : "border-stone-200 hover:border-black focus:border-black"}`
|
|
4755
4783
|
},
|
|
4756
4784
|
/* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react82.default.createElement(CircularLogo, { src: selectedNetwork.logoUrl || selectedCrypto.logoUrl, alt: selectedNetwork.name, fallbackText: selectedNetwork.symbol }), /* @__PURE__ */ import_react82.default.createElement("span", null, selectedNetwork.name)),
|
|
4757
|
-
!readOnlyRecipientSection && selectedCrypto?.networks?.length > 1 && /* @__PURE__ */ import_react82.default.createElement("svg", { className: "w-4 h-4 text-
|
|
4785
|
+
!readOnlyRecipientSection && selectedCrypto?.networks?.length > 1 && /* @__PURE__ */ import_react82.default.createElement("svg", { className: "w-4 h-4 text-stone-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ import_react82.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
4758
4786
|
)), /* @__PURE__ */ import_react82.default.createElement(
|
|
4759
4787
|
TextInput,
|
|
4760
4788
|
{
|
|
@@ -4778,20 +4806,20 @@ var UniversalBuyCryptoPage = ({
|
|
|
4778
4806
|
"Buy ",
|
|
4779
4807
|
selectedCrypto.code,
|
|
4780
4808
|
" Now"
|
|
4781
|
-
))), isCryptoDialogOpen && /* @__PURE__ */ import_react82.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0", onClick: () => setIsCryptoDialogOpen(false) }), /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-sm bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: () => setIsCryptoDialogOpen(false), className: "absolute top-4 right-4 p-2 text-
|
|
4809
|
+
))), isCryptoDialogOpen && /* @__PURE__ */ import_react82.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0", onClick: () => setIsCryptoDialogOpen(false) }), /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-sm bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: () => setIsCryptoDialogOpen(false), className: "absolute top-4 right-4 p-2 text-stone-700 hover:text-stone-400 transition-colors outline-none" }, /* @__PURE__ */ import_react82.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react82.default.createElement("path", { d: "M18 6 6 18" }), /* @__PURE__ */ import_react82.default.createElement("path", { d: "m6 6 12 12" }))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "mb-6 mt-2" }, /* @__PURE__ */ import_react82.default.createElement("h2", { className: "text-xl text-black tracking-tight mb-2" }, "Select Cryptocurrency"), /* @__PURE__ */ import_react82.default.createElement("p", { className: "text-sm text-stone-500 leading-relaxed" }, "Choose the digital asset you want to purchase.")), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-2 max-h-72 overflow-y-auto custom-scrollbar pr-1" }, cryptoOptions.map((c) => {
|
|
4782
4810
|
const isSelected = c.code === selectedCrypto.code;
|
|
4783
4811
|
return /* @__PURE__ */ import_react82.default.createElement(
|
|
4784
4812
|
"button",
|
|
4785
4813
|
{
|
|
4786
4814
|
key: c.code,
|
|
4787
4815
|
onClick: () => handleCryptoSelect(c),
|
|
4788
|
-
className: `flex items-center gap-4 p-3 rounded-full hover:bg-
|
|
4816
|
+
className: `flex items-center gap-4 p-3 rounded-full hover:bg-stone-50 transition-colors text-left outline-none border ${isSelected ? "border-black bg-stone-50/50" : "border-transparent"}`
|
|
4789
4817
|
},
|
|
4790
4818
|
/* @__PURE__ */ import_react82.default.createElement(CircularLogo, { src: c.logoUrl, alt: c.name, fallbackText: c.code }),
|
|
4791
|
-
/* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black truncate" }, c.name), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-
|
|
4819
|
+
/* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black truncate" }, c.name), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-stone-400" }, c.code)),
|
|
4792
4820
|
isSelected && /* @__PURE__ */ import_react82.default.createElement(import_react83.HugeiconsIcon, { icon: import_core_free_icons30.CheckmarkCircle02Icon, size: 16, className: "text-black" })
|
|
4793
4821
|
);
|
|
4794
|
-
}))))), isNetworkDialogOpen && /* @__PURE__ */ import_react82.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0", onClick: () => setIsNetworkDialogOpen(false) }), /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-sm bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: () => setIsNetworkDialogOpen(false), className: "absolute top-4 right-4 p-2 text-
|
|
4822
|
+
}))))), isNetworkDialogOpen && /* @__PURE__ */ import_react82.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0", onClick: () => setIsNetworkDialogOpen(false) }), /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full max-w-sm bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react82.default.createElement("button", { onClick: () => setIsNetworkDialogOpen(false), className: "absolute top-4 right-4 p-2 text-stone-700 hover:text-stone-400 transition-colors outline-none" }, /* @__PURE__ */ import_react82.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react82.default.createElement("path", { d: "M18 6 6 18" }), /* @__PURE__ */ import_react82.default.createElement("path", { d: "m6 6 12 12" }))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "mb-6 mt-2" }, /* @__PURE__ */ import_react82.default.createElement("h2", { className: "text-xl text-black tracking-tight mb-2" }, "Select Network"), /* @__PURE__ */ import_react82.default.createElement("p", { className: "text-sm text-stone-500 leading-relaxed" }, "Ensure your receiving wallet supports this network.")), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-2 max-h-72 overflow-y-auto custom-scrollbar pr-1" }, selectedCrypto?.networks?.map((net) => {
|
|
4795
4823
|
const isSelected = net.id === selectedNetwork.id;
|
|
4796
4824
|
return /* @__PURE__ */ import_react82.default.createElement(
|
|
4797
4825
|
"button",
|
|
@@ -4801,10 +4829,10 @@ var UniversalBuyCryptoPage = ({
|
|
|
4801
4829
|
setSelectedNetwork(net);
|
|
4802
4830
|
setIsNetworkDialogOpen(false);
|
|
4803
4831
|
},
|
|
4804
|
-
className: `flex items-center gap-4 p-3 rounded-full hover:bg-
|
|
4832
|
+
className: `flex items-center gap-4 p-3 rounded-full hover:bg-stone-50 transition-colors text-left outline-none border ${isSelected ? "border-black bg-stone-50/50" : "border-transparent"}`
|
|
4805
4833
|
},
|
|
4806
4834
|
/* @__PURE__ */ import_react82.default.createElement(CircularLogo, { src: net.logoUrl || selectedCrypto.logoUrl, alt: net.name, fallbackText: net.symbol }),
|
|
4807
|
-
/* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black truncate" }, net.name), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-
|
|
4835
|
+
/* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-black truncate" }, net.name), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-xs text-stone-400" }, net.symbol)),
|
|
4808
4836
|
isSelected && /* @__PURE__ */ import_react82.default.createElement(import_react83.HugeiconsIcon, { icon: import_core_free_icons30.CheckmarkCircle02Icon, size: 16, className: "text-black" })
|
|
4809
4837
|
);
|
|
4810
4838
|
}))))));
|
|
@@ -4826,14 +4854,14 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
4826
4854
|
case "ONGOING":
|
|
4827
4855
|
return "bg-emerald-500";
|
|
4828
4856
|
case "COMPLETED":
|
|
4829
|
-
return "bg-
|
|
4857
|
+
return "bg-stone-400";
|
|
4830
4858
|
case "CANCELLED":
|
|
4831
4859
|
return "bg-rose-500";
|
|
4832
4860
|
default:
|
|
4833
|
-
return "bg-
|
|
4861
|
+
return "bg-stone-200";
|
|
4834
4862
|
}
|
|
4835
4863
|
};
|
|
4836
|
-
return /* @__PURE__ */ import_react84.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "w-full h-full rounded-lg bg-
|
|
4864
|
+
return /* @__PURE__ */ import_react84.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react84.default.createElement(import_react85.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react84.default.createElement(
|
|
4837
4865
|
"img",
|
|
4838
4866
|
{
|
|
4839
4867
|
src: finalSrc,
|
|
@@ -4860,25 +4888,25 @@ var UniversalHuddlesPage = ({
|
|
|
4860
4888
|
"button",
|
|
4861
4889
|
{
|
|
4862
4890
|
onClick: () => onCreateHuddle?.(),
|
|
4863
|
-
className: "shrink-0 px-4 py-1.5 border border-
|
|
4891
|
+
className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none"
|
|
4864
4892
|
},
|
|
4865
4893
|
"Create new"
|
|
4866
|
-
)), headerDescription && /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-
|
|
4894
|
+
)), headerDescription && /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-xs text-stone-500" }, headerDescription)), /* @__PURE__ */ import_react84.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react84.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react84.default.createElement("div", null, huddles.length === 0 ? /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No huddles available") : huddles.map((huddle) => /* @__PURE__ */ import_react84.default.createElement(
|
|
4867
4895
|
"div",
|
|
4868
4896
|
{
|
|
4869
4897
|
key: huddle.id,
|
|
4870
4898
|
onClick: () => onHuddleClick(huddle.id),
|
|
4871
|
-
className: "flex flex-row items-center gap-4 py-2 hover:bg-
|
|
4899
|
+
className: "flex flex-row items-center gap-4 py-2 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4872
4900
|
},
|
|
4873
4901
|
/* @__PURE__ */ import_react84.default.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
|
|
4874
|
-
/* @__PURE__ */ import_react84.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-
|
|
4875
|
-
/* @__PURE__ */ import_react84.default.createElement(import_react85.HugeiconsIcon, { icon: import_core_free_icons31.ArrowRight01Icon, size: 14, className: "shrink-0 text-
|
|
4876
|
-
))), /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react84.default.createElement("span", { className: "text-
|
|
4902
|
+
/* @__PURE__ */ import_react84.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-sm text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ import_react84.default.createElement("span", { className: "text-xs text-stone-500 truncate block mt-0.5" }, huddle.timeString)),
|
|
4903
|
+
/* @__PURE__ */ import_react84.default.createElement(import_react85.HugeiconsIcon, { icon: import_core_free_icons31.ArrowRight01Icon, size: 14, className: "shrink-0 text-stone-400" })
|
|
4904
|
+
))), /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react84.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react84.default.createElement(
|
|
4877
4905
|
"button",
|
|
4878
4906
|
{
|
|
4879
4907
|
onClick: () => onPageChange(currentPage - 1),
|
|
4880
4908
|
disabled: currentPage <= 1 || isLoading,
|
|
4881
|
-
className: "p-2 bg-white border border-
|
|
4909
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4882
4910
|
},
|
|
4883
4911
|
/* @__PURE__ */ import_react84.default.createElement(import_react85.HugeiconsIcon, { icon: import_core_free_icons31.ArrowLeft01Icon, size: 14 })
|
|
4884
4912
|
), /* @__PURE__ */ import_react84.default.createElement(
|
|
@@ -4886,7 +4914,7 @@ var UniversalHuddlesPage = ({
|
|
|
4886
4914
|
{
|
|
4887
4915
|
onClick: () => onPageChange(currentPage + 1),
|
|
4888
4916
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
4889
|
-
className: "p-2 bg-white border border-
|
|
4917
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4890
4918
|
},
|
|
4891
4919
|
/* @__PURE__ */ import_react84.default.createElement(import_react85.HugeiconsIcon, { icon: import_core_free_icons31.ArrowRight01Icon, size: 14 })
|
|
4892
4920
|
)))))));
|
|
@@ -4911,12 +4939,12 @@ var MemberAvatar2 = ({ src, status }) => {
|
|
|
4911
4939
|
case "OFFLINE":
|
|
4912
4940
|
return "bg-rose-500";
|
|
4913
4941
|
case "AWAY":
|
|
4914
|
-
return "bg-
|
|
4942
|
+
return "bg-stone-400";
|
|
4915
4943
|
default:
|
|
4916
|
-
return "bg-
|
|
4944
|
+
return "bg-stone-200";
|
|
4917
4945
|
}
|
|
4918
4946
|
};
|
|
4919
|
-
return /* @__PURE__ */ import_react86.default.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full h-full rounded-lg bg-
|
|
4947
|
+
return /* @__PURE__ */ import_react86.default.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react86.default.createElement(
|
|
4920
4948
|
"img",
|
|
4921
4949
|
{
|
|
4922
4950
|
src: finalSrc,
|
|
@@ -5027,37 +5055,37 @@ var UniversalMembersPage = ({
|
|
|
5027
5055
|
onClose: () => setMemberToRemove(null),
|
|
5028
5056
|
onConfirm: handleConfirmRemove
|
|
5029
5057
|
}
|
|
5030
|
-
), !isInviteMode && /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.Search01Icon, size: 16, className: "text-
|
|
5058
|
+
), !isInviteMode && /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react86.default.createElement(
|
|
5031
5059
|
"input",
|
|
5032
5060
|
{
|
|
5033
5061
|
type: "text",
|
|
5034
5062
|
placeholder: "Search members...",
|
|
5035
5063
|
value: localSearchQuery,
|
|
5036
5064
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
5037
|
-
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-
|
|
5065
|
+
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black"
|
|
5038
5066
|
}
|
|
5039
5067
|
)), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react86.default.createElement(
|
|
5040
5068
|
"button",
|
|
5041
5069
|
{
|
|
5042
5070
|
onClick: () => setIsStatusModalOpen(true),
|
|
5043
|
-
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-
|
|
5071
|
+
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none"
|
|
5044
5072
|
},
|
|
5045
5073
|
/* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.SearchList02Icon, size: 16 })
|
|
5046
5074
|
), /* @__PURE__ */ import_react86.default.createElement(
|
|
5047
5075
|
"button",
|
|
5048
5076
|
{
|
|
5049
5077
|
onClick: () => setIsRoleModalOpen(true),
|
|
5050
|
-
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-
|
|
5078
|
+
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none"
|
|
5051
5079
|
},
|
|
5052
5080
|
/* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.ListSettingIcon, size: 16 })
|
|
5053
|
-
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-row items-start justify-between gap-4" }, /* @__PURE__ */ import_react86.default.createElement("div", null, /* @__PURE__ */ import_react86.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, isInviteMode ? "Add Member" : headerTitle), headerDescription && !isInviteMode && /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-
|
|
5081
|
+
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-row items-start justify-between gap-4" }, /* @__PURE__ */ import_react86.default.createElement("div", null, /* @__PURE__ */ import_react86.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, isInviteMode ? "Add Member" : headerTitle), headerDescription && !isInviteMode && /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-xs text-stone-500" }, headerDescription)), !isInviteMode && /* @__PURE__ */ import_react86.default.createElement(
|
|
5054
5082
|
"button",
|
|
5055
5083
|
{
|
|
5056
5084
|
onClick: () => setIsInviteMode(true),
|
|
5057
|
-
className: "shrink-0 px-4 py-2 border border-
|
|
5085
|
+
className: "shrink-0 px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none"
|
|
5058
5086
|
},
|
|
5059
5087
|
"Invite Team"
|
|
5060
|
-
)), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react86.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react86.default.createElement("label", { className: "text-
|
|
5088
|
+
)), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react86.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react86.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react86.default.createElement(
|
|
5061
5089
|
"input",
|
|
5062
5090
|
{
|
|
5063
5091
|
type: "email",
|
|
@@ -5065,7 +5093,7 @@ var UniversalMembersPage = ({
|
|
|
5065
5093
|
onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)),
|
|
5066
5094
|
required: true,
|
|
5067
5095
|
autoFocus: true,
|
|
5068
|
-
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-
|
|
5096
|
+
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300",
|
|
5069
5097
|
placeholder: "name@company.com"
|
|
5070
5098
|
}
|
|
5071
5099
|
)), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react86.default.createElement(
|
|
@@ -5086,36 +5114,36 @@ var UniversalMembersPage = ({
|
|
|
5086
5114
|
setInviteEmail("");
|
|
5087
5115
|
},
|
|
5088
5116
|
disabled: isInviting,
|
|
5089
|
-
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-
|
|
5117
|
+
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide"
|
|
5090
5118
|
},
|
|
5091
5119
|
"Cancel"
|
|
5092
|
-
))) : isListLoading ? /* @__PURE__ */ import_react86.default.createElement(PageSpinner7, null) : /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-
|
|
5120
|
+
))) : isListLoading ? /* @__PURE__ */ import_react86.default.createElement(PageSpinner7, null) : /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react86.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react86.default.createElement(import_react86.default.Fragment, { key: member.id }, expandedId === member.id ? /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col p-5 bg-stone-50 rounded-xl animate-in fade-in zoom-in-95 duration-200 gap-5 my-2" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react86.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, member.name), /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-xs text-stone-500 capitalize" }, member.role.toLowerCase()))), member.departmentName && /* @__PURE__ */ import_react86.default.createElement("div", { className: "pt-3 border-t border-stone-200" }, /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-1" }, "Department"), /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-sm text-black truncate block" }, member.departmentName)), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex gap-3 pt-2" }, !hideAction && /* @__PURE__ */ import_react86.default.createElement(
|
|
5093
5121
|
"button",
|
|
5094
5122
|
{
|
|
5095
5123
|
onClick: () => setMemberToRemove(member),
|
|
5096
|
-
className: "flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-
|
|
5124
|
+
className: "flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-xs tracking-wide transition-colors outline-none"
|
|
5097
5125
|
},
|
|
5098
5126
|
actionButtonText
|
|
5099
5127
|
), /* @__PURE__ */ import_react86.default.createElement(
|
|
5100
5128
|
"button",
|
|
5101
5129
|
{
|
|
5102
5130
|
onClick: () => setExpandedId(null),
|
|
5103
|
-
className: "flex-1 py-2.5 bg-white border border-
|
|
5131
|
+
className: "flex-1 py-2.5 bg-white border border-stone-200 text-black hover:bg-stone-100 rounded-full text-xs tracking-wide transition-colors outline-none"
|
|
5104
5132
|
},
|
|
5105
5133
|
"Close"
|
|
5106
5134
|
))) : /* @__PURE__ */ import_react86.default.createElement(
|
|
5107
5135
|
"div",
|
|
5108
5136
|
{
|
|
5109
5137
|
onClick: () => setExpandedId(member.id),
|
|
5110
|
-
className: "flex items-center justify-between py-3 hover:bg-
|
|
5138
|
+
className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
5111
5139
|
},
|
|
5112
|
-
/* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react86.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react86.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-
|
|
5113
|
-
)))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2" }, /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-
|
|
5140
|
+
/* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react86.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react86.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-sm text-black truncate" }, member.name), /* @__PURE__ */ import_react86.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))
|
|
5141
|
+
)))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2" }, /* @__PURE__ */ import_react86.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react86.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react86.default.createElement(
|
|
5114
5142
|
"button",
|
|
5115
5143
|
{
|
|
5116
5144
|
onClick: () => onPageChange(currentPage - 1),
|
|
5117
5145
|
disabled: currentPage <= 1 || isListLoading,
|
|
5118
|
-
className: "p-2 bg-white border border-
|
|
5146
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5119
5147
|
},
|
|
5120
5148
|
/* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.ArrowLeft01Icon, size: 14 })
|
|
5121
5149
|
), /* @__PURE__ */ import_react86.default.createElement(
|
|
@@ -5123,10 +5151,10 @@ var UniversalMembersPage = ({
|
|
|
5123
5151
|
{
|
|
5124
5152
|
onClick: () => onPageChange(currentPage + 1),
|
|
5125
5153
|
disabled: currentPage >= totalPages || isListLoading || totalPages === 0,
|
|
5126
|
-
className: "p-2 bg-white border border-
|
|
5154
|
+
className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5127
5155
|
},
|
|
5128
5156
|
/* @__PURE__ */ import_react86.default.createElement(import_react87.HugeiconsIcon, { icon: import_core_free_icons32.ArrowRight01Icon, size: 14 })
|
|
5129
|
-
)))))), isStatusModalOpen && /* @__PURE__ */ import_react86.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsStatusModalOpen(false) }), /* @__PURE__ */ import_react86.default.createElement("div", { ref: statusDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react86.default.createElement("h3", { className: "text-
|
|
5157
|
+
)))))), isStatusModalOpen && /* @__PURE__ */ import_react86.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsStatusModalOpen(false) }), /* @__PURE__ */ import_react86.default.createElement("div", { ref: statusDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react86.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Status Filter")), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"].map((option) => /* @__PURE__ */ import_react86.default.createElement(
|
|
5130
5158
|
"button",
|
|
5131
5159
|
{
|
|
5132
5160
|
key: option,
|
|
@@ -5134,10 +5162,10 @@ var UniversalMembersPage = ({
|
|
|
5134
5162
|
onStatusFilterChange(option);
|
|
5135
5163
|
setIsStatusModalOpen(false);
|
|
5136
5164
|
},
|
|
5137
|
-
className: `text-left px-4 py-3 text-
|
|
5165
|
+
className: `text-left px-4 py-3 text-xs tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeStatusFilter === option ? "bg-stone-100 text-black" : "text-stone-500 hover:bg-stone-50 hover:text-black"}`
|
|
5138
5166
|
},
|
|
5139
5167
|
/* @__PURE__ */ import_react86.default.createElement("span", { className: "truncate pr-2 capitalize" }, option.toLowerCase())
|
|
5140
|
-
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react86.default.createElement("button", { onClick: () => setIsStatusModalOpen(false), className: "w-full py-4 text-
|
|
5168
|
+
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react86.default.createElement("button", { onClick: () => setIsStatusModalOpen(false), className: "w-full py-4 text-sm text-stone-500 hover:text-black transition-colors outline-none" }, "Cancel")))), isRoleModalOpen && /* @__PURE__ */ import_react86.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react86.default.createElement("div", { ref: roleDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react86.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react86.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Role Filter")), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "ADMIN", "MANAGER", "MEMBER", "GUEST"].map((option) => /* @__PURE__ */ import_react86.default.createElement(
|
|
5141
5169
|
"button",
|
|
5142
5170
|
{
|
|
5143
5171
|
key: option,
|
|
@@ -5145,10 +5173,10 @@ var UniversalMembersPage = ({
|
|
|
5145
5173
|
onRoleFilterChange(option);
|
|
5146
5174
|
setIsRoleModalOpen(false);
|
|
5147
5175
|
},
|
|
5148
|
-
className: `text-left px-4 py-3 text-
|
|
5176
|
+
className: `text-left px-4 py-3 text-xs tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeRoleFilter === option ? "bg-stone-100 text-black" : "text-stone-500 hover:bg-stone-50 hover:text-black"}`
|
|
5149
5177
|
},
|
|
5150
5178
|
/* @__PURE__ */ import_react86.default.createElement("span", { className: "truncate pr-2 capitalize" }, option.toLowerCase())
|
|
5151
|
-
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react86.default.createElement("button", { onClick: () => setIsRoleModalOpen(false), className: "w-full py-4 text-
|
|
5179
|
+
))), /* @__PURE__ */ import_react86.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react86.default.createElement("button", { onClick: () => setIsRoleModalOpen(false), className: "w-full py-4 text-sm text-stone-500 hover:text-black transition-colors outline-none" }, "Cancel")))));
|
|
5152
5180
|
};
|
|
5153
5181
|
|
|
5154
5182
|
// src/components/UniversalHome2.tsx
|
|
@@ -5162,7 +5190,7 @@ var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
5162
5190
|
const [error, setError] = (0, import_react88.useState)(false);
|
|
5163
5191
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
5164
5192
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5165
|
-
return /* @__PURE__ */ import_react88.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-full h-full rounded-lg bg-
|
|
5193
|
+
return /* @__PURE__ */ import_react88.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react88.default.createElement(
|
|
5166
5194
|
"img",
|
|
5167
5195
|
{
|
|
5168
5196
|
src: finalSrc,
|
|
@@ -5250,7 +5278,7 @@ var UniversalHome2 = ({
|
|
|
5250
5278
|
"button",
|
|
5251
5279
|
{
|
|
5252
5280
|
onClick: () => router.push("/app/settings"),
|
|
5253
|
-
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-
|
|
5281
|
+
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
|
|
5254
5282
|
},
|
|
5255
5283
|
/* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Settings03Icon, size: 20, className: "text-black" })
|
|
5256
5284
|
), /* @__PURE__ */ import_react88.default.createElement(
|
|
@@ -5260,7 +5288,7 @@ var UniversalHome2 = ({
|
|
|
5260
5288
|
setShowNotifDialog(true);
|
|
5261
5289
|
setSelectedNotif(null);
|
|
5262
5290
|
},
|
|
5263
|
-
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-
|
|
5291
|
+
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
|
|
5264
5292
|
},
|
|
5265
5293
|
/* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Notification01Icon, size: 20, className: "text-black" }),
|
|
5266
5294
|
hasUnreadNotifs && /* @__PURE__ */ import_react88.default.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
|
|
@@ -5268,9 +5296,9 @@ var UniversalHome2 = ({
|
|
|
5268
5296
|
"div",
|
|
5269
5297
|
{
|
|
5270
5298
|
onClick: createHuddleAction?.onClick,
|
|
5271
|
-
className: "bg-[#
|
|
5299
|
+
className: "bg-[#062c25] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
5272
5300
|
},
|
|
5273
|
-
/* @__PURE__ */ import_react88.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-
|
|
5301
|
+
/* @__PURE__ */ import_react88.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-sm sm:text-sm text-white leading-tight" }, "Create", /* @__PURE__ */ import_react88.default.createElement("br", null), /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-white/70" }, "Huddle")), /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.ArrowUpRight01Icon, size: 16, className: "text-white" }))),
|
|
5274
5302
|
/* @__PURE__ */ import_react88.default.createElement(
|
|
5275
5303
|
"img",
|
|
5276
5304
|
{
|
|
@@ -5285,7 +5313,7 @@ var UniversalHome2 = ({
|
|
|
5285
5313
|
onClick: joinHuddleAction?.onClick,
|
|
5286
5314
|
className: "bg-[#ffffff] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
5287
5315
|
},
|
|
5288
|
-
/* @__PURE__ */ import_react88.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-
|
|
5316
|
+
/* @__PURE__ */ import_react88.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-sm sm:text-sm text-black leading-tight" }, "Join", /* @__PURE__ */ import_react88.default.createElement("br", null), /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-black/60" }, "Huddle")), /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.ArrowRight01Icon, size: 16, className: "text-black" }))),
|
|
5289
5317
|
/* @__PURE__ */ import_react88.default.createElement(
|
|
5290
5318
|
"img",
|
|
5291
5319
|
{
|
|
@@ -5299,7 +5327,7 @@ var UniversalHome2 = ({
|
|
|
5299
5327
|
{
|
|
5300
5328
|
...huddlesProps
|
|
5301
5329
|
}
|
|
5302
|
-
)), showOrgSwitcher && /* @__PURE__ */ import_react88.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ import_react88.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react88.default.createElement("h3", { className: "text-
|
|
5330
|
+
)), showOrgSwitcher && /* @__PURE__ */ import_react88.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ import_react88.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react88.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ import_react88.default.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ import_react88.default.createElement(
|
|
5303
5331
|
"button",
|
|
5304
5332
|
{
|
|
5305
5333
|
key: org.id,
|
|
@@ -5307,11 +5335,11 @@ var UniversalHome2 = ({
|
|
|
5307
5335
|
onOrganizationSelect?.(org.id);
|
|
5308
5336
|
setShowOrgSwitcher(false);
|
|
5309
5337
|
},
|
|
5310
|
-
className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-
|
|
5338
|
+
className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-stone-50 last:border-0 ${activeOrgId === org.id ? "bg-stone-50" : "hover:bg-stone-50/50"}`
|
|
5311
5339
|
},
|
|
5312
5340
|
/* @__PURE__ */ import_react88.default.createElement(OrgAvatar, { src: org.avatarUrl }),
|
|
5313
|
-
/* @__PURE__ */ import_react88.default.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ import_react88.default.createElement("span", { className: `text-
|
|
5314
|
-
activeOrgId === org.id && /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#
|
|
5341
|
+
/* @__PURE__ */ import_react88.default.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ import_react88.default.createElement("span", { className: `text-sm tracking-tight truncate w-full text-left ${activeOrgId === org.id ? "text-black " : "text-stone-600"}` }, org.name), /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-xs text-stone-500 capitalize truncate w-full text-left mt-0.5" }, org.role?.toLowerCase() || "Member")),
|
|
5342
|
+
activeOrgId === org.id && /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#062c25] shrink-0" })
|
|
5315
5343
|
)))), /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react88.default.createElement(
|
|
5316
5344
|
"button",
|
|
5317
5345
|
{
|
|
@@ -5319,16 +5347,16 @@ var UniversalHome2 = ({
|
|
|
5319
5347
|
setShowOrgSwitcher(false);
|
|
5320
5348
|
setShowLogoutConfirm(true);
|
|
5321
5349
|
},
|
|
5322
|
-
className: "w-full py-2.5 flex items-center justify-center gap-2 rounded-full border border-
|
|
5350
|
+
className: "w-full py-2.5 flex items-center justify-center gap-2 rounded-full border border-stone-200 text-stone-600 hover:bg-stone-100 transition-colors outline-none text-xs tracking-wide"
|
|
5323
5351
|
},
|
|
5324
5352
|
/* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Logout01Icon, size: 15 }),
|
|
5325
5353
|
"Log Out"
|
|
5326
|
-
)))), showNotifDialog && /* @__PURE__ */ import_react88.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react88.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react88.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#
|
|
5354
|
+
)))), showNotifDialog && /* @__PURE__ */ import_react88.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react88.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react88.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#062c25] hover:text-[#062c25] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react88.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ import_react88.default.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ import_react88.default.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ import_react88.default.createElement("div", { className: "mb-2" }, /* @__PURE__ */ import_react88.default.createElement("span", { className: "inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-emerald-50 text-emerald-600 text-xs tracking-wide" }, /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Tick02Icon, size: 12 }), " Action Completed")) : /* @__PURE__ */ import_react88.default.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ import_react88.default.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ import_react88.default.createElement(
|
|
5327
5355
|
"button",
|
|
5328
5356
|
{
|
|
5329
5357
|
onClick: () => handleResolve("ACCEPTED"),
|
|
5330
5358
|
disabled: isResolving || selectedNotif.meta_json?.completed,
|
|
5331
|
-
className: "flex-1 py-2.5 rounded-full bg-black text-white text-
|
|
5359
|
+
className: "flex-1 py-2.5 rounded-full bg-black text-white text-xs tracking-wide transition-all outline-none hover:bg-stone-800 flex justify-center items-center disabled:opacity-50"
|
|
5332
5360
|
},
|
|
5333
5361
|
isResolving ? /* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, className: "animate-spin", size: 16 }) : "Accept"
|
|
5334
5362
|
), /* @__PURE__ */ import_react88.default.createElement(
|
|
@@ -5336,10 +5364,10 @@ var UniversalHome2 = ({
|
|
|
5336
5364
|
{
|
|
5337
5365
|
onClick: () => handleResolve("REJECTED"),
|
|
5338
5366
|
disabled: isResolving || selectedNotif.meta_json?.completed,
|
|
5339
|
-
className: "flex-1 py-2.5 rounded-full bg-white border border-
|
|
5367
|
+
className: "flex-1 py-2.5 rounded-full bg-white border border-stone-200 text-black text-xs tracking-wide transition-all outline-none hover:bg-stone-50 flex justify-center items-center disabled:opacity-50"
|
|
5340
5368
|
},
|
|
5341
5369
|
"Reject"
|
|
5342
|
-
))) : /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex flex-col divide-y divide-
|
|
5370
|
+
))) : /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex flex-col divide-y divide-stone-50/50" }, notifications?.length === 0 && !isNotifsLoading ? /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "You have no notifications.") : notifications?.map((notif) => /* @__PURE__ */ import_react88.default.createElement(
|
|
5343
5371
|
"div",
|
|
5344
5372
|
{
|
|
5345
5373
|
key: notif.id,
|
|
@@ -5347,16 +5375,16 @@ var UniversalHome2 = ({
|
|
|
5347
5375
|
setSelectedNotif(notif);
|
|
5348
5376
|
onNotificationClick?.(notif);
|
|
5349
5377
|
},
|
|
5350
|
-
className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-
|
|
5378
|
+
className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-stone-50"}`
|
|
5351
5379
|
},
|
|
5352
5380
|
/* @__PURE__ */ import_react88.default.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-1.5 h-1.5 bg-red-500 rounded-full" }) : /* @__PURE__ */ import_react88.default.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
|
|
5353
|
-
/* @__PURE__ */ import_react88.default.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ import_react88.default.createElement("h5", { className: `text-
|
|
5354
|
-
)))), !selectedNotif && /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-
|
|
5381
|
+
/* @__PURE__ */ import_react88.default.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ import_react88.default.createElement("h5", { className: `text-xs truncate ${notif.isRead ? "text-stone-500" : "text-black"}` }, notif.title), /* @__PURE__ */ import_react88.default.createElement("p", { className: "text-xs text-stone-400 truncate mt-0.5" }, notif.message), /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mt-2 block" }, formatNotifDate(notif.createdAt)))
|
|
5382
|
+
)))), !selectedNotif && /* @__PURE__ */ import_react88.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react88.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", notificationPage, " of ", notificationTotalPages === 0 ? 1 : notificationTotalPages), /* @__PURE__ */ import_react88.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react88.default.createElement(
|
|
5355
5383
|
"button",
|
|
5356
5384
|
{
|
|
5357
5385
|
disabled: notificationPage <= 1 || isNotifsLoading,
|
|
5358
5386
|
onClick: () => onNotificationPageChange?.(notificationPage - 1),
|
|
5359
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
5387
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
5360
5388
|
},
|
|
5361
5389
|
/* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 12 })
|
|
5362
5390
|
), /* @__PURE__ */ import_react88.default.createElement(
|
|
@@ -5364,285 +5392,20 @@ var UniversalHome2 = ({
|
|
|
5364
5392
|
{
|
|
5365
5393
|
disabled: notificationPage >= notificationTotalPages || notificationTotalPages === 0 || isNotifsLoading,
|
|
5366
5394
|
onClick: () => onNotificationPageChange?.(notificationPage + 1),
|
|
5367
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
5395
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
5368
5396
|
},
|
|
5369
5397
|
/* @__PURE__ */ import_react88.default.createElement(import_react89.HugeiconsIcon, { icon: import_core_free_icons33.ArrowRight01Icon, size: 12 })
|
|
5370
5398
|
))))));
|
|
5371
5399
|
};
|
|
5372
5400
|
|
|
5373
|
-
// src/components/
|
|
5374
|
-
var import_react92 = __toESM(require("react"));
|
|
5375
|
-
var import_react93 = require("@hugeicons/react");
|
|
5376
|
-
var import_core_free_icons35 = require("@hugeicons/core-free-icons");
|
|
5377
|
-
|
|
5378
|
-
// src/components/OptionWithIcon.tsx
|
|
5401
|
+
// src/components/UniversalSettings.tsx
|
|
5379
5402
|
var import_react90 = __toESM(require("react"));
|
|
5403
|
+
var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
|
|
5380
5404
|
var import_react91 = require("@hugeicons/react");
|
|
5381
5405
|
var import_core_free_icons34 = require("@hugeicons/core-free-icons");
|
|
5382
|
-
var OptionWithIcon = ({
|
|
5383
|
-
isOpen,
|
|
5384
|
-
onClose,
|
|
5385
|
-
title,
|
|
5386
|
-
options,
|
|
5387
|
-
selectedOption,
|
|
5388
|
-
onSelect,
|
|
5389
|
-
showSearch = false
|
|
5390
|
-
}) => {
|
|
5391
|
-
const [searchQuery, setSearchQuery] = (0, import_react90.useState)("");
|
|
5392
|
-
if (!isOpen) return null;
|
|
5393
|
-
const filteredOptions = options.filter(
|
|
5394
|
-
(opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())
|
|
5395
|
-
);
|
|
5396
|
-
return /* @__PURE__ */ import_react90.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react90.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react90.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react90.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react90.default.createElement(
|
|
5397
|
-
"input",
|
|
5398
|
-
{
|
|
5399
|
-
type: "text",
|
|
5400
|
-
placeholder: "Search...",
|
|
5401
|
-
value: searchQuery,
|
|
5402
|
-
onChange: (e) => setSearchQuery(e.target.value),
|
|
5403
|
-
className: "w-full pl-10 pr-4 py-2.5 bg-neutral-100 rounded-full text-[12px] text-black placeholder-neutral-400 outline-none focus:bg-neutral-200 transition-colors"
|
|
5404
|
-
}
|
|
5405
|
-
))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, filteredOptions.length === 0 ? /* @__PURE__ */ import_react90.default.createElement("div", { className: "p-6 text-center text-[12px] text-neutral-400" }, "No options found.") : filteredOptions.map((opt) => {
|
|
5406
|
-
const isSelected = selectedOption.label === opt.label;
|
|
5407
|
-
return /* @__PURE__ */ import_react90.default.createElement(
|
|
5408
|
-
"button",
|
|
5409
|
-
{
|
|
5410
|
-
key: opt.label,
|
|
5411
|
-
onClick: () => {
|
|
5412
|
-
onSelect(opt);
|
|
5413
|
-
onClose();
|
|
5414
|
-
},
|
|
5415
|
-
className: `w-full flex items-center gap-3 p-4 text-[12px] tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#068afe] bg-[#068afe]/10" : "text-neutral-600 hover:bg-neutral-50/50"}`
|
|
5416
|
-
},
|
|
5417
|
-
opt.icon && /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: opt.icon, size: 16, className: isSelected ? "text-[#068afe]" : "text-neutral-400" }),
|
|
5418
|
-
/* @__PURE__ */ import_react90.default.createElement("span", null, opt.label.charAt(0).toUpperCase() + opt.label.slice(1).toLowerCase())
|
|
5419
|
-
);
|
|
5420
|
-
}))));
|
|
5421
|
-
};
|
|
5422
|
-
|
|
5423
|
-
// src/components/OpenBidHome.tsx
|
|
5424
|
-
var CATEGORIES = [
|
|
5425
|
-
{ label: "Leaderboards & Attention", icon: import_core_free_icons35.StarIcon },
|
|
5426
|
-
{ label: "SEO & AI Visibility", icon: import_core_free_icons35.Search01Icon },
|
|
5427
|
-
{ label: "AI Agents & Infrastructure", icon: import_core_free_icons35.Link01Icon },
|
|
5428
|
-
{ label: "Marketing & Advertising", icon: import_core_free_icons35.StarIcon },
|
|
5429
|
-
{ label: "Developer Tools", icon: import_core_free_icons35.ListSettingIcon },
|
|
5430
|
-
{ label: "Crypto, Web3 & Investing", icon: import_core_free_icons35.StarIcon }
|
|
5431
|
-
];
|
|
5432
|
-
var SiteAvatar = ({ src, sizeClass = "w-9 h-9" }) => {
|
|
5433
|
-
const [loaded, setLoaded] = (0, import_react92.useState)(false);
|
|
5434
|
-
const [error, setError] = (0, import_react92.useState)(false);
|
|
5435
|
-
return /* @__PURE__ */ import_react92.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-full h-full flex items-center justify-center overflow-hidden" }, !loaded && !error && src && /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), error || !src ? /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.StarIcon, className: "text-neutral-300", size: 18 }) : /* @__PURE__ */ import_react92.default.createElement(
|
|
5436
|
-
"img",
|
|
5437
|
-
{
|
|
5438
|
-
src,
|
|
5439
|
-
alt: "Site icon",
|
|
5440
|
-
className: `w-full h-full object-cover transition-opacity duration-300 ${loaded ? "opacity-100" : "opacity-0"}`,
|
|
5441
|
-
onLoad: () => setLoaded(true),
|
|
5442
|
-
onError: () => setError(true)
|
|
5443
|
-
}
|
|
5444
|
-
)));
|
|
5445
|
-
};
|
|
5446
|
-
var AnimatedCounter = ({ value }) => {
|
|
5447
|
-
const [count, setCount] = (0, import_react92.useState)(0);
|
|
5448
|
-
(0, import_react92.useEffect)(() => {
|
|
5449
|
-
let startTimestamp = 0;
|
|
5450
|
-
const duration = 2e3;
|
|
5451
|
-
let animationFrameId;
|
|
5452
|
-
const step = (timestamp) => {
|
|
5453
|
-
if (!startTimestamp) startTimestamp = timestamp;
|
|
5454
|
-
const progress = Math.min((timestamp - startTimestamp) / duration, 1);
|
|
5455
|
-
const easeProgress = progress === 1 ? 1 : 1 - Math.pow(2, -10 * progress);
|
|
5456
|
-
setCount(Math.floor(easeProgress * value));
|
|
5457
|
-
if (progress < 1) {
|
|
5458
|
-
animationFrameId = window.requestAnimationFrame(step);
|
|
5459
|
-
}
|
|
5460
|
-
};
|
|
5461
|
-
animationFrameId = window.requestAnimationFrame(step);
|
|
5462
|
-
return () => window.cancelAnimationFrame(animationFrameId);
|
|
5463
|
-
}, [value]);
|
|
5464
|
-
return /* @__PURE__ */ import_react92.default.createElement(import_react92.default.Fragment, null, count.toLocaleString());
|
|
5465
|
-
};
|
|
5466
|
-
var SkeletonRow = () => /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-3 p-3 md:p-4 rounded-2xl mb-2" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-10 h-10 md:w-14 md:h-14 rounded-xl bg-neutral-200 animate-pulse shrink-0" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex-1 flex flex-col gap-3" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-4 bg-neutral-200 rounded w-1/3 animate-pulse" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-4 bg-neutral-200 rounded w-16 animate-pulse" })), /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-3 bg-neutral-200 rounded w-2/3 animate-pulse" })));
|
|
5467
|
-
function OpenBidHome({
|
|
5468
|
-
data,
|
|
5469
|
-
latestActivity,
|
|
5470
|
-
isLoading,
|
|
5471
|
-
currentPage,
|
|
5472
|
-
totalPages,
|
|
5473
|
-
totalItems,
|
|
5474
|
-
onPageChange,
|
|
5475
|
-
totalProcessedAmount,
|
|
5476
|
-
inputFaviconSrc,
|
|
5477
|
-
onIdentityChange,
|
|
5478
|
-
onOutbidSubmit,
|
|
5479
|
-
isSubmitting,
|
|
5480
|
-
onlineCount = 0,
|
|
5481
|
-
visitorCount = 0
|
|
5482
|
-
}) {
|
|
5483
|
-
const topRef = (0, import_react92.useRef)(null);
|
|
5484
|
-
const [bidAmount, setBidAmount] = (0, import_react92.useState)(1);
|
|
5485
|
-
const [identity, setIdentity] = (0, import_react92.useState)("");
|
|
5486
|
-
const hasInitializedBid = (0, import_react92.useRef)(false);
|
|
5487
|
-
const [selectedCategory, setSelectedCategory] = (0, import_react92.useState)(CATEGORIES[0]);
|
|
5488
|
-
const [isCategoryModalOpen, setIsCategoryModalOpen] = (0, import_react92.useState)(false);
|
|
5489
|
-
const [isActivityExpanded, setIsActivityExpanded] = (0, import_react92.useState)(false);
|
|
5490
|
-
(0, import_react92.useEffect)(() => {
|
|
5491
|
-
if (data.length > 0 && !hasInitializedBid.current) {
|
|
5492
|
-
setBidAmount(data[0].amount + 1);
|
|
5493
|
-
hasInitializedBid.current = true;
|
|
5494
|
-
}
|
|
5495
|
-
}, [data]);
|
|
5496
|
-
const getProjectedRank = (amount) => {
|
|
5497
|
-
if (!data || data.length === 0) return 1;
|
|
5498
|
-
for (let i = 0; i < data.length; i++) {
|
|
5499
|
-
if (amount > data[i].amount) {
|
|
5500
|
-
return data[i].rank;
|
|
5501
|
-
}
|
|
5502
|
-
}
|
|
5503
|
-
return data[data.length - 1].rank + 1;
|
|
5504
|
-
};
|
|
5505
|
-
const projectedRank = getProjectedRank(bidAmount);
|
|
5506
|
-
const handleBidChange = (delta) => {
|
|
5507
|
-
setBidAmount((prev) => Math.max(1, prev + delta));
|
|
5508
|
-
};
|
|
5509
|
-
const handleClaimRankClick = (requiredAmount) => {
|
|
5510
|
-
setBidAmount(requiredAmount);
|
|
5511
|
-
topRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
5512
|
-
const input = document.getElementById("identity-input");
|
|
5513
|
-
if (input) input.focus();
|
|
5514
|
-
};
|
|
5515
|
-
const handleSubmit = (e) => {
|
|
5516
|
-
e.preventDefault();
|
|
5517
|
-
onOutbidSubmit(identity, bidAmount, selectedCategory.label);
|
|
5518
|
-
};
|
|
5519
|
-
const handleIdentityChange = (e) => {
|
|
5520
|
-
const val = e.target.value;
|
|
5521
|
-
setIdentity(val);
|
|
5522
|
-
onIdentityChange(val);
|
|
5523
|
-
};
|
|
5524
|
-
return /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col px-4 pt-12 pb-24 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react92.default.createElement("header", { className: "mb-12 px-2 text-center", ref: topRef }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "inline-block max-w-full bg-white rounded-full px-4 py-2 text-xs text-neutral-500 transition-colors hover:text-black cursor-pointer leading-relaxed text-balance" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "inline-flex items-center gap-1.5 text-emerald-600 align-text-bottom whitespace-nowrap" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative flex h-2 w-2 shrink-0" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative inline-flex rounded-full h-2 w-2 bg-emerald-500" })), /* @__PURE__ */ import_react92.default.createElement("span", null, onlineCount.toLocaleString(), " online")), /* @__PURE__ */ import_react92.default.createElement("span", { className: "mx-1.5" }, "\xB7"), /* @__PURE__ */ import_react92.default.createElement("span", null, visitorCount.toLocaleString(), " visitors since launch"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "mx-1.5" }, "\xB7"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-black underline decoration-neutral-300 hover:decoration-black transition-colors whitespace-nowrap" }, "Live stats"))), /* @__PURE__ */ import_react92.default.createElement("section", { className: "flex flex-col items-center mb-16" }, /* @__PURE__ */ import_react92.default.createElement("h2", { className: "flex flex-wrap items-center justify-center gap-x-3 text-center text-3xl md:text-5xl tracking-tight text-black mb-3" }, /* @__PURE__ */ import_react92.default.createElement("span", null, "Claim #", projectedRank, " for"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "inline-flex items-center gap-3 bg-neutral-100 rounded-full p-1.5 border border-neutral-200" }, /* @__PURE__ */ import_react92.default.createElement("button", { onClick: () => handleBidChange(-1), type: "button", className: "w-8 h-8 md:w-10 md:h-10 flex items-center justify-center rounded-full bg-white text-black hover:bg-neutral-50 transition-colors outline-none text-lg" }, "\u2212"), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center tracking-tight px-2 w-24 justify-center" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-[#068afe] mr-0.5" }, "$"), /* @__PURE__ */ import_react92.default.createElement(
|
|
5525
|
-
"input",
|
|
5526
|
-
{
|
|
5527
|
-
type: "number",
|
|
5528
|
-
value: bidAmount,
|
|
5529
|
-
onChange: (e) => setBidAmount(Math.max(1, Number(e.target.value))),
|
|
5530
|
-
className: "w-full bg-transparent p-0 outline-none text-center tabular-nums text-[#068afe] "
|
|
5531
|
-
}
|
|
5532
|
-
)), /* @__PURE__ */ import_react92.default.createElement("button", { onClick: () => handleBidChange(1), type: "button", className: "w-8 h-8 md:w-10 md:h-10 flex items-center justify-center rounded-full bg-white text-black hover:bg-neutral-50 transition-colors outline-none text-lg" }, "+"))), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-center text-sm text-neutral-500 max-w-md" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-[#068afe]" }, "New spots start at $1."), " Paying less than the #1 price puts you on the board at whatever rank your bid secures."), /* @__PURE__ */ import_react92.default.createElement("form", { onSubmit: handleSubmit, className: "mt-8 flex flex-col md:flex-row items-stretch md:items-center gap-3 w-full max-w-3xl bg-white p-2 rounded-2xl md:rounded-full" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "relative flex-1 min-w-0" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-3 md:pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-7 h-7 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden" }, inputFaviconSrc ? /* @__PURE__ */ import_react92.default.createElement("img", { src: inputFaviconSrc, alt: "", className: "w-full h-full object-cover" }) : /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Link01Icon, size: 14, className: "text-neutral-400" }))), /* @__PURE__ */ import_react92.default.createElement(
|
|
5533
|
-
"input",
|
|
5534
|
-
{
|
|
5535
|
-
id: "identity-input",
|
|
5536
|
-
type: "text",
|
|
5537
|
-
placeholder: "Your product URL or @handle",
|
|
5538
|
-
value: identity,
|
|
5539
|
-
onChange: handleIdentityChange,
|
|
5540
|
-
required: true,
|
|
5541
|
-
className: "w-full pl-12 md:pl-14 pr-4 h-12 bg-transparent text-sm text-black placeholder-neutral-400 outline-none transition-colors"
|
|
5542
|
-
}
|
|
5543
|
-
)), /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-px w-full md:h-8 md:w-px bg-neutral-200 hidden md:block" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "min-w-0 md:w-64 shrink-0" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
5544
|
-
"button",
|
|
5545
|
-
{
|
|
5546
|
-
type: "button",
|
|
5547
|
-
onClick: () => setIsCategoryModalOpen(true),
|
|
5548
|
-
className: "flex items-center justify-between w-full gap-2 h-12 px-4 bg-transparent outline-none text-sm text-black hover:text-black"
|
|
5549
|
-
},
|
|
5550
|
-
/* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-2 truncate" }, selectedCategory.icon && /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: selectedCategory.icon, size: 16, className: "text-[#068afe] shrink-0" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "truncate" }, selectedCategory.label)),
|
|
5551
|
-
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ListSettingIcon, size: 16, className: "text-neutral-400 shrink-0" })
|
|
5552
|
-
)), /* @__PURE__ */ import_react92.default.createElement(
|
|
5553
|
-
ThreeDActionButton,
|
|
5554
|
-
{
|
|
5555
|
-
type: "submit",
|
|
5556
|
-
isLoading: isSubmitting,
|
|
5557
|
-
disabled: !identity || isSubmitting,
|
|
5558
|
-
className: "h-12 px-8 min-w-30 w-full md:w-auto md:rounded-full"
|
|
5559
|
-
},
|
|
5560
|
-
"Place Bid"
|
|
5561
|
-
)), /* @__PURE__ */ import_react92.default.createElement("p", { className: "mt-4 text-xs text-neutral-400" }, "Already on the list? Enter the same URL to increase your bid.")), /* @__PURE__ */ import_react92.default.createElement("div", { className: "mb-6 relative" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex overflow-x-auto gap-2 pb-2 custom-scrollbar items-center" }, /* @__PURE__ */ import_react92.default.createElement("button", { className: "flex items-center gap-1.5 px-4 py-1.5 rounded-full border border-black bg-black text-white text-xs shrink-0 whitespace-nowrap transition-colors outline-none" }, "All"), CATEGORIES.map((cat) => /* @__PURE__ */ import_react92.default.createElement("button", { key: cat.label, className: "flex items-center gap-1.5 px-4 py-2 rounded-full bg-white text-black hover:bg-neutral-50 text-xs shrink-0 whitespace-nowrap transition-colors outline-none" }, cat.icon && /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: cat.icon, size: 14, className: "text-neutral-400" }), cat.label))), /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-y-0 right-0 w-12 bg-linear-to-l from-neutral-100 to-transparent pointer-events-none" })), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col relative w-full" }, isLoading ? /* @__PURE__ */ import_react92.default.createElement(import_react92.default.Fragment, null, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ import_react92.default.createElement(SkeletonRow, { key: `skel-${i}` }))) : data.length === 0 ? /* @__PURE__ */ import_react92.default.createElement("div", { className: "text-center py-12 text-sm text-neutral-500" }, "No data") : data.map((item, index) => {
|
|
5562
|
-
const requiredBid = item.amount + 1;
|
|
5563
|
-
const isRank1 = item.rank === 1;
|
|
5564
|
-
const isRank2 = item.rank === 2;
|
|
5565
|
-
const isRank3 = item.rank === 3;
|
|
5566
|
-
const showActivity = item.rank === 4 || data.length < 4 && index === data.length - 1;
|
|
5567
|
-
let cardClasses = "";
|
|
5568
|
-
let numClasses = "";
|
|
5569
|
-
if (isRank1) {
|
|
5570
|
-
cardClasses = "bg-[#068afe]/20 rounded-2xl md:px-4 px-3 py-2 md:py-3 my-1.5 md:my-3";
|
|
5571
|
-
numClasses = "bg-[#068afe] text-white";
|
|
5572
|
-
} else if (isRank2) {
|
|
5573
|
-
cardClasses = "bg-[#068afe]/10 rounded-2xl md:px-4 px-3 py-2 md:py-3 my-1.5 md:my-3";
|
|
5574
|
-
numClasses = "bg-[#068afe] text-white";
|
|
5575
|
-
} else if (isRank3) {
|
|
5576
|
-
cardClasses = "bg-[#068afe]/5 rounded-2xl md:px-4 px-3 py-2 md:py-3 my-1.5 md:my-3";
|
|
5577
|
-
numClasses = "bg-[#068afe] text-white";
|
|
5578
|
-
} else {
|
|
5579
|
-
cardClasses = "border-t border-neutral-200 bg-transparent px-3 md:px-4 py-3 md:py-4 rounded-none";
|
|
5580
|
-
numClasses = "text-neutral-400 bg-transparent";
|
|
5581
|
-
}
|
|
5582
|
-
return /* @__PURE__ */ import_react92.default.createElement(import_react92.default.Fragment, { key: item.id }, showActivity && /* @__PURE__ */ import_react92.default.createElement("div", { className: "my-6 md:my-8 bg-white rounded-2xl p-4 md:p-5 relative" }, /* @__PURE__ */ import_react92.default.createElement("h2", { className: "text-sm mb-3 flex items-center gap-2" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative flex h-2 w-2" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-[#068afe] opacity-75" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative inline-flex rounded-full h-2 w-2 bg-[#068afe]" })), "Latest activity"), latestActivity.length === 0 ? /* @__PURE__ */ import_react92.default.createElement("div", { className: "text-center py-6 text-sm text-neutral-400" }, "No data") : /* @__PURE__ */ import_react92.default.createElement("div", { className: `relative ${!isActivityExpanded ? "max-h-18 md:max-h-22 overflow-hidden md:overflow-visible" : ""}` }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col md:grid md:grid-cols-5 md:gap-2" }, latestActivity.map((act, idx) => /* @__PURE__ */ import_react92.default.createElement("div", { key: act.id, className: `flex flex-row items-center gap-3 py-2 md:p-3 md:rounded-2xl md:bg-neutral-50 md:hover:bg-neutral-100 transition-colors ${idx !== 0 ? "border-t border-neutral-100 md:border-0" : ""}` }, /* @__PURE__ */ import_react92.default.createElement(SiteAvatar, { src: act.favicon, sizeClass: "w-7 h-7 shrink-0" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-xs text-black truncate" }, act.name), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-0.5" }, "at #", act.rank, " \xB7 $", act.amount), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-[9px] text-neutral-400 mt-0.5" }, act.time))))), !isActivityExpanded && /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-x-0 bottom-0 h-16 bg-linear-to-t from-white via-white/90 to-transparent pointer-events-none md:hidden flex items-end justify-center pb-1" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
5583
|
-
"button",
|
|
5584
|
-
{
|
|
5585
|
-
onClick: () => setIsActivityExpanded(true),
|
|
5586
|
-
className: "pointer-events-auto px-4 py-1.5 bg-white border border-neutral-200 rounded-full text-[11px] outline-none"
|
|
5587
|
-
},
|
|
5588
|
-
"Show more"
|
|
5589
|
-
))), isActivityExpanded && latestActivity.length > 0 && /* @__PURE__ */ import_react92.default.createElement("div", { className: "mt-4 flex justify-center md:hidden" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
5590
|
-
"button",
|
|
5591
|
-
{
|
|
5592
|
-
onClick: () => setIsActivityExpanded(false),
|
|
5593
|
-
className: "px-4 py-1.5 bg-white border border-neutral-200 rounded-full text-[11px] outline-none"
|
|
5594
|
-
},
|
|
5595
|
-
"Show less"
|
|
5596
|
-
))), /* @__PURE__ */ import_react92.default.createElement("div", { className: `group relative flex items-center justify-between transition-colors duration-300 ${cardClasses}` }, /* @__PURE__ */ import_react92.default.createElement("a", { href: item.url, target: "_blank", rel: "noopener noreferrer", className: "absolute inset-0 z-0 outline-none" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-3 md:gap-4 flex-1 min-w-0 z-10 pointer-events-none group-hover:text-[#068afe]" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col md:flex-row items-center gap-2 md:gap-3 shrink-0" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: `inline-flex items-center justify-center tabular-nums min-w-7 md:min-w-10 px-2 py-0.5 md:py-1 rounded-full text-[11px] md:text-xs ${numClasses}` }, "#", item.rank), /* @__PURE__ */ import_react92.default.createElement(SiteAvatar, { src: item.favicon })), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col min-w-0 flex-1 transition-opacity duration-300" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-baseline gap-2 mb-0.5" }, /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-black group-hover:text-[#068afe] text-sm truncate tracking-tight" }, item.name), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-[#068afe] text-[12px] shrink-0 tabular-nums" }, "$", item.amount.toLocaleString())), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-neutral-500 text-xs line-clamp-1 md:line-clamp-2 leading-relaxed" }, item.desc), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-2 mt-1.5 text-[10px] md:text-[11px] text-neutral-400 " }, /* @__PURE__ */ import_react92.default.createElement("span", null, item.time), /* @__PURE__ */ import_react92.default.createElement("span", { className: "flex items-center gap-1 text-black" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative flex h-1.5 w-1.5" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-[#068afe] opacity-75" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "relative inline-flex rounded-full h-1.5 w-1.5 bg-[#068afe]" })), item.clicks, " clicks")))), /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute left-1/2 -translate-x-1/2 top-0 -translate-y-1/2 z-20 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity duration-200" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
5597
|
-
"button",
|
|
5598
|
-
{
|
|
5599
|
-
onClick: (e) => {
|
|
5600
|
-
e.stopPropagation();
|
|
5601
|
-
handleClaimRankClick(requiredBid);
|
|
5602
|
-
},
|
|
5603
|
-
className: "px-3 py-0.5 bg-[#068afe] text-white text-[11px] md:text-xs whitespace-nowrap rounded-full outline-none pointer-events-auto hover:bg-[#0575d9] transition-colors"
|
|
5604
|
-
},
|
|
5605
|
-
"claim this rank for $",
|
|
5606
|
-
requiredBid
|
|
5607
|
-
))), item.rank === 10 && /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-3 py-6 px-4" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-0.5 flex-1 bg-[#068afe]/20 rounded-full" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs tracking-widest text-[#068afe] px-3 py-1 bg-[#068afe]/10 border border-[#068afe]/20 rounded-full" }, "Top 10"), /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-0.5 flex-1 bg-[#068afe]/20 rounded-full" })), item.rank === 20 && /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-3 py-6 px-4" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-0.5 flex-1 bg-[#068afe]/20 rounded-full" }), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs tracking-widest text-[#068afe] px-3 py-1 bg-[#068afe]/10 border border-[#068afe]/20 rounded-full" }, "Top 20"), /* @__PURE__ */ import_react92.default.createElement("div", { className: "h-0.5 flex-1 bg-[#068afe]/20 rounded-full" })));
|
|
5608
|
-
})), !isLoading && data.length > 0 && /* @__PURE__ */ import_react92.default.createElement("div", { className: "mt-12 flex flex-col items-center gap-3" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
5609
|
-
"button",
|
|
5610
|
-
{
|
|
5611
|
-
disabled: currentPage <= 1,
|
|
5612
|
-
onClick: () => onPageChange(currentPage - 1),
|
|
5613
|
-
className: "w-10 h-10 flex items-center justify-center rounded-full bg-white text-black hover:bg-neutral-50 disabled:text-neutral-300 disabled:bg-white outline-none transition-colors"
|
|
5614
|
-
},
|
|
5615
|
-
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ArrowLeft01Icon, size: 16 })
|
|
5616
|
-
), /* @__PURE__ */ import_react92.default.createElement("span", { className: "w-10 h-10 flex items-center justify-center rounded-full bg-black text-white text-sm outline-none" }, currentPage), /* @__PURE__ */ import_react92.default.createElement(
|
|
5617
|
-
"button",
|
|
5618
|
-
{
|
|
5619
|
-
disabled: currentPage >= totalPages,
|
|
5620
|
-
onClick: () => onPageChange(currentPage + 1),
|
|
5621
|
-
className: "w-10 h-10 flex items-center justify-center rounded-full bg-white text-black hover:bg-neutral-50 disabled:text-neutral-300 disabled:bg-white outline-none transition-colors"
|
|
5622
|
-
},
|
|
5623
|
-
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ArrowRight01Icon, size: 16 })
|
|
5624
|
-
)), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-widest mt-1" }, Math.min((currentPage - 1) * 50 + 1, totalItems), " - ", Math.min(currentPage * 50, totalItems), " of ", totalItems)), /* @__PURE__ */ import_react92.default.createElement("section", { className: "mt-8 flex flex-col items-center" }, /* @__PURE__ */ import_react92.default.createElement("p", { className: "mb-4 text-xs tracking-widest text-neutral-400" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "bg-white rounded-full px-10 py-3 flex items-baseline justify-center tracking-tighter text-4xl text-black" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-[#068afe] mr-2" }, "$"), /* @__PURE__ */ import_react92.default.createElement(AnimatedCounter, { value: totalProcessedAmount })), /* @__PURE__ */ import_react92.default.createElement("p", { className: "mt-4 text-xs tracking-widest text-neutral-400" }, "Total Processed")), /* @__PURE__ */ import_react92.default.createElement(
|
|
5625
|
-
OptionWithIcon,
|
|
5626
|
-
{
|
|
5627
|
-
isOpen: isCategoryModalOpen,
|
|
5628
|
-
onClose: () => setIsCategoryModalOpen(false),
|
|
5629
|
-
title: "Select Category",
|
|
5630
|
-
options: CATEGORIES,
|
|
5631
|
-
selectedOption: selectedCategory,
|
|
5632
|
-
onSelect: (val) => setSelectedCategory(val),
|
|
5633
|
-
showSearch: true
|
|
5634
|
-
}
|
|
5635
|
-
));
|
|
5636
|
-
}
|
|
5637
|
-
|
|
5638
|
-
// src/components/UniversalSettings.tsx
|
|
5639
|
-
var import_react94 = __toESM(require("react"));
|
|
5640
|
-
var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
|
|
5641
|
-
var import_react95 = require("@hugeicons/react");
|
|
5642
|
-
var import_core_free_icons36 = require("@hugeicons/core-free-icons");
|
|
5643
5406
|
var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
5644
|
-
const [loaded, setLoaded] = (0,
|
|
5645
|
-
const [error, setError] = (0,
|
|
5407
|
+
const [loaded, setLoaded] = (0, import_react90.useState)(false);
|
|
5408
|
+
const [error, setError] = (0, import_react90.useState)(false);
|
|
5646
5409
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5647
5410
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5648
5411
|
const getStatusColor = () => {
|
|
@@ -5654,15 +5417,15 @@ var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5654
5417
|
case "OFFLINE":
|
|
5655
5418
|
return "bg-rose-500";
|
|
5656
5419
|
case "AWAY":
|
|
5657
|
-
return "bg-
|
|
5420
|
+
return "bg-stone-400";
|
|
5658
5421
|
default:
|
|
5659
|
-
return "bg-
|
|
5422
|
+
return "bg-stone-200";
|
|
5660
5423
|
}
|
|
5661
5424
|
};
|
|
5662
|
-
return /* @__PURE__ */
|
|
5425
|
+
return /* @__PURE__ */ import_react90.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react90.default.createElement("img", { src: finalSrc, alt: "Member", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })), /* @__PURE__ */ import_react90.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
5663
5426
|
};
|
|
5664
|
-
var PageSpinner8 = () => /* @__PURE__ */
|
|
5665
|
-
var InputSpinner3 = () => /* @__PURE__ */
|
|
5427
|
+
var PageSpinner8 = () => /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
5428
|
+
var InputSpinner3 = () => /* @__PURE__ */ import_react90.default.createElement("svg", { className: "animate-spin h-4 w-4 text-stone-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react90.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react90.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
5666
5429
|
var UniversalSettings = ({
|
|
5667
5430
|
accountType,
|
|
5668
5431
|
userRole,
|
|
@@ -5700,37 +5463,37 @@ var UniversalSettings = ({
|
|
|
5700
5463
|
if (typeof window !== "undefined") window.history.back();
|
|
5701
5464
|
});
|
|
5702
5465
|
const isOrg = accountType === "ORGANIZATION";
|
|
5703
|
-
const canManage = userRole === "ADMIN" || userRole === "MANAGER"
|
|
5704
|
-
const [activeTab, setActiveTab] = (0,
|
|
5705
|
-
const [expandedId, setExpandedId] = (0,
|
|
5706
|
-
const [memberToRemove, setMemberToRemove] = (0,
|
|
5707
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
5708
|
-
const [isInviteMode, setIsInviteMode] = (0,
|
|
5709
|
-
const [inviteEmail, setInviteEmail] = (0,
|
|
5710
|
-
const [isInviting, setIsInviting] = (0,
|
|
5711
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
5712
|
-
const [isTyping, setIsTyping] = (0,
|
|
5713
|
-
const isFirstSearchMount = (0,
|
|
5714
|
-
const [isStatusModalOpen, setIsStatusModalOpen] = (0,
|
|
5715
|
-
const [isRoleModalOpen, setIsRoleModalOpen] = (0,
|
|
5716
|
-
const [roleEditTarget, setRoleEditTarget] = (0,
|
|
5717
|
-
const [isUpdatingRole, setIsUpdatingRole] = (0,
|
|
5718
|
-
const [orgName, setOrgName] = (0,
|
|
5719
|
-
const [orgSlug, setOrgSlug] = (0,
|
|
5720
|
-
const [firstName, setFirstName] = (0,
|
|
5721
|
-
const [lastName, setLastName] = (0,
|
|
5722
|
-
const [isCheckingSlug, setIsCheckingSlug] = (0,
|
|
5723
|
-
const [slugAvailable, setSlugAvailable] = (0,
|
|
5724
|
-
const [isSavingOrg, setIsSavingOrg] = (0,
|
|
5725
|
-
const [isSavingProfile, setIsSavingProfile] = (0,
|
|
5726
|
-
(0,
|
|
5466
|
+
const canManage = userRole === "ADMIN" || userRole === "MANAGER";
|
|
5467
|
+
const [activeTab, setActiveTab] = (0, import_react90.useState)(isOrg ? "MEMBERS" : "ACCOUNT");
|
|
5468
|
+
const [expandedId, setExpandedId] = (0, import_react90.useState)(null);
|
|
5469
|
+
const [memberToRemove, setMemberToRemove] = (0, import_react90.useState)(null);
|
|
5470
|
+
const [isRemoving, setIsRemoving] = (0, import_react90.useState)(false);
|
|
5471
|
+
const [isInviteMode, setIsInviteMode] = (0, import_react90.useState)(false);
|
|
5472
|
+
const [inviteEmail, setInviteEmail] = (0, import_react90.useState)("");
|
|
5473
|
+
const [isInviting, setIsInviting] = (0, import_react90.useState)(false);
|
|
5474
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react90.useState)(membersSearchQuery);
|
|
5475
|
+
const [isTyping, setIsTyping] = (0, import_react90.useState)(false);
|
|
5476
|
+
const isFirstSearchMount = (0, import_react90.useRef)(true);
|
|
5477
|
+
const [isStatusModalOpen, setIsStatusModalOpen] = (0, import_react90.useState)(false);
|
|
5478
|
+
const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react90.useState)(false);
|
|
5479
|
+
const [roleEditTarget, setRoleEditTarget] = (0, import_react90.useState)(null);
|
|
5480
|
+
const [isUpdatingRole, setIsUpdatingRole] = (0, import_react90.useState)(false);
|
|
5481
|
+
const [orgName, setOrgName] = (0, import_react90.useState)(initialOrgName);
|
|
5482
|
+
const [orgSlug, setOrgSlug] = (0, import_react90.useState)(initialOrgSlug);
|
|
5483
|
+
const [firstName, setFirstName] = (0, import_react90.useState)("");
|
|
5484
|
+
const [lastName, setLastName] = (0, import_react90.useState)("");
|
|
5485
|
+
const [isCheckingSlug, setIsCheckingSlug] = (0, import_react90.useState)(false);
|
|
5486
|
+
const [slugAvailable, setSlugAvailable] = (0, import_react90.useState)(null);
|
|
5487
|
+
const [isSavingOrg, setIsSavingOrg] = (0, import_react90.useState)(false);
|
|
5488
|
+
const [isSavingProfile, setIsSavingProfile] = (0, import_react90.useState)(false);
|
|
5489
|
+
(0, import_react90.useEffect)(() => {
|
|
5727
5490
|
setOrgName(initialOrgName || "");
|
|
5728
5491
|
setOrgSlug(initialOrgSlug || "");
|
|
5729
5492
|
const parts = (initialFullName || "").split(" ");
|
|
5730
5493
|
setFirstName(parts[0] || "");
|
|
5731
5494
|
setLastName(parts.slice(1).join(" ") || "");
|
|
5732
5495
|
}, [initialOrgName, initialOrgSlug, initialFullName]);
|
|
5733
|
-
(0,
|
|
5496
|
+
(0, import_react90.useEffect)(() => {
|
|
5734
5497
|
if (activeTab !== "MEMBERS") return;
|
|
5735
5498
|
if (isFirstSearchMount.current) {
|
|
5736
5499
|
isFirstSearchMount.current = false;
|
|
@@ -5787,7 +5550,7 @@ var UniversalSettings = ({
|
|
|
5787
5550
|
}
|
|
5788
5551
|
};
|
|
5789
5552
|
const activeExpandedMember = expandedId ? members.find((m) => m.id === expandedId) : null;
|
|
5790
|
-
(0,
|
|
5553
|
+
(0, import_react90.useEffect)(() => {
|
|
5791
5554
|
if (!isOrg || !orgSlug || orgSlug === initialOrgSlug) {
|
|
5792
5555
|
setSlugAvailable(null);
|
|
5793
5556
|
setIsCheckingSlug(false);
|
|
@@ -5847,11 +5610,11 @@ var UniversalSettings = ({
|
|
|
5847
5610
|
const isOrgSaveDisabled = isSavingOrg || !canManage || isCheckingSlug || !hasOrgChanges || orgName.length < 3 || orgSlug.length < 3 || orgSlug !== initialOrgSlug && slugAvailable === false;
|
|
5848
5611
|
const hasProfileChanges = `${firstName} ${lastName}`.trim() !== initialFullName;
|
|
5849
5612
|
const isProfileSaveDisabled = isSavingProfile || !hasProfileChanges || firstName.length < 2 || lastName.length < 2;
|
|
5850
|
-
return /* @__PURE__ */
|
|
5613
|
+
return /* @__PURE__ */ import_react90.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react90.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react90.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#062c25] hover:text-[#062c25] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react90.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-6 mb-6 overflow-x-auto custom-scrollbar px-1" }, isOrg && /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => {
|
|
5851
5614
|
setActiveTab("MEMBERS");
|
|
5852
5615
|
setExpandedId(null);
|
|
5853
5616
|
setIsInviteMode(false);
|
|
5854
|
-
}, className: `pb-3 text-
|
|
5617
|
+
}, className: `pb-3 text-sm tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "MEMBERS" ? "border-black text-black" : "border-transparent text-stone-500 hover:text-black"}` }, "Members"), isOrg && /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setActiveTab("ORGANIZATION"), className: `pb-3 text-sm tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "ORGANIZATION" ? "border-black text-black" : "border-transparent text-stone-500 hover:text-black"}` }, "Organization"), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setActiveTab("ACCOUNT"), className: `pb-3 text-sm tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "ACCOUNT" ? "border-black text-black" : "border-transparent text-stone-500 hover:text-black"}` }, "Profile")), activeTab === "MEMBERS" && isOrg && /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement(
|
|
5855
5618
|
ConfirmationDialog,
|
|
5856
5619
|
{
|
|
5857
5620
|
isOpen: !!memberToRemove,
|
|
@@ -5864,33 +5627,33 @@ var UniversalSettings = ({
|
|
|
5864
5627
|
onClose: () => setMemberToRemove(null),
|
|
5865
5628
|
onConfirm: handleConfirmRemove
|
|
5866
5629
|
}
|
|
5867
|
-
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */
|
|
5630
|
+
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react90.default.createElement("input", { type: "text", placeholder: "Search members...", value: localSearchQuery, onChange: (e) => setLocalSearchQuery(e.target.value), className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black" })), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.SearchList02Icon, size: 16 })), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setIsRoleModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.ListSettingIcon, size: 16 })))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ import_react90.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ import_react90.default.createElement(MemberAvatar3, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react90.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ import_react90.default.createElement("span", { className: "text-xs text-stone-500 capitalize" }, activeExpandedMember.role.toLowerCase()), canManage && !activeExpandedMember.isRootAdmin && (isUpdatingRole ? /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Loading03Icon, size: 12, className: "animate-spin text-stone-400 ml-1" }) : /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setRoleEditTarget(activeExpandedMember), className: "text-xs text-[#062c25] hover:underline outline-none" }, "Edit"))))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, canManage && !activeExpandedMember.isRootAdmin && /* @__PURE__ */ import_react90.default.createElement(
|
|
5868
5631
|
"button",
|
|
5869
5632
|
{
|
|
5870
5633
|
onClick: () => setMemberToRemove(activeExpandedMember),
|
|
5871
5634
|
disabled: isUpdatingRole,
|
|
5872
|
-
className: "w-full sm:flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-
|
|
5635
|
+
className: "w-full sm:flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-xs tracking-wide transition-colors outline-none disabled:opacity-50"
|
|
5873
5636
|
},
|
|
5874
5637
|
"Remove Access"
|
|
5875
|
-
), /* @__PURE__ */
|
|
5638
|
+
), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setExpandedId(null), disabled: isUpdatingRole, className: "w-full sm:flex-1 py-2.5 bg-white border border-stone-200 text-black hover:bg-stone-100 rounded-full text-xs tracking-wide transition-colors outline-none disabled:opacity-50" }, "Close Profile"))) : /* @__PURE__ */ import_react90.default.createElement(import_react90.default.Fragment, null, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react90.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react90.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react90.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react90.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react90.default.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react90.default.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ import_react90.default.createElement("button", { type: "button", onClick: () => {
|
|
5876
5639
|
setIsInviteMode(false);
|
|
5877
5640
|
setInviteEmail("");
|
|
5878
|
-
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-
|
|
5641
|
+
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react90.default.createElement(PageSpinner8, null) : /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react90.default.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react90.default.createElement(MemberAvatar3, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react90.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react90.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.ArrowRight01Icon, size: 14 })))))))), /* @__PURE__ */ import_react90.default.createElement(ReusableOptions, { isOpen: isStatusModalOpen, onClose: () => setIsStatusModalOpen(false), title: "Status Filter", options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"], selectedOption: activeStatusFilter, onSelect: (status) => onStatusFilterChange(status) }), /* @__PURE__ */ import_react90.default.createElement(ReusableOptions, { isOpen: isRoleModalOpen, onClose: () => setIsRoleModalOpen(false), title: "Role Filter", options: ["ALL", "ADMIN", "MANAGER", "MEMBER", "GUEST"], selectedOption: activeRoleFilter, onSelect: (role) => onRoleFilterChange(role) }), /* @__PURE__ */ import_react90.default.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react90.default.createElement("div", null, /* @__PURE__ */ import_react90.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles.")), !canManage && /* @__PURE__ */ import_react90.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react90.default.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ import_react90.default.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ import_react90.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react90.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react90.default.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ import_react90.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react90.default.createElement(InputSpinner3, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react90.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react90.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react90.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react90.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react90.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react90.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react90.default.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ import_react90.default.createElement("button", { type: "button", onClick: () => {
|
|
5879
5642
|
setOrgName(initialOrgName || "");
|
|
5880
5643
|
setOrgSlug(initialOrgSlug || "");
|
|
5881
|
-
}, className: "text-
|
|
5644
|
+
}, className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none" }, "Cancel")))), activeTab === "ACCOUNT" && /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col gap-8 rounded-2xl p-6 bg-white w-full" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react90.default.createElement("div", null, /* @__PURE__ */ import_react90.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Personal Identity"), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500" }, "Update your system display name and contact email."))), /* @__PURE__ */ import_react90.default.createElement("form", { className: "flex flex-col gap-6 w-full max-w-5xl", onSubmit: handleSaveProfile, autoComplete: "off" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ import_react90.default.createElement(TextInput, { label: "First Name", value: firstName, onChange: (v) => setFirstName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "First name", maxLength: 50 }), /* @__PURE__ */ import_react90.default.createElement(TextInput, { label: "Last Name", value: lastName, onChange: (v) => setLastName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "Last name", maxLength: 50 })), /* @__PURE__ */ import_react90.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react90.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react90.default.createElement("input", { type: "email", value: initialEmail, disabled: true, className: "w-full pb-3 pt-3 text-sm bg-transparent text-stone-400 border-b border-stone-200 outline-none cursor-not-allowed" })), /* @__PURE__ */ import_react90.default.createElement("div", { className: "pt-4 flex items-center gap-4" }, /* @__PURE__ */ import_react90.default.createElement(ThreeDActionButton, { type: "submit", disabled: isProfileSaveDisabled, isLoading: isSavingProfile, className: "min-w-32" }, "Update Identity")))), /* @__PURE__ */ import_react90.default.createElement("div", { className: "bg-white rounded-2xl p-6 w-full flex flex-col sm:flex-row sm:items-center justify-between gap-6 border border-stone-100" }, /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex flex-col items-start max-w-sm" }, /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-400 tracking-[0.2em] mb-2 uppercase" }, "AI Credits Balance"), isBillingLoading ? /* @__PURE__ */ import_react90.default.createElement("div", { className: "h-8 w-32 bg-stone-100 animate-pulse rounded mt-1" }) : /* @__PURE__ */ import_react90.default.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.Coins01Icon, size: 28, className: "text-[#062c25]" }), /* @__PURE__ */ import_react90.default.createElement("span", { className: "text-3xl text-black tracking-tight" }, aiCredits)), /* @__PURE__ */ import_react90.default.createElement("p", { className: "text-xs text-stone-500 mt-4 leading-relaxed" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights.")), /* @__PURE__ */ import_react90.default.createElement("button", { onClick: onTopUp, className: "w-12 h-12 rounded-full border border-stone-200 flex items-center justify-center text-black hover:bg-stone-50 transition-colors outline-none shrink-0", "aria-label": "Top Up Credits" }, /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons34.PlusSignIcon, size: 20 })))));
|
|
5882
5645
|
};
|
|
5883
5646
|
|
|
5884
5647
|
// src/components/UniversalCreateHuddle.tsx
|
|
5885
|
-
var
|
|
5648
|
+
var import_react92 = __toESM(require("react"));
|
|
5886
5649
|
var import_react_hot_toast16 = __toESM(require("react-hot-toast"));
|
|
5887
|
-
var
|
|
5888
|
-
var
|
|
5650
|
+
var import_react93 = require("@hugeicons/react");
|
|
5651
|
+
var import_core_free_icons35 = require("@hugeicons/core-free-icons");
|
|
5889
5652
|
var MemberAvatar4 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
5890
|
-
const [loaded, setLoaded] = (0,
|
|
5891
|
-
const [error, setError] = (0,
|
|
5653
|
+
const [loaded, setLoaded] = (0, import_react92.useState)(false);
|
|
5654
|
+
const [error, setError] = (0, import_react92.useState)(false);
|
|
5892
5655
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5893
|
-
return /* @__PURE__ */
|
|
5656
|
+
return /* @__PURE__ */ import_react92.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react92.default.createElement(
|
|
5894
5657
|
"img",
|
|
5895
5658
|
{
|
|
5896
5659
|
src: error || !src ? defaultAvatar : src,
|
|
@@ -5930,29 +5693,29 @@ var UniversalCreateHuddle = ({
|
|
|
5930
5693
|
onMembersSearchChange,
|
|
5931
5694
|
onCreateSubmit
|
|
5932
5695
|
}) => {
|
|
5933
|
-
const canManage = userRole === "ADMIN" || userRole === "MANAGER"
|
|
5934
|
-
const [huddleDate, setHuddleDate] = (0,
|
|
5696
|
+
const canManage = userRole === "ADMIN" || userRole === "MANAGER";
|
|
5697
|
+
const [huddleDate, setHuddleDate] = (0, import_react92.useState)(() => {
|
|
5935
5698
|
const d = /* @__PURE__ */ new Date();
|
|
5936
5699
|
d.setHours(d.getHours() + 1, 0, 0, 0);
|
|
5937
5700
|
return d;
|
|
5938
5701
|
});
|
|
5939
|
-
const [title, setTitle] = (0,
|
|
5940
|
-
const [isPrivate, setIsPrivate] = (0,
|
|
5941
|
-
const [timezone, setTimezone] = (0,
|
|
5942
|
-
(0,
|
|
5702
|
+
const [title, setTitle] = (0, import_react92.useState)("");
|
|
5703
|
+
const [isPrivate, setIsPrivate] = (0, import_react92.useState)(false);
|
|
5704
|
+
const [timezone, setTimezone] = (0, import_react92.useState)("UTC");
|
|
5705
|
+
(0, import_react92.useEffect)(() => {
|
|
5943
5706
|
try {
|
|
5944
5707
|
setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
5945
5708
|
} catch (e) {
|
|
5946
5709
|
}
|
|
5947
5710
|
}, []);
|
|
5948
|
-
const [calendarMode, setCalendarMode] = (0,
|
|
5949
|
-
const [showTimezoneModal, setShowTimezoneModal] = (0,
|
|
5950
|
-
const [showMembersModal, setShowMembersModal] = (0,
|
|
5951
|
-
const [selectedParticipants, setSelectedParticipants] = (0,
|
|
5952
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
5953
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
5954
|
-
const [isTyping, setIsTyping] = (0,
|
|
5955
|
-
const typingTimer = (0,
|
|
5711
|
+
const [calendarMode, setCalendarMode] = (0, import_react92.useState)(null);
|
|
5712
|
+
const [showTimezoneModal, setShowTimezoneModal] = (0, import_react92.useState)(false);
|
|
5713
|
+
const [showMembersModal, setShowMembersModal] = (0, import_react92.useState)(false);
|
|
5714
|
+
const [selectedParticipants, setSelectedParticipants] = (0, import_react92.useState)(/* @__PURE__ */ new Set());
|
|
5715
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react92.useState)(false);
|
|
5716
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react92.useState)(membersSearchQuery);
|
|
5717
|
+
const [isTyping, setIsTyping] = (0, import_react92.useState)(false);
|
|
5718
|
+
const typingTimer = (0, import_react92.useRef)(null);
|
|
5956
5719
|
const handleSearchInput = (e) => {
|
|
5957
5720
|
const val = e.target.value;
|
|
5958
5721
|
setLocalSearchQuery(val);
|
|
@@ -5990,7 +5753,7 @@ var UniversalCreateHuddle = ({
|
|
|
5990
5753
|
setIsSubmitting(false);
|
|
5991
5754
|
}
|
|
5992
5755
|
};
|
|
5993
|
-
return /* @__PURE__ */
|
|
5756
|
+
return /* @__PURE__ */ import_react92.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react92.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react92.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react92.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#062c25] hover:text-[#062c25] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react92.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Huddle"), /* @__PURE__ */ import_react92.default.createElement("p", { className: "text-xs text-stone-500" }, "Schedule a new workspace huddle and manage participant access.")), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react92.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, !canManage && /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-start gap-3 p-4 bg-stone-50 rounded-xl" }, /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.CircleLock02Icon, size: 20, className: "text-stone-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Access Restricted"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-stone-500 mt-1 leading-relaxed" }, "You do not have sufficient permissions to access this page. Contact organization admin or manager."))), /* @__PURE__ */ import_react92.default.createElement(
|
|
5994
5757
|
TextInput,
|
|
5995
5758
|
{
|
|
5996
5759
|
label: "Huddle Subject",
|
|
@@ -6000,49 +5763,49 @@ var UniversalCreateHuddle = ({
|
|
|
6000
5763
|
placeholder: "e.g. Q4 Engineering Sync",
|
|
6001
5764
|
maxLength: 80
|
|
6002
5765
|
}
|
|
6003
|
-
), /* @__PURE__ */
|
|
5766
|
+
), /* @__PURE__ */ import_react92.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react92.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ import_react92.default.createElement(
|
|
6004
5767
|
"div",
|
|
6005
5768
|
{
|
|
6006
5769
|
onClick: () => canManage && !isSubmitting && setCalendarMode("DATE"),
|
|
6007
|
-
className: `flex items-center relative w-full border-b border-
|
|
5770
|
+
className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}`
|
|
6008
5771
|
},
|
|
6009
|
-
/* @__PURE__ */
|
|
6010
|
-
/* @__PURE__ */
|
|
6011
|
-
)), /* @__PURE__ */
|
|
5772
|
+
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Calendar01Icon, size: 16, className: "text-stone-400 absolute left-0" }),
|
|
5773
|
+
/* @__PURE__ */ import_react92.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))
|
|
5774
|
+
)), /* @__PURE__ */ import_react92.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react92.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ import_react92.default.createElement(
|
|
6012
5775
|
"div",
|
|
6013
5776
|
{
|
|
6014
5777
|
onClick: () => canManage && !isSubmitting && setCalendarMode("TIME"),
|
|
6015
|
-
className: `flex items-center relative w-full border-b border-
|
|
5778
|
+
className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}`
|
|
6016
5779
|
},
|
|
6017
|
-
/* @__PURE__ */
|
|
6018
|
-
/* @__PURE__ */
|
|
6019
|
-
)), /* @__PURE__ */
|
|
5780
|
+
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Clock01Icon, size: 16, className: "text-stone-400 absolute left-0" }),
|
|
5781
|
+
/* @__PURE__ */ import_react92.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))
|
|
5782
|
+
)), /* @__PURE__ */ import_react92.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react92.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ import_react92.default.createElement(
|
|
6020
5783
|
"div",
|
|
6021
5784
|
{
|
|
6022
5785
|
onClick: () => canManage && !isSubmitting && setShowTimezoneModal(true),
|
|
6023
|
-
className: `flex items-center relative w-full border-b border-
|
|
5786
|
+
className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}`
|
|
6024
5787
|
},
|
|
6025
|
-
/* @__PURE__ */
|
|
6026
|
-
/* @__PURE__ */
|
|
6027
|
-
))), /* @__PURE__ */
|
|
5788
|
+
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Globe02Icon, size: 16, className: "text-stone-400 absolute left-0" }),
|
|
5789
|
+
/* @__PURE__ */ import_react92.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)
|
|
5790
|
+
))), /* @__PURE__ */ import_react92.default.createElement("div", { className: `flex items-center justify-between py-2 mt-2 ${!canManage ? "opacity-50 pointer-events-none" : ""}` }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-stone-500" }, "Only invited members can join.")), /* @__PURE__ */ import_react92.default.createElement(
|
|
6028
5791
|
"button",
|
|
6029
5792
|
{
|
|
6030
5793
|
type: "button",
|
|
6031
5794
|
onClick: () => setIsPrivate(!isPrivate),
|
|
6032
5795
|
disabled: !canManage || isSubmitting,
|
|
6033
|
-
className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#
|
|
5796
|
+
className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#062c25]" : "bg-stone-200"}`
|
|
6034
5797
|
},
|
|
6035
|
-
/* @__PURE__ */
|
|
6036
|
-
)), isPrivate && /* @__PURE__ */
|
|
5798
|
+
/* @__PURE__ */ import_react92.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` })
|
|
5799
|
+
)), isPrivate && /* @__PURE__ */ import_react92.default.createElement("div", { className: `flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl ${!canManage ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-black tracking-tight" }, "Participants"), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-[#062c25] " }, selectedParticipants.size === 0 ? "0 added" : selectedParticipants.size >= 1e3 ? `${(selectedParticipants.size / 1e3).toFixed(1)}k+ added` : `${selectedParticipants.size} added`)), /* @__PURE__ */ import_react92.default.createElement(
|
|
6037
5800
|
"button",
|
|
6038
5801
|
{
|
|
6039
5802
|
type: "button",
|
|
6040
5803
|
onClick: () => setShowMembersModal(true),
|
|
6041
5804
|
disabled: !canManage || isSubmitting,
|
|
6042
|
-
className: "px-4 py-2 border border-
|
|
5805
|
+
className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent disabled:cursor-not-allowed"
|
|
6043
5806
|
},
|
|
6044
5807
|
"Manage Access"
|
|
6045
|
-
)), canManage && /* @__PURE__ */
|
|
5808
|
+
)), canManage && /* @__PURE__ */ import_react92.default.createElement("div", { className: "pt-6" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
6046
5809
|
ThreeDActionButton,
|
|
6047
5810
|
{
|
|
6048
5811
|
type: "submit",
|
|
@@ -6051,7 +5814,7 @@ var UniversalCreateHuddle = ({
|
|
|
6051
5814
|
className: "w-full sm:w-auto min-w-40"
|
|
6052
5815
|
},
|
|
6053
5816
|
"Schedule Huddle"
|
|
6054
|
-
)))), canManage && /* @__PURE__ */
|
|
5817
|
+
)))), canManage && /* @__PURE__ */ import_react92.default.createElement(import_react92.default.Fragment, null, /* @__PURE__ */ import_react92.default.createElement(
|
|
6055
5818
|
CalendarPicker,
|
|
6056
5819
|
{
|
|
6057
5820
|
isOpen: calendarMode !== null,
|
|
@@ -6060,7 +5823,7 @@ var UniversalCreateHuddle = ({
|
|
|
6060
5823
|
defaultMode: calendarMode || "DATE",
|
|
6061
5824
|
onConfirm: (d) => setHuddleDate(d)
|
|
6062
5825
|
}
|
|
6063
|
-
), /* @__PURE__ */
|
|
5826
|
+
), /* @__PURE__ */ import_react92.default.createElement(
|
|
6064
5827
|
ReusableOptions,
|
|
6065
5828
|
{
|
|
6066
5829
|
isOpen: showTimezoneModal,
|
|
@@ -6071,43 +5834,43 @@ var UniversalCreateHuddle = ({
|
|
|
6071
5834
|
onSelect: (tz) => setTimezone(tz),
|
|
6072
5835
|
showSearch: true
|
|
6073
5836
|
}
|
|
6074
|
-
)), showMembersModal && canManage && /* @__PURE__ */
|
|
5837
|
+
)), showMembersModal && canManage && /* @__PURE__ */ import_react92.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react92.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Select Participants"), /* @__PURE__ */ import_react92.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#062c25] hover:text-[#062c25] transition-colors outline-none text-sm " }, "Done")), /* @__PURE__ */ import_react92.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react92.default.createElement(
|
|
6075
5838
|
"input",
|
|
6076
5839
|
{
|
|
6077
5840
|
type: "text",
|
|
6078
5841
|
placeholder: "Search team...",
|
|
6079
5842
|
value: localSearchQuery,
|
|
6080
5843
|
onChange: handleSearchInput,
|
|
6081
|
-
className: "w-full pl-10 pr-4 py-2.5 bg-
|
|
5844
|
+
className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors"
|
|
6082
5845
|
}
|
|
6083
|
-
))), /* @__PURE__ */
|
|
5846
|
+
))), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ import_react92.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react92.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
|
|
6084
5847
|
const isChecked = selectedParticipants.has(member.userId);
|
|
6085
|
-
return /* @__PURE__ */
|
|
5848
|
+
return /* @__PURE__ */ import_react92.default.createElement(
|
|
6086
5849
|
"div",
|
|
6087
5850
|
{
|
|
6088
5851
|
key: member.id,
|
|
6089
5852
|
onClick: () => toggleParticipant(member.userId),
|
|
6090
|
-
className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-
|
|
5853
|
+
className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none"
|
|
6091
5854
|
},
|
|
6092
|
-
/* @__PURE__ */
|
|
6093
|
-
/* @__PURE__ */
|
|
5855
|
+
/* @__PURE__ */ import_react92.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react92.default.createElement(MemberAvatar4, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))),
|
|
5856
|
+
/* @__PURE__ */ import_react92.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react92.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#062c25]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.Tick02Icon, size: 14, className: "text-white" })))
|
|
6094
5857
|
);
|
|
6095
|
-
})), /* @__PURE__ */
|
|
5858
|
+
})), /* @__PURE__ */ import_react92.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react92.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react92.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react92.default.createElement(
|
|
6096
5859
|
"button",
|
|
6097
5860
|
{
|
|
6098
5861
|
disabled: membersCurrentPage <= 1 || isMembersLoading,
|
|
6099
5862
|
onClick: () => onMembersPageChange(membersCurrentPage - 1),
|
|
6100
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
5863
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
6101
5864
|
},
|
|
6102
|
-
/* @__PURE__ */
|
|
6103
|
-
), /* @__PURE__ */
|
|
5865
|
+
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ArrowLeft01Icon, size: 12 })
|
|
5866
|
+
), /* @__PURE__ */ import_react92.default.createElement(
|
|
6104
5867
|
"button",
|
|
6105
5868
|
{
|
|
6106
5869
|
disabled: membersCurrentPage >= membersTotalPages || membersTotalPages === 0 || isMembersLoading,
|
|
6107
5870
|
onClick: () => onMembersPageChange(membersCurrentPage + 1),
|
|
6108
|
-
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-
|
|
5871
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors"
|
|
6109
5872
|
},
|
|
6110
|
-
/* @__PURE__ */
|
|
5873
|
+
/* @__PURE__ */ import_react92.default.createElement(import_react93.HugeiconsIcon, { icon: import_core_free_icons35.ArrowRight01Icon, size: 12 })
|
|
6111
5874
|
))))));
|
|
6112
5875
|
};
|
|
6113
5876
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -6134,7 +5897,6 @@ var UniversalCreateHuddle = ({
|
|
|
6134
5897
|
MedicalFeatureStatsBlock,
|
|
6135
5898
|
MobileNav,
|
|
6136
5899
|
NumberInput,
|
|
6137
|
-
OpenBidHome,
|
|
6138
5900
|
PageSpinner,
|
|
6139
5901
|
PinDialerBottomSheet,
|
|
6140
5902
|
PipleAuth,
|