@retinalabsllc/zairusjs 15.0.50 → 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 CHANGED
@@ -29,6 +29,7 @@ interface ThreeDActionButtonProps {
29
29
  isLoading?: boolean;
30
30
  children: React.ReactNode;
31
31
  className?: string;
32
+ style?: React.CSSProperties;
32
33
  ariaLabel?: string;
33
34
  }
34
35
  declare const ThreeDActionButton: React.FC<ThreeDActionButtonProps>;
@@ -901,13 +902,6 @@ interface UniversalCardActionPageProps {
901
902
  }
902
903
  declare const UniversalCardActionPage: React.FC<UniversalCardActionPageProps>;
903
904
 
904
- interface CardCreationDialogProps {
905
- isOpen: boolean;
906
- onClose: () => void;
907
- onSuccess: () => void;
908
- }
909
- declare const CardCreationDialog: React.FC<CardCreationDialogProps>;
910
-
911
905
  interface PinDialerBottomSheetProps {
912
906
  isOpen: boolean;
913
907
  title?: string;
@@ -917,4 +911,4 @@ interface PinDialerBottomSheetProps {
917
911
  }
918
912
  declare const PinDialerBottomSheet: React.FC<PinDialerBottomSheetProps>;
919
913
 
920
- export { AppBento2, type AppBento2Props, type BannerProps, type BentoFeature, type BoardMember, CardCreationDialog, type CardCreationDialogProps, 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 };
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
@@ -29,6 +29,7 @@ interface ThreeDActionButtonProps {
29
29
  isLoading?: boolean;
30
30
  children: React.ReactNode;
31
31
  className?: string;
32
+ style?: React.CSSProperties;
32
33
  ariaLabel?: string;
33
34
  }
34
35
  declare const ThreeDActionButton: React.FC<ThreeDActionButtonProps>;
@@ -901,13 +902,6 @@ interface UniversalCardActionPageProps {
901
902
  }
902
903
  declare const UniversalCardActionPage: React.FC<UniversalCardActionPageProps>;
903
904
 
904
- interface CardCreationDialogProps {
905
- isOpen: boolean;
906
- onClose: () => void;
907
- onSuccess: () => void;
908
- }
909
- declare const CardCreationDialog: React.FC<CardCreationDialogProps>;
910
-
911
905
  interface PinDialerBottomSheetProps {
912
906
  isOpen: boolean;
913
907
  title?: string;
@@ -917,4 +911,4 @@ interface PinDialerBottomSheetProps {
917
911
  }
918
912
  declare const PinDialerBottomSheet: React.FC<PinDialerBottomSheetProps>;
919
913
 
920
- export { AppBento2, type AppBento2Props, type BannerProps, type BentoFeature, type BoardMember, CardCreationDialog, type CardCreationDialogProps, 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 };
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,
@@ -234,6 +233,7 @@ var ThreeDActionButton = ({
234
233
  disabled = false,
235
234
  isLoading = false,
236
235
  children,
236
+ style = {},
237
237
  className = ""
238
238
  }) => {
239
239
  const isInteractionDisabled = disabled || isLoading;
@@ -273,7 +273,7 @@ var ThreeDActionButton = ({
273
273
  ${isInteractionDisabled ? "opacity-50 cursor-not-allowed" : "active:translate-y-0.5"}
274
274
  ${className}
275
275
  `,
276
- style: { boxShadow: isInteractionDisabled ? disabledShadow : baseShadow },
276
+ style: { boxShadow: isInteractionDisabled ? disabledShadow : baseShadow, ...style },
277
277
  onMouseEnter: (e) => {
278
278
  if (isInteractionDisabled) return;
279
279
  e.currentTarget.style.boxShadow = hoverShadow;
@@ -1947,7 +1947,7 @@ var UniversalWalletPage = ({
1947
1947
  message: `Ensure you only send assets using the exact network specified. Minimum deposit is 15 ${selectedWallet.currency}. Sending funds through an unsupported network or under the minimum will result in permanent loss of funds.`,
1948
1948
  isDismissible: false
1949
1949
  }
1950
- )), /* @__PURE__ */ import_react29.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react29.default.createElement("div", null, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ import_react29.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react29.default.createElement(import_react30.HugeiconsIcon, { icon: import_core_free_icons10.Copy01Icon, size: 14 })))), !external && /* @__PURE__ */ import_react29.default.createElement("div", null, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react29.default.createElement(ThreeDActionButton, { onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet), isLoading: isGeneratingStatement, className: "w-full hidden" }, "Generate Statement"), /* @__PURE__ */ import_react29.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ import_react29.default.createElement(
1950
+ )), /* @__PURE__ */ import_react29.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react29.default.createElement("div", null, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ import_react29.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react29.default.createElement(import_react30.HugeiconsIcon, { icon: import_core_free_icons10.Copy01Icon, size: 14 })))), !external && /* @__PURE__ */ import_react29.default.createElement("div", null, /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react29.default.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ import_react29.default.createElement(
1951
1951
  ConfirmationDialog,
1952
1952
  {
1953
1953
  isOpen: showCopyWarning,
@@ -4352,134 +4352,10 @@ var UniversalCardActionPage = ({
4352
4352
  ));
4353
4353
  };
4354
4354
 
4355
- // src/components/CardCreationDialog.tsx
4355
+ // src/components/PinDialerBottomSheet.tsx
4356
4356
  var import_react73 = __toESM(require("react"));
4357
- var import_axios2 = __toESM(require("axios"));
4358
- var import_react_hot_toast11 = __toESM(require("react-hot-toast"));
4359
4357
  var import_react74 = require("@hugeicons/react");
4360
4358
  var import_core_free_icons25 = require("@hugeicons/core-free-icons");
4361
- 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" }));
4362
- 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" }));
4363
- var formatTierName2 = (name) => {
4364
- if (!name) return "";
4365
- return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
4366
- };
4367
- var CardCreationDialog = ({ isOpen, onClose, onSuccess }) => {
4368
- const [step, setStep] = (0, import_react73.useState)("INPUT");
4369
- const [activationCode, setActivationCode] = (0, import_react73.useState)("");
4370
- const [isProcessing, setIsProcessing] = (0, import_react73.useState)(false);
4371
- const [cardConfig, setCardConfig] = (0, import_react73.useState)(null);
4372
- const [useKyc, setUseKyc] = (0, import_react73.useState)(true);
4373
- const [agreedToTerms, setAgreedToTerms] = (0, import_react73.useState)(false);
4374
- if (!isOpen) return null;
4375
- const handleVerifyCode = async (e) => {
4376
- e.preventDefault();
4377
- const code = activationCode.trim().toUpperCase();
4378
- if (code.length < 3) return import_react_hot_toast11.default.error("Please enter a valid activation code.");
4379
- setIsProcessing(true);
4380
- try {
4381
- const res = await import_axios2.default.post("/api/cards/create", { activation_code: code });
4382
- if (res.data.success && res.data.payload?.config) {
4383
- setCardConfig(res.data.payload.config);
4384
- setStep("CONFIG");
4385
- setUseKyc(true);
4386
- setAgreedToTerms(false);
4387
- }
4388
- } catch (err) {
4389
- import_react_hot_toast11.default.error(err.response?.data?.error || "Invalid or expired activation code.");
4390
- } finally {
4391
- setIsProcessing(false);
4392
- }
4393
- };
4394
- const handleCreateCard = async () => {
4395
- if (!agreedToTerms) return import_react_hot_toast11.default.error("You must agree to the Terms and Privacy Policy.");
4396
- setIsProcessing(true);
4397
- try {
4398
- const res = await import_axios2.default.post("/api/beta/create", {
4399
- activation_code: activationCode.trim().toUpperCase(),
4400
- useKyc
4401
- });
4402
- if (res.data.success) {
4403
- import_react_hot_toast11.default.success("Card created successfully!");
4404
- onSuccess();
4405
- }
4406
- } catch (err) {
4407
- import_react_hot_toast11.default.error(err.response?.data?.error || "Failed to create card. Please try again.");
4408
- } finally {
4409
- setIsProcessing(false);
4410
- }
4411
- };
4412
- const currentPrice = cardConfig ? useKyc ? cardConfig.priceUSD : cardConfig.priceIfKycSkippedUSD : 0;
4413
- const canSkipKyc = cardConfig?.canSkipKyc && cardConfig?.priceIfKycSkippedUSD !== void 0;
4414
- const currentDescription = cardConfig ? useKyc ? cardConfig.description : cardConfig.descriptionIfKycSkipped : "";
4415
- const currentLimit = cardConfig ? useKyc ? cardConfig.cardBalanceLimit : cardConfig.cardBalanceLimitIfKycSkipped : "-";
4416
- const currentCashbackRate = cardConfig ? useKyc ? cardConfig.cashbackPercent : cardConfig.cashbackPercentIfKycSkipped : "-";
4417
- const currentFxFeeObj = cardConfig ? useKyc ? cardConfig.fxFee : cardConfig.fxFeeIfKycSkipped : null;
4418
- const fxFeeDisplay = currentFxFeeObj ? `$${currentFxFeeObj.fixedUSD} + ${currentFxFeeObj.percentage}%` : "Standard";
4419
- const instantCashback = cardConfig?.instantCashbackAmount || 0;
4420
- 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(
4421
- "button",
4422
- {
4423
- disabled: isProcessing,
4424
- onClick: onClose,
4425
- className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4426
- },
4427
- /* @__PURE__ */ import_react73.default.createElement(import_react74.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 18 })
4428
- )), /* @__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(
4429
- TextInput,
4430
- {
4431
- label: "Activation Code",
4432
- value: activationCode,
4433
- onChange: (val) => setActivationCode(val.toUpperCase().replace(/[^A-Z0-9]/g, "")),
4434
- placeholder: "Code",
4435
- disabled: isProcessing
4436
- }
4437
- ), /* @__PURE__ */ import_react73.default.createElement(
4438
- ThreeDActionButton,
4439
- {
4440
- type: "submit",
4441
- disabled: activationCode.length < 3 || isProcessing,
4442
- isLoading: isProcessing,
4443
- className: "w-full mt-2"
4444
- },
4445
- "Verify Code"
4446
- ))), 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(
4447
- "button",
4448
- {
4449
- type: "button",
4450
- onClick: () => setUseKyc(!useKyc),
4451
- className: `relative w-11 h-6 rounded-full transition-colors duration-300 shrink-0 ${useKyc ? "bg-black" : "bg-neutral-100"}`
4452
- },
4453
- /* @__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"}` })
4454
- )), /* @__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) => {
4455
- const isAvailable = feature.value !== false;
4456
- const valueText = typeof feature.value === "string" ? feature.value : "";
4457
- 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)));
4458
- })), /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex items-start gap-3 mt-1" }, /* @__PURE__ */ import_react73.default.createElement(
4459
- "input",
4460
- {
4461
- type: "checkbox",
4462
- id: "card-terms",
4463
- checked: agreedToTerms,
4464
- onChange: (e) => setAgreedToTerms(e.target.checked),
4465
- className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0"
4466
- }
4467
- ), /* @__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(
4468
- ThreeDActionButton,
4469
- {
4470
- onClick: handleCreateCard,
4471
- isLoading: isProcessing,
4472
- disabled: !agreedToTerms || isProcessing,
4473
- className: "w-full"
4474
- },
4475
- "Create Card"
4476
- ))))));
4477
- };
4478
-
4479
- // src/components/PinDialerBottomSheet.tsx
4480
- var import_react75 = __toESM(require("react"));
4481
- var import_react76 = require("@hugeicons/react");
4482
- var import_core_free_icons26 = require("@hugeicons/core-free-icons");
4483
4359
  var PinDialerBottomSheet = ({
4484
4360
  isOpen,
4485
4361
  title = "Action Required",
@@ -4487,8 +4363,8 @@ var PinDialerBottomSheet = ({
4487
4363
  onClose,
4488
4364
  onComplete
4489
4365
  }) => {
4490
- const [pin, setPin] = (0, import_react75.useState)("");
4491
- (0, import_react75.useEffect)(() => {
4366
+ const [pin, setPin] = (0, import_react73.useState)("");
4367
+ (0, import_react73.useEffect)(() => {
4492
4368
  setPin("");
4493
4369
  }, [isOpen]);
4494
4370
  const handleSubmit = (e) => {
@@ -4497,7 +4373,7 @@ var PinDialerBottomSheet = ({
4497
4373
  onComplete(pin);
4498
4374
  };
4499
4375
  if (!isOpen) return null;
4500
- return /* @__PURE__ */ import_react75.default.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react75.default.createElement(
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(
4501
4377
  "div",
4502
4378
  {
4503
4379
  className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
@@ -4505,7 +4381,7 @@ var PinDialerBottomSheet = ({
4505
4381
  if (!isVerifying) onClose();
4506
4382
  }
4507
4383
  }
4508
- ), /* @__PURE__ */ import_react75.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_react75.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react75.default.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react75.default.createElement(
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(
4509
4385
  "button",
4510
4386
  {
4511
4387
  onClick: () => {
@@ -4514,8 +4390,8 @@ var PinDialerBottomSheet = ({
4514
4390
  disabled: isVerifying,
4515
4391
  className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4516
4392
  },
4517
- /* @__PURE__ */ import_react75.default.createElement(import_react76.HugeiconsIcon, { icon: import_core_free_icons26.CancelCircleIcon, size: 20 })
4518
- )), /* @__PURE__ */ import_react75.default.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ import_react75.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react75.default.createElement(
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(
4519
4395
  TextInput,
4520
4396
  {
4521
4397
  type: "password",
@@ -4526,7 +4402,7 @@ var PinDialerBottomSheet = ({
4526
4402
  onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
4527
4403
  placeholder: "\u2022\u2022\u2022\u2022"
4528
4404
  }
4529
- ), /* @__PURE__ */ import_react75.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react75.default.createElement(
4405
+ ), /* @__PURE__ */ import_react73.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react73.default.createElement(
4530
4406
  ThreeDActionButton,
4531
4407
  {
4532
4408
  type: "submit",
@@ -4540,7 +4416,6 @@ var PinDialerBottomSheet = ({
4540
4416
  // Annotate the CommonJS export names for ESM import in node:
4541
4417
  0 && (module.exports = {
4542
4418
  AppBento2,
4543
- CardCreationDialog,
4544
4419
  ConsultantShowcase,
4545
4420
  ContentGridBlock,
4546
4421
  Faq,
package/dist/index.mjs CHANGED
@@ -156,6 +156,7 @@ var ThreeDActionButton = ({
156
156
  disabled = false,
157
157
  isLoading = false,
158
158
  children,
159
+ style = {},
159
160
  className = ""
160
161
  }) => {
161
162
  const isInteractionDisabled = disabled || isLoading;
@@ -195,7 +196,7 @@ var ThreeDActionButton = ({
195
196
  ${isInteractionDisabled ? "opacity-50 cursor-not-allowed" : "active:translate-y-0.5"}
196
197
  ${className}
197
198
  `,
198
- style: { boxShadow: isInteractionDisabled ? disabledShadow : baseShadow },
199
+ style: { boxShadow: isInteractionDisabled ? disabledShadow : baseShadow, ...style },
199
200
  onMouseEnter: (e) => {
200
201
  if (isInteractionDisabled) return;
201
202
  e.currentTarget.style.boxShadow = hoverShadow;
@@ -1912,7 +1913,7 @@ var UniversalWalletPage = ({
1912
1913
  message: `Ensure you only send assets using the exact network specified. Minimum deposit is 15 ${selectedWallet.currency}. Sending funds through an unsupported network or under the minimum will result in permanent loss of funds.`,
1913
1914
  isDismissible: false
1914
1915
  }
1915
- )), /* @__PURE__ */ React18.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon12, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React18.createElement(ThreeDActionButton, { onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet), isLoading: isGeneratingStatement, className: "w-full hidden" }, "Generate Statement"), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ React18.createElement(
1916
+ )), /* @__PURE__ */ React18.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React18.createElement(HugeiconsIcon12, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React18.createElement("div", null, /* @__PURE__ */ React18.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React18.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React18.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ React18.createElement(
1916
1917
  ConfirmationDialog,
1917
1918
  {
1918
1919
  isOpen: showCopyWarning,
@@ -4369,134 +4370,10 @@ var UniversalCardActionPage = ({
4369
4370
  ));
4370
4371
  };
4371
4372
 
4372
- // src/components/CardCreationDialog.tsx
4373
- import React44, { useState as useState29 } from "react";
4374
- import axios2 from "axios";
4375
- import toast10 from "react-hot-toast";
4373
+ // src/components/PinDialerBottomSheet.tsx
4374
+ import React44, { useState as useState29, useEffect as useEffect17 } from "react";
4376
4375
  import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
4377
4376
  import { CancelCircleIcon as CancelCircleIcon7 } from "@hugeicons/core-free-icons";
4378
- 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" }));
4379
- 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" }));
4380
- var formatTierName2 = (name) => {
4381
- if (!name) return "";
4382
- return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
4383
- };
4384
- var CardCreationDialog = ({ isOpen, onClose, onSuccess }) => {
4385
- const [step, setStep] = useState29("INPUT");
4386
- const [activationCode, setActivationCode] = useState29("");
4387
- const [isProcessing, setIsProcessing] = useState29(false);
4388
- const [cardConfig, setCardConfig] = useState29(null);
4389
- const [useKyc, setUseKyc] = useState29(true);
4390
- const [agreedToTerms, setAgreedToTerms] = useState29(false);
4391
- if (!isOpen) return null;
4392
- const handleVerifyCode = async (e) => {
4393
- e.preventDefault();
4394
- const code = activationCode.trim().toUpperCase();
4395
- if (code.length < 3) return toast10.error("Please enter a valid activation code.");
4396
- setIsProcessing(true);
4397
- try {
4398
- const res = await axios2.post("/api/cards/create", { activation_code: code });
4399
- if (res.data.success && res.data.payload?.config) {
4400
- setCardConfig(res.data.payload.config);
4401
- setStep("CONFIG");
4402
- setUseKyc(true);
4403
- setAgreedToTerms(false);
4404
- }
4405
- } catch (err) {
4406
- toast10.error(err.response?.data?.error || "Invalid or expired activation code.");
4407
- } finally {
4408
- setIsProcessing(false);
4409
- }
4410
- };
4411
- const handleCreateCard = async () => {
4412
- if (!agreedToTerms) return toast10.error("You must agree to the Terms and Privacy Policy.");
4413
- setIsProcessing(true);
4414
- try {
4415
- const res = await axios2.post("/api/beta/create", {
4416
- activation_code: activationCode.trim().toUpperCase(),
4417
- useKyc
4418
- });
4419
- if (res.data.success) {
4420
- toast10.success("Card created successfully!");
4421
- onSuccess();
4422
- }
4423
- } catch (err) {
4424
- toast10.error(err.response?.data?.error || "Failed to create card. Please try again.");
4425
- } finally {
4426
- setIsProcessing(false);
4427
- }
4428
- };
4429
- const currentPrice = cardConfig ? useKyc ? cardConfig.priceUSD : cardConfig.priceIfKycSkippedUSD : 0;
4430
- const canSkipKyc = cardConfig?.canSkipKyc && cardConfig?.priceIfKycSkippedUSD !== void 0;
4431
- const currentDescription = cardConfig ? useKyc ? cardConfig.description : cardConfig.descriptionIfKycSkipped : "";
4432
- const currentLimit = cardConfig ? useKyc ? cardConfig.cardBalanceLimit : cardConfig.cardBalanceLimitIfKycSkipped : "-";
4433
- const currentCashbackRate = cardConfig ? useKyc ? cardConfig.cashbackPercent : cardConfig.cashbackPercentIfKycSkipped : "-";
4434
- const currentFxFeeObj = cardConfig ? useKyc ? cardConfig.fxFee : cardConfig.fxFeeIfKycSkipped : null;
4435
- const fxFeeDisplay = currentFxFeeObj ? `$${currentFxFeeObj.fixedUSD} + ${currentFxFeeObj.percentage}%` : "Standard";
4436
- const instantCashback = cardConfig?.instantCashbackAmount || 0;
4437
- 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(
4438
- "button",
4439
- {
4440
- disabled: isProcessing,
4441
- onClick: onClose,
4442
- className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4443
- },
4444
- /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: CancelCircleIcon7, size: 18 })
4445
- )), /* @__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(
4446
- TextInput,
4447
- {
4448
- label: "Activation Code",
4449
- value: activationCode,
4450
- onChange: (val) => setActivationCode(val.toUpperCase().replace(/[^A-Z0-9]/g, "")),
4451
- placeholder: "Code",
4452
- disabled: isProcessing
4453
- }
4454
- ), /* @__PURE__ */ React44.createElement(
4455
- ThreeDActionButton,
4456
- {
4457
- type: "submit",
4458
- disabled: activationCode.length < 3 || isProcessing,
4459
- isLoading: isProcessing,
4460
- className: "w-full mt-2"
4461
- },
4462
- "Verify Code"
4463
- ))), 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(
4464
- "button",
4465
- {
4466
- type: "button",
4467
- onClick: () => setUseKyc(!useKyc),
4468
- className: `relative w-11 h-6 rounded-full transition-colors duration-300 shrink-0 ${useKyc ? "bg-black" : "bg-neutral-100"}`
4469
- },
4470
- /* @__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"}` })
4471
- )), /* @__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) => {
4472
- const isAvailable = feature.value !== false;
4473
- const valueText = typeof feature.value === "string" ? feature.value : "";
4474
- 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)));
4475
- })), /* @__PURE__ */ React44.createElement("div", { className: "flex items-start gap-3 mt-1" }, /* @__PURE__ */ React44.createElement(
4476
- "input",
4477
- {
4478
- type: "checkbox",
4479
- id: "card-terms",
4480
- checked: agreedToTerms,
4481
- onChange: (e) => setAgreedToTerms(e.target.checked),
4482
- className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0"
4483
- }
4484
- ), /* @__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(
4485
- ThreeDActionButton,
4486
- {
4487
- onClick: handleCreateCard,
4488
- isLoading: isProcessing,
4489
- disabled: !agreedToTerms || isProcessing,
4490
- className: "w-full"
4491
- },
4492
- "Create Card"
4493
- ))))));
4494
- };
4495
-
4496
- // src/components/PinDialerBottomSheet.tsx
4497
- import React45, { useState as useState30, useEffect as useEffect17 } from "react";
4498
- import { HugeiconsIcon as HugeiconsIcon31 } from "@hugeicons/react";
4499
- import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
4500
4377
  var PinDialerBottomSheet = ({
4501
4378
  isOpen,
4502
4379
  title = "Action Required",
@@ -4504,7 +4381,7 @@ var PinDialerBottomSheet = ({
4504
4381
  onClose,
4505
4382
  onComplete
4506
4383
  }) => {
4507
- const [pin, setPin] = useState30("");
4384
+ const [pin, setPin] = useState29("");
4508
4385
  useEffect17(() => {
4509
4386
  setPin("");
4510
4387
  }, [isOpen]);
@@ -4514,7 +4391,7 @@ var PinDialerBottomSheet = ({
4514
4391
  onComplete(pin);
4515
4392
  };
4516
4393
  if (!isOpen) return null;
4517
- return /* @__PURE__ */ React45.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React45.createElement(
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(
4518
4395
  "div",
4519
4396
  {
4520
4397
  className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
@@ -4522,7 +4399,7 @@ var PinDialerBottomSheet = ({
4522
4399
  if (!isVerifying) onClose();
4523
4400
  }
4524
4401
  }
4525
- ), /* @__PURE__ */ React45.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__ */ React45.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React45.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ React45.createElement(
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(
4526
4403
  "button",
4527
4404
  {
4528
4405
  onClick: () => {
@@ -4531,8 +4408,8 @@ var PinDialerBottomSheet = ({
4531
4408
  disabled: isVerifying,
4532
4409
  className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4533
4410
  },
4534
- /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: CancelCircleIcon8, size: 20 })
4535
- )), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col px-6 pb-6 pt-2 relative" }, /* @__PURE__ */ React45.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React45.createElement(
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(
4536
4413
  TextInput,
4537
4414
  {
4538
4415
  type: "password",
@@ -4543,7 +4420,7 @@ var PinDialerBottomSheet = ({
4543
4420
  onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
4544
4421
  placeholder: "\u2022\u2022\u2022\u2022"
4545
4422
  }
4546
- ), /* @__PURE__ */ React45.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React45.createElement(
4423
+ ), /* @__PURE__ */ React44.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React44.createElement(
4547
4424
  ThreeDActionButton,
4548
4425
  {
4549
4426
  type: "submit",
@@ -4556,7 +4433,6 @@ var PinDialerBottomSheet = ({
4556
4433
  };
4557
4434
  export {
4558
4435
  AppBento2,
4559
- CardCreationDialog,
4560
4436
  ConsultantShowcase,
4561
4437
  ContentGridBlock,
4562
4438
  Faq,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "15.0.50",
3
+ "version": "15.0.60",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",