@retinalabsllc/zairusjs 14.0.70 → 14.0.80

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
@@ -319,6 +319,8 @@ interface CardData {
319
319
  preOrder?: boolean;
320
320
  contentDark?: boolean;
321
321
  bannerProps?: BannerProps;
322
+ prepaid?: boolean;
323
+ balance?: string;
322
324
  }
323
325
  interface UniversalCardPageProps {
324
326
  cards: CardData[];
@@ -327,6 +329,8 @@ interface UniversalCardPageProps {
327
329
  onFreeze?: (cardId: string) => void | Promise<void>;
328
330
  onSetLimits?: (cardId: string) => void;
329
331
  onDelete?: (cardId: string) => void | Promise<void>;
332
+ onFundCard?: (cardId: string) => void;
333
+ onCreateCard?: () => void;
330
334
  }
331
335
  declare const UniversalCardPage: React.FC<UniversalCardPageProps>;
332
336
 
package/dist/index.d.ts CHANGED
@@ -319,6 +319,8 @@ interface CardData {
319
319
  preOrder?: boolean;
320
320
  contentDark?: boolean;
321
321
  bannerProps?: BannerProps;
322
+ prepaid?: boolean;
323
+ balance?: string;
322
324
  }
323
325
  interface UniversalCardPageProps {
324
326
  cards: CardData[];
@@ -327,6 +329,8 @@ interface UniversalCardPageProps {
327
329
  onFreeze?: (cardId: string) => void | Promise<void>;
328
330
  onSetLimits?: (cardId: string) => void;
329
331
  onDelete?: (cardId: string) => void | Promise<void>;
332
+ onFundCard?: (cardId: string) => void;
333
+ onCreateCard?: () => void;
330
334
  }
331
335
  declare const UniversalCardPage: React.FC<UniversalCardPageProps>;
332
336
 
package/dist/index.js CHANGED
@@ -2054,7 +2054,9 @@ var UniversalCardPage = ({
2054
2054
  onReveal,
2055
2055
  onFreeze,
2056
2056
  onSetLimits,
2057
- onDelete
2057
+ onDelete,
2058
+ onFundCard,
2059
+ onCreateCard
2058
2060
  }) => {
2059
2061
  const router = (0, import_navigation4.useRouter)();
2060
2062
  const sortedCards = import_react33.default.useMemo(() => {
@@ -2148,7 +2150,7 @@ var UniversalCardPage = ({
2148
2150
  const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
2149
2151
  return `${capitalized} Card`;
2150
2152
  };
2151
- return /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, sortedCards.length > 1 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
2153
+ return /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, sortedCards.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
2152
2154
  const isActive = activeTabIndex === idx;
2153
2155
  return /* @__PURE__ */ import_react33.default.createElement(
2154
2156
  "button",
@@ -2159,7 +2161,17 @@ var UniversalCardPage = ({
2159
2161
  },
2160
2162
  formatTabLabel(tab.type)
2161
2163
  );
2162
- }))), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ import_react33.default.createElement(
2164
+ })), /* @__PURE__ */ import_react33.default.createElement(
2165
+ "button",
2166
+ {
2167
+ onClick: () => {
2168
+ if (onCreateCard) onCreateCard();
2169
+ },
2170
+ className: "w-8 h-8 sm:w-9 sm:h-9 rounded-full bg-white flex items-center justify-center text-neutral-500 hover:text-black transition-colors shrink-0 shadow-sm outline-none",
2171
+ "aria-label": "Create New Card"
2172
+ },
2173
+ /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.PlusSignIcon, size: 18 })
2174
+ )), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ import_react33.default.createElement(
2163
2175
  "div",
2164
2176
  {
2165
2177
  className: "relative w-full max-w-85",
@@ -2204,7 +2216,7 @@ var UniversalCardPage = ({
2204
2216
  className: "absolute inset-0 bg-cover bg-center",
2205
2217
  style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
2206
2218
  }
2207
- ), /* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-start w-full gap-4" }), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[12px] tracking-widest font-medium uppercase ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react33.default.createElement(
2219
+ ), /* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-start justify-end w-full gap-4" }, activeCard.prepaid && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[12px] tracking-widest font-medium ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier))), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, activeCard.prepaid ? "Card Balance" : "Card Tier"), /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[12px] tracking-widest font-medium ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.prepaid ? activeCard.balance || "$0.00" : activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react33.default.createElement(
2208
2220
  "img",
2209
2221
  {
2210
2222
  src: activeCard.networkLogoSrc,
@@ -2212,7 +2224,7 @@ var UniversalCardPage = ({
2212
2224
  className: "h-10 w-auto max-w-20 object-contain opacity-90"
2213
2225
  }
2214
2226
  ))))
2215
- )), activeCard.bannerProps ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ import_react33.default.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ import_react33.default.createElement(
2227
+ )), activeCard.bannerProps ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full mt-2" }, /* @__PURE__ */ import_react33.default.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full mt-2" }, /* @__PURE__ */ import_react33.default.createElement(
2216
2228
  Banner,
2217
2229
  {
2218
2230
  type: "success",
@@ -2220,7 +2232,18 @@ var UniversalCardPage = ({
2220
2232
  message: `Your ${activeCard.tier} ${activeCard.type.toLowerCase()} card has been pre-ordered successfully and is pending batch processing.`,
2221
2233
  isDismissible: false
2222
2234
  }
2223
- )) : null, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
2235
+ )) : null, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, activeCard.prepaid && /* @__PURE__ */ import_react33.default.createElement(
2236
+ MenuRow,
2237
+ {
2238
+ icon: import_core_free_icons12.PlusSignIcon,
2239
+ title: "Fund Card",
2240
+ subtitle: "Add money to card",
2241
+ onClick: () => {
2242
+ if (!actionsDisabled && onFundCard) onFundCard(activeCard.id);
2243
+ },
2244
+ disabled: actionsDisabled
2245
+ }
2246
+ ), /* @__PURE__ */ import_react33.default.createElement(
2224
2247
  MenuRow,
2225
2248
  {
2226
2249
  icon: import_core_free_icons12.ViewOffSlashIcon,
package/dist/index.mjs CHANGED
@@ -1940,7 +1940,8 @@ import {
1940
1940
  ArrowRight01Icon as ArrowRight01Icon3,
1941
1941
  SlidersHorizontalIcon,
1942
1942
  ViewOffSlashIcon as ViewOffSlashIcon2,
1943
- Loading03Icon as Loading03Icon9
1943
+ Loading03Icon as Loading03Icon9,
1944
+ PlusSignIcon as PlusSignIcon2
1944
1945
  } from "@hugeicons/core-free-icons";
1945
1946
 
1946
1947
  // src/components/PinDialerBottomSheet.tsx
@@ -2028,7 +2029,9 @@ var UniversalCardPage = ({
2028
2029
  onReveal,
2029
2030
  onFreeze,
2030
2031
  onSetLimits,
2031
- onDelete
2032
+ onDelete,
2033
+ onFundCard,
2034
+ onCreateCard
2032
2035
  }) => {
2033
2036
  const router = useRouter();
2034
2037
  const sortedCards = React20.useMemo(() => {
@@ -2122,7 +2125,7 @@ var UniversalCardPage = ({
2122
2125
  const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
2123
2126
  return `${capitalized} Card`;
2124
2127
  };
2125
- return /* @__PURE__ */ React20.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, sortedCards.length > 1 && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
2128
+ return /* @__PURE__ */ React20.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, sortedCards.length > 0 && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
2126
2129
  const isActive = activeTabIndex === idx;
2127
2130
  return /* @__PURE__ */ React20.createElement(
2128
2131
  "button",
@@ -2133,7 +2136,17 @@ var UniversalCardPage = ({
2133
2136
  },
2134
2137
  formatTabLabel(tab.type)
2135
2138
  );
2136
- }))), /* @__PURE__ */ React20.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ React20.createElement(
2139
+ })), /* @__PURE__ */ React20.createElement(
2140
+ "button",
2141
+ {
2142
+ onClick: () => {
2143
+ if (onCreateCard) onCreateCard();
2144
+ },
2145
+ className: "w-8 h-8 sm:w-9 sm:h-9 rounded-full bg-white flex items-center justify-center text-neutral-500 hover:text-black transition-colors shrink-0 shadow-sm outline-none",
2146
+ "aria-label": "Create New Card"
2147
+ },
2148
+ /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: PlusSignIcon2, size: 18 })
2149
+ )), /* @__PURE__ */ React20.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ React20.createElement(
2137
2150
  "div",
2138
2151
  {
2139
2152
  className: "relative w-full max-w-85",
@@ -2178,7 +2191,7 @@ var UniversalCardPage = ({
2178
2191
  className: "absolute inset-0 bg-cover bg-center",
2179
2192
  style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
2180
2193
  }
2181
- ), /* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-start w-full gap-4" }), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ React20.createElement("span", { className: `text-[12px] tracking-widest font-medium uppercase ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ React20.createElement(
2194
+ ), /* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-start justify-end w-full gap-4" }, activeCard.prepaid && /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React20.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ React20.createElement("span", { className: `text-[12px] tracking-widest font-medium ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier))), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, activeCard.prepaid ? "Card Balance" : "Card Tier"), /* @__PURE__ */ React20.createElement("span", { className: `text-[12px] tracking-widest font-medium ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.prepaid ? activeCard.balance || "$0.00" : activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ React20.createElement(
2182
2195
  "img",
2183
2196
  {
2184
2197
  src: activeCard.networkLogoSrc,
@@ -2186,7 +2199,7 @@ var UniversalCardPage = ({
2186
2199
  className: "h-10 w-auto max-w-20 object-contain opacity-90"
2187
2200
  }
2188
2201
  ))))
2189
- )), activeCard.bannerProps ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ React20.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ React20.createElement(
2202
+ )), activeCard.bannerProps ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full mt-2" }, /* @__PURE__ */ React20.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full mt-2" }, /* @__PURE__ */ React20.createElement(
2190
2203
  Banner,
2191
2204
  {
2192
2205
  type: "success",
@@ -2194,7 +2207,18 @@ var UniversalCardPage = ({
2194
2207
  message: `Your ${activeCard.tier} ${activeCard.type.toLowerCase()} card has been pre-ordered successfully and is pending batch processing.`,
2195
2208
  isDismissible: false
2196
2209
  }
2197
- )) : null, /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
2210
+ )) : null, /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, activeCard.prepaid && /* @__PURE__ */ React20.createElement(
2211
+ MenuRow,
2212
+ {
2213
+ icon: PlusSignIcon2,
2214
+ title: "Fund Card",
2215
+ subtitle: "Add money to card",
2216
+ onClick: () => {
2217
+ if (!actionsDisabled && onFundCard) onFundCard(activeCard.id);
2218
+ },
2219
+ disabled: actionsDisabled
2220
+ }
2221
+ ), /* @__PURE__ */ React20.createElement(
2198
2222
  MenuRow,
2199
2223
  {
2200
2224
  icon: ViewOffSlashIcon2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "14.0.70",
3
+ "version": "14.0.80",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",