virtual-ui-lib 1.0.68 → 1.0.69

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
@@ -35,6 +35,7 @@ __export(index_exports, {
35
35
  Footer: () => Footer,
36
36
  ImageCard: () => ImageCard,
37
37
  ImageSlider: () => ImageSlider,
38
+ InvoiceCard: () => InvoiceCard,
38
39
  Loader: () => Loader,
39
40
  Navbar: () => Navbar,
40
41
  NotificationToast: () => NotificationToast,
@@ -2272,6 +2273,227 @@ var OTPInput = ({
2272
2273
  resendTimer > 0 ? `${resendText} (${resendTimer}s)` : resendText
2273
2274
  )));
2274
2275
  };
2276
+
2277
+ // src/components/InvoiceCard/InvoiceCard.jsx
2278
+ var import_react14 = __toESM(require("react"));
2279
+ var InvoiceCard = ({
2280
+ invoiceNumber = "INV-2024-001",
2281
+ date = "21 March 2024",
2282
+ dueDate = "31 March 2024",
2283
+ from = {
2284
+ name: "VirtualAI Inc.",
2285
+ email: "billing@virtualai.com",
2286
+ address: "123 Tech Street, San Francisco, CA"
2287
+ },
2288
+ to = {
2289
+ name: "Aryan Sharma",
2290
+ email: "aryan@example.com",
2291
+ address: "456 Dev Lane, Mumbai, India"
2292
+ },
2293
+ items = [
2294
+ { name: "Pro Plan Subscription", qty: 1, price: 29 },
2295
+ { name: "Extra AI Credits (500)", qty: 2, price: 9 },
2296
+ { name: "Custom Domain Setup", qty: 1, price: 15 }
2297
+ ],
2298
+ taxRate = 18,
2299
+ currency = "$",
2300
+ accent = "#6366f1",
2301
+ bg = "#0f172a",
2302
+ radius = "20px",
2303
+ status = "unpaid",
2304
+ onPayClick = () => {
2305
+ },
2306
+ onDownloadClick = () => {
2307
+ }
2308
+ }) => {
2309
+ const [paid, setPaid] = (0, import_react14.useState)(status === "paid");
2310
+ const alpha = (hex, op) => {
2311
+ const r = parseInt(hex.slice(1, 3), 16);
2312
+ const g = parseInt(hex.slice(3, 5), 16);
2313
+ const b = parseInt(hex.slice(5, 7), 16);
2314
+ return `rgba(${r},${g},${b},${op})`;
2315
+ };
2316
+ const subtotal = items.reduce((s, i) => s + i.qty * i.price, 0);
2317
+ const tax = parseFloat((subtotal * taxRate / 100).toFixed(2));
2318
+ const total = parseFloat((subtotal + tax).toFixed(2));
2319
+ const statusConfig = {
2320
+ paid: { label: "Paid", bg: "rgba(16,185,129,0.15)", color: "#34d399", border: "rgba(16,185,129,0.3)" },
2321
+ unpaid: { label: "Unpaid", bg: "rgba(239,68,68,0.12)", color: "#f87171", border: "rgba(239,68,68,0.3)" },
2322
+ pending: { label: "Pending", bg: "rgba(245,158,11,0.12)", color: "#fbbf24", border: "rgba(245,158,11,0.3)" }
2323
+ };
2324
+ const sc = statusConfig[paid ? "paid" : status] || statusConfig.unpaid;
2325
+ const Row = ({ label, value, bold, large, accentColor }) => /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2326
+ display: "flex",
2327
+ justifyContent: "space-between",
2328
+ alignItems: "center",
2329
+ padding: "5px 0"
2330
+ } }, /* @__PURE__ */ import_react14.default.createElement("span", { style: {
2331
+ fontSize: large ? "14px" : "12px",
2332
+ fontWeight: bold ? "700" : "400",
2333
+ color: large ? "#fff" : "rgba(255,255,255,0.45)"
2334
+ } }, label), /* @__PURE__ */ import_react14.default.createElement("span", { style: {
2335
+ fontSize: large ? "16px" : "13px",
2336
+ fontWeight: bold ? "800" : "600",
2337
+ color: accentColor || (large ? "#fff" : "rgba(255,255,255,0.85)")
2338
+ } }, currency, typeof value === "number" ? value.toFixed(2) : value));
2339
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2340
+ background: bg,
2341
+ borderRadius: radius,
2342
+ padding: "24px",
2343
+ width: "340px",
2344
+ fontFamily: "system-ui, sans-serif",
2345
+ border: "1px solid rgba(255,255,255,0.07)",
2346
+ boxShadow: "0 10px 40px rgba(0,0,0,0.4)",
2347
+ color: "#fff"
2348
+ } }, /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: "20px" } }, /* @__PURE__ */ import_react14.default.createElement("div", null, /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "7px", marginBottom: "4px" } }, /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2349
+ width: "24px",
2350
+ height: "24px",
2351
+ borderRadius: "6px",
2352
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.6)})`,
2353
+ display: "flex",
2354
+ alignItems: "center",
2355
+ justifyContent: "center",
2356
+ fontSize: "11px",
2357
+ fontWeight: "800",
2358
+ color: "#fff"
2359
+ } }, "V"), /* @__PURE__ */ import_react14.default.createElement("span", { style: { fontSize: "14px", fontWeight: "800" } }, from.name)), /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "11px", color: "rgba(255,255,255,0.3)", margin: 0 } }, invoiceNumber)), /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2360
+ padding: "4px 12px",
2361
+ borderRadius: "20px",
2362
+ fontSize: "11px",
2363
+ fontWeight: "700",
2364
+ background: sc.bg,
2365
+ color: sc.color,
2366
+ border: `1px solid ${sc.border}`,
2367
+ textTransform: "uppercase",
2368
+ letterSpacing: "0.5px"
2369
+ } }, sc.label)), /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2370
+ display: "grid",
2371
+ gridTemplateColumns: "1fr 1fr",
2372
+ gap: "12px",
2373
+ background: "rgba(255,255,255,0.03)",
2374
+ border: "1px solid rgba(255,255,255,0.06)",
2375
+ borderRadius: "12px",
2376
+ padding: "14px",
2377
+ marginBottom: "20px"
2378
+ } }, [{ label: "From", info: from }, { label: "To", info: to }].map(({ label, info }) => /* @__PURE__ */ import_react14.default.createElement("div", { key: label }, /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "10px", fontWeight: "700", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", marginBottom: "5px" } }, label), /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "12px", fontWeight: "700", color: "#fff", margin: "0 0 2px" } }, info.name), /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "11px", color: "rgba(255,255,255,0.35)", margin: "0 0 2px" } }, info.email), /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "10px", color: "rgba(255,255,255,0.25)", margin: 0, lineHeight: 1.4 } }, info.address)))), /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", gap: "10px", marginBottom: "20px" } }, [{ label: "Issue Date", val: date }, { label: "Due Date", val: dueDate }].map(({ label, val }) => /* @__PURE__ */ import_react14.default.createElement("div", { key: label, style: {
2379
+ flex: 1,
2380
+ background: "rgba(255,255,255,0.03)",
2381
+ border: "1px solid rgba(255,255,255,0.06)",
2382
+ borderRadius: "10px",
2383
+ padding: "10px 12px"
2384
+ } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "10px", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", margin: "0 0 3px", fontWeight: "700" } }, label), /* @__PURE__ */ import_react14.default.createElement("p", { style: { fontSize: "12px", fontWeight: "700", color: "#fff", margin: 0 } }, val)))), /* @__PURE__ */ import_react14.default.createElement("div", { style: { marginBottom: "16px" } }, /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2385
+ display: "grid",
2386
+ gridTemplateColumns: "1fr auto auto",
2387
+ gap: "8px",
2388
+ padding: "6px 8px",
2389
+ borderBottom: "1px solid rgba(255,255,255,0.06)",
2390
+ marginBottom: "4px"
2391
+ } }, ["Item", "Qty", "Amount"].map((h) => /* @__PURE__ */ import_react14.default.createElement("span", { key: h, style: { fontSize: "10px", fontWeight: "700", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", textAlign: h !== "Item" ? "right" : "left" } }, h))), items.map((item, i) => /* @__PURE__ */ import_react14.default.createElement("div", { key: i, style: {
2392
+ display: "grid",
2393
+ gridTemplateColumns: "1fr auto auto",
2394
+ gap: "8px",
2395
+ padding: "8px",
2396
+ borderRadius: "8px",
2397
+ background: i % 2 === 0 ? "rgba(255,255,255,0.02)" : "transparent"
2398
+ } }, /* @__PURE__ */ import_react14.default.createElement("span", { style: { fontSize: "12px", color: "rgba(255,255,255,0.75)" } }, item.name), /* @__PURE__ */ import_react14.default.createElement("span", { style: { fontSize: "12px", color: "rgba(255,255,255,0.35)", textAlign: "right" } }, "\xD7", item.qty), /* @__PURE__ */ import_react14.default.createElement("span", { style: { fontSize: "12px", fontWeight: "600", color: "#fff", textAlign: "right" } }, currency, (item.qty * item.price).toFixed(2))))), /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2399
+ background: "rgba(255,255,255,0.03)",
2400
+ border: "1px solid rgba(255,255,255,0.06)",
2401
+ borderRadius: "12px",
2402
+ padding: "12px 14px",
2403
+ marginBottom: "20px"
2404
+ } }, /* @__PURE__ */ import_react14.default.createElement(Row, { label: "Subtotal", value: subtotal }), /* @__PURE__ */ import_react14.default.createElement(Row, { label: `Tax (${taxRate}%)`, value: tax }), /* @__PURE__ */ import_react14.default.createElement("div", { style: { height: "1px", background: "rgba(255,255,255,0.07)", margin: "8px 0" } }), /* @__PURE__ */ import_react14.default.createElement(Row, { label: "Total", value: total, bold: true, large: true, accentColor: accent })), /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", gap: "8px" } }, !paid && /* @__PURE__ */ import_react14.default.createElement(
2405
+ "button",
2406
+ {
2407
+ onClick: () => {
2408
+ setPaid(true);
2409
+ onPayClick();
2410
+ },
2411
+ style: {
2412
+ flex: 1,
2413
+ padding: "11px",
2414
+ borderRadius: "12px",
2415
+ border: "none",
2416
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.7)})`,
2417
+ color: "#fff",
2418
+ fontSize: "13px",
2419
+ fontWeight: "700",
2420
+ cursor: "pointer",
2421
+ fontFamily: "inherit",
2422
+ transition: "opacity 0.2s"
2423
+ },
2424
+ onMouseEnter: (e) => e.currentTarget.style.opacity = "0.85",
2425
+ onMouseLeave: (e) => e.currentTarget.style.opacity = "1"
2426
+ },
2427
+ "Pay ",
2428
+ currency,
2429
+ total.toFixed(2)
2430
+ ), paid && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2431
+ flex: 1,
2432
+ padding: "11px",
2433
+ borderRadius: "12px",
2434
+ background: "rgba(16,185,129,0.1)",
2435
+ border: "1px solid rgba(16,185,129,0.25)",
2436
+ display: "flex",
2437
+ alignItems: "center",
2438
+ justifyContent: "center",
2439
+ gap: "6px",
2440
+ fontSize: "13px",
2441
+ fontWeight: "700",
2442
+ color: "#34d399"
2443
+ } }, /* @__PURE__ */ import_react14.default.createElement(
2444
+ "svg",
2445
+ {
2446
+ width: "14",
2447
+ height: "14",
2448
+ viewBox: "0 0 24 24",
2449
+ fill: "none",
2450
+ stroke: "currentColor",
2451
+ strokeWidth: "2.5",
2452
+ strokeLinecap: "round"
2453
+ },
2454
+ /* @__PURE__ */ import_react14.default.createElement("polyline", { points: "20 6 9 17 4 12" })
2455
+ ), "Payment Done"), /* @__PURE__ */ import_react14.default.createElement(
2456
+ "button",
2457
+ {
2458
+ onClick: onDownloadClick,
2459
+ style: {
2460
+ width: "42px",
2461
+ padding: "11px",
2462
+ borderRadius: "12px",
2463
+ background: "rgba(255,255,255,0.05)",
2464
+ border: "1px solid rgba(255,255,255,0.1)",
2465
+ color: "rgba(255,255,255,0.5)",
2466
+ cursor: "pointer",
2467
+ display: "flex",
2468
+ alignItems: "center",
2469
+ justifyContent: "center",
2470
+ transition: "all 0.2s"
2471
+ },
2472
+ onMouseEnter: (e) => {
2473
+ e.currentTarget.style.color = "#fff";
2474
+ e.currentTarget.style.borderColor = "rgba(255,255,255,0.25)";
2475
+ },
2476
+ onMouseLeave: (e) => {
2477
+ e.currentTarget.style.color = "rgba(255,255,255,0.5)";
2478
+ e.currentTarget.style.borderColor = "rgba(255,255,255,0.1)";
2479
+ }
2480
+ },
2481
+ /* @__PURE__ */ import_react14.default.createElement(
2482
+ "svg",
2483
+ {
2484
+ width: "15",
2485
+ height: "15",
2486
+ viewBox: "0 0 24 24",
2487
+ fill: "none",
2488
+ stroke: "currentColor",
2489
+ strokeWidth: "2",
2490
+ strokeLinecap: "round",
2491
+ strokeLinejoin: "round"
2492
+ },
2493
+ /* @__PURE__ */ import_react14.default.createElement("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3" })
2494
+ )
2495
+ )));
2496
+ };
2275
2497
  // Annotate the CommonJS export names for ESM import in node:
