virtual-ui-lib 1.0.75 → 1.0.77

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/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 🌐 Live Demo
2
+
3
+ 👉 https://virtual-ui-client.onrender.com
4
+
5
+ ---
6
+
1
7
  # Virtual UI
2
8
 
3
9
  A modern and customizable **React UI Component Library** designed for fast development and clean design systems.
package/dist/index.js CHANGED
@@ -29,6 +29,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  // src/index.js
30
30
  var index_exports = {};
31
31
  __export(index_exports, {
32
+ AnimatedForm: () => AnimatedForm,
32
33
  AvatarCard: () => AvatarCard,
33
34
  BackgoundImageSlider: () => BackgoundImageSlider,
34
35
  Charts: () => Charts,
@@ -47,6 +48,7 @@ __export(index_exports, {
47
48
  PricingCard: () => PricingCard,
48
49
  ProgressBar: () => ProgressBar,
49
50
  RatingStars: () => RatingStars,
51
+ ReviewCard: () => ReviewCard,
50
52
  Sidebar: () => Sidebar,
51
53
  StatCard: () => StatCard
52
54
  });
@@ -3632,8 +3634,156 @@ var EcommerceCard = ({
3632
3634
  ))
3633
3635
  );
3634
3636
  };
3637
+
3638
+ // src/components/AnimatedForm/AnimatedForm.jsx
3639
+ var import_react21 = __toESM(require("react"));
3640
+ var AnimatedForm = ({
3641
+ title = "Contact Us",
3642
+ description = "We'll get back to you shortly",
3643
+ submitText = "Send Message",
3644
+ accent = "#6366f1",
3645
+ bg = "#0f172a",
3646
+ onSubmit = () => {
3647
+ }
3648
+ }) => {
3649
+ const [name, setName] = (0, import_react21.useState)("");
3650
+ const [email, setEmail] = (0, import_react21.useState)("");
3651
+ const [message, setMessage] = (0, import_react21.useState)("");
3652
+ const [hovered, setHovered] = (0, import_react21.useState)(false);
3653
+ const alpha = (hex, op) => {
3654
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3655
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3656
+ };
3657
+ return /* @__PURE__ */ import_react21.default.createElement(
3658
+ "div",
3659
+ {
3660
+ onMouseEnter: () => setHovered(true),
3661
+ onMouseLeave: () => setHovered(false),
3662
+ style: {
3663
+ background: bg,
3664
+ borderRadius: "20px",
3665
+ padding: "28px",
3666
+ width: "400px",
3667
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3668
+ fontFamily: "system-ui,sans-serif",
3669
+ transition: "transform 0.25s, box-shadow 0.25s",
3670
+ transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3671
+ boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3672
+ }
3673
+ },
3674
+ /* @__PURE__ */ import_react21.default.createElement("h2", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, title),
3675
+ /* @__PURE__ */ import_react21.default.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.45)", margin: "0 0 24px" } }, description),
3676
+ /* @__PURE__ */ import_react21.default.createElement(
3677
+ "input",
3678
+ {
3679
+ type: "text",
3680
+ placeholder: "Your Name",
3681
+ value: name,
3682
+ onChange: (e) => setName(e.target.value),
3683
+ style: {
3684
+ width: "100%",
3685
+ padding: "12px",
3686
+ borderRadius: "10px",
3687
+ border: "1px solid rgba(255,255,255,0.1)",
3688
+ background: "#1e293b",
3689
+ color: "#fff",
3690
+ fontSize: "14px",
3691
+ marginBottom: "16px",
3692
+ outline: "none",
3693
+ transition: "border-color 0.2s",
3694
+ fontFamily: "inherit"
3695
+ }
3696
+ }
3697
+ ),
3698
+ /* @__PURE__ */ import_react21.default.createElement(
3699
+ "input",
3700
+ {
3701
+ type: "email",
3702
+ placeholder: "Your Email",
3703
+ value: email,
3704
+ onChange: (e) => setEmail(e.target.value),
3705
+ style: {
3706
+ width: "100%",
3707
+ padding: "12px",
3708
+ borderRadius: "10px",
3709
+ border: "1px solid rgba(255,255,255,0.1)",
3710
+ background: "#1e293b",
3711
+ color: "#fff",
3712
+ fontSize: "14px",
3713
+ marginBottom: "16px",
3714
+ outline: "none",
3715
+ transition: "border-color 0.2s",
3716
+ fontFamily: "inherit"
3717
+ }
3718
+ }
3719
+ ),
3720
+ /* @__PURE__ */ import_react21.default.createElement(
3721
+ "textarea",
3722
+ {
3723
+ placeholder: "Your Message",
3724
+ value: message,
3725
+ onChange: (e) => setMessage(e.target.value),
3726
+ style: {
3727
+ width: "100%",
3728
+ padding: "12px",
3729
+ borderRadius: "10px",
3730
+ border: "1px solid rgba(255,255,255,0.1)",
3731
+ background: "#1e293b",
3732
+ color: "#fff",
3733
+ fontSize: "14px",
3734
+ marginBottom: "24px",
3735
+ outline: "none",
3736
+ transition: "border-color 0.2s",
3737
+ fontFamily: "inherit",
3738
+ minHeight: "120px",
3739
+ resize: "vertical"
3740
+ }
3741
+ }
3742
+ ),
3743
+ /* @__PURE__ */ import_react21.default.createElement(
3744
+ "button",
3745
+ {
3746
+ onClick: () => onSubmit({ name, email, message }),
3747
+ style: {
3748
+ width: "100%",
3749
+ padding: "13px",
3750
+ borderRadius: "12px",
3751
+ border: "none",
3752
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
3753
+ color: "#fff",
3754
+ fontSize: "14px",
3755
+ fontWeight: "700",
3756
+ cursor: "pointer",
3757
+ fontFamily: "inherit"
3758
+ }
3759
+ },
3760
+ submitText
3761
+ )
3762
+ );
3763
+ };
3764
+
3765
+ // src/components/ReviewCard/ReviewCard.jsx
3766
+ var import_react22 = __toESM(require("react"));
3767
+ var ReviewCard = ({
3768
+ avatar = "https://images.unsplash.com/photo-1633332755192-727a05c4013d?w=800&q=80",
3769
+ name = "John Doe",
3770
+ rating = 4,
3771
+ review = "This product is fantastic! It exceeded my expectations in every way.",
3772
+ date = "2 days ago",
3773
+ accent = "#6366f1",
3774
+ bg = "#0f172a",
3775
+ onProfileClick = () => {
3776
+ }
3777
+ }) => {
3778
+ const alpha = (hex, op) => {
3779
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3780
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3781
+ };
3782
+ return /* @__PURE__ */ import_react22.default.createElement("div", { style: { background: bg, borderRadius: "16px", padding: "16px", width: "320px", fontFamily: "system-ui,sans-serif", border: "1px solid rgba(255,255,255,0.08)", boxShadow: "0 4px 16px rgba(0,0,0,0.3)" } }, /* @__PURE__ */ import_react22.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ import_react22.default.createElement("img", { src: avatar, alt: name, onClick: onProfileClick, style: { width: "40px", height: "40px", borderRadius: "50%", cursor: "pointer" } }), /* @__PURE__ */ import_react22.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "2px" } }, /* @__PURE__ */ import_react22.default.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ import_react22.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "4px" } }, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ import_react22.default.createElement("svg", { key: i, width: "14", height: "14", viewBox: "0 0 24 24", fill: i < rating ? accent : "rgba(255,255,255,0.15)", stroke: "none" }, /* @__PURE__ */ import_react22.default.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })))))), /* @__PURE__ */ import_react22.default.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "12px" } }, review), /* @__PURE__ */ import_react22.default.createElement("div", { style: { fontSize: "11px", color: "rgba(255,255,255,0.4)" } }, date));
3783
+ };
3635
3784
  // Annotate the CommonJS export names for ESM import in node:
