@retinalabsllc/zairusjs 15.0.55 → 15.0.60
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 -8
- package/dist/index.d.ts +1 -8
- package/dist/index.js +9 -136
- package/dist/index.mjs +9 -135
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -902,13 +902,6 @@ interface UniversalCardActionPageProps {
|
|
|
902
902
|
}
|
|
903
903
|
declare const UniversalCardActionPage: React.FC<UniversalCardActionPageProps>;
|
|
904
904
|
|
|
905
|
-
interface CardCreationDialogProps {
|
|
906
|
-
isOpen: boolean;
|
|
907
|
-
onClose: () => void;
|
|
908
|
-
onSuccess: () => void;
|
|
909
|
-
}
|
|
910
|
-
declare const CardCreationDialog: React.FC<CardCreationDialogProps>;
|
|
911
|
-
|
|
912
905
|
interface PinDialerBottomSheetProps {
|
|
913
906
|
isOpen: boolean;
|
|
914
907
|
title?: string;
|
|
@@ -918,4 +911,4 @@ interface PinDialerBottomSheetProps {
|
|
|
918
911
|
}
|
|
919
912
|
declare const PinDialerBottomSheet: React.FC<PinDialerBottomSheetProps>;
|
|
920
913
|
|
|
921
|
-
export { AppBento2, type AppBento2Props, type BannerProps, type BentoFeature, type BoardMember,
|
|
914
|
+
export { AppBento2, type AppBento2Props, type BannerProps, 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, type HomeActionBtn, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NotificationItem, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHomeView, type UniversalHomeViewProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -902,13 +902,6 @@ interface UniversalCardActionPageProps {
|
|
|
902
902
|
}
|
|
903
903
|
declare const UniversalCardActionPage: React.FC<UniversalCardActionPageProps>;
|
|
904
904
|
|
|
905
|
-
interface CardCreationDialogProps {
|
|
906
|
-
isOpen: boolean;
|
|
907
|
-
onClose: () => void;
|
|
908
|
-
onSuccess: () => void;
|
|
909
|
-
}
|
|
910
|
-
declare const CardCreationDialog: React.FC<CardCreationDialogProps>;
|
|
911
|
-
|
|
912
905
|
interface PinDialerBottomSheetProps {
|
|
913
906
|
isOpen: boolean;
|
|
914
907
|
title?: string;
|
|
@@ -918,4 +911,4 @@ interface PinDialerBottomSheetProps {
|
|
|
918
911
|
}
|
|
919
912
|
declare const PinDialerBottomSheet: React.FC<PinDialerBottomSheetProps>;
|
|
920
913
|
|
|
921
|
-
export { AppBento2, type AppBento2Props, type BannerProps, type BentoFeature, type BoardMember,
|
|
914
|
+
export { AppBento2, type AppBento2Props, type BannerProps, 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, type HomeActionBtn, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NotificationItem, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHomeView, type UniversalHomeViewProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
var index_exports = {};
|
|
33
33
|
__export(index_exports, {
|
|
34
34
|
AppBento2: () => AppBento2,
|
|
35
|
-
CardCreationDialog: () => CardCreationDialog,
|
|
36
35
|
ConsultantShowcase: () => ConsultantShowcase,
|
|
37
36
|
ContentGridBlock: () => ContentGridBlock,
|
|
38
37
|
Faq: () => Faq,
|
|
@@ -1447,8 +1446,7 @@ var UniversalTransactionPage = ({
|
|
|
1447
1446
|
{
|
|
1448
1447
|
onClick: handleGenerateReceipt,
|
|
1449
1448
|
isLoading: isGeneratingReceipt,
|
|
1450
|
-
className: "hidden"
|
|
1451
|
-
style: { display: "none" }
|
|
1449
|
+
className: "w-full hidden"
|
|
1452
1450
|
},
|
|
1453
1451
|
"Generate Receipt"
|
|
1454
1452
|
), /* @__PURE__ */ import_react23.default.createElement(
|
|
@@ -4354,134 +4352,10 @@ var UniversalCardActionPage = ({
|
|
|
4354
4352
|
));
|
|
4355
4353
|
};
|
|
4356
4354
|
|
|
4357
|
-
// src/components/
|
|
4355
|
+
// src/components/PinDialerBottomSheet.tsx
|
|
4358
4356
|
var import_react73 = __toESM(require("react"));
|
|
4359
|
-
var import_axios2 = __toESM(require("axios"));
|
|
4360
|
-
var import_react_hot_toast11 = __toESM(require("react-hot-toast"));
|
|
4361
4357
|
var import_react74 = require("@hugeicons/react");
|
|
4362
4358
|
var import_core_free_icons25 = require("@hugeicons/core-free-icons");
|
|
4363
|
-
var CheckIcon3 = ({ className = "" }) => /* @__PURE__ */ import_react73.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react73.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ import_react73.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4364
|
-
var CrossIcon3 = ({ className = "" }) => /* @__PURE__ */ import_react73.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react73.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ import_react73.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4365
|
-
var formatTierName2 = (name) => {
|
|
4366
|
-
if (!name) return "";
|
|
4367
|
-
return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
|
|
4368
|
-
};
|
|
4369
|
-
var CardCreationDialog = ({ isOpen, onClose, onSuccess }) => {
|
|
4370
|
-
const [step, setStep] = (0, import_react73.useState)("INPUT");
|
|
4371
|
-
const [activationCode, setActivationCode] = (0, import_react73.useState)("");
|
|
4372
|
-
const [isProcessing, setIsProcessing] = (0, import_react73.useState)(false);
|
|
4373
|
-
const [cardConfig, setCardConfig] = (0, import_react73.useState)(null);
|
|
4374
|
-
const [useKyc, setUseKyc] = (0, import_react73.useState)(true);
|
|
4375
|
-
const [agreedToTerms, setAgreedToTerms] = (0, import_react73.useState)(false);
|
|
4376
|
-
if (!isOpen) return null;
|
|
4377
|
-
const handleVerifyCode = async (e) => {
|
|
4378
|
-
e.preventDefault();
|
|
4379
|
-
const code = activationCode.trim().toUpperCase();
|
|
4380
|
-
if (code.length < 3) return import_react_hot_toast11.default.error("Please enter a valid activation code.");
|
|
4381
|
-
setIsProcessing(true);
|
|
4382
|
-
try {
|
|
4383
|
-
const res = await import_axios2.default.post("/api/cards/create", { activation_code: code });
|
|
4384
|
-
if (res.data.success && res.data.payload?.config) {
|
|
4385
|
-
setCardConfig(res.data.payload.config);
|
|
4386
|
-
setStep("CONFIG");
|
|
4387
|
-
setUseKyc(true);
|
|
4388
|
-
setAgreedToTerms(false);
|
|
4389
|
-
}
|
|
4390
|
-
} catch (err) {
|
|
4391
|
-
import_react_hot_toast11.default.error(err.response?.data?.error || "Invalid or expired activation code.");
|
|
4392
|
-
} finally {
|
|
4393
|
-
setIsProcessing(false);
|
|
4394
|
-
}
|
|
4395
|
-
};
|
|
4396
|
-
const handleCreateCard = async () => {
|
|
4397
|
-
if (!agreedToTerms) return import_react_hot_toast11.default.error("You must agree to the Terms and Privacy Policy.");
|
|
4398
|
-
setIsProcessing(true);
|
|
4399
|
-
try {
|
|
4400
|
-
const res = await import_axios2.default.post("/api/beta/create", {
|
|
4401
|
-
activation_code: activationCode.trim().toUpperCase(),
|
|
4402
|
-
useKyc
|
|
4403
|
-
});
|
|
4404
|
-
if (res.data.success) {
|
|
4405
|
-
import_react_hot_toast11.default.success("Card created successfully!");
|
|
4406
|
-
onSuccess();
|
|
4407
|
-
}
|
|
4408
|
-
} catch (err) {
|
|
4409
|
-
import_react_hot_toast11.default.error(err.response?.data?.error || "Failed to create card. Please try again.");
|
|
4410
|
-
} finally {
|
|
4411
|
-
setIsProcessing(false);
|
|
4412
|
-
}
|
|
4413
|
-
};
|
|
4414
|
-
const currentPrice = cardConfig ? useKyc ? cardConfig.priceUSD : cardConfig.priceIfKycSkippedUSD : 0;
|
|
4415
|
-
const canSkipKyc = cardConfig?.canSkipKyc && cardConfig?.priceIfKycSkippedUSD !== void 0;
|
|
4416
|
-
const currentDescription = cardConfig ? useKyc ? cardConfig.description : cardConfig.descriptionIfKycSkipped : "";
|
|
4417
|
-
const currentLimit = cardConfig ? useKyc ? cardConfig.cardBalanceLimit : cardConfig.cardBalanceLimitIfKycSkipped : "-";
|
|
4418
|
-
const currentCashbackRate = cardConfig ? useKyc ? cardConfig.cashbackPercent : cardConfig.cashbackPercentIfKycSkipped : "-";
|
|
4419
|
-
const currentFxFeeObj = cardConfig ? useKyc ? cardConfig.fxFee : cardConfig.fxFeeIfKycSkipped : null;
|
|
4420
|
-
const fxFeeDisplay = currentFxFeeObj ? `$${currentFxFeeObj.fixedUSD} + ${currentFxFeeObj.percentage}%` : "Standard";
|
|
4421
|
-
const instantCashback = cardConfig?.instantCashbackAmount || 0;
|
|
4422
|
-
return /* @__PURE__ */ import_react73.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ import_react73.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 relative z-10" }, /* @__PURE__ */ import_react73.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, step === "INPUT" ? "Activate Card" : "Configure Your Card"), /* @__PURE__ */ import_react73.default.createElement(
|
|
4423
|
-
"button",
|
|
4424
|
-
{
|
|
4425
|
-
disabled: isProcessing,
|
|
4426
|
-
onClick: onClose,
|
|
4427
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4428
|
-
},
|
|
4429
|
-
/* @__PURE__ */ import_react73.default.createElement(import_react74.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 18 })
|
|
4430
|
-
)), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2 relative z-10" }, step === "INPUT" && /* @__PURE__ */ import_react73.default.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ import_react73.default.createElement("p", { className: "text-xs text-neutral-500 mb-6" }, "Enter your secure invitation or activation code to begin the provisioning process."), /* @__PURE__ */ import_react73.default.createElement("form", { onSubmit: handleVerifyCode, className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4431
|
-
TextInput,
|
|
4432
|
-
{
|
|
4433
|
-
label: "Activation Code",
|
|
4434
|
-
value: activationCode,
|
|
4435
|
-
onChange: (val) => setActivationCode(val.toUpperCase().replace(/[^A-Z0-9]/g, "")),
|
|
4436
|
-
placeholder: "Code",
|
|
4437
|
-
disabled: isProcessing
|
|
4438
|
-
}
|
|
4439
|
-
), /* @__PURE__ */ import_react73.default.createElement(
|
|
4440
|
-
ThreeDActionButton,
|
|
4441
|
-
{
|
|
4442
|
-
type: "submit",
|
|
4443
|
-
disabled: activationCode.length < 3 || isProcessing,
|
|
4444
|
-
isLoading: isProcessing,
|
|
4445
|
-
className: "w-full mt-2"
|
|
4446
|
-
},
|
|
4447
|
-
"Verify Code"
|
|
4448
|
-
))), step === "CONFIG" && cardConfig && /* @__PURE__ */ import_react73.default.createElement("div", { className: "animate-in fade-in slide-in-from-right-4 duration-300 flex flex-col gap-5" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "relative bg-white rounded-xl p-5 overflow-hidden flex flex-col" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: `absolute -top-10 -right-10 w-40 h-40 bg-linear-to-bl from-[#ceff8a] to-transparent opacity-40 blur-2xl rounded-full pointer-events-none` }), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex justify-between items-start mb-2 relative z-10" }, /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-black text-sm tracking-widest " }, cardConfig.name || `${formatTierName2(cardConfig.cardTier)} Card`), /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[10px] tracking-widest px-2.5 py-1 rounded-full bg-white text-black " }, cardConfig.cardBrand || "VISA")), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-baseline justify-between mt-2 relative z-10 flex-wrap gap-2" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react73.default.createElement("h3", { className: "text-3xl font-light text-black" }, currentPrice === 0 ? "Free" : `$${currentPrice.toFixed(2)}`), currentPrice > 0 && /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-xs text-neutral-500" }, "issuance")), instantCashback > 0 && /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[11px] text-white bg-[#143731] px-2.5 py-1 rounded-full" }, "+$", instantCashback.toFixed(2), " Instant Cashback")), /* @__PURE__ */ import_react73.default.createElement("p", { className: "text-[12px] text-neutral-500 mt-2 leading-relaxed relative z-10" }, currentDescription || "Premium global spending card.")), canSkipKyc && /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-center justify-between p-3.5 border border-neutral-200 rounded-xl bg-white" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "pr-4" }, /* @__PURE__ */ import_react73.default.createElement("p", { className: "text-[13px] text-black mb-0.5" }, "Use Verified Identity (KYC)"), /* @__PURE__ */ import_react73.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug" }, "Turn off to issue card anonymously via synthetic proxy.")), /* @__PURE__ */ import_react73.default.createElement(
|
|
4449
|
-
"button",
|
|
4450
|
-
{
|
|
4451
|
-
type: "button",
|
|
4452
|
-
onClick: () => setUseKyc(!useKyc),
|
|
4453
|
-
className: `relative w-11 h-6 rounded-full transition-colors duration-300 shrink-0 ${useKyc ? "bg-black" : "bg-neutral-100"}`
|
|
4454
|
-
},
|
|
4455
|
-
/* @__PURE__ */ import_react73.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-xs transition-transform duration-300 flex items-center justify-center ${useKyc ? "translate-x-5" : "translate-x-0"}` })
|
|
4456
|
-
)), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex flex-col gap-3 bg-neutral-50 p-4 rounded-xl" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "Balance Limit"), /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[12px] text-black" }, currentLimit)), /* @__PURE__ */ import_react73.default.createElement("div", { className: "w-full h-px bg-neutral-100/60" }), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "Cashback Rate"), /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[12px] text-black" }, currentCashbackRate)), /* @__PURE__ */ import_react73.default.createElement("div", { className: "w-full h-px bg-neutral-100/60" }), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "FX Fee"), /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[12px] text-black" }, fxFeeDisplay))), cardConfig.features && cardConfig.features.length > 0 && /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex flex-col gap-2.5 my-1" }, cardConfig.features.map((feature, idx) => {
|
|
4457
|
-
const isAvailable = feature.value !== false;
|
|
4458
|
-
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
4459
|
-
return /* @__PURE__ */ import_react73.default.createElement("div", { key: idx, className: "flex items-center gap-3" }, isAvailable ? /* @__PURE__ */ import_react73.default.createElement(CheckIcon3, null) : /* @__PURE__ */ import_react73.default.createElement(CrossIcon3, null), /* @__PURE__ */ import_react73.default.createElement("span", { className: `text-[12px] truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-neutral-500 ml-1" }, valueText)));
|
|
4460
|
-
})), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-start gap-3 mt-1" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4461
|
-
"input",
|
|
4462
|
-
{
|
|
4463
|
-
type: "checkbox",
|
|
4464
|
-
id: "card-terms",
|
|
4465
|
-
checked: agreedToTerms,
|
|
4466
|
-
onChange: (e) => setAgreedToTerms(e.target.checked),
|
|
4467
|
-
className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0"
|
|
4468
|
-
}
|
|
4469
|
-
), /* @__PURE__ */ import_react73.default.createElement("label", { htmlFor: "card-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to the ", /* @__PURE__ */ import_react73.default.createElement("a", { href: "https://aeona.finance/terms", target: "_blank", className: "text-black underline" }, "Terms of Service"), " and ", /* @__PURE__ */ import_react73.default.createElement("a", { href: "https://aeona.finance/privacy", target: "_blank", className: "text-black underline" }, "Privacy Policy"), " governing card issuance.")), /* @__PURE__ */ import_react73.default.createElement("div", { className: "bg-neutral-50 rounded-lg p-3" }, /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Payment Notice"), /* @__PURE__ */ import_react73.default.createElement("span", { className: "text-[11px] text-neutral-600 leading-relaxed block" }, "By confirming, $", currentPrice.toFixed(2), " will be securely deducted from your USD asset balance to guarantee your order.")), /* @__PURE__ */ import_react73.default.createElement("div", { className: "mt-1" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4470
|
-
ThreeDActionButton,
|
|
4471
|
-
{
|
|
4472
|
-
onClick: handleCreateCard,
|
|
4473
|
-
isLoading: isProcessing,
|
|
4474
|
-
disabled: !agreedToTerms || isProcessing,
|
|
4475
|
-
className: "w-full"
|
|
4476
|
-
},
|
|
4477
|
-
"Create Card"
|
|
4478
|
-
))))));
|
|
4479
|
-
};
|
|
4480
|
-
|
|
4481
|
-
// src/components/PinDialerBottomSheet.tsx
|
|
4482
|
-
var import_react75 = __toESM(require("react"));
|
|
4483
|
-
var import_react76 = require("@hugeicons/react");
|
|
4484
|
-
var import_core_free_icons26 = require("@hugeicons/core-free-icons");
|
|
4485
4359
|
var PinDialerBottomSheet = ({
|
|
4486
4360
|
isOpen,
|
|
4487
4361
|
title = "Action Required",
|
|
@@ -4489,8 +4363,8 @@ var PinDialerBottomSheet = ({
|
|
|
4489
4363
|
onClose,
|
|
4490
4364
|
onComplete
|
|
4491
4365
|
}) => {
|
|
4492
|
-
const [pin, setPin] = (0,
|
|
4493
|
-
(0,
|
|
4366
|
+
const [pin, setPin] = (0, import_react73.useState)("");
|
|
4367
|
+
(0, import_react73.useEffect)(() => {
|
|
4494
4368
|
setPin("");
|
|
4495
4369
|
}, [isOpen]);
|
|
4496
4370
|
const handleSubmit = (e) => {
|
|
@@ -4499,7 +4373,7 @@ var PinDialerBottomSheet = ({
|
|
|
4499
4373
|
onComplete(pin);
|
|
4500
4374
|
};
|
|
4501
4375
|
if (!isOpen) return null;
|
|
4502
|
-
return /* @__PURE__ */
|
|
4376
|
+
return /* @__PURE__ */ import_react73.default.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4503
4377
|
"div",
|
|
4504
4378
|
{
|
|
4505
4379
|
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
@@ -4507,7 +4381,7 @@ var PinDialerBottomSheet = ({
|
|
|
4507
4381
|
if (!isVerifying) onClose();
|
|
4508
4382
|
}
|
|
4509
4383
|
}
|
|
4510
|
-
), /* @__PURE__ */
|
|
4384
|
+
), /* @__PURE__ */ import_react73.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react73.default.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react73.default.createElement(
|
|
4511
4385
|
"button",
|
|
4512
4386
|
{
|
|
4513
4387
|
onClick: () => {
|
|
@@ -4516,8 +4390,8 @@ var PinDialerBottomSheet = ({
|
|
|
4516
4390
|
disabled: isVerifying,
|
|
4517
4391
|
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4518
4392
|
},
|
|
4519
|
-
/* @__PURE__ */
|
|
4520
|
-
)), /* @__PURE__ */
|
|
4393
|
+
/* @__PURE__ */ import_react73.default.createElement(import_react74.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 20 })
|
|
4394
|
+
)), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ import_react73.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4521
4395
|
TextInput,
|
|
4522
4396
|
{
|
|
4523
4397
|
type: "password",
|
|
@@ -4528,7 +4402,7 @@ var PinDialerBottomSheet = ({
|
|
|
4528
4402
|
onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
|
|
4529
4403
|
placeholder: "\u2022\u2022\u2022\u2022"
|
|
4530
4404
|
}
|
|
4531
|
-
), /* @__PURE__ */
|
|
4405
|
+
), /* @__PURE__ */ import_react73.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
4532
4406
|
ThreeDActionButton,
|
|
4533
4407
|
{
|
|
4534
4408
|
type: "submit",
|
|
@@ -4542,7 +4416,6 @@ var PinDialerBottomSheet = ({
|
|
|
4542
4416
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4543
4417
|
0 && (module.exports = {
|
|
4544
4418
|
AppBento2,
|
|
4545
|
-
CardCreationDialog,
|
|
4546
4419
|
ConsultantShowcase,
|
|
4547
4420
|
ContentGridBlock,
|
|
4548
4421
|
Faq,
|
package/dist/index.mjs
CHANGED
|
@@ -1394,8 +1394,7 @@ var UniversalTransactionPage = ({
|
|
|
1394
1394
|
{
|
|
1395
1395
|
onClick: handleGenerateReceipt,
|
|
1396
1396
|
isLoading: isGeneratingReceipt,
|
|
1397
|
-
className: "hidden"
|
|
1398
|
-
style: { display: "none" }
|
|
1397
|
+
className: "w-full hidden"
|
|
1399
1398
|
},
|
|
1400
1399
|
"Generate Receipt"
|
|
1401
1400
|
), /* @__PURE__ */ React15.createElement(
|
|
@@ -4371,134 +4370,10 @@ var UniversalCardActionPage = ({
|
|
|
4371
4370
|
));
|
|
4372
4371
|
};
|
|
4373
4372
|
|
|
4374
|
-
// src/components/
|
|
4375
|
-
import React44, { useState as useState29 } from "react";
|
|
4376
|
-
import axios2 from "axios";
|
|
4377
|
-
import toast10 from "react-hot-toast";
|
|
4373
|
+
// src/components/PinDialerBottomSheet.tsx
|
|
4374
|
+
import React44, { useState as useState29, useEffect as useEffect17 } from "react";
|
|
4378
4375
|
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
4379
4376
|
import { CancelCircleIcon as CancelCircleIcon7 } from "@hugeicons/core-free-icons";
|
|
4380
|
-
var CheckIcon3 = ({ className = "" }) => /* @__PURE__ */ React44.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React44.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React44.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4381
|
-
var CrossIcon3 = ({ className = "" }) => /* @__PURE__ */ React44.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React44.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React44.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4382
|
-
var formatTierName2 = (name) => {
|
|
4383
|
-
if (!name) return "";
|
|
4384
|
-
return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
|
|
4385
|
-
};
|
|
4386
|
-
var CardCreationDialog = ({ isOpen, onClose, onSuccess }) => {
|
|
4387
|
-
const [step, setStep] = useState29("INPUT");
|
|
4388
|
-
const [activationCode, setActivationCode] = useState29("");
|
|
4389
|
-
const [isProcessing, setIsProcessing] = useState29(false);
|
|
4390
|
-
const [cardConfig, setCardConfig] = useState29(null);
|
|
4391
|
-
const [useKyc, setUseKyc] = useState29(true);
|
|
4392
|
-
const [agreedToTerms, setAgreedToTerms] = useState29(false);
|
|
4393
|
-
if (!isOpen) return null;
|
|
4394
|
-
const handleVerifyCode = async (e) => {
|
|
4395
|
-
e.preventDefault();
|
|
4396
|
-
const code = activationCode.trim().toUpperCase();
|
|
4397
|
-
if (code.length < 3) return toast10.error("Please enter a valid activation code.");
|
|
4398
|
-
setIsProcessing(true);
|
|
4399
|
-
try {
|
|
4400
|
-
const res = await axios2.post("/api/cards/create", { activation_code: code });
|
|
4401
|
-
if (res.data.success && res.data.payload?.config) {
|
|
4402
|
-
setCardConfig(res.data.payload.config);
|
|
4403
|
-
setStep("CONFIG");
|
|
4404
|
-
setUseKyc(true);
|
|
4405
|
-
setAgreedToTerms(false);
|
|
4406
|
-
}
|
|
4407
|
-
} catch (err) {
|
|
4408
|
-
toast10.error(err.response?.data?.error || "Invalid or expired activation code.");
|
|
4409
|
-
} finally {
|
|
4410
|
-
setIsProcessing(false);
|
|
4411
|
-
}
|
|
4412
|
-
};
|
|
4413
|
-
const handleCreateCard = async () => {
|
|
4414
|
-
if (!agreedToTerms) return toast10.error("You must agree to the Terms and Privacy Policy.");
|
|
4415
|
-
setIsProcessing(true);
|
|
4416
|
-
try {
|
|
4417
|
-
const res = await axios2.post("/api/beta/create", {
|
|
4418
|
-
activation_code: activationCode.trim().toUpperCase(),
|
|
4419
|
-
useKyc
|
|
4420
|
-
});
|
|
4421
|
-
if (res.data.success) {
|
|
4422
|
-
toast10.success("Card created successfully!");
|
|
4423
|
-
onSuccess();
|
|
4424
|
-
}
|
|
4425
|
-
} catch (err) {
|
|
4426
|
-
toast10.error(err.response?.data?.error || "Failed to create card. Please try again.");
|
|
4427
|
-
} finally {
|
|
4428
|
-
setIsProcessing(false);
|
|
4429
|
-
}
|
|
4430
|
-
};
|
|
4431
|
-
const currentPrice = cardConfig ? useKyc ? cardConfig.priceUSD : cardConfig.priceIfKycSkippedUSD : 0;
|
|
4432
|
-
const canSkipKyc = cardConfig?.canSkipKyc && cardConfig?.priceIfKycSkippedUSD !== void 0;
|
|
4433
|
-
const currentDescription = cardConfig ? useKyc ? cardConfig.description : cardConfig.descriptionIfKycSkipped : "";
|
|
4434
|
-
const currentLimit = cardConfig ? useKyc ? cardConfig.cardBalanceLimit : cardConfig.cardBalanceLimitIfKycSkipped : "-";
|
|
4435
|
-
const currentCashbackRate = cardConfig ? useKyc ? cardConfig.cashbackPercent : cardConfig.cashbackPercentIfKycSkipped : "-";
|
|
4436
|
-
const currentFxFeeObj = cardConfig ? useKyc ? cardConfig.fxFee : cardConfig.fxFeeIfKycSkipped : null;
|
|
4437
|
-
const fxFeeDisplay = currentFxFeeObj ? `$${currentFxFeeObj.fixedUSD} + ${currentFxFeeObj.percentage}%` : "Standard";
|
|
4438
|
-
const instantCashback = cardConfig?.instantCashbackAmount || 0;
|
|
4439
|
-
return /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && onClose() }), /* @__PURE__ */ React44.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React44.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 relative z-10" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, step === "INPUT" ? "Activate Card" : "Configure Your Card"), /* @__PURE__ */ React44.createElement(
|
|
4440
|
-
"button",
|
|
4441
|
-
{
|
|
4442
|
-
disabled: isProcessing,
|
|
4443
|
-
onClick: onClose,
|
|
4444
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4445
|
-
},
|
|
4446
|
-
/* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: CancelCircleIcon7, size: 18 })
|
|
4447
|
-
)), /* @__PURE__ */ React44.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2 relative z-10" }, step === "INPUT" && /* @__PURE__ */ React44.createElement("div", { className: "animate-in fade-in duration-300" }, /* @__PURE__ */ React44.createElement("p", { className: "text-xs text-neutral-500 mb-6" }, "Enter your secure invitation or activation code to begin the provisioning process."), /* @__PURE__ */ React44.createElement("form", { onSubmit: handleVerifyCode, className: "flex flex-col gap-6" }, /* @__PURE__ */ React44.createElement(
|
|
4448
|
-
TextInput,
|
|
4449
|
-
{
|
|
4450
|
-
label: "Activation Code",
|
|
4451
|
-
value: activationCode,
|
|
4452
|
-
onChange: (val) => setActivationCode(val.toUpperCase().replace(/[^A-Z0-9]/g, "")),
|
|
4453
|
-
placeholder: "Code",
|
|
4454
|
-
disabled: isProcessing
|
|
4455
|
-
}
|
|
4456
|
-
), /* @__PURE__ */ React44.createElement(
|
|
4457
|
-
ThreeDActionButton,
|
|
4458
|
-
{
|
|
4459
|
-
type: "submit",
|
|
4460
|
-
disabled: activationCode.length < 3 || isProcessing,
|
|
4461
|
-
isLoading: isProcessing,
|
|
4462
|
-
className: "w-full mt-2"
|
|
4463
|
-
},
|
|
4464
|
-
"Verify Code"
|
|
4465
|
-
))), step === "CONFIG" && cardConfig && /* @__PURE__ */ React44.createElement("div", { className: "animate-in fade-in slide-in-from-right-4 duration-300 flex flex-col gap-5" }, /* @__PURE__ */ React44.createElement("div", { className: "relative bg-white rounded-xl p-5 overflow-hidden flex flex-col" }, /* @__PURE__ */ React44.createElement("div", { className: `absolute -top-10 -right-10 w-40 h-40 bg-linear-to-bl from-[#ceff8a] to-transparent opacity-40 blur-2xl rounded-full pointer-events-none` }), /* @__PURE__ */ React44.createElement("div", { className: "flex justify-between items-start mb-2 relative z-10" }, /* @__PURE__ */ React44.createElement("span", { className: "text-black text-sm tracking-widest " }, cardConfig.name || `${formatTierName2(cardConfig.cardTier)} Card`), /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-widest px-2.5 py-1 rounded-full bg-white text-black " }, cardConfig.cardBrand || "VISA")), /* @__PURE__ */ React44.createElement("div", { className: "flex items-baseline justify-between mt-2 relative z-10 flex-wrap gap-2" }, /* @__PURE__ */ React44.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-3xl font-light text-black" }, currentPrice === 0 ? "Free" : `$${currentPrice.toFixed(2)}`), currentPrice > 0 && /* @__PURE__ */ React44.createElement("span", { className: "text-xs text-neutral-500" }, "issuance")), instantCashback > 0 && /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] text-white bg-[#143731] px-2.5 py-1 rounded-full" }, "+$", instantCashback.toFixed(2), " Instant Cashback")), /* @__PURE__ */ React44.createElement("p", { className: "text-[12px] text-neutral-500 mt-2 leading-relaxed relative z-10" }, currentDescription || "Premium global spending card.")), canSkipKyc && /* @__PURE__ */ React44.createElement("div", { className: "flex items-center justify-between p-3.5 border border-neutral-200 rounded-xl bg-white" }, /* @__PURE__ */ React44.createElement("div", { className: "pr-4" }, /* @__PURE__ */ React44.createElement("p", { className: "text-[13px] text-black mb-0.5" }, "Use Verified Identity (KYC)"), /* @__PURE__ */ React44.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug" }, "Turn off to issue card anonymously via synthetic proxy.")), /* @__PURE__ */ React44.createElement(
|
|
4466
|
-
"button",
|
|
4467
|
-
{
|
|
4468
|
-
type: "button",
|
|
4469
|
-
onClick: () => setUseKyc(!useKyc),
|
|
4470
|
-
className: `relative w-11 h-6 rounded-full transition-colors duration-300 shrink-0 ${useKyc ? "bg-black" : "bg-neutral-100"}`
|
|
4471
|
-
},
|
|
4472
|
-
/* @__PURE__ */ React44.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-xs transition-transform duration-300 flex items-center justify-center ${useKyc ? "translate-x-5" : "translate-x-0"}` })
|
|
4473
|
-
)), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-3 bg-neutral-50 p-4 rounded-xl" }, /* @__PURE__ */ React44.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "Balance Limit"), /* @__PURE__ */ React44.createElement("span", { className: "text-[12px] text-black" }, currentLimit)), /* @__PURE__ */ React44.createElement("div", { className: "w-full h-px bg-neutral-100/60" }), /* @__PURE__ */ React44.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "Cashback Rate"), /* @__PURE__ */ React44.createElement("span", { className: "text-[12px] text-black" }, currentCashbackRate)), /* @__PURE__ */ React44.createElement("div", { className: "w-full h-px bg-neutral-100/60" }), /* @__PURE__ */ React44.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-wider text-neutral-500 " }, "FX Fee"), /* @__PURE__ */ React44.createElement("span", { className: "text-[12px] text-black" }, fxFeeDisplay))), cardConfig.features && cardConfig.features.length > 0 && /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-2.5 my-1" }, cardConfig.features.map((feature, idx) => {
|
|
4474
|
-
const isAvailable = feature.value !== false;
|
|
4475
|
-
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
4476
|
-
return /* @__PURE__ */ React44.createElement("div", { key: idx, className: "flex items-center gap-3" }, isAvailable ? /* @__PURE__ */ React44.createElement(CheckIcon3, null) : /* @__PURE__ */ React44.createElement(CrossIcon3, null), /* @__PURE__ */ React44.createElement("span", { className: `text-[12px] truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ React44.createElement("span", { className: "text-neutral-500 ml-1" }, valueText)));
|
|
4477
|
-
})), /* @__PURE__ */ React44.createElement("div", { className: "flex items-start gap-3 mt-1" }, /* @__PURE__ */ React44.createElement(
|
|
4478
|
-
"input",
|
|
4479
|
-
{
|
|
4480
|
-
type: "checkbox",
|
|
4481
|
-
id: "card-terms",
|
|
4482
|
-
checked: agreedToTerms,
|
|
4483
|
-
onChange: (e) => setAgreedToTerms(e.target.checked),
|
|
4484
|
-
className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0"
|
|
4485
|
-
}
|
|
4486
|
-
), /* @__PURE__ */ React44.createElement("label", { htmlFor: "card-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to the ", /* @__PURE__ */ React44.createElement("a", { href: "https://aeona.finance/terms", target: "_blank", className: "text-black underline" }, "Terms of Service"), " and ", /* @__PURE__ */ React44.createElement("a", { href: "https://aeona.finance/privacy", target: "_blank", className: "text-black underline" }, "Privacy Policy"), " governing card issuance.")), /* @__PURE__ */ React44.createElement("div", { className: "bg-neutral-50 rounded-lg p-3" }, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Payment Notice"), /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] text-neutral-600 leading-relaxed block" }, "By confirming, $", currentPrice.toFixed(2), " will be securely deducted from your USD asset balance to guarantee your order.")), /* @__PURE__ */ React44.createElement("div", { className: "mt-1" }, /* @__PURE__ */ React44.createElement(
|
|
4487
|
-
ThreeDActionButton,
|
|
4488
|
-
{
|
|
4489
|
-
onClick: handleCreateCard,
|
|
4490
|
-
isLoading: isProcessing,
|
|
4491
|
-
disabled: !agreedToTerms || isProcessing,
|
|
4492
|
-
className: "w-full"
|
|
4493
|
-
},
|
|
4494
|
-
"Create Card"
|
|
4495
|
-
))))));
|
|
4496
|
-
};
|
|
4497
|
-
|
|
4498
|
-
// src/components/PinDialerBottomSheet.tsx
|
|
4499
|
-
import React45, { useState as useState30, useEffect as useEffect17 } from "react";
|
|
4500
|
-
import { HugeiconsIcon as HugeiconsIcon31 } from "@hugeicons/react";
|
|
4501
|
-
import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
|
|
4502
4377
|
var PinDialerBottomSheet = ({
|
|
4503
4378
|
isOpen,
|
|
4504
4379
|
title = "Action Required",
|
|
@@ -4506,7 +4381,7 @@ var PinDialerBottomSheet = ({
|
|
|
4506
4381
|
onClose,
|
|
4507
4382
|
onComplete
|
|
4508
4383
|
}) => {
|
|
4509
|
-
const [pin, setPin] =
|
|
4384
|
+
const [pin, setPin] = useState29("");
|
|
4510
4385
|
useEffect17(() => {
|
|
4511
4386
|
setPin("");
|
|
4512
4387
|
}, [isOpen]);
|
|
@@ -4516,7 +4391,7 @@ var PinDialerBottomSheet = ({
|
|
|
4516
4391
|
onComplete(pin);
|
|
4517
4392
|
};
|
|
4518
4393
|
if (!isOpen) return null;
|
|
4519
|
-
return /* @__PURE__ */
|
|
4394
|
+
return /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React44.createElement(
|
|
4520
4395
|
"div",
|
|
4521
4396
|
{
|
|
4522
4397
|
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
@@ -4524,7 +4399,7 @@ var PinDialerBottomSheet = ({
|
|
|
4524
4399
|
if (!isVerifying) onClose();
|
|
4525
4400
|
}
|
|
4526
4401
|
}
|
|
4527
|
-
), /* @__PURE__ */
|
|
4402
|
+
), /* @__PURE__ */ React44.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React44.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ React44.createElement(
|
|
4528
4403
|
"button",
|
|
4529
4404
|
{
|
|
4530
4405
|
onClick: () => {
|
|
@@ -4533,8 +4408,8 @@ var PinDialerBottomSheet = ({
|
|
|
4533
4408
|
disabled: isVerifying,
|
|
4534
4409
|
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4535
4410
|
},
|
|
4536
|
-
/* @__PURE__ */
|
|
4537
|
-
)), /* @__PURE__ */
|
|
4411
|
+
/* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: CancelCircleIcon7, size: 20 })
|
|
4412
|
+
)), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ React44.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React44.createElement(
|
|
4538
4413
|
TextInput,
|
|
4539
4414
|
{
|
|
4540
4415
|
type: "password",
|
|
@@ -4545,7 +4420,7 @@ var PinDialerBottomSheet = ({
|
|
|
4545
4420
|
onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
|
|
4546
4421
|
placeholder: "\u2022\u2022\u2022\u2022"
|
|
4547
4422
|
}
|
|
4548
|
-
), /* @__PURE__ */
|
|
4423
|
+
), /* @__PURE__ */ React44.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React44.createElement(
|
|
4549
4424
|
ThreeDActionButton,
|
|
4550
4425
|
{
|
|
4551
4426
|
type: "submit",
|
|
@@ -4558,7 +4433,6 @@ var PinDialerBottomSheet = ({
|
|
|
4558
4433
|
};
|
|
4559
4434
|
export {
|
|
4560
4435
|
AppBento2,
|
|
4561
|
-
CardCreationDialog,
|
|
4562
4436
|
ConsultantShowcase,
|
|
4563
4437
|
ContentGridBlock,
|
|
4564
4438
|
Faq,
|