2276
2498
  0 && (module.exports = {
2277
2499
  AvatarCard,
@@ -2280,6 +2502,7 @@ var OTPInput = ({
2280
2502
  Footer,
2281
2503
  ImageCard,
2282
2504
  ImageSlider,
2505
+ InvoiceCard,
2283
2506
  Loader,
2284
2507
  Navbar,
2285
2508
  NotificationToast,
package/dist/index.mjs CHANGED
@@ -2225,6 +2225,227 @@ var OTPInput = ({
2225
2225
  resendTimer > 0 ? `${resendText} (${resendTimer}s)` : resendText
2226
2226
  )));
2227
2227
  };
2228
+
2229
+ // src/components/InvoiceCard/InvoiceCard.jsx
2230
+ import React14, { useState as useState12 } from "react";
2231
+ var InvoiceCard = ({
2232
+ invoiceNumber = "INV-2024-001",
2233
+ date = "21 March 2024",
2234
+ dueDate = "31 March 2024",
2235
+ from = {
2236
+ name: "VirtualAI Inc.",
2237
+ email: "billing@virtualai.com",
2238
+ address: "123 Tech Street, San Francisco, CA"
2239
+ },
2240
+ to = {
2241
+ name: "Aryan Sharma",
2242
+ email: "aryan@example.com",
2243
+ address: "456 Dev Lane, Mumbai, India"
2244
+ },
2245
+ items = [
2246
+ { name: "Pro Plan Subscription", qty: 1, price: 29 },
2247
+ { name: "Extra AI Credits (500)", qty: 2, price: 9 },
2248
+ { name: "Custom Domain Setup", qty: 1, price: 15 }
2249
+ ],
2250
+ taxRate = 18,
2251
+ currency = "$",
2252
+ accent = "#6366f1",
2253
+ bg = "#0f172a",
2254
+ radius = "20px",
2255
+ status = "unpaid",
2256
+ onPayClick = () => {
2257
+ },
2258
+ onDownloadClick = () => {
2259
+ }
2260
+ }) => {
2261
+ const [paid, setPaid] = useState12(status === "paid");
2262
+ const alpha = (hex, op) => {
2263
+ const r = parseInt(hex.slice(1, 3), 16);
2264
+ const g = parseInt(hex.slice(3, 5), 16);
2265
+ const b = parseInt(hex.slice(5, 7), 16);
2266
+ return `rgba(${r},${g},${b},${op})`;
2267
+ };
2268
+ const subtotal = items.reduce((s, i) => s + i.qty * i.price, 0);
2269
+ const tax = parseFloat((subtotal * taxRate / 100).toFixed(2));
2270
+ const total = parseFloat((subtotal + tax).toFixed(2));
2271
+ const statusConfig = {
2272
+ paid: { label: "Paid", bg: "rgba(16,185,129,0.15)", color: "#34d399", border: "rgba(16,185,129,0.3)" },
2273
+ unpaid: { label: "Unpaid", bg: "rgba(239,68,68,0.12)", color: "#f87171", border: "rgba(239,68,68,0.3)" },
2274
+ pending: { label: "Pending", bg: "rgba(245,158,11,0.12)", color: "#fbbf24", border: "rgba(245,158,11,0.3)" }
2275
+ };
2276
+ const sc = statusConfig[paid ? "paid" : status] || statusConfig.unpaid;
2277
+ const Row = ({ label, value, bold, large, accentColor }) => /* @__PURE__ */ React14.createElement("div", { style: {
2278
+ display: "flex",
2279
+ justifyContent: "space-between",
2280
+ alignItems: "center",
2281
+ padding: "5px 0"
2282
+ } }, /* @__PURE__ */ React14.createElement("span", { style: {
2283
+ fontSize: large ? "14px" : "12px",
2284
+ fontWeight: bold ? "700" : "400",
2285
+ color: large ? "#fff" : "rgba(255,255,255,0.45)"
2286
+ } }, label), /* @__PURE__ */ React14.createElement("span", { style: {
2287
+ fontSize: large ? "16px" : "13px",
2288
+ fontWeight: bold ? "800" : "600",
2289
+ color: accentColor || (large ? "#fff" : "rgba(255,255,255,0.85)")
2290
+ } }, currency, typeof value === "number" ? value.toFixed(2) : value));
2291
+ return /* @__PURE__ */ React14.createElement("div", { style: {
2292
+ background: bg,
2293
+ borderRadius: radius,
2294
+ padding: "24px",
2295
+ width: "340px",
2296
+ fontFamily: "system-ui, sans-serif",
2297
+ border: "1px solid rgba(255,255,255,0.07)",
2298
+ boxShadow: "0 10px 40px rgba(0,0,0,0.4)",
2299
+ color: "#fff"
2300
+ } }, /* @__PURE__ */ React14.createElement("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: "20px" } }, /* @__PURE__ */ React14.createElement("div", null, /* @__PURE__ */ React14.createElement("div", { style: { display: "flex", alignItems: "center", gap: "7px", marginBottom: "4px" } }, /* @__PURE__ */ React14.createElement("div", { style: {
2301
+ width: "24px",
2302
+ height: "24px",
2303
+ borderRadius: "6px",
2304
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.6)})`,
2305
+ display: "flex",
2306
+ alignItems: "center",
2307
+ justifyContent: "center",
2308
+ fontSize: "11px",
2309
+ fontWeight: "800",
2310
+ color: "#fff"
2311
+ } }, "V"), /* @__PURE__ */ React14.createElement("span", { style: { fontSize: "14px", fontWeight: "800" } }, from.name)), /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "11px", color: "rgba(255,255,255,0.3)", margin: 0 } }, invoiceNumber)), /* @__PURE__ */ React14.createElement("div", { style: {
2312
+ padding: "4px 12px",
2313
+ borderRadius: "20px",
2314
+ fontSize: "11px",
2315
+ fontWeight: "700",
2316
+ background: sc.bg,
2317
+ color: sc.color,
2318
+ border: `1px solid ${sc.border}`,
2319
+ textTransform: "uppercase",
2320
+ letterSpacing: "0.5px"
2321
+ } }, sc.label)), /* @__PURE__ */ React14.createElement("div", { style: {
2322
+ display: "grid",
2323
+ gridTemplateColumns: "1fr 1fr",
2324
+ gap: "12px",
2325
+ background: "rgba(255,255,255,0.03)",
2326
+ border: "1px solid rgba(255,255,255,0.06)",
2327
+ borderRadius: "12px",
2328
+ padding: "14px",
2329
+ marginBottom: "20px"
2330
+ } }, [{ label: "From", info: from }, { label: "To", info: to }].map(({ label, info }) => /* @__PURE__ */ React14.createElement("div", { key: label }, /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "10px", fontWeight: "700", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", marginBottom: "5px" } }, label), /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "12px", fontWeight: "700", color: "#fff", margin: "0 0 2px" } }, info.name), /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "11px", color: "rgba(255,255,255,0.35)", margin: "0 0 2px" } }, info.email), /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "10px", color: "rgba(255,255,255,0.25)", margin: 0, lineHeight: 1.4 } }, info.address)))), /* @__PURE__ */ React14.createElement("div", { style: { display: "flex", gap: "10px", marginBottom: "20px" } }, [{ label: "Issue Date", val: date }, { label: "Due Date", val: dueDate }].map(({ label, val }) => /* @__PURE__ */ React14.createElement("div", { key: label, style: {
2331
+ flex: 1,
2332
+ background: "rgba(255,255,255,0.03)",
2333
+ border: "1px solid rgba(255,255,255,0.06)",
2334
+ borderRadius: "10px",
2335
+ padding: "10px 12px"
2336
+ } }, /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "10px", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", margin: "0 0 3px", fontWeight: "700" } }, label), /* @__PURE__ */ React14.createElement("p", { style: { fontSize: "12px", fontWeight: "700", color: "#fff", margin: 0 } }, val)))), /* @__PURE__ */ React14.createElement("div", { style: { marginBottom: "16px" } }, /* @__PURE__ */ React14.createElement("div", { style: {
2337
+ display: "grid",
2338
+ gridTemplateColumns: "1fr auto auto",
2339
+ gap: "8px",
2340
+ padding: "6px 8px",
2341
+ borderBottom: "1px solid rgba(255,255,255,0.06)",
2342
+ marginBottom: "4px"
2343
+ } }, ["Item", "Qty", "Amount"].map((h) => /* @__PURE__ */ React14.createElement("span", { key: h, style: { fontSize: "10px", fontWeight: "700", color: "rgba(255,255,255,0.25)", textTransform: "uppercase", letterSpacing: "0.8px", textAlign: h !== "Item" ? "right" : "left" } }, h))), items.map((item, i) => /* @__PURE__ */ React14.createElement("div", { key: i, style: {
2344
+ display: "grid",
2345
+ gridTemplateColumns: "1fr auto auto",
2346
+ gap: "8px",
2347
+ padding: "8px",
2348
+ borderRadius: "8px",
2349
+ background: i % 2 === 0 ? "rgba(255,255,255,0.02)" : "transparent"
2350
+ } }, /* @__PURE__ */ React14.createElement("span", { style: { fontSize: "12px", color: "rgba(255,255,255,0.75)" } }, item.name), /* @__PURE__ */ React14.createElement("span", { style: { fontSize: "12px", color: "rgba(255,255,255,0.35)", textAlign: "right" } }, "\xD7", item.qty), /* @__PURE__ */ React14.createElement("span", { style: { fontSize: "12px", fontWeight: "600", color: "#fff", textAlign: "right" } }, currency, (item.qty * item.price).toFixed(2))))), /* @__PURE__ */ React14.createElement("div", { style: {
2351
+ background: "rgba(255,255,255,0.03)",
2352
+ border: "1px solid rgba(255,255,255,0.06)",
2353
+ borderRadius: "12px",
2354
+ padding: "12px 14px",
2355
+ marginBottom: "20px"
2356
+ } }, /* @__PURE__ */ React14.createElement(Row, { label: "Subtotal", value: subtotal }), /* @__PURE__ */ React14.createElement(Row, { label: `Tax (${taxRate}%)`, value: tax }), /* @__PURE__ */ React14.createElement("div", { style: { height: "1px", background: "rgba(255,255,255,0.07)", margin: "8px 0" } }), /* @__PURE__ */ React14.createElement(Row, { label: "Total", value: total, bold: true, large: true, accentColor: accent })), /* @__PURE__ */ React14.createElement("div", { style: { display: "flex", gap: "8px" } }, !paid && /* @__PURE__ */ React14.createElement(
2357
+ "button",
2358
+ {
2359
+ onClick: () => {
2360
+ setPaid(true);
2361
+ onPayClick();
2362
+ },
2363
+ style: {
2364
+ flex: 1,
2365
+ padding: "11px",
2366
+ borderRadius: "12px",
2367
+ border: "none",
2368
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.7)})`,
2369
+ color: "#fff",
2370
+ fontSize: "13px",
2371
+ fontWeight: "700",
2372
+ cursor: "pointer",
2373
+ fontFamily: "inherit",
2374
+ transition: "opacity 0.2s"
2375
+ },
2376
+ onMouseEnter: (e) => e.currentTarget.style.opacity = "0.85",
2377
+ onMouseLeave: (e) => e.currentTarget.style.opacity = "1"
2378
+ },
2379
+ "Pay ",
2380
+ currency,
2381
+ total.toFixed(2)
2382
+ ), paid && /* @__PURE__ */ React14.createElement("div", { style: {
2383
+ flex: 1,
2384
+ padding: "11px",
2385
+ borderRadius: "12px",
2386
+ background: "rgba(16,185,129,0.1)",
2387
+ border: "1px solid rgba(16,185,129,0.25)",
2388
+ display: "flex",
2389
+ alignItems: "center",
2390
+ justifyContent: "center",
2391
+ gap: "6px",
2392
+ fontSize: "13px",
2393
+ fontWeight: "700",
2394
+ color: "#34d399"
2395
+ } }, /* @__PURE__ */ React14.createElement(
2396
+ "svg",
2397
+ {
2398
+ width: "14",
2399
+ height: "14",
2400
+ viewBox: "0 0 24 24",
2401
+ fill: "none",
2402
+ stroke: "currentColor",
2403
+ strokeWidth: "2.5",
2404
+ strokeLinecap: "round"
2405
+ },
2406
+ /* @__PURE__ */ React14.createElement("polyline", { points: "20 6 9 17 4 12" })
2407
+ ), "Payment Done"), /* @__PURE__ */ React14.createElement(
2408
+ "button",
2409
+ {
2410
+ onClick: onDownloadClick,
2411
+ style: {
2412
+ width: "42px",
2413
+ padding: "11px",
2414
+ borderRadius: "12px",
2415
+ background: "rgba(255,255,255,0.05)",
2416
+ border: "1px solid rgba(255,255,255,0.1)",
2417
+ color: "rgba(255,255,255,0.5)",
2418
+ cursor: "pointer",
2419
+ display: "flex",
2420
+ alignItems: "center",
2421
+ justifyContent: "center",
2422
+ transition: "all 0.2s"
2423
+ },
2424
+ onMouseEnter: (e) => {
2425
+ e.currentTarget.style.color = "#fff";
2426
+ e.currentTarget.style.borderColor = "rgba(255,255,255,0.25)";
2427
+ },
2428
+ onMouseLeave: (e) => {
2429
+ e.currentTarget.style.color = "rgba(255,255,255,0.5)";
2430
+ e.currentTarget.style.borderColor = "rgba(255,255,255,0.1)";
2431
+ }
2432
+ },
2433
+ /* @__PURE__ */ React14.createElement(
2434
+ "svg",
2435
+ {
2436
+ width: "15",
2437
+ height: "15",
2438
+ viewBox: "0 0 24 24",
2439
+ fill: "none",
2440
+ stroke: "currentColor",
2441
+ strokeWidth: "2",
2442
+ strokeLinecap: "round",
2443
+ strokeLinejoin: "round"
2444
+ },
2445
+ /* @__PURE__ */ React14.createElement("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3" })
2446
+ )
2447
+ )));
2448
+ };
2228
2449
  export {
2229
2450
  AvatarCard,
2230
2451
  BackgoundImageSlider,
@@ -2232,6 +2453,7 @@ export {
2232
2453
  Footer,
2233
2454
  ImageCard,
2234
2455
  ImageSlider,
2456
+ InvoiceCard,
2235
2457
  Loader,
2236
2458
  Navbar,
2237
2459
  NotificationToast,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-ui-lib",
3
- "version": "1.0.68",
3
+ "version": "1.0.69",
4
4
  "description": "Virtual UI React Component Library",
5
5
  "author": "Ankush",
6
6
  "license": "ISC",