@loafmarkets/ui 0.1.71 → 0.1.73

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
@@ -824,7 +824,6 @@ interface TradeHistoryItem {
824
824
  readonly price: number;
825
825
  readonly executedAt: number;
826
826
  readonly fee: number;
827
- readonly status?: string;
828
827
  }
829
828
  interface TransferHistoryItem {
830
829
  readonly type: 'DEPOSIT' | 'WITHDRAWAL';
@@ -979,10 +978,12 @@ type OfferingProgressCardProps = {
979
978
  raisedAmount?: number;
980
979
  targetAmount?: number;
981
980
  isPrivateClient?: boolean;
981
+ /** "default" = full card with header/countdown, "compact" = bar-only (demo style) */
982
+ variant?: 'default' | 'compact';
982
983
  style?: React__default.CSSProperties;
983
984
  className?: string;
984
985
  };
985
- declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
986
+ declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, variant, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
986
987
 
987
988
  type OwnerBookingProps = {
988
989
  propertyName?: string | null;
package/dist/index.d.ts CHANGED
@@ -824,7 +824,6 @@ interface TradeHistoryItem {
824
824
  readonly price: number;
825
825
  readonly executedAt: number;
826
826
  readonly fee: number;
827
- readonly status?: string;
828
827
  }
829
828
  interface TransferHistoryItem {
830
829
  readonly type: 'DEPOSIT' | 'WITHDRAWAL';
@@ -979,10 +978,12 @@ type OfferingProgressCardProps = {
979
978
  raisedAmount?: number;
980
979
  targetAmount?: number;
981
980
  isPrivateClient?: boolean;
981
+ /** "default" = full card with header/countdown, "compact" = bar-only (demo style) */
982
+ variant?: 'default' | 'compact';
982
983
  style?: React__default.CSSProperties;
983
984
  className?: string;
984
985
  };
985
- declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
986
+ declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, variant, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
986
987
 
987
988
  type OwnerBookingProps = {
988
989
  propertyName?: string | null;
package/dist/index.js CHANGED
@@ -2938,10 +2938,10 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
2938
2938
  children: [
2939
2939
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2940
2940
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [
2941
- isHomeVariant && /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", style: { color: "var(--color-text, #fff)" }, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z" }) }),
2941
+ isHomeVariant && /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", style: { color: "var(--color-text, #fff)", flexShrink: 0, display: "block" }, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z" }) }),
2942
2942
  isPurchaseVariant && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", width: "8px", height: "8px", borderRadius: "50%", backgroundColor: "#0ecb81", boxShadow: "0 0 8px rgba(14,203,129,0.8)", animation: "propertyNewsPulse 1.5s infinite" } }),
2943
2943
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2944
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: isHomeVariant ? "text-base font-semibold text-white" : "text-lg font-semibold text-white", children: resolvedHeading }),
2944
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: isHomeVariant ? "text-base font-semibold text-white" : "text-lg font-semibold text-white", style: { margin: 0 }, children: resolvedHeading }),
2945
2945
  subheading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-white/60", children: subheading }) : null
2946
2946
  ] })
2947
2947
  ] }),
@@ -2979,7 +2979,7 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
2979
2979
  /* @__PURE__ */ jsxRuntime.jsx(
2980
2980
  "div",
2981
2981
  {
2982
- className: "mt-4 flex flex-1 flex-col gap-3 overflow-hidden",
2982
+ className: cn("flex flex-1 flex-col overflow-hidden", isHomeVariant ? "mt-2 gap-0" : "mt-4 gap-3"),
2983
2983
  style: !isPurchaseVariant && !isHomeVariant ? { minHeight: `${ITEMS_PER_PAGE * 86}px` } : void 0,
2984
2984
  children: isPurchaseVariant ? purchaseItems.length > 0 ? purchaseItems.slice(0, 7).map((purchase, index) => {
2985
2985
  const maxAmount = 6e4;
@@ -3121,8 +3121,8 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
3121
3121
  type: "button",
3122
3122
  onClick: () => setHomePage((p) => Math.max(0, p - 1)),
3123
3123
  disabled: homePage === 0,
3124
- style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "999px", padding: "0.2rem 0.75rem", fontSize: "0.7rem", textTransform: "uppercase", letterSpacing: "0.15em", cursor: homePage === 0 ? "not-allowed" : "pointer", opacity: homePage === 0 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3125
- children: "Prev"
3124
+ style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "50%", width: "28px", height: "28px", display: "flex", alignItems: "center", justifyContent: "center", padding: 0, cursor: homePage === 0 ? "not-allowed" : "pointer", opacity: homePage === 0 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3125
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) })
3126
3126
  }
3127
3127
  ),
3128
3128
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.7rem", color: "rgba(255,255,255,0.5)" }, children: [
@@ -3136,8 +3136,8 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
3136
3136
  type: "button",
3137
3137
  onClick: () => setHomePage((p) => Math.min(homeTotalPages - 1, p + 1)),
3138
3138
  disabled: homePage >= homeTotalPages - 1,
3139
- style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "999px", padding: "0.2rem 0.75rem", fontSize: "0.7rem", textTransform: "uppercase", letterSpacing: "0.15em", cursor: homePage >= homeTotalPages - 1 ? "not-allowed" : "pointer", opacity: homePage >= homeTotalPages - 1 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3140
- children: "Next"
3139
+ style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "50%", width: "28px", height: "28px", display: "flex", alignItems: "center", justifyContent: "center", padding: 0, cursor: homePage >= homeTotalPages - 1 ? "not-allowed" : "pointer", opacity: homePage >= homeTotalPages - 1 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3140
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) })
3141
3141
  }
