@retinalabsllc/zairusjs 15.0.3 → 15.0.5

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.js CHANGED
@@ -1728,7 +1728,7 @@ var ConfirmationDialog = ({
1728
1728
  {
1729
1729
  onClick: onConfirm,
1730
1730
  disabled: isProcessing,
1731
- className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
1731
+ className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1732
1732
  },
1733
1733
  isProcessing ? /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
1734
1734
  ))));
@@ -2214,7 +2214,7 @@ var MenuRow = ({
2214
2214
  "div",
2215
2215
  {
2216
2216
  onClick: disabled ? void 0 : onClick,
2217
- className: `flex items-center p-3 transition-colors ${!isLast ? "border-b border-neutral-100" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
2217
+ className: `flex items-center p-3 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
2218
2218
  },
2219
2219
  /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon, size: 16, className: iconColor })),
2220
2220
  /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react31.default.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react31.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
@@ -4464,19 +4464,10 @@ var PinDialerBottomSheet = ({
4464
4464
  (0, import_react75.useEffect)(() => {
4465
4465
  setPin("");
4466
4466
  }, [isOpen]);
4467
- const handlePinPress = (value) => {
4468
- if (isVerifying) return;
4469
- if (value === "del") {
4470
- setPin((prev) => prev.slice(0, -1));
4471
- return;
4472
- }
4473
- if (pin.length < 4) {
4474
- const newPin = pin + value;
4475
- setPin(newPin);
4476
- if (newPin.length === 4) {
4477
- onComplete(newPin);
4478
- }
4479
- }
4467
+ const handleSubmit = (e) => {
4468
+ e.preventDefault();
4469
+ if (isVerifying || pin.length !== 4) return;
4470
+ onComplete(pin);
4480
4471
  };
4481
4472
  if (!isOpen) return null;
4482
4473
  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(
@@ -4487,44 +4478,37 @@ var PinDialerBottomSheet = ({
4487
4478
  if (!isVerifying) onClose();
4488
4479
  }
4489
4480
  }
4490
- ), /* @__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(
4481
+ ), /* @__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(
4491
4482
  "button",
4492
4483
  {
4493
4484
  onClick: () => {
4494
4485
  if (!isVerifying) onClose();
4495
4486
  },
4496
- className: "text-neutral-400 hover:text-black transition-colors outline-none"
4487
+ disabled: isVerifying,
4488
+ className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4497
4489
  },
4498
4490
  /* @__PURE__ */ import_react75.default.createElement(import_react76.HugeiconsIcon, { icon: import_core_free_icons26.CancelCircleIcon, size: 20 })
4499
- )), /* @__PURE__ */ import_react75.default.createElement("div", { className: "flex flex-col px-6 pb-8 pt-2 relative" }, /* @__PURE__ */ import_react75.default.createElement("div", { className: "flex justify-center gap-4 mb-8" }, [0, 1, 2, 3].map((i) => /* @__PURE__ */ import_react75.default.createElement(
4500
- "div",
4491
+ )), /* @__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(
4492
+ TextInput,
4501
4493
  {
4502
- key: i,
4503
- className: `w-2 h-2 rounded-full transition-colors duration-200 ${pin.length > i ? "bg-black" : "bg-neutral-200"}`
4494
+ type: "password",
4495
+ label: "Enter 4-Digit PIN",
4496
+ maxLength: 4,
4497
+ disabled: isVerifying,
4498
+ value: pin,
4499
+ onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
4500
+ placeholder: "\u2022\u2022\u2022\u2022"
4504
4501
  }
4505
- ))), isVerifying && /* @__PURE__ */ import_react75.default.createElement("div", { className: "absolute inset-0 bg-white/80 backdrop-blur-sm z-10 flex items-center justify-center rounded-b-2xl" }, /* @__PURE__ */ import_react75.default.createElement(import_react76.HugeiconsIcon, { icon: import_core_free_icons26.Loading03Icon, size: 28, className: "animate-spin text-black" })), /* @__PURE__ */ import_react75.default.createElement("div", { className: "grid grid-cols-3 gap-y-4 gap-x-6 max-w-60 mx-auto" }, [1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => /* @__PURE__ */ import_react75.default.createElement(
4506
- "button",
4507
- {
4508
- key: num,
4509
- onClick: () => handlePinPress(num),
4510
- className: "w-14 h-14 rounded-full flex bg-neutral-50 items-center justify-center text-sm text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4511
- },
4512
- num
4513
- )), /* @__PURE__ */ import_react75.default.createElement("div", null), " ", /* @__PURE__ */ import_react75.default.createElement(
4514
- "button",
4515
- {
4516
- onClick: () => handlePinPress(0),
4517
- className: "w-14 h-14 rounded-full flex bg-neutral-50 items-center justify-center text-sm text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4518
- },
4519
- "0"
4520
- ), /* @__PURE__ */ import_react75.default.createElement(
4521
- "button",
4502
+ ), /* @__PURE__ */ import_react75.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react75.default.createElement(
4503
+ ThreeDActionButton,
4522
4504
  {
4523
- onClick: () => handlePinPress("del"),
4524
- className: "w-14 h-14 rounded-full flex items-center justify-center text-neutral-400 hover:text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4505
+ type: "submit",
4506
+ disabled: isVerifying || pin.length !== 4,
4507
+ isLoading: isVerifying,
4508
+ className: "w-full"
4525
4509
  },
4526
- /* @__PURE__ */ import_react75.default.createElement(import_react76.HugeiconsIcon, { icon: import_core_free_icons26.LessThanIcon, size: 20 })
4527
- )))));
4510
+ "Confirm Action"
4511
+ ))))));
4528
4512
  };
