@retinalabsllc/zairusjs 21.1.1 → 21.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -19
- package/dist/index.d.ts +1 -19
- package/dist/index.js +250 -118
- package/dist/index.mjs +215 -83
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3384,26 +3384,110 @@ var ManagedDocument = ({
|
|
|
3384
3384
|
};
|
|
3385
3385
|
|
|
3386
3386
|
// src/components/ManagedContactBlock.tsx
|
|
3387
|
-
import React32, { useState as useState24
|
|
3387
|
+
import React32, { useState as useState24 } from "react";
|
|
3388
3388
|
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3389
|
+
import { Loading03Icon as Loading03Icon14 } from "@hugeicons/core-free-icons";
|
|
3390
|
+
var TextInput2 = ({
|
|
3391
|
+
label,
|
|
3392
|
+
value,
|
|
3393
|
+
onChange,
|
|
3394
|
+
placeholder,
|
|
3395
|
+
maxLength,
|
|
3396
|
+
disabled,
|
|
3397
|
+
readOnly,
|
|
3398
|
+
type = "text",
|
|
3399
|
+
onClick
|
|
3400
|
+
}) => /* @__PURE__ */ React32.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React32.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, label), /* @__PURE__ */ React32.createElement(
|
|
3401
|
+
"input",
|
|
3402
|
+
{
|
|
3403
|
+
type,
|
|
3404
|
+
value,
|
|
3405
|
+
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 100)),
|
|
3406
|
+
placeholder,
|
|
3407
|
+
disabled,
|
|
3408
|
+
readOnly,
|
|
3409
|
+
autoComplete: "off",
|
|
3410
|
+
spellCheck: "false",
|
|
3411
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-[#d97757] disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
3412
|
+
}
|
|
3413
|
+
));
|
|
3414
|
+
var TextAreaInput = ({
|
|
3415
|
+
label,
|
|
3416
|
+
value,
|
|
3417
|
+
onChange,
|
|
3418
|
+
placeholder,
|
|
3419
|
+
maxLength,
|
|
3420
|
+
disabled
|
|
3421
|
+
}) => /* @__PURE__ */ React32.createElement("div", { className: "space-y-2 w-full" }, label && /* @__PURE__ */ React32.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, label), /* @__PURE__ */ React32.createElement(
|
|
3422
|
+
"textarea",
|
|
3423
|
+
{
|
|
3424
|
+
value,
|
|
3425
|
+
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 3e3)),
|
|
3426
|
+
placeholder,
|
|
3427
|
+
disabled,
|
|
3428
|
+
autoComplete: "off",
|
|
3429
|
+
spellCheck: "false",
|
|
3430
|
+
rows: 4,
|
|
3431
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-[#d97757] disabled:opacity-50 resize-none"
|
|
3396
3432
|
}
|
|
3397
|
-
|
|
3398
|
-
|
|
3433
|
+
));
|
|
3434
|
+
var ThreeDActionButton2 = ({
|
|
3435
|
+
type = "button",
|
|
3436
|
+
disabled = false,
|
|
3437
|
+
isLoading = false,
|
|
3438
|
+
children,
|
|
3439
|
+
className = ""
|
|
3440
|
+
}) => {
|
|
3441
|
+
const isInteractionDisabled = disabled || isLoading;
|
|
3442
|
+
return /* @__PURE__ */ React32.createElement(
|
|
3443
|
+
"button",
|
|
3444
|
+
{
|
|
3445
|
+
type,
|
|
3446
|
+
disabled: isInteractionDisabled,
|
|
3447
|
+
className: `
|
|
3448
|
+
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
3449
|
+
bg-[#d97757] text-white text-xs tracking-widest
|
|
3450
|
+
transition-colors duration-150 select-none group outline-none
|
|
3451
|
+
${isInteractionDisabled ? "opacity-50 cursor-not-allowed" : "hover:bg-[#d97757]"}
|
|
3452
|
+
${className}
|
|
3453
|
+
`
|
|
3454
|
+
},
|
|
3455
|
+
/* @__PURE__ */ React32.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 leading-none" }, isLoading ? /* @__PURE__ */ React32.createElement(HugeiconsIcon24, { icon: Loading03Icon14, size: 16, className: "animate-spin text-white" }) : children)
|
|
3456
|
+
);
|
|
3399
3457
|
};
|
|
3400
3458
|
var ManagedContactBlock = ({
|
|
3401
3459
|
tagline,
|
|
3402
3460
|
title,
|
|
3403
3461
|
company,
|
|
3404
|
-
emails,
|
|
3405
3462
|
socials
|
|
3406
3463
|
}) => {
|
|
3464
|
+
const [formData, setFormData] = useState24({ name: "", email: "", title: "", phone: "", message: "" });
|
|
3465
|
+
const [status, setStatus] = useState24("idle");
|
|
3466
|
+
const [responseMessage, setResponseMessage] = useState24("");
|
|
3467
|
+
const handleSubmit = async (e) => {
|
|
3468
|
+
e.preventDefault();
|
|
3469
|
+
setStatus("loading");
|
|
3470
|
+
setResponseMessage("");
|
|
3471
|
+
try {
|
|
3472
|
+
const res = await fetch("/api/contact", {
|
|
3473
|
+
method: "POST",
|
|
3474
|
+
headers: { "Content-Type": "application/json" },
|
|
3475
|
+
body: JSON.stringify(formData)
|
|
3476
|
+
});
|
|
3477
|
+
const data = await res.json();
|
|
3478
|
+
if (res.ok) {
|
|
3479
|
+
setStatus("success");
|
|
3480
|
+
setResponseMessage(data.message || "Message sent successfully!");
|
|
3481
|
+
setFormData({ name: "", email: "", title: "", phone: "", message: "" });
|
|
3482
|
+
} else {
|
|
3483
|
+
setStatus("error");
|
|
3484
|
+
setResponseMessage(data.error || "Failed to send message.");
|
|
3485
|
+
}
|
|
3486
|
+
} catch (error) {
|
|
3487
|
+
setStatus("error");
|
|
3488
|
+
setResponseMessage("An unexpected error occurred. Please try again.");
|
|
3489
|
+
}
|
|
3490
|
+
};
|
|
3407
3491
|
return /* @__PURE__ */ React32.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React32.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React32.createElement(
|
|
3408
3492
|
"div",
|
|
3409
3493
|
{
|
|
@@ -3413,28 +3497,21 @@ var ManagedContactBlock = ({
|
|
|
3413
3497
|
backgroundRepeat: "repeat"
|
|
3414
3498
|
}
|
|
3415
3499
|
}
|
|
3416
|
-
), /* @__PURE__ */ React32.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React32.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React32.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ React32.createElement("h1", { className: "
|
|
3500
|
+
), /* @__PURE__ */ React32.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React32.createElement("div", { className: "relative px-8 md:px-12 py-10 pb-4" }, tagline && /* @__PURE__ */ React32.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-500 text-left block " }, tagline), /* @__PURE__ */ React32.createElement("h1", { className: "text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ React32.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col lg:flex-row gap-16 w-full" }, /* @__PURE__ */ React32.createElement("div", { className: "w-full lg:w-1/3 flex flex-col gap-12" }, company && (company.phone || company.phone2) && /* @__PURE__ */ React32.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React32.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4" }, "Direct Lines"), /* @__PURE__ */ React32.createElement("div", { className: "space-y-3 text-sm text-stone-600 leading-[1.8]" }, company.phone && /* @__PURE__ */ React32.createElement("p", null, /* @__PURE__ */ React32.createElement(
|
|
3417
3501
|
"a",
|
|
3418
3502
|
{
|
|
3419
3503
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
3420
3504
|
className: "transition-colors hover:text-black"
|
|
3421
3505
|
},
|
|
3422
3506
|
company.phone
|
|
3423
|
-
)), company.phone2 && /* @__PURE__ */ React32.createElement("p",
|
|
3507
|
+
)), company.phone2 && /* @__PURE__ */ React32.createElement("p", null, /* @__PURE__ */ React32.createElement(
|
|
3424
3508
|
"a",
|
|
3425
3509
|
{
|
|
3426
3510
|
href: `tel:${company.phone2.replace(/\s+/g, "")}`,
|
|
3427
3511
|
className: "transition-colors hover:text-black"
|
|
3428
3512
|
},
|
|
3429
3513
|
company.phone2
|
|
3430
|
-
)))),
|
|
3431
|
-
SecureEmail,
|
|
3432
|
-
{
|
|
3433
|
-
user: email.user,
|
|
3434
|
-
domain: email.domain,
|
|
3435
|
-
className: "text-stone-600 transition-colors hover:text-black"
|
|
3436
|
-
}
|
|
3437
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */ React32.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React32.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React32.createElement(
|
|
3514
|
+
)))), socials && socials.length > 0 && /* @__PURE__ */ React32.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React32.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-4" }, "Find Us Online"), /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React32.createElement(
|
|
3438
3515
|
"a",
|
|
3439
3516
|
{
|
|
3440
3517
|
key: idx,
|
|
@@ -3445,11 +3522,66 @@ var ManagedContactBlock = ({
|
|
|
3445
3522
|
},
|
|
3446
3523
|
/* @__PURE__ */ React32.createElement(HugeiconsIcon24, { icon: social.icon, size: 18 }),
|
|
3447
3524
|
/* @__PURE__ */ React32.createElement("span", { className: "text-xs" }, social.label)
|
|
3525
|
+
))))), /* @__PURE__ */ React32.createElement("div", { className: "w-full lg:w-2/3" }, /* @__PURE__ */ React32.createElement("p", { className: "text-sm tracking-[0.2em] text-black mb-8" }, "Send a Message"), /* @__PURE__ */ React32.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col md:flex-row gap-6" }, /* @__PURE__ */ React32.createElement(
|
|
3526
|
+
TextInput2,
|
|
3527
|
+
{
|
|
3528
|
+
label: "YOUR NAME",
|
|
3529
|
+
placeholder: "John Doe",
|
|
3530
|
+
value: formData.name,
|
|
3531
|
+
onChange: (val) => setFormData({ ...formData, name: val }),
|
|
3532
|
+
disabled: status === "loading"
|
|
3533
|
+
}
|
|
3534
|
+
), /* @__PURE__ */ React32.createElement(
|
|
3535
|
+
TextInput2,
|
|
3536
|
+
{
|
|
3537
|
+
label: "EMAIL ADDRESS",
|
|
3538
|
+
type: "email",
|
|
3539
|
+
placeholder: "john@example.com",
|
|
3540
|
+
value: formData.email,
|
|
3541
|
+
onChange: (val) => setFormData({ ...formData, email: val }),
|
|
3542
|
+
disabled: status === "loading"
|
|
3543
|
+
}
|
|
3544
|
+
)), /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col md:flex-row gap-6" }, /* @__PURE__ */ React32.createElement(
|
|
3545
|
+
TextInput2,
|
|
3546
|
+
{
|
|
3547
|
+
label: "SUBJECT TITLE",
|
|
3548
|
+
placeholder: "Partnership Inquiry",
|
|
3549
|
+
value: formData.title,
|
|
3550
|
+
onChange: (val) => setFormData({ ...formData, title: val }),
|
|
3551
|
+
disabled: status === "loading"
|
|
3552
|
+
}
|
|
3553
|
+
), /* @__PURE__ */ React32.createElement(
|
|
3554
|
+
TextInput2,
|
|
3555
|
+
{
|
|
3556
|
+
label: "PHONE NUMBER (OPTIONAL)",
|
|
3557
|
+
type: "tel",
|
|
3558
|
+
placeholder: "+1 234 567 8900",
|
|
3559
|
+
value: formData.phone,
|
|
3560
|
+
onChange: (val) => setFormData({ ...formData, phone: val }),
|
|
3561
|
+
disabled: status === "loading"
|
|
3562
|
+
}
|
|
3563
|
+
)), /* @__PURE__ */ React32.createElement(
|
|
3564
|
+
TextAreaInput,
|
|
3565
|
+
{
|
|
3566
|
+
label: "MESSAGE",
|
|
3567
|
+
placeholder: "How can we help you?",
|
|
3568
|
+
value: formData.message,
|
|
3569
|
+
onChange: (val) => setFormData({ ...formData, message: val }),
|
|
3570
|
+
disabled: status === "loading"
|
|
3571
|
+
}
|
|
3572
|
+
), responseMessage && /* @__PURE__ */ React32.createElement("p", { className: `text-sm ${status === "error" ? "text-red-500" : "text-green-600"}` }, responseMessage), /* @__PURE__ */ React32.createElement("div", { className: "pt-4" }, /* @__PURE__ */ React32.createElement(
|
|
3573
|
+
ThreeDActionButton2,
|
|
3574
|
+
{
|
|
3575
|
+
type: "submit",
|
|
3576
|
+
isLoading: status === "loading",
|
|
3577
|
+
disabled: !formData.name || !formData.email || !formData.title || !formData.message
|
|
3578
|
+
},
|
|
3579
|
+
"Submit Message"
|
|
3448
3580
|
)))))))));
|
|
3449
3581
|
};
|
|
3450
3582
|
|
|
3451
3583
|
// src/components/ManagedPricingBlock.tsx
|
|
3452
|
-
import React33, { useState as useState25, useEffect as
|
|
3584
|
+
import React33, { useState as useState25, useEffect as useEffect14, useRef as useRef9 } from "react";
|
|
3453
3585
|
import Link7 from "next/link";
|
|
3454
3586
|
import Image5 from "next/image";
|
|
3455
3587
|
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React33.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__ */ React33.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React33.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
@@ -3463,7 +3595,7 @@ var ManagedPricingBlock = ({
|
|
|
3463
3595
|
const [isAnimating, setIsAnimating] = useState25(false);
|
|
3464
3596
|
const [activeTabIndex, setActiveTabIndex] = useState25(0);
|
|
3465
3597
|
const titleRef = useRef9(null);
|
|
3466
|
-
|
|
3598
|
+
useEffect14(() => {
|
|
3467
3599
|
const observer = new IntersectionObserver(
|
|
3468
3600
|
([entry]) => {
|
|
3469
3601
|
if (entry.isIntersecting) {
|
|
@@ -3678,12 +3810,12 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3678
3810
|
};
|
|
3679
3811
|
|
|
3680
3812
|
// src/components/PortfolioHero.tsx
|
|
3681
|
-
import React37, { useEffect as
|
|
3813
|
+
import React37, { useEffect as useEffect15, useRef as useRef10 } from "react";
|
|
3682
3814
|
import Link8 from "next/link";
|
|
3683
3815
|
import Image8 from "next/image";
|
|
3684
3816
|
var useScrollAnimation = () => {
|
|
3685
3817
|
const elementRef = useRef10(null);
|
|
3686
|
-
|
|
3818
|
+
useEffect15(() => {
|
|
3687
3819
|
const el = elementRef.current;
|
|
3688
3820
|
if (!el) return;
|
|
3689
3821
|
const observer = new IntersectionObserver(
|
|
@@ -3769,7 +3901,7 @@ var PortfolioHero = ({
|
|
|
3769
3901
|
import React38, { useState as useState26 } from "react";
|
|
3770
3902
|
import Image9 from "next/image";
|
|
3771
3903
|
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3772
|
-
import { Loading03Icon as
|
|
3904
|
+
import { Loading03Icon as Loading03Icon15 } from "@hugeicons/core-free-icons";
|
|
3773
3905
|
var GifFeatureCard = ({
|
|
3774
3906
|
gifSrc,
|
|
3775
3907
|
title,
|
|
@@ -3781,7 +3913,7 @@ var GifFeatureCard = ({
|
|
|
3781
3913
|
return /* @__PURE__ */ React38.createElement("div", { className: `relative w-full bg-black overflow-hidden ${className}` }, isLoading && /* @__PURE__ */ React38.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React38.createElement(
|
|
3782
3914
|
HugeiconsIcon26,
|
|
3783
3915
|
{
|
|
3784
|
-
icon:
|
|
3916
|
+
icon: Loading03Icon15,
|
|
3785
3917
|
size: 32,
|
|
3786
3918
|
className: "animate-spin text-white"
|
|
3787
3919
|
}
|
|
@@ -3810,7 +3942,7 @@ var GifFeatureCard = ({
|
|
|
3810
3942
|
};
|
|
3811
3943
|
|
|
3812
3944
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3813
|
-
import React39, { useState as useState27, useEffect as
|
|
3945
|
+
import React39, { useState as useState27, useEffect as useEffect16, useRef as useRef11 } from "react";
|
|
3814
3946
|
import Image10 from "next/image";
|
|
3815
3947
|
var MedicalFeatureStatsBlock = ({
|
|
3816
3948
|
bottomHeadline,
|
|
@@ -3821,7 +3953,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3821
3953
|
}) => {
|
|
3822
3954
|
const [isAnimating, setIsAnimating] = useState27(false);
|
|
3823
3955
|
const titleRef = useRef11(null);
|
|
3824
|
-
|
|
3956
|
+
useEffect16(() => {
|
|
3825
3957
|
const observer = new IntersectionObserver(
|
|
3826
3958
|
([entry]) => {
|
|
3827
3959
|
if (entry.isIntersecting) {
|
|
@@ -3863,10 +3995,10 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3863
3995
|
import React40, { useState as useState28 } from "react";
|
|
3864
3996
|
import Image11 from "next/image";
|
|
3865
3997
|
import { HugeiconsIcon as HugeiconsIcon27 } from "@hugeicons/react";
|
|
3866
|
-
import { Loading03Icon as
|
|
3998
|
+
import { Loading03Icon as Loading03Icon16 } from "@hugeicons/core-free-icons";
|
|
3867
3999
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3868
4000
|
const [isLoading, setIsLoading] = useState28(true);
|
|
3869
|
-
return /* @__PURE__ */ React40.createElement("div", { className: `absolute inset-0 bg-stone-800 ${className}` }, isLoading && /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-stone-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon:
|
|
4001
|
+
return /* @__PURE__ */ React40.createElement("div", { className: `absolute inset-0 bg-stone-800 ${className}` }, isLoading && /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-stone-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon27, { icon: Loading03Icon16, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React40.createElement(
|
|
3870
4002
|
Image11,
|
|
3871
4003
|
{
|
|
3872
4004
|
src,
|
|
@@ -3958,7 +4090,7 @@ var ConsultantShowcase = ({
|
|
|
3958
4090
|
import React41, { useState as useState29 } from "react";
|
|
3959
4091
|
import Image12 from "next/image";
|
|
3960
4092
|
import { HugeiconsIcon as HugeiconsIcon28 } from "@hugeicons/react";
|
|
3961
|
-
import { Loading03Icon as
|
|
4093
|
+
import { Loading03Icon as Loading03Icon17 } from "@hugeicons/core-free-icons";
|
|
3962
4094
|
var ContentGridBlock = ({
|
|
3963
4095
|
header,
|
|
3964
4096
|
leftCard,
|
|
@@ -4039,7 +4171,7 @@ import {
|
|
|
4039
4171
|
CheckmarkCircle01Icon,
|
|
4040
4172
|
Time02Icon,
|
|
4041
4173
|
InformationCircleIcon as InformationCircleIcon2,
|
|
4042
|
-
Loading03Icon as
|
|
4174
|
+
Loading03Icon as Loading03Icon18
|
|
4043
4175
|
} from "@hugeicons/core-free-icons";
|
|
4044
4176
|
var VerificationRow = ({
|
|
4045
4177
|
icon,
|
|
@@ -4094,7 +4226,7 @@ var VerificationRow = ({
|
|
|
4094
4226
|
},
|
|
4095
4227
|
/* @__PURE__ */ React43.createElement("div", { className: "w-9 h-9 rounded-full border border-stone-200 bg-white flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon, size: 16, className: "text-black" })),
|
|
4096
4228
|
/* @__PURE__ */ React43.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React43.createElement("p", { className: "text-sm truncate text-black" }, title), /* @__PURE__ */ React43.createElement("p", { className: `text-xs inline-flex items-center ${bg} rounded-full px-2 py-1 ${statusColor} mt-0.5` }, statusText)),
|
|
4097
|
-
/* @__PURE__ */ React43.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon:
|
|
4229
|
+
/* @__PURE__ */ React43.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: Loading03Icon18, size: 20, className: "animate-spin text-black" }) : /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: StatusIcon, size: 20, className: iconColor }))
|
|
4098
4230
|
);
|
|
4099
4231
|
};
|
|
4100
4232
|
var UniversalVerificationPage = ({
|
|
@@ -4155,19 +4287,19 @@ import { useWindowSize } from "react-use";
|
|
|
4155
4287
|
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
4156
4288
|
import {
|
|
4157
4289
|
GiftIcon,
|
|
4158
|
-
Loading03Icon as
|
|
4290
|
+
Loading03Icon as Loading03Icon19,
|
|
4159
4291
|
ArrowLeft01Icon as ArrowLeft01Icon11
|
|
4160
4292
|
} from "@hugeicons/core-free-icons";
|
|
4161
4293
|
var formatWeb3Name = (name) => {
|
|
4162
4294
|
if (!name) return "";
|
|
4163
4295
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
4164
4296
|
};
|
|
4165
|
-
var PageSpinner4 = () => /* @__PURE__ */ React44.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon:
|
|
4297
|
+
var PageSpinner4 = () => /* @__PURE__ */ React44.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4166
4298
|
var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
4167
4299
|
const [isLoaded, setIsLoaded] = useState30(false);
|
|
4168
4300
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
4169
4301
|
const finalSrc = src || fallbackUrl;
|
|
4170
|
-
return /* @__PURE__ */ React44.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon:
|
|
4302
|
+
return /* @__PURE__ */ React44.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 16, className: "animate-spin text-stone-400 absolute" }), /* @__PURE__ */ React44.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4171
4303
|
};
|
|
4172
4304
|
var UniversalRewardPage = ({
|
|
4173
4305
|
leaderboardToday,
|
|
@@ -4267,10 +4399,10 @@ import { HugeiconsIcon as HugeiconsIcon31 } from "@hugeicons/react";
|
|
|
4267
4399
|
import {
|
|
4268
4400
|
ArrowLeft01Icon as ArrowLeft01Icon12,
|
|
4269
4401
|
ArrowRight01Icon as ArrowRight01Icon9,
|
|
4270
|
-
Loading03Icon as
|
|
4402
|
+
Loading03Icon as Loading03Icon20,
|
|
4271
4403
|
Copy01Icon as Copy01Icon4
|
|
4272
4404
|
} from "@hugeicons/core-free-icons";
|
|
4273
|
-
var PageSpinner5 = () => /* @__PURE__ */ React45.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon:
|
|
4405
|
+
var PageSpinner5 = () => /* @__PURE__ */ React45.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: Loading03Icon20, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4274
4406
|
var formatWeb3Name2 = (name) => {
|
|
4275
4407
|
if (!name) return "";
|
|
4276
4408
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
@@ -4305,7 +4437,7 @@ var UniversalReferralPage = ({
|
|
|
4305
4437
|
const [isLoaded, setIsLoaded] = useState31(false);
|
|
4306
4438
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=e0e0e0&color=000000&size=100&font-size=0.33`;
|
|
4307
4439
|
const finalSrc = src || fallbackUrl;
|
|
4308
|
-
return /* @__PURE__ */ React45.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon:
|
|
4440
|
+
return /* @__PURE__ */ React45.createElement("div", { className: `relative shrink-0 rounded-full bg-stone-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: Loading03Icon20, size: 16, className: "animate-spin text-stone-400 absolute" }), /* @__PURE__ */ React45.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4309
4441
|
};
|
|
4310
4442
|
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), /* @__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-stone-500 hover:text-black transition-colors text-sm outline-none" }, /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: ArrowLeft01Icon12, size: 16 }), " Back")), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-4 mb-6 px-1" }, /* @__PURE__ */ React45.createElement("div", null, /* @__PURE__ */ React45.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Your Referrals"), /* @__PURE__ */ React45.createElement("p", { className: "text-xs text-stone-500" }, "Invite friends and earn rewards when they verify and activate cards.")), /* @__PURE__ */ React45.createElement("div", { className: "bg-[#143731] rounded-3xl p-6 relative overflow-hidden flex flex-col min-h-25 w-full mt-2" }, /* @__PURE__ */ React45.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ React45.createElement("p", { className: "text-xs text-white leading-tight mb-1" }, /* @__PURE__ */ React45.createElement("span", { className: "text-white/60" }, "AFT Balance")), isLoading ? /* @__PURE__ */ React45.createElement("div", { className: "h-8 w-32 bg-white/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React45.createElement("span", { className: "text-lg text-white tracking-tight mt-1" }, referralCoins)))), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-6 p-4 rounded-3xl bg-white w-full" }, /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React45.createElement("div", { className: "border border-stone-200 rounded-xl p-4 flex items-center justify-between" }, /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React45.createElement("span", { className: "text-xs tracking-widest text-stone-400 " }, "Invitation Code"), isLoading && !referralCode ? /* @__PURE__ */ React45.createElement("div", { className: "h-6 w-24 bg-stone-50 animate-pulse rounded mt-1" }) : /* @__PURE__ */ React45.createElement("span", { className: "text-sm text-black tracking-widest" }, referralCode)), /* @__PURE__ */ React45.createElement(
|
|
4311
4443
|
"button",
|
|
@@ -4357,7 +4489,7 @@ import { HugeiconsIcon as HugeiconsIcon32 } from "@hugeicons/react";
|
|
|
4357
4489
|
import {
|
|
4358
4490
|
ArrowLeft01Icon as ArrowLeft01Icon13,
|
|
4359
4491
|
CancelCircleIcon as CancelCircleIcon11,
|
|
4360
|
-
Loading03Icon as
|
|
4492
|
+
Loading03Icon as Loading03Icon21
|
|
4361
4493
|
} from "@hugeicons/core-free-icons";
|
|
4362
4494
|
var CheckIcon2 = ({ className = "" }) => /* @__PURE__ */ React46.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__ */ React46.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React46.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4363
4495
|
var CrossIcon2 = ({ className = "" }) => /* @__PURE__ */ React46.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__ */ React46.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React46.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
@@ -4449,7 +4581,7 @@ var UniversalCardActionPage = ({
|
|
|
4449
4581
|
},
|
|
4450
4582
|
/* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon13, size: 16 }),
|
|
4451
4583
|
" Back"
|
|
4452
|
-
)), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ React46.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ React46.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-400 block mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ React46.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ React46.createElement("p", { className: "text-xs text-stone-500 max-w-lg" }, hasPreordered ? "You have already secured your card. Upgrades are disabled while your order is pending processing." : "Upgrade your tier or secure your card now. Pre-orders guarantee priority processing when the batch goes live.")), isLoadingData ? /* @__PURE__ */ React46.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon:
|
|
4584
|
+
)), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ React46.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ React46.createElement("span", { className: "text-xs tracking-[0.4em] text-stone-400 block mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ React46.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ React46.createElement("p", { className: "text-xs text-stone-500 max-w-lg" }, hasPreordered ? "You have already secured your card. Upgrades are disabled while your order is pending processing." : "Upgrade your tier or secure your card now. Pre-orders guarantee priority processing when the batch goes live.")), isLoadingData ? /* @__PURE__ */ React46.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: Loading03Icon21, size: 32, className: "animate-spin text-stone-300" })) : /* @__PURE__ */ React46.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) => {
|
|
4453
4585
|
const isCurrent = tier.tierName === currentTier;
|
|
4454
4586
|
const isCardDisabled = hasPreordered && !isCurrent;
|
|
4455
4587
|
const isHighlighted = hasPreordered && isCurrent;
|
|
@@ -4471,7 +4603,7 @@ var UniversalCardActionPage = ({
|
|
|
4471
4603
|
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`
|
|
4472
4604
|
}
|
|
4473
4605
|
),
|
|
4474
|
-
isThisCardLoading && /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon:
|
|
4606
|
+
isThisCardLoading && /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: Loading03Icon21, size: 32, className: "animate-spin text-black" })),
|
|
4475
4607
|
/* @__PURE__ */ React46.createElement("div", { className: "mb-6 relative z-10" }, /* @__PURE__ */ React46.createElement("div", { className: "flex justify-between items-start mb-1" }, /* @__PURE__ */ React46.createElement("span", { className: "text-black text-sm tracking-widest " }, formatTierName(tier.tierName)), isCurrent && !hasPreordered && /* @__PURE__ */ React46.createElement("span", { className: "text-xs bg-stone-100 text-stone-600 px-2 py-1 rounded-full tracking-wider" }, "Current")), /* @__PURE__ */ React46.createElement("div", { className: "flex items-baseline gap-1 mt-2" }, /* @__PURE__ */ React46.createElement("h3", { className: "text-3xl font-light text-black" }, tier.priceUSD === 0 ? "Free" : `$${tier.priceUSD.toFixed(2)}`), tier.priceUSD > 0 && /* @__PURE__ */ React46.createElement("span", { className: "text-xs text-stone-500" }, tier.isYearly ? "/ year" : "one-time")), /* @__PURE__ */ React46.createElement("p", { className: "text-sm text-stone-500 mt-3 min-h-12 leading-relaxed" }, tier.description)),
|
|
4476
4608
|
/* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-2.5 mb-6 relative z-10" }, /* @__PURE__ */ React46.createElement("div", { className: isPrimaryDisabled ? "opacity-50 pointer-events-none" : "" }, /* @__PURE__ */ React46.createElement(
|
|
4477
4609
|
ThreeDActionButton,
|
|
@@ -4544,7 +4676,7 @@ var UniversalCardActionPage = ({
|
|
|
4544
4676
|
};
|
|
4545
4677
|
|
|
4546
4678
|
// src/components/PinDialerBottomSheet.tsx
|
|
4547
|
-
import React47, { useState as useState33, useEffect as
|
|
4679
|
+
import React47, { useState as useState33, useEffect as useEffect17 } from "react";
|
|
4548
4680
|
import { HugeiconsIcon as HugeiconsIcon33 } from "@hugeicons/react";
|
|
4549
4681
|
import { CancelCircleIcon as CancelCircleIcon12 } from "@hugeicons/core-free-icons";
|
|
4550
4682
|
var PinDialerBottomSheet = ({
|
|
@@ -4555,7 +4687,7 @@ var PinDialerBottomSheet = ({
|
|
|
4555
4687
|
onComplete
|
|
4556
4688
|
}) => {
|
|
4557
4689
|
const [pin, setPin] = useState33("");
|
|
4558
|
-
|
|
4690
|
+
useEffect17(() => {
|
|
4559
4691
|
setPin("");
|
|
4560
4692
|
}, [isOpen]);
|
|
4561
4693
|
const handleSubmit = (e) => {
|
|
@@ -4606,7 +4738,7 @@ var PinDialerBottomSheet = ({
|
|
|
4606
4738
|
};
|
|
4607
4739
|
|
|
4608
4740
|
// src/components/UniversalBuyCryptoPage.tsx
|
|
4609
|
-
import React48, { useState as useState34, useEffect as
|
|
4741
|
+
import React48, { useState as useState34, useEffect as useEffect18, useRef as useRef12, useCallback } from "react";
|
|
4610
4742
|
import toast11 from "react-hot-toast";
|
|
4611
4743
|
import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
|
|
4612
4744
|
import {
|
|
@@ -4691,7 +4823,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4691
4823
|
const [isNetworkDialogOpen, setIsNetworkDialogOpen] = useState34(false);
|
|
4692
4824
|
const [isSubmitting, setIsSubmitting] = useState34(false);
|
|
4693
4825
|
const debounceTimerRef = useRef12(null);
|
|
4694
|
-
|
|
4826
|
+
useEffect18(() => {
|
|
4695
4827
|
if (selectedCrypto?.networks?.length > 0) {
|
|
4696
4828
|
const exists = selectedCrypto.networks.find((n) => n.id === selectedNetwork.id);
|
|
4697
4829
|
if (!exists) {
|
|
@@ -4699,7 +4831,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4699
4831
|
}
|
|
4700
4832
|
}
|
|
4701
4833
|
}, [selectedCrypto]);
|
|
4702
|
-
|
|
4834
|
+
useEffect18(() => {
|
|
4703
4835
|
if (!recipientAddress.trim()) {
|
|
4704
4836
|
setIsAddressValid(false);
|
|
4705
4837
|
return;
|
|
@@ -4892,7 +5024,7 @@ import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
|
|
|
4892
5024
|
import {
|
|
4893
5025
|
ArrowLeft01Icon as ArrowLeft01Icon15,
|
|
4894
5026
|
ArrowRight01Icon as ArrowRight01Icon10,
|
|
4895
|
-
Loading03Icon as
|
|
5027
|
+
Loading03Icon as Loading03Icon23
|
|
4896
5028
|
} from "@hugeicons/core-free-icons";
|
|
4897
5029
|
var HuddleAvatar = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
|
|
4898
5030
|
const getStatusColor = () => {
|
|
@@ -4920,7 +5052,7 @@ var HuddleAvatar = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
|
|
|
4920
5052
|
}
|
|
4921
5053
|
return /* @__PURE__ */ React49.createElement("div", { className: `relative shrink-0 aspect-square ${sizeClass}` }, /* @__PURE__ */ React49.createElement("div", { className: "w-full h-full aspect-square rounded-lg bg-neutral-50 flex flex-col items-center justify-center overflow-hidden" }, /* @__PURE__ */ React49.createElement("span", { className: "text-[9px] tracking-wider leading-tight", style: { color: "#d97757" } }, month), /* @__PURE__ */ React49.createElement("span", { className: "text-sm text-black leading-tight" }, day)), /* @__PURE__ */ React49.createElement("div", { className: `absolute -bottom-1 -right-1 w-3 h-3 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4922
5054
|
};
|
|
4923
|
-
var PageSpinner6 = () => /* @__PURE__ */ React49.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon:
|
|
5055
|
+
var PageSpinner6 = () => /* @__PURE__ */ React49.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: Loading03Icon23, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4924
5056
|
var UniversalHuddlesPage = ({
|
|
4925
5057
|
headerTitle,
|
|
4926
5058
|
headerDescription,
|
|
@@ -4969,13 +5101,13 @@ var UniversalHuddlesPage = ({
|
|
|
4969
5101
|
};
|
|
4970
5102
|
|
|
4971
5103
|
// src/components/UniversalMembersPage.tsx
|
|
4972
|
-
import React50, { useState as useState35, useEffect as
|
|
5104
|
+
import React50, { useState as useState35, useEffect as useEffect19, useRef as useRef13 } from "react";
|
|
4973
5105
|
import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
|
|
4974
5106
|
import toast12 from "react-hot-toast";
|
|
4975
5107
|
import {
|
|
4976
5108
|
ArrowLeft01Icon as ArrowLeft01Icon16,
|
|
4977
5109
|
ArrowRight01Icon as ArrowRight01Icon11,
|
|
4978
|
-
Loading03Icon as
|
|
5110
|
+
Loading03Icon as Loading03Icon24,
|
|
4979
5111
|
Search01Icon as Search01Icon5,
|
|
4980
5112
|
SearchList02Icon as SearchList02Icon2,
|
|
4981
5113
|
ListSettingIcon as ListSettingIcon2
|
|
@@ -4999,7 +5131,7 @@ var MemberAvatar2 = ({ src, status }) => {
|
|
|
4999
5131
|
return "bg-stone-200";
|
|
5000
5132
|
}
|
|
5001
5133
|
};
|
|
5002
|
-
return /* @__PURE__ */ React50.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React50.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React50.createElement(HugeiconsIcon36, { icon:
|
|
5134
|
+
return /* @__PURE__ */ React50.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React50.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React50.createElement(HugeiconsIcon36, { icon: Loading03Icon24, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React50.createElement(
|
|
5003
5135
|
"img",
|
|
5004
5136
|
{
|
|
5005
5137
|
src: finalSrc,
|
|
@@ -5010,7 +5142,7 @@ var MemberAvatar2 = ({ src, status }) => {
|
|
|
5010
5142
|
}
|
|
5011
5143
|
)), /* @__PURE__ */ React50.createElement("div", { className: `absolute -bottom-1 -right-1 w-2.5 h-2.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
5012
5144
|
};
|
|
5013
|
-
var PageSpinner7 = () => /* @__PURE__ */ React50.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon36, { icon:
|
|
5145
|
+
var PageSpinner7 = () => /* @__PURE__ */ React50.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon36, { icon: Loading03Icon24, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
5014
5146
|
var UniversalMembersPage = ({
|
|
5015
5147
|
headerTitle,
|
|
5016
5148
|
headerDescription,
|
|
@@ -5043,7 +5175,7 @@ var UniversalMembersPage = ({
|
|
|
5043
5175
|
const statusDropdownRef = useRef13(null);
|
|
5044
5176
|
const roleDropdownRef = useRef13(null);
|
|
5045
5177
|
const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
|
|
5046
|
-
|
|
5178
|
+
useEffect19(() => {
|
|
5047
5179
|
function handleClickOutside(event) {
|
|
5048
5180
|
if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) {
|
|
5049
5181
|
setIsStatusModalOpen(false);
|
|
@@ -5055,7 +5187,7 @@ var UniversalMembersPage = ({
|
|
|
5055
5187
|
document.addEventListener("mousedown", handleClickOutside);
|
|
5056
5188
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
5057
5189
|
}, []);
|
|
5058
|
-
|
|
5190
|
+
useEffect19(() => {
|
|
5059
5191
|
setIsTyping(true);
|
|
5060
5192
|
const handler = setTimeout(() => {
|
|
5061
5193
|
onSearchChange(localSearchQuery);
|
|
@@ -5063,7 +5195,7 @@ var UniversalMembersPage = ({
|
|
|
5063
5195
|
}, 600);
|
|
5064
5196
|
return () => clearTimeout(handler);
|
|
5065
5197
|
}, [localSearchQuery, onSearchChange]);
|
|
5066
|
-
|
|
5198
|
+
useEffect19(() => {
|
|
5067
5199
|
if (searchQuery === "" && localSearchQuery !== "") {
|
|
5068
5200
|
setLocalSearchQuery("");
|
|
5069
5201
|
}
|
|
@@ -5240,7 +5372,7 @@ import { useRouter as useRouter3 } from "next/navigation";
|
|
|
5240
5372
|
import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
|
|
5241
5373
|
import toast13 from "react-hot-toast";
|
|
5242
5374
|
import {
|
|
5243
|
-
Loading03Icon as
|
|
5375
|
+
Loading03Icon as Loading03Icon25,
|
|
5244
5376
|
Notification01Icon as Notification01Icon2,
|
|
5245
5377
|
ArrowLeft01Icon as ArrowLeft01Icon17,
|
|
5246
5378
|
ArrowRight01Icon as ArrowRight01Icon12,
|
|
@@ -5254,7 +5386,7 @@ var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
5254
5386
|
const [error, setError] = useState36(false);
|
|
5255
5387
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
5256
5388
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5257
|
-
return /* @__PURE__ */ React51.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React51.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon:
|
|
5389
|
+
return /* @__PURE__ */ React51.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React51.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon25, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React51.createElement(
|
|
5258
5390
|
"img",
|
|
5259
5391
|
{
|
|
5260
5392
|
src: finalSrc,
|
|
@@ -5330,7 +5462,7 @@ var UniversalHome2 = ({
|
|
|
5330
5462
|
onClose: () => setShowLogoutConfirm(false),
|
|
5331
5463
|
onConfirm: confirmLogout
|
|
5332
5464
|
}
|
|
5333
|
-
), /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React51.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => setShowOrgSwitcher(true) }, /* @__PURE__ */ React51.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon:
|
|
5465
|
+
), /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React51.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => setShowOrgSwitcher(true) }, /* @__PURE__ */ React51.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon25, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ React51.createElement(
|
|
5334
5466
|
"img",
|
|
5335
5467
|
{
|
|
5336
5468
|
src: finalAvatarSrc,
|
|
@@ -5415,14 +5547,14 @@ var UniversalHome2 = ({
|
|
|
5415
5547
|
},
|
|
5416
5548
|
/* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Logout01Icon, size: 15 }),
|
|
5417
5549
|
"Log Out"
|
|
5418
|
-
)))), showNotifDialog && /* @__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/30", onClick: () => setShowNotifDialog(false) }), /* @__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 max-h-[80vh] h-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React51.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon17, size: 14 }), " Back") : /* @__PURE__ */ React51.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React51.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: CancelCircleIcon13, size: 18 }))), /* @__PURE__ */ React51.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon:
|
|
5550
|
+
)))), showNotifDialog && /* @__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/30", onClick: () => setShowNotifDialog(false) }), /* @__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 max-h-[80vh] h-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React51.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon17, size: 14 }), " Back") : /* @__PURE__ */ React51.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React51.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: CancelCircleIcon13, size: 18 }))), /* @__PURE__ */ React51.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon25, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React51.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ React51.createElement("div", { className: "" }) : /* @__PURE__ */ React51.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React51.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React51.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ React51.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ React51.createElement(
|
|
5419
5551
|
"button",
|
|
5420
5552
|
{
|
|
5421
5553
|
onClick: () => handleResolve("ACCEPTED"),
|
|
5422
5554
|
disabled: isResolving || selectedNotif.meta_json?.completed,
|
|
5423
5555
|
className: "flex-1 py-2.5 rounded-full bg-black text-white text-xs tracking-wide transition-all outline-none hover:bg-stone-800 flex justify-center items-center disabled:opacity-50"
|
|
5424
5556
|
},
|
|
5425
|
-
isResolving ? /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon:
|
|
5557
|
+
isResolving ? /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon25, className: "animate-spin", size: 16 }) : "Accept"
|
|
5426
5558
|
), /* @__PURE__ */ React51.createElement(
|
|
5427
5559
|
"button",
|
|
5428
5560
|
{
|
|
@@ -5463,13 +5595,13 @@ var UniversalHome2 = ({
|
|
|
5463
5595
|
};
|
|
5464
5596
|
|
|
5465
5597
|
// src/components/UniversalSettings.tsx
|
|
5466
|
-
import React52, { useState as useState37, useEffect as
|
|
5598
|
+
import React52, { useState as useState37, useEffect as useEffect20, useRef as useRef14 } from "react";
|
|
5467
5599
|
import toast14 from "react-hot-toast";
|
|
5468
5600
|
import { HugeiconsIcon as HugeiconsIcon38 } from "@hugeicons/react";
|
|
5469
5601
|
import {
|
|
5470
5602
|
ArrowLeft01Icon as ArrowLeft01Icon18,
|
|
5471
5603
|
ArrowRight01Icon as ArrowRight01Icon13,
|
|
5472
|
-
Loading03Icon as
|
|
5604
|
+
Loading03Icon as Loading03Icon26,
|
|
5473
5605
|
Search01Icon as Search01Icon6,
|
|
5474
5606
|
SearchList02Icon as SearchList02Icon3,
|
|
5475
5607
|
ListSettingIcon as ListSettingIcon3,
|
|
@@ -5497,14 +5629,14 @@ var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5497
5629
|
return "bg-stone-200";
|
|
5498
5630
|
}
|
|
5499
5631
|
};
|
|
5500
|
-
return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5632
|
+
return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React52.createElement("img", { src: finalSrc, alt: "Member", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })), /* @__PURE__ */ React52.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
5501
5633
|
};
|
|
5502
5634
|
var OrgAvatar2 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
5503
5635
|
const [loaded, setLoaded] = useState37(false);
|
|
5504
5636
|
const [error, setError] = useState37(false);
|
|
5505
5637
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
5506
5638
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5507
|
-
return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5639
|
+
return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React52.createElement(
|
|
5508
5640
|
"img",
|
|
5509
5641
|
{
|
|
5510
5642
|
src: finalSrc,
|
|
@@ -5515,7 +5647,7 @@ var OrgAvatar2 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
5515
5647
|
}
|
|
5516
5648
|
)));
|
|
5517
5649
|
};
|
|
5518
|
-
var PageSpinner8 = () => /* @__PURE__ */ React52.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5650
|
+
var PageSpinner8 = () => /* @__PURE__ */ React52.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
5519
5651
|
var InputSpinner3 = () => /* @__PURE__ */ React52.createElement("svg", { className: "animate-spin h-4 w-4 text-stone-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React52.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React52.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" }));
|
|
5520
5652
|
var UniversalSettings = ({
|
|
5521
5653
|
accountType,
|
|
@@ -5593,7 +5725,7 @@ var UniversalSettings = ({
|
|
|
5593
5725
|
const [pendingUserAvatar, setPendingUserAvatar] = useState37(null);
|
|
5594
5726
|
const [isUploadingOrgAvatar, setIsUploadingOrgAvatar] = useState37(false);
|
|
5595
5727
|
const [isUploadingUserAvatar, setIsUploadingUserAvatar] = useState37(false);
|
|
5596
|
-
|
|
5728
|
+
useEffect20(() => {
|
|
5597
5729
|
setOrgName(initialOrgName || "");
|
|
5598
5730
|
setOrgSlug(initialOrgSlug || "");
|
|
5599
5731
|
setOrgAvatarUrl(initialOrgAvatarUrl || "");
|
|
@@ -5628,7 +5760,7 @@ var UniversalSettings = ({
|
|
|
5628
5760
|
}
|
|
5629
5761
|
e.target.value = "";
|
|
5630
5762
|
};
|
|
5631
|
-
|
|
5763
|
+
useEffect20(() => {
|
|
5632
5764
|
if (activeTab !== "MEMBERS") return;
|
|
5633
5765
|
if (isFirstSearchMount.current) {
|
|
5634
5766
|
isFirstSearchMount.current = false;
|
|
@@ -5685,7 +5817,7 @@ var UniversalSettings = ({
|
|
|
5685
5817
|
}
|
|
5686
5818
|
};
|
|
5687
5819
|
const activeExpandedMember = expandedId ? members.find((m) => m.id === expandedId) : null;
|
|
5688
|
-
|
|
5820
|
+
useEffect20(() => {
|
|
5689
5821
|
if (!isOrg || !orgSlug || orgSlug === initialOrgSlug) {
|
|
5690
5822
|
setSlugAvailable(null);
|
|
5691
5823
|
setIsCheckingSlug(false);
|
|
@@ -5809,7 +5941,7 @@ var UniversalSettings = ({
|
|
|
5809
5941
|
},
|
|
5810
5942
|
/* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 16 }),
|
|
5811
5943
|
" Back"
|
|
5812
|
-
)), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React52.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-500 capitalize" }, activeExpandedMember.role.toLowerCase()), canManage && (isUpdatingRole ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5944
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React52.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-500 capitalize" }, activeExpandedMember.role.toLowerCase()), canManage && (isUpdatingRole ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, size: 12, className: "animate-spin text-stone-400 ml-1" }) : /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("span", { className: "text-stone-300 text-xs px-0.5" }, "\u2022"), /* @__PURE__ */ React52.createElement("button", { onClick: () => setRoleEditTarget(activeExpandedMember), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"), /* @__PURE__ */ React52.createElement("span", { className: "text-stone-300 text-xs px-0.5" }, "\u2022"), /* @__PURE__ */ React52.createElement(
|
|
5813
5945
|
"button",
|
|
5814
5946
|
{
|
|
5815
5947
|
onClick: () => setMemberToRemove(activeExpandedMember),
|
|
@@ -5820,12 +5952,12 @@ var UniversalSettings = ({
|
|
|
5820
5952
|
))))))) : /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ React52.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ React52.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
|
|
5821
5953
|
setIsInviteMode(false);
|
|
5822
5954
|
setInviteEmail("");
|
|
5823
|
-
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ React52.createElement(PageSpinner8, null) : /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", null, members.length === 0 ? /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ React52.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ React52.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 14 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowRight01Icon13, size: 14 })))))))), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isStatusModalOpen, onClose: () => setIsStatusModalOpen(false), title: "Status Filter", options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"], selectedOption: activeStatusFilter, onSelect: (status) => onStatusFilterChange(status) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isRoleModalOpen, onClose: () => setIsRoleModalOpen(false), title: "Role Filter", options: ["ALL", "OWNER", "ADMIN", "MANAGER", "MEMBER", "GUEST"], selectedOption: activeRoleFilter, onSelect: (role) => onRoleFilterChange(role) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__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("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(OrgAvatar2, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5955
|
+
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ React52.createElement(PageSpinner8, null) : /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", null, members.length === 0 ? /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ React52.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ React52.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 14 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowRight01Icon13, size: 14 })))))))), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isStatusModalOpen, onClose: () => setIsStatusModalOpen(false), title: "Status Filter", options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"], selectedOption: activeStatusFilter, onSelect: (status) => onStatusFilterChange(status) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isRoleModalOpen, onClose: () => setIsRoleModalOpen(false), title: "Role Filter", options: ["ALL", "OWNER", "ADMIN", "MANAGER", "MEMBER", "GUEST"], selectedOption: activeRoleFilter, onSelect: (role) => onRoleFilterChange(role) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__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("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(OrgAvatar2, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, size: 12, className: "animate-spin" }) : /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: CloudUploadIcon, size: 14 })), /* @__PURE__ */ React52.createElement("input", { type: "file", ref: orgFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "ORGANIZATION") })), /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles."))), !canManage && /* @__PURE__ */ React52.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: CircleLock02Icon3, size: 18, className: "text-current" }))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ React52.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React52.createElement(InputSpinner3, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ React52.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
|
|
5824
5956
|
setOrgName(initialOrgName || "");
|
|
5825
5957
|
setOrgSlug(initialOrgSlug || "");
|
|
5826
5958
|
setOrgAvatarUrl(initialOrgAvatarUrl || "");
|
|
5827
5959
|
setPendingOrgAvatar(null);
|
|
5828
|
-
}, className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none" }, "Cancel")))), activeTab === "ACCOUNT" && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 rounded-2xl p-6 bg-white w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => !isSavingProfile ? userFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: avatarUrl, status: "ACTIVE", sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-20" }, isUploadingUserAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon:
|
|
5960
|
+
}, className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none" }, "Cancel")))), activeTab === "ACCOUNT" && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 rounded-2xl p-6 bg-white w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => !isSavingProfile ? userFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: avatarUrl, status: "ACTIVE", sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-20" }, isUploadingUserAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon26, size: 12, className: "animate-spin" }) : /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: CloudUploadIcon, size: 14 })), /* @__PURE__ */ React52.createElement("input", { type: "file", ref: userFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "USER") })), /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Personal Identity"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Update your system display name and contact email.")))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-6 w-full max-w-5xl", onSubmit: handleSaveProfile, autoComplete: "off" }, /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "First Name", value: firstName, onChange: (v) => setFirstName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "First name", maxLength: 50 }), /* @__PURE__ */ React52.createElement(TextInput, { label: "Last Name", value: lastName, onChange: (v) => setLastName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "Last name", maxLength: 50 })), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "Job Title", value: jobTitle, onChange: (v) => setJobTitle(v.substring(0, 50)), disabled: isSavingProfile, placeholder: "e.g. HR Manager, CEO", maxLength: 50 }), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: initialEmail, disabled: true, className: "w-full pb-3 pt-3 text-sm bg-transparent text-stone-400 border-b border-stone-200 outline-none cursor-not-allowed" }))), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "About Me"), /* @__PURE__ */ React52.createElement(
|
|
5829
5961
|
"textarea",
|
|
5830
5962
|
{
|
|
5831
5963
|
value: description,
|
|
@@ -5839,13 +5971,13 @@ var UniversalSettings = ({
|
|
|
5839
5971
|
};
|
|
5840
5972
|
|
|
5841
5973
|
// src/components/UniversalCreateHuddle.tsx
|
|
5842
|
-
import React53, { useState as useState38, useEffect as
|
|
5974
|
+
import React53, { useState as useState38, useEffect as useEffect21, useRef as useRef15 } from "react";
|
|
5843
5975
|
import toast15 from "react-hot-toast";
|
|
5844
5976
|
import { HugeiconsIcon as HugeiconsIcon39 } from "@hugeicons/react";
|
|
5845
5977
|
import {
|
|
5846
5978
|
ArrowLeft01Icon as ArrowLeft01Icon19,
|
|
5847
5979
|
ArrowRight01Icon as ArrowRight01Icon14,
|
|
5848
|
-
Loading03Icon as
|
|
5980
|
+
Loading03Icon as Loading03Icon27,
|
|
5849
5981
|
Search01Icon as Search01Icon7,
|
|
5850
5982
|
Calendar01Icon as Calendar01Icon2,
|
|
5851
5983
|
Clock01Icon as Clock01Icon2,
|
|
@@ -5857,7 +5989,7 @@ var MemberAvatar4 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
|
5857
5989
|
const [loaded, setLoaded] = useState38(false);
|
|
5858
5990
|
const [error, setError] = useState38(false);
|
|
5859
5991
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5860
|
-
return /* @__PURE__ */ React53.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React53.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon:
|
|
5992
|
+
return /* @__PURE__ */ React53.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React53.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon: Loading03Icon27, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React53.createElement(
|
|
5861
5993
|
"img",
|
|
5862
5994
|
{
|
|
5863
5995
|
src: error || !src ? defaultAvatar : src,
|
|
@@ -5906,7 +6038,7 @@ var UniversalCreateHuddle = ({
|
|
|
5906
6038
|
const [title, setTitle] = useState38("");
|
|
5907
6039
|
const [isPrivate, setIsPrivate] = useState38(false);
|
|
5908
6040
|
const [timezone, setTimezone] = useState38("UTC");
|
|
5909
|
-
|
|
6041
|
+
useEffect21(() => {
|
|
5910
6042
|
try {
|
|
5911
6043
|
setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
5912
6044
|
} catch (e) {
|
|
@@ -6047,7 +6179,7 @@ var UniversalCreateHuddle = ({
|
|
|
6047
6179
|
onChange: handleSearchInput,
|
|
6048
6180
|
className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors"
|
|
6049
6181
|
}
|
|
6050
|
-
))), /* @__PURE__ */ React53.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon:
|
|
6182
|
+
))), /* @__PURE__ */ React53.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon: Loading03Icon27, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ React53.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
|
|
6051
6183
|
const isChecked = selectedParticipants.has(member.userId);
|
|
6052
6184
|
return /* @__PURE__ */ React53.createElement(
|
|
6053
6185
|
"div",
|
|
@@ -6079,13 +6211,13 @@ var UniversalCreateHuddle = ({
|
|
|
6079
6211
|
};
|
|
6080
6212
|
|
|
6081
6213
|
// src/components/HomeHuddleCalendar.tsx
|
|
6082
|
-
import React54, { useState as useState39, useRef as useRef16, useEffect as
|
|
6214
|
+
import React54, { useState as useState39, useRef as useRef16, useEffect as useEffect22 } from "react";
|
|
6083
6215
|
import { useRouter as useRouter4 } from "next/navigation";
|
|
6084
6216
|
import { HugeiconsIcon as HugeiconsIcon40 } from "@hugeicons/react";
|
|
6085
6217
|
import {
|
|
6086
6218
|
ArrowLeft01Icon as ArrowLeft01Icon20,
|
|
6087
6219
|
ArrowRight01Icon as ArrowRight01Icon15,
|
|
6088
|
-
Loading03Icon as
|
|
6220
|
+
Loading03Icon as Loading03Icon28,
|
|
6089
6221
|
Search01Icon as Search01Icon8,
|
|
6090
6222
|
TimeScheduleIcon
|
|
6091
6223
|
} from "@hugeicons/core-free-icons";
|
|
@@ -6133,7 +6265,7 @@ var HomeHuddleCalendar = ({
|
|
|
6133
6265
|
const [isStatusModalOpen, setIsStatusModalOpen] = useState39(false);
|
|
6134
6266
|
const typingTimer = useRef16(null);
|
|
6135
6267
|
const isSearching = localSearch.trim().length > 0;
|
|
6136
|
-
|
|
6268
|
+
useEffect22(() => {
|
|
6137
6269
|
setLocalSearch(searchQuery);
|
|
6138
6270
|
}, [searchQuery]);
|
|
6139
6271
|
const handleSearchInput = (e) => {
|
|
@@ -6192,7 +6324,7 @@ var HomeHuddleCalendar = ({
|
|
|
6192
6324
|
onChange: handleSearchInput,
|
|
6193
6325
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent hover:border-stone-200"
|
|
6194
6326
|
}
|
|
6195
|
-
)), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React54.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none " }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: TimeScheduleIcon, size: 16 }))))), !isSearching && /* @__PURE__ */ React54.createElement("div", { className: "bg-white rounded-2xl p-5 mb-6 relative overflow-hidden animate-in fade-in duration-300" }, isLoading && /* @__PURE__ */ React54.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/60 backdrop-blur-sm" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon:
|
|
6327
|
+
)), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React54.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none " }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: TimeScheduleIcon, size: 16 }))))), !isSearching && /* @__PURE__ */ React54.createElement("div", { className: "bg-white rounded-2xl p-5 mb-6 relative overflow-hidden animate-in fade-in duration-300" }, isLoading && /* @__PURE__ */ React54.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/60 backdrop-blur-sm" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Loading03Icon28, size: 28, className: "animate-spin text-black" })), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between px-2 mb-4" }, /* @__PURE__ */ React54.createElement("span", { className: "text-sm text-black tracking-wide" }, MONTHS2[viewMonth], " ", viewYear), /* @__PURE__ */ React54.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React54.createElement(
|
|
6196
6328
|
"button",
|
|
6197
6329
|
{
|
|
6198
6330
|
onClick: handlePrevMonth,
|
|
@@ -6228,7 +6360,7 @@ var HomeHuddleCalendar = ({
|
|
|
6228
6360
|
dayEventsCount
|
|
6229
6361
|
)
|
|
6230
6362
|
));
|
|
6231
|
-
}))), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col gap-4 bg-white rounded-2xl p-6 relative min-h-37.5" }, /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between pb-4" }, /* @__PURE__ */ React54.createElement("h3", { className: "text-sm text-black " }, isSearching ? "Search Results" : `Events for ${selectedDate.toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric" })}`), /* @__PURE__ */ React54.createElement("span", { className: "text-[10px] uppercase tracking-widest text-stone-400 " }, displayedEvents.length, " ", displayedEvents.length === 1 ? "Session" : "Sessions")), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col min-w-0 pt-2" }, isLoading ? /* @__PURE__ */ React54.createElement("div", { className: "py-8 flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon:
|
|
6363
|
+
}))), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col gap-4 bg-white rounded-2xl p-6 relative min-h-37.5" }, /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between pb-4" }, /* @__PURE__ */ React54.createElement("h3", { className: "text-sm text-black " }, isSearching ? "Search Results" : `Events for ${selectedDate.toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric" })}`), /* @__PURE__ */ React54.createElement("span", { className: "text-[10px] uppercase tracking-widest text-stone-400 " }, displayedEvents.length, " ", displayedEvents.length === 1 ? "Session" : "Sessions")), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col min-w-0 pt-2" }, isLoading ? /* @__PURE__ */ React54.createElement("div", { className: "py-8 flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Loading03Icon28, size: 28, className: "animate-spin text-stone-400" })) : displayedEvents.length === 0 ? /* @__PURE__ */ React54.createElement("div", { className: "py-8 flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React54.createElement("p", { className: "text-xs text-stone-400" }, isSearching ? "No sessions found for this search." : "No sessions scheduled for this date.")) : displayedEvents.map((huddle) => /* @__PURE__ */ React54.createElement(
|
|
6232
6364
|
"div",
|
|
6233
6365
|
{
|
|
6234
6366
|
key: huddle.id,
|