3142
3142
  )
3143
3143
  ] }),
@@ -3148,8 +3148,9 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
3148
3148
  type: "button",
3149
3149
  onClick: () => setPage((p) => Math.max(0, p - 1)),
3150
3150
  disabled: page === 0,
3151
- className: cn("rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]", page === 0 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3152
- children: "Prev"
3151
+ className: cn("rounded-full border border-white/15 flex items-center justify-center", page === 0 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3152
+ style: { width: "28px", height: "28px", padding: 0, background: "transparent", color: "rgba(255,255,255,0.6)" },
3153
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) })
3153
3154
  }
3154
3155
  ),
3155
3156
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium text-white/70", children: [
@@ -3164,8 +3165,9 @@ var PropertyNewsUpdates = React5__namespace.forwardRef(
3164
3165
  type: "button",
3165
3166
  onClick: () => setPage((p) => Math.min(totalPages - 1, p + 1)),
3166
3167
  disabled: page >= totalPages - 1,
3167
- className: cn("rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]", page >= totalPages - 1 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3168
- children: "Next"
3168
+ className: cn("rounded-full border border-white/15 flex items-center justify-center", page >= totalPages - 1 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3169
+ style: { width: "28px", height: "28px", padding: 0, background: "transparent", color: "rgba(255,255,255,0.6)" },
3170
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) })
3169
3171
  }
3170
3172
  )
3171
3173
  ] }),
@@ -9670,6 +9672,7 @@ function OfferingProgressCard({
9670
9672
  raisedAmount,
9671
9673
  targetAmount,
9672
9674
  isPrivateClient = false,
9675
+ variant = "default",
9673
9676
  style,
9674
9677
  className
9675
9678
  }) {
@@ -9701,6 +9704,24 @@ function OfferingProgressCard({
9701
9704
  const interval = setInterval(() => setCountdown(calculateCountdown()), 1e3);
9702
9705
  return () => clearInterval(interval);
9703
9706
  }, [opensAt]);
9707
+ if (variant === "compact") {
9708
+ return /* @__PURE__ */ jsxRuntime.jsxs(CompactContainer, { style, className, children: [
9709
+ /* @__PURE__ */ jsxRuntime.jsx(ProgressBarOuter, { children: /* @__PURE__ */ jsxRuntime.jsx(ProgressBarInner, { style: { width: `${Math.min(percentSold, 100)}%` } }) }),
9710
+ /* @__PURE__ */ jsxRuntime.jsxs(ProgressInfo, { children: [
9711
+ /* @__PURE__ */ jsxRuntime.jsxs(ProgressSubscribers, { children: [
9712
+ "Subscribers: ",
9713
+ subscriberCount.toLocaleString()
9714
+ ] }),
9715
+ /* @__PURE__ */ jsxRuntime.jsxs(ProgressAmounts, { children: [
9716
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "raised", children: formatCurrency3(computedRaised) }),
9717
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "target", children: [
9718
+ " / ",
9719
+ formatCurrency3(computedTarget)
9720
+ ] })
9721
+ ] })
9722
+ ] })
9723
+ ] });
9724
+ }
9704
9725
  return /* @__PURE__ */ jsxRuntime.jsxs(Container, { style, className, children: [
9705
9726
  /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
9706
9727
  /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
@@ -9769,7 +9790,7 @@ function OfferingProgressCard({
9769
9790
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u24D8" })
9770
9791
  ] }),
9771
9792
  /* @__PURE__ */ jsxRuntime.jsxs(LivePercent, { children: [
9772
- percentSold < 0.1 && percentSold > 0 ? percentSold.toFixed(3) : percentSold.toFixed(1),
9793
+ percentSold.toFixed(1),
9773
9794
  "%",
9774
9795
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arrow", children: "\u2191" })
9775
9796
  ] })
@@ -10002,6 +10023,13 @@ var ProgressAmounts = styled25__default.default.div`
10002
10023
  .raised { color: #D4AF37; }
10003
10024
  .target { color: rgba(255,255,255,0.3); }
10004
10025
  `;
10026
+ var CompactContainer = styled25__default.default.div`
10027
+ width: 100%;
10028
+ margin: 1.5rem 0;
10029
+ display: flex;
10030
+ flex-direction: column;
10031
+ gap: 0.5rem;
10032
+ `;
10005
10033
  var MAX_DISPLAY_AMOUNT = 6e4;
10006
10034
  var formatCurrency4 = (amount) => {
10007
10035
  if (amount >= 1e6) return `$${(amount / 1e6).toFixed(2)}M`;
@@ -11679,7 +11707,7 @@ function PortfolioActivityPanel({
11679
11707
  formatTimestamp(trade.executedAt)
11680
11708
  ] })
11681
11709
  ] }),
11682
- trade.status === "SETTLEMENT_FAILED" ? /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: "#f6465d", $bg: "rgba(246,70,93,0.12)", children: "Failed" }) : /* @__PURE__ */ jsxRuntime.jsx(
11710
+ /* @__PURE__ */ jsxRuntime.jsx(
11683
11711
  ActivityTag,
11684
11712
  {
11685
11713
  $color: trade.side === "SELL" ? "#f6465d" : "#0ecb81",