@retinalabsllc/zairusjs 16.3.5 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +42 -12
- package/dist/index.mjs +195 -165
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2883,33 +2883,63 @@ var HeroSection = ({
|
|
|
2883
2883
|
var import_react46 = __toESM(require("react"));
|
|
2884
2884
|
var import_react47 = require("@hugeicons/react");
|
|
2885
2885
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2886
|
+
const [isAnimating, setIsAnimating] = (0, import_react46.useState)(false);
|
|
2887
|
+
const titleRef = (0, import_react46.useRef)(null);
|
|
2888
|
+
(0, import_react46.useEffect)(() => {
|
|
2889
|
+
const observer = new IntersectionObserver(
|
|
2890
|
+
([entry]) => {
|
|
2891
|
+
if (entry.isIntersecting) {
|
|
2892
|
+
if (entry.boundingClientRect.top > 0) {
|
|
2893
|
+
setIsAnimating(true);
|
|
2894
|
+
}
|
|
2895
|
+
} else {
|
|
2896
|
+
setIsAnimating(false);
|
|
2897
|
+
}
|
|
2898
|
+
},
|
|
2899
|
+
{ threshold: 0.1 }
|
|
2900
|
+
);
|
|
2901
|
+
if (titleRef.current) {
|
|
2902
|
+
observer.observe(titleRef.current);
|
|
2903
|
+
}
|
|
2904
|
+
return () => observer.disconnect();
|
|
2905
|
+
}, []);
|
|
2886
2906
|
return /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react46.default.createElement(
|
|
2887
2907
|
"h2",
|
|
2888
2908
|
{
|
|
2889
|
-
|
|
2909
|
+
ref: titleRef,
|
|
2910
|
+
className: ` text-3xl tracking-tight text-black leading-[1.1] ${isAnimating ? "" : ""}`,
|
|
2911
|
+
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2890
2912
|
},
|
|
2891
2913
|
headline
|
|
2892
2914
|
))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2893
2915
|
const isWhite = i === 0;
|
|
2894
|
-
const
|
|
2916
|
+
const isBlack = i === 1;
|
|
2895
2917
|
const isNeutral = i === 2;
|
|
2896
2918
|
const getBgStyle = () => {
|
|
2897
|
-
if (isWhite) return "bg-white
|
|
2898
|
-
if (
|
|
2899
|
-
if (isNeutral) return "bg-neutral-200
|
|
2900
|
-
return "bg-
|
|
2919
|
+
if (isWhite) return "bg-white";
|
|
2920
|
+
if (isBlack) return "bg-[#068afe]";
|
|
2921
|
+
if (isNeutral) return "bg-neutral-200";
|
|
2922
|
+
return "bg-neutral-200";
|
|
2901
2923
|
};
|
|
2902
|
-
const textColor =
|
|
2903
|
-
const subTextColor =
|
|
2904
|
-
const labelColor =
|
|
2924
|
+
const textColor = isBlack ? "text-white" : "text-black";
|
|
2925
|
+
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2926
|
+
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2905
2927
|
return /* @__PURE__ */ import_react46.default.createElement(
|
|
2906
2928
|
"div",
|
|
2907
2929
|
{
|
|
2908
2930
|
key: i,
|
|
2909
|
-
className: `relative rounded-
|
|
2931
|
+
className: `relative rounded-4xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`
|
|
2910
2932
|
},
|
|
2911
|
-
/* @__PURE__ */ import_react46.default.createElement(
|
|
2912
|
-
|
|
2933
|
+
/* @__PURE__ */ import_react46.default.createElement(
|
|
2934
|
+
"div",
|
|
2935
|
+
{
|
|
2936
|
+
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2937
|
+
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
2938
|
+
}
|
|
2939
|
+
),
|
|
2940
|
+
isBlack && /* @__PURE__ */ import_react46.default.createElement("span", { className: "absolute inset-0 rounded-4xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
2941
|
+
/* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isBlack ? "text-white/5" : "text-black/5"}` }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
2942
|
+
/* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react46.default.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react46.default.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2913
2943
|
);
|
|
2914
2944
|
})))));
|
|
2915
2945
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -2873,42 +2873,72 @@ var HeroSection = ({
|
|
|
2873
2873
|
};
|
|
2874
2874
|
|
|
2875
2875
|
// src/components/AppBento2.tsx
|
|
2876
|
-
import React27 from "react";
|
|
2876
|
+
import React27, { useState as useState20, useEffect as useEffect11, useRef as useRef6 } from "react";
|
|
2877
2877
|
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
2878
2878
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2879
|
+
const [isAnimating, setIsAnimating] = useState20(false);
|
|
2880
|
+
const titleRef = useRef6(null);
|
|
2881
|
+
useEffect11(() => {
|
|
2882
|
+
const observer = new IntersectionObserver(
|
|
2883
|
+
([entry]) => {
|
|
2884
|
+
if (entry.isIntersecting) {
|
|
2885
|
+
if (entry.boundingClientRect.top > 0) {
|
|
2886
|
+
setIsAnimating(true);
|
|
2887
|
+
}
|
|
2888
|
+
} else {
|
|
2889
|
+
setIsAnimating(false);
|
|
2890
|
+
}
|
|
2891
|
+
},
|
|
2892
|
+
{ threshold: 0.1 }
|
|
2893
|
+
);
|
|
2894
|
+
if (titleRef.current) {
|
|
2895
|
+
observer.observe(titleRef.current);
|
|
2896
|
+
}
|
|
2897
|
+
return () => observer.disconnect();
|
|
2898
|
+
}, []);
|
|
2879
2899
|
return /* @__PURE__ */ React27.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React27.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React27.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React27.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React27.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React27.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React27.createElement(
|
|
2880
2900
|
"h2",
|
|
2881
2901
|
{
|
|
2882
|
-
|
|
2902
|
+
ref: titleRef,
|
|
2903
|
+
className: ` text-3xl tracking-tight text-black leading-[1.1] ${isAnimating ? "" : ""}`,
|
|
2904
|
+
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2883
2905
|
},
|
|
2884
2906
|
headline
|
|
2885
2907
|
))), /* @__PURE__ */ React27.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2886
2908
|
const isWhite = i === 0;
|
|
2887
|
-
const
|
|
2909
|
+
const isBlack = i === 1;
|
|
2888
2910
|
const isNeutral = i === 2;
|
|
2889
2911
|
const getBgStyle = () => {
|
|
2890
|
-
if (isWhite) return "bg-white
|
|
2891
|
-
if (
|
|
2892
|
-
if (isNeutral) return "bg-neutral-200
|
|
2893
|
-
return "bg-
|
|
2912
|
+
if (isWhite) return "bg-white";
|
|
2913
|
+
if (isBlack) return "bg-[#068afe]";
|
|
2914
|
+
if (isNeutral) return "bg-neutral-200";
|
|
2915
|
+
return "bg-neutral-200";
|
|
2894
2916
|
};
|
|
2895
|
-
const textColor =
|
|
2896
|
-
const subTextColor =
|
|
2897
|
-
const labelColor =
|
|
2917
|
+
const textColor = isBlack ? "text-white" : "text-black";
|
|
2918
|
+
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2919
|
+
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2898
2920
|
return /* @__PURE__ */ React27.createElement(
|
|
2899
2921
|
"div",
|
|
2900
2922
|
{
|
|
2901
2923
|
key: i,
|
|
2902
|
-
className: `relative rounded-
|
|
2924
|
+
className: `relative rounded-4xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`
|
|
2903
2925
|
},
|
|
2904
|
-
/* @__PURE__ */ React27.createElement(
|
|
2905
|
-
|
|
2926
|
+
/* @__PURE__ */ React27.createElement(
|
|
2927
|
+
"div",
|
|
2928
|
+
{
|
|
2929
|
+
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2930
|
+
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
2931
|
+
}
|
|
2932
|
+
),
|
|
2933
|
+
isBlack && /* @__PURE__ */ React27.createElement("span", { className: "absolute inset-0 rounded-4xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
2934
|
+
/* @__PURE__ */ React27.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React27.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__ */ React27.createElement(HugeiconsIcon20, { icon: f.icon, size: 180 }))),
|
|
2935
|
+
/* @__PURE__ */ React27.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React27.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React27.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React27.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React27.createElement(HugeiconsIcon20, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React27.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React27.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React27.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2906
2936
|
);
|
|
2907
2937
|
})))));
|
|
2908
2938
|
};
|
|
2909
2939
|
|
|
2910
2940
|
// src/components/UniversalSecurityPage.tsx
|
|
2911
|
-
import React28, { useState as
|
|
2941
|
+
import React28, { useState as useState21 } from "react";
|
|
2912
2942
|
import toast8 from "react-hot-toast";
|
|
2913
2943
|
import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
|
|
2914
2944
|
import {
|
|
@@ -2931,13 +2961,13 @@ var UniversalSecurityPage = ({
|
|
|
2931
2961
|
onVerifyAndEnablePasskey,
|
|
2932
2962
|
onDisablePasskey
|
|
2933
2963
|
}) => {
|
|
2934
|
-
const [showPasskeyModal, setShowPasskeyModal] =
|
|
2935
|
-
const [isSubmitting, setIsSubmitting] =
|
|
2936
|
-
const [isPasscodeModalOpen, setIsPasscodeModalOpen] =
|
|
2937
|
-
const [oldPasscode, setOldPasscode] =
|
|
2938
|
-
const [newPasscode, setNewPasscode] =
|
|
2939
|
-
const [confirmPasscode, setConfirmPasscode] =
|
|
2940
|
-
const [isPasscodeSubmitting, setIsPasscodeSubmitting] =
|
|
2964
|
+
const [showPasskeyModal, setShowPasskeyModal] = useState21(false);
|
|
2965
|
+
const [isSubmitting, setIsSubmitting] = useState21(false);
|
|
2966
|
+
const [isPasscodeModalOpen, setIsPasscodeModalOpen] = useState21(false);
|
|
2967
|
+
const [oldPasscode, setOldPasscode] = useState21("");
|
|
2968
|
+
const [newPasscode, setNewPasscode] = useState21("");
|
|
2969
|
+
const [confirmPasscode, setConfirmPasscode] = useState21("");
|
|
2970
|
+
const [isPasscodeSubmitting, setIsPasscodeSubmitting] = useState21(false);
|
|
2941
2971
|
const handleTogglePasskey = () => {
|
|
2942
2972
|
if (isPasskeyLoading) return;
|
|
2943
2973
|
if (hasPasskey) {
|
|
@@ -3114,13 +3144,13 @@ var MenuRow3 = ({
|
|
|
3114
3144
|
);
|
|
3115
3145
|
|
|
3116
3146
|
// src/components/FeatureScroll.tsx
|
|
3117
|
-
import React29, { useRef as
|
|
3147
|
+
import React29, { useRef as useRef7, useState as useState22, useEffect as useEffect12 } from "react";
|
|
3118
3148
|
import Image4 from "next/image";
|
|
3119
3149
|
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
3120
3150
|
import { ArrowLeft01Icon as ArrowLeft01Icon9, ArrowRight01Icon as ArrowRight01Icon8, Loading03Icon as Loading03Icon13 } from "@hugeicons/core-free-icons";
|
|
3121
3151
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
3122
|
-
const [isBgLoading, setIsBgLoading] =
|
|
3123
|
-
const [isFgLoading, setIsFgLoading] =
|
|
3152
|
+
const [isBgLoading, setIsBgLoading] = useState22(true);
|
|
3153
|
+
const [isFgLoading, setIsFgLoading] = useState22(!!feature.image);
|
|
3124
3154
|
return /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ React29.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement(
|
|
3125
3155
|
Image4,
|
|
3126
3156
|
{
|
|
@@ -3158,9 +3188,9 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3158
3188
|
))), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React29.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ React29.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
3159
3189
|
};
|
|
3160
3190
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
3161
|
-
const scrollRef =
|
|
3162
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
3163
|
-
const [canScrollRight, setCanScrollRight] =
|
|
3191
|
+
const scrollRef = useRef7(null);
|
|
3192
|
+
const [canScrollLeft, setCanScrollLeft] = useState22(false);
|
|
3193
|
+
const [canScrollRight, setCanScrollRight] = useState22(true);
|
|
3164
3194
|
const checkScroll = () => {
|
|
3165
3195
|
if (scrollRef.current) {
|
|
3166
3196
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -3168,7 +3198,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3168
3198
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
3169
3199
|
}
|
|
3170
3200
|
};
|
|
3171
|
-
|
|
3201
|
+
useEffect12(() => {
|
|
3172
3202
|
checkScroll();
|
|
3173
3203
|
window.addEventListener("resize", checkScroll);
|
|
3174
3204
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -3249,7 +3279,7 @@ var PlatformFeatures = ({
|
|
|
3249
3279
|
};
|
|
3250
3280
|
|
|
3251
3281
|
// src/components/ManagedDocument.tsx
|
|
3252
|
-
import React31, { useState as
|
|
3282
|
+
import React31, { useState as useState23, useEffect as useEffect13, useRef as useRef8 } from "react";
|
|
3253
3283
|
var ManagedDocument = ({
|
|
3254
3284
|
tagline,
|
|
3255
3285
|
title,
|
|
@@ -3257,9 +3287,9 @@ var ManagedDocument = ({
|
|
|
3257
3287
|
contactText,
|
|
3258
3288
|
contactEmail
|
|
3259
3289
|
}) => {
|
|
3260
|
-
const [isAnimating, setIsAnimating] =
|
|
3261
|
-
const titleRef =
|
|
3262
|
-
|
|
3290
|
+
const [isAnimating, setIsAnimating] = useState23(false);
|
|
3291
|
+
const titleRef = useRef8(null);
|
|
3292
|
+
useEffect13(() => {
|
|
3263
3293
|
const observer = new IntersectionObserver(
|
|
3264
3294
|
([entry]) => {
|
|
3265
3295
|
if (entry.isIntersecting) {
|
|
@@ -3299,11 +3329,11 @@ var ManagedDocument = ({
|
|
|
3299
3329
|
};
|
|
3300
3330
|
|
|
3301
3331
|
// src/components/ManagedContactBlock.tsx
|
|
3302
|
-
import React32, { useState as
|
|
3332
|
+
import React32, { useState as useState24, useEffect as useEffect14 } from "react";
|
|
3303
3333
|
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
3304
3334
|
var SecureEmail = ({ user, domain, className }) => {
|
|
3305
|
-
const [isMounted, setIsMounted] =
|
|
3306
|
-
|
|
3335
|
+
const [isMounted, setIsMounted] = useState24(false);
|
|
3336
|
+
useEffect14(() => {
|
|
3307
3337
|
setIsMounted(true);
|
|
3308
3338
|
}, []);
|
|
3309
3339
|
if (!isMounted) {
|
|
@@ -3364,7 +3394,7 @@ var ManagedContactBlock = ({
|
|
|
3364
3394
|
};
|
|
3365
3395
|
|
|
3366
3396
|
// src/components/ManagedPricingBlock.tsx
|
|
3367
|
-
import React33, { useState as
|
|
3397
|
+
import React33, { useState as useState25, useEffect as useEffect15, useRef as useRef9 } from "react";
|
|
3368
3398
|
import Link7 from "next/link";
|
|
3369
3399
|
import Image5 from "next/image";
|
|
3370
3400
|
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" }));
|
|
@@ -3375,10 +3405,10 @@ var ManagedPricingBlock = ({
|
|
|
3375
3405
|
plans = [],
|
|
3376
3406
|
tabs
|
|
3377
3407
|
}) => {
|
|
3378
|
-
const [isAnimating, setIsAnimating] =
|
|
3379
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
3380
|
-
const titleRef =
|
|
3381
|
-
|
|
3408
|
+
const [isAnimating, setIsAnimating] = useState25(false);
|
|
3409
|
+
const [activeTabIndex, setActiveTabIndex] = useState25(0);
|
|
3410
|
+
const titleRef = useRef9(null);
|
|
3411
|
+
useEffect15(() => {
|
|
3382
3412
|
const observer = new IntersectionObserver(
|
|
3383
3413
|
([entry]) => {
|
|
3384
3414
|
if (entry.isIntersecting) {
|
|
@@ -3593,14 +3623,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3593
3623
|
};
|
|
3594
3624
|
|
|
3595
3625
|
// src/components/PortfolioHero.tsx
|
|
3596
|
-
import React37, { useEffect as
|
|
3626
|
+
import React37, { useEffect as useEffect16, useRef as useRef10 } from "react";
|
|
3597
3627
|
import Link8 from "next/link";
|
|
3598
3628
|
import Image8 from "next/image";
|
|
3599
3629
|
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3600
3630
|
import { ArrowRight01Icon as ArrowRight01Icon9 } from "@hugeicons/core-free-icons";
|
|
3601
3631
|
var useScrollAnimation = () => {
|
|
3602
|
-
const elementRef =
|
|
3603
|
-
|
|
3632
|
+
const elementRef = useRef10(null);
|
|
3633
|
+
useEffect16(() => {
|
|
3604
3634
|
const el = elementRef.current;
|
|
3605
3635
|
if (!el) return;
|
|
3606
3636
|
const observer = new IntersectionObserver(
|
|
@@ -3684,7 +3714,7 @@ var PortfolioHero = ({
|
|
|
3684
3714
|
};
|
|
3685
3715
|
|
|
3686
3716
|
// src/components/GifFeatureCard.tsx
|
|
3687
|
-
import React38, { useState as
|
|
3717
|
+
import React38, { useState as useState26 } from "react";
|
|
3688
3718
|
import Image9 from "next/image";
|
|
3689
3719
|
import { HugeiconsIcon as HugeiconsIcon27 } from "@hugeicons/react";
|
|
3690
3720
|
import { Loading03Icon as Loading03Icon14 } from "@hugeicons/core-free-icons";
|
|
@@ -3695,7 +3725,7 @@ var GifFeatureCard = ({
|
|
|
3695
3725
|
alt = "Feature animation",
|
|
3696
3726
|
className = "aspect-video"
|
|
3697
3727
|
}) => {
|
|
3698
|
-
const [isLoading, setIsLoading] =
|
|
3728
|
+
const [isLoading, setIsLoading] = useState26(true);
|
|
3699
3729
|
return /* @__PURE__ */ React38.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React38.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React38.createElement(
|
|
3700
3730
|
HugeiconsIcon27,
|
|
3701
3731
|
{
|
|
@@ -3728,7 +3758,7 @@ var GifFeatureCard = ({
|
|
|
3728
3758
|
};
|
|
3729
3759
|
|
|
3730
3760
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3731
|
-
import React39, { useState as
|
|
3761
|
+
import React39, { useState as useState27, useEffect as useEffect17, useRef as useRef11 } from "react";
|
|
3732
3762
|
import Image10 from "next/image";
|
|
3733
3763
|
var MedicalFeatureStatsBlock = ({
|
|
3734
3764
|
bottomHeadline,
|
|
@@ -3737,9 +3767,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3737
3767
|
trustText,
|
|
3738
3768
|
stats
|
|
3739
3769
|
}) => {
|
|
3740
|
-
const [isAnimating, setIsAnimating] =
|
|
3741
|
-
const titleRef =
|
|
3742
|
-
|
|
3770
|
+
const [isAnimating, setIsAnimating] = useState27(false);
|
|
3771
|
+
const titleRef = useRef11(null);
|
|
3772
|
+
useEffect17(() => {
|
|
3743
3773
|
const observer = new IntersectionObserver(
|
|
3744
3774
|
([entry]) => {
|
|
3745
3775
|
if (entry.isIntersecting) {
|
|
@@ -3778,12 +3808,12 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3778
3808
|
};
|
|
3779
3809
|
|
|
3780
3810
|
// src/components/ConsultantShowcase.tsx
|
|
3781
|
-
import React40, { useState as
|
|
3811
|
+
import React40, { useState as useState28 } from "react";
|
|
3782
3812
|
import Image11 from "next/image";
|
|
3783
3813
|
import { HugeiconsIcon as HugeiconsIcon28 } from "@hugeicons/react";
|
|
3784
3814
|
import { Loading03Icon as Loading03Icon15 } from "@hugeicons/core-free-icons";
|
|
3785
3815
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3786
|
-
const [isLoading, setIsLoading] =
|
|
3816
|
+
const [isLoading, setIsLoading] = useState28(true);
|
|
3787
3817
|
return /* @__PURE__ */ React40.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React40.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__ */ React40.createElement(HugeiconsIcon28, { icon: Loading03Icon15, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React40.createElement(
|
|
3788
3818
|
Image11,
|
|
3789
3819
|
{
|
|
@@ -3803,9 +3833,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
3803
3833
|
var ConsultantShowcase = ({
|
|
3804
3834
|
profiles
|
|
3805
3835
|
}) => {
|
|
3806
|
-
const [currentIndex, setCurrentIndex] =
|
|
3807
|
-
const [touchStart, setTouchStart] =
|
|
3808
|
-
const [touchEnd, setTouchEnd] =
|
|
3836
|
+
const [currentIndex, setCurrentIndex] = useState28(0);
|
|
3837
|
+
const [touchStart, setTouchStart] = useState28(null);
|
|
3838
|
+
const [touchEnd, setTouchEnd] = useState28(null);
|
|
3809
3839
|
const nextSlide = () => {
|
|
3810
3840
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
3811
3841
|
};
|
|
@@ -3873,7 +3903,7 @@ var ConsultantShowcase = ({
|
|
|
3873
3903
|
};
|
|
3874
3904
|
|
|
3875
3905
|
// src/components/ContentGridBlock.tsx
|
|
3876
|
-
import React41, { useState as
|
|
3906
|
+
import React41, { useState as useState29 } from "react";
|
|
3877
3907
|
import Image12 from "next/image";
|
|
3878
3908
|
import { HugeiconsIcon as HugeiconsIcon29 } from "@hugeicons/react";
|
|
3879
3909
|
import { Loading03Icon as Loading03Icon16 } from "@hugeicons/core-free-icons";
|
|
@@ -4065,7 +4095,7 @@ var UniversalVerificationPage = ({
|
|
|
4065
4095
|
};
|
|
4066
4096
|
|
|
4067
4097
|
// src/components/UniversalRewardPage.tsx
|
|
4068
|
-
import React44, { useState as
|
|
4098
|
+
import React44, { useState as useState30 } from "react";
|
|
4069
4099
|
import axios from "axios";
|
|
4070
4100
|
import toast9 from "react-hot-toast";
|
|
4071
4101
|
import Confetti from "react-confetti";
|
|
@@ -4082,7 +4112,7 @@ var formatWeb3Name = (name) => {
|
|
|
4082
4112
|
};
|
|
4083
4113
|
var PageSpinner4 = () => /* @__PURE__ */ React44.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon31, { icon: Loading03Icon18, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4084
4114
|
var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
4085
|
-
const [isLoaded, setIsLoaded] =
|
|
4115
|
+
const [isLoaded, setIsLoaded] = useState30(false);
|
|
4086
4116
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=100&font-size=0.33`;
|
|
4087
4117
|
const finalSrc = src || fallbackUrl;
|
|
4088
4118
|
return /* @__PURE__ */ React44.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__ */ React44.createElement(HugeiconsIcon31, { icon: Loading03Icon18, size: 16, className: "animate-spin text-neutral-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"}` }));
|
|
@@ -4100,11 +4130,11 @@ var UniversalRewardPage = ({
|
|
|
4100
4130
|
const onBackHandler = onBack ?? (() => {
|
|
4101
4131
|
if (typeof window !== "undefined") window.history.back();
|
|
4102
4132
|
});
|
|
4103
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
4133
|
+
const [activeTabIndex, setActiveTabIndex] = useState30(1);
|
|
4104
4134
|
const tabs = [{ label: "Today" }, { label: "Week" }, { label: "Month" }];
|
|
4105
|
-
const [selectedReward, setSelectedReward] =
|
|
4106
|
-
const [isClaiming, setIsClaiming] =
|
|
4107
|
-
const [showConfetti, setShowConfetti] =
|
|
4135
|
+
const [selectedReward, setSelectedReward] = useState30(null);
|
|
4136
|
+
const [isClaiming, setIsClaiming] = useState30(false);
|
|
4137
|
+
const [showConfetti, setShowConfetti] = useState30(false);
|
|
4108
4138
|
const getActiveLeaderboard = () => {
|
|
4109
4139
|
if (activeTabIndex === 0) return leaderboardToday || [];
|
|
4110
4140
|
if (activeTabIndex === 1) return leaderboardWeek || [];
|
|
@@ -4179,7 +4209,7 @@ var UniversalRewardPage = ({
|
|
|
4179
4209
|
};
|
|
4180
4210
|
|
|
4181
4211
|
// src/components/UniversalReferralPage.tsx
|
|
4182
|
-
import React45, { useState as
|
|
4212
|
+
import React45, { useState as useState31 } from "react";
|
|
4183
4213
|
import toast10 from "react-hot-toast";
|
|
4184
4214
|
import { HugeiconsIcon as HugeiconsIcon32 } from "@hugeicons/react";
|
|
4185
4215
|
import {
|
|
@@ -4220,7 +4250,7 @@ var UniversalReferralPage = ({
|
|
|
4220
4250
|
}
|
|
4221
4251
|
};
|
|
4222
4252
|
const AvatarLogo2 = ({ src, alt, name, sizeClass = "w-10 h-10" }) => {
|
|
4223
|
-
const [isLoaded, setIsLoaded] =
|
|
4253
|
+
const [isLoaded, setIsLoaded] = useState31(false);
|
|
4224
4254
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=e0e0e0&color=000000&size=100&font-size=0.33`;
|
|
4225
4255
|
const finalSrc = src || fallbackUrl;
|
|
4226
4256
|
return /* @__PURE__ */ React45.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__ */ React45.createElement(HugeiconsIcon32, { icon: Loading03Icon19, size: 16, className: "animate-spin text-neutral-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"}` }));
|
|
@@ -4268,7 +4298,7 @@ var UniversalReferralPage = ({
|
|
|
4268
4298
|
};
|
|
4269
4299
|
|
|
4270
4300
|
// src/components/UniversalCardActionPage.tsx
|
|
4271
|
-
import React46, { useState as
|
|
4301
|
+
import React46, { useState as useState32 } from "react";
|
|
4272
4302
|
import Confetti2 from "react-confetti";
|
|
4273
4303
|
import { useWindowSize as useWindowSize2 } from "react-use";
|
|
4274
4304
|
import { HugeiconsIcon as HugeiconsIcon33 } from "@hugeicons/react";
|
|
@@ -4319,10 +4349,10 @@ var UniversalCardActionPage = ({
|
|
|
4319
4349
|
if (typeof window !== "undefined") window.history.back();
|
|
4320
4350
|
});
|
|
4321
4351
|
const { width, height } = useWindowSize2();
|
|
4322
|
-
const [selectedTier, setSelectedTier] =
|
|
4323
|
-
const [intendedAction, setIntendedAction] =
|
|
4324
|
-
const [isProcessing, setIsProcessing] =
|
|
4325
|
-
const [showConfetti, setShowConfetti] =
|
|
4352
|
+
const [selectedTier, setSelectedTier] = useState32(null);
|
|
4353
|
+
const [intendedAction, setIntendedAction] = useState32(null);
|
|
4354
|
+
const [isProcessing, setIsProcessing] = useState32(false);
|
|
4355
|
+
const [showConfetti, setShowConfetti] = useState32(false);
|
|
4326
4356
|
const availableTiers = tiers.filter((t) => t.isAvailable || t.acceptPreorder || t.acceptWaitlist);
|
|
4327
4357
|
const handleTierClick = (tier, explicitAction) => {
|
|
4328
4358
|
setSelectedTier(tier);
|
|
@@ -4462,7 +4492,7 @@ var UniversalCardActionPage = ({
|
|
|
4462
4492
|
};
|
|
4463
4493
|
|
|
4464
4494
|
// src/components/PinDialerBottomSheet.tsx
|
|
4465
|
-
import React47, { useState as
|
|
4495
|
+
import React47, { useState as useState33, useEffect as useEffect18 } from "react";
|
|
4466
4496
|
import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
|
|
4467
4497
|
import { CancelCircleIcon as CancelCircleIcon10 } from "@hugeicons/core-free-icons";
|
|
4468
4498
|
var PinDialerBottomSheet = ({
|
|
@@ -4472,8 +4502,8 @@ var PinDialerBottomSheet = ({
|
|
|
4472
4502
|
onClose,
|
|
4473
4503
|
onComplete
|
|
4474
4504
|
}) => {
|
|
4475
|
-
const [pin, setPin] =
|
|
4476
|
-
|
|
4505
|
+
const [pin, setPin] = useState33("");
|
|
4506
|
+
useEffect18(() => {
|
|
4477
4507
|
setPin("");
|
|
4478
4508
|
}, [isOpen]);
|
|
4479
4509
|
const handleSubmit = (e) => {
|
|
@@ -4524,7 +4554,7 @@ var PinDialerBottomSheet = ({
|
|
|
4524
4554
|
};
|
|
4525
4555
|
|
|
4526
4556
|
// src/components/UniversalBuyCryptoPage.tsx
|
|
4527
|
-
import React48, { useState as
|
|
4557
|
+
import React48, { useState as useState34, useEffect as useEffect19, useRef as useRef12, useCallback } from "react";
|
|
4528
4558
|
import toast11 from "react-hot-toast";
|
|
4529
4559
|
import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
|
|
4530
4560
|
import {
|
|
@@ -4532,8 +4562,8 @@ import {
|
|
|
4532
4562
|
CheckmarkCircle02Icon
|
|
4533
4563
|
} from "@hugeicons/core-free-icons";
|
|
4534
4564
|
var CircularLogo = ({ src, alt, fallbackText }) => {
|
|
4535
|
-
const [isLoaded, setIsLoaded] =
|
|
4536
|
-
const [hasError, setHasError] =
|
|
4565
|
+
const [isLoaded, setIsLoaded] = useState34(false);
|
|
4566
|
+
const [hasError, setHasError] = useState34(false);
|
|
4537
4567
|
return /* @__PURE__ */ React48.createElement("div", { className: "relative w-5 h-5 rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center shrink-0" }, !hasError && src ? /* @__PURE__ */ React48.createElement(React48.Fragment, null, !isLoaded && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-neutral-200 animate-pulse" }), /* @__PURE__ */ React48.createElement(
|
|
4538
4568
|
"img",
|
|
4539
4569
|
{
|
|
@@ -4583,33 +4613,33 @@ var UniversalBuyCryptoPage = ({
|
|
|
4583
4613
|
const onBackHandler = onBack ?? (() => {
|
|
4584
4614
|
if (typeof window !== "undefined") window.history.back();
|
|
4585
4615
|
});
|
|
4586
|
-
const [selectedCrypto, setSelectedCrypto] =
|
|
4616
|
+
const [selectedCrypto, setSelectedCrypto] = useState34(() => {
|
|
4587
4617
|
if (defaultCryptoCode) {
|
|
4588
4618
|
const found = cryptoOptions.find((c) => c.code === defaultCryptoCode);
|
|
4589
4619
|
if (found) return found;
|
|
4590
4620
|
}
|
|
4591
4621
|
return cryptoOptions[0];
|
|
4592
4622
|
});
|
|
4593
|
-
const [selectedNetwork, setSelectedNetwork] =
|
|
4623
|
+
const [selectedNetwork, setSelectedNetwork] = useState34(() => {
|
|
4594
4624
|
if (defaultNetworkId && selectedCrypto?.networks) {
|
|
4595
4625
|
const foundNet = selectedCrypto.networks.find((n) => n.id === defaultNetworkId);
|
|
4596
4626
|
if (foundNet) return foundNet;
|
|
4597
4627
|
}
|
|
4598
4628
|
return selectedCrypto?.networks?.[0] || { id: "polygon", name: "Polygon", symbol: "POLYGON" };
|
|
4599
4629
|
});
|
|
4600
|
-
const [fiatAmount, setFiatAmount] =
|
|
4601
|
-
const [cryptoAmount, setCryptoAmount] =
|
|
4602
|
-
const [activeSource, setActiveSource] =
|
|
4603
|
-
const [isCalculating, setIsCalculating] =
|
|
4604
|
-
const [rateDisplay, setRateDisplay] =
|
|
4605
|
-
const [currentRateKey, setCurrentRateKey] =
|
|
4606
|
-
const [recipientAddress, setRecipientAddress] =
|
|
4607
|
-
const [isAddressValid, setIsAddressValid] =
|
|
4608
|
-
const [isCryptoDialogOpen, setIsCryptoDialogOpen] =
|
|
4609
|
-
const [isNetworkDialogOpen, setIsNetworkDialogOpen] =
|
|
4610
|
-
const [isSubmitting, setIsSubmitting] =
|
|
4611
|
-
const debounceTimerRef =
|
|
4612
|
-
|
|
4630
|
+
const [fiatAmount, setFiatAmount] = useState34("");
|
|
4631
|
+
const [cryptoAmount, setCryptoAmount] = useState34("");
|
|
4632
|
+
const [activeSource, setActiveSource] = useState34("FIAT");
|
|
4633
|
+
const [isCalculating, setIsCalculating] = useState34(false);
|
|
4634
|
+
const [rateDisplay, setRateDisplay] = useState34(null);
|
|
4635
|
+
const [currentRateKey, setCurrentRateKey] = useState34(null);
|
|
4636
|
+
const [recipientAddress, setRecipientAddress] = useState34(defaultRecipientAddress);
|
|
4637
|
+
const [isAddressValid, setIsAddressValid] = useState34(false);
|
|
4638
|
+
const [isCryptoDialogOpen, setIsCryptoDialogOpen] = useState34(false);
|
|
4639
|
+
const [isNetworkDialogOpen, setIsNetworkDialogOpen] = useState34(false);
|
|
4640
|
+
const [isSubmitting, setIsSubmitting] = useState34(false);
|
|
4641
|
+
const debounceTimerRef = useRef12(null);
|
|
4642
|
+
useEffect19(() => {
|
|
4613
4643
|
if (selectedCrypto?.networks?.length > 0) {
|
|
4614
4644
|
const exists = selectedCrypto.networks.find((n) => n.id === selectedNetwork.id);
|
|
4615
4645
|
if (!exists) {
|
|
@@ -4617,7 +4647,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4617
4647
|
}
|
|
4618
4648
|
}
|
|
4619
4649
|
}, [selectedCrypto]);
|
|
4620
|
-
|
|
4650
|
+
useEffect19(() => {
|
|
4621
4651
|
if (!recipientAddress.trim()) {
|
|
4622
4652
|
setIsAddressValid(false);
|
|
4623
4653
|
return;
|
|
@@ -4805,7 +4835,7 @@ var UniversalBuyCryptoPage = ({
|
|
|
4805
4835
|
};
|
|
4806
4836
|
|
|
4807
4837
|
// src/components/UniversalHuddlesPage.tsx
|
|
4808
|
-
import React49, { useState as
|
|
4838
|
+
import React49, { useState as useState35 } from "react";
|
|
4809
4839
|
import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
|
|
4810
4840
|
import {
|
|
4811
4841
|
ArrowLeft01Icon as ArrowLeft01Icon15,
|
|
@@ -4813,8 +4843,8 @@ import {
|
|
|
4813
4843
|
Loading03Icon as Loading03Icon22
|
|
4814
4844
|
} from "@hugeicons/core-free-icons";
|
|
4815
4845
|
var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
4816
|
-
const [loaded, setLoaded] =
|
|
4817
|
-
const [error, setError] =
|
|
4846
|
+
const [loaded, setLoaded] = useState35(false);
|
|
4847
|
+
const [error, setError] = useState35(false);
|
|
4818
4848
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
|
|
4819
4849
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
4820
4850
|
const getStatusColor = () => {
|
|
@@ -4891,7 +4921,7 @@ var UniversalHuddlesPage = ({
|
|
|
4891
4921
|
};
|
|
4892
4922
|
|
|
4893
4923
|
// src/components/UniversalMembersPage.tsx
|
|
4894
|
-
import React50, { useState as
|
|
4924
|
+
import React50, { useState as useState36, useEffect as useEffect20, useRef as useRef13 } from "react";
|
|
4895
4925
|
import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
|
|
4896
4926
|
import toast12 from "react-hot-toast";
|
|
4897
4927
|
import {
|
|
@@ -4903,8 +4933,8 @@ import {
|
|
|
4903
4933
|
ListSettingIcon as ListSettingIcon2
|
|
4904
4934
|
} from "@hugeicons/core-free-icons";
|
|
4905
4935
|
var MemberAvatar2 = ({ src, status }) => {
|
|
4906
|
-
const [loaded, setLoaded] =
|
|
4907
|
-
const [error, setError] =
|
|
4936
|
+
const [loaded, setLoaded] = useState36(false);
|
|
4937
|
+
const [error, setError] = useState36(false);
|
|
4908
4938
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4909
4939
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
4910
4940
|
const getStatusColor = () => {
|
|
@@ -4952,20 +4982,20 @@ var UniversalMembersPage = ({
|
|
|
4952
4982
|
onRemoveMember,
|
|
4953
4983
|
onInviteMember
|
|
4954
4984
|
}) => {
|
|
4955
|
-
const [expandedId, setExpandedId] =
|
|
4956
|
-
const [memberToRemove, setMemberToRemove] =
|
|
4957
|
-
const [isRemoving, setIsRemoving] =
|
|
4958
|
-
const [isInviteMode, setIsInviteMode] =
|
|
4959
|
-
const [inviteEmail, setInviteEmail] =
|
|
4960
|
-
const [isInviting, setIsInviting] =
|
|
4961
|
-
const [localSearchQuery, setLocalSearchQuery] =
|
|
4962
|
-
const [isTyping, setIsTyping] =
|
|
4963
|
-
const [isStatusModalOpen, setIsStatusModalOpen] =
|
|
4964
|
-
const [isRoleModalOpen, setIsRoleModalOpen] =
|
|
4965
|
-
const statusDropdownRef =
|
|
4966
|
-
const roleDropdownRef =
|
|
4985
|
+
const [expandedId, setExpandedId] = useState36(null);
|
|
4986
|
+
const [memberToRemove, setMemberToRemove] = useState36(null);
|
|
4987
|
+
const [isRemoving, setIsRemoving] = useState36(false);
|
|
4988
|
+
const [isInviteMode, setIsInviteMode] = useState36(false);
|
|
4989
|
+
const [inviteEmail, setInviteEmail] = useState36("");
|
|
4990
|
+
const [isInviting, setIsInviting] = useState36(false);
|
|
4991
|
+
const [localSearchQuery, setLocalSearchQuery] = useState36(searchQuery);
|
|
4992
|
+
const [isTyping, setIsTyping] = useState36(false);
|
|
4993
|
+
const [isStatusModalOpen, setIsStatusModalOpen] = useState36(false);
|
|
4994
|
+
const [isRoleModalOpen, setIsRoleModalOpen] = useState36(false);
|
|
4995
|
+
const statusDropdownRef = useRef13(null);
|
|
4996
|
+
const roleDropdownRef = useRef13(null);
|
|
4967
4997
|
const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
|
|
4968
|
-
|
|
4998
|
+
useEffect20(() => {
|
|
4969
4999
|
function handleClickOutside(event) {
|
|
4970
5000
|
if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) {
|
|
4971
5001
|
setIsStatusModalOpen(false);
|
|
@@ -4977,7 +5007,7 @@ var UniversalMembersPage = ({
|
|
|
4977
5007
|
document.addEventListener("mousedown", handleClickOutside);
|
|
4978
5008
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
4979
5009
|
}, []);
|
|
4980
|
-
|
|
5010
|
+
useEffect20(() => {
|
|
4981
5011
|
setIsTyping(true);
|
|
4982
5012
|
const handler = setTimeout(() => {
|
|
4983
5013
|
onSearchChange(localSearchQuery);
|
|
@@ -4985,7 +5015,7 @@ var UniversalMembersPage = ({
|
|
|
4985
5015
|
}, 600);
|
|
4986
5016
|
return () => clearTimeout(handler);
|
|
4987
5017
|
}, [localSearchQuery, onSearchChange]);
|
|
4988
|
-
|
|
5018
|
+
useEffect20(() => {
|
|
4989
5019
|
if (searchQuery === "" && localSearchQuery !== "") {
|
|
4990
5020
|
setLocalSearchQuery("");
|
|
4991
5021
|
}
|
|
@@ -5157,7 +5187,7 @@ var UniversalMembersPage = ({
|
|
|
5157
5187
|
};
|
|
5158
5188
|
|
|
5159
5189
|
// src/components/UniversalHome2.tsx
|
|
5160
|
-
import React51, { useState as
|
|
5190
|
+
import React51, { useState as useState37 } from "react";
|
|
5161
5191
|
import { useRouter as useRouter3 } from "next/navigation";
|
|
5162
5192
|
import { HugeiconsIcon as HugeiconsIcon38 } from "@hugeicons/react";
|
|
5163
5193
|
import toast13 from "react-hot-toast";
|
|
@@ -5173,8 +5203,8 @@ import {
|
|
|
5173
5203
|
Tick02Icon as Tick02Icon2
|
|
5174
5204
|
} from "@hugeicons/core-free-icons";
|
|
5175
5205
|
var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
5176
|
-
const [loaded, setLoaded] =
|
|
5177
|
-
const [error, setError] =
|
|
5206
|
+
const [loaded, setLoaded] = useState37(false);
|
|
5207
|
+
const [error, setError] = useState37(false);
|
|
5178
5208
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
5179
5209
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5180
5210
|
return /* @__PURE__ */ React51.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React51.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React51.createElement(HugeiconsIcon38, { icon: Loading03Icon24, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React51.createElement(
|
|
@@ -5207,13 +5237,13 @@ var UniversalHome2 = ({
|
|
|
5207
5237
|
huddlesProps,
|
|
5208
5238
|
onLogout
|
|
5209
5239
|
}) => {
|
|
5210
|
-
const [isAvatarLoaded, setIsAvatarLoaded] =
|
|
5211
|
-
const [showNotifDialog, setShowNotifDialog] =
|
|
5212
|
-
const [showOrgSwitcher, setShowOrgSwitcher] =
|
|
5213
|
-
const [selectedNotif, setSelectedNotif] =
|
|
5214
|
-
const [isResolving, setIsResolving] =
|
|
5215
|
-
const [showLogoutConfirm, setShowLogoutConfirm] =
|
|
5216
|
-
const [isLoggingOut, setIsLoggingOut] =
|
|
5240
|
+
const [isAvatarLoaded, setIsAvatarLoaded] = useState37(false);
|
|
5241
|
+
const [showNotifDialog, setShowNotifDialog] = useState37(false);
|
|
5242
|
+
const [showOrgSwitcher, setShowOrgSwitcher] = useState37(false);
|
|
5243
|
+
const [selectedNotif, setSelectedNotif] = useState37(null);
|
|
5244
|
+
const [isResolving, setIsResolving] = useState37(false);
|
|
5245
|
+
const [showLogoutConfirm, setShowLogoutConfirm] = useState37(false);
|
|
5246
|
+
const [isLoggingOut, setIsLoggingOut] = useState37(false);
|
|
5217
5247
|
const router = useRouter3();
|
|
5218
5248
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5219
5249
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
@@ -5386,7 +5416,7 @@ var UniversalHome2 = ({
|
|
|
5386
5416
|
};
|
|
5387
5417
|
|
|
5388
5418
|
// src/components/UniversalSettings.tsx
|
|
5389
|
-
import React52, { useState as
|
|
5419
|
+
import React52, { useState as useState38, useEffect as useEffect21, useRef as useRef14 } from "react";
|
|
5390
5420
|
import toast14 from "react-hot-toast";
|
|
5391
5421
|
import { HugeiconsIcon as HugeiconsIcon39 } from "@hugeicons/react";
|
|
5392
5422
|
import {
|
|
@@ -5401,8 +5431,8 @@ import {
|
|
|
5401
5431
|
PlusSignIcon as PlusSignIcon3
|
|
5402
5432
|
} from "@hugeicons/core-free-icons";
|
|
5403
5433
|
var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
5404
|
-
const [loaded, setLoaded] =
|
|
5405
|
-
const [error, setError] =
|
|
5434
|
+
const [loaded, setLoaded] = useState38(false);
|
|
5435
|
+
const [error, setError] = useState38(false);
|
|
5406
5436
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5407
5437
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5408
5438
|
const getStatusColor = () => {
|
|
@@ -5461,36 +5491,36 @@ var UniversalSettings = ({
|
|
|
5461
5491
|
});
|
|
5462
5492
|
const isOrg = accountType === "ORGANIZATION";
|
|
5463
5493
|
const canManage = userRole === "ADMIN" || userRole === "MANAGER";
|
|
5464
|
-
const [activeTab, setActiveTab] =
|
|
5465
|
-
const [expandedId, setExpandedId] =
|
|
5466
|
-
const [memberToRemove, setMemberToRemove] =
|
|
5467
|
-
const [isRemoving, setIsRemoving] =
|
|
5468
|
-
const [isInviteMode, setIsInviteMode] =
|
|
5469
|
-
const [inviteEmail, setInviteEmail] =
|
|
5470
|
-
const [isInviting, setIsInviting] =
|
|
5471
|
-
const [localSearchQuery, setLocalSearchQuery] =
|
|
5472
|
-
const [isTyping, setIsTyping] =
|
|
5473
|
-
const isFirstSearchMount =
|
|
5474
|
-
const [isStatusModalOpen, setIsStatusModalOpen] =
|
|
5475
|
-
const [isRoleModalOpen, setIsRoleModalOpen] =
|
|
5476
|
-
const [roleEditTarget, setRoleEditTarget] =
|
|
5477
|
-
const [isUpdatingRole, setIsUpdatingRole] =
|
|
5478
|
-
const [orgName, setOrgName] =
|
|
5479
|
-
const [orgSlug, setOrgSlug] =
|
|
5480
|
-
const [firstName, setFirstName] =
|
|
5481
|
-
const [lastName, setLastName] =
|
|
5482
|
-
const [isCheckingSlug, setIsCheckingSlug] =
|
|
5483
|
-
const [slugAvailable, setSlugAvailable] =
|
|
5484
|
-
const [isSavingOrg, setIsSavingOrg] =
|
|
5485
|
-
const [isSavingProfile, setIsSavingProfile] =
|
|
5486
|
-
|
|
5494
|
+
const [activeTab, setActiveTab] = useState38(isOrg ? "MEMBERS" : "ACCOUNT");
|
|
5495
|
+
const [expandedId, setExpandedId] = useState38(null);
|
|
5496
|
+
const [memberToRemove, setMemberToRemove] = useState38(null);
|
|
5497
|
+
const [isRemoving, setIsRemoving] = useState38(false);
|
|
5498
|
+
const [isInviteMode, setIsInviteMode] = useState38(false);
|
|
5499
|
+
const [inviteEmail, setInviteEmail] = useState38("");
|
|
5500
|
+
const [isInviting, setIsInviting] = useState38(false);
|
|
5501
|
+
const [localSearchQuery, setLocalSearchQuery] = useState38(membersSearchQuery);
|
|
5502
|
+
const [isTyping, setIsTyping] = useState38(false);
|
|
5503
|
+
const isFirstSearchMount = useRef14(true);
|
|
5504
|
+
const [isStatusModalOpen, setIsStatusModalOpen] = useState38(false);
|
|
5505
|
+
const [isRoleModalOpen, setIsRoleModalOpen] = useState38(false);
|
|
5506
|
+
const [roleEditTarget, setRoleEditTarget] = useState38(null);
|
|
5507
|
+
const [isUpdatingRole, setIsUpdatingRole] = useState38(false);
|
|
5508
|
+
const [orgName, setOrgName] = useState38(initialOrgName);
|
|
5509
|
+
const [orgSlug, setOrgSlug] = useState38(initialOrgSlug);
|
|
5510
|
+
const [firstName, setFirstName] = useState38("");
|
|
5511
|
+
const [lastName, setLastName] = useState38("");
|
|
5512
|
+
const [isCheckingSlug, setIsCheckingSlug] = useState38(false);
|
|
5513
|
+
const [slugAvailable, setSlugAvailable] = useState38(null);
|
|
5514
|
+
const [isSavingOrg, setIsSavingOrg] = useState38(false);
|
|
5515
|
+
const [isSavingProfile, setIsSavingProfile] = useState38(false);
|
|
5516
|
+
useEffect21(() => {
|
|
5487
5517
|
setOrgName(initialOrgName || "");
|
|
5488
5518
|
setOrgSlug(initialOrgSlug || "");
|
|
5489
5519
|
const parts = (initialFullName || "").split(" ");
|
|
5490
5520
|
setFirstName(parts[0] || "");
|
|
5491
5521
|
setLastName(parts.slice(1).join(" ") || "");
|
|
5492
5522
|
}, [initialOrgName, initialOrgSlug, initialFullName]);
|
|
5493
|
-
|
|
5523
|
+
useEffect21(() => {
|
|
5494
5524
|
if (activeTab !== "MEMBERS") return;
|
|
5495
5525
|
if (isFirstSearchMount.current) {
|
|
5496
5526
|
isFirstSearchMount.current = false;
|
|
@@ -5547,7 +5577,7 @@ var UniversalSettings = ({
|
|
|
5547
5577
|
}
|
|
5548
5578
|
};
|
|
5549
5579
|
const activeExpandedMember = expandedId ? members.find((m) => m.id === expandedId) : null;
|
|
5550
|
-
|
|
5580
|
+
useEffect21(() => {
|
|
5551
5581
|
if (!isOrg || !orgSlug || orgSlug === initialOrgSlug) {
|
|
5552
5582
|
setSlugAvailable(null);
|
|
5553
5583
|
setIsCheckingSlug(false);
|
|
@@ -5642,7 +5672,7 @@ var UniversalSettings = ({
|
|
|
5642
5672
|
};
|
|
5643
5673
|
|
|
5644
5674
|
// src/components/UniversalCreateHuddle.tsx
|
|
5645
|
-
import React53, { useState as
|
|
5675
|
+
import React53, { useState as useState39, useEffect as useEffect22, useRef as useRef15 } from "react";
|
|
5646
5676
|
import toast15 from "react-hot-toast";
|
|
5647
5677
|
import { HugeiconsIcon as HugeiconsIcon40 } from "@hugeicons/react";
|
|
5648
5678
|
import {
|
|
@@ -5657,8 +5687,8 @@ import {
|
|
|
5657
5687
|
CircleLock02Icon as CircleLock02Icon4
|
|
5658
5688
|
} from "@hugeicons/core-free-icons";
|
|
5659
5689
|
var MemberAvatar4 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
5660
|
-
const [loaded, setLoaded] =
|
|
5661
|
-
const [error, setError] =
|
|
5690
|
+
const [loaded, setLoaded] = useState39(false);
|
|
5691
|
+
const [error, setError] = useState39(false);
|
|
5662
5692
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5663
5693
|
return /* @__PURE__ */ React53.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React53.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React53.createElement(HugeiconsIcon40, { icon: Loading03Icon26, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React53.createElement(
|
|
5664
5694
|
"img",
|
|
@@ -5701,28 +5731,28 @@ var UniversalCreateHuddle = ({
|
|
|
5701
5731
|
onCreateSubmit
|
|
5702
5732
|
}) => {
|
|
5703
5733
|
const canManage = userRole === "ADMIN" || userRole === "MANAGER";
|
|
5704
|
-
const [huddleDate, setHuddleDate] =
|
|
5734
|
+
const [huddleDate, setHuddleDate] = useState39(() => {
|
|
5705
5735
|
const d = /* @__PURE__ */ new Date();
|
|
5706
5736
|
d.setHours(d.getHours() + 1, 0, 0, 0);
|
|
5707
5737
|
return d;
|
|
5708
5738
|
});
|
|
5709
|
-
const [title, setTitle] =
|
|
5710
|
-
const [isPrivate, setIsPrivate] =
|
|
5711
|
-
const [timezone, setTimezone] =
|
|
5712
|
-
|
|
5739
|
+
const [title, setTitle] = useState39("");
|
|
5740
|
+
const [isPrivate, setIsPrivate] = useState39(false);
|
|
5741
|
+
const [timezone, setTimezone] = useState39("UTC");
|
|
5742
|
+
useEffect22(() => {
|
|
5713
5743
|
try {
|
|
5714
5744
|
setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
5715
5745
|
} catch (e) {
|
|
5716
5746
|
}
|
|
5717
5747
|
}, []);
|
|
5718
|
-
const [calendarMode, setCalendarMode] =
|
|
5719
|
-
const [showTimezoneModal, setShowTimezoneModal] =
|
|
5720
|
-
const [showMembersModal, setShowMembersModal] =
|
|
5721
|
-
const [selectedParticipants, setSelectedParticipants] =
|
|
5722
|
-
const [isSubmitting, setIsSubmitting] =
|
|
5723
|
-
const [localSearchQuery, setLocalSearchQuery] =
|
|
5724
|
-
const [isTyping, setIsTyping] =
|
|
5725
|
-
const typingTimer =
|
|
5748
|
+
const [calendarMode, setCalendarMode] = useState39(null);
|
|
5749
|
+
const [showTimezoneModal, setShowTimezoneModal] = useState39(false);
|
|
5750
|
+
const [showMembersModal, setShowMembersModal] = useState39(false);
|
|
5751
|
+
const [selectedParticipants, setSelectedParticipants] = useState39(/* @__PURE__ */ new Set());
|
|
5752
|
+
const [isSubmitting, setIsSubmitting] = useState39(false);
|
|
5753
|
+
const [localSearchQuery, setLocalSearchQuery] = useState39(membersSearchQuery);
|
|
5754
|
+
const [isTyping, setIsTyping] = useState39(false);
|
|
5755
|
+
const typingTimer = useRef15(null);
|
|
5726
5756
|
const handleSearchInput = (e) => {
|
|
5727
5757
|
const val = e.target.value;
|
|
5728
5758
|
setLocalSearchQuery(val);
|