3636
3785
  0 && (module.exports = {
3786
+ AnimatedForm,
3637
3787
  AvatarCard,
3638
3788
  BackgoundImageSlider,
3639
3789
  Charts,
@@ -3652,6 +3802,7 @@ var EcommerceCard = ({
3652
3802
  PricingCard,
3653
3803
  ProgressBar,
3654
3804
  RatingStars,
3805
+ ReviewCard,
3655
3806
  Sidebar,
3656
3807
  StatCard
3657
3808
  });
package/dist/index.mjs CHANGED
@@ -3578,7 +3578,155 @@ var EcommerceCard = ({
3578
3578
  ))
3579
3579
  );
3580
3580
  };
3581
+
3582
+ // src/components/AnimatedForm/AnimatedForm.jsx
3583
+ import React21, { useState as useState19 } from "react";
3584
+ var AnimatedForm = ({
3585
+ title = "Contact Us",
3586
+ description = "We'll get back to you shortly",
3587
+ submitText = "Send Message",
3588
+ accent = "#6366f1",
3589
+ bg = "#0f172a",
3590
+ onSubmit = () => {
3591
+ }
3592
+ }) => {
3593
+ const [name, setName] = useState19("");
3594
+ const [email, setEmail] = useState19("");
3595
+ const [message, setMessage] = useState19("");
3596
+ const [hovered, setHovered] = useState19(false);
3597
+ const alpha = (hex, op) => {
3598
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3599
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3600
+ };
3601
+ return /* @__PURE__ */ React21.createElement(
3602
+ "div",
3603
+ {
3604
+ onMouseEnter: () => setHovered(true),
3605
+ onMouseLeave: () => setHovered(false),
3606
+ style: {
3607
+ background: bg,
3608
+ borderRadius: "20px",
3609
+ padding: "28px",
3610
+ width: "400px",
3611
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3612
+ fontFamily: "system-ui,sans-serif",
3613
+ transition: "transform 0.25s, box-shadow 0.25s",
3614
+ transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3615
+ boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3616
+ }
3617
+ },
3618
+ /* @__PURE__ */ React21.createElement("h2", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, title),
3619
+ /* @__PURE__ */ React21.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.45)", margin: "0 0 24px" } }, description),
3620
+ /* @__PURE__ */ React21.createElement(
3621
+ "input",
3622
+ {
3623
+ type: "text",
3624
+ placeholder: "Your Name",
3625
+ value: name,
3626
+ onChange: (e) => setName(e.target.value),
3627
+ style: {
3628
+ width: "100%",
3629
+ padding: "12px",
3630
+ borderRadius: "10px",
3631
+ border: "1px solid rgba(255,255,255,0.1)",
3632
+ background: "#1e293b",
3633
+ color: "#fff",
3634
+ fontSize: "14px",
3635
+ marginBottom: "16px",
3636
+ outline: "none",
3637
+ transition: "border-color 0.2s",
3638
+ fontFamily: "inherit"
3639
+ }
3640
+ }
3641
+ ),
3642
+ /* @__PURE__ */ React21.createElement(
3643
+ "input",
3644
+ {
3645
+ type: "email",
3646
+ placeholder: "Your Email",
3647
+ value: email,
3648
+ onChange: (e) => setEmail(e.target.value),
3649
+ style: {
3650
+ width: "100%",
3651
+ padding: "12px",
3652
+ borderRadius: "10px",
3653
+ border: "1px solid rgba(255,255,255,0.1)",
3654
+ background: "#1e293b",
3655
+ color: "#fff",
3656
+ fontSize: "14px",
3657
+ marginBottom: "16px",
3658
+ outline: "none",
3659
+ transition: "border-color 0.2s",
3660
+ fontFamily: "inherit"
3661
+ }
3662
+ }
3663
+ ),
3664
+ /* @__PURE__ */ React21.createElement(
3665
+ "textarea",
3666
+ {
3667
+ placeholder: "Your Message",
3668
+ value: message,
3669
+ onChange: (e) => setMessage(e.target.value),
3670
+ style: {
3671
+ width: "100%",
3672
+ padding: "12px",
3673
+ borderRadius: "10px",
3674
+ border: "1px solid rgba(255,255,255,0.1)",
3675
+ background: "#1e293b",
3676
+ color: "#fff",
3677
+ fontSize: "14px",
3678
+ marginBottom: "24px",
3679
+ outline: "none",
3680
+ transition: "border-color 0.2s",
3681
+ fontFamily: "inherit",
3682
+ minHeight: "120px",
3683
+ resize: "vertical"
3684
+ }
3685
+ }
3686
+ ),
3687
+ /* @__PURE__ */ React21.createElement(
3688
+ "button",
3689
+ {
3690
+ onClick: () => onSubmit({ name, email, message }),
3691
+ style: {
3692
+ width: "100%",
3693
+ padding: "13px",
3694
+ borderRadius: "12px",
3695
+ border: "none",
3696
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
3697
+ color: "#fff",
3698
+ fontSize: "14px",
3699
+ fontWeight: "700",
3700
+ cursor: "pointer",
3701
+ fontFamily: "inherit"
3702
+ }
3703
+ },
3704
+ submitText
3705
+ )
3706
+ );
3707
+ };
3708
+
3709
+ // src/components/ReviewCard/ReviewCard.jsx
3710
+ import React22 from "react";
3711
+ var ReviewCard = ({
3712
+ avatar = "https://images.unsplash.com/photo-1633332755192-727a05c4013d?w=800&q=80",
3713
+ name = "John Doe",
3714
+ rating = 4,
3715
+ review = "This product is fantastic! It exceeded my expectations in every way.",
3716
+ date = "2 days ago",
3717
+ accent = "#6366f1",
3718
+ bg = "#0f172a",
3719
+ onProfileClick = () => {
3720
+ }
3721
+ }) => {
3722
+ const alpha = (hex, op) => {
3723
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3724
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3725
+ };
3726
+ return /* @__PURE__ */ React22.createElement("div", { style: { background: bg, borderRadius: "16px", padding: "16px", width: "320px", fontFamily: "system-ui,sans-serif", border: "1px solid rgba(255,255,255,0.08)", boxShadow: "0 4px 16px rgba(0,0,0,0.3)" } }, /* @__PURE__ */ React22.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ React22.createElement("img", { src: avatar, alt: name, onClick: onProfileClick, style: { width: "40px", height: "40px", borderRadius: "50%", cursor: "pointer" } }), /* @__PURE__ */ React22.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "2px" } }, /* @__PURE__ */ React22.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ React22.createElement("div", { style: { display: "flex", alignItems: "center", gap: "4px" } }, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ React22.createElement("svg", { key: i, width: "14", height: "14", viewBox: "0 0 24 24", fill: i < rating ? accent : "rgba(255,255,255,0.15)", stroke: "none" }, /* @__PURE__ */ React22.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })))))), /* @__PURE__ */ React22.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "12px" } }, review), /* @__PURE__ */ React22.createElement("div", { style: { fontSize: "11px", color: "rgba(255,255,255,0.4)" } }, date));
3727
+ };
3581
3728
  export {
3729
+ AnimatedForm,
3582
3730
  AvatarCard,
3583
3731
  BackgoundImageSlider,
3584
3732
  Charts,
@@ -3597,6 +3745,7 @@ export {
3597
3745
  PricingCard,
3598
3746
  ProgressBar,
3599
3747
  RatingStars,
3748
+ ReviewCard,
3600
3749
  Sidebar,
3601
3750
  StatCard
3602
3751
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-ui-lib",
3
- "version": "1.0.75",
3
+ "version": "1.0.77",
4
4
  "description": "Virtual UI React Component Library",
5
5
  "author": "Ankush",
6
6
  "license": "ISC",