@retinalabsllc/zairusjs 0.4.7 → 0.4.9
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 -10
- package/dist/index.d.ts +1 -10
- package/dist/index.js +177 -207
- package/dist/index.mjs +96 -126
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -20,7 +20,7 @@ var Faq = ({
|
|
|
20
20
|
"div",
|
|
21
21
|
{
|
|
22
22
|
key: index,
|
|
23
|
-
className: `transition-all duration-300 ${!isLast ? "border-b border-neutral-
|
|
23
|
+
className: `transition-all duration-300 ${!isLast ? "border-b border-neutral-100" : ""}`
|
|
24
24
|
},
|
|
25
25
|
/* @__PURE__ */ React.createElement(
|
|
26
26
|
"button",
|
|
@@ -331,7 +331,7 @@ function AuthFormInner({
|
|
|
331
331
|
}
|
|
332
332
|
return false;
|
|
333
333
|
};
|
|
334
|
-
return /* @__PURE__ */ React4.createElement("div", { className: "w-full max-w-md mx-auto
|
|
334
|
+
return /* @__PURE__ */ React4.createElement("div", { className: "w-full max-w-md mx-auto flex flex-col items-center gap-4 relative z-10 animate-in fade-in duration-300" }, /* @__PURE__ */ React4.createElement("div", { className: "w-full bg-white rounded-2xl border border-neutral-100/50 overflow-hidden" }, /* @__PURE__ */ React4.createElement("div", { className: "p-8 md:p-12" }, step === "INPUT" && /* @__PURE__ */ React4.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ React4.createElement("div", { className: "mb-12 text-center mt-2" }, /* @__PURE__ */ React4.createElement("h2", { className: " font-serif text-xl text-black mb-2 tracking-tight " }, mode === "LOGIN" ? `${companyName} ${workspaceLabel}` : "Create Account"), /* @__PURE__ */ React4.createElement("div", { className: "text-[13px] text-neutral-500" }, mode === "LOGIN" ? /* @__PURE__ */ React4.createElement(React4.Fragment, null, "Don't have an account? ", /* @__PURE__ */ React4.createElement("button", { type: "button", onClick: () => {
|
|
335
335
|
setMode("SIGNUP");
|
|
336
336
|
setSignupStep(getInitialSignupStep());
|
|
337
337
|
}, className: "text-black transition-colors ml-1" }, "Sign up")) : /* @__PURE__ */ React4.createElement(React4.Fragment, null, "Already have an account? ", /* @__PURE__ */ React4.createElement("button", { type: "button", onClick: () => setMode("LOGIN"), className: "text-black transition-colors ml-1" }, "Log in")))), /* @__PURE__ */ React4.createElement("form", { className: "space-y-6", autoComplete: "off", onSubmit: (e) => {
|
|
@@ -347,7 +347,7 @@ function AuthFormInner({
|
|
|
347
347
|
onChange: (e) => setFirstName(cleanAlpha(e.target.value)),
|
|
348
348
|
required: true,
|
|
349
349
|
autoFocus: true,
|
|
350
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
350
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black outline-none focus:border-black transition-all duration-300",
|
|
351
351
|
placeholder: "First name"
|
|
352
352
|
}
|
|
353
353
|
)), /* @__PURE__ */ React4.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React4.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Last Name"), /* @__PURE__ */ React4.createElement(
|
|
@@ -357,7 +357,7 @@ function AuthFormInner({
|
|
|
357
357
|
value: lastName,
|
|
358
358
|
onChange: (e) => setLastName(cleanAlpha(e.target.value)),
|
|
359
359
|
required: true,
|
|
360
|
-
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-
|
|
360
|
+
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-100 text-black outline-none focus:border-black transition-all duration-300",
|
|
361
361
|
placeholder: "Last name"
|
|
362
362
|
}
|
|
363
363
|
))), mode === "SIGNUP" && signupStep === "ORGANIZATION" && requireOrganization && /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React4.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React4.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Organization Name"), /* @__PURE__ */ React4.createElement(
|
|
@@ -368,7 +368,7 @@ function AuthFormInner({
|
|
|
368
368
|
onChange: (e) => setOrgName(cleanOrgName(e.target.value)),
|
|
369
369
|
required: true,
|
|
370
370
|
autoFocus: true,
|
|
371
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
371
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black outline-none focus:border-black transition-all duration-300",
|
|
372
372
|
placeholder: "Acme Corporation"
|
|
373
373
|
}
|
|
374
374
|
))), (mode === "LOGIN" || mode === "SIGNUP" && signupStep === "EMAIL_ID") && /* @__PURE__ */ React4.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React4.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React4.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Retina ID"), /* @__PURE__ */ React4.createElement(
|
|
@@ -379,7 +379,7 @@ function AuthFormInner({
|
|
|
379
379
|
onChange: (e) => setEmailId(cleanEmailId(e.target.value)),
|
|
380
380
|
required: true,
|
|
381
381
|
autoFocus: true,
|
|
382
|
-
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-
|
|
382
|
+
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-100 text-black outline-none focus:border-black transition-all duration-300",
|
|
383
383
|
placeholder: "name@company.com"
|
|
384
384
|
}
|
|
385
385
|
)), mode === "SIGNUP" && /* @__PURE__ */ React4.createElement("div", { className: "flex items-start gap-3 mt-4" }, /* @__PURE__ */ React4.createElement(
|
|
@@ -416,7 +416,7 @@ function AuthFormInner({
|
|
|
416
416
|
maxLength: 1,
|
|
417
417
|
value: digit,
|
|
418
418
|
onChange: (e) => handleOtpChange(index, e.target.value),
|
|
419
|
-
className: "w-10 h-10 text-center text-xl bg-transparent border-b-2 border-neutral-
|
|
419
|
+
className: "w-10 h-10 text-center text-xl bg-transparent border-b-2 border-neutral-100 text-black outline-none focus:border-black transition-all duration-300"
|
|
420
420
|
}
|
|
421
421
|
))), /* @__PURE__ */ React4.createElement(
|
|
422
422
|
ThreeDActionButton,
|
|
@@ -427,7 +427,17 @@ function AuthFormInner({
|
|
|
427
427
|
className: "w-full"
|
|
428
428
|
},
|
|
429
429
|
"Verify Code"
|
|
430
|
-
)))))
|
|
430
|
+
))))), /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col items-center gap-1.5 animate-in slide-in-from-bottom-3 duration-500 delay-100" }, /* @__PURE__ */ React4.createElement("div", { className: "flex items-center gap-2.5 px-3 py-1.5 bg-white rounded-full" }, /* @__PURE__ */ React4.createElement("div", { className: "w-5 h-5 bg-neutral-100 rounded-full flex items-center justify-center shrink-0 overflow-hidden relative" }, /* @__PURE__ */ React4.createElement(
|
|
431
|
+
"img",
|
|
432
|
+
{
|
|
433
|
+
src: "/assets/retina-logo.jpg",
|
|
434
|
+
alt: "Retina Labs Logo",
|
|
435
|
+
className: "w-full h-full object-cover rounded-full",
|
|
436
|
+
onError: (e) => {
|
|
437
|
+
e.currentTarget.style.display = "none";
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
)), /* @__PURE__ */ React4.createElement("span", { className: "text-[11px] font-medium text-neutral-700 tracking-tight pr-1" }, "Retina Labs Company")), /* @__PURE__ */ React4.createElement("span", { className: "text-[8px] text-neutral-400 tracking-[0.25em] uppercase" }, "Authentication")));
|
|
431
441
|
}
|
|
432
442
|
var ZairusAuth = (props) => {
|
|
433
443
|
if (props.useRecaptcha && props.recaptchaSiteKey) {
|
|
@@ -515,9 +525,9 @@ var Footer = ({
|
|
|
515
525
|
const toggleColumn = (idx) => {
|
|
516
526
|
setOpenCol(openCol === idx ? null : idx);
|
|
517
527
|
};
|
|
518
|
-
return /* @__PURE__ */ React6.createElement("div", { className: "" }, topSection && topSection, /* @__PURE__ */ React6.createElement("footer", { className: "relative px-6 overflow-hidden flex flex-col" }, /* @__PURE__ */ React6.createElement("div", { className: "relative w-full max-w-7xl mx-auto z-20 flex flex-col" }, /* @__PURE__ */ React6.createElement("div", { className: "relative py-12 md:py-16" }, /* @__PURE__ */ React6.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start gap-12 lg:gap-16 mb-12 text-left" }, /* @__PURE__ */ React6.createElement("div", { className: "w-full lg:max-w-sm flex flex-col items-start justify-between shrink-0" }, /* @__PURE__ */ React6.createElement("div", null, /* @__PURE__ */ React6.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed pr-4" }, description))), /* @__PURE__ */ React6.createElement("div", { className: "w-full lg:flex-1 lg:max-w-2xl" }, /* @__PURE__ */ React6.createElement("div", { className: "hidden md:grid grid-cols-2 gap-x-16 lg:gap-x-24 gap-y-12" }, columns.map((col, idx) => /* @__PURE__ */ React6.createElement("div", { key: idx, className: "flex flex-col" }, /* @__PURE__ */ React6.createElement("h4", { className: "text-[11px] tracking-[0.2em] text-black mb-6 uppercase" }, col.title), /* @__PURE__ */ React6.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500" }, col.links.map((link, lIdx) => /* @__PURE__ */ React6.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React6.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors block truncate" }, link.label) : /* @__PURE__ */ React6.createElement(Link3, { href: link.href, className: "hover:text-black transition-colors block truncate" }, link.label))))))), /* @__PURE__ */ React6.createElement("div", { className: "flex flex-col md:hidden w-full border-t border-neutral-
|
|
528
|
+
return /* @__PURE__ */ React6.createElement("div", { className: "" }, topSection && topSection, /* @__PURE__ */ React6.createElement("footer", { className: "relative px-6 overflow-hidden flex flex-col" }, /* @__PURE__ */ React6.createElement("div", { className: "relative w-full max-w-7xl mx-auto z-20 flex flex-col" }, /* @__PURE__ */ React6.createElement("div", { className: "relative py-12 md:py-16" }, /* @__PURE__ */ React6.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start gap-12 lg:gap-16 mb-12 text-left" }, /* @__PURE__ */ React6.createElement("div", { className: "w-full lg:max-w-sm flex flex-col items-start justify-between shrink-0" }, /* @__PURE__ */ React6.createElement("div", null, /* @__PURE__ */ React6.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed pr-4" }, description))), /* @__PURE__ */ React6.createElement("div", { className: "w-full lg:flex-1 lg:max-w-2xl" }, /* @__PURE__ */ React6.createElement("div", { className: "hidden md:grid grid-cols-2 gap-x-16 lg:gap-x-24 gap-y-12" }, columns.map((col, idx) => /* @__PURE__ */ React6.createElement("div", { key: idx, className: "flex flex-col" }, /* @__PURE__ */ React6.createElement("h4", { className: "text-[11px] tracking-[0.2em] text-black mb-6 uppercase" }, col.title), /* @__PURE__ */ React6.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500" }, col.links.map((link, lIdx) => /* @__PURE__ */ React6.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React6.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors block truncate" }, link.label) : /* @__PURE__ */ React6.createElement(Link3, { href: link.href, className: "hover:text-black transition-colors block truncate" }, link.label))))))), /* @__PURE__ */ React6.createElement("div", { className: "flex flex-col md:hidden w-full border-t border-neutral-100 mt-4" }, columns.map((col, idx) => {
|
|
519
529
|
const isOpen = openCol === idx;
|
|
520
|
-
return /* @__PURE__ */ React6.createElement("div", { key: idx, className: "border-b border-neutral-
|
|
530
|
+
return /* @__PURE__ */ React6.createElement("div", { key: idx, className: "border-b border-neutral-100" }, /* @__PURE__ */ React6.createElement(
|
|
521
531
|
"button",
|
|
522
532
|
{
|
|
523
533
|
onClick: () => toggleColumn(idx),
|
|
@@ -535,7 +545,7 @@ var Footer = ({
|
|
|
535
545
|
/* @__PURE__ */ React6.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 9l-7 7-7-7" })
|
|
536
546
|
)
|
|
537
547
|
), /* @__PURE__ */ React6.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ React6.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React6.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500 pt-2" }, col.links.map((link, lIdx) => /* @__PURE__ */ React6.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React6.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors" }, link.label) : /* @__PURE__ */ React6.createElement(Link3, { href: link.href, className: "hover:text-black transition-colors" }, link.label)))))));
|
|
538
|
-
})))), /* @__PURE__ */ React6.createElement("div", { className: "pt-8 mt-4 border-t border-neutral-
|
|
548
|
+
})))), /* @__PURE__ */ React6.createElement("div", { className: "pt-8 mt-4 border-t border-neutral-100 flex flex-col-reverse md:flex-row justify-between items-start md:items-center gap-6 relative z-20" }, /* @__PURE__ */ React6.createElement("p", { className: "text-[11px] text-neutral-400 tracking-widest text-left" }, copyrightText), socialLinks && socialLinks.length > 0 && /* @__PURE__ */ React6.createElement("div", { className: "flex items-center gap-6" }, socialLinks.map((social, idx) => /* @__PURE__ */ React6.createElement(
|
|
539
549
|
"a",
|
|
540
550
|
{
|
|
541
551
|
key: idx,
|
|
@@ -582,7 +592,7 @@ var HeroSection = ({
|
|
|
582
592
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
583
593
|
}
|
|
584
594
|
}
|
|
585
|
-
), /* @__PURE__ */ React7.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-10" }, badgeText && /* @__PURE__ */ React7.createElement("div", { className: "inline-flex items-center gap-1.5 mb-6 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md shadow-xs" }, /* @__PURE__ */ React7.createElement("span", { className: "text-[10px] tracking-[0.4em] text-white uppercase" }, badgeText)), /* @__PURE__ */ React7.createElement("h1", { className: " text-[40px] md:text-5xl lg:text-7xl text-white tracking-tight leading-[1.05] max-w-4xl mb-4" }, titlePrefix), /* @__PURE__ */ React7.createElement("div", { className: "flex justify-center mt-2 mb-10 md:mb-14" }, /* @__PURE__ */ React7.createElement("span", { className: "relative font-serif inline-block mx-1.5 px-4 py-2 md:py-3 bg-[#21a473]/25 border border-[#3ae9a8] rounded-sm text-white select-none text-4xl lg:text-6xl tracking-tight" }, /* @__PURE__ */ React7.createElement("span", { className: "absolute top-[-3.5px] left-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute top-[-3.5px] right-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute bottom-[-3.5px] left-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute bottom-[-3.5px] right-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), highlightText, /* @__PURE__ */ React7.createElement("span", { className: "absolute -bottom-5 -right-5 flex items-center z-20 pointer-events-none select-none filter drop-shadow-[0_2px_4px_rgba(0,0,0,0.25)]" }, /* @__PURE__ */ React7.createElement("svg", { width: "18", height: "22", viewBox: "0 0 16 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "transform -rotate-12" }, /* @__PURE__ */ React7.createElement("path", { d: "M1 1V17.8L5.8 13.1H12.8L1 1Z", fill: "#21a473", stroke: "white", strokeWidth: "1.8", strokeLinejoin: "round" })), /* @__PURE__ */ React7.createElement("span", { className: "ml-1 bg-[#21a473] text-[10px] text-white px-2 py-0.5 rounded-full border border-white tracking-wide" }, cursorLabel)))), subtitle && /* @__PURE__ */ React7.createElement("p", { className: "text-[13px] md:text-[15px] text-[#bbf7df]/90 max-w-xl mx-auto mb-10 font-light leading-relaxed" }, subtitle), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-10" }, ctaText && ctaHref && /* @__PURE__ */ React7.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React7.createElement(ThreeDButton, { href: ctaHref }, ctaText)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React7.createElement(
|
|
595
|
+
), /* @__PURE__ */ React7.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-10" }, badgeText && /* @__PURE__ */ React7.createElement("div", { className: "inline-flex items-center gap-1.5 mb-6 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md shadow-xs" }, /* @__PURE__ */ React7.createElement("span", { className: "text-[10px] tracking-[0.4em] text-white uppercase" }, badgeText)), /* @__PURE__ */ React7.createElement("h1", { className: " text-[40px] font-light md:text-5xl lg:text-7xl text-white tracking-tight leading-[1.05] max-w-4xl mb-4" }, titlePrefix), /* @__PURE__ */ React7.createElement("div", { className: "flex justify-center mt-2 mb-10 md:mb-14" }, /* @__PURE__ */ React7.createElement("span", { className: "relative font-serif inline-block mx-1.5 px-4 py-2 md:py-3 bg-[#21a473]/25 border border-[#3ae9a8] rounded-sm text-white select-none text-4xl lg:text-6xl tracking-tight" }, /* @__PURE__ */ React7.createElement("span", { className: "absolute top-[-3.5px] left-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute top-[-3.5px] right-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute bottom-[-3.5px] left-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), /* @__PURE__ */ React7.createElement("span", { className: "absolute bottom-[-3.5px] right-[-3.5px] w-2 h-2 bg-white border border-[#21a473] rounded-[1px] z-10" }), highlightText, /* @__PURE__ */ React7.createElement("span", { className: "absolute -bottom-5 -right-5 flex items-center z-20 pointer-events-none select-none filter drop-shadow-[0_2px_4px_rgba(0,0,0,0.25)]" }, /* @__PURE__ */ React7.createElement("svg", { width: "18", height: "22", viewBox: "0 0 16 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "transform -rotate-12" }, /* @__PURE__ */ React7.createElement("path", { d: "M1 1V17.8L5.8 13.1H12.8L1 1Z", fill: "#21a473", stroke: "white", strokeWidth: "1.8", strokeLinejoin: "round" })), /* @__PURE__ */ React7.createElement("span", { className: "ml-1 bg-[#21a473] text-[10px] text-white px-2 py-0.5 rounded-full border border-white tracking-wide" }, cursorLabel)))), subtitle && /* @__PURE__ */ React7.createElement("p", { className: "text-[13px] md:text-[15px] text-[#bbf7df]/90 max-w-xl mx-auto mb-10 font-light leading-relaxed" }, subtitle), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-10" }, ctaText && ctaHref && /* @__PURE__ */ React7.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React7.createElement(ThreeDButton, { href: ctaHref }, ctaText)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React7.createElement(
|
|
586
596
|
Link4,
|
|
587
597
|
{
|
|
588
598
|
href: secondaryCtaHref,
|
|
@@ -708,7 +718,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
708
718
|
{
|
|
709
719
|
onClick: () => scroll("left"),
|
|
710
720
|
disabled: !canScrollLeft,
|
|
711
|
-
className: "p-4 border border-neutral-
|
|
721
|
+
className: "p-4 border border-neutral-100 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-100 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none",
|
|
712
722
|
"aria-label": "Previous feature"
|
|
713
723
|
},
|
|
714
724
|
/* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowLeft01Icon, size: 20 })
|
|
@@ -717,7 +727,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
717
727
|
{
|
|
718
728
|
onClick: () => scroll("right"),
|
|
719
729
|
disabled: !canScrollRight,
|
|
720
|
-
className: "p-4 border border-neutral-
|
|
730
|
+
className: "p-4 border border-neutral-100 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-100 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none",
|
|
721
731
|
"aria-label": "Next feature"
|
|
722
732
|
},
|
|
723
733
|
/* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowRight01Icon, size: 20 })
|
|
@@ -734,7 +744,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
734
744
|
{
|
|
735
745
|
onClick: () => scroll("left"),
|
|
736
746
|
disabled: !canScrollLeft,
|
|
737
|
-
className: "p-4 border border-neutral-
|
|
747
|
+
className: "p-4 border border-neutral-100 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
738
748
|
},
|
|
739
749
|
/* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowLeft01Icon, size: 20 })
|
|
740
750
|
), /* @__PURE__ */ React9.createElement(
|
|
@@ -742,7 +752,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
742
752
|
{
|
|
743
753
|
onClick: () => scroll("right"),
|
|
744
754
|
disabled: !canScrollRight,
|
|
745
|
-
className: "p-4 border border-neutral-
|
|
755
|
+
className: "p-4 border border-neutral-100 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
746
756
|
},
|
|
747
757
|
/* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowRight01Icon, size: 20 })
|
|
748
758
|
))));
|
|
@@ -821,7 +831,7 @@ var ManagedDocument = ({
|
|
|
821
831
|
}) => {
|
|
822
832
|
return (
|
|
823
833
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
824
|
-
/* @__PURE__ */ React12.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React12.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React12.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-500 text-left block uppercase" }, tagline), /* @__PURE__ */ React12.createElement("h1", { className: " font-serif text-4xl md:text-5xl mt-4 text-black tracking-tight text-left" }, title)), sections.map((section, index) => /* @__PURE__ */ React12.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React12.createElement("h2", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left uppercase" }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React12.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React12.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React12.createElement("p", { className: "
|
|
834
|
+
/* @__PURE__ */ React12.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React12.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React12.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-500 text-left block uppercase" }, tagline), /* @__PURE__ */ React12.createElement("h1", { className: " font-serif text-4xl md:text-5xl mt-4 text-black tracking-tight text-left" }, title)), sections.map((section, index) => /* @__PURE__ */ React12.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React12.createElement("h2", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left uppercase" }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React12.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React12.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React12.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React12.createElement("p", { className: "text-[12px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ React12.createElement(
|
|
825
835
|
"a",
|
|
826
836
|
{
|
|
827
837
|
href: `mailto:${contactEmail}`,
|
|
@@ -1139,7 +1149,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1139
1149
|
backgroundRepeat: "repeat"
|
|
1140
1150
|
}
|
|
1141
1151
|
}
|
|
1142
|
-
), /* @__PURE__ */ React20.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React20.createElement("div", { className: "mb-10 border-b border-neutral-
|
|
1152
|
+
), /* @__PURE__ */ React20.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React20.createElement("div", { className: "mb-10 border-b border-neutral-100 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-500 uppercase" }, tagline), /* @__PURE__ */ React20.createElement("h1", { className: " font-serif text-4xl md:text-5xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 uppercase" }, subtitle)), /* @__PURE__ */ React20.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ React20.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ React20.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React20.createElement("div", { className: "grow h-px bg-neutral-200" }), /* @__PURE__ */ React20.createElement("span", { className: "shrink mx-4 text-[10px] tracking-[0.2em] text-neutral-400 uppercase" }, dividerText), /* @__PURE__ */ React20.createElement("div", { className: "grow h-px bg-neutral-200" })), ctaText && ctaHref && /* @__PURE__ */ React20.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React20.createElement(
|
|
1143
1153
|
ThreeDButton,
|
|
1144
1154
|
{
|
|
1145
1155
|
href: ctaHref,
|
|
@@ -1172,7 +1182,7 @@ var TextInput = ({
|
|
|
1172
1182
|
readOnly,
|
|
1173
1183
|
autoComplete: "off",
|
|
1174
1184
|
spellCheck: "false",
|
|
1175
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
1185
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
1176
1186
|
}
|
|
1177
1187
|
));
|
|
1178
1188
|
var NumberInput = ({
|
|
@@ -1195,7 +1205,7 @@ var NumberInput = ({
|
|
|
1195
1205
|
disabled,
|
|
1196
1206
|
autoComplete: "off",
|
|
1197
1207
|
spellCheck: "false",
|
|
1198
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
1208
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black disabled:opacity-50"
|
|
1199
1209
|
}
|
|
1200
1210
|
));
|
|
1201
1211
|
|
|
@@ -1249,7 +1259,7 @@ var PortfolioHero = ({
|
|
|
1249
1259
|
ref: heroContentRef,
|
|
1250
1260
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1251
1261
|
},
|
|
1252
|
-
/* @__PURE__ */ React22.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React22.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-neutral-
|
|
1262
|
+
/* @__PURE__ */ React22.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React22.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-neutral-100 shrink-0 shadow-sm" }, /* @__PURE__ */ React22.createElement(
|
|
1253
1263
|
Image7,
|
|
1254
1264
|
{
|
|
1255
1265
|
src: imageSrc,
|
|
@@ -1344,11 +1354,11 @@ var ProductHero = ({
|
|
|
1344
1354
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
1345
1355
|
}
|
|
1346
1356
|
}
|
|
1347
|
-
), /* @__PURE__ */ React23.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-10" }, badgeText && /* @__PURE__ */ React23.createElement("div", { className: "inline-flex items-center gap-1.5 mb-6 px-4 py-1.5 rounded-full bg-neutral-100 border border-neutral-
|
|
1357
|
+
), /* @__PURE__ */ React23.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-10" }, badgeText && /* @__PURE__ */ React23.createElement("div", { className: "inline-flex items-center gap-1.5 mb-6 px-4 py-1.5 rounded-full bg-neutral-100 border border-neutral-100 backdrop-blur-md shadow-xs" }, /* @__PURE__ */ React23.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-600 uppercase font-medium" }, badgeText)), /* @__PURE__ */ React23.createElement("h1", { className: " font-serif text-[40px] font-light md:text-5xl lg:text-7xl text-black tracking-tight leading-[1.05] max-w-4xl mb-4" }, titlePrefix, " ", /* @__PURE__ */ React23.createElement("span", { className: "bg-linear-to-r from-[#043324] to-[#21a473] bg-clip-text text-transparent italic pr-2" }, highlightText)), subtitle && /* @__PURE__ */ React23.createElement("p", { className: "text-[13px] md:text-[16px] text-neutral-600 max-w-xl mx-auto mb-10 font-light leading-relaxed" }, subtitle), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-12 relative z-30" }, ctaText && ctaHref && /* @__PURE__ */ React23.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React23.createElement(ThreeDButton, { href: ctaHref }, ctaText)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React23.createElement(
|
|
1348
1358
|
Link8,
|
|
1349
1359
|
{
|
|
1350
1360
|
href: secondaryCtaHref,
|
|
1351
|
-
className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 bg-white text-black border border-neutral-
|
|
1361
|
+
className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 bg-white text-black border border-neutral-100 transition-colors hover:bg-neutral-50 outline-none shadow-sm"
|
|
1352
1362
|
},
|
|
1353
1363
|
secondaryCtaText
|
|
1354
1364
|
)), /* @__PURE__ */ React23.createElement("div", { className: "relative w-full max-w-4xl mx-auto px-2 sm:px-6 mt-8 z-20" }, /* @__PURE__ */ React23.createElement("div", { className: "relative w-full aspect-4/3 md:aspect-video flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("button", { onClick: prevSlide, className: "absolute left-0 sm:-left-12 z-40 p-2 text-neutral-400 hover:text-black transition-colors outline-none", "aria-label": "Previous image" }, /* @__PURE__ */ React23.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("path", { d: "M15 18l-6-6 6-6" }))), /* @__PURE__ */ React23.createElement("button", { onClick: nextSlide, className: "absolute right-0 sm:-right-12 z-40 p-2 text-neutral-400 hover:text-black transition-colors outline-none", "aria-label": "Next image" }, /* @__PURE__ */ React23.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("path", { d: "M9 18l6-6-6-6" }))), images.map((src, idx) => /* @__PURE__ */ React23.createElement(
|
|
@@ -1525,7 +1535,7 @@ import React26, { useState as useState10 } from "react";
|
|
|
1525
1535
|
import Link10 from "next/link";
|
|
1526
1536
|
import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
|
|
1527
1537
|
import {
|
|
1528
|
-
|
|
1538
|
+
NewOfficeIcon,
|
|
1529
1539
|
SidebarLeft01Icon as SidebarLeft01Icon2,
|
|
1530
1540
|
CheckmarkCircle01Icon,
|
|
1531
1541
|
LogoutCircle02Icon,
|
|
@@ -1571,15 +1581,15 @@ var UniversalHeader = ({
|
|
|
1571
1581
|
"button",
|
|
1572
1582
|
{
|
|
1573
1583
|
onClick: () => setShowSwitcherDialog(true),
|
|
1574
|
-
className: "w-10 h-10 rounded-full border border-neutral-
|
|
1584
|
+
className: "w-10 h-10 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-neutral-500 hover:text-black hover:border-black hover:bg-neutral-50 transition-all group outline-none",
|
|
1575
1585
|
"aria-label": "Switch Workspace"
|
|
1576
1586
|
},
|
|
1577
|
-
/* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon:
|
|
1587
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: NewOfficeIcon, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
|
|
1578
1588
|
), showLogoutAction && /* @__PURE__ */ React26.createElement(
|
|
1579
1589
|
"button",
|
|
1580
1590
|
{
|
|
1581
1591
|
onClick: () => setShowLogoutDialog(true),
|
|
1582
|
-
className: "w-10 h-10 rounded-full border border-neutral-
|
|
1592
|
+
className: "w-10 h-10 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-neutral-500 hover:text-black hover:border-black hover:bg-neutral-50 transition-all group outline-none",
|
|
1583
1593
|
"aria-label": "Secure Logout"
|
|
1584
1594
|
},
|
|
1585
1595
|
/* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: LogoutCircle02Icon, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
|
|
@@ -1587,7 +1597,7 @@ var UniversalHeader = ({
|
|
|
1587
1597
|
Link10,
|
|
1588
1598
|
{
|
|
1589
1599
|
href: backUrl,
|
|
1590
|
-
className: "flex items-center justify-center w-10 h-10 border border-neutral-
|
|
1600
|
+
className: "flex items-center justify-center w-10 h-10 border border-neutral-100 bg-white rounded-full text-neutral-500 hover:text-black hover:border-black hover:bg-neutral-50 transition-all group outline-none",
|
|
1591
1601
|
"aria-label": "Go Back"
|
|
1592
1602
|
},
|
|
1593
1603
|
/* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: ArrowLeft01Icon2, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
|
|
@@ -1733,7 +1743,7 @@ var UniversalOrganizationPage = ({
|
|
|
1733
1743
|
placeholder: "Acme Corporation",
|
|
1734
1744
|
maxLength: 50
|
|
1735
1745
|
}
|
|
1736
|
-
), /* @__PURE__ */ React27.createElement("div", { className: "space-y-2 relative w-full" }, /* @__PURE__ */ React27.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Organization Slug"), /* @__PURE__ */ React27.createElement("div", { className: "flex items-center relative w-full" }, /* @__PURE__ */ React27.createElement("span", { className: "text-neutral-400 text-sm py-3 pr-2 border-b border-neutral-
|
|
1746
|
+
), /* @__PURE__ */ React27.createElement("div", { className: "space-y-2 relative w-full" }, /* @__PURE__ */ React27.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Organization Slug"), /* @__PURE__ */ React27.createElement("div", { className: "flex items-center relative w-full" }, /* @__PURE__ */ React27.createElement("span", { className: "text-neutral-400 text-sm py-3 pr-2 border-b border-neutral-100 shrink-0" }, slugPrefixUrl), /* @__PURE__ */ React27.createElement(
|
|
1737
1747
|
"input",
|
|
1738
1748
|
{
|
|
1739
1749
|
type: "text",
|
|
@@ -1742,7 +1752,7 @@ var UniversalOrganizationPage = ({
|
|
|
1742
1752
|
onChange: (e) => handleSlugChange(e.target.value),
|
|
1743
1753
|
spellCheck: "false",
|
|
1744
1754
|
autoComplete: "off",
|
|
1745
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
1755
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black pr-8 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1746
1756
|
placeholder: "acme-corp"
|
|
1747
1757
|
}
|
|
1748
1758
|
), /* @__PURE__ */ React27.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React27.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React27.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ React27.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React27.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React27.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React27.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React27.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__ */ React27.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React27.createElement(
|
|
@@ -1946,7 +1956,7 @@ var resolveThemeColor = (colorCode) => {
|
|
|
1946
1956
|
case "COLOR_F":
|
|
1947
1957
|
return "bg-pink-100 border-pink-200";
|
|
1948
1958
|
default:
|
|
1949
|
-
return "bg-neutral-100 border-neutral-
|
|
1959
|
+
return "bg-neutral-100 border-neutral-100";
|
|
1950
1960
|
}
|
|
1951
1961
|
};
|
|
1952
1962
|
var cleanName = (val) => val.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50);
|
|
@@ -2052,7 +2062,7 @@ var UniversalMembersPage = ({
|
|
|
2052
2062
|
setSelectedMember(null);
|
|
2053
2063
|
setIsRoleModalOpen(false);
|
|
2054
2064
|
};
|
|
2055
|
-
return /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white
|
|
2065
|
+
return /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white " }, /* @__PURE__ */ React29.createElement(ManagedToaster, null), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), canManage && /* @__PURE__ */ React29.createElement(
|
|
2056
2066
|
ThreeDActionButton,
|
|
2057
2067
|
{
|
|
2058
2068
|
onClick: () => setCurrentView("invite"),
|
|
@@ -2079,13 +2089,13 @@ var UniversalMembersPage = ({
|
|
|
2079
2089
|
onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
|
|
2080
2090
|
}
|
|
2081
2091
|
)) : /* @__PURE__ */ React29.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center text-black text-xs ${resolveThemeColor(member.profileColor)}` }, getInitials(member.fullName)), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-black truncate pr-2 sm:pr-4" }, member.fullName, " ", member.userId === currentUserId && /* @__PURE__ */ React29.createElement("span", { className: "text-neutral-400 ml-1 sm:ml-2" }, "(You)")), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-neutral-500 truncate pr-2 sm:pr-4 mt-0.5" }, member.email))),
|
|
2082
|
-
/* @__PURE__ */ React29.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] tracking-[0.2em] text-black border border-neutral-
|
|
2092
|
+
/* @__PURE__ */ React29.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] tracking-[0.2em] text-black border border-neutral-100 px-4 py-2 rounded-full bg-white whitespace-nowrap" }, canManage ? "Manage" : "View"))
|
|
2083
2093
|
))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
|
|
2084
2094
|
"button",
|
|
2085
2095
|
{
|
|
2086
2096
|
onClick: () => onPageChange(currentPage - 1),
|
|
2087
2097
|
disabled: currentPage === 1 || isLoading,
|
|
2088
|
-
className: "p-2 border border-neutral-
|
|
2098
|
+
className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
2089
2099
|
},
|
|
2090
2100
|
/* @__PURE__ */ React29.createElement(HugeiconsIcon15, { icon: ArrowLeft01Icon3, size: 14 })
|
|
2091
2101
|
), /* @__PURE__ */ React29.createElement(
|
|
@@ -2093,7 +2103,7 @@ var UniversalMembersPage = ({
|
|
|
2093
2103
|
{
|
|
2094
2104
|
onClick: () => onPageChange(currentPage + 1),
|
|
2095
2105
|
disabled: currentPage >= totalPages || isLoading,
|
|
2096
|
-
className: "p-2 border border-neutral-
|
|
2106
|
+
className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
2097
2107
|
},
|
|
2098
2108
|
/* @__PURE__ */ React29.createElement(HugeiconsIcon15, { icon: ArrowRight01Icon3, size: 14 })
|
|
2099
2109
|
))))), currentView === "details" && selectedMember && /* @__PURE__ */ React29.createElement("div", { className: "w-full max-w-2xl text-left" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-5" }, selectedMember.displayImage && selectedMember.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-16 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ React29.createElement(
|
|
@@ -2104,16 +2114,16 @@ var UniversalMembersPage = ({
|
|
|
2104
2114
|
className: "w-full h-full object-cover blur-sm transition-all duration-300",
|
|
2105
2115
|
onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
|
|
2106
2116
|
}
|
|
2107
|
-
)) : /* @__PURE__ */ React29.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: " font-serif text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-
|
|
2117
|
+
)) : /* @__PURE__ */ React29.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: " font-serif text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-100 pt-8" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Role"), canChangeRoles && selectedMember.userId !== currentUserId ? /* @__PURE__ */ React29.createElement(
|
|
2108
2118
|
"button",
|
|
2109
2119
|
{
|
|
2110
2120
|
onClick: () => !isUpdatingRole && setIsRoleModalOpen(true),
|
|
2111
2121
|
disabled: isUpdatingRole,
|
|
2112
|
-
className: `flex items-center gap-3 text-xs text-black pl-4 pr-3 py-2 border rounded-full transition-colors disabled:opacity-50 outline-none ${isRoleModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-
|
|
2122
|
+
className: `flex items-center gap-3 text-xs text-black pl-4 pr-3 py-2 border rounded-full transition-colors disabled:opacity-50 outline-none ${isRoleModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
|
|
2113
2123
|
},
|
|
2114
2124
|
selectedMember.role,
|
|
2115
2125
|
isUpdatingRole ? /* @__PURE__ */ React29.createElement(ButtonSpinner3, null) : /* @__PURE__ */ React29.createElement(HugeiconsIcon15, { icon: ArrowDown01Icon2, size: 14, className: "text-neutral-400" })
|
|
2116
|
-
) : /* @__PURE__ */ React29.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ React29.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-
|
|
2126
|
+
) : /* @__PURE__ */ React29.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ React29.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-100" }, /* @__PURE__ */ React29.createElement(
|
|
2117
2127
|
"button",
|
|
2118
2128
|
{
|
|
2119
2129
|
onClick: () => setMemberToDelete(selectedMember),
|
|
@@ -2181,29 +2191,22 @@ var UniversalMembersPage = ({
|
|
|
2181
2191
|
// src/components/UniversalProfileSettings.tsx
|
|
2182
2192
|
import React30, { useState as useState14, useEffect as useEffect11 } from "react";
|
|
2183
2193
|
import toast5 from "react-hot-toast";
|
|
2184
|
-
import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
|
|
2185
|
-
import { ArrowDown01Icon as ArrowDown01Icon3 } from "@hugeicons/core-free-icons";
|
|
2186
2194
|
var UniversalProfileSettings = ({
|
|
2187
2195
|
initialFirstName,
|
|
2188
2196
|
initialLastName,
|
|
2189
2197
|
email,
|
|
2190
|
-
initialProfileColor,
|
|
2191
2198
|
accountStatus = "GOOD",
|
|
2192
2199
|
memberSince,
|
|
2193
2200
|
isReadOnly = false,
|
|
2194
|
-
themeColors,
|
|
2195
2201
|
onSaveProfile
|
|
2196
2202
|
}) => {
|
|
2197
2203
|
const [firstName, setFirstName] = useState14(initialFirstName);
|
|
2198
2204
|
const [lastName, setLastName] = useState14(initialLastName);
|
|
2199
|
-
const [profileColor, setProfileColor] = useState14(initialProfileColor);
|
|
2200
2205
|
const [isSubmitting, setIsSubmitting] = useState14(false);
|
|
2201
|
-
const [isColorModalOpen, setIsColorModalOpen] = useState14(false);
|
|
2202
2206
|
useEffect11(() => {
|
|
2203
2207
|
setFirstName(initialFirstName || "");
|
|
2204
2208
|
setLastName(initialLastName || "");
|
|
2205
|
-
|
|
2206
|
-
}, [initialFirstName, initialLastName, initialProfileColor]);
|
|
2209
|
+
}, [initialFirstName, initialLastName]);
|
|
2207
2210
|
const handleFirstNameChange = (val) => {
|
|
2208
2211
|
setFirstName(val.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50));
|
|
2209
2212
|
};
|
|
@@ -2215,22 +2218,21 @@ var UniversalProfileSettings = ({
|
|
|
2215
2218
|
if (isSubmitting || isReadOnly) return;
|
|
2216
2219
|
setIsSubmitting(true);
|
|
2217
2220
|
try {
|
|
2218
|
-
const res = await onSaveProfile({ firstName, lastName
|
|
2221
|
+
const res = await onSaveProfile({ firstName, lastName });
|
|
2219
2222
|
if (res.success) {
|
|
2220
2223
|
toast5.success("Profile updated successfully.");
|
|
2221
2224
|
setTimeout(() => window.location.reload(), 1e3);
|
|
2222
2225
|
} else {
|
|
2223
|
-
toast5.error(res.error || "
|
|
2226
|
+
toast5.error(res.error || "Uh oh! Something went wrong.");
|
|
2224
2227
|
setIsSubmitting(false);
|
|
2225
2228
|
}
|
|
2226
2229
|
} catch (error) {
|
|
2227
|
-
toast5.error("
|
|
2230
|
+
toast5.error("Uh oh! Something went wrong.");
|
|
2228
2231
|
setIsSubmitting(false);
|
|
2229
2232
|
}
|
|
2230
2233
|
};
|
|
2231
|
-
const hasChanges = firstName !== initialFirstName || lastName !== initialLastName
|
|
2234
|
+
const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
|
|
2232
2235
|
const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
|
|
2233
|
-
const selectedColorDef = themeColors.find((c) => c.id === profileColor) || themeColors[0] || { label: "Default", bgClass: "bg-neutral-100", borderClass: "border-neutral-200" };
|
|
2234
2236
|
return /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ React30.createElement(ManagedToaster, null), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React30.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React30.createElement("h1", { className: " font-serif text-xl text-black mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React30.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React30.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), /* @__PURE__ */ React30.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ React30.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ React30.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React30.createElement(
|
|
2235
2237
|
TextInput,
|
|
2236
2238
|
{
|
|
@@ -2258,24 +2260,13 @@ var UniversalProfileSettings = ({
|
|
|
2258
2260
|
},
|
|
2259
2261
|
disabled: true
|
|
2260
2262
|
}
|
|
2261
|
-
), /* @__PURE__ */ React30.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ React30.createElement("div", { className: "
|
|
2262
|
-
"button",
|
|
2263
|
-
{
|
|
2264
|
-
type: "button",
|
|
2265
|
-
onClick: () => !isReadOnly && setIsColorModalOpen(true),
|
|
2266
|
-
disabled: isReadOnly || isSubmitting,
|
|
2267
|
-
className: "w-full flex items-center justify-between px-2 py-3 text-sm bg-transparent border-b border-neutral-200 text-black transition-all outline-none focus:border-black disabled:opacity-50 disabled:cursor-not-allowed text-left"
|
|
2268
|
-
},
|
|
2269
|
-
/* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React30.createElement("div", { className: `w-4 h-4 rounded-full border ${selectedColorDef.bgClass} ${selectedColorDef.borderClass}` }), /* @__PURE__ */ React30.createElement("span", null, selectedColorDef.label)),
|
|
2270
|
-
/* @__PURE__ */ React30.createElement(HugeiconsIcon16, { icon: ArrowDown01Icon3, size: 14, className: "text-neutral-400 shrink-0" })
|
|
2271
|
-
)), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 border-t border-neutral-100" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ React30.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Account Status"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ React30.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Member Since"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ React30.createElement(
|
|
2263
|
+
), /* @__PURE__ */ React30.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 border-t border-neutral-100" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ React30.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Account Status"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ React30.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Member Since"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ React30.createElement(
|
|
2272
2264
|
"button",
|
|
2273
2265
|
{
|
|
2274
2266
|
type: "button",
|
|
2275
2267
|
onClick: () => {
|
|
2276
2268
|
setFirstName(initialFirstName);
|
|
2277
2269
|
setLastName(initialLastName);
|
|
2278
|
-
setProfileColor(initialProfileColor);
|
|
2279
2270
|
},
|
|
2280
2271
|
className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
|
|
2281
2272
|
},
|
|
@@ -2289,41 +2280,20 @@ var UniversalProfileSettings = ({
|
|
|
2289
2280
|
className: "min-w-32 w-full sm:w-auto"
|
|
2290
2281
|
},
|
|
2291
2282
|
"Save Changes"
|
|
2292
|
-
)))))
|
|
2293
|
-
"button",
|
|
2294
|
-
{
|
|
2295
|
-
type: "button",
|
|
2296
|
-
key: colorOption.id,
|
|
2297
|
-
onClick: () => {
|
|
2298
|
-
setProfileColor(colorOption.id);
|
|
2299
|
-
setIsColorModalOpen(false);
|
|
2300
|
-
},
|
|
2301
|
-
className: `text-left px-4 py-3 text-[12px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${profileColor === colorOption.id ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
|
|
2302
|
-
},
|
|
2303
|
-
/* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React30.createElement("div", { className: `w-3.5 h-3.5 rounded-full border ${colorOption.bgClass} ${colorOption.borderClass}` }), /* @__PURE__ */ React30.createElement("span", { className: "truncate pr-2" }, colorOption.label)),
|
|
2304
|
-
profileColor === colorOption.id && /* @__PURE__ */ React30.createElement("div", { className: "w-1.5 h-1.5 rounded-full shrink-0 bg-black" })
|
|
2305
|
-
))), /* @__PURE__ */ React30.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React30.createElement(
|
|
2306
|
-
"button",
|
|
2307
|
-
{
|
|
2308
|
-
type: "button",
|
|
2309
|
-
onClick: () => setIsColorModalOpen(false),
|
|
2310
|
-
className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none"
|
|
2311
|
-
},
|
|
2312
|
-
"Cancel"
|
|
2313
|
-
)))));
|
|
2283
|
+
))))));
|
|
2314
2284
|
};
|
|
2315
2285
|
|
|
2316
2286
|
// src/components/UniversalBillingPage.tsx
|
|
2317
2287
|
import React31, { useState as useState15 } from "react";
|
|
2318
|
-
import { HugeiconsIcon as
|
|
2288
|
+
import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
|
|
2319
2289
|
import {
|
|
2320
2290
|
ArrowLeft01Icon as ArrowLeft01Icon4,
|
|
2321
2291
|
ArrowRight01Icon as ArrowRight01Icon4,
|
|
2322
2292
|
Loading03Icon as Loading03Icon7,
|
|
2323
|
-
ArrowDown01Icon as
|
|
2293
|
+
ArrowDown01Icon as ArrowDown01Icon3
|
|
2324
2294
|
} from "@hugeicons/core-free-icons";
|
|
2325
|
-
var PageSpinner3 = () => /* @__PURE__ */ React31.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React31.createElement(
|
|
2326
|
-
var ButtonSpinner4 = () => /* @__PURE__ */ React31.createElement(
|
|
2295
|
+
var PageSpinner3 = () => /* @__PURE__ */ React31.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: Loading03Icon7, size: 32, className: "animate-spin mb-4 text-neutral-400" }));
|
|
2296
|
+
var ButtonSpinner4 = () => /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: Loading03Icon7, size: 16, className: "animate-spin text-neutral-500" });
|
|
2327
2297
|
var formatDate = (dateString) => {
|
|
2328
2298
|
if (!dateString) return "N/A";
|
|
2329
2299
|
return new Date(dateString).toLocaleDateString("en-US", {
|
|
@@ -2408,22 +2378,22 @@ var UniversalBillingPage = ({
|
|
|
2408
2378
|
{
|
|
2409
2379
|
type: "button",
|
|
2410
2380
|
onClick: () => setIsTimeframeModalOpen(true),
|
|
2411
|
-
className: "px-4 py-3 text-sm bg-transparent border-b border-neutral-
|
|
2381
|
+
className: "px-4 py-3 text-sm bg-transparent border-b border-neutral-100 text-black outline-none focus:border-black shrink-0 text-left"
|
|
2412
2382
|
},
|
|
2413
2383
|
timeframe === "ALL" ? "All Time" : timeframe === "24H" ? "Past 24 Hours" : timeframe === "7D" ? "Past 7 Days" : "Past 30 Days"
|
|
2414
|
-
))) : /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React31.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ React31.createElement(
|
|
2384
|
+
))) : /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React31.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: ArrowLeft01Icon4, size: 12 }), " Back")), isReadOnly && currentView === "list" && /* @__PURE__ */ React31.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), currentView === "list" && /* @__PURE__ */ React31.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-8 w-full" }, (metricPrimaryLabel || metricSecondaryLabel) && /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between sm:items-start pb-8 border-b border-neutral-100 gap-6 sm:gap-0" }, metricPrimaryLabel && /* @__PURE__ */ React31.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricPrimaryLabel), /* @__PURE__ */ React31.createElement("div", { className: "text-xl text-black tracking-tight truncate" }, formatNaira(metricPrimaryValue)), metricPrimarySubtext && /* @__PURE__ */ React31.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricPrimarySubtext)), metricSecondaryLabel && /* @__PURE__ */ React31.createElement("div", { className: "min-w-0 sm:text-right" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricSecondaryLabel), /* @__PURE__ */ React31.createElement("div", { className: "text-xl text-emerald-600 tracking-tight truncate" }, formatNaira(metricSecondaryValue)), metricSecondarySubtext && /* @__PURE__ */ React31.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricSecondarySubtext))), !isReadOnly && showBillingOverview && /* @__PURE__ */ React31.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-4" }, /* @__PURE__ */ React31.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Billing Status"), /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React31.createElement("div", { className: `w-2 h-2 rounded-full shrink-0 ${billingStatus === "ACTIVE" ? "bg-green-500" : "bg-neutral-300"}` }), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-black tracking-widest truncate" }, billingStatus || "UNKNOWN"))), /* @__PURE__ */ React31.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Next Billing Date"), /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-black truncate" }, formatDate(nextBillingDate))), lastPaidDate && /* @__PURE__ */ React31.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Last Paid Date"), /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-neutral-600 truncate" }, formatDate(lastPaidDate)))), !isReadOnly && showUsageMetrics && usageMetrics.length > 0 && /* @__PURE__ */ React31.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-6 truncate block uppercase" }, "Usage & Limits"), /* @__PURE__ */ React31.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4 text-sm text-black" }, usageMetrics.map((metric, idx) => /* @__PURE__ */ React31.createElement("div", { key: idx, className: "flex justify-between border-b border-neutral-50 pb-2" }, /* @__PURE__ */ React31.createElement("span", { className: "text-neutral-500 text-xs" }, metric.label), /* @__PURE__ */ React31.createElement("span", { className: "text-xs text-black" }, metric.value))))), /* @__PURE__ */ React31.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ React31.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-4 truncate block uppercase" }, "Transaction History"), isLoading ? /* @__PURE__ */ React31.createElement(PageSpinner3, null) : invoices.length === 0 ? /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500 py-4" }, "No records found.") : /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React31.createElement("div", { className: "divide-y divide-neutral-100" }, invoices.map((inv) => /* @__PURE__ */ React31.createElement("div", { key: inv.id, onClick: () => {
|
|
2415
2385
|
setSelectedInvoice(inv);
|
|
2416
2386
|
setCurrentView("details");
|
|
2417
|
-
}, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-black truncate pr-4" }, inv.name), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-black" }, formatNaira(inv.amountDue)), /* @__PURE__ */ React31.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ React31.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React31.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-
|
|
2387
|
+
}, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-black truncate pr-4" }, inv.name), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ React31.createElement("p", { className: "text-sm text-black" }, formatNaira(inv.amountDue)), /* @__PURE__ */ React31.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ React31.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React31.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: ArrowLeft01Icon4, size: 14 })), /* @__PURE__ */ React31.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: ArrowRight01Icon4, size: 14 })))))))), currentView === "details" && selectedInvoice && /* @__PURE__ */ React31.createElement("div", { className: "w-full max-w-2xl animate-in fade-in duration-300" }, /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ React31.createElement("div", null, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Breakdown"), /* @__PURE__ */ React31.createElement("h2", { className: " font-serif text-xl text-black mb-1" }, selectedInvoice.name), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate(selectedInvoice.createdAt))), /* @__PURE__ */ React31.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 p-6 sm:p-8 rounded-2xl border border-neutral-100" }, /* @__PURE__ */ React31.createElement("div", null, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Amount"), /* @__PURE__ */ React31.createElement("p", { className: "text-xl text-black" }, formatNaira(selectedInvoice.amountDue))), /* @__PURE__ */ React31.createElement("div", null, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Status"), isModMode ? /* @__PURE__ */ React31.createElement(
|
|
2418
2388
|
"button",
|
|
2419
2389
|
{
|
|
2420
2390
|
onClick: () => !isUpdating && setIsActionModalOpen(true),
|
|
2421
2391
|
disabled: isUpdating,
|
|
2422
|
-
className: `flex items-center gap-3 text-xs text-black px-3 py-1.5 mt-1 border rounded-full transition-colors disabled:opacity-50 outline-none ${isActionModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-
|
|
2392
|
+
className: `flex items-center gap-3 text-xs text-black px-3 py-1.5 mt-1 border rounded-full transition-colors disabled:opacity-50 outline-none ${isActionModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
|
|
2423
2393
|
},
|
|
2424
2394
|
selectedInvoice.status,
|
|
2425
|
-
isUpdating ? /* @__PURE__ */ React31.createElement(ButtonSpinner4, null) : /* @__PURE__ */ React31.createElement(
|
|
2426
|
-
) : /* @__PURE__ */ React31.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ React31.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-
|
|
2395
|
+
isUpdating ? /* @__PURE__ */ React31.createElement(ButtonSpinner4, null) : /* @__PURE__ */ React31.createElement(HugeiconsIcon16, { icon: ArrowDown01Icon3, size: 14, className: "text-neutral-400" })
|
|
2396
|
+
) : /* @__PURE__ */ React31.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ React31.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-100/60 mt-2" }, /* @__PURE__ */ React31.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Reference ID"), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500 bg-white px-3 py-2 rounded-full border border-neutral-100 inline-block" }, selectedInvoice.id))), /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, !isModMode && selectedInvoice.status === "SCHEDULED" && onPayInvoice && /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ React31.createElement(
|
|
2427
2397
|
ThreeDActionButton,
|
|
2428
2398
|
{
|
|
2429
2399
|
onClick: handlePayment,
|
|
@@ -2473,8 +2443,8 @@ var UniversalBillingPage = ({
|
|
|
2473
2443
|
|
|
2474
2444
|
// src/components/UniversalDashboardPage.tsx
|
|
2475
2445
|
import React32, { useState as useState16 } from "react";
|
|
2476
|
-
import { HugeiconsIcon as
|
|
2477
|
-
import { ArrowDown01Icon as
|
|
2446
|
+
import { HugeiconsIcon as HugeiconsIcon17 } from "@hugeicons/react";
|
|
2447
|
+
import { ArrowDown01Icon as ArrowDown01Icon4, Loading03Icon as Loading03Icon8 } from "@hugeicons/core-free-icons";
|
|
2478
2448
|
var UniversalDashboardPage = ({
|
|
2479
2449
|
headerTitle,
|
|
2480
2450
|
headerDescription,
|
|
@@ -2488,7 +2458,7 @@ var UniversalDashboardPage = ({
|
|
|
2488
2458
|
const [isTimeframeModalOpen, setIsTimeframeModalOpen] = useState16(false);
|
|
2489
2459
|
const selectedTimeframe = timeframes.find((t) => t.id === activeTimeframe) || timeframes[0];
|
|
2490
2460
|
if (isLoading) {
|
|
2491
|
-
return /* @__PURE__ */ React32.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React32.createElement(
|
|
2461
|
+
return /* @__PURE__ */ React32.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React32.createElement(HugeiconsIcon17, { icon: Loading03Icon8, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
2492
2462
|
}
|
|
2493
2463
|
return /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 min-h-full pb-10" }, /* @__PURE__ */ React32.createElement(ManagedToaster, null), /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" }, /* @__PURE__ */ React32.createElement("div", null, /* @__PURE__ */ React32.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React32.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), timeframes.length > 0 && selectedTimeframe && onTimeframeChange && /* @__PURE__ */ React32.createElement(
|
|
2494
2464
|
"button",
|
|
@@ -2497,7 +2467,7 @@ var UniversalDashboardPage = ({
|
|
|
2497
2467
|
className: "flex items-center gap-3 px-4 py-2 text-xs bg-white text-black outline-none rounded-full transition-colors hover:bg-neutral-50 shrink-0"
|
|
2498
2468
|
},
|
|
2499
2469
|
/* @__PURE__ */ React32.createElement("span", null, selectedTimeframe.label),
|
|
2500
|
-
/* @__PURE__ */ React32.createElement(
|
|
2470
|
+
/* @__PURE__ */ React32.createElement(HugeiconsIcon17, { icon: ArrowDown01Icon4, size: 14, className: "text-neutral-400" })
|
|
2501
2471
|
)), stats.length > 0 && /* @__PURE__ */ React32.createElement("div", { className: "w-full rounded-2xl overflow-hidden bg-white" }, /* @__PURE__ */ React32.createElement("div", { className: "grid grid-cols-2 md:grid-cols-5 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ React32.createElement("div", { key: idx, className: "p-6 flex flex-col gap-1 min-w-0" }, /* @__PURE__ */ React32.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 truncate uppercase" }, stat.label), /* @__PURE__ */ React32.createElement("p", { className: `text-xl tracking-tight truncate ${stat.valueClass || "text-black"}` }, stat.value))))), lists.length > 0 && /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col gap-8 w-full max-w-4xl" }, lists.map((list, idx) => /* @__PURE__ */ React32.createElement("div", { key: idx, className: "bg-white rounded-2xl p-6 flex flex-col min-w-0" }, /* @__PURE__ */ React32.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ React32.createElement("div", { className: "text-neutral-400" }, list.icon), /* @__PURE__ */ React32.createElement("h2", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, list.title)), /* @__PURE__ */ React32.createElement("div", { className: "divide-y divide-neutral-100 flex-1 overflow-y-auto" }, list.items.length === 0 ? /* @__PURE__ */ React32.createElement("p", { className: "text-xs text-neutral-500 py-4" }, list.emptyMessage) : list.items.map((item) => /* @__PURE__ */ React32.createElement("div", { key: item.id, className: "flex flex-col sm:flex-row sm:items-center justify-between py-4 gap-2 min-w-0 group" }, /* @__PURE__ */ React32.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React32.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.primaryText), /* @__PURE__ */ React32.createElement("p", { className: "text-[10px] text-neutral-500 truncate tracking-widest mt-0.5" }, item.secondaryText)), /* @__PURE__ */ React32.createElement("div", { className: "flex items-center gap-4 shrink-0 pl-4" }, item.rightText && /* @__PURE__ */ React32.createElement("p", { className: "text-xs text-black" }, item.rightText), item.rightBadge && /* @__PURE__ */ React32.createElement("span", { className: `text-[9px] tracking-widest px-2.5 py-1 rounded-full ${item.rightBadgeClass || "bg-neutral-50 text-neutral-600"}` }, item.rightBadge)))))))), isTimeframeModalOpen && timeframes.length > 0 && onTimeframeChange && /* @__PURE__ */ React32.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React32.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ React32.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React32.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React32.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight" }, "Select Timeframe")), /* @__PURE__ */ React32.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, timeframes.map((tf) => /* @__PURE__ */ React32.createElement(
|
|
2502
2472
|
"button",
|
|
2503
2473
|
{
|
|
@@ -2522,7 +2492,7 @@ var UniversalDashboardPage = ({
|
|
|
2522
2492
|
|
|
2523
2493
|
// src/components/UniversalAgentConsole.tsx
|
|
2524
2494
|
import React33, { useState as useState17, useRef as useRef5 } from "react";
|
|
2525
|
-
import { HugeiconsIcon as
|
|
2495
|
+
import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
|
|
2526
2496
|
import {
|
|
2527
2497
|
ArrowLeft01Icon as ArrowLeft01Icon5,
|
|
2528
2498
|
ArrowRight01Icon as ArrowRight01Icon5,
|
|
@@ -2531,7 +2501,7 @@ import {
|
|
|
2531
2501
|
Cancel01Icon as Cancel01Icon2,
|
|
2532
2502
|
Upload01Icon,
|
|
2533
2503
|
Download01Icon,
|
|
2534
|
-
ArrowDown01Icon as
|
|
2504
|
+
ArrowDown01Icon as ArrowDown01Icon5,
|
|
2535
2505
|
Delete02Icon,
|
|
2536
2506
|
File02Icon
|
|
2537
2507
|
} from "@hugeicons/core-free-icons";
|
|
@@ -2605,13 +2575,13 @@ var UniversalAgentConsole = ({
|
|
|
2605
2575
|
if (item.fullName) label = toTitleCaseSafe(item.fullName);
|
|
2606
2576
|
else if (item.role) label = item.role;
|
|
2607
2577
|
else if (item.proposedName) label = toTitleCaseSafe(item.proposedName);
|
|
2608
|
-
return /* @__PURE__ */ React33.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ React33.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ React33.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ React33.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ React33.createElement(
|
|
2578
|
+
return /* @__PURE__ */ React33.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ React33.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ React33.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ React33.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: ArrowDown01Icon5, size: 16 }))), /* @__PURE__ */ React33.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 md:pb-8 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ React33.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React33.createElement("div", { className: "pt-2 flex flex-col gap-3 pr-4 md:pr-12" }, renderDynamicObject(item)))));
|
|
2609
2579
|
}));
|
|
2610
2580
|
};
|
|
2611
2581
|
const renderValue = (key, value) => {
|
|
2612
2582
|
if (value === null || value === void 0 || value === "") return null;
|
|
2613
2583
|
if (typeof value === "string") {
|
|
2614
|
-
if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ React33.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-
|
|
2584
|
+
if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ React33.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors w-fit outline-none mt-2" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Download01Icon, size: 14 }), " Download File");
|
|
2615
2585
|
if (key.toLowerCase().includes("name") && !value.includes("@")) return /* @__PURE__ */ React33.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(value));
|
|
2616
2586
|
return /* @__PURE__ */ React33.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, value);
|
|
2617
2587
|
}
|
|
@@ -2640,14 +2610,14 @@ var UniversalAgentConsole = ({
|
|
|
2640
2610
|
if (entries.length === 0) return null;
|
|
2641
2611
|
return entries.map(([k, v]) => /* @__PURE__ */ React33.createElement("div", { key: k, className: "flex flex-col items-start min-w-0 wrap-break-word w-full mb-3 last:mb-0" }, /* @__PURE__ */ React33.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 uppercase" }, formatKeyName(k)), renderValue(k, v)));
|
|
2642
2612
|
};
|
|
2643
|
-
return /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 min-h-full pb-10" }, /* @__PURE__ */ React33.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ React33.createElement("h1", { className: " font-serif text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ React33.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white" }, /* @__PURE__ */ React33.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ React33.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ React33.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-
|
|
2613
|
+
return /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 min-h-full pb-10" }, /* @__PURE__ */ React33.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ React33.createElement("h1", { className: " font-serif text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ React33.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white" }, /* @__PURE__ */ React33.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ React33.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ React33.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ React33.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React33.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ React33.createElement("p", { className: "text-xl text-black tracking-tight truncate" }, stat.value)))))), tabs.length > 0 && /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-6" }, tabs.map((tab) => /* @__PURE__ */ React33.createElement("button", { key: tab.id, onClick: () => onTabChange(tab.id), className: `pb-3 text-sm transition-colors outline-none ${activeTab === tab.id ? "text-black border-b border-black" : "text-neutral-400 hover:text-black"}` }, tab.label))), /* @__PURE__ */ React33.createElement("div", { className: "w-full bg-white rounded-2xl max-w-3xl overflow-hidden flex flex-col min-h-100" }, isLoadingList ? /* @__PURE__ */ React33.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Loading03Icon9, size: 32, className: "animate-spin text-black" })) : listData.length === 0 ? /* @__PURE__ */ React33.createElement("div", { className: "flex-1 flex justify-center items-center text-neutral-500 text-sm py-20" }, "No matching applications found.") : /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", { className: "divide-y divide-neutral-100 flex-1" }, listData.map((item) => /* @__PURE__ */ React33.createElement("div", { key: item.id, onClick: () => onRowClick(item.id), className: "flex items-center justify-between p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0" }, /* @__PURE__ */ React33.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.title), /* @__PURE__ */ React33.createElement("p", { className: "text-xs text-neutral-500 truncate mt-1" }, item.subtitle)), /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ React33.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 rounded-full uppercase ${item.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, item.status.replace(/_/g, " ")), /* @__PURE__ */ React33.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, item.date))))), totalPages > 1 && /* @__PURE__ */ React33.createElement("div", { className: "flex items-center justify-between p-5 bg-neutral-50/50" }, /* @__PURE__ */ React33.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: ArrowLeft01Icon5, size: 14 })), /* @__PURE__ */ React33.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: ArrowRight01Icon5, size: 14 }))))))), currentView === "details" && selectedApp && /* @__PURE__ */ React33.createElement("div", { className: "w-full bg-white rounded-2xl p-6 sm:p-10 animate-in fade-in duration-300 max-w-3xl flex flex-col" }, /* @__PURE__ */ React33.createElement("div", { className: "flex items-center justify-between gap-4 pb-6" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => {
|
|
2644
2614
|
onBackToList();
|
|
2645
2615
|
setPendingFiles([]);
|
|
2646
|
-
}, className: "flex items-center gap-2 text-[10px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none uppercase" }, /* @__PURE__ */ React33.createElement(
|
|
2616
|
+
}, className: "flex items-center gap-2 text-[10px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none uppercase" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: ArrowLeft01Icon5, size: 14 }), " Back to List"), /* @__PURE__ */ React33.createElement("span", { className: `text-[10px] tracking-widest px-4 py-1.5 rounded-full uppercase ${selectedApp.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, selectedApp.status.replace(/_/g, " "))), /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-2 mb-8" }, /* @__PURE__ */ React33.createElement("h2", { className: " font-serif text-xl text-black tracking-tight" }, selectedApp.name || selectedApp.title), /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-neutral-500" }, selectedApp.type ? selectedApp.type.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase()) : selectedApp.subtitle)), selectedApp.agentId === currentAgentId && selectedApp.metadata && Object.keys(selectedApp.metadata).length > 0 ? /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-5" }, renderDynamicObject(selectedApp.metadata)) : selectedApp.agentId === currentAgentId ? /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-5" }, /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-neutral-500" }, "No application data extracted.")) : null, selectedApp.agentId && /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-4 pt-8 mt-4 border-t border-neutral-100" }, /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col gap-1 mb-4" }, /* @__PURE__ */ React33.createElement("h3", { className: " font-serif text-sm text-black" }, "Official Archives"), /* @__PURE__ */ React33.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload final certificates or documents. Once marked completed, the archive unlocks for the user.")), selectedApp.archives?.map((arch) => /* @__PURE__ */ React33.createElement("div", { key: arch.id, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: File02Icon, size: 18, className: "shrink-0" }), /* @__PURE__ */ React33.createElement("span", { className: "truncate pr-2" }, arch.name)), /* @__PURE__ */ React33.createElement("button", { onClick: () => setArchiveToDelete(arch), className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Delete02Icon, size: 16 })))), pendingFiles.map((file, idx) => /* @__PURE__ */ React33.createElement("div", { key: idx, className: "flex items-center justify-between text-neutral-600 text-sm w-full" }, /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: AttachmentIcon, size: 18, className: "shrink-0" }), /* @__PURE__ */ React33.createElement("span", { className: "truncate pr-2" }, file.name)), /* @__PURE__ */ React33.createElement("button", { onClick: () => setPendingFiles((p) => p.filter((_, i) => i !== idx)), className: "text-neutral-400 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Cancel01Icon2, size: 16 })))), /* @__PURE__ */ React33.createElement("input", { type: "file", multiple: true, ref: archiveRef, onChange: handleFileSelect, className: "hidden", accept: "application/pdf,image/*" }), /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => archiveRef.current?.click(), disabled: selectedApp.status !== "COMPLETED" || isUploading, className: "flex items-center justify-center gap-3 p-4 border border-neutral-100 rounded-full hover:bg-neutral-50 transition-colors text-black text-sm w-full outline-none disabled:opacity-50" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Upload01Icon, size: 18, className: "text-neutral-400" }), " Select Files to Upload"), pendingFiles.length > 0 && /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full sm:w-auto shrink-0" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => setPendingFiles([]), disabled: isUploading, className: "px-6 py-2 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-200 outline-none w-full sm:w-auto uppercase" }, "Clear All"), /* @__PURE__ */ React33.createElement(ThreeDActionButton, { onClick: executeUpload, disabled: isUploading, isLoading: isUploading, className: "w-full sm:w-auto" }, "Upload ", pendingFiles.length, " File(s)")))), /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-6" }, !selectedApp.agentId ? /* @__PURE__ */ React33.createElement(ThreeDActionButton, { onClick: async () => {
|
|
2647
2617
|
setIsActioning(true);
|
|
2648
2618
|
await onAcceptApplication(selectedApp.id);
|
|
2649
2619
|
setIsActioning(false);
|
|
2650
|
-
}, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ React33.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ React33.createElement(
|
|
2620
|
+
}, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ React33.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ React33.createElement(HugeiconsIcon18, { icon: Cancel01Icon2, size: 16, className: "text-red-500 shrink-0 mt-0.5" }), /* @__PURE__ */ React33.createElement("div", null, /* @__PURE__ */ React33.createElement("p", { className: "text-sm text-red-700" }, "Application Taken"), /* @__PURE__ */ React33.createElement("p", { className: "text-xs text-red-600 mt-1" }, "Currently handled by ", selectedApp.agentName || "another agent", "."))) : /* @__PURE__ */ React33.createElement("div", { className: "w-full flex flex-col sm:flex-row items-center gap-4 justify-between" }, /* @__PURE__ */ React33.createElement("p", { className: "text-xs text-neutral-500" }, "You are the assigned agent."), /* @__PURE__ */ React33.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-end gap-3 w-full sm:w-auto" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => setActionModal("query"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Query"), /* @__PURE__ */ React33.createElement("button", { onClick: () => setActionModal("reject"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Reject"), /* @__PURE__ */ React33.createElement(ThreeDActionButton, { onClick: () => setActionModal("success"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto" }, "Mark Success"))))), actionModal && /* @__PURE__ */ React33.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React33.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setActionModal(null) }), /* @__PURE__ */ React33.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ React33.createElement("div", { className: "p-6" }, /* @__PURE__ */ React33.createElement("h3", { className: " font-serif text-lg text-black tracking-tight capitalize mb-2" }, actionModal === "success" ? "Complete Application" : `${actionModal} Application`), /* @__PURE__ */ React33.createElement("p", { className: "text-xs text-neutral-500" }, actionModal === "success" ? "Are you sure you want to mark this application as successfully completed?" : `Please provide a clear reason for the user. They will see this message and be asked to fix their application.`)), (actionModal === "query" || actionModal === "reject") && /* @__PURE__ */ React33.createElement("div", { className: "p-6 pb-2" }, /* @__PURE__ */ React33.createElement(TextInput, { label: "Reason for Action", value: actionMessage, onChange: setActionMessage, placeholder: "Enter your reason here...", disabled: isActioning })), /* @__PURE__ */ React33.createElement("div", { className: "flex items-center p-6 pt-4 gap-3" }, /* @__PURE__ */ React33.createElement("button", { onClick: () => setActionModal(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest uppercase text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ React33.createElement(ThreeDActionButton, { onClick: async () => {
|
|
2651
2621
|
setIsActioning(true);
|
|
2652
2622
|
await onUpdateStatus(selectedApp.id, actionModal === "success" ? "COMPLETED" : actionModal === "reject" ? "REJECTED" : "QUEUED", actionMessage);
|
|
2653
2623
|
setIsActioning(false);
|
|
@@ -2672,7 +2642,7 @@ var UniversalOverviewPage = ({
|
|
|
2672
2642
|
primaryAction,
|
|
2673
2643
|
alerts = []
|
|
2674
2644
|
}) => {
|
|
2675
|
-
return /* @__PURE__ */ React34.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 min-h-full pb-10" }, /* @__PURE__ */ React34.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React34.createElement("div", null, /* @__PURE__ */ React34.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React34.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ React34.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-3xl bg-white" }, /* @__PURE__ */ React34.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ React34.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ React34.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-
|
|
2645
|
+
return /* @__PURE__ */ React34.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 min-h-full pb-10" }, /* @__PURE__ */ React34.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React34.createElement("div", null, /* @__PURE__ */ React34.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React34.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ React34.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-3xl bg-white" }, /* @__PURE__ */ React34.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ React34.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ React34.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ React34.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React34.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ React34.createElement("p", { className: "text-lg md:text-xl text-black tracking-tight truncate" }, stat.value)))))), /* @__PURE__ */ React34.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white min-w-0" }, /* @__PURE__ */ React34.createElement("div", { className: "p-6 sm:p-8 flex flex-col h-full min-w-0 gap-6" }, /* @__PURE__ */ React34.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4 border-b border-neutral-100 pb-4" }, /* @__PURE__ */ React34.createElement("h3", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, detailsTitle), primaryAction && (primaryAction.href ? /* @__PURE__ */ React34.createElement(
|
|
2676
2646
|
ThreeDButton,
|
|
2677
2647
|
{
|
|
2678
2648
|
href: primaryAction.href,
|
|
@@ -2701,7 +2671,7 @@ var UniversalOverviewPage = ({
|
|
|
2701
2671
|
|
|
2702
2672
|
// src/components/UniversalErrorView.tsx
|
|
2703
2673
|
import React35 from "react";
|
|
2704
|
-
import { HugeiconsIcon as
|
|
2674
|
+
import { HugeiconsIcon as HugeiconsIcon19 } from "@hugeicons/react";
|
|
2705
2675
|
import { ConfusedIcon } from "@hugeicons/core-free-icons";
|
|
2706
2676
|
var UniversalErrorView = ({
|
|
2707
2677
|
isBooting,
|
|
@@ -2733,7 +2703,7 @@ var UniversalErrorView = ({
|
|
|
2733
2703
|
title = "Access Restricted";
|
|
2734
2704
|
description = apiMessage || `You have insufficient permissions to view this ${envName}. Please contact your administrator.`;
|
|
2735
2705
|
}
|
|
2736
|
-
return /* @__PURE__ */ React35.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ React35.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ React35.createElement(
|
|
2706
|
+
return /* @__PURE__ */ React35.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ React35.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ React35.createElement(HugeiconsIcon19, { icon: IconComponent, size: 48, className: "text-neutral-300" })), /* @__PURE__ */ React35.createElement("h2", { className: " font-serif text-lg text-black tracking-tight " }, title), /* @__PURE__ */ React35.createElement("p", { className: "text-xs mt-2 mb-8 text-neutral-500 max-w-sm text-center leading-relaxed" }, description), /* @__PURE__ */ React35.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full justify-center sm:w-auto" }, isNotFoundError || isPermissionError ? /* @__PURE__ */ React35.createElement(
|
|
2737
2707
|
"button",
|
|
2738
2708
|
{
|
|
2739
2709
|
onClick: () => window.location.href = returnUrl,
|
|
@@ -2746,7 +2716,7 @@ var UniversalErrorView = ({
|
|
|
2746
2716
|
"button",
|
|
2747
2717
|
{
|
|
2748
2718
|
onClick: () => window.location.href = returnUrl,
|
|
2749
|
-
className: "px-6 py-2 bg-transparent border border-neutral-
|
|
2719
|
+
className: "px-6 py-2 bg-transparent border border-neutral-100 hover:bg-neutral-50 text-neutral-600 hover:text-black rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none"
|
|
2750
2720
|
},
|
|
2751
2721
|
"Back Home"
|
|
2752
2722
|
), /* @__PURE__ */ React35.createElement(
|
|
@@ -2765,7 +2735,7 @@ var UniversalErrorView = ({
|
|
|
2765
2735
|
|
|
2766
2736
|
// src/components/UniversalLookupPage.tsx
|
|
2767
2737
|
import React36, { useState as useState18 } from "react";
|
|
2768
|
-
import { HugeiconsIcon as
|
|
2738
|
+
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
2769
2739
|
import { Search01Icon } from "@hugeicons/core-free-icons";
|
|
2770
2740
|
var UniversalLookupPage = ({
|
|
2771
2741
|
headerTitle,
|
|
@@ -2787,7 +2757,7 @@ var UniversalLookupPage = ({
|
|
|
2787
2757
|
{
|
|
2788
2758
|
type: "button",
|
|
2789
2759
|
onClick: () => setIsTypeModalOpen(true),
|
|
2790
|
-
className: "mt-2 text-[12px] tracking-widest bg-transparent border-b border-neutral-
|
|
2760
|
+
className: "mt-2 text-[12px] tracking-widest bg-transparent border-b border-neutral-100 text-black text-left outline-none focus:border-black shrink-0 uppercase"
|
|
2791
2761
|
},
|
|
2792
2762
|
currentOptionLabel
|
|
2793
2763
|
), /* @__PURE__ */ React36.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React36.createElement(
|
|
@@ -2806,7 +2776,7 @@ var UniversalLookupPage = ({
|
|
|
2806
2776
|
isLoading: isSearching,
|
|
2807
2777
|
className: "min-w-32"
|
|
2808
2778
|
},
|
|
2809
|
-
/* @__PURE__ */ React36.createElement(
|
|
2779
|
+
/* @__PURE__ */ React36.createElement(HugeiconsIcon20, { icon: Search01Icon, size: 14, className: "mr-2" }),
|
|
2810
2780
|
" Lookup"
|
|
2811
2781
|
)))), resultContent && /* @__PURE__ */ React36.createElement("div", { className: "w-full max-w-2xl bg-white text-left animate-in fade-in slide-in-from-bottom-4" }, /* @__PURE__ */ React36.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-6 uppercase" }, "Entity Record Found"), resultContent), isTypeModalOpen && /* @__PURE__ */ React36.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React36.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTypeModalOpen(false) }), /* @__PURE__ */ React36.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React36.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React36.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight mb-2" }, "Select Entity Type")), /* @__PURE__ */ React36.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, searchOptions.map((option) => /* @__PURE__ */ React36.createElement(
|
|
2812
2782
|
"button",
|
|
@@ -2826,9 +2796,9 @@ var UniversalLookupPage = ({
|
|
|
2826
2796
|
|
|
2827
2797
|
// src/components/UniversalDirectoryPage.tsx
|
|
2828
2798
|
import React37 from "react";
|
|
2829
|
-
import { HugeiconsIcon as
|
|
2799
|
+
import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
|
|
2830
2800
|
import { ArrowLeft01Icon as ArrowLeft01Icon6, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as Loading03Icon10 } from "@hugeicons/core-free-icons";
|
|
2831
|
-
var PageSpinner4 = () => /* @__PURE__ */ React37.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React37.createElement(
|
|
2801
|
+
var PageSpinner4 = () => /* @__PURE__ */ React37.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon21, { icon: Loading03Icon10, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
2832
2802
|
var UniversalDirectoryPage = ({
|
|
2833
2803
|
headerTitle,
|
|
2834
2804
|
headerDescription,
|
|
@@ -2850,14 +2820,14 @@ var UniversalDirectoryPage = ({
|
|
|
2850
2820
|
detailsContent,
|
|
2851
2821
|
modals
|
|
2852
2822
|
}) => {
|
|
2853
|
-
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white
|
|
2823
|
+
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white" }, /* @__PURE__ */ React37.createElement(ManagedToaster, null), /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" ? /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("div", { className: "w-full" }, /* @__PURE__ */ React37.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React37.createElement("p", { className: "text-xs text-neutral-500 mb-6" }, headerDescription), !hideSearch && /* @__PURE__ */ React37.createElement(
|
|
2854
2824
|
TextInput,
|
|
2855
2825
|
{
|
|
2856
2826
|
placeholder: searchPlaceholder,
|
|
2857
2827
|
value: searchQuery,
|
|
2858
2828
|
onChange: onSearchChange
|
|
2859
2829
|
}
|
|
2860
|
-
)), headerAction && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React37.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ React37.createElement(
|
|
2830
|
+
)), headerAction && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React37.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon21, { icon: ArrowLeft01Icon6, size: 12 }), " Back"))), currentView === "list" && /* @__PURE__ */ React37.createElement("div", { className: "w-full overflow-hidden pt-2" }, isLoading ? /* @__PURE__ */ React37.createElement(PageSpinner4, null) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React37.createElement("div", { className: "divide-y divide-neutral-100" }, items.length === 0 ? /* @__PURE__ */ React37.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No records found.") : items.map((item) => /* @__PURE__ */ React37.createElement(
|
|
2861
2831
|
"div",
|
|
2862
2832
|
{
|
|
2863
2833
|
key: item.id,
|
|
@@ -2865,13 +2835,13 @@ var UniversalDirectoryPage = ({
|
|
|
2865
2835
|
className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
|
|
2866
2836
|
},
|
|
2867
2837
|
/* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React37.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ React37.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React37.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ React37.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText))),
|
|
2868
|
-
item.rightBadge && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ React37.createElement("span", { className: `text-[10px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap uppercase ${item.rightBadgeClass || "text-neutral-500 border border-neutral-
|
|
2869
|
-
))), totalPages > 1 && /* @__PURE__ */ React37.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ React37.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] uppercase" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React37.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-
|
|
2838
|
+
item.rightBadge && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ React37.createElement("span", { className: `text-[10px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap uppercase ${item.rightBadgeClass || "text-neutral-500 border border-neutral-100 bg-white"}` }, item.rightBadge))
|
|
2839
|
+
))), totalPages > 1 && /* @__PURE__ */ React37.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ React37.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] uppercase" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React37.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon21, { icon: ArrowLeft01Icon6, size: 14 })), /* @__PURE__ */ React37.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon21, { icon: ArrowRight01Icon6, size: 14 })))))), currentView === "details" && detailsContent, modals);
|
|
2870
2840
|
};
|
|
2871
2841
|
|
|
2872
2842
|
// src/components/AiApproveDecline.tsx
|
|
2873
2843
|
import React38, { useState as useState19 } from "react";
|
|
2874
|
-
import { HugeiconsIcon as
|
|
2844
|
+
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
2875
2845
|
import { CheckmarkCircle01Icon as CheckmarkCircle01Icon2, CancelCircleIcon, PencilEdit01Icon } from "@hugeicons/core-free-icons";
|
|
2876
2846
|
var AiApproveDecline = ({ suggestionTitle, suggestionValue, onApprove, onDecline, onEdit }) => {
|
|
2877
2847
|
const [isEditing, setIsEditing] = useState19(false);
|
|
@@ -2885,23 +2855,23 @@ var AiApproveDecline = ({ suggestionTitle, suggestionValue, onApprove, onDecline
|
|
|
2885
2855
|
className: "w-full text-sm p-2 border-b border-purple-200 bg-transparent outline-none focus:border-purple-400 transition-colors",
|
|
2886
2856
|
autoFocus: true
|
|
2887
2857
|
}
|
|
2888
|
-
)), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-1 mt-2" }, !isEditing ? /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement("button", { onClick: onApprove, title: "Approve", className: "p-1.5 text-black hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(
|
|
2858
|
+
)), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-1 mt-2" }, !isEditing ? /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement("button", { onClick: onApprove, title: "Approve", className: "p-1.5 text-black hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(HugeiconsIcon22, { icon: CheckmarkCircle01Icon2, size: 28 })), /* @__PURE__ */ React38.createElement("button", { onClick: onDecline, title: "Decline", className: "p-1.5 text-neutral-400 hover:text-neutral-400 hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(HugeiconsIcon22, { icon: CancelCircleIcon, size: 28 })), onEdit && /* @__PURE__ */ React38.createElement("button", { onClick: () => setIsEditing(true), title: "Edit", className: "ml-auto p-1.5 text-neutral-400 hover:text-black hover:bg-neutral-100 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(HugeiconsIcon22, { icon: PencilEdit01Icon, size: 18 }))) : /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement("button", { onClick: () => {
|
|
2889
2859
|
onEdit?.(editVal);
|
|
2890
2860
|
setIsEditing(false);
|
|
2891
|
-
}, title: "Save Edit", className: "p-1.5 text-emerald-500 hover:text-emerald-600 hover:bg-emerald-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(
|
|
2861
|
+
}, title: "Save Edit", className: "p-1.5 text-emerald-500 hover:text-emerald-600 hover:bg-emerald-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(HugeiconsIcon22, { icon: CheckmarkCircle01Icon2, size: 28 })), /* @__PURE__ */ React38.createElement("button", { onClick: () => setIsEditing(false), title: "Cancel Edit", className: "p-1.5 text-neutral-400 hover:text-black hover:bg-neutral-100 rounded-full transition-colors outline-none" }, /* @__PURE__ */ React38.createElement(HugeiconsIcon22, { icon: CancelCircleIcon, size: 28 })))));
|
|
2892
2862
|
};
|
|
2893
2863
|
|
|
2894
2864
|
// src/components/AiStageCheck.tsx
|
|
2895
2865
|
import React39 from "react";
|
|
2896
|
-
import { HugeiconsIcon as
|
|
2866
|
+
import { HugeiconsIcon as HugeiconsIcon23 } from "@hugeicons/react";
|
|
2897
2867
|
import { Loading03Icon as Loading03Icon11, CheckmarkCircle02Icon, CancelCircleIcon as CancelCircleIcon2 } from "@hugeicons/core-free-icons";
|
|
2898
2868
|
var AiStageCheck = ({ tasks }) => {
|
|
2899
|
-
return /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col gap-3 p-5 rounded-2xl border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white relative overflow-hidden" }, /* @__PURE__ */ React39.createElement("span", { className: "text-[10px] tracking-widest text-purple-600 mb-1 uppercase" }, "AI Processing"), tasks.map((task) => /* @__PURE__ */ React39.createElement("div", { key: task.id, className: "flex items-center gap-3" }, task.status === "pending" && /* @__PURE__ */ React39.createElement("div", { className: "w-4 h-4 rounded-full border border-purple-200" }), task.status === "loading" && /* @__PURE__ */ React39.createElement(
|
|
2869
|
+
return /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col gap-3 p-5 rounded-2xl border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white relative overflow-hidden" }, /* @__PURE__ */ React39.createElement("span", { className: "text-[10px] tracking-widest text-purple-600 mb-1 uppercase" }, "AI Processing"), tasks.map((task) => /* @__PURE__ */ React39.createElement("div", { key: task.id, className: "flex items-center gap-3" }, task.status === "pending" && /* @__PURE__ */ React39.createElement("div", { className: "w-4 h-4 rounded-full border border-purple-200" }), task.status === "loading" && /* @__PURE__ */ React39.createElement(HugeiconsIcon23, { icon: Loading03Icon11, size: 16, className: "animate-spin text-purple-500" }), task.status === "success" && /* @__PURE__ */ React39.createElement(HugeiconsIcon23, { icon: CheckmarkCircle02Icon, size: 16, className: "text-emerald-500" }), task.status === "error" && /* @__PURE__ */ React39.createElement(HugeiconsIcon23, { icon: CancelCircleIcon2, size: 16, className: "text-red-500" }), /* @__PURE__ */ React39.createElement("span", { className: `text-xs transition-colors ${task.status === "success" ? "text-black" : task.status === "loading" ? "text-purple-700" : "text-neutral-500"}` }, task.label))));
|
|
2900
2870
|
};
|
|
2901
2871
|
|
|
2902
2872
|
// src/components/Stagger.tsx
|
|
2903
2873
|
import React40 from "react";
|
|
2904
|
-
import { HugeiconsIcon as
|
|
2874
|
+
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
2905
2875
|
import { Briefcase02Icon, Upload01Icon as Upload01Icon2, FileSyncIcon, CloudUploadIcon } from "@hugeicons/core-free-icons";
|
|
2906
2876
|
var Stagger = ({ steps, currentStep }) => {
|
|
2907
2877
|
const getIconForStep = (stepName) => {
|
|
@@ -2915,7 +2885,7 @@ var Stagger = ({ steps, currentStep }) => {
|
|
|
2915
2885
|
const isActive = idx === currentStep;
|
|
2916
2886
|
const isPassed = idx < currentStep;
|
|
2917
2887
|
const colorClass = isPassed ? "bg-emerald-500 text-white" : isActive ? "bg-neutral-200 text-neutral-500" : "bg-neutral-200 text-neutral-500";
|
|
2918
|
-
return /* @__PURE__ */ React40.createElement("div", { key: step, className: `w-6 h-6 rounded-full flex items-center justify-center transition-colors duration-300 ${colorClass}` }, /* @__PURE__ */ React40.createElement(
|
|
2888
|
+
return /* @__PURE__ */ React40.createElement("div", { key: step, className: `w-6 h-6 rounded-full flex items-center justify-center transition-colors duration-300 ${colorClass}` }, /* @__PURE__ */ React40.createElement(HugeiconsIcon24, { icon: getIconForStep(step), size: 11 }));
|
|
2919
2889
|
}));
|
|
2920
2890
|
};
|
|
2921
2891
|
export {
|