@retinalabsllc/zairusjs 16.2.0 → 16.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +30 -3
- package/dist/index.d.ts +30 -3
- package/dist/index.js +1187 -803
- package/dist/index.mjs +604 -206
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -298,7 +298,21 @@ import { useSearchParams } from "next/navigation";
|
|
|
298
298
|
import toast from "react-hot-toast";
|
|
299
299
|
import { useGoogleReCaptcha, GoogleReCaptchaProvider } from "react-google-recaptcha-v3";
|
|
300
300
|
import { startAuthentication } from "@simplewebauthn/browser";
|
|
301
|
+
import { HugeiconsIcon as HugeiconsIcon2 } from "@hugeicons/react";
|
|
302
|
+
import { Loading03Icon as Loading03Icon2 } from "@hugeicons/core-free-icons";
|
|
301
303
|
var InputSpinner = () => /* @__PURE__ */ React5.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React5.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React5.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" }));
|
|
304
|
+
var ImageLoader = ({ src }) => {
|
|
305
|
+
const [loaded, setLoaded] = useState3(false);
|
|
306
|
+
return /* @__PURE__ */ React5.createElement("div", { className: "relative w-full h-full bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && /* @__PURE__ */ React5.createElement(HugeiconsIcon2, { icon: Loading03Icon2, className: "animate-spin text-neutral-400 absolute", size: 24 }), /* @__PURE__ */ React5.createElement(
|
|
307
|
+
"img",
|
|
308
|
+
{
|
|
309
|
+
src,
|
|
310
|
+
alt: "Authentication Visual",
|
|
311
|
+
className: `w-full h-full object-cover transition-all duration-700 ${loaded ? "opacity-100 blur-0" : "opacity-0 blur-md scale-105"}`,
|
|
312
|
+
onLoad: () => setLoaded(true)
|
|
313
|
+
}
|
|
314
|
+
));
|
|
315
|
+
};
|
|
302
316
|
function AuthFormInner({
|
|
303
317
|
companyName,
|
|
304
318
|
workspaceLabel = "Workspace",
|
|
@@ -308,6 +322,7 @@ function AuthFormInner({
|
|
|
308
322
|
requireOrganization = true,
|
|
309
323
|
useRecaptcha = false,
|
|
310
324
|
defaultRedirectPath = "/app",
|
|
325
|
+
heroImageUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/hero_a.avif",
|
|
311
326
|
onAuthRequest,
|
|
312
327
|
onVerifyOtp
|
|
313
328
|
}) {
|
|
@@ -328,7 +343,6 @@ function AuthFormInner({
|
|
|
328
343
|
const [firstName, setFirstName] = useState3("");
|
|
329
344
|
const [lastName, setLastName] = useState3("");
|
|
330
345
|
const [orgName, setOrgName] = useState3("");
|
|
331
|
-
const [accountType, setAccountType] = useState3("ORGANIZATION");
|
|
332
346
|
const [agreedToTerms, setAgreedToTerms] = useState3(false);
|
|
333
347
|
const [userHas2FA, setUserHas2FA] = useState3(false);
|
|
334
348
|
const [userHasPasskey, setUserHasPasskey] = useState3(false);
|
|
@@ -384,8 +398,9 @@ function AuthFormInner({
|
|
|
384
398
|
email: emailId,
|
|
385
399
|
firstName: mode === "SIGNUP" && requireNames ? firstName : void 0,
|
|
386
400
|
lastName: mode === "SIGNUP" && requireNames ? lastName : void 0,
|
|
387
|
-
organizationName: mode === "SIGNUP"
|
|
388
|
-
accountType:
|
|
401
|
+
organizationName: mode === "SIGNUP" ? orgName.trim() : void 0,
|
|
402
|
+
accountType: "ORGANIZATION",
|
|
403
|
+
// STRICTLY ORGANIZATION
|
|
389
404
|
mode,
|
|
390
405
|
recaptchaToken
|
|
391
406
|
});
|
|
@@ -480,36 +495,30 @@ function AuthFormInner({
|
|
|
480
495
|
if (mode === "LOGIN") return emailId.length < 3;
|
|
481
496
|
if (mode === "SIGNUP") {
|
|
482
497
|
if (signupStep === "NAME") return firstName.trim() === "" || lastName.trim() === "";
|
|
483
|
-
if (signupStep === "ORGANIZATION") return
|
|
498
|
+
if (signupStep === "ORGANIZATION") return orgName.trim().length < 3;
|
|
484
499
|
if (signupStep === "EMAIL_ID") return emailId.length < 3 || !agreedToTerms;
|
|
485
500
|
}
|
|
486
501
|
return false;
|
|
487
502
|
};
|
|
488
|
-
return /* @__PURE__ */ React5.createElement("div", { className: "
|
|
503
|
+
return /* @__PURE__ */ React5.createElement("div", { className: "min-h-screen w-full bg-white flex flex-col md:flex-row" }, /* @__PURE__ */ React5.createElement("div", { className: "hidden md:flex md:w-1/2 lg:w-[45%] h-screen sticky top-0 left-0 bg-neutral-100" }, /* @__PURE__ */ React5.createElement(ImageLoader, { src: heroImageUrl })), /* @__PURE__ */ React5.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__ */ React5.createElement("div", { className: "w-full max-w-sm mx-auto" }, step === "INPUT" && /* @__PURE__ */ React5.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ React5.createElement("div", { className: "mb-12 mt-2" }, /* @__PURE__ */ React5.createElement("h2", { className: "text-2xl text-black mb-2 tracking-tight" }, mode === "LOGIN" ? `${companyName} ${workspaceLabel}` : "Create Account"), /* @__PURE__ */ React5.createElement("div", { className: "text-[13px] text-neutral-500" }, mode === "LOGIN" ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, "Don't have an account? ", /* @__PURE__ */ React5.createElement("button", { type: "button", onClick: () => {
|
|
489
504
|
setMode("SIGNUP");
|
|
490
505
|
setSignupStep(getInitialSignupStep());
|
|
491
|
-
}, className: "text-
|
|
506
|
+
}, className: "text-[#068afe] transition-colors ml-1 outline-none" }, "Sign up")) : /* @__PURE__ */ React5.createElement(React5.Fragment, null, "Already have an account? ", /* @__PURE__ */ React5.createElement("button", { type: "button", onClick: () => setMode("LOGIN"), className: "text-[#068afe] transition-colors ml-1 outline-none" }, "Log in")))), /* @__PURE__ */ React5.createElement("form", { className: "space-y-6", autoComplete: "off", onSubmit: (e) => {
|
|
492
507
|
e.preventDefault();
|
|
493
508
|
if (mode === "SIGNUP" && signupStep === "NAME") handleNextSignupStep();
|
|
494
509
|
else if (mode === "SIGNUP" && signupStep === "ORGANIZATION") handleNextSignupStep();
|
|
495
510
|
else handleAuthRequestSubmit();
|
|
496
|
-
} }, mode === "SIGNUP" && signupStep === "NAME" && requireNames && /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "First Name"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "First name" })), /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "Last Name"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "Last name" }))), mode === "SIGNUP" && signupStep === "ORGANIZATION" && requireOrganization && /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React5.createElement("div", { className: "
|
|
497
|
-
"
|
|
498
|
-
{
|
|
499
|
-
type: "button",
|
|
500
|
-
onClick: () => setAccountType("INDIVIDUAL"),
|
|
501
|
-
className: `flex-1 py-2 text-xs rounded-full transition-colors outline-none ${accountType === "INDIVIDUAL" ? "bg-white text-black" : "text-neutral-500 hover:text-black"}`
|
|
502
|
-
},
|
|
503
|
-
"Personal"
|
|
504
|
-
), /* @__PURE__ */ React5.createElement(
|
|
505
|
-
"button",
|
|
511
|
+
} }, mode === "SIGNUP" && signupStep === "NAME" && requireNames && /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "First Name"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "First name" })), /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "Last Name"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "Last name" }))), mode === "SIGNUP" && signupStep === "ORGANIZATION" && requireOrganization && /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "Workspace Name"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "Acme Corporation" }))), (mode === "LOGIN" || mode === "SIGNUP" && signupStep === "EMAIL_ID") && /* @__PURE__ */ React5.createElement("div", { className: "space-y-6 animate-in fade-in zoom-in-95 duration-200" }, /* @__PURE__ */ React5.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React5.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, "Email ID"), /* @__PURE__ */ React5.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-neutral-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), mode === "SIGNUP" && /* @__PURE__ */ React5.createElement("div", { className: "flex items-start gap-3 mt-4" }, /* @__PURE__ */ React5.createElement(
|
|
512
|
+
"input",
|
|
506
513
|
{
|
|
507
|
-
type: "
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
514
|
+
type: "checkbox",
|
|
515
|
+
id: "zairus-terms",
|
|
516
|
+
checked: agreedToTerms,
|
|
517
|
+
onChange: (e) => setAgreedToTerms(e.target.checked),
|
|
518
|
+
className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-[#068afe] focus:ring-[#068afe] accent-[#068afe] cursor-pointer",
|
|
519
|
+
required: true
|
|
520
|
+
}
|
|
521
|
+
), /* @__PURE__ */ React5.createElement("label", { htmlFor: "zairus-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug select-none" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ React5.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#068afe] hover:underline outline-none" }, "Terms of Service"), " and ", /* @__PURE__ */ React5.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#068afe] hover:underline outline-none" }, "Privacy Policy"), "."))), /* @__PURE__ */ React5.createElement("div", { className: "pt-4" }, /* @__PURE__ */ React5.createElement(ThreeDActionButton, { type: "submit", disabled: isContinueDisabled(), isLoading: isSubmitting, className: "w-full shadow-md shadow-neutral-200/50" }, "Continue")))), step === "OTP" && /* @__PURE__ */ React5.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ React5.createElement("div", { className: "mb-10 mt-2" }, /* @__PURE__ */ React5.createElement("h2", { className: "text-2xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ React5.createElement("p", { className: "text-[13px] text-neutral-500" }, userHas2FA ? "Enter the code from your authenticator app." : `Enter the code sent to ${emailId}`)), /* @__PURE__ */ React5.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
513
522
|
e.preventDefault();
|
|
514
523
|
verifyOtpCode(otp.join(""));
|
|
515
524
|
} }, /* @__PURE__ */ React5.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ React5.createElement(
|
|
@@ -529,7 +538,7 @@ function AuthFormInner({
|
|
|
529
538
|
},
|
|
530
539
|
className: "w-10 h-10 text-center text-sm bg-transparent border-b-2 border-neutral-200 text-black outline-none focus:border-black transition-all duration-300"
|
|
531
540
|
}
|
|
532
|
-
))), /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React5.createElement(ThreeDActionButton, { type: "submit", disabled: otp.join("").length < 6, isLoading: isSubmitting, className: "w-full" }, "Verify Code"), !userHas2FA && /* @__PURE__ */ React5.createElement(
|
|
541
|
+
))), /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React5.createElement(ThreeDActionButton, { type: "submit", disabled: otp.join("").length < 6, isLoading: isSubmitting, className: "w-full shadow-md shadow-neutral-200/50" }, "Verify Code"), !userHas2FA && /* @__PURE__ */ React5.createElement("div", { className: "text-center pt-2" }, /* @__PURE__ */ React5.createElement(
|
|
533
542
|
"button",
|
|
534
543
|
{
|
|
535
544
|
type: "button",
|
|
@@ -538,27 +547,27 @@ function AuthFormInner({
|
|
|
538
547
|
className: "text-[12px] text-neutral-500 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
539
548
|
},
|
|
540
549
|
countdown > 0 ? `Resend code in ${countdown}s` : "Resend verification code"
|
|
541
|
-
))), userHasPasskey && /* @__PURE__ */ React5.createElement("div", { className: "pt-6 " }, /* @__PURE__ */ React5.createElement(
|
|
550
|
+
)))), userHasPasskey && /* @__PURE__ */ React5.createElement("div", { className: "pt-6 " }, /* @__PURE__ */ React5.createElement(
|
|
542
551
|
"button",
|
|
543
552
|
{
|
|
544
553
|
onClick: triggerPasskeyLogin,
|
|
545
554
|
disabled: isSubmitting,
|
|
546
|
-
className: "w-full py-2.5 rounded-full text-black border border-neutral-200 hover:bg-neutral-50 text-
|
|
555
|
+
className: "w-full py-2.5 rounded-full text-black border border-neutral-200 hover:bg-neutral-50 text-[13px] tracking-wide transition-colors outline-none disabled:opacity-50"
|
|
547
556
|
},
|
|
548
557
|
"Use Passkey Biometrics"
|
|
549
558
|
))))));
|
|
550
559
|
}
|
|
551
560
|
var PipleAuth = (props) => {
|
|
552
561
|
if (props.useRecaptcha && props.recaptchaSiteKey) {
|
|
553
|
-
return /* @__PURE__ */ React5.createElement(GoogleReCaptchaProvider, { reCaptchaKey: props.recaptchaSiteKey }, /* @__PURE__ */ React5.createElement(Suspense, { fallback: /* @__PURE__ */ React5.createElement("div", { className: "h-
|
|
562
|
+
return /* @__PURE__ */ React5.createElement(GoogleReCaptchaProvider, { reCaptchaKey: props.recaptchaSiteKey }, /* @__PURE__ */ React5.createElement(Suspense, { fallback: /* @__PURE__ */ React5.createElement("div", { className: "min-h-screen w-full bg-white flex items-center justify-center" }, /* @__PURE__ */ React5.createElement(InputSpinner, null)) }, /* @__PURE__ */ React5.createElement(AuthFormInner, { ...props })));
|
|
554
563
|
}
|
|
555
|
-
return /* @__PURE__ */ React5.createElement(Suspense, { fallback: /* @__PURE__ */ React5.createElement("div", { className: "h-
|
|
564
|
+
return /* @__PURE__ */ React5.createElement(Suspense, { fallback: /* @__PURE__ */ React5.createElement("div", { className: "min-h-screen w-full bg-white flex items-center justify-center" }, /* @__PURE__ */ React5.createElement(InputSpinner, null)) }, /* @__PURE__ */ React5.createElement(AuthFormInner, { ...props }));
|
|
556
565
|
};
|
|
557
566
|
|
|
558
567
|
// src/components/Footer.tsx
|
|
559
568
|
import React6, { useState as useState4 } from "react";
|
|
560
569
|
import Link3 from "next/link";
|
|
561
|
-
import { HugeiconsIcon as
|
|
570
|
+
import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
562
571
|
var Footer = ({
|
|
563
572
|
description,
|
|
564
573
|
columns,
|
|
@@ -599,7 +608,7 @@ var Footer = ({
|
|
|
599
608
|
rel: "noopener noreferrer",
|
|
600
609
|
className: "text-neutral-400 hover:text-black transition-colors"
|
|
601
610
|
},
|
|
602
|
-
/* @__PURE__ */ React6.createElement(
|
|
611
|
+
/* @__PURE__ */ React6.createElement(HugeiconsIcon3, { icon: social.icon, size: 20 })
|
|
603
612
|
))), /* @__PURE__ */ React6.createElement("p", { className: "text-[10px] sm:text-[11px] text-neutral-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__ */ React6.createElement("p", { className: "text-[11px] text-neutral-500 tracking-widest mt-8" }, copyrightText))))));
|
|
604
613
|
};
|
|
605
614
|
|
|
@@ -607,7 +616,7 @@ var Footer = ({
|
|
|
607
616
|
import React7 from "react";
|
|
608
617
|
import Link4 from "next/link";
|
|
609
618
|
import { usePathname as usePathname2 } from "next/navigation";
|
|
610
|
-
import { HugeiconsIcon as
|
|
619
|
+
import { HugeiconsIcon as HugeiconsIcon4 } from "@hugeicons/react";
|
|
611
620
|
var MobileNav = ({ items }) => {
|
|
612
621
|
const pathname = usePathname2();
|
|
613
622
|
if (!items || items.length === 0) return null;
|
|
@@ -624,7 +633,7 @@ var MobileNav = ({ items }) => {
|
|
|
624
633
|
className: "flex flex-col items-center justify-center gap-1 min-w-14 transition-transform active:scale-95 outline-none"
|
|
625
634
|
},
|
|
626
635
|
/* @__PURE__ */ React7.createElement("div", { className: `transition-colors duration-300 ${isActive ? "text-black" : "text-neutral-400 hover:text-neutral-600"}` }, /* @__PURE__ */ React7.createElement(
|
|
627
|
-
|
|
636
|
+
HugeiconsIcon4,
|
|
628
637
|
{
|
|
629
638
|
icon: item.icon,
|
|
630
639
|
size: 20
|
|
@@ -732,7 +741,7 @@ var NumberInput = ({
|
|
|
732
741
|
|
|
733
742
|
// src/components/Banner.tsx
|
|
734
743
|
import React10, { useState as useState6 } from "react";
|
|
735
|
-
import { HugeiconsIcon as
|
|
744
|
+
import { HugeiconsIcon as HugeiconsIcon5 } from "@hugeicons/react";
|
|
736
745
|
import {
|
|
737
746
|
Alert02Icon,
|
|
738
747
|
CheckmarkBadge01Icon,
|
|
@@ -787,12 +796,12 @@ var Banner = ({
|
|
|
787
796
|
onClick: handleDismiss,
|
|
788
797
|
className: `absolute top-3 right-3 p-1.5 rounded-full transition-colors outline-none shrink-0 ${currentConfig.closeHover}`
|
|
789
798
|
},
|
|
790
|
-
/* @__PURE__ */ React10.createElement(
|
|
799
|
+
/* @__PURE__ */ React10.createElement(HugeiconsIcon5, { icon: Cancel01Icon, size: 16 })
|
|
791
800
|
));
|
|
792
801
|
};
|
|
793
802
|
|
|
794
803
|
// src/components/UniversalOrganizationPage.tsx
|
|
795
|
-
import { HugeiconsIcon as
|
|
804
|
+
import { HugeiconsIcon as HugeiconsIcon6 } from "@hugeicons/react";
|
|
796
805
|
import {
|
|
797
806
|
ArrowLeft01Icon,
|
|
798
807
|
CircleLock02Icon
|
|
@@ -895,9 +904,9 @@ var UniversalOrganizationPage = ({
|
|
|
895
904
|
onClick: onBackHandler,
|
|
896
905
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
897
906
|
},
|
|
898
|
-
/* @__PURE__ */ React11.createElement(
|
|
907
|
+
/* @__PURE__ */ React11.createElement(HugeiconsIcon6, { icon: ArrowLeft01Icon, size: 16 }),
|
|
899
908
|
" Back"
|
|
900
|
-
)), /* @__PURE__ */ React11.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__ */ React11.createElement(ManagedToaster, null), /* @__PURE__ */ React11.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ React11.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ React11.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React11.createElement(
|
|
909
|
+
)), /* @__PURE__ */ React11.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__ */ React11.createElement(ManagedToaster, null), /* @__PURE__ */ React11.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ React11.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ React11.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon6, { icon: CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React11.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React11.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React11.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React11.createElement(
|
|
901
910
|
TextInput,
|
|
902
911
|
{
|
|
903
912
|
label: "Display Name",
|
|
@@ -956,11 +965,11 @@ var UniversalOrganizationPage = ({
|
|
|
956
965
|
// src/components/UniversalProfileSettings.tsx
|
|
957
966
|
import React12, { useState as useState8, useEffect as useEffect5 } from "react";
|
|
958
967
|
import toast3 from "react-hot-toast";
|
|
959
|
-
import { HugeiconsIcon as
|
|
968
|
+
import { HugeiconsIcon as HugeiconsIcon7 } from "@hugeicons/react";
|
|
960
969
|
import {
|
|
961
970
|
CircleLock02Icon as CircleLock02Icon2,
|
|
962
971
|
CancelCircleIcon,
|
|
963
|
-
Loading03Icon as
|
|
972
|
+
Loading03Icon as Loading03Icon3,
|
|
964
973
|
LockKeyIcon,
|
|
965
974
|
ArrowLeft01Icon as ArrowLeft01Icon2
|
|
966
975
|
} from "@hugeicons/core-free-icons";
|
|
@@ -1061,9 +1070,9 @@ var UniversalProfileSettings = ({
|
|
|
1061
1070
|
onClick: onBackHandler,
|
|
1062
1071
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
1063
1072
|
},
|
|
1064
|
-
/* @__PURE__ */ React12.createElement(
|
|
1073
|
+
/* @__PURE__ */ React12.createElement(HugeiconsIcon7, { icon: ArrowLeft01Icon2, size: 16 }),
|
|
1065
1074
|
" Back"
|
|
1066
|
-
)), /* @__PURE__ */ React12.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__ */ React12.createElement(ManagedToaster, null), /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React12.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React12.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React12.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React12.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React12.createElement(
|
|
1075
|
+
)), /* @__PURE__ */ React12.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__ */ React12.createElement(ManagedToaster, null), /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React12.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React12.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React12.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React12.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React12.createElement(HugeiconsIcon7, { icon: CircleLock02Icon2, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React12.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React12.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React12.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ React12.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React12.createElement(
|
|
1067
1076
|
TextInput,
|
|
1068
1077
|
{
|
|
1069
1078
|
label: "First Name",
|
|
@@ -1097,7 +1106,7 @@ var UniversalProfileSettings = ({
|
|
|
1097
1106
|
onClick: () => setIsPasscodeModalOpen(true),
|
|
1098
1107
|
className: "w-9 h-9 flex items-center justify-center border border-neutral-200 rounded-full text-black hover:bg-neutral-50 transition-colors outline-none"
|
|
1099
1108
|
},
|
|
1100
|
-
/* @__PURE__ */ React12.createElement(
|
|
1109
|
+
/* @__PURE__ */ React12.createElement(HugeiconsIcon7, { icon: LockKeyIcon, size: 17, className: "text-black" })
|
|
1101
1110
|
))), /* @__PURE__ */ React12.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__ */ React12.createElement(
|
|
1102
1111
|
"button",
|
|
1103
1112
|
{
|
|
@@ -1118,7 +1127,7 @@ var UniversalProfileSettings = ({
|
|
|
1118
1127
|
className: "min-w-32 w-full sm:w-auto"
|
|
1119
1128
|
},
|
|
1120
1129
|
"Save Changes"
|
|
1121
|
-
))))), isPasscodeModalOpen && /* @__PURE__ */ React12.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React12.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ React12.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__ */ React12.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React12.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ React12.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React12.createElement(
|
|
1130
|
+
))))), isPasscodeModalOpen && /* @__PURE__ */ React12.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React12.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ React12.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__ */ React12.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React12.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ React12.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React12.createElement(HugeiconsIcon7, { icon: CancelCircleIcon, size: 18 }))), /* @__PURE__ */ React12.createElement("div", { className: "p-6" }, isPasscodeLoading ? /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ React12.createElement(HugeiconsIcon7, { icon: Loading03Icon3, size: 28, className: "animate-spin text-neutral-400 mb-4" })) : /* @__PURE__ */ React12.createElement("form", { onSubmit: handlePasscodeSubmit, className: "flex flex-col gap-6" }, hasPasscode && /* @__PURE__ */ React12.createElement(
|
|
1122
1131
|
TextInput,
|
|
1123
1132
|
{
|
|
1124
1133
|
type: "password",
|
|
@@ -1165,13 +1174,13 @@ var UniversalProfileSettings = ({
|
|
|
1165
1174
|
|
|
1166
1175
|
// src/components/UniversalErrorView.tsx
|
|
1167
1176
|
import React14 from "react";
|
|
1168
|
-
import { HugeiconsIcon as
|
|
1177
|
+
import { HugeiconsIcon as HugeiconsIcon9 } from "@hugeicons/react";
|
|
1169
1178
|
import { ConfusedIcon } from "@hugeicons/core-free-icons";
|
|
1170
1179
|
|
|
1171
1180
|
// src/components/PageSpinner.tsx
|
|
1172
1181
|
import React13 from "react";
|
|
1173
|
-
import { HugeiconsIcon as
|
|
1174
|
-
import { Loading03Icon as
|
|
1182
|
+
import { HugeiconsIcon as HugeiconsIcon8 } from "@hugeicons/react";
|
|
1183
|
+
import { Loading03Icon as Loading03Icon4 } from "@hugeicons/core-free-icons";
|
|
1175
1184
|
var PageSpinner = ({
|
|
1176
1185
|
className = "",
|
|
1177
1186
|
iconClassName = "text-black",
|
|
@@ -1180,9 +1189,9 @@ var PageSpinner = ({
|
|
|
1180
1189
|
return (
|
|
1181
1190
|
// z-[100] ensures it sits above absolute headers and modals
|
|
1182
1191
|
/* @__PURE__ */ React13.createElement("div", { className: `fixed inset-0 z-100 flex flex-col items-center justify-center w-full h-full pointer-events-none ${className}` }, /* @__PURE__ */ React13.createElement(
|
|
1183
|
-
|
|
1192
|
+
HugeiconsIcon8,
|
|
1184
1193
|
{
|
|
1185
|
-
icon:
|
|
1194
|
+
icon: Loading03Icon4,
|
|
1186
1195
|
size,
|
|
1187
1196
|
className: `animate-spin text-[#068afe] mb-4 ${iconClassName}`
|
|
1188
1197
|
}
|
|
@@ -1221,7 +1230,7 @@ var UniversalErrorView = ({
|
|
|
1221
1230
|
title = "Access Restricted";
|
|
1222
1231
|
description = apiMessage || `You have insufficient permissions to view this ${envName}. Please contact your administrator.`;
|
|
1223
1232
|
}
|
|
1224
|
-
return /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ React14.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ React14.createElement(
|
|
1233
|
+
return /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ React14.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ React14.createElement(HugeiconsIcon9, { icon: IconComponent, size: 48, className: "text-neutral-300" })), /* @__PURE__ */ React14.createElement("h2", { className: "text-lg text-black tracking-tight " }, title), /* @__PURE__ */ React14.createElement("p", { className: "text-xs mt-2 mb-8 text-neutral-500 max-w-sm text-center leading-relaxed" }, description), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full justify-center sm:w-auto" }, isNotFoundError || isPermissionError ? /* @__PURE__ */ React14.createElement(
|
|
1225
1234
|
"button",
|
|
1226
1235
|
{
|
|
1227
1236
|
onClick: () => window.location.href = returnUrl,
|
|
@@ -1253,12 +1262,12 @@ var UniversalErrorView = ({
|
|
|
1253
1262
|
|
|
1254
1263
|
// src/components/UniversalTransactionPage.tsx
|
|
1255
1264
|
import React15, { useState as useState9, useEffect as useEffect6, useRef as useRef3 } from "react";
|
|
1256
|
-
import { HugeiconsIcon as
|
|
1265
|
+
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1257
1266
|
import toast4 from "react-hot-toast";
|
|
1258
1267
|
import {
|
|
1259
1268
|
ArrowLeft01Icon as ArrowLeft01Icon3,
|
|
1260
1269
|
ArrowRight01Icon,
|
|
1261
|
-
Loading03Icon as
|
|
1270
|
+
Loading03Icon as Loading03Icon5,
|
|
1262
1271
|
ArrowDownRight01Icon,
|
|
1263
1272
|
ArrowUpRight01Icon,
|
|
1264
1273
|
Search01Icon,
|
|
@@ -1267,7 +1276,7 @@ import {
|
|
|
1267
1276
|
CancelCircleIcon as CancelCircleIcon2,
|
|
1268
1277
|
Copy01Icon
|
|
1269
1278
|
} from "@hugeicons/core-free-icons";
|
|
1270
|
-
var PageSpinner2 = () => /* @__PURE__ */ React15.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React15.createElement(
|
|
1279
|
+
var PageSpinner2 = () => /* @__PURE__ */ React15.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: Loading03Icon5, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1271
1280
|
var formatTime = (dateInput) => {
|
|
1272
1281
|
return new Date(dateInput).toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
|
|
1273
1282
|
};
|
|
@@ -1367,7 +1376,7 @@ var UniversalTransactionPage = ({
|
|
|
1367
1376
|
}
|
|
1368
1377
|
};
|
|
1369
1378
|
const isListLoading = isLoading || isTyping;
|
|
1370
|
-
return /* @__PURE__ */ React15.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React15.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ React15.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React15.createElement(
|
|
1379
|
+
return /* @__PURE__ */ React15.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React15.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ React15.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React15.createElement(
|
|
1371
1380
|
"input",
|
|
1372
1381
|
{
|
|
1373
1382
|
type: "text",
|
|
@@ -1382,14 +1391,14 @@ var UniversalTransactionPage = ({
|
|
|
1382
1391
|
onClick: () => setIsDirectionModalOpen(true),
|
|
1383
1392
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
1384
1393
|
},
|
|
1385
|
-
/* @__PURE__ */ React15.createElement(
|
|
1394
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: SearchList02Icon, size: 16 })
|
|
1386
1395
|
), /* @__PURE__ */ React15.createElement(
|
|
1387
1396
|
"button",
|
|
1388
1397
|
{
|
|
1389
1398
|
onClick: () => setIsTypeModalOpen(true),
|
|
1390
1399
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
1391
1400
|
},
|
|
1392
|
-
/* @__PURE__ */ React15.createElement(
|
|
1401
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: ListSettingIcon, size: 16 })
|
|
1393
1402
|
))), /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ React15.createElement("div", { className: "w-full overflow-hidden" }, isListLoading ? /* @__PURE__ */ React15.createElement(PageSpinner2, null) : /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React15.createElement("div", null, transactions.length === 0 ? /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No transactions found") : transactions.map((tx) => /* @__PURE__ */ React15.createElement(
|
|
1394
1403
|
"div",
|
|
1395
1404
|
{
|
|
@@ -1397,7 +1406,7 @@ var UniversalTransactionPage = ({
|
|
|
1397
1406
|
onClick: () => setSelectedTransaction(tx),
|
|
1398
1407
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
1399
1408
|
},
|
|
1400
|
-
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black` }, /* @__PURE__ */ React15.createElement(
|
|
1409
|
+
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React15.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] text-black truncate" }, tx.name), /* @__PURE__ */ React15.createElement("p", { className: `text-[12px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.amount))),
|
|
1401
1410
|
/* @__PURE__ */ React15.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400" }, formatDate2(tx.createdAt)), /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1402
1411
|
))), !hidePagination && /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
|
|
1403
1412
|
"button",
|
|
@@ -1406,7 +1415,7 @@ var UniversalTransactionPage = ({
|
|
|
1406
1415
|
disabled: currentPage <= 1 || isListLoading,
|
|
1407
1416
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1408
1417
|
},
|
|
1409
|
-
/* @__PURE__ */ React15.createElement(
|
|
1418
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: ArrowLeft01Icon3, size: 14 })
|
|
1410
1419
|
), /* @__PURE__ */ React15.createElement(
|
|
1411
1420
|
"button",
|
|
1412
1421
|
{
|
|
@@ -1414,14 +1423,14 @@ var UniversalTransactionPage = ({
|
|
|
1414
1423
|
disabled: currentPage >= totalPages || isListLoading || totalPages === 0,
|
|
1415
1424
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1416
1425
|
},
|
|
1417
|
-
/* @__PURE__ */ React15.createElement(
|
|
1418
|
-
)))))), selectedTransaction && /* @__PURE__ */ React15.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React15.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React15.createElement(
|
|
1426
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: ArrowRight01Icon, size: 14 })
|
|
1427
|
+
)))))), selectedTransaction && /* @__PURE__ */ React15.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React15.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React15.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React15.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 border border-neutral-200 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React15.createElement("p", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.amount), /* @__PURE__ */ React15.createElement("span", { className: `text-[9px] tracking-widest px-4 py-1.5 rounded-full ${getStatusClasses(selectedTransaction.status)}` }, selectedTransaction.status)), /* @__PURE__ */ React15.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateReference(selectedTransaction.reference)), /* @__PURE__ */ React15.createElement(
|
|
1419
1428
|
"button",
|
|
1420
1429
|
{
|
|
1421
1430
|
onClick: () => handleCopyReference(selectedTransaction.reference),
|
|
1422
1431
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1423
1432
|
},
|
|
1424
|
-
/* @__PURE__ */ React15.createElement(
|
|
1433
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon10, { icon: Copy01Icon, size: 14 })
|
|
1425
1434
|
))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Description"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, selectedTransaction.description)), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ React15.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1426
1435
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1427
1436
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
@@ -1488,9 +1497,9 @@ var UniversalTransactionPage = ({
|
|
|
1488
1497
|
// src/components/UniversalHomeView.tsx
|
|
1489
1498
|
import React16, { useState as useState10 } from "react";
|
|
1490
1499
|
import { useRouter } from "next/navigation";
|
|
1491
|
-
import { HugeiconsIcon as
|
|
1500
|
+
import { HugeiconsIcon as HugeiconsIcon11 } from "@hugeicons/react";
|
|
1492
1501
|
import {
|
|
1493
|
-
Loading03Icon as
|
|
1502
|
+
Loading03Icon as Loading03Icon6,
|
|
1494
1503
|
Notification01Icon,
|
|
1495
1504
|
ArrowLeft01Icon as ArrowLeft01Icon4,
|
|
1496
1505
|
ArrowRight01Icon as ArrowRight01Icon2,
|
|
@@ -1519,7 +1528,7 @@ var UniversalHomeView = ({
|
|
|
1519
1528
|
const fallbackAvatarUrl = `/api/avatar/?name=${encodeURIComponent(fullName || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
1520
1529
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
1521
1530
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
1522
|
-
return /* @__PURE__ */ React16.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ React16.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__ */ React16.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React16.createElement(
|
|
1531
|
+
return /* @__PURE__ */ React16.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ React16.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__ */ React16.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: Loading03Icon6, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ React16.createElement(
|
|
1523
1532
|
"img",
|
|
1524
1533
|
{
|
|
1525
1534
|
src: finalAvatarSrc,
|
|
@@ -1536,7 +1545,7 @@ var UniversalHomeView = ({
|
|
|
1536
1545
|
},
|
|
1537
1546
|
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-neutral-50 transition-colors"
|
|
1538
1547
|
},
|
|
1539
|
-
/* @__PURE__ */ React16.createElement(
|
|
1548
|
+
/* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: Notification01Icon, size: 20, className: "text-black" }),
|
|
1540
1549
|
hasUnreadNotifs && /* @__PURE__ */ React16.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
|
|
1541
1550
|
)), /* @__PURE__ */ React16.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React16.createElement(
|
|
1542
1551
|
"div",
|
|
@@ -1544,7 +1553,7 @@ var UniversalHomeView = ({
|
|
|
1544
1553
|
onClick: buyCryptoAction?.onClick,
|
|
1545
1554
|
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"
|
|
1546
1555
|
},
|
|
1547
|
-
/* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight " }, "Buy", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-white/70" }, "Crypto")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(
|
|
1556
|
+
/* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight " }, "Buy", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-white/70" }, "Crypto")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: ArrowUpRight01Icon2, size: 16, className: "text-white" }))),
|
|
1548
1557
|
/* @__PURE__ */ React16.createElement(
|
|
1549
1558
|
"img",
|
|
1550
1559
|
{
|
|
@@ -1559,7 +1568,7 @@ var UniversalHomeView = ({
|
|
|
1559
1568
|
onClick: referralAction?.onClick,
|
|
1560
1569
|
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"
|
|
1561
1570
|
},
|
|
1562
|
-
/* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight " }, "My", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-black/60" }, "Rewards")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(
|
|
1571
|
+
/* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight " }, "My", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-black/60" }, "Rewards")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: ArrowRight01Icon2, size: 16, className: "text-black" }))),
|
|
1563
1572
|
/* @__PURE__ */ React16.createElement(
|
|
1564
1573
|
"img",
|
|
1565
1574
|
{
|
|
@@ -1576,7 +1585,7 @@ var UniversalHomeView = ({
|
|
|
1576
1585
|
hideBalanceAmounts: false,
|
|
1577
1586
|
hidePagination: true
|
|
1578
1587
|
}
|
|
1579
|
-
)), showNotifDialog && /* @__PURE__ */ React16.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React16.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__ */ React16.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ React16.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-neutral-400 hover:text-black transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest " }, /* @__PURE__ */ React16.createElement(
|
|
1588
|
+
)), showNotifDialog && /* @__PURE__ */ React16.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React16.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__ */ React16.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ React16.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-neutral-400 hover:text-black transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest " }, /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: ArrowLeft01Icon4, size: 14 }), " Back") : /* @__PURE__ */ React16.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications", isNotifsLoading && /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: Loading03Icon6, size: 14, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React16.createElement("button", { onClick: () => setShowNotifDialog(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React16.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, selectedNotif ? /* @__PURE__ */ React16.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ React16.createElement("h4", { className: "text-[14px] text-black mb-1 " }, selectedNotif.title), /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block " }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React16.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message)) : /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col divide-y divide-neutral-50/50" }, notifications?.length === 0 && !isNotifsLoading ? /* @__PURE__ */ React16.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "You have no notifications.") : notifications?.map((notif) => /* @__PURE__ */ React16.createElement(
|
|
1580
1589
|
"div",
|
|
1581
1590
|
{
|
|
1582
1591
|
key: notif.id,
|
|
@@ -1595,7 +1604,7 @@ var UniversalHomeView = ({
|
|
|
1595
1604
|
onClick: () => onNotificationPageChange?.(notificationPage - 1),
|
|
1596
1605
|
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
1597
1606
|
},
|
|
1598
|
-
/* @__PURE__ */ React16.createElement(
|
|
1607
|
+
/* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: ArrowLeft01Icon4, size: 12 })
|
|
1599
1608
|
), /* @__PURE__ */ React16.createElement(
|
|
1600
1609
|
"button",
|
|
1601
1610
|
{
|
|
@@ -1603,18 +1612,18 @@ var UniversalHomeView = ({
|
|
|
1603
1612
|
onClick: () => onNotificationPageChange?.(notificationPage + 1),
|
|
1604
1613
|
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
1605
1614
|
},
|
|
1606
|
-
/* @__PURE__ */ React16.createElement(
|
|
1615
|
+
/* @__PURE__ */ React16.createElement(HugeiconsIcon11, { icon: ArrowRight01Icon2, size: 12 })
|
|
1607
1616
|
))))));
|
|
1608
1617
|
};
|
|
1609
1618
|
|
|
1610
1619
|
// src/components/UniversalWalletPage.tsx
|
|
1611
1620
|
import React18, { useState as useState11 } from "react";
|
|
1612
1621
|
import toast5 from "react-hot-toast";
|
|
1613
|
-
import { HugeiconsIcon as
|
|
1622
|
+
import { HugeiconsIcon as HugeiconsIcon13 } from "@hugeicons/react";
|
|
1614
1623
|
import {
|
|
1615
1624
|
Search01Icon as Search01Icon2,
|
|
1616
1625
|
CancelCircleIcon as CancelCircleIcon4,
|
|
1617
|
-
Loading03Icon as
|
|
1626
|
+
Loading03Icon as Loading03Icon8,
|
|
1618
1627
|
Copy01Icon as Copy01Icon2,
|
|
1619
1628
|
ArrowLeft01Icon as ArrowLeft01Icon5,
|
|
1620
1629
|
PlusSignIcon,
|
|
@@ -1625,8 +1634,8 @@ import {
|
|
|
1625
1634
|
|
|
1626
1635
|
// src/components/ConfirmationDialog.tsx
|
|
1627
1636
|
import React17 from "react";
|
|
1628
|
-
import { HugeiconsIcon as
|
|
1629
|
-
import { Loading03Icon as
|
|
1637
|
+
import { HugeiconsIcon as HugeiconsIcon12 } from "@hugeicons/react";
|
|
1638
|
+
import { Loading03Icon as Loading03Icon7 } from "@hugeicons/core-free-icons";
|
|
1630
1639
|
var ConfirmationDialog = ({
|
|
1631
1640
|
isOpen,
|
|
1632
1641
|
title,
|
|
@@ -1660,19 +1669,19 @@ var ConfirmationDialog = ({
|
|
|
1660
1669
|
disabled: isProcessing,
|
|
1661
1670
|
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
|
|
1662
1671
|
},
|
|
1663
|
-
isProcessing ? /* @__PURE__ */ React17.createElement(
|
|
1672
|
+
isProcessing ? /* @__PURE__ */ React17.createElement(HugeiconsIcon12, { icon: Loading03Icon7, className: "animate-spin", size: 18 }) : confirmText
|
|
1664
1673
|
))));
|
|
1665
1674
|
};
|
|
1666
1675
|
|
|
1667
1676
|
// src/components/UniversalWalletPage.tsx
|
|
1668
|
-
var PageSpinner3 = () => /* @__PURE__ */ React18.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React18.createElement(
|
|
1677
|
+
var PageSpinner3 = () => /* @__PURE__ */ React18.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Loading03Icon8, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1669
1678
|
var truncateAddress2 = (ref) => {
|
|
1670
1679
|
if (!ref || ref.length <= 14) return ref;
|
|
1671
1680
|
return `${ref.substring(0, 11)}.....${ref.substring(ref.length - 11)}`;
|
|
1672
1681
|
};
|
|
1673
1682
|
var WalletLogo = ({ src, alt, sizeClass = "w-10 h-10" }) => {
|
|
1674
1683
|
const [isLoaded, setIsLoaded] = useState11(false);
|
|
1675
|
-
return /* @__PURE__ */ React18.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React18.createElement(
|
|
1684
|
+
return /* @__PURE__ */ React18.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Loading03Icon8, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ React18.createElement("img", { src, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
1676
1685
|
};
|
|
1677
1686
|
var UniversalWalletPage = ({
|
|
1678
1687
|
headerTitle,
|
|
@@ -1810,7 +1819,7 @@ var UniversalWalletPage = ({
|
|
|
1810
1819
|
setIsProcessing(false);
|
|
1811
1820
|
}
|
|
1812
1821
|
};
|
|
1813
|
-
return /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React18.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React18.createElement(
|
|
1822
|
+
return /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React18.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: ArrowLeft01Icon5, size: 16 }), " Back")), /* @__PURE__ */ React18.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React18.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React18.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Search01Icon2, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React18.createElement(
|
|
1814
1823
|
"input",
|
|
1815
1824
|
{
|
|
1816
1825
|
type: "text",
|
|
@@ -1819,7 +1828,7 @@ var UniversalWalletPage = ({
|
|
|
1819
1828
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1820
1829
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
1821
1830
|
}
|
|
1822
|
-
)), !external && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React18.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(
|
|
1831
|
+
)), !external && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React18.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: PlusSignIcon, size: 16 })), /* @__PURE__ */ React18.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Upload01Icon, size: 16 })))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React18.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ React18.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React18.createElement(PageSpinner3, null) : /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React18.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ React18.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ React18.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React18.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React18.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ React18.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React18.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React18.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement("p", { className: "text-[13px] text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ React18.createElement("span", { className: `text-[9px] 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__ */ React18.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ React18.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] tracking-wide text-neutral-600 bg-neutral-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ React18.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ React18.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: CancelCircleIcon4, size: 18 }))), /* @__PURE__ */ React18.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React18.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__ */ React18.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-neutral-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-neutral-50 rounded-lg p-2 selection:bg-neutral-100" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-neutral-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] text-black " }, word)))), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Copy01Icon2, size: 14 }), " Copy Phrase"), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ React18.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-neutral-200 mt-2" }, /* @__PURE__ */ React18.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-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ React18.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-neutral-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__ */ React18.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-neutral-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-neutral-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-neutral-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ React18.createElement(
|
|
1823
1832
|
"input",
|
|
1824
1833
|
{
|
|
1825
1834
|
type: "text",
|
|
@@ -1844,7 +1853,7 @@ var UniversalWalletPage = ({
|
|
|
1844
1853
|
},
|
|
1845
1854
|
className: "w-full bg-transparent text-[13px] text-black outline-none min-w-0"
|
|
1846
1855
|
}
|
|
1847
|
-
)))), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => handleGridPaste(setVerifyWords, verifyWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(
|
|
1856
|
+
)))), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => handleGridPaste(setVerifyWords, verifyWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ React18.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Verify Backup")), flowStep === 4 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React18.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__ */ React18.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ React18.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("generated"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Save Wallet"))))), importModalOpen && /* @__PURE__ */ React18.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setImportModalOpen(false) }), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React18.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Import Wallet"), /* @__PURE__ */ React18.createElement("button", { onClick: () => !isProcessing && setImportModalOpen(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: CancelCircleIcon4, size: 18 }))), /* @__PURE__ */ React18.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-neutral-600" }, "Enter your 12 or 24-word recovery phrase to restore your wallet on this device."), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-neutral-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-neutral-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ React18.createElement(
|
|
1848
1857
|
"input",
|
|
1849
1858
|
{
|
|
1850
1859
|
type: "text",
|
|
@@ -1870,7 +1879,7 @@ var UniversalWalletPage = ({
|
|
|
1870
1879
|
},
|
|
1871
1880
|
className: "w-full bg-transparent text-[13px] text-black outline-none min-w-0"
|
|
1872
1881
|
}
|
|
1873
|
-
)))), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(
|
|
1882
|
+
)))), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ React18.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-neutral-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ React18.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ React18.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ React18.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React18.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React18.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: CancelCircleIcon4, size: 18 }))), /* @__PURE__ */ React18.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React18.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ React18.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ React18.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React18.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React18.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__ */ React18.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full border border-neutral-200 mt-1 " }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React18.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, renderQrCode(selectedWallet)), external && /* @__PURE__ */ React18.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React18.createElement(
|
|
1874
1883
|
Banner,
|
|
1875
1884
|
{
|
|
1876
1885
|
type: "warning",
|
|
@@ -1878,7 +1887,7 @@ var UniversalWalletPage = ({
|
|
|
1878
1887
|
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.`,
|
|
1879
1888
|
isDismissible: false
|
|
1880
1889
|
}
|
|
1881
|
-
)), /* @__PURE__ */ React18.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(
|
|
1890
|
+
)), /* @__PURE__ */ React18.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon13, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ React18.createElement(
|
|
1882
1891
|
ConfirmationDialog,
|
|
1883
1892
|
{
|
|
1884
1893
|
isOpen: showCopyWarning,
|
|
@@ -1897,13 +1906,13 @@ var UniversalWalletPage = ({
|
|
|
1897
1906
|
import React19, { useState as useState12, useEffect as useEffect7 } from "react";
|
|
1898
1907
|
import { useRouter as useRouter2 } from "next/navigation";
|
|
1899
1908
|
import toast6 from "react-hot-toast";
|
|
1900
|
-
import { HugeiconsIcon as
|
|
1909
|
+
import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
|
|
1901
1910
|
import {
|
|
1902
1911
|
SnowIcon,
|
|
1903
1912
|
Delete02Icon,
|
|
1904
1913
|
ArrowRight01Icon as ArrowRight01Icon3,
|
|
1905
1914
|
ViewOffSlashIcon,
|
|
1906
|
-
Loading03Icon as
|
|
1915
|
+
Loading03Icon as Loading03Icon9,
|
|
1907
1916
|
CancelCircleIcon as CancelCircleIcon5,
|
|
1908
1917
|
Copy01Icon as Copy01Icon3,
|
|
1909
1918
|
PlusSignIcon as PlusSignIcon2
|
|
@@ -1974,7 +1983,7 @@ var UniversalCardPage = ({
|
|
|
1974
1983
|
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${activeTabIndex === idx ? "bg-neutral-100 text-black" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50"}`
|
|
1975
1984
|
},
|
|
1976
1985
|
formatTabLabel(tab.type)
|
|
1977
|
-
)))), /* @__PURE__ */ React19.createElement("div", { className: "w-full pt-2 pb-6 flex justify-center" }, /* @__PURE__ */ React19.createElement("div", { className: "relative w-full max-w-85", style: { height: 179 } }, !isBgLoaded && /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50" }, /* @__PURE__ */ React19.createElement(
|
|
1986
|
+
)))), /* @__PURE__ */ React19.createElement("div", { className: "w-full pt-2 pb-6 flex justify-center" }, /* @__PURE__ */ React19.createElement("div", { className: "relative w-full max-w-85", style: { height: 179 } }, !isBgLoaded && /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 28, className: "animate-spin text-black" })), showActionOverlay && /* @__PURE__ */ React19.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__ */ React19.createElement(
|
|
1978
1987
|
"button",
|
|
1979
1988
|
{
|
|
1980
1989
|
onClick: (e) => {
|
|
@@ -2058,7 +2067,7 @@ var UniversalCardPage = ({
|
|
|
2058
2067
|
}
|
|
2059
2068
|
));
|
|
2060
2069
|
};
|
|
2061
|
-
var MenuRow = ({ icon, title, subtitle, onClick, isLast = false, isToggle = false, toggleState = false, toggleLoading = false, disabled = false }) => /* @__PURE__ */ React19.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-neutral-50"}` }, /* @__PURE__ */ React19.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React19.createElement(
|
|
2070
|
+
var MenuRow = ({ icon, title, subtitle, onClick, isLast = false, isToggle = false, toggleState = false, toggleLoading = false, disabled = false }) => /* @__PURE__ */ React19.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-neutral-50"}` }, /* @__PURE__ */ React19.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon, size: 16, className: "text-black" })), /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React19.createElement("p", { className: "text-[13px] truncate text-black" }, title), /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)), isToggle ? /* @__PURE__ */ React19.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-100"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ React19.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__ */ React19.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: ArrowRight01Icon3, size: 18, className: "text-neutral-400 shrink-0 ml-2" }));
|
|
2062
2071
|
var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
|
|
2063
2072
|
if (!isOpen || !cardDetails) return null;
|
|
2064
2073
|
const handleCopy = (text, label) => {
|
|
@@ -2066,7 +2075,7 @@ var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
|
|
|
2066
2075
|
toast6.success(`${label} copied to clipboard`);
|
|
2067
2076
|
};
|
|
2068
2077
|
const formattedCardNumber = cardDetails.card_number.replace(/(.{4})/g, "$1 ").trim();
|
|
2069
|
-
return /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[15px] text-black tracking-tight " }, "Secure Card Details"), /* @__PURE__ */ React19.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React19.createElement(
|
|
2078
|
+
return /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[15px] text-black tracking-tight " }, "Secure Card Details"), /* @__PURE__ */ React19.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: CancelCircleIcon5, size: 18 }))), /* @__PURE__ */ React19.createElement("div", { className: "p-6" }, /* @__PURE__ */ React19.createElement("div", { className: "grid grid-cols-1 gap-y-6 mb-6" }, /* @__PURE__ */ React19.createElement("div", null, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1.5 " }, "Card Number"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-neutral-200" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[15px] tracking-widest text-black block" }, formattedCardNumber), /* @__PURE__ */ React19.createElement("button", { onClick: () => handleCopy(cardDetails.card_number, "Card Number"), className: "text-neutral-400 hover:text-black outline-none shrink-0 ml-3" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: Copy01Icon3, size: 16 })))), /* @__PURE__ */ React19.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React19.createElement("div", null, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1.5 " }, "Expiry Date"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-neutral-200" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[14px] text-black block" }, cardDetails.expiry), /* @__PURE__ */ React19.createElement("button", { onClick: () => handleCopy(cardDetails.expiry, "Expiry Date"), className: "text-neutral-400 hover:text-black outline-none shrink-0 ml-2" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: Copy01Icon3, size: 16 })))), /* @__PURE__ */ React19.createElement("div", null, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1.5 " }, "CVV"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between p-3 rounded-full border border-neutral-200" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[14px] text-black block" }, cardDetails.cvv), /* @__PURE__ */ React19.createElement("button", { onClick: () => handleCopy(cardDetails.cvv, "CVV"), className: "text-neutral-400 hover:text-black outline-none shrink-0 ml-2" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: Copy01Icon3, size: 16 })))))))));
|
|
2070
2079
|
};
|
|
2071
2080
|
var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
2072
2081
|
const [amount, setAmount] = useState12("");
|
|
@@ -2090,7 +2099,7 @@ var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
|
2090
2099
|
setIsProcessing(false);
|
|
2091
2100
|
}
|
|
2092
2101
|
};
|
|
2093
|
-
return /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Fund Card"), /* @__PURE__ */ React19.createElement("button", { disabled: isProcessing, onClick: onClose, className: "text-neutral-400 hover:text-black outline-none disabled:opacity-50" }, /* @__PURE__ */ React19.createElement(
|
|
2102
|
+
return /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Fund Card"), /* @__PURE__ */ React19.createElement("button", { disabled: isProcessing, onClick: onClose, className: "text-neutral-400 hover:text-black outline-none disabled:opacity-50" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon14, { icon: CancelCircleIcon5, size: 18 }))), /* @__PURE__ */ React19.createElement("div", { className: "flex-1 p-6" }, /* @__PURE__ */ React19.createElement("form", { onSubmit: handleFundCard, className: "flex flex-col gap-6" }, /* @__PURE__ */ React19.createElement(
|
|
2094
2103
|
NumberInput,
|
|
2095
2104
|
{
|
|
2096
2105
|
label: "Amount to Add",
|
|
@@ -2105,7 +2114,7 @@ var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
|
2105
2114
|
|
|
2106
2115
|
// src/components/UniversalProfilePage.tsx
|
|
2107
2116
|
import React20, { useState as useState13 } from "react";
|
|
2108
|
-
import { HugeiconsIcon as
|
|
2117
|
+
import { HugeiconsIcon as HugeiconsIcon15 } from "@hugeicons/react";
|
|
2109
2118
|
import {
|
|
2110
2119
|
UserIcon,
|
|
2111
2120
|
LockKeyIcon as LockKeyIcon2,
|
|
@@ -2115,7 +2124,7 @@ import {
|
|
|
2115
2124
|
LogoutCircle02Icon,
|
|
2116
2125
|
UserRemove01Icon,
|
|
2117
2126
|
ArrowRight01Icon as ArrowRight01Icon4,
|
|
2118
|
-
Loading03Icon as
|
|
2127
|
+
Loading03Icon as Loading03Icon10,
|
|
2119
2128
|
Camera01Icon
|
|
2120
2129
|
} from "@hugeicons/core-free-icons";
|
|
2121
2130
|
var UniversalProfilePage = ({
|
|
@@ -2173,7 +2182,7 @@ var UniversalProfilePage = ({
|
|
|
2173
2182
|
onClick: onAvatarTap,
|
|
2174
2183
|
className: `w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center ${onAvatarTap ? "cursor-pointer group" : ""}`
|
|
2175
2184
|
},
|
|
2176
|
-
/* @__PURE__ */ React20.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ React20.createElement(React20.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React20.createElement(
|
|
2185
|
+
/* @__PURE__ */ React20.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ React20.createElement(React20.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React20.createElement(HugeiconsIcon15, { icon: Loading03Icon10, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ React20.createElement(
|
|
2177
2186
|
"img",
|
|
2178
2187
|
{
|
|
2179
2188
|
src: avatarSrc,
|
|
@@ -2181,7 +2190,7 @@ var UniversalProfilePage = ({
|
|
|
2181
2190
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2182
2191
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2183
2192
|
}
|
|
2184
|
-
)) : /* @__PURE__ */ React20.createElement(
|
|
2193
|
+
)) : /* @__PURE__ */ React20.createElement(HugeiconsIcon15, { icon: UserIcon, size: 40, className: "text-neutral-300" }), onAvatarTap && /* @__PURE__ */ React20.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__ */ React20.createElement(HugeiconsIcon15, { icon: Camera01Icon, size: 24, className: "text-white" })))
|
|
2185
2194
|
), /* @__PURE__ */ React20.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-black" }, roleName), /* @__PURE__ */ React20.createElement("span", { className: getBadgeColorClass(roleName), "aria-hidden": true }, /* @__PURE__ */ React20.createElement("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React20.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), /* @__PURE__ */ React20.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ React20.createElement("g", { id: "SVGRepo_iconCarrier" }, " ", /* @__PURE__ */ React20.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__ */ React20.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
|
|
2186
2195
|
MenuRow2,
|
|
2187
2196
|
{
|
|
@@ -2273,15 +2282,15 @@ var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titl
|
|
|
2273
2282
|
onClick,
|
|
2274
2283
|
className: `flex items-center p-4 cursor-pointer hover:bg-neutral-50 transition-colors ${!isLast ? "" : ""}`
|
|
2275
2284
|
},
|
|
2276
|
-
/* @__PURE__ */ React20.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React20.createElement(
|
|
2285
|
+
/* @__PURE__ */ React20.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React20.createElement(HugeiconsIcon15, { icon, size: 16, className: iconColor })),
|
|
2277
2286
|
/* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React20.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2278
|
-
/* @__PURE__ */ React20.createElement(
|
|
2287
|
+
/* @__PURE__ */ React20.createElement(HugeiconsIcon15, { icon: ArrowRight01Icon4, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2279
2288
|
);
|
|
2280
2289
|
|
|
2281
2290
|
// src/components/UniversalSidebar.tsx
|
|
2282
2291
|
import React21, { useState as useState14 } from "react";
|
|
2283
2292
|
import Link5 from "next/link";
|
|
2284
|
-
import { HugeiconsIcon as
|
|
2293
|
+
import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
|
|
2285
2294
|
import {
|
|
2286
2295
|
LogoutCircle02Icon as LogoutCircle02Icon2
|
|
2287
2296
|
} from "@hugeicons/core-free-icons";
|
|
@@ -2320,7 +2329,7 @@ var UniversalSidebar = ({
|
|
|
2320
2329
|
title: item.name
|
|
2321
2330
|
},
|
|
2322
2331
|
/* @__PURE__ */ React21.createElement(
|
|
2323
|
-
|
|
2332
|
+
HugeiconsIcon16,
|
|
2324
2333
|
{
|
|
2325
2334
|
icon: item.icon,
|
|
2326
2335
|
size: 20,
|
|
@@ -2334,7 +2343,7 @@ var UniversalSidebar = ({
|
|
|
2334
2343
|
onClick: () => setShowLogoutDialog(true),
|
|
2335
2344
|
className: "w-12 h-12 rounded-full flex items-center justify-center text-neutral-500 hover:bg-white/50 transition-all outline-none"
|
|
2336
2345
|
},
|
|
2337
|
-
/* @__PURE__ */ React21.createElement(
|
|
2346
|
+
/* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: LogoutCircle02Icon2, size: 20 })
|
|
2338
2347
|
))), showLogoutAction && /* @__PURE__ */ React21.createElement(
|
|
2339
2348
|
ConfirmationDialog,
|
|
2340
2349
|
{
|
|
@@ -2556,7 +2565,7 @@ var HeroSection = ({
|
|
|
2556
2565
|
|
|
2557
2566
|
// src/components/AppBento2.tsx
|
|
2558
2567
|
import React24, { useState as useState17, useEffect as useEffect9, useRef as useRef5 } from "react";
|
|
2559
|
-
import { HugeiconsIcon as
|
|
2568
|
+
import { HugeiconsIcon as HugeiconsIcon17 } from "@hugeicons/react";
|
|
2560
2569
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2561
2570
|
const [isAnimating, setIsAnimating] = useState17(false);
|
|
2562
2571
|
const titleRef = useRef5(null);
|
|
@@ -2623,8 +2632,8 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2623
2632
|
}
|
|
2624
2633
|
),
|
|
2625
2634
|
isBlack && /* @__PURE__ */ React24.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" }),
|
|
2626
|
-
/* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React24.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__ */ React24.createElement(
|
|
2627
|
-
/* @__PURE__ */ React24.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React24.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React24.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React24.createElement(
|
|
2635
|
+
/* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React24.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__ */ React24.createElement(HugeiconsIcon17, { icon: f.icon, size: 180 }))),
|
|
2636
|
+
/* @__PURE__ */ React24.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React24.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React24.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React24.createElement(HugeiconsIcon17, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React24.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React24.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React24.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2628
2637
|
);
|
|
2629
2638
|
})))));
|
|
2630
2639
|
};
|
|
@@ -2632,10 +2641,10 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2632
2641
|
// src/components/UniversalSecurityPage.tsx
|
|
2633
2642
|
import React25, { useState as useState18 } from "react";
|
|
2634
2643
|
import toast8 from "react-hot-toast";
|
|
2635
|
-
import { HugeiconsIcon as
|
|
2644
|
+
import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
|
|
2636
2645
|
import {
|
|
2637
2646
|
CancelCircleIcon as CancelCircleIcon6,
|
|
2638
|
-
Loading03Icon as
|
|
2647
|
+
Loading03Icon as Loading03Icon11,
|
|
2639
2648
|
ArrowLeft01Icon as ArrowLeft01Icon6,
|
|
2640
2649
|
Key01Icon,
|
|
2641
2650
|
LockKeyIcon as LockKeyIcon3,
|
|
@@ -2737,7 +2746,7 @@ var UniversalSecurityPage = ({
|
|
|
2737
2746
|
onClick: onBack,
|
|
2738
2747
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
2739
2748
|
},
|
|
2740
|
-
/* @__PURE__ */ React25.createElement(
|
|
2749
|
+
/* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon: ArrowLeft01Icon6, size: 16 }),
|
|
2741
2750
|
" Back"
|
|
2742
2751
|
)), /* @__PURE__ */ React25.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React25.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React25.createElement(
|
|
2743
2752
|
MenuRow3,
|
|
@@ -2760,7 +2769,7 @@ var UniversalSecurityPage = ({
|
|
|
2760
2769
|
toggleLoading: isPasskeyLoading,
|
|
2761
2770
|
isLast: true
|
|
2762
2771
|
}
|
|
2763
|
-
))), isPasscodeModalOpen && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React25.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ React25.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React25.createElement(
|
|
2772
|
+
))), isPasscodeModalOpen && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePasscodeModal }), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React25.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, hasPasscode ? "Change Passcode" : "Create Security Passcode"), /* @__PURE__ */ React25.createElement("button", { onClick: closePasscodeModal, disabled: isPasscodeSubmitting, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React25.createElement("div", { className: "p-6" }, isPasscodeLoading ? /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon: Loading03Icon11, size: 28, className: "animate-spin text-neutral-400 mb-4" })) : /* @__PURE__ */ React25.createElement("form", { onSubmit: handlePasscodeSubmit, className: "flex flex-col gap-6" }, hasPasscode && /* @__PURE__ */ React25.createElement(
|
|
2764
2773
|
TextInput,
|
|
2765
2774
|
{
|
|
2766
2775
|
type: "password",
|
|
@@ -2802,7 +2811,7 @@ var UniversalSecurityPage = ({
|
|
|
2802
2811
|
className: "w-full"
|
|
2803
2812
|
},
|
|
2804
2813
|
hasPasscode ? "Update Passcode" : "Set Passcode"
|
|
2805
|
-
)))))), showPasskeyModal && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React25.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ React25.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React25.createElement(
|
|
2814
|
+
)))))), showPasskeyModal && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React25.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ React25.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React25.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ React25.createElement("p", { className: "text-[13px] text-neutral-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__ */ React25.createElement(
|
|
2806
2815
|
ThreeDActionButton,
|
|
2807
2816
|
{
|
|
2808
2817
|
onClick: submitEnablePasskey,
|
|
@@ -2830,16 +2839,16 @@ var MenuRow3 = ({
|
|
|
2830
2839
|
onClick: disabled ? void 0 : onClick,
|
|
2831
2840
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
2832
2841
|
},
|
|
2833
|
-
/* @__PURE__ */ React25.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React25.createElement(
|
|
2842
|
+
/* @__PURE__ */ React25.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon, size: 16, className: iconColor })),
|
|
2834
2843
|
/* @__PURE__ */ React25.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React25.createElement("p", { className: `text-[14px] truncate ${titleColor}` }, title), /* @__PURE__ */ React25.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, subtitle)),
|
|
2835
|
-
isToggle ? /* @__PURE__ */ React25.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-100"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ React25.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__ */ React25.createElement(
|
|
2844
|
+
isToggle ? /* @__PURE__ */ React25.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-100"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ React25.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__ */ React25.createElement(HugeiconsIcon18, { icon: Loading03Icon11, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ React25.createElement(HugeiconsIcon18, { icon: ArrowRight01Icon5, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2836
2845
|
);
|
|
2837
2846
|
|
|
2838
2847
|
// src/components/FeatureScroll.tsx
|
|
2839
2848
|
import React26, { useRef as useRef6, useState as useState19, useEffect as useEffect10 } from "react";
|
|
2840
2849
|
import Image4 from "next/image";
|
|
2841
|
-
import { HugeiconsIcon as
|
|
2842
|
-
import { ArrowLeft01Icon as ArrowLeft01Icon7, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as
|
|
2850
|
+
import { HugeiconsIcon as HugeiconsIcon19 } from "@hugeicons/react";
|
|
2851
|
+
import { ArrowLeft01Icon as ArrowLeft01Icon7, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as Loading03Icon12 } from "@hugeicons/core-free-icons";
|
|
2843
2852
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
2844
2853
|
const [isBgLoading, setIsBgLoading] = useState19(true);
|
|
2845
2854
|
const [isFgLoading, setIsFgLoading] = useState19(!!feature.image);
|
|
@@ -2864,7 +2873,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2864
2873
|
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")`
|
|
2865
2874
|
}
|
|
2866
2875
|
}
|
|
2867
|
-
), isFgLoading && feature.image && /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ React26.createElement(
|
|
2876
|
+
), isFgLoading && feature.image && /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon19, { icon: Loading03Icon12, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ React26.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__ */ React26.createElement(
|
|
2868
2877
|
Image4,
|
|
2869
2878
|
{
|
|
2870
2879
|
src: feature.image,
|
|
@@ -2913,7 +2922,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2913
2922
|
disabled: !canScrollLeft,
|
|
2914
2923
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-200 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
2915
2924
|
},
|
|
2916
|
-
/* @__PURE__ */ React26.createElement(
|
|
2925
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon7, size: 20 })
|
|
2917
2926
|
), /* @__PURE__ */ React26.createElement(
|
|
2918
2927
|
"button",
|
|
2919
2928
|
{
|
|
@@ -2921,7 +2930,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2921
2930
|
disabled: !canScrollRight,
|
|
2922
2931
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-200 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
2923
2932
|
},
|
|
2924
|
-
/* @__PURE__ */ React26.createElement(
|
|
2933
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon6, size: 20 })
|
|
2925
2934
|
))), /* @__PURE__ */ React26.createElement(
|
|
2926
2935
|
"div",
|
|
2927
2936
|
{
|
|
@@ -2937,7 +2946,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2937
2946
|
disabled: !canScrollLeft,
|
|
2938
2947
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
2939
2948
|
},
|
|
2940
|
-
/* @__PURE__ */ React26.createElement(
|
|
2949
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon7, size: 20 })
|
|
2941
2950
|
), /* @__PURE__ */ React26.createElement(
|
|
2942
2951
|
"button",
|
|
2943
2952
|
{
|
|
@@ -2945,13 +2954,13 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2945
2954
|
disabled: !canScrollRight,
|
|
2946
2955
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
2947
2956
|
},
|
|
2948
|
-
/* @__PURE__ */ React26.createElement(
|
|
2957
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon6, size: 20 })
|
|
2949
2958
|
))));
|
|
2950
2959
|
};
|
|
2951
2960
|
|
|
2952
2961
|
// src/components/PlatformFeatures.tsx
|
|
2953
2962
|
import React27 from "react";
|
|
2954
|
-
import { HugeiconsIcon as
|
|
2963
|
+
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
2955
2964
|
var PlatformFeatures = ({
|
|
2956
2965
|
tagline,
|
|
2957
2966
|
headline,
|
|
@@ -2965,7 +2974,7 @@ var PlatformFeatures = ({
|
|
|
2965
2974
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
2966
2975
|
style: { animationDelay: feature.delay || "0ms" }
|
|
2967
2976
|
},
|
|
2968
|
-
/* @__PURE__ */ React27.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React27.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-200 flex items-center justify-center text-neutral-600 transition-colors duration-300" }, /* @__PURE__ */ React27.createElement(
|
|
2977
|
+
/* @__PURE__ */ React27.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React27.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-200 flex items-center justify-center text-neutral-600 transition-colors duration-300" }, /* @__PURE__ */ React27.createElement(HugeiconsIcon20, { icon: feature.icon, size: 24 })), /* @__PURE__ */ React27.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React27.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ React27.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
2969
2978
|
/* @__PURE__ */ React27.createElement("div", null, /* @__PURE__ */ React27.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
2970
2979
|
)))));
|
|
2971
2980
|
};
|
|
@@ -3022,7 +3031,7 @@ var ManagedDocument = ({
|
|
|
3022
3031
|
|
|
3023
3032
|
// src/components/ManagedContactBlock.tsx
|
|
3024
3033
|
import React29, { useState as useState21, useEffect as useEffect12 } from "react";
|
|
3025
|
-
import { HugeiconsIcon as
|
|
3034
|
+
import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
|
|
3026
3035
|
var SecureEmail = ({ user, domain, className }) => {
|
|
3027
3036
|
const [isMounted, setIsMounted] = useState21(false);
|
|
3028
3037
|
useEffect12(() => {
|
|
@@ -3080,7 +3089,7 @@ var ManagedContactBlock = ({
|
|
|
3080
3089
|
rel: "noopener noreferrer",
|
|
3081
3090
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black"
|
|
3082
3091
|
},
|
|
3083
|
-
/* @__PURE__ */ React29.createElement(
|
|
3092
|
+
/* @__PURE__ */ React29.createElement(HugeiconsIcon21, { icon: social.icon, size: 18 }),
|
|
3084
3093
|
/* @__PURE__ */ React29.createElement("span", { className: "text-[13px]" }, social.label)
|
|
3085
3094
|
)))))))));
|
|
3086
3095
|
};
|
|
@@ -3181,7 +3190,7 @@ var ManagedPricingBlock = ({
|
|
|
3181
3190
|
// src/components/ManagedBoardBlock.tsx
|
|
3182
3191
|
import React31 from "react";
|
|
3183
3192
|
import Image6 from "next/image";
|
|
3184
|
-
import { HugeiconsIcon as
|
|
3193
|
+
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
3185
3194
|
import { TwitterIcon, LinkedinIcon } from "@hugeicons/core-free-icons";
|
|
3186
3195
|
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React31.createElement(
|
|
3187
3196
|
"a",
|
|
@@ -3191,7 +3200,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React31.
|
|
|
3191
3200
|
rel: "noopener noreferrer",
|
|
3192
3201
|
className: "text-neutral-400 hover:text-black transition-colors"
|
|
3193
3202
|
},
|
|
3194
|
-
/* @__PURE__ */ React31.createElement(
|
|
3203
|
+
/* @__PURE__ */ React31.createElement(HugeiconsIcon22, { icon, size: 16 })
|
|
3195
3204
|
);
|
|
3196
3205
|
var ManagedBoardBlock = ({
|
|
3197
3206
|
tagline,
|
|
@@ -3318,7 +3327,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3318
3327
|
import React34, { useEffect as useEffect14, useRef as useRef9 } from "react";
|
|
3319
3328
|
import Link8 from "next/link";
|
|
3320
3329
|
import Image8 from "next/image";
|
|
3321
|
-
import { HugeiconsIcon as
|
|
3330
|
+
import { HugeiconsIcon as HugeiconsIcon23 } from "@hugeicons/react";
|
|
3322
3331
|
import { ArrowRight01Icon as ArrowRight01Icon7 } from "@hugeicons/core-free-icons";
|
|
3323
3332
|
var useScrollAnimation = () => {
|
|
3324
3333
|
const elementRef = useRef9(null);
|
|
@@ -3400,7 +3409,7 @@ var PortfolioHero = ({
|
|
|
3400
3409
|
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em] rounded-full px-8 py-3.5 bg-neutral-200 transition-colors text-black hover:bg-neutral-50 outline-none"
|
|
3401
3410
|
},
|
|
3402
3411
|
secondaryCtaText,
|
|
3403
|
-
/* @__PURE__ */ React34.createElement(
|
|
3412
|
+
/* @__PURE__ */ React34.createElement(HugeiconsIcon23, { icon: ArrowRight01Icon7, size: 16 })
|
|
3404
3413
|
))
|
|
3405
3414
|
));
|
|
3406
3415
|
};
|
|
@@ -3408,8 +3417,8 @@ var PortfolioHero = ({
|
|
|
3408
3417
|
// src/components/GifFeatureCard.tsx
|
|
3409
3418
|
import React35, { useState as useState23 } from "react";
|
|
3410
3419
|
import Image9 from "next/image";
|
|
3411
|
-
import { HugeiconsIcon as
|
|
3412
|
-
import { Loading03Icon as
|
|
3420
|
+
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
3421
|
+
import { Loading03Icon as Loading03Icon13 } from "@hugeicons/core-free-icons";
|
|
3413
3422
|
var GifFeatureCard = ({
|
|
3414
3423
|
gifSrc,
|
|
3415
3424
|
title,
|
|
@@ -3419,9 +3428,9 @@ var GifFeatureCard = ({
|
|
|
3419
3428
|
}) => {
|
|
3420
3429
|
const [isLoading, setIsLoading] = useState23(true);
|
|
3421
3430
|
return /* @__PURE__ */ React35.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React35.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React35.createElement(
|
|
3422
|
-
|
|
3431
|
+
HugeiconsIcon24,
|
|
3423
3432
|
{
|
|
3424
|
-
icon:
|
|
3433
|
+
icon: Loading03Icon13,
|
|
3425
3434
|
size: 32,
|
|
3426
3435
|
className: "animate-spin text-white"
|
|
3427
3436
|
}
|
|
@@ -3502,11 +3511,11 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3502
3511
|
// src/components/ConsultantShowcase.tsx
|
|
3503
3512
|
import React37, { useState as useState25 } from "react";
|
|
3504
3513
|
import Image11 from "next/image";
|
|
3505
|
-
import { HugeiconsIcon as
|
|
3506
|
-
import { Loading03Icon as
|
|
3514
|
+
import { HugeiconsIcon as HugeiconsIcon25 } from "@hugeicons/react";
|
|
3515
|
+
import { Loading03Icon as Loading03Icon14 } from "@hugeicons/core-free-icons";
|
|
3507
3516
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3508
3517
|
const [isLoading, setIsLoading] = useState25(true);
|
|
3509
|
-
return /* @__PURE__ */ React37.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React37.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React37.createElement(
|
|
3518
|
+
return /* @__PURE__ */ React37.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React37.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon25, { icon: Loading03Icon14, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React37.createElement(
|
|
3510
3519
|
Image11,
|
|
3511
3520
|
{
|
|
3512
3521
|
src,
|
|
@@ -3597,8 +3606,8 @@ var ConsultantShowcase = ({
|
|
|
3597
3606
|
// src/components/ContentGridBlock.tsx
|
|
3598
3607
|
import React38, { useState as useState26 } from "react";
|
|
3599
3608
|
import Image12 from "next/image";
|
|
3600
|
-
import { HugeiconsIcon as
|
|
3601
|
-
import { Loading03Icon as
|
|
3609
|
+
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3610
|
+
import { Loading03Icon as Loading03Icon15 } from "@hugeicons/core-free-icons";
|
|
3602
3611
|
var ContentGridBlock = ({
|
|
3603
3612
|
header,
|
|
3604
3613
|
leftCard,
|
|
@@ -3670,7 +3679,7 @@ var ManagedProjectsBlock = ({
|
|
|
3670
3679
|
|
|
3671
3680
|
// src/components/UniversalVerificationPage.tsx
|
|
3672
3681
|
import React40 from "react";
|
|
3673
|
-
import { HugeiconsIcon as
|
|
3682
|
+
import { HugeiconsIcon as HugeiconsIcon27 } from "@hugeicons/react";
|
|
3674
3683
|
import {
|
|
3675
3684
|
ArrowLeft01Icon as ArrowLeft01Icon8,
|
|
3676
3685
|
Mail01Icon,
|
|
@@ -3679,7 +3688,7 @@ import {
|
|
|
3679
3688
|
CheckmarkCircle01Icon,
|
|
3680
3689
|
Time02Icon,
|
|
3681
3690
|
InformationCircleIcon as InformationCircleIcon2,
|
|
3682
|
-
Loading03Icon as
|
|
3691
|
+
Loading03Icon as Loading03Icon16
|
|
3683
3692
|
} from "@hugeicons/core-free-icons";
|
|
3684
3693
|
var VerificationRow = ({
|
|
3685
3694
|
icon,
|
|
@@ -3732,9 +3741,9 @@ var VerificationRow = ({
|
|
|
3732
3741
|
onClick: isDisabled ? void 0 : onClick,
|
|
3733
3742
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${isDisabled ? "opacity-70 cursor-default" : "cursor-pointer hover:bg-neutral-50"}`
|
|
3734
3743
|
},
|
|
3735
|
-
/* @__PURE__ */ React40.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 bg-white flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React40.createElement(
|
|
3744
|
+
/* @__PURE__ */ React40.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 bg-white flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon, size: 16, className: "text-black" })),
|
|
3736
3745
|
/* @__PURE__ */ React40.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React40.createElement("p", { className: "text-[14px] truncate text-black" }, title), /* @__PURE__ */ React40.createElement("p", { className: `text-[10px] inline-flex items-center ${bg} rounded-full px-2 py-1 ${statusColor} mt-0.5` }, statusText)),
|
|
3737
|
-
/* @__PURE__ */ React40.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ React40.createElement(
|
|
3746
|
+
/* @__PURE__ */ React40.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon: Loading03Icon16, size: 20, className: "animate-spin text-black" }) : /* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon: StatusIcon, size: 20, className: iconColor }))
|
|
3738
3747
|
);
|
|
3739
3748
|
};
|
|
3740
3749
|
var UniversalVerificationPage = ({
|
|
@@ -3753,7 +3762,7 @@ var UniversalVerificationPage = ({
|
|
|
3753
3762
|
onClick: onBack,
|
|
3754
3763
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
3755
3764
|
},
|
|
3756
|
-
/* @__PURE__ */ React40.createElement(
|
|
3765
|
+
/* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon: ArrowLeft01Icon8, size: 16 }),
|
|
3757
3766
|
" Back"
|
|
3758
3767
|
)), /* @__PURE__ */ React40.createElement("div", { className: "w-full flex flex-col gap-4 mb-8" }, /* @__PURE__ */ React40.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React40.createElement(
|
|
3759
3768
|
VerificationRow,
|
|
@@ -3792,22 +3801,22 @@ import axios from "axios";
|
|
|
3792
3801
|
import toast9 from "react-hot-toast";
|
|
3793
3802
|
import Confetti from "react-confetti";
|
|
3794
3803
|
import { useWindowSize } from "react-use";
|
|
3795
|
-
import { HugeiconsIcon as
|
|
3804
|
+
import { HugeiconsIcon as HugeiconsIcon28 } from "@hugeicons/react";
|
|
3796
3805
|
import {
|
|
3797
3806
|
GiftIcon,
|
|
3798
|
-
Loading03Icon as
|
|
3807
|
+
Loading03Icon as Loading03Icon17,
|
|
3799
3808
|
ArrowLeft01Icon as ArrowLeft01Icon9
|
|
3800
3809
|
} from "@hugeicons/core-free-icons";
|
|
3801
3810
|
var formatWeb3Name = (name) => {
|
|
3802
3811
|
if (!name) return "";
|
|
3803
3812
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
3804
3813
|
};
|
|
3805
|
-
var PageSpinner4 = () => /* @__PURE__ */ React41.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React41.createElement(
|
|
3814
|
+
var PageSpinner4 = () => /* @__PURE__ */ React41.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React41.createElement(HugeiconsIcon28, { icon: Loading03Icon17, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
3806
3815
|
var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
3807
3816
|
const [isLoaded, setIsLoaded] = useState27(false);
|
|
3808
3817
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
3809
3818
|
const finalSrc = src || fallbackUrl;
|
|
3810
|
-
return /* @__PURE__ */ React41.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React41.createElement(
|
|
3819
|
+
return /* @__PURE__ */ React41.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React41.createElement(HugeiconsIcon28, { icon: Loading03Icon17, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ React41.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
3811
3820
|
};
|
|
3812
3821
|
var UniversalRewardPage = ({
|
|
3813
3822
|
leaderboardToday,
|
|
@@ -3857,7 +3866,7 @@ var UniversalRewardPage = ({
|
|
|
3857
3866
|
setIsClaiming(false);
|
|
3858
3867
|
}
|
|
3859
3868
|
};
|
|
3860
|
-
return /* @__PURE__ */ React41.createElement("div", null, /* @__PURE__ */ React41.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React41.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React41.createElement(
|
|
3869
|
+
return /* @__PURE__ */ React41.createElement("div", null, /* @__PURE__ */ React41.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React41.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React41.createElement(HugeiconsIcon28, { icon: ArrowLeft01Icon9, size: 16 }), " Back")), /* @__PURE__ */ React41.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React41.createElement(ManagedToaster, null), showConfetti && /* @__PURE__ */ React41.createElement("div", { className: "fixed inset-0 z-200 pointer-events-none" }, /* @__PURE__ */ React41.createElement(Confetti, { width, height, recycle: false, numberOfPieces: 500, gravity: 0.15 })), isLoading ? /* @__PURE__ */ React41.createElement(PageSpinner4, null) : /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.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__ */ React41.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, secondPlace ? /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(secondPlace.profile.web3Name)), /* @__PURE__ */ React41.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React41.createElement(AvatarLogo, { src: secondPlace.profile.avatarUrl, alt: secondPlace.profile.username, name: formatWeb3Name(secondPlace.profile.web3Name), sizeClass: "w-14 h-14" }), /* @__PURE__ */ React41.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-[#ceff8a] text-black flex items-center justify-center text-[10px] border border-white " }, "2")), /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-[#ceff8a] rounded-t-xl h-24 flex items-center justify-center" }, /* @__PURE__ */ React41.createElement("span", { className: "text-neutral-800/30 text-2xl " }, "2nd"))) : /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-200 to-neutral-100 rounded-t-xl h-24 mt-auto" })), /* @__PURE__ */ React41.createElement("div", { className: "flex flex-col items-center w-1/3 z-20 -mt-8" }, firstPlace ? /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(firstPlace.profile.web3Name)), /* @__PURE__ */ React41.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React41.createElement(AvatarLogo, { src: firstPlace.profile.avatarUrl, alt: firstPlace.profile.username, name: formatWeb3Name(firstPlace.profile.web3Name), sizeClass: "w-17 h-17" }), /* @__PURE__ */ React41.createElement("div", { className: "absolute -bottom-2 right-2 w-5 h-5 rounded-full bg-[#143731] text-white flex items-center justify-center text-[10px] border border-white " }, "1")), /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-[#143731] rounded-t-xl h-32 flex items-center justify-center " }, /* @__PURE__ */ React41.createElement("span", { className: "text-white/40 text-3xl tracking-widest" }, "1st"))) : /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-200 to-neutral-100 rounded-t-xl h-32 mt-auto" })), /* @__PURE__ */ React41.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, thirdPlace ? /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(thirdPlace.profile.web3Name)), /* @__PURE__ */ React41.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React41.createElement(AvatarLogo, { src: thirdPlace.profile.avatarUrl, alt: thirdPlace.profile.username, name: formatWeb3Name(thirdPlace.profile.web3Name), sizeClass: "w-12 h-12" }), /* @__PURE__ */ React41.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-[#ceff8a] text-black flex items-center justify-center text-[10px] border border-white " }, "3")), /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-[#ceff8a] rounded-t-xl h-20 flex items-center justify-center" }, /* @__PURE__ */ React41.createElement("span", { className: "text-neutral-800/30 text-xl " }, "3rd"))) : /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-linear-to-t from-neutral-200 to-neutral-100 rounded-t-xl h-20 mt-auto" }))), /* @__PURE__ */ React41.createElement("div", { className: "flex items-center justify-center mb-6 sm:mb-8 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React41.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) => {
|
|
3861
3870
|
const isActive = activeTabIndex === idx;
|
|
3862
3871
|
return /* @__PURE__ */ React41.createElement(
|
|
3863
3872
|
"button",
|
|
@@ -3877,7 +3886,7 @@ var UniversalRewardPage = ({
|
|
|
3877
3886
|
onClick: () => setSelectedReward(reward),
|
|
3878
3887
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
3879
3888
|
},
|
|
3880
|
-
/* @__PURE__ */ React41.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React41.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black" }, /* @__PURE__ */ React41.createElement(
|
|
3889
|
+
/* @__PURE__ */ React41.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React41.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black" }, /* @__PURE__ */ React41.createElement(HugeiconsIcon28, { icon: GiftIcon, size: 16 })), /* @__PURE__ */ React41.createElement("div", { className: "min-w-0 flex-1 flex flex-col items-start gap-0.5 pr-4" }, /* @__PURE__ */ React41.createElement("p", { className: "text-[13px] text-black truncate w-full" }, reward.title), /* @__PURE__ */ React41.createElement("p", { className: `text-[10px] inline-flex items-center bg-neutral-50 rounded-full px-2 py-1 text-neutral-500 mt-0.5` }, statusText))),
|
|
3881
3890
|
/* @__PURE__ */ React41.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1" }, /* @__PURE__ */ React41.createElement("span", { className: "text-[13px] text-black" }, reward.amount))
|
|
3882
3891
|
);
|
|
3883
3892
|
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */ React41.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ React41.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Leaderboard"), /* @__PURE__ */ React41.createElement("div", { className: "flex flex-col" }, remainingLeaderboard.map((lb) => /* @__PURE__ */ React41.createElement("div", { key: lb.profile.username, className: "flex items-center justify-between py-3 min-w-0" }, /* @__PURE__ */ React41.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React41.createElement("div", { className: "text-[12px] text-neutral-400 w-4" }, lb.position), /* @__PURE__ */ React41.createElement(AvatarLogo, { src: lb.profile.avatarUrl, alt: lb.profile.username, name: formatWeb3Name(lb.profile.web3Name), sizeClass: "w-9 h-9" }), /* @__PURE__ */ React41.createElement("div", { className: "min-w-0 flex-1 flex flex-col" }, /* @__PURE__ */ React41.createElement("p", { className: "text-[13px] text-black truncate" }, formatWeb3Name(lb.profile.web3Name)), /* @__PURE__ */ React41.createElement("p", { className: "text-[11px] text-neutral-400 truncate" }, "@", lb.profile.username))), /* @__PURE__ */ React41.createElement("div", { className: "shrink-0 text-[13px] text-black" }, lb.amount))))))), selectedReward && /* @__PURE__ */ React41.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React41.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isClaiming && setSelectedReward(null) }), /* @__PURE__ */ React41.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__ */ React41.createElement("div", { className: "flex-1 p-6 flex flex-col items-center text-center mt-2" }, /* @__PURE__ */ React41.createElement("h2", { className: "text-xl text-black mb-2" }, selectedReward.title), /* @__PURE__ */ React41.createElement("p", { className: "text-[13px] text-neutral-500 mb-6 leading-relaxed" }, selectedReward.description), selectedReward.progressText && /* @__PURE__ */ React41.createElement("div", { className: "w-full mb-6" }, /* @__PURE__ */ React41.createElement("div", { className: `px-4 py-2 rounded-full text-[11px] tracking-wide ${selectedReward.status === "CLAIMED" ? "bg-green-50 text-green-600" : selectedReward.isEligible ? "bg-blue-50 text-blue-600" : "bg-neutral-100 text-neutral-600"}` }, selectedReward.progressText)), /* @__PURE__ */ React41.createElement("div", { className: " w-full rounded-xl p-4 mb-8 flex flex-col items-center" }, /* @__PURE__ */ React41.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-1" }, "Reward Value"), /* @__PURE__ */ React41.createElement("span", { className: "text-3xl text-black " }, selectedReward.amount)), /* @__PURE__ */ React41.createElement("div", { className: "flex flex-col gap-3 w-full" }, /* @__PURE__ */ React41.createElement(
|
|
@@ -3903,14 +3912,14 @@ var UniversalRewardPage = ({
|
|
|
3903
3912
|
// src/components/UniversalReferralPage.tsx
|
|
3904
3913
|
import React42, { useState as useState28 } from "react";
|
|
3905
3914
|
import toast10 from "react-hot-toast";
|
|
3906
|
-
import { HugeiconsIcon as
|
|
3915
|
+
import { HugeiconsIcon as HugeiconsIcon29 } from "@hugeicons/react";
|
|
3907
3916
|
import {
|
|
3908
3917
|
ArrowLeft01Icon as ArrowLeft01Icon10,
|
|
3909
3918
|
ArrowRight01Icon as ArrowRight01Icon8,
|
|
3910
|
-
Loading03Icon as
|
|
3919
|
+
Loading03Icon as Loading03Icon18,
|
|
3911
3920
|
Copy01Icon as Copy01Icon4
|
|
3912
3921
|
} from "@hugeicons/core-free-icons";
|
|
3913
|
-
var PageSpinner5 = () => /* @__PURE__ */ React42.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React42.createElement(
|
|
3922
|
+
var PageSpinner5 = () => /* @__PURE__ */ React42.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: Loading03Icon18, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
3914
3923
|
var formatWeb3Name2 = (name) => {
|
|
3915
3924
|
if (!name) return "";
|
|
3916
3925
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
@@ -3945,16 +3954,16 @@ var UniversalReferralPage = ({
|
|
|
3945
3954
|
const [isLoaded, setIsLoaded] = useState28(false);
|
|
3946
3955
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=e0e0e0&color=000000&size=100&font-size=0.33`;
|
|
3947
3956
|
const finalSrc = src || fallbackUrl;
|
|
3948
|
-
return /* @__PURE__ */ React42.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React42.createElement(
|
|
3957
|
+
return /* @__PURE__ */ React42.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: Loading03Icon18, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ React42.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
3949
3958
|
};
|
|
3950
|
-
return /* @__PURE__ */ React42.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React42.createElement(ManagedToaster, null), /* @__PURE__ */ React42.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React42.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React42.createElement(
|
|
3959
|
+
return /* @__PURE__ */ React42.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React42.createElement(ManagedToaster, null), /* @__PURE__ */ React42.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React42.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: ArrowLeft01Icon10, size: 16 }), " Back")), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-4 mb-6 px-1" }, /* @__PURE__ */ React42.createElement("div", null, /* @__PURE__ */ React42.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Your Referrals"), /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-neutral-500" }, "Invite friends and earn rewards when they verify and activate cards.")), /* @__PURE__ */ React42.createElement("div", { className: "bg-[#143731] rounded-3xl p-6 relative overflow-hidden flex flex-col min-h-25 w-full mt-2" }, /* @__PURE__ */ React42.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ React42.createElement("p", { className: "text-[11px] text-white leading-tight mb-1" }, /* @__PURE__ */ React42.createElement("span", { className: "text-white/60" }, "AFT Balance")), isLoading ? /* @__PURE__ */ React42.createElement("div", { className: "h-8 w-32 bg-white/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React42.createElement("span", { className: "text-lg text-white tracking-tight mt-1" }, referralCoins)))), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-6 p-4 rounded-3xl bg-white w-full" }, /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React42.createElement("div", { className: "border border-neutral-200 rounded-xl p-4 flex items-center justify-between" }, /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React42.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 " }, "Invitation Code"), isLoading && !referralCode ? /* @__PURE__ */ React42.createElement("div", { className: "h-6 w-24 bg-neutral-50 animate-pulse rounded mt-1" }) : /* @__PURE__ */ React42.createElement("span", { className: "text-sm text-black tracking-widest" }, referralCode)), /* @__PURE__ */ React42.createElement(
|
|
3951
3960
|
"button",
|
|
3952
3961
|
{
|
|
3953
3962
|
onClick: handleCopyCode,
|
|
3954
3963
|
disabled: isLoading || !referralCode,
|
|
3955
3964
|
className: "w-10 h-10 rounded-full bg-white flex items-center justify-center text-neutral-500 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
3956
3965
|
},
|
|
3957
|
-
/* @__PURE__ */ React42.createElement(
|
|
3966
|
+
/* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: Copy01Icon4, size: 18 })
|
|
3958
3967
|
)), /* @__PURE__ */ React42.createElement("div", { className: "flex items-center justify-between text-[13px] text-neutral-500 px-1" }, /* @__PURE__ */ React42.createElement("span", null, "Total Invited: ", /* @__PURE__ */ React42.createElement("span", { className: "text-black " }, isLoading && !totalCount ? "-" : totalCount)))), /* @__PURE__ */ React42.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React42.createElement(PageSpinner5, null) : /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React42.createElement("div", null, referrals.length === 0 ? /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col items-center justify-center py-8 opacity-50" }, /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-neutral-500 text-center" }, "You haven't referred anyone yet.")) : referrals.map((ref, idx) => /* @__PURE__ */ React42.createElement(
|
|
3959
3968
|
"div",
|
|
3960
3969
|
{
|
|
@@ -3977,7 +3986,7 @@ var UniversalReferralPage = ({
|
|
|
3977
3986
|
disabled: currentPage <= 1 || isLoading,
|
|
3978
3987
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
3979
3988
|
},
|
|
3980
|
-
/* @__PURE__ */ React42.createElement(
|
|
3989
|
+
/* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: ArrowLeft01Icon10, size: 14 })
|
|
3981
3990
|
), /* @__PURE__ */ React42.createElement(
|
|
3982
3991
|
"button",
|
|
3983
3992
|
{
|
|
@@ -3985,7 +3994,7 @@ var UniversalReferralPage = ({
|
|
|
3985
3994
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
3986
3995
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
3987
3996
|
},
|
|
3988
|
-
/* @__PURE__ */ React42.createElement(
|
|
3997
|
+
/* @__PURE__ */ React42.createElement(HugeiconsIcon29, { icon: ArrowRight01Icon8, size: 14 })
|
|
3989
3998
|
)))))));
|
|
3990
3999
|
};
|
|
3991
4000
|
|
|
@@ -3993,11 +4002,11 @@ var UniversalReferralPage = ({
|
|
|
3993
4002
|
import React43, { useState as useState29 } from "react";
|
|
3994
4003
|
import Confetti2 from "react-confetti";
|
|
3995
4004
|
import { useWindowSize as useWindowSize2 } from "react-use";
|
|
3996
|
-
import { HugeiconsIcon as
|
|
4005
|
+
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
3997
4006
|
import {
|
|
3998
4007
|
ArrowLeft01Icon as ArrowLeft01Icon11,
|
|
3999
4008
|
CancelCircleIcon as CancelCircleIcon7,
|
|
4000
|
-
Loading03Icon as
|
|
4009
|
+
Loading03Icon as Loading03Icon19
|
|
4001
4010
|
} from "@hugeicons/core-free-icons";
|
|
4002
4011
|
var CheckIcon2 = ({ className = "" }) => /* @__PURE__ */ React43.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React43.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React43.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4003
4012
|
var CrossIcon2 = ({ className = "" }) => /* @__PURE__ */ React43.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React43.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React43.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
@@ -4087,9 +4096,9 @@ var UniversalCardActionPage = ({
|
|
|
4087
4096
|
onClick: onBackHandler,
|
|
4088
4097
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
4089
4098
|
},
|
|
4090
|
-
/* @__PURE__ */ React43.createElement(
|
|
4099
|
+
/* @__PURE__ */ React43.createElement(HugeiconsIcon30, { icon: ArrowLeft01Icon11, size: 16 }),
|
|
4091
4100
|
" Back"
|
|
4092
|
-
)), /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ React43.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ React43.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-400 block mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ React43.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ React43.createElement("p", { className: "text-xs text-neutral-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__ */ React43.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ React43.createElement(
|
|
4101
|
+
)), /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ React43.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ React43.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-400 block mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ React43.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ React43.createElement("p", { className: "text-xs text-neutral-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__ */ React43.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ React43.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 32, className: "animate-spin text-neutral-300" })) : /* @__PURE__ */ React43.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) => {
|
|
4093
4102
|
const isCurrent = tier.tierName === currentTier;
|
|
4094
4103
|
const isCardDisabled = hasPreordered && !isCurrent;
|
|
4095
4104
|
const isHighlighted = hasPreordered && isCurrent;
|
|
@@ -4111,7 +4120,7 @@ var UniversalCardActionPage = ({
|
|
|
4111
4120
|
className: `absolute -top-10 -right-10 w-48 h-48 bg-linear-to-bl ${getTierGlow(tier.tierName)} to-transparent opacity-40 blur-2xl rounded-full pointer-events-none`
|
|
4112
4121
|
}
|
|
4113
4122
|
),
|
|
4114
|
-
isThisCardLoading && /* @__PURE__ */ React43.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ React43.createElement(
|
|
4123
|
+
isThisCardLoading && /* @__PURE__ */ React43.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ React43.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 32, className: "animate-spin text-black" })),
|
|
4115
4124
|
/* @__PURE__ */ React43.createElement("div", { className: "mb-6 relative z-10" }, /* @__PURE__ */ React43.createElement("div", { className: "flex justify-between items-start mb-1" }, /* @__PURE__ */ React43.createElement("span", { className: "text-black text-sm tracking-widest " }, formatTierName(tier.tierName)), isCurrent && !hasPreordered && /* @__PURE__ */ React43.createElement("span", { className: "text-[9px] bg-neutral-100 text-neutral-600 px-2 py-1 rounded-full tracking-wider" }, "Current")), /* @__PURE__ */ React43.createElement("div", { className: "flex items-baseline gap-1 mt-2" }, /* @__PURE__ */ React43.createElement("h3", { className: "text-3xl font-light text-black" }, tier.priceUSD === 0 ? "Free" : `$${tier.priceUSD.toFixed(2)}`), tier.priceUSD > 0 && /* @__PURE__ */ React43.createElement("span", { className: "text-xs text-neutral-500" }, tier.isYearly ? "/ year" : "one-time")), /* @__PURE__ */ React43.createElement("p", { className: "text-[13px] text-neutral-500 mt-3 min-h-12 leading-relaxed" }, tier.description)),
|
|
4116
4125
|
/* @__PURE__ */ React43.createElement("div", { className: "flex flex-col gap-2.5 mb-6 relative z-10" }, /* @__PURE__ */ React43.createElement("div", { className: isPrimaryDisabled ? "opacity-50 pointer-events-none" : "" }, /* @__PURE__ */ React43.createElement(
|
|
4117
4126
|
ThreeDActionButton,
|
|
@@ -4151,7 +4160,7 @@ var UniversalCardActionPage = ({
|
|
|
4151
4160
|
onClick: () => setSelectedTier(null),
|
|
4152
4161
|
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4153
4162
|
},
|
|
4154
|
-
/* @__PURE__ */ React43.createElement(
|
|
4163
|
+
/* @__PURE__ */ React43.createElement(HugeiconsIcon30, { icon: CancelCircleIcon7, size: 18 })
|
|
4155
4164
|
)), /* @__PURE__ */ React43.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 relative z-10" }, /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React43.createElement("p", { className: "text-2xl text-black mb-1" }, selectedTier.priceUSD === 0 ? "Free" : `$${selectedTier.priceUSD.toFixed(2)}`), /* @__PURE__ */ React43.createElement("span", { className: `text-[10px] tracking-widest px-4 py-1.5 rounded-full bg-neutral-100 text-black mt-1` }, formatTierName(selectedTier.tierName), " ", formatTierName(cardType))), /* @__PURE__ */ React43.createElement("div", { className: "grid grid-cols-1 gap-y-6 mb-8 mt-4" }, /* @__PURE__ */ React43.createElement("div", null, /* @__PURE__ */ React43.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Action"), /* @__PURE__ */ React43.createElement("span", { className: "text-[13px] text-black " }, intendedAction === "upgrade" ? `Upgrade to ${formatTierName(selectedTier.tierName)}` : `Pre-order Card`)), intendedAction === "pre_order" && selectedTier.priceUSD > 0 && /* @__PURE__ */ React43.createElement("div", null, /* @__PURE__ */ React43.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Payment Notice"), /* @__PURE__ */ React43.createElement("span", { className: "text-[12px] text-neutral-600 leading-relaxed block" }, "By confirming, $", selectedTier.priceUSD.toFixed(2), " will be securely deducted from your USD asset balance to guarantee your order."))), /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React43.createElement(
|
|
4156
4165
|
ThreeDActionButton,
|
|
4157
4166
|
{
|
|
@@ -4185,7 +4194,7 @@ var UniversalCardActionPage = ({
|
|
|
4185
4194
|
|
|
4186
4195
|
// src/components/PinDialerBottomSheet.tsx
|
|
4187
4196
|
import React44, { useState as useState30, useEffect as useEffect16 } from "react";
|
|
4188
|
-
import { HugeiconsIcon as
|
|
4197
|
+
import { HugeiconsIcon as HugeiconsIcon31 } from "@hugeicons/react";
|
|
4189
4198
|
import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
|
|
4190
4199
|
var PinDialerBottomSheet = ({
|
|
4191
4200
|
isOpen,
|
|
@@ -4221,7 +4230,7 @@ var PinDialerBottomSheet = ({
|
|
|
4221
4230
|
disabled: isVerifying,
|
|
4222
4231
|
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4223
4232
|
},
|
|
4224
|
-
/* @__PURE__ */ React44.createElement(
|
|
4233
|
+
/* @__PURE__ */ React44.createElement(HugeiconsIcon31, { icon: CancelCircleIcon8, size: 20 })
|
|
4225
4234
|
)), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ React44.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React44.createElement(
|
|
4226
4235
|
TextInput,
|
|
4227
4236
|
{
|
|
@@ -4248,7 +4257,7 @@ var PinDialerBottomSheet = ({
|
|
|
4248
4257
|
// src/components/UniversalBuyCryptoPage.tsx
|
|
4249
4258
|
import React45, { useState as useState31, useEffect as useEffect17, useRef as useRef11, useCallback } from "react";
|
|
4250
4259
|
import toast11 from "react-hot-toast";
|
|
4251
|
-
import { HugeiconsIcon as
|
|
4260
|
+
import { HugeiconsIcon as HugeiconsIcon32 } from "@hugeicons/react";
|
|
4252
4261
|
import {
|
|
4253
4262
|
ArrowLeft01Icon as ArrowLeft01Icon12,
|
|
4254
4263
|
CheckmarkCircle02Icon
|
|
@@ -4428,7 +4437,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4428
4437
|
}
|
|
4429
4438
|
};
|
|
4430
4439
|
const isButtonDisabled = isSubmitting || isCalculating || !fiatAmount || !cryptoAmount || !isAddressValid || !currentRateKey;
|
|
4431
|
-
return /* @__PURE__ */ React45.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React45.createElement(ManagedToaster, null), !hideBackButton && /* @__PURE__ */ React45.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React45.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React45.createElement(
|
|
4440
|
+
return /* @__PURE__ */ React45.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React45.createElement(ManagedToaster, null), !hideBackButton && /* @__PURE__ */ React45.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React45.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React45.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon12, size: 16 }), " Back")), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ React45.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Buy Crypto"), /* @__PURE__ */ React45.createElement("p", { className: "text-xs text-neutral-500" }, "Purchase digital assets instantly in your local currency with direct wallet delivery.")), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-6 p-6 sm:p-8 rounded-3xl bg-white w-full " }, /* @__PURE__ */ React45.createElement("div", { className: "relative flex flex-col gap-3" }, /* @__PURE__ */ React45.createElement("div", { className: "border border-neutral-200 rounded-2xl p-4 flex items-center justify-between transition-all focus-within:border-black" }, /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-1 flex-1 pr-3 min-w-0" }, /* @__PURE__ */ React45.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400" }, "You Pay (", fiatCurrency.code, ")"), isCalculating && activeSource === "CRYPTO" ? /* @__PURE__ */ React45.createElement("div", { className: "h-7 w-32 bg-neutral-100 animate-pulse rounded-md mt-1" }) : /* @__PURE__ */ React45.createElement(
|
|
4432
4441
|
"input",
|
|
4433
4442
|
{
|
|
4434
4443
|
type: "text",
|
|
@@ -4505,7 +4514,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4505
4514
|
},
|
|
4506
4515
|
/* @__PURE__ */ React45.createElement(CircularLogo, { src: c.logoUrl, alt: c.name, fallbackText: c.code }),
|
|
4507
4516
|
/* @__PURE__ */ React45.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ React45.createElement("span", { className: "text-xs text-black truncate" }, c.name), /* @__PURE__ */ React45.createElement("span", { className: "text-[11px] text-neutral-400" }, c.code)),
|
|
4508
|
-
isSelected && /* @__PURE__ */ React45.createElement(
|
|
4517
|
+
isSelected && /* @__PURE__ */ React45.createElement(HugeiconsIcon32, { icon: CheckmarkCircle02Icon, size: 16, className: "text-black" })
|
|
4509
4518
|
);
|
|
4510
4519
|
}))))), isNetworkDialogOpen && /* @__PURE__ */ React45.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ React45.createElement("div", { className: "absolute inset-0", onClick: () => setIsNetworkDialogOpen(false) }), /* @__PURE__ */ React45.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__ */ React45.createElement("button", { onClick: () => setIsNetworkDialogOpen(false), className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors outline-none" }, /* @__PURE__ */ React45.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__ */ React45.createElement("path", { d: "M18 6 6 18" }), /* @__PURE__ */ React45.createElement("path", { d: "m6 6 12 12" }))), /* @__PURE__ */ React45.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React45.createElement("div", { className: "mb-6 mt-2" }, /* @__PURE__ */ React45.createElement("h2", { className: "text-xl text-black tracking-tight mb-2" }, "Select Network"), /* @__PURE__ */ React45.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed" }, "Ensure your receiving wallet supports this network.")), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-2 max-h-72 overflow-y-auto custom-scrollbar pr-1" }, selectedCrypto?.networks?.map((net) => {
|
|
4511
4520
|
const isSelected = net.id === selectedNetwork.id;
|
|
@@ -4521,18 +4530,18 @@ var UniversalBuyCryptoPage = ({
|
|
|
4521
4530
|
},
|
|
4522
4531
|
/* @__PURE__ */ React45.createElement(CircularLogo, { src: net.logoUrl || selectedCrypto.logoUrl, alt: net.name, fallbackText: net.symbol }),
|
|
4523
4532
|
/* @__PURE__ */ React45.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ React45.createElement("span", { className: "text-xs text-black truncate" }, net.name), /* @__PURE__ */ React45.createElement("span", { className: "text-[11px] text-neutral-400" }, net.symbol)),
|
|
4524
|
-
isSelected && /* @__PURE__ */ React45.createElement(
|
|
4533
|
+
isSelected && /* @__PURE__ */ React45.createElement(HugeiconsIcon32, { icon: CheckmarkCircle02Icon, size: 16, className: "text-black" })
|
|
4525
4534
|
);
|
|
4526
4535
|
}))))));
|
|
4527
4536
|
};
|
|
4528
4537
|
|
|
4529
4538
|
// src/components/UniversalHuddlesPage.tsx
|
|
4530
4539
|
import React46, { useState as useState32 } from "react";
|
|
4531
|
-
import { HugeiconsIcon as
|
|
4540
|
+
import { HugeiconsIcon as HugeiconsIcon33 } from "@hugeicons/react";
|
|
4532
4541
|
import {
|
|
4533
4542
|
ArrowLeft01Icon as ArrowLeft01Icon13,
|
|
4534
4543
|
ArrowRight01Icon as ArrowRight01Icon9,
|
|
4535
|
-
Loading03Icon as
|
|
4544
|
+
Loading03Icon as Loading03Icon21
|
|
4536
4545
|
} from "@hugeicons/core-free-icons";
|
|
4537
4546
|
var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
4538
4547
|
const [loaded, setLoaded] = useState32(false);
|
|
@@ -4553,7 +4562,7 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
4553
4562
|
return "bg-neutral-200";
|
|
4554
4563
|
}
|
|
4555
4564
|
};
|
|
4556
|
-
return /* @__PURE__ */ React46.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React46.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React46.createElement(
|
|
4565
|
+
return /* @__PURE__ */ React46.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React46.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React46.createElement(HugeiconsIcon33, { icon: Loading03Icon21, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React46.createElement(
|
|
4557
4566
|
"img",
|
|
4558
4567
|
{
|
|
4559
4568
|
src: finalSrc,
|
|
@@ -4564,7 +4573,7 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
4564
4573
|
}
|
|
4565
4574
|
)), /* @__PURE__ */ React46.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4566
4575
|
};
|
|
4567
|
-
var PageSpinner6 = () => /* @__PURE__ */ React46.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React46.createElement(
|
|
4576
|
+
var PageSpinner6 = () => /* @__PURE__ */ React46.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon33, { icon: Loading03Icon21, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4568
4577
|
var UniversalHuddlesPage = ({
|
|
4569
4578
|
headerTitle,
|
|
4570
4579
|
headerDescription,
|
|
@@ -4592,7 +4601,7 @@ var UniversalHuddlesPage = ({
|
|
|
4592
4601
|
},
|
|
4593
4602
|
/* @__PURE__ */ React46.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
|
|
4594
4603
|
/* @__PURE__ */ React46.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React46.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-500 truncate block mt-0.5" }, huddle.timeString)),
|
|
4595
|
-
/* @__PURE__ */ React46.createElement(
|
|
4604
|
+
/* @__PURE__ */ React46.createElement(HugeiconsIcon33, { icon: ArrowRight01Icon9, size: 14, className: "shrink-0 text-neutral-400" })
|
|
4596
4605
|
))), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React46.createElement(
|
|
4597
4606
|
"button",
|
|
4598
4607
|
{
|
|
@@ -4600,7 +4609,7 @@ var UniversalHuddlesPage = ({
|
|
|
4600
4609
|
disabled: currentPage <= 1 || isLoading,
|
|
4601
4610
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4602
4611
|
},
|
|
4603
|
-
/* @__PURE__ */ React46.createElement(
|
|
4612
|
+
/* @__PURE__ */ React46.createElement(HugeiconsIcon33, { icon: ArrowLeft01Icon13, size: 14 })
|
|
4604
4613
|
), /* @__PURE__ */ React46.createElement(
|
|
4605
4614
|
"button",
|
|
4606
4615
|
{
|
|
@@ -4608,18 +4617,18 @@ var UniversalHuddlesPage = ({
|
|
|
4608
4617
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
4609
4618
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4610
4619
|
},
|
|
4611
|
-
/* @__PURE__ */ React46.createElement(
|
|
4620
|
+
/* @__PURE__ */ React46.createElement(HugeiconsIcon33, { icon: ArrowRight01Icon9, size: 14 })
|
|
4612
4621
|
)))))));
|
|
4613
4622
|
};
|
|
4614
4623
|
|
|
4615
4624
|
// src/components/UniversalMembersPage.tsx
|
|
4616
4625
|
import React47, { useState as useState33, useEffect as useEffect18, useRef as useRef12 } from "react";
|
|
4617
|
-
import { HugeiconsIcon as
|
|
4626
|
+
import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
|
|
4618
4627
|
import toast12 from "react-hot-toast";
|
|
4619
4628
|
import {
|
|
4620
4629
|
ArrowLeft01Icon as ArrowLeft01Icon14,
|
|
4621
4630
|
ArrowRight01Icon as ArrowRight01Icon10,
|
|
4622
|
-
Loading03Icon as
|
|
4631
|
+
Loading03Icon as Loading03Icon22,
|
|
4623
4632
|
Search01Icon as Search01Icon3,
|
|
4624
4633
|
SearchList02Icon as SearchList02Icon2,
|
|
4625
4634
|
ListSettingIcon as ListSettingIcon2
|
|
@@ -4643,7 +4652,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4643
4652
|
return "bg-neutral-200";
|
|
4644
4653
|
}
|
|
4645
4654
|
};
|
|
4646
|
-
return /* @__PURE__ */ React47.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React47.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React47.createElement(
|
|
4655
|
+
return /* @__PURE__ */ React47.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React47.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: Loading03Icon22, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React47.createElement(
|
|
4647
4656
|
"img",
|
|
4648
4657
|
{
|
|
4649
4658
|
src: finalSrc,
|
|
@@ -4654,7 +4663,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4654
4663
|
}
|
|
4655
4664
|
)), /* @__PURE__ */ React47.createElement("div", { className: `absolute -bottom-1 -right-1 w-2.5 h-2.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4656
4665
|
};
|
|
4657
|
-
var PageSpinner7 = () => /* @__PURE__ */ React47.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React47.createElement(
|
|
4666
|
+
var PageSpinner7 = () => /* @__PURE__ */ React47.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: Loading03Icon22, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4658
4667
|
var UniversalMembersPage = ({
|
|
4659
4668
|
headerTitle,
|
|
4660
4669
|
headerDescription,
|
|
@@ -4754,7 +4763,7 @@ var UniversalMembersPage = ({
|
|
|
4754
4763
|
onClose: () => setMemberToRemove(null),
|
|
4755
4764
|
onConfirm: handleConfirmRemove
|
|
4756
4765
|
}
|
|
4757
|
-
), !isInviteMode && /* @__PURE__ */ React47.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__ */ React47.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React47.createElement(
|
|
4766
|
+
), !isInviteMode && /* @__PURE__ */ React47.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__ */ React47.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: Search01Icon3, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React47.createElement(
|
|
4758
4767
|
"input",
|
|
4759
4768
|
{
|
|
4760
4769
|
type: "text",
|
|
@@ -4769,14 +4778,14 @@ var UniversalMembersPage = ({
|
|
|
4769
4778
|
onClick: () => setIsStatusModalOpen(true),
|
|
4770
4779
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
4771
4780
|
},
|
|
4772
|
-
/* @__PURE__ */ React47.createElement(
|
|
4781
|
+
/* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: SearchList02Icon2, size: 16 })
|
|
4773
4782
|
), /* @__PURE__ */ React47.createElement(
|
|
4774
4783
|
"button",
|
|
4775
4784
|
{
|
|
4776
4785
|
onClick: () => setIsRoleModalOpen(true),
|
|
4777
4786
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
4778
4787
|
},
|
|
4779
|
-
/* @__PURE__ */ React47.createElement(
|
|
4788
|
+
/* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: ListSettingIcon2, size: 16 })
|
|
4780
4789
|
))), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-row items-start justify-between gap-4" }, /* @__PURE__ */ React47.createElement("div", null, /* @__PURE__ */ React47.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, isInviteMode ? "Add Member" : headerTitle), headerDescription && !isInviteMode && /* @__PURE__ */ React47.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), !isInviteMode && /* @__PURE__ */ React47.createElement(
|
|
4781
4790
|
"button",
|
|
4782
4791
|
{
|
|
@@ -4844,7 +4853,7 @@ var UniversalMembersPage = ({
|
|
|
4844
4853
|
disabled: currentPage <= 1 || isListLoading,
|
|
4845
4854
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4846
4855
|
},
|
|
4847
|
-
/* @__PURE__ */ React47.createElement(
|
|
4856
|
+
/* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: ArrowLeft01Icon14, size: 14 })
|
|
4848
4857
|
), /* @__PURE__ */ React47.createElement(
|
|
4849
4858
|
"button",
|
|
4850
4859
|
{
|
|
@@ -4852,7 +4861,7 @@ var UniversalMembersPage = ({
|
|
|
4852
4861
|
disabled: currentPage >= totalPages || isListLoading || totalPages === 0,
|
|
4853
4862
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4854
4863
|
},
|
|
4855
|
-
/* @__PURE__ */ React47.createElement(
|
|
4864
|
+
/* @__PURE__ */ React47.createElement(HugeiconsIcon34, { icon: ArrowRight01Icon10, size: 14 })
|
|
4856
4865
|
)))))), isStatusModalOpen && /* @__PURE__ */ React47.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsStatusModalOpen(false) }), /* @__PURE__ */ React47.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__ */ React47.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ React47.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Status Filter")), /* @__PURE__ */ React47.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"].map((option) => /* @__PURE__ */ React47.createElement(
|
|
4857
4866
|
"button",
|
|
4858
4867
|
{
|
|
@@ -4881,10 +4890,10 @@ var UniversalMembersPage = ({
|
|
|
4881
4890
|
// src/components/UniversalHome2.tsx
|
|
4882
4891
|
import React48, { useState as useState34 } from "react";
|
|
4883
4892
|
import { useRouter as useRouter3 } from "next/navigation";
|
|
4884
|
-
import { HugeiconsIcon as
|
|
4893
|
+
import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
|
|
4885
4894
|
import toast13 from "react-hot-toast";
|
|
4886
4895
|
import {
|
|
4887
|
-
Loading03Icon as
|
|
4896
|
+
Loading03Icon as Loading03Icon23,
|
|
4888
4897
|
Notification01Icon as Notification01Icon2,
|
|
4889
4898
|
ArrowLeft01Icon as ArrowLeft01Icon15,
|
|
4890
4899
|
ArrowRight01Icon as ArrowRight01Icon11,
|
|
@@ -4898,7 +4907,7 @@ var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
4898
4907
|
const [error, setError] = useState34(false);
|
|
4899
4908
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
4900
4909
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
4901
|
-
return /* @__PURE__ */ React48.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React48.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React48.createElement(
|
|
4910
|
+
return /* @__PURE__ */ React48.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React48.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Loading03Icon23, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React48.createElement(
|
|
4902
4911
|
"img",
|
|
4903
4912
|
{
|
|
4904
4913
|
src: finalSrc,
|
|
@@ -4974,7 +4983,7 @@ var UniversalHome2 = ({
|
|
|
4974
4983
|
onClose: () => setShowLogoutConfirm(false),
|
|
4975
4984
|
onConfirm: confirmLogout
|
|
4976
4985
|
}
|
|
4977
|
-
), /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React48.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => setShowOrgSwitcher(true) }, /* @__PURE__ */ React48.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ React48.createElement(
|
|
4986
|
+
), /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React48.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => setShowOrgSwitcher(true) }, /* @__PURE__ */ React48.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Loading03Icon23, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ React48.createElement(
|
|
4978
4987
|
"img",
|
|
4979
4988
|
{
|
|
4980
4989
|
src: finalAvatarSrc,
|
|
@@ -4988,7 +4997,7 @@ var UniversalHome2 = ({
|
|
|
4988
4997
|
onClick: () => router.push("/app/settings"),
|
|
4989
4998
|
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-neutral-50 transition-colors"
|
|
4990
4999
|
},
|
|
4991
|
-
/* @__PURE__ */ React48.createElement(
|
|
5000
|
+
/* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Settings03Icon, size: 20, className: "text-black" })
|
|
4992
5001
|
), /* @__PURE__ */ React48.createElement(
|
|
4993
5002
|
"button",
|
|
4994
5003
|
{
|
|
@@ -4998,7 +5007,7 @@ var UniversalHome2 = ({
|
|
|
4998
5007
|
},
|
|
4999
5008
|
className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-neutral-50 transition-colors"
|
|
5000
5009
|
},
|
|
5001
|
-
/* @__PURE__ */ React48.createElement(
|
|
5010
|
+
/* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Notification01Icon2, size: 20, className: "text-black" }),
|
|
5002
5011
|
hasUnreadNotifs && /* @__PURE__ */ React48.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
|
|
5003
5012
|
))), /* @__PURE__ */ React48.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React48.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React48.createElement(
|
|
5004
5013
|
"div",
|
|
@@ -5006,7 +5015,7 @@ var UniversalHome2 = ({
|
|
|
5006
5015
|
onClick: createHuddleAction?.onClick,
|
|
5007
5016
|
className: "bg-[#068afe] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
5008
5017
|
},
|
|
5009
|
-
/* @__PURE__ */ React48.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React48.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight" }, "Create", /* @__PURE__ */ React48.createElement("br", null), /* @__PURE__ */ React48.createElement("span", { className: "text-white/70" }, "Huddle")), /* @__PURE__ */ React48.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(
|
|
5018
|
+
/* @__PURE__ */ React48.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React48.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight" }, "Create", /* @__PURE__ */ React48.createElement("br", null), /* @__PURE__ */ React48.createElement("span", { className: "text-white/70" }, "Huddle")), /* @__PURE__ */ React48.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: ArrowUpRight01Icon3, size: 16, className: "text-white" }))),
|
|
5010
5019
|
/* @__PURE__ */ React48.createElement(
|
|
5011
5020
|
"img",
|
|
5012
5021
|
{
|
|
@@ -5021,7 +5030,7 @@ var UniversalHome2 = ({
|
|
|
5021
5030
|
onClick: joinHuddleAction?.onClick,
|
|
5022
5031
|
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"
|
|
5023
5032
|
},
|
|
5024
|
-
/* @__PURE__ */ React48.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React48.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight" }, "Join", /* @__PURE__ */ React48.createElement("br", null), /* @__PURE__ */ React48.createElement("span", { className: "text-black/60" }, "Huddle")), /* @__PURE__ */ React48.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(
|
|
5033
|
+
/* @__PURE__ */ React48.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React48.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight" }, "Join", /* @__PURE__ */ React48.createElement("br", null), /* @__PURE__ */ React48.createElement("span", { className: "text-black/60" }, "Huddle")), /* @__PURE__ */ React48.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: ArrowRight01Icon11, size: 16, className: "text-black" }))),
|
|
5025
5034
|
/* @__PURE__ */ React48.createElement(
|
|
5026
5035
|
"img",
|
|
5027
5036
|
{
|
|
@@ -5035,7 +5044,7 @@ var UniversalHome2 = ({
|
|
|
5035
5044
|
{
|
|
5036
5045
|
...huddlesProps
|
|
5037
5046
|
}
|
|
5038
|
-
)), showOrgSwitcher && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React48.createElement(
|
|
5047
|
+
)), showOrgSwitcher && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: CancelCircleIcon9, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ React48.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ React48.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ React48.createElement(
|
|
5039
5048
|
"button",
|
|
5040
5049
|
{
|
|
5041
5050
|
key: org.id,
|
|
@@ -5057,16 +5066,16 @@ var UniversalHome2 = ({
|
|
|
5057
5066
|
},
|
|
5058
5067
|
className: "w-full py-2.5 flex items-center justify-center gap-2 rounded-full border border-neutral-200 text-neutral-600 hover:bg-neutral-100 transition-colors outline-none text-[12px] tracking-wide"
|
|
5059
5068
|
},
|
|
5060
|
-
/* @__PURE__ */ React48.createElement(
|
|
5069
|
+
/* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Logout01Icon, size: 15 }),
|
|
5061
5070
|
"Log Out"
|
|
5062
|
-
)))), showNotifDialog && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React48.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(
|
|
5071
|
+
)))), showNotifDialog && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React48.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: ArrowLeft01Icon15, size: 14 }), " Back") : /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: CancelCircleIcon9, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Loading03Icon23, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React48.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ React48.createElement("h4", { className: "text-[14px] text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React48.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React48.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && !selectedNotif.meta_json?.completed && /* @__PURE__ */ React48.createElement("div", { className: "mt-8 flex gap-3 pt-6 " }, /* @__PURE__ */ React48.createElement(
|
|
5063
5072
|
"button",
|
|
5064
5073
|
{
|
|
5065
5074
|
onClick: () => handleResolve("ACCEPTED"),
|
|
5066
5075
|
disabled: isResolving,
|
|
5067
5076
|
className: "flex-1 py-2.5 rounded-full bg-black text-white text-[12px] tracking-wide transition-all outline-none hover:bg-neutral-800 flex justify-center items-center disabled:opacity-50"
|
|
5068
5077
|
},
|
|
5069
|
-
isResolving ? /* @__PURE__ */ React48.createElement(
|
|
5078
|
+
isResolving ? /* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: Loading03Icon23, className: "animate-spin", size: 16 }) : "Accept"
|
|
5070
5079
|
), /* @__PURE__ */ React48.createElement(
|
|
5071
5080
|
"button",
|
|
5072
5081
|
{
|
|
@@ -5094,7 +5103,7 @@ var UniversalHome2 = ({
|
|
|
5094
5103
|
onClick: () => onNotificationPageChange?.(notificationPage - 1),
|
|
5095
5104
|
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
5096
5105
|
},
|
|
5097
|
-
/* @__PURE__ */ React48.createElement(
|
|
5106
|
+
/* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: ArrowLeft01Icon15, size: 12 })
|
|
5098
5107
|
), /* @__PURE__ */ React48.createElement(
|
|
5099
5108
|
"button",
|
|
5100
5109
|
{
|
|
@@ -5102,18 +5111,18 @@ var UniversalHome2 = ({
|
|
|
5102
5111
|
onClick: () => onNotificationPageChange?.(notificationPage + 1),
|
|
5103
5112
|
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
5104
5113
|
},
|
|
5105
|
-
/* @__PURE__ */ React48.createElement(
|
|
5114
|
+
/* @__PURE__ */ React48.createElement(HugeiconsIcon35, { icon: ArrowRight01Icon11, size: 12 })
|
|
5106
5115
|
))))));
|
|
5107
5116
|
};
|
|
5108
5117
|
|
|
5109
5118
|
// src/components/UniversalSettings.tsx
|
|
5110
5119
|
import React50, { useState as useState36, useEffect as useEffect19, useRef as useRef13 } from "react";
|
|
5111
5120
|
import toast14 from "react-hot-toast";
|
|
5112
|
-
import { HugeiconsIcon as
|
|
5121
|
+
import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
|
|
5113
5122
|
import {
|
|
5114
5123
|
ArrowLeft01Icon as ArrowLeft01Icon16,
|
|
5115
5124
|
ArrowRight01Icon as ArrowRight01Icon12,
|
|
5116
|
-
Loading03Icon as
|
|
5125
|
+
Loading03Icon as Loading03Icon24,
|
|
5117
5126
|
Search01Icon as Search01Icon5,
|
|
5118
5127
|
SearchList02Icon as SearchList02Icon3,
|
|
5119
5128
|
ListSettingIcon as ListSettingIcon3,
|
|
@@ -5124,7 +5133,7 @@ import {
|
|
|
5124
5133
|
|
|
5125
5134
|
// src/components/ReusableOptions.tsx
|
|
5126
5135
|
import React49, { useState as useState35 } from "react";
|
|
5127
|
-
import { HugeiconsIcon as
|
|
5136
|
+
import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
|
|
5128
5137
|
import { CancelCircleIcon as CancelCircleIcon10, Search01Icon as Search01Icon4 } from "@hugeicons/core-free-icons";
|
|
5129
5138
|
var ReusableOptions = ({
|
|
5130
5139
|
isOpen,
|
|
@@ -5140,7 +5149,7 @@ var ReusableOptions = ({
|
|
|
5140
5149
|
const filteredOptions = options.filter(
|
|
5141
5150
|
(opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
|
|
5142
5151
|
);
|
|
5143
|
-
return /* @__PURE__ */ React49.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React49.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ React49.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__ */ React49.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React49.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, title), /* @__PURE__ */ React49.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React49.createElement(
|
|
5152
|
+
return /* @__PURE__ */ React49.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React49.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ React49.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__ */ React49.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React49.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, title), /* @__PURE__ */ React49.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon36, { icon: CancelCircleIcon10, size: 18 }))), showSearch && /* @__PURE__ */ React49.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React49.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React49.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon36, { icon: Search01Icon4, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React49.createElement(
|
|
5144
5153
|
"input",
|
|
5145
5154
|
{
|
|
5146
5155
|
type: "text",
|
|
@@ -5161,7 +5170,7 @@ var ReusableOptions = ({
|
|
|
5161
5170
|
},
|
|
5162
5171
|
className: `w-full text-left p-4 text-[13px] tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#068afe] bg-[#068afe]/10" : "text-neutral-600 hover:bg-neutral-50/50"}`
|
|
5163
5172
|
},
|
|
5164
|
-
opt
|
|
5173
|
+
opt.charAt(0).toUpperCase() + opt.slice(1).toLowerCase()
|
|
5165
5174
|
);
|
|
5166
5175
|
}))));
|
|
5167
5176
|
};
|
|
@@ -5186,7 +5195,7 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5186
5195
|
return "bg-neutral-200";
|
|
5187
5196
|
}
|
|
5188
5197
|
};
|
|
5189
|
-
return /* @__PURE__ */ React50.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React50.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React50.createElement(
|
|
5198
|
+
return /* @__PURE__ */ React50.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React50.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: Loading03Icon24, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React50.createElement(
|
|
5190
5199
|
"img",
|
|
5191
5200
|
{
|
|
5192
5201
|
src: finalSrc,
|
|
@@ -5197,7 +5206,7 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5197
5206
|
}
|
|
5198
5207
|
)), /* @__PURE__ */ React50.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
5199
5208
|
};
|
|
5200
|
-
var PageSpinner8 = () => /* @__PURE__ */ React50.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React50.createElement(
|
|
5209
|
+
var PageSpinner8 = () => /* @__PURE__ */ React50.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: Loading03Icon24, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
5201
5210
|
var InputSpinner3 = () => /* @__PURE__ */ React50.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React50.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React50.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" }));
|
|
5202
5211
|
var UniversalSettings = ({
|
|
5203
5212
|
accountType,
|
|
@@ -5358,7 +5367,7 @@ var UniversalSettings = ({
|
|
|
5358
5367
|
};
|
|
5359
5368
|
const hasAccountChanges = displayName !== initialDisplayName || slug !== initialSlug;
|
|
5360
5369
|
const isAccountSaveDisabled = isSavingAccount || isAccountReadOnly || isCheckingSlug || !hasAccountChanges || displayName.length < 3 || slug.length < 3 || slug !== initialSlug && slugAvailable === false;
|
|
5361
|
-
return /* @__PURE__ */ React50.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React50.createElement(ManagedToaster, null), /* @__PURE__ */ React50.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React50.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React50.createElement(
|
|
5370
|
+
return /* @__PURE__ */ React50.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React50.createElement(ManagedToaster, null), /* @__PURE__ */ React50.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React50.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon16, size: 16 }), " Back")), /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ React50.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ React50.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-6 mb-6 overflow-x-auto custom-scrollbar px-1" }, accountType === "ORGANIZATION" && /* @__PURE__ */ React50.createElement(
|
|
5362
5371
|
"button",
|
|
5363
5372
|
{
|
|
5364
5373
|
onClick: () => {
|
|
@@ -5396,7 +5405,7 @@ var UniversalSettings = ({
|
|
|
5396
5405
|
onClose: () => setMemberToRemove(null),
|
|
5397
5406
|
onConfirm: handleConfirmRemove
|
|
5398
5407
|
}
|
|
5399
|
-
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ React50.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React50.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React50.createElement(
|
|
5408
|
+
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ React50.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React50.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: Search01Icon5, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React50.createElement(
|
|
5400
5409
|
"input",
|
|
5401
5410
|
{
|
|
5402
5411
|
type: "text",
|
|
@@ -5411,14 +5420,14 @@ var UniversalSettings = ({
|
|
|
5411
5420
|
onClick: () => setIsStatusModalOpen(true),
|
|
5412
5421
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
5413
5422
|
},
|
|
5414
|
-
/* @__PURE__ */ React50.createElement(
|
|
5423
|
+
/* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: SearchList02Icon3, size: 16 })
|
|
5415
5424
|
), /* @__PURE__ */ React50.createElement(
|
|
5416
5425
|
"button",
|
|
5417
5426
|
{
|
|
5418
5427
|
onClick: () => setIsRoleModalOpen(true),
|
|
5419
5428
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
5420
5429
|
},
|
|
5421
|
-
/* @__PURE__ */ React50.createElement(
|
|
5430
|
+
/* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: ListSettingIcon3, size: 16 })
|
|
5422
5431
|
))), /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React50.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React50.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ React50.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React50.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React50.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ React50.createElement(
|
|
5423
5432
|
"button",
|
|
5424
5433
|
{
|
|
@@ -5489,7 +5498,7 @@ var UniversalSettings = ({
|
|
|
5489
5498
|
disabled: membersCurrentPage <= 1 || isMembersLoading,
|
|
5490
5499
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5491
5500
|
},
|
|
5492
|
-
/* @__PURE__ */ React50.createElement(
|
|
5501
|
+
/* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon16, size: 14 })
|
|
5493
5502
|
), /* @__PURE__ */ React50.createElement(
|
|
5494
5503
|
"button",
|
|
5495
5504
|
{
|
|
@@ -5497,7 +5506,7 @@ var UniversalSettings = ({
|
|
|
5497
5506
|
disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0,
|
|
5498
5507
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5499
5508
|
},
|
|
5500
|
-
/* @__PURE__ */ React50.createElement(
|
|
5509
|
+
/* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: ArrowRight01Icon12, size: 14 })
|
|
5501
5510
|
))))))
|
|
5502
5511
|
)), /* @__PURE__ */ React50.createElement(
|
|
5503
5512
|
ReusableOptions,
|
|
@@ -5519,7 +5528,7 @@ var UniversalSettings = ({
|
|
|
5519
5528
|
selectedOption: activeRoleFilter,
|
|
5520
5529
|
onSelect: (role) => onRoleFilterChange(role)
|
|
5521
5530
|
}
|
|
5522
|
-
)), activeTab === "ACCOUNT" && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ React50.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React50.createElement("div", null, /* @__PURE__ */ React50.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ React50.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ React50.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React50.createElement(
|
|
5531
|
+
)), activeTab === "ACCOUNT" && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ React50.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React50.createElement("div", null, /* @__PURE__ */ React50.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ React50.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ React50.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: CircleLock02Icon3, size: 18, className: "text-current" }))), /* @__PURE__ */ React50.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React50.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSaveAccount, autoComplete: "off" }, /* @__PURE__ */ React50.createElement(
|
|
5523
5532
|
TextInput,
|
|
5524
5533
|
{
|
|
5525
5534
|
label: "Display Name",
|
|
@@ -5561,16 +5570,404 @@ var UniversalSettings = ({
|
|
|
5561
5570
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
|
|
5562
5571
|
},
|
|
5563
5572
|
"Cancel"
|
|
5564
|
-
))))), activeTab === "BILLING" && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React50.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-row items-center justify-between w-full mt-2" }, /* @__PURE__ */ React50.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ React50.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ React50.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ React50.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React50.createElement(
|
|
5573
|
+
))))), activeTab === "BILLING" && /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React50.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-row items-center justify-between w-full mt-2" }, /* @__PURE__ */ React50.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ React50.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ React50.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ React50.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: Coins01Icon, size: 24, className: "text-black" }), /* @__PURE__ */ React50.createElement("span", { className: "text-2xl text-black tracking-tight" }, aiCredits))), /* @__PURE__ */ React50.createElement(
|
|
5565
5574
|
"button",
|
|
5566
5575
|
{
|
|
5567
5576
|
onClick: onTopUp,
|
|
5568
5577
|
className: "w-10 h-10 rounded-full border border-neutral-200 flex items-center justify-center text-black hover:bg-neutral-50 transition-colors outline-none shrink-0",
|
|
5569
5578
|
"aria-label": "Top Up Credits"
|
|
5570
5579
|
},
|
|
5571
|
-
/* @__PURE__ */ React50.createElement(
|
|
5580
|
+
/* @__PURE__ */ React50.createElement(HugeiconsIcon37, { icon: PlusSignIcon3, size: 16 })
|
|
5572
5581
|
)), /* @__PURE__ */ React50.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ React50.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
|
|
5573
5582
|
};
|
|
5583
|
+
|
|
5584
|
+
// src/components/UniversalCreateHuddle.tsx
|
|
5585
|
+
import React52, { useState as useState38, useEffect as useEffect21, useRef as useRef14 } from "react";
|
|
5586
|
+
import toast15 from "react-hot-toast";
|
|
5587
|
+
import { HugeiconsIcon as HugeiconsIcon39 } from "@hugeicons/react";
|
|
5588
|
+
import {
|
|
5589
|
+
ArrowLeft01Icon as ArrowLeft01Icon18,
|
|
5590
|
+
ArrowRight01Icon as ArrowRight01Icon14,
|
|
5591
|
+
Loading03Icon as Loading03Icon25,
|
|
5592
|
+
Search01Icon as Search01Icon6,
|
|
5593
|
+
Calendar01Icon,
|
|
5594
|
+
Clock01Icon,
|
|
5595
|
+
Globe02Icon,
|
|
5596
|
+
Tick02Icon
|
|
5597
|
+
} from "@hugeicons/core-free-icons";
|
|
5598
|
+
|
|
5599
|
+
// src/components/CalendarPicker.tsx
|
|
5600
|
+
import React51, { useState as useState37, useEffect as useEffect20 } from "react";
|
|
5601
|
+
import { HugeiconsIcon as HugeiconsIcon38 } from "@hugeicons/react";
|
|
5602
|
+
import {
|
|
5603
|
+
CancelCircleIcon as CancelCircleIcon11,
|
|
5604
|
+
ArrowLeft01Icon as ArrowLeft01Icon17,
|
|
5605
|
+
ArrowRight01Icon as ArrowRight01Icon13,
|
|
5606
|
+
ArrowUp01Icon,
|
|
5607
|
+
ArrowDown01Icon
|
|
5608
|
+
} from "@hugeicons/core-free-icons";
|
|
5609
|
+
var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
5610
|
+
var DAYS_OF_WEEK = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
5611
|
+
var CalendarPicker = ({
|
|
5612
|
+
isOpen,
|
|
5613
|
+
onClose,
|
|
5614
|
+
initialDate,
|
|
5615
|
+
defaultMode,
|
|
5616
|
+
onConfirm
|
|
5617
|
+
}) => {
|
|
5618
|
+
const [mode, setMode] = useState37(defaultMode);
|
|
5619
|
+
const today = /* @__PURE__ */ new Date();
|
|
5620
|
+
today.setHours(0, 0, 0, 0);
|
|
5621
|
+
const maxDate = new Date(today.getFullYear() + 1, 11, 31);
|
|
5622
|
+
maxDate.setHours(23, 59, 59, 999);
|
|
5623
|
+
const [viewMonth, setViewMonth] = useState37(initialDate.getMonth());
|
|
5624
|
+
const [viewYear, setViewYear] = useState37(initialDate.getFullYear());
|
|
5625
|
+
const [selectedDate, setSelectedDate] = useState37(new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate()));
|
|
5626
|
+
const [hour, setHour] = useState37(initialDate.getHours() % 12 || 12);
|
|
5627
|
+
const [minute, setMinute] = useState37(initialDate.getMinutes());
|
|
5628
|
+
const [ampm, setAmpm] = useState37(initialDate.getHours() >= 12 ? "PM" : "AM");
|
|
5629
|
+
useEffect20(() => {
|
|
5630
|
+
if (isOpen) {
|
|
5631
|
+
setMode(defaultMode);
|
|
5632
|
+
setViewMonth(initialDate.getMonth());
|
|
5633
|
+
setViewYear(initialDate.getFullYear());
|
|
5634
|
+
setSelectedDate(new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate()));
|
|
5635
|
+
setHour(initialDate.getHours() % 12 || 12);
|
|
5636
|
+
setMinute(initialDate.getMinutes());
|
|
5637
|
+
setAmpm(initialDate.getHours() >= 12 ? "PM" : "AM");
|
|
5638
|
+
}
|
|
5639
|
+
}, [isOpen, initialDate, defaultMode]);
|
|
5640
|
+
if (!isOpen) return null;
|
|
5641
|
+
const handlePrevMonth = () => {
|
|
5642
|
+
if (viewYear === today.getFullYear() && viewMonth === today.getMonth()) return;
|
|
5643
|
+
if (viewMonth === 0) {
|
|
5644
|
+
setViewMonth(11);
|
|
5645
|
+
setViewYear((y) => y - 1);
|
|
5646
|
+
} else {
|
|
5647
|
+
setViewMonth((m) => m - 1);
|
|
5648
|
+
}
|
|
5649
|
+
};
|
|
5650
|
+
const handleNextMonth = () => {
|
|
5651
|
+
if (viewYear === maxDate.getFullYear() && viewMonth === 11) return;
|
|
5652
|
+
if (viewMonth === 11) {
|
|
5653
|
+
setViewMonth(0);
|
|
5654
|
+
setViewYear((y) => y + 1);
|
|
5655
|
+
} else {
|
|
5656
|
+
setViewMonth((m) => m + 1);
|
|
5657
|
+
}
|
|
5658
|
+
};
|
|
5659
|
+
const isDateDisabled = (year, month, day) => {
|
|
5660
|
+
const d = new Date(year, month, day);
|
|
5661
|
+
return d < today || d > maxDate;
|
|
5662
|
+
};
|
|
5663
|
+
const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();
|
|
5664
|
+
const firstDayOffset = new Date(viewYear, viewMonth, 1).getDay();
|
|
5665
|
+
const adjustTime = (type, dir) => {
|
|
5666
|
+
if (type === "H") {
|
|
5667
|
+
setHour((h) => {
|
|
5668
|
+
let next = h + dir;
|
|
5669
|
+
if (next > 12) return 1;
|
|
5670
|
+
if (next < 1) return 12;
|
|
5671
|
+
return next;
|
|
5672
|
+
});
|
|
5673
|
+
}
|
|
5674
|
+
if (type === "M") {
|
|
5675
|
+
setMinute((m) => {
|
|
5676
|
+
let next = m + dir;
|
|
5677
|
+
if (next > 59) return 0;
|
|
5678
|
+
if (next < 0) return 59;
|
|
5679
|
+
return next;
|
|
5680
|
+
});
|
|
5681
|
+
}
|
|
5682
|
+
if (type === "A") {
|
|
5683
|
+
setAmpm((a) => a === "AM" ? "PM" : "AM");
|
|
5684
|
+
}
|
|
5685
|
+
};
|
|
5686
|
+
const handleSave = () => {
|
|
5687
|
+
const final = new Date(selectedDate);
|
|
5688
|
+
let h24 = hour;
|
|
5689
|
+
if (ampm === "PM" && hour < 12) h24 += 12;
|
|
5690
|
+
if (ampm === "AM" && hour === 12) h24 = 0;
|
|
5691
|
+
final.setHours(h24, minute, 0, 0);
|
|
5692
|
+
onConfirm(final);
|
|
5693
|
+
onClose();
|
|
5694
|
+
};
|
|
5695
|
+
return /* @__PURE__ */ React51.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ React51.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__ */ React51.createElement("div", { className: "p-4 pb-0 flex flex-col gap-4" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between shrink-0" }, /* @__PURE__ */ React51.createElement("h3", { className: "text-[15px] text-black tracking-tight " }, "Select Date & Time"), /* @__PURE__ */ React51.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: CancelCircleIcon11, size: 18 }))), /* @__PURE__ */ React51.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ React51.createElement(
|
|
5696
|
+
"button",
|
|
5697
|
+
{
|
|
5698
|
+
onClick: () => setMode("DATE"),
|
|
5699
|
+
className: `pb-2 text-[12px] tracking-wide outline-none border-b-2 transition-colors ${mode === "DATE" ? "border-[#068afe] text-[#068afe]" : "border-transparent text-neutral-500 hover:text-black"}`
|
|
5700
|
+
},
|
|
5701
|
+
"Date"
|
|
5702
|
+
), /* @__PURE__ */ React51.createElement(
|
|
5703
|
+
"button",
|
|
5704
|
+
{
|
|
5705
|
+
onClick: () => setMode("TIME"),
|
|
5706
|
+
className: `pb-2 text-[12px] tracking-wide outline-none border-b-2 transition-colors ${mode === "TIME" ? "border-[#068afe] text-[#068afe]" : "border-transparent text-neutral-500 hover:text-black"}`
|
|
5707
|
+
},
|
|
5708
|
+
"Time"
|
|
5709
|
+
))), /* @__PURE__ */ React51.createElement("div", { className: "p-5" }, mode === "DATE" && /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col gap-4 animate-in fade-in duration-200" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between px-2" }, /* @__PURE__ */ React51.createElement("span", { className: "text-[13px] text-black" }, MONTHS[viewMonth], " ", viewYear), /* @__PURE__ */ React51.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React51.createElement(
|
|
5710
|
+
"button",
|
|
5711
|
+
{
|
|
5712
|
+
onClick: handlePrevMonth,
|
|
5713
|
+
disabled: viewYear === today.getFullYear() && viewMonth === today.getMonth(),
|
|
5714
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
|
|
5715
|
+
},
|
|
5716
|
+
/* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon17, size: 16, className: "text-black" })
|
|
5717
|
+
), /* @__PURE__ */ React51.createElement(
|
|
5718
|
+
"button",
|
|
5719
|
+
{
|
|
5720
|
+
onClick: handleNextMonth,
|
|
5721
|
+
disabled: viewYear === maxDate.getFullYear() && viewMonth === 11,
|
|
5722
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
|
|
5723
|
+
},
|
|
5724
|
+
/* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowRight01Icon13, size: 16, className: "text-black" })
|
|
5725
|
+
))), /* @__PURE__ */ React51.createElement("div", { className: "grid grid-cols-7 gap-1" }, DAYS_OF_WEEK.map((d) => /* @__PURE__ */ React51.createElement("div", { key: d, className: "text-center text-[10px] text-neutral-400 py-2" }, d)), Array.from({ length: firstDayOffset }).map((_, i) => /* @__PURE__ */ React51.createElement("div", { key: `empty-${i}` })), Array.from({ length: daysInMonth }).map((_, i) => {
|
|
5726
|
+
const day = i + 1;
|
|
5727
|
+
const isDisabled = isDateDisabled(viewYear, viewMonth, day);
|
|
5728
|
+
const isSelected = selectedDate.getFullYear() === viewYear && selectedDate.getMonth() === viewMonth && selectedDate.getDate() === day;
|
|
5729
|
+
return /* @__PURE__ */ React51.createElement(
|
|
5730
|
+
"button",
|
|
5731
|
+
{
|
|
5732
|
+
key: day,
|
|
5733
|
+
disabled: isDisabled,
|
|
5734
|
+
onClick: () => setSelectedDate(new Date(viewYear, viewMonth, day)),
|
|
5735
|
+
className: `h-9 w-9 rounded-full flex items-center justify-center text-[12px] transition-colors outline-none
|
|
5736
|
+
${isDisabled ? "text-neutral-300 cursor-not-allowed" : isSelected ? "bg-[#068afe] text-white" : "text-black hover:bg-neutral-100"}`
|
|
5737
|
+
},
|
|
5738
|
+
day
|
|
5739
|
+
);
|
|
5740
|
+
}))), mode === "TIME" && /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-center gap-6 py-6 animate-in fade-in duration-200" }, /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("H", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ React51.createElement("span", { className: "text-3xl text-black w-12 text-center" }, hour.toString().padStart(2, "0")), /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("H", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowDown01Icon, size: 20, className: "text-neutral-500" }))), /* @__PURE__ */ React51.createElement("span", { className: "text-3xl text-neutral-300 pb-2" }, ":"), /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("M", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ React51.createElement("span", { className: "text-3xl text-black w-12 text-center" }, minute.toString().padStart(2, "0")), /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("M", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowDown01Icon, size: 20, className: "text-neutral-500" }))), /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col items-center gap-4 ml-2" }, /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("A", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ React51.createElement("span", { className: "text-xl text-[#068afe] w-12 text-center" }, ampm), /* @__PURE__ */ React51.createElement("button", { onClick: () => adjustTime("A", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: ArrowDown01Icon, size: 20, className: "text-neutral-500" }))))), /* @__PURE__ */ React51.createElement("div", { className: "p-5 flex justify-end shrink-0" }, /* @__PURE__ */ React51.createElement(
|
|
5741
|
+
"button",
|
|
5742
|
+
{
|
|
5743
|
+
onClick: handleSave,
|
|
5744
|
+
className: "text-[#068afe] hover:text-[#0573d6] transition-colors outline-none text-[13px] tracking-wide"
|
|
5745
|
+
},
|
|
5746
|
+
"Done"
|
|
5747
|
+
))));
|
|
5748
|
+
};
|
|
5749
|
+
|
|
5750
|
+
// src/components/UniversalCreateHuddle.tsx
|
|
5751
|
+
var MemberAvatar3 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
5752
|
+
const [loaded, setLoaded] = useState38(false);
|
|
5753
|
+
const [error, setError] = useState38(false);
|
|
5754
|
+
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5755
|
+
return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Loading03Icon25, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React52.createElement(
|
|
5756
|
+
"img",
|
|
5757
|
+
{
|
|
5758
|
+
src: error || !src ? defaultAvatar : src,
|
|
5759
|
+
alt: "Avatar",
|
|
5760
|
+
className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
|
|
5761
|
+
onLoad: () => setLoaded(true),
|
|
5762
|
+
onError: () => setError(true)
|
|
5763
|
+
}
|
|
5764
|
+
)));
|
|
5765
|
+
};
|
|
5766
|
+
var STANDARD_TIMEZONES = [
|
|
5767
|
+
"UTC",
|
|
5768
|
+
"America/New_York",
|
|
5769
|
+
"America/Chicago",
|
|
5770
|
+
"America/Denver",
|
|
5771
|
+
"America/Los_Angeles",
|
|
5772
|
+
"Europe/London",
|
|
5773
|
+
"Europe/Paris",
|
|
5774
|
+
"Europe/Berlin",
|
|
5775
|
+
"Africa/Lagos",
|
|
5776
|
+
"Africa/Johannesburg",
|
|
5777
|
+
"Asia/Dubai",
|
|
5778
|
+
"Asia/Kolkata",
|
|
5779
|
+
"Asia/Singapore",
|
|
5780
|
+
"Asia/Tokyo",
|
|
5781
|
+
"Australia/Sydney"
|
|
5782
|
+
];
|
|
5783
|
+
var UniversalCreateHuddle = ({
|
|
5784
|
+
onBackHref,
|
|
5785
|
+
members,
|
|
5786
|
+
isMembersLoading,
|
|
5787
|
+
membersCurrentPage,
|
|
5788
|
+
membersTotalPages,
|
|
5789
|
+
onMembersPageChange,
|
|
5790
|
+
membersSearchQuery,
|
|
5791
|
+
onMembersSearchChange,
|
|
5792
|
+
onCreateSubmit
|
|
5793
|
+
}) => {
|
|
5794
|
+
const [huddleDate, setHuddleDate] = useState38(() => {
|
|
5795
|
+
const d = /* @__PURE__ */ new Date();
|
|
5796
|
+
d.setHours(d.getHours() + 1, 0, 0, 0);
|
|
5797
|
+
return d;
|
|
5798
|
+
});
|
|
5799
|
+
const [title, setTitle] = useState38("");
|
|
5800
|
+
const [isPrivate, setIsPrivate] = useState38(false);
|
|
5801
|
+
const [timezone, setTimezone] = useState38("UTC");
|
|
5802
|
+
useEffect21(() => {
|
|
5803
|
+
try {
|
|
5804
|
+
setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
5805
|
+
} catch (e) {
|
|
5806
|
+
}
|
|
5807
|
+
}, []);
|
|
5808
|
+
const [calendarMode, setCalendarMode] = useState38(null);
|
|
5809
|
+
const [showTimezoneModal, setShowTimezoneModal] = useState38(false);
|
|
5810
|
+
const [showMembersModal, setShowMembersModal] = useState38(false);
|
|
5811
|
+
const [selectedParticipants, setSelectedParticipants] = useState38(/* @__PURE__ */ new Set());
|
|
5812
|
+
const [isSubmitting, setIsSubmitting] = useState38(false);
|
|
5813
|
+
const [localSearchQuery, setLocalSearchQuery] = useState38(membersSearchQuery);
|
|
5814
|
+
const [isTyping, setIsTyping] = useState38(false);
|
|
5815
|
+
const typingTimer = useRef14(null);
|
|
5816
|
+
const handleSearchInput = (e) => {
|
|
5817
|
+
const val = e.target.value;
|
|
5818
|
+
setLocalSearchQuery(val);
|
|
5819
|
+
setIsTyping(true);
|
|
5820
|
+
if (typingTimer.current) clearTimeout(typingTimer.current);
|
|
5821
|
+
typingTimer.current = setTimeout(() => {
|
|
5822
|
+
onMembersSearchChange(val);
|
|
5823
|
+
setTimeout(() => setIsTyping(false), 150);
|
|
5824
|
+
}, 600);
|
|
5825
|
+
};
|
|
5826
|
+
const toggleParticipant = (userId) => {
|
|
5827
|
+
const newSet = new Set(selectedParticipants);
|
|
5828
|
+
if (newSet.has(userId)) newSet.delete(userId);
|
|
5829
|
+
else newSet.add(userId);
|
|
5830
|
+
setSelectedParticipants(newSet);
|
|
5831
|
+
};
|
|
5832
|
+
const handleSubmit = async (e) => {
|
|
5833
|
+
e.preventDefault();
|
|
5834
|
+
const cleanTitle = title.trim();
|
|
5835
|
+
if (cleanTitle.length < 2) return toast15.error("Please enter a valid huddle name.");
|
|
5836
|
+
if (isPrivate && selectedParticipants.size === 0) return toast15.error("Private huddles require at least one participant.");
|
|
5837
|
+
setIsSubmitting(true);
|
|
5838
|
+
try {
|
|
5839
|
+
await onCreateSubmit({
|
|
5840
|
+
title: cleanTitle,
|
|
5841
|
+
huddleType: isPrivate ? "PRIVATE" : "PUBLIC",
|
|
5842
|
+
startTime: huddleDate.toISOString(),
|
|
5843
|
+
timezone,
|
|
5844
|
+
participantIds: isPrivate ? Array.from(selectedParticipants) : []
|
|
5845
|
+
});
|
|
5846
|
+
} catch (error) {
|
|
5847
|
+
toast15.error(error.message || "Failed to schedule huddle.");
|
|
5848
|
+
setIsSubmitting(false);
|
|
5849
|
+
}
|
|
5850
|
+
};
|
|
5851
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React52.createElement(ManagedToaster, null), /* @__PURE__ */ React52.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React52.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: ArrowLeft01Icon18, size: 16 }), " Back")), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ React52.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Huddle"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-neutral-500" }, "Schedule a new workspace huddle and manage participant access.")), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, /* @__PURE__ */ React52.createElement(
|
|
5852
|
+
TextInput,
|
|
5853
|
+
{
|
|
5854
|
+
label: "Huddle Subject",
|
|
5855
|
+
value: title,
|
|
5856
|
+
onChange: (val) => setTitle(val.substring(0, 80)),
|
|
5857
|
+
disabled: isSubmitting,
|
|
5858
|
+
placeholder: "e.g. Q4 Engineering Sync",
|
|
5859
|
+
maxLength: 80
|
|
5860
|
+
}
|
|
5861
|
+
), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ React52.createElement(
|
|
5862
|
+
"div",
|
|
5863
|
+
{
|
|
5864
|
+
onClick: () => !isSubmitting && setCalendarMode("DATE"),
|
|
5865
|
+
className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
|
|
5866
|
+
},
|
|
5867
|
+
/* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Calendar01Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
|
|
5868
|
+
/* @__PURE__ */ React52.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))
|
|
5869
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ React52.createElement(
|
|
5870
|
+
"div",
|
|
5871
|
+
{
|
|
5872
|
+
onClick: () => !isSubmitting && setCalendarMode("TIME"),
|
|
5873
|
+
className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
|
|
5874
|
+
},
|
|
5875
|
+
/* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Clock01Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
|
|
5876
|
+
/* @__PURE__ */ React52.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))
|
|
5877
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ React52.createElement(
|
|
5878
|
+
"div",
|
|
5879
|
+
{
|
|
5880
|
+
onClick: () => !isSubmitting && setShowTimezoneModal(true),
|
|
5881
|
+
className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
|
|
5882
|
+
},
|
|
5883
|
+
/* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Globe02Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
|
|
5884
|
+
/* @__PURE__ */ React52.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)
|
|
5885
|
+
))), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between py-2 border-t border-b border-neutral-100 mt-2" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[13px] text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-neutral-500" }, "Only invited members can join.")), /* @__PURE__ */ React52.createElement(
|
|
5886
|
+
"button",
|
|
5887
|
+
{
|
|
5888
|
+
type: "button",
|
|
5889
|
+
onClick: () => setIsPrivate(!isPrivate),
|
|
5890
|
+
disabled: isSubmitting,
|
|
5891
|
+
className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#068afe]" : "bg-neutral-200"}`
|
|
5892
|
+
},
|
|
5893
|
+
/* @__PURE__ */ React52.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"}` })
|
|
5894
|
+
)), isPrivate && /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-neutral-50 p-4 rounded-xl" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[12px] text-black tracking-tight" }, "Participants"), /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-[#068afe] " }, selectedParticipants.size === 0 ? "0 added" : selectedParticipants.size >= 1e3 ? `${(selectedParticipants.size / 1e3).toFixed(1)}k+ added` : `${selectedParticipants.size} added`)), /* @__PURE__ */ React52.createElement(
|
|
5895
|
+
"button",
|
|
5896
|
+
{
|
|
5897
|
+
type: "button",
|
|
5898
|
+
onClick: () => setShowMembersModal(true),
|
|
5899
|
+
disabled: isSubmitting,
|
|
5900
|
+
className: "px-4 py-2 border border-neutral-200 text-black text-[11px] tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent"
|
|
5901
|
+
},
|
|
5902
|
+
"Manage Access"
|
|
5903
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "pt-6" }, /* @__PURE__ */ React52.createElement(
|
|
5904
|
+
ThreeDActionButton,
|
|
5905
|
+
{
|
|
5906
|
+
type: "submit",
|
|
5907
|
+
disabled: isSubmitting || title.trim().length < 2 || isPrivate && selectedParticipants.size === 0,
|
|
5908
|
+
isLoading: isSubmitting,
|
|
5909
|
+
className: "w-full sm:w-auto min-w-40"
|
|
5910
|
+
},
|
|
5911
|
+
"Schedule Huddle"
|
|
5912
|
+
)))), /* @__PURE__ */ React52.createElement(
|
|
5913
|
+
CalendarPicker,
|
|
5914
|
+
{
|
|
5915
|
+
isOpen: calendarMode !== null,
|
|
5916
|
+
onClose: () => setCalendarMode(null),
|
|
5917
|
+
initialDate: huddleDate,
|
|
5918
|
+
defaultMode: calendarMode || "DATE",
|
|
5919
|
+
onConfirm: (d) => setHuddleDate(d)
|
|
5920
|
+
}
|
|
5921
|
+
), /* @__PURE__ */ React52.createElement(
|
|
5922
|
+
ReusableOptions,
|
|
5923
|
+
{
|
|
5924
|
+
isOpen: showTimezoneModal,
|
|
5925
|
+
onClose: () => setShowTimezoneModal(false),
|
|
5926
|
+
title: "Select Timezone",
|
|
5927
|
+
options: STANDARD_TIMEZONES,
|
|
5928
|
+
selectedOption: timezone,
|
|
5929
|
+
onSelect: (tz) => setTimezone(tz),
|
|
5930
|
+
showSearch: true
|
|
5931
|
+
}
|
|
5932
|
+
), showMembersModal && /* @__PURE__ */ React52.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ React52.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__ */ React52.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React52.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Select Participants"), /* @__PURE__ */ React52.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none text-[13px] " }, "Done")), /* @__PURE__ */ React52.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React52.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Search01Icon6, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React52.createElement(
|
|
5933
|
+
"input",
|
|
5934
|
+
{
|
|
5935
|
+
type: "text",
|
|
5936
|
+
placeholder: "Search team...",
|
|
5937
|
+
value: localSearchQuery,
|
|
5938
|
+
onChange: handleSearchInput,
|
|
5939
|
+
className: "w-full pl-10 pr-4 py-2.5 bg-neutral-100 rounded-full text-[13px] text-black placeholder-neutral-400 outline-none focus:bg-neutral-200 transition-colors"
|
|
5940
|
+
}
|
|
5941
|
+
))), /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Loading03Icon25, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ React52.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No members found.") : members.map((member) => {
|
|
5942
|
+
const isChecked = selectedParticipants.has(member.userId);
|
|
5943
|
+
return /* @__PURE__ */ React52.createElement(
|
|
5944
|
+
"div",
|
|
5945
|
+
{
|
|
5946
|
+
key: member.id,
|
|
5947
|
+
onClick: () => toggleParticipant(member.userId),
|
|
5948
|
+
className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-neutral-50 transition-colors select-none"
|
|
5949
|
+
},
|
|
5950
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[13px] text-black truncate" }, member.fullName), /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-neutral-400 capitalize truncate" }, member.role.toLowerCase()))),
|
|
5951
|
+
/* @__PURE__ */ React52.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ React52.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#068afe]" : "border border-neutral-300 bg-white"}` }, isChecked && /* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: Tick02Icon, size: 14, className: "text-white" })))
|
|
5952
|
+
);
|
|
5953
|
+
})), /* @__PURE__ */ React52.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React52.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React52.createElement(
|
|
5954
|
+
"button",
|
|
5955
|
+
{
|
|
5956
|
+
disabled: membersCurrentPage <= 1 || isMembersLoading,
|
|
5957
|
+
onClick: () => onMembersPageChange(membersCurrentPage - 1),
|
|
5958
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
5959
|
+
},
|
|
5960
|
+
/* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: ArrowLeft01Icon18, size: 12 })
|
|
5961
|
+
), /* @__PURE__ */ React52.createElement(
|
|
5962
|
+
"button",
|
|
5963
|
+
{
|
|
5964
|
+
disabled: membersCurrentPage >= membersTotalPages || membersTotalPages === 0 || isMembersLoading,
|
|
5965
|
+
onClick: () => onMembersPageChange(membersCurrentPage + 1),
|
|
5966
|
+
className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
|
|
5967
|
+
},
|
|
5968
|
+
/* @__PURE__ */ React52.createElement(HugeiconsIcon39, { icon: ArrowRight01Icon14, size: 12 })
|
|
5969
|
+
))))));
|
|
5970
|
+
};
|
|
5574
5971
|
export {
|
|
5575
5972
|
AppBento2,
|
|
5576
5973
|
CardInfoDialog,
|
|
@@ -5605,6 +6002,7 @@ export {
|
|
|
5605
6002
|
UniversalBuyCryptoPage,
|
|
5606
6003
|
UniversalCardActionPage,
|
|
5607
6004
|
UniversalCardPage,
|
|
6005
|
+
UniversalCreateHuddle,
|
|
5608
6006
|
UniversalErrorView,
|
|
5609
6007
|
UniversalHome2,
|
|
5610
6008
|
UniversalHomeView,
|