4529
4513
  // Annotate the CommonJS export names for ESM import in node:
4530
4514
  0 && (module.exports = {
package/dist/index.mjs CHANGED
@@ -1693,7 +1693,7 @@ var ConfirmationDialog = ({
1693
1693
  {
1694
1694
  onClick: onConfirm,
1695
1695
  disabled: isProcessing,
1696
- className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
1696
+ className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1697
1697
  },
1698
1698
  isProcessing ? /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Loading03Icon6, className: "animate-spin", size: 18 }) : confirmText
1699
1699
  ))));
@@ -2187,7 +2187,7 @@ var MenuRow = ({
2187
2187
  "div",
2188
2188
  {
2189
2189
  onClick: disabled ? void 0 : onClick,
2190
- className: `flex items-center p-3 transition-colors ${!isLast ? "border-b border-neutral-100" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
2190
+ className: `flex items-center p-3 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
2191
2191
  },
2192
2192
  /* @__PURE__ */ React19.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React19.createElement(HugeiconsIcon13, { icon, size: 16, className: iconColor })),
2193
2193
  /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React19.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
@@ -4468,7 +4468,7 @@ var CardCreationDialog = ({ isOpen, onClose, onSuccess }) => {
4468
4468
  // src/components/PinDialerBottomSheet.tsx
4469
4469
  import React45, { useState as useState30, useEffect as useEffect17 } from "react";
4470
4470
  import { HugeiconsIcon as HugeiconsIcon31 } from "@hugeicons/react";
4471
- import { Loading03Icon as Loading03Icon19, CancelCircleIcon as CancelCircleIcon8, LessThanIcon } from "@hugeicons/core-free-icons";
4471
+ import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
4472
4472
  var PinDialerBottomSheet = ({
4473
4473
  isOpen,
4474
4474
  title = "Action Required",
@@ -4480,19 +4480,10 @@ var PinDialerBottomSheet = ({
4480
4480
  useEffect17(() => {
4481
4481
  setPin("");
4482
4482
  }, [isOpen]);
4483
- const handlePinPress = (value) => {
4484
- if (isVerifying) return;
4485
- if (value === "del") {
4486
- setPin((prev) => prev.slice(0, -1));
4487
- return;
4488
- }
4489
- if (pin.length < 4) {
4490
- const newPin = pin + value;
4491
- setPin(newPin);
4492
- if (newPin.length === 4) {
4493
- onComplete(newPin);
4494
- }
4495
- }
4483
+ const handleSubmit = (e) => {
4484
+ e.preventDefault();
4485
+ if (isVerifying || pin.length !== 4) return;
4486
+ onComplete(pin);
4496
4487
  };
4497
4488
  if (!isOpen) return null;
4498
4489
  return /* @__PURE__ */ React45.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React45.createElement(
@@ -4503,44 +4494,37 @@ var PinDialerBottomSheet = ({
4503
4494
  if (!isVerifying) onClose();
4504
4495
  }
4505
4496
  }
4506
- ), /* @__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(
4497
+ ), /* @__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(
4507
4498
  "button",
4508
4499
  {
4509
4500
  onClick: () => {
4510
4501
  if (!isVerifying) onClose();
4511
4502
  },
4512
- className: "text-neutral-400 hover:text-black transition-colors outline-none"
4503
+ disabled: isVerifying,
4504
+ className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4513
4505
  },
4514
4506
  /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: CancelCircleIcon8, size: 20 })
4515
- )), /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col px-6 pb-8 pt-2 relative" }, /* @__PURE__ */ React45.createElement("div", { className: "flex justify-center gap-4 mb-8" }, [0, 1, 2, 3].map((i) => /* @__PURE__ */ React45.createElement(
4516
- "div",
4507
+ )), /* @__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(
4508
+ TextInput,
4517
4509
  {
4518
- key: i,
4519
- className: `w-2 h-2 rounded-full transition-colors duration-200 ${pin.length > i ? "bg-black" : "bg-neutral-200"}`
4510
+ type: "password",
4511
+ label: "Enter 4-Digit PIN",
4512
+ maxLength: 4,
4513
+ disabled: isVerifying,
4514
+ value: pin,
4515
+ onChange: (val) => setPin(val.replace(/\D/g, "").substring(0, 4)),
4516
+ placeholder: "\u2022\u2022\u2022\u2022"
4520
4517
  }
4521
- ))), isVerifying && /* @__PURE__ */ React45.createElement("div", { className: "absolute inset-0 bg-white/80 backdrop-blur-sm z-10 flex items-center justify-center rounded-b-2xl" }, /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: Loading03Icon19, size: 28, className: "animate-spin text-black" })), /* @__PURE__ */ React45.createElement("div", { className: "grid grid-cols-3 gap-y-4 gap-x-6 max-w-60 mx-auto" }, [1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => /* @__PURE__ */ React45.createElement(
4522
- "button",
4523
- {
4524
- key: num,
4525
- onClick: () => handlePinPress(num),
4526
- className: "w-14 h-14 rounded-full flex bg-neutral-50 items-center justify-center text-sm text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4527
- },
4528
- num
4529
- )), /* @__PURE__ */ React45.createElement("div", null), " ", /* @__PURE__ */ React45.createElement(
4530
- "button",
4531
- {
4532
- onClick: () => handlePinPress(0),
4533
- className: "w-14 h-14 rounded-full flex bg-neutral-50 items-center justify-center text-sm text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4534
- },
4535
- "0"
4536
- ), /* @__PURE__ */ React45.createElement(
4537
- "button",
4518
+ ), /* @__PURE__ */ React45.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React45.createElement(
4519
+ ThreeDActionButton,
4538
4520
  {
4539
- onClick: () => handlePinPress("del"),
4540
- className: "w-14 h-14 rounded-full flex items-center justify-center text-neutral-400 hover:text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
4521
+ type: "submit",
4522
+ disabled: isVerifying || pin.length !== 4,
4523
+ isLoading: isVerifying,
4524
+ className: "w-full"
4541
4525
  },
4542
- /* @__PURE__ */ React45.createElement(HugeiconsIcon31, { icon: LessThanIcon, size: 20 })
4543
- )))));
4526
+ "Confirm Action"
4527
+ ))))));
4544
4528
  };
4545
4529
  export {
4546
4530
  AppBento2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "15.0.3",
3
+ "version": "15.0.5",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",