@retinalabsllc/zairusjs 8.1.50 → 8.1.55
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 +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +97 -6
- package/dist/index.mjs +95 -5
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -475,4 +475,10 @@ interface ManagedProjectsBlockProps {
|
|
|
475
475
|
}
|
|
476
476
|
declare const ManagedProjectsBlock: React.FC<ManagedProjectsBlockProps>;
|
|
477
477
|
|
|
478
|
-
|
|
478
|
+
interface WaitlistDialogProps {
|
|
479
|
+
isOpen: boolean;
|
|
480
|
+
onClose: () => void;
|
|
481
|
+
}
|
|
482
|
+
declare const WaitlistDialog: React.FC<WaitlistDialogProps>;
|
|
483
|
+
|
|
484
|
+
export { AppBento2, type AppBento2Props, type BentoFeature, type BoardMember, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, type ProjectItem, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, WaitlistDialog, type WaitlistDialogProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -475,4 +475,10 @@ interface ManagedProjectsBlockProps {
|
|
|
475
475
|
}
|
|
476
476
|
declare const ManagedProjectsBlock: React.FC<ManagedProjectsBlockProps>;
|
|
477
477
|
|
|
478
|
-
|
|
478
|
+
interface WaitlistDialogProps {
|
|
479
|
+
isOpen: boolean;
|
|
480
|
+
onClose: () => void;
|
|
481
|
+
}
|
|
482
|
+
declare const WaitlistDialog: React.FC<WaitlistDialogProps>;
|
|
483
|
+
|
|
484
|
+
export { AppBento2, type AppBento2Props, type BentoFeature, type BoardMember, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, type ProjectItem, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, WaitlistDialog, type WaitlistDialogProps };
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,8 @@ __export(index_exports, {
|
|
|
55
55
|
PortfolioHero: () => PortfolioHero,
|
|
56
56
|
TextInput: () => TextInput,
|
|
57
57
|
ThreeDActionButton: () => ThreeDActionButton,
|
|
58
|
-
ThreeDButton: () => ThreeDButton
|
|
58
|
+
ThreeDButton: () => ThreeDButton,
|
|
59
|
+
WaitlistDialog: () => WaitlistDialog
|
|
59
60
|
});
|
|
60
61
|
module.exports = __toCommonJS(index_exports);
|
|
61
62
|
|
|
@@ -167,7 +168,7 @@ var ThreeDButton = ({
|
|
|
167
168
|
{
|
|
168
169
|
href,
|
|
169
170
|
onClick,
|
|
170
|
-
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-
|
|
171
|
+
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-medium transition-all duration-150 select-none group overflow-hidden ${className}`,
|
|
171
172
|
style: {
|
|
172
173
|
backgroundImage: silverBg,
|
|
173
174
|
backgroundSize: "cover",
|
|
@@ -224,7 +225,7 @@ var ThreeDActionButton = ({
|
|
|
224
225
|
"aria-label": ariaLabel,
|
|
225
226
|
className: `
|
|
226
227
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
227
|
-
text-neutral-900 text-xs font-
|
|
228
|
+
text-neutral-900 text-xs font-medium tracking-widest
|
|
228
229
|
transition-all duration-150 select-none group outline-none overflow-hidden
|
|
229
230
|
${isInteractionDisabled ? "opacity-70 cursor-not-allowed" : "active:translate-y-0.5"}
|
|
230
231
|
${className}
|
|
@@ -469,7 +470,7 @@ var HeroSection = ({
|
|
|
469
470
|
import_link4.default,
|
|
470
471
|
{
|
|
471
472
|
href: secondaryCtaHref,
|
|
472
|
-
className: "w-full sm:w-60 inline-flex font-
|
|
473
|
+
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-black/40 backdrop-blur-md text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-500 outline-none transition-all drop-shadow-lg"
|
|
473
474
|
},
|
|
474
475
|
secondaryCtaText
|
|
475
476
|
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react8.default.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ import_react8.default.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react8.default.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default filter invert" }, /* @__PURE__ */ import_react8.default.createElement(
|
|
@@ -886,7 +887,7 @@ var ManagedPricingBlock = ({
|
|
|
886
887
|
import_link5.default,
|
|
887
888
|
{
|
|
888
889
|
href: plan.ctaHref,
|
|
889
|
-
className: "w-full py-2.5 px-5 rounded-full font-
|
|
890
|
+
className: "w-full py-2.5 px-5 rounded-full font-medium border border-neutral-700 text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-600 transition-colors mb-6 outline-none block"
|
|
890
891
|
},
|
|
891
892
|
plan.ctaText
|
|
892
893
|
),
|
|
@@ -1476,6 +1477,95 @@ var ManagedProjectsBlock = ({
|
|
|
1476
1477
|
return /* @__PURE__ */ import_react36.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react36.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react36.default.createElement(import_link8.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1477
1478
|
}))));
|
|
1478
1479
|
};
|
|
1480
|
+
|
|
1481
|
+
// src/components/WaitlistDialog.tsx
|
|
1482
|
+
var import_react37 = __toESM(require("react"));
|
|
1483
|
+
var import_react_hot_toast2 = require("react-hot-toast");
|
|
1484
|
+
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
1485
|
+
const [email, setEmail] = (0, import_react37.useState)("");
|
|
1486
|
+
const [isLoading, setIsLoading] = (0, import_react37.useState)(false);
|
|
1487
|
+
if (!isOpen) return null;
|
|
1488
|
+
const handleSubmit = async (e) => {
|
|
1489
|
+
e.preventDefault();
|
|
1490
|
+
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
1491
|
+
import_react_hot_toast2.toast.error("Please enter a valid email address.");
|
|
1492
|
+
return;
|
|
1493
|
+
}
|
|
1494
|
+
setIsLoading(true);
|
|
1495
|
+
try {
|
|
1496
|
+
const response = await fetch("/api/waitlist", {
|
|
1497
|
+
method: "POST",
|
|
1498
|
+
headers: {
|
|
1499
|
+
"Content-Type": "application/json"
|
|
1500
|
+
},
|
|
1501
|
+
body: JSON.stringify({ email })
|
|
1502
|
+
});
|
|
1503
|
+
const data = await response.json();
|
|
1504
|
+
if (response.ok && data.success) {
|
|
1505
|
+
import_react_hot_toast2.toast.success(data.message || "You've been added to the waitlist!");
|
|
1506
|
+
setEmail("");
|
|
1507
|
+
onClose();
|
|
1508
|
+
} else {
|
|
1509
|
+
import_react_hot_toast2.toast.error(data.error || "Something went wrong. Please try again.");
|
|
1510
|
+
}
|
|
1511
|
+
} catch (error) {
|
|
1512
|
+
import_react_hot_toast2.toast.error("Network error. Please check your connection.");
|
|
1513
|
+
} finally {
|
|
1514
|
+
setIsLoading(false);
|
|
1515
|
+
}
|
|
1516
|
+
};
|
|
1517
|
+
return /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/60 " }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ import_react37.default.createElement(
|
|
1518
|
+
"div",
|
|
1519
|
+
{
|
|
1520
|
+
className: "w-full max-w-md bg-[#0a0a0a] rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200"
|
|
1521
|
+
},
|
|
1522
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
1523
|
+
"button",
|
|
1524
|
+
{
|
|
1525
|
+
onClick: onClose,
|
|
1526
|
+
disabled: isLoading,
|
|
1527
|
+
className: "absolute top-4 right-4 p-2 text-neutral-500 hover:text-white transition-colors disabled:opacity-50 outline-none",
|
|
1528
|
+
"aria-label": "Close dialog"
|
|
1529
|
+
},
|
|
1530
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
1531
|
+
"svg",
|
|
1532
|
+
{
|
|
1533
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1534
|
+
width: "20",
|
|
1535
|
+
height: "20",
|
|
1536
|
+
viewBox: "0 0 24 24",
|
|
1537
|
+
fill: "none",
|
|
1538
|
+
stroke: "currentColor",
|
|
1539
|
+
strokeWidth: "2",
|
|
1540
|
+
strokeLinecap: "round",
|
|
1541
|
+
strokeLinejoin: "round"
|
|
1542
|
+
},
|
|
1543
|
+
/* @__PURE__ */ import_react37.default.createElement("path", { d: "M18 6 6 18" }),
|
|
1544
|
+
/* @__PURE__ */ import_react37.default.createElement("path", { d: "m6 6 12 12" })
|
|
1545
|
+
)
|
|
1546
|
+
),
|
|
1547
|
+
/* @__PURE__ */ import_react37.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react37.default.createElement("h2", { className: "text-2xl font-light text-white tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[13px] text-neutral-400 font-light leading-relaxed" }, "Be the first to experience the future of natural language computing. Secure your early access spot today.")), /* @__PURE__ */ import_react37.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
1548
|
+
TextInput,
|
|
1549
|
+
{
|
|
1550
|
+
label: "EMAIL ADDRESS",
|
|
1551
|
+
type: "email",
|
|
1552
|
+
value: email,
|
|
1553
|
+
onChange: setEmail,
|
|
1554
|
+
placeholder: "name@example.com",
|
|
1555
|
+
disabled: isLoading
|
|
1556
|
+
}
|
|
1557
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
1558
|
+
ThreeDActionButton,
|
|
1559
|
+
{
|
|
1560
|
+
type: "submit",
|
|
1561
|
+
isLoading,
|
|
1562
|
+
disabled: !email,
|
|
1563
|
+
className: "w-full mt-2"
|
|
1564
|
+
},
|
|
1565
|
+
"Join Waitlist"
|
|
1566
|
+
)))
|
|
1567
|
+
));
|
|
1568
|
+
};
|
|
1479
1569
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1480
1570
|
0 && (module.exports = {
|
|
1481
1571
|
AppBento2,
|
|
@@ -1502,5 +1592,6 @@ var ManagedProjectsBlock = ({
|
|
|
1502
1592
|
PortfolioHero,
|
|
1503
1593
|
TextInput,
|
|
1504
1594
|
ThreeDActionButton,
|
|
1505
|
-
ThreeDButton
|
|
1595
|
+
ThreeDButton,
|
|
1596
|
+
WaitlistDialog
|
|
1506
1597
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -108,7 +108,7 @@ var ThreeDButton = ({
|
|
|
108
108
|
{
|
|
109
109
|
href,
|
|
110
110
|
onClick,
|
|
111
|
-
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-
|
|
111
|
+
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-medium transition-all duration-150 select-none group overflow-hidden ${className}`,
|
|
112
112
|
style: {
|
|
113
113
|
backgroundImage: silverBg,
|
|
114
114
|
backgroundSize: "cover",
|
|
@@ -165,7 +165,7 @@ var ThreeDActionButton = ({
|
|
|
165
165
|
"aria-label": ariaLabel,
|
|
166
166
|
className: `
|
|
167
167
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
168
|
-
text-neutral-900 text-xs font-
|
|
168
|
+
text-neutral-900 text-xs font-medium tracking-widest
|
|
169
169
|
transition-all duration-150 select-none group outline-none overflow-hidden
|
|
170
170
|
${isInteractionDisabled ? "opacity-70 cursor-not-allowed" : "active:translate-y-0.5"}
|
|
171
171
|
${className}
|
|
@@ -410,7 +410,7 @@ var HeroSection = ({
|
|
|
410
410
|
Link4,
|
|
411
411
|
{
|
|
412
412
|
href: secondaryCtaHref,
|
|
413
|
-
className: "w-full sm:w-60 inline-flex font-
|
|
413
|
+
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-black/40 backdrop-blur-md text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-500 outline-none transition-all drop-shadow-lg"
|
|
414
414
|
},
|
|
415
415
|
secondaryCtaText
|
|
416
416
|
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React6.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React6.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ React6.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ React6.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default filter invert" }, /* @__PURE__ */ React6.createElement(
|
|
@@ -827,7 +827,7 @@ var ManagedPricingBlock = ({
|
|
|
827
827
|
Link5,
|
|
828
828
|
{
|
|
829
829
|
href: plan.ctaHref,
|
|
830
|
-
className: "w-full py-2.5 px-5 rounded-full font-
|
|
830
|
+
className: "w-full py-2.5 px-5 rounded-full font-medium border border-neutral-700 text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-600 transition-colors mb-6 outline-none block"
|
|
831
831
|
},
|
|
832
832
|
plan.ctaText
|
|
833
833
|
),
|
|
@@ -1417,6 +1417,95 @@ var ManagedProjectsBlock = ({
|
|
|
1417
1417
|
return /* @__PURE__ */ React24.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ React24.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React24.createElement(Link8, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1418
1418
|
}))));
|
|
1419
1419
|
};
|
|
1420
|
+
|
|
1421
|
+
// src/components/WaitlistDialog.tsx
|
|
1422
|
+
import React25, { useState as useState13 } from "react";
|
|
1423
|
+
import { toast } from "react-hot-toast";
|
|
1424
|
+
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
1425
|
+
const [email, setEmail] = useState13("");
|
|
1426
|
+
const [isLoading, setIsLoading] = useState13(false);
|
|
1427
|
+
if (!isOpen) return null;
|
|
1428
|
+
const handleSubmit = async (e) => {
|
|
1429
|
+
e.preventDefault();
|
|
1430
|
+
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
1431
|
+
toast.error("Please enter a valid email address.");
|
|
1432
|
+
return;
|
|
1433
|
+
}
|
|
1434
|
+
setIsLoading(true);
|
|
1435
|
+
try {
|
|
1436
|
+
const response = await fetch("/api/waitlist", {
|
|
1437
|
+
method: "POST",
|
|
1438
|
+
headers: {
|
|
1439
|
+
"Content-Type": "application/json"
|
|
1440
|
+
},
|
|
1441
|
+
body: JSON.stringify({ email })
|
|
1442
|
+
});
|
|
1443
|
+
const data = await response.json();
|
|
1444
|
+
if (response.ok && data.success) {
|
|
1445
|
+
toast.success(data.message || "You've been added to the waitlist!");
|
|
1446
|
+
setEmail("");
|
|
1447
|
+
onClose();
|
|
1448
|
+
} else {
|
|
1449
|
+
toast.error(data.error || "Something went wrong. Please try again.");
|
|
1450
|
+
}
|
|
1451
|
+
} catch (error) {
|
|
1452
|
+
toast.error("Network error. Please check your connection.");
|
|
1453
|
+
} finally {
|
|
1454
|
+
setIsLoading(false);
|
|
1455
|
+
}
|
|
1456
|
+
};
|
|
1457
|
+
return /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/60 " }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React25.createElement(
|
|
1458
|
+
"div",
|
|
1459
|
+
{
|
|
1460
|
+
className: "w-full max-w-md bg-[#0a0a0a] rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200"
|
|
1461
|
+
},
|
|
1462
|
+
/* @__PURE__ */ React25.createElement(
|
|
1463
|
+
"button",
|
|
1464
|
+
{
|
|
1465
|
+
onClick: onClose,
|
|
1466
|
+
disabled: isLoading,
|
|
1467
|
+
className: "absolute top-4 right-4 p-2 text-neutral-500 hover:text-white transition-colors disabled:opacity-50 outline-none",
|
|
1468
|
+
"aria-label": "Close dialog"
|
|
1469
|
+
},
|
|
1470
|
+
/* @__PURE__ */ React25.createElement(
|
|
1471
|
+
"svg",
|
|
1472
|
+
{
|
|
1473
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1474
|
+
width: "20",
|
|
1475
|
+
height: "20",
|
|
1476
|
+
viewBox: "0 0 24 24",
|
|
1477
|
+
fill: "none",
|
|
1478
|
+
stroke: "currentColor",
|
|
1479
|
+
strokeWidth: "2",
|
|
1480
|
+
strokeLinecap: "round",
|
|
1481
|
+
strokeLinejoin: "round"
|
|
1482
|
+
},
|
|
1483
|
+
/* @__PURE__ */ React25.createElement("path", { d: "M18 6 6 18" }),
|
|
1484
|
+
/* @__PURE__ */ React25.createElement("path", { d: "m6 6 12 12" })
|
|
1485
|
+
)
|
|
1486
|
+
),
|
|
1487
|
+
/* @__PURE__ */ React25.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React25.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-2xl font-light text-white tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React25.createElement("p", { className: "text-[13px] text-neutral-400 font-light leading-relaxed" }, "Be the first to experience the future of natural language computing. Secure your early access spot today.")), /* @__PURE__ */ React25.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React25.createElement(
|
|
1488
|
+
TextInput,
|
|
1489
|
+
{
|
|
1490
|
+
label: "EMAIL ADDRESS",
|
|
1491
|
+
type: "email",
|
|
1492
|
+
value: email,
|
|
1493
|
+
onChange: setEmail,
|
|
1494
|
+
placeholder: "name@example.com",
|
|
1495
|
+
disabled: isLoading
|
|
1496
|
+
}
|
|
1497
|
+
), /* @__PURE__ */ React25.createElement(
|
|
1498
|
+
ThreeDActionButton,
|
|
1499
|
+
{
|
|
1500
|
+
type: "submit",
|
|
1501
|
+
isLoading,
|
|
1502
|
+
disabled: !email,
|
|
1503
|
+
className: "w-full mt-2"
|
|
1504
|
+
},
|
|
1505
|
+
"Join Waitlist"
|
|
1506
|
+
)))
|
|
1507
|
+
));
|
|
1508
|
+
};
|
|
1420
1509
|
export {
|
|
1421
1510
|
AppBento2,
|
|
1422
1511
|
ConsultantShowcase,
|
|
@@ -1442,5 +1531,6 @@ export {
|
|
|
1442
1531
|
PortfolioHero,
|
|
1443
1532
|
TextInput,
|
|
1444
1533
|
ThreeDActionButton,
|
|
1445
|
-
ThreeDButton
|
|
1534
|
+
ThreeDButton,
|
|
1535
|
+
WaitlistDialog
|
|
1446
1536
|
};
|