virtual-ui-project-lib 1.0.0 → 1.0.4

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,8 +1,4 @@
1
- # 🌐 Live Demo
2
1
 
3
- 👉 https://virtual-ui-client.onrender.com
4
-
5
- ---
6
2
 
7
3
  # Virtual UI
8
4
 
package/dist/index.js CHANGED
@@ -37,9 +37,11 @@ __export(index_exports, {
37
37
  Card: () => Card,
38
38
  Charts: () => Charts,
39
39
  ColorPicker: () => ColorPicker,
40
- EcommerceCard: () => EcommerceCard,
40
+ DatePicker: () => DatePicker,
41
+ ECommerceCard: () => ECommerceCard,
41
42
  FileUpload: () => FileUpload,
42
43
  Footer: () => Footer,
44
+ IDCard: () => IDCard,
43
45
  ImageCard: () => ImageCard,
44
46
  ImageSlider: () => ImageSlider,
45
47
  InvoiceCard: () => InvoiceCard,
@@ -3582,64 +3584,8 @@ var ProgressBar = ({
3582
3584
  return null;
3583
3585
  };
3584
3586
 
3585
- // src/components/EcommerceCard/EcommerceCard.jsx
3586
- var import_react20 = __toESM(require("react"));
3587
- var EcommerceCard = ({
3588
- image = "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=600&q=80",
3589
- title = "Wireless Headphones",
3590
- description = "Premium noise-cancelling headphones with 40 hours battery life.",
3591
- price = 199,
3592
- currency = "$",
3593
- accent = "#6366f1",
3594
- bg = "#0f172a",
3595
- onAddToCart = () => {
3596
- },
3597
- onViewDetails = () => {
3598
- }
3599
- }) => {
3600
- const [hovered, setHovered] = (0, import_react20.useState)(false);
3601
- const alpha = (hex, op) => {
3602
- const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3603
- return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3604
- };
3605
- return /* @__PURE__ */ import_react20.default.createElement(
3606
- "div",
3607
- {
3608
- onMouseEnter: () => setHovered(true),
3609
- onMouseLeave: () => setHovered(false),
3610
- style: {
3611
- background: bg,
3612
- borderRadius: "20px",
3613
- overflow: "hidden",
3614
- width: "300px",
3615
- border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3616
- fontFamily: "system-ui,sans-serif",
3617
- transition: "transform 0.25s, box-shadow 0.25s",
3618
- transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3619
- boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3620
- }
3621
- },
3622
- /* @__PURE__ */ import_react20.default.createElement("div", { style: { position: "relative", width: "100%", height: "200px", overflow: "hidden" } }, /* @__PURE__ */ import_react20.default.createElement("img", { src: image, alt: title, style: { width: "100%", height: "100%", objectFit: "cover", transform: hovered ? "scale(1.05)" : "scale(1)", transition: "transform 0.4s ease" } }), /* @__PURE__ */ import_react20.default.createElement("div", { style: { position: "absolute", inset: 0, background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)" } })),
3623
- /* @__PURE__ */ import_react20.default.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ import_react20.default.createElement("h3", { style: { fontSize: "15px", fontWeight: "700", color: "#fff", margin: "0 0 8px", lineHeight: 1.4 } }, title), /* @__PURE__ */ import_react20.default.createElement("p", { style: { fontSize: "13px", color: "rgba(255,255,255,0.45)", lineHeight: 1.65, margin: "0 0 18px" } }, description), /* @__PURE__ */ import_react20.default.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "18px" } }, /* @__PURE__ */ import_react20.default.createElement("span", { style: { fontSize: "24px", fontWeight: "800", color: "#fff" } }, currency, price), /* @__PURE__ */ import_react20.default.createElement(
3624
- "button",
3625
- {
3626
- onClick: onAddToCart,
3627
- style: { padding: "8px 16px", borderRadius: "12px", border: "none", background: accent, color: "#fff", fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3628
- },
3629
- "Add to Cart"
3630
- )), /* @__PURE__ */ import_react20.default.createElement(
3631
- "button",
3632
- {
3633
- onClick: onViewDetails,
3634
- style: { width: "100%", padding: "11px", borderRadius: "12px", border: "1px solid " + alpha(accent, 0.3), background: "transparent", color: accent, fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3635
- },
3636
- "View Details"
3637
- ))
3638
- );
3639
- };
3640
-
3641
3587
  // src/components/AnimatedForm/AnimatedForm.jsx
3642
- var import_react21 = __toESM(require("react"));
3588
+ var import_react20 = __toESM(require("react"));
3643
3589
  var AnimatedForm = ({
3644
3590
  title = "Contact Us",
3645
3591
  description = "We'll get back to you shortly",
@@ -3649,15 +3595,15 @@ var AnimatedForm = ({
3649
3595
  onSubmit = () => {
3650
3596
  }
3651
3597
  }) => {
3652
- const [name, setName] = (0, import_react21.useState)("");
3653
- const [email, setEmail] = (0, import_react21.useState)("");
3654
- const [message, setMessage] = (0, import_react21.useState)("");
3655
- const [hovered, setHovered] = (0, import_react21.useState)(false);
3598
+ const [name, setName] = (0, import_react20.useState)("");
3599
+ const [email, setEmail] = (0, import_react20.useState)("");
3600
+ const [message, setMessage] = (0, import_react20.useState)("");
3601
+ const [hovered, setHovered] = (0, import_react20.useState)(false);
3656
3602
  const alpha = (hex, op) => {
3657
3603
  const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3658
3604
  return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3659
3605
  };
3660
- return /* @__PURE__ */ import_react21.default.createElement(
3606
+ return /* @__PURE__ */ import_react20.default.createElement(
3661
3607
  "div",
3662
3608
  {
3663
3609
  onMouseEnter: () => setHovered(true),
@@ -3674,9 +3620,9 @@ var AnimatedForm = ({
3674
3620
  boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3675
3621
  }
3676
3622
  },
3677
- /* @__PURE__ */ import_react21.default.createElement("h2", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, title),
3678
- /* @__PURE__ */ import_react21.default.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.45)", margin: "0 0 24px" } }, description),
3679
- /* @__PURE__ */ import_react21.default.createElement(
3623
+ /* @__PURE__ */ import_react20.default.createElement("h2", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, title),
3624
+ /* @__PURE__ */ import_react20.default.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.45)", margin: "0 0 24px" } }, description),
3625
+ /* @__PURE__ */ import_react20.default.createElement(
3680
3626
  "input",
3681
3627
  {
3682
3628
  type: "text",
@@ -3698,7 +3644,7 @@ var AnimatedForm = ({
3698
3644
  }
3699
3645
  }
3700
3646
  ),
3701
- /* @__PURE__ */ import_react21.default.createElement(
3647
+ /* @__PURE__ */ import_react20.default.createElement(
3702
3648
  "input",
3703
3649
  {
3704
3650
  type: "email",
@@ -3720,7 +3666,7 @@ var AnimatedForm = ({
3720
3666
  }
3721
3667
  }
3722
3668
  ),
3723
- /* @__PURE__ */ import_react21.default.createElement(
3669
+ /* @__PURE__ */ import_react20.default.createElement(
3724
3670
  "textarea",
3725
3671
  {
3726
3672
  placeholder: "Your Message",
@@ -3743,7 +3689,7 @@ var AnimatedForm = ({
3743
3689
  }
3744
3690
  }
3745
3691
  ),
3746
- /* @__PURE__ */ import_react21.default.createElement(
3692
+ /* @__PURE__ */ import_react20.default.createElement(
3747
3693
  "button",
3748
3694
  {
3749
3695
  onClick: () => onSubmit({ name, email, message }),
@@ -3766,7 +3712,7 @@ var AnimatedForm = ({
3766
3712
  };
3767
3713
 
3768
3714
  // src/components/ReviewCard/ReviewCard.jsx
3769
- var import_react22 = __toESM(require("react"));
3715
+ var import_react21 = __toESM(require("react"));
3770
3716
  var ReviewCard = ({
3771
3717
  avatar = "https://images.unsplash.com/photo-1633332755192-727a05c4013d?w=800&q=80",
3772
3718
  name = "John Doe",
@@ -3782,11 +3728,11 @@ var ReviewCard = ({
3782
3728
  const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3783
3729
  return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3784
3730
  };
3785
- 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));
3731
+ return /* @__PURE__ */ import_react21.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_react21.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ import_react21.default.createElement("img", { src: avatar, alt: name, onClick: onProfileClick, style: { width: "40px", height: "40px", borderRadius: "50%", cursor: "pointer" } }), /* @__PURE__ */ import_react21.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "2px" } }, /* @__PURE__ */ import_react21.default.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ import_react21.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "4px" } }, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ import_react21.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_react21.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_react21.default.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "12px" } }, review), /* @__PURE__ */ import_react21.default.createElement("div", { style: { fontSize: "11px", color: "rgba(255,255,255,0.4)" } }, date));
3786
3732
  };
3787
3733
 
3788
3734
  // src/components/Card/Card.jsx
3789
- var import_react23 = __toESM(require("react"));
3735
+ var import_react22 = __toESM(require("react"));
3790
3736
  var Card = ({
3791
3737
  title = "Performance",
3792
3738
  description = "Real-time metrics with live dashboard updates every second.",
@@ -3794,8 +3740,8 @@ var Card = ({
3794
3740
  tag = "Active",
3795
3741
  onClick
3796
3742
  }) => {
3797
- const [hovered, setHovered] = (0, import_react23.useState)(false);
3798
- return /* @__PURE__ */ import_react23.default.createElement(
3743
+ const [hovered, setHovered] = (0, import_react22.useState)(false);
3744
+ return /* @__PURE__ */ import_react22.default.createElement(
3799
3745
  "div",
3800
3746
  {
3801
3747
  onMouseEnter: () => setHovered(true),
@@ -3815,7 +3761,7 @@ var Card = ({
3815
3761
  width: "260px"
3816
3762
  }
3817
3763
  },
3818
- /* @__PURE__ */ import_react23.default.createElement("div", { style: {
3764
+ /* @__PURE__ */ import_react22.default.createElement("div", { style: {
3819
3765
  position: "absolute",
3820
3766
  top: 0,
3821
3767
  left: 0,
@@ -3824,7 +3770,7 @@ var Card = ({
3824
3770
  background: "#1D9E75",
3825
3771
  borderRadius: "12px 12px 0 0"
3826
3772
  } }),
3827
- /* @__PURE__ */ import_react23.default.createElement("div", { style: {
3773
+ /* @__PURE__ */ import_react22.default.createElement("div", { style: {
3828
3774
  width: 40,
3829
3775
  height: 40,
3830
3776
  borderRadius: 8,
@@ -3835,22 +3781,22 @@ var Card = ({
3835
3781
  fontSize: 18,
3836
3782
  marginBottom: 14
3837
3783
  } }, icon),
3838
- /* @__PURE__ */ import_react23.default.createElement("p", { style: { fontSize: 15, fontWeight: 700, color: "#111", margin: "0 0 6px" } }, title),
3839
- /* @__PURE__ */ import_react23.default.createElement("p", { style: { fontSize: 13, color: "#666", lineHeight: 1.6, margin: "0 0 16px" } }, description),
3840
- /* @__PURE__ */ import_react23.default.createElement("div", { style: {
3784
+ /* @__PURE__ */ import_react22.default.createElement("p", { style: { fontSize: 15, fontWeight: 700, color: "#111", margin: "0 0 6px" } }, title),
3785
+ /* @__PURE__ */ import_react22.default.createElement("p", { style: { fontSize: 13, color: "#666", lineHeight: 1.6, margin: "0 0 16px" } }, description),
3786
+ /* @__PURE__ */ import_react22.default.createElement("div", { style: {
3841
3787
  display: "flex",
3842
3788
  alignItems: "center",
3843
3789
  justifyContent: "space-between",
3844
3790
  borderTop: "0.5px solid #0000001a",
3845
3791
  paddingTop: 12
3846
- } }, /* @__PURE__ */ import_react23.default.createElement("span", { style: {
3792
+ } }, /* @__PURE__ */ import_react22.default.createElement("span", { style: {
3847
3793
  fontSize: 11,
3848
3794
  fontWeight: 500,
3849
3795
  padding: "3px 9px",
3850
3796
  borderRadius: 20,
3851
3797
  background: "#E1F5EE",
3852
3798
  color: "#0F6E56"
3853
- } }, tag), /* @__PURE__ */ import_react23.default.createElement("span", { style: {
3799
+ } }, tag), /* @__PURE__ */ import_react22.default.createElement("span", { style: {
3854
3800
  fontSize: 14,
3855
3801
  color: "#999",
3856
3802
  display: "inline-block",
@@ -3861,90 +3807,36 @@ var Card = ({
3861
3807
  };
3862
3808
 
3863
3809
  // src/components/Button/Button.jsx
3864
- var import_react24 = __toESM(require("react"));
3865
- var Button = ({
3866
- text = "Click Me",
3867
- variant = "gradient",
3868
- // primary | outline | ghost | gradient
3869
- size = "md",
3870
- // sm | md | lg
3871
- icon,
3872
- loading = false,
3873
- disabled = false,
3874
- onClick
3875
- }) => {
3876
- const [hovered, setHovered] = (0, import_react24.useState)(false);
3877
- const variants = {
3878
- primary: {
3879
- background: "#2563eb",
3880
- color: "#fff",
3881
- border: "none"
3882
- },
3883
- outline: {
3884
- background: "transparent",
3885
- color: "#2563eb",
3886
- border: "1px solid #2563eb"
3887
- },
3888
- ghost: {
3889
- background: "transparent",
3890
- color: "#111",
3891
- border: "none"
3892
- },
3893
- gradient: {
3894
- background: "linear-gradient(135deg, #6366f1, #06b6d4)",
3895
- color: "#fff",
3896
- border: "none"
3897
- }
3898
- };
3899
- const sizes = {
3900
- sm: { padding: "6px 12px", fontSize: "12px" },
3901
- md: { padding: "10px 18px", fontSize: "14px" },
3902
- lg: { padding: "14px 24px", fontSize: "16px" }
3903
- };
3904
- return /* @__PURE__ */ import_react24.default.createElement(
3810
+ var import_react23 = __toESM(require("react"));
3811
+ var Button = ({ text = "Get Started", bg = "#7c3aed", color = "#fff", size = "md", disabled = false, loading = false, onClick = () => {
3812
+ } }) => {
3813
+ const sizes = { sm: "8px 16px", md: "11px 24px", lg: "14px 32px" };
3814
+ return /* @__PURE__ */ import_react23.default.createElement(
3905
3815
  "button",
3906
3816
  {
3907
3817
  onClick,
3908
3818
  disabled: disabled || loading,
3909
- onMouseEnter: () => setHovered(true),
3910
- onMouseLeave: () => setHovered(false),
3911
3819
  style: {
3912
- ...variants[variant],
3913
- ...sizes[size],
3820
+ background: bg,
3821
+ color,
3822
+ padding: sizes[size],
3914
3823
  borderRadius: "10px",
3824
+ border: "none",
3915
3825
  cursor: disabled ? "not-allowed" : "pointer",
3916
- display: "flex",
3917
- alignItems: "center",
3918
- gap: "8px",
3919
- fontWeight: 600,
3920
- fontFamily: "sans-serif",
3921
- // 🔥 Animation
3922
- transform: hovered ? "translateY(-2px) scale(1.02)" : "scale(1)",
3923
- boxShadow: hovered ? "0 10px 20px rgba(0,0,0,0.15)" : "0 2px 6px rgba(0,0,0,0.1)",
3924
- transition: "all 0.2s ease",
3826
+ fontWeight: "700",
3827
+ fontSize: "15px",
3828
+ fontFamily: "system-ui,sans-serif",
3829
+ boxShadow: "0 4px 14px rgba(124,58,237,0.4)",
3925
3830
  opacity: disabled ? 0.6 : 1,
3926
- position: "relative",
3927
- overflow: "hidden"
3831
+ transition: "opacity 0.2s"
3928
3832
  }
3929
3833
  },
3930
- /* @__PURE__ */ import_react24.default.createElement(
3931
- "span",
3932
- {
3933
- style: {
3934
- position: "absolute",
3935
- inset: 0,
3936
- background: "rgba(255,255,255,0.2)",
3937
- opacity: hovered ? 1 : 0,
3938
- transition: "opacity 0.3s"
3939
- }
3940
- }
3941
- ),
3942
- loading ? /* @__PURE__ */ import_react24.default.createElement("span", null, "Loading...") : /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, icon && /* @__PURE__ */ import_react24.default.createElement("span", null, icon), /* @__PURE__ */ import_react24.default.createElement("span", null, text))
3834
+ loading ? "Loading..." : text
3943
3835
  );
3944
3836
  };
3945
3837
 
3946
3838
  // src/components/AnimatedButton/AnimatedButton.jsx
3947
- var import_react25 = __toESM(require("react"));
3839
+ var import_react24 = __toESM(require("react"));
3948
3840
  var AnimatedButton = ({
3949
3841
  text = "Click Me!",
3950
3842
  bg = "#7c3aed",
@@ -3958,8 +3850,8 @@ var AnimatedButton = ({
3958
3850
  onClick
3959
3851
  }) => {
3960
3852
  const sizes = { sm: "8px 16px", md: "12px 24px", lg: "16px 32px" };
3961
- const [hovered, setHovered] = (0, import_react25.useState)(false);
3962
- return /* @__PURE__ */ import_react25.default.createElement(
3853
+ const [hovered, setHovered] = (0, import_react24.useState)(false);
3854
+ return /* @__PURE__ */ import_react24.default.createElement(
3963
3855
  "button",
3964
3856
  {
3965
3857
  onClick,
@@ -3988,6 +3880,123 @@ var AnimatedButton = ({
3988
3880
  text
3989
3881
  );
3990
3882
  };
3883
+
3884
+ // src/components/ECommerceCard/ECommerceCard.jsx
3885
+ var import_react25 = __toESM(require("react"));
3886
+ var ECommerceCard = ({
3887
+ title = "Wireless Headphones",
3888
+ description = "Experience immersive sound with noise cancellation.",
3889
+ price = 199.99,
3890
+ currency = "$",
3891
+ image = "https://images.unsplash.com/photo-1618366712010-f4ae9c647dc5?w=600&q=80",
3892
+ rating = 4.5,
3893
+ accent = "#6366f1",
3894
+ bg = "#0f172a",
3895
+ onAddToCart = () => {
3896
+ },
3897
+ onViewDetails = () => {
3898
+ }
3899
+ }) => {
3900
+ const [hovered, setHovered] = (0, import_react25.useState)(false);
3901
+ const alpha = (hex, op) => {
3902
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3903
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3904
+ };
3905
+ return /* @__PURE__ */ import_react25.default.createElement(
3906
+ "div",
3907
+ {
3908
+ onMouseEnter: () => setHovered(true),
3909
+ onMouseLeave: () => setHovered(false),
3910
+ style: {
3911
+ background: bg,
3912
+ borderRadius: "20px",
3913
+ overflow: "hidden",
3914
+ width: "280px",
3915
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3916
+ fontFamily: "system-ui,sans-serif",
3917
+ transition: "transform 0.25s, box-shadow 0.25s",
3918
+ transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3919
+ boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3920
+ }
3921
+ },
3922
+ /* @__PURE__ */ import_react25.default.createElement("div", { style: { position: "relative", width: "100%", height: "180px", overflow: "hidden" } }, /* @__PURE__ */ import_react25.default.createElement("img", { src: image, alt: title, style: { width: "100%", height: "100%", objectFit: "cover", transform: hovered ? "scale(1.05)" : "scale(1)", transition: "transform 0.4s ease" } }), /* @__PURE__ */ import_react25.default.createElement("div", { style: { position: "absolute", inset: 0, background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)" } }), /* @__PURE__ */ import_react25.default.createElement("div", { style: { position: "absolute", top: "12px", left: "12px", padding: "4px 10px", borderRadius: "20px", background: alpha(accent, 0.85), fontSize: "10px", fontWeight: "700", color: "#fff", textTransform: "uppercase", letterSpacing: "0.5px" } }, rating.toFixed(1), " \u2605")),
3923
+ /* @__PURE__ */ import_react25.default.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ import_react25.default.createElement("h3", { style: { fontSize: "15px", fontWeight: "700", color: "#fff", margin: "0 0 8px", lineHeight: 1.4 } }, title), /* @__PURE__ */ import_react25.default.createElement("p", { style: { fontSize: "13px", color: "rgba(255,255,255,0.45)", lineHeight: 1.65, margin: "0 0 18px" } }, description), /* @__PURE__ */ import_react25.default.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { fontSize: "24px", fontWeight: "800", color: accent } }, currency, Math.round(price)), /* @__PURE__ */ import_react25.default.createElement("div", { style: { display: "flex", gap: "8px" } }, /* @__PURE__ */ import_react25.default.createElement(
3924
+ "button",
3925
+ {
3926
+ onClick: onViewDetails,
3927
+ style: { padding: "8px 16px", borderRadius: "10px", border: "1px solid " + alpha(accent, 0.3), background: "transparent", color: accent, fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3928
+ },
3929
+ "Details"
3930
+ ), /* @__PURE__ */ import_react25.default.createElement(
3931
+ "button",
3932
+ {
3933
+ onClick: onAddToCart,
3934
+ style: { padding: "8px 16px", borderRadius: "10px", border: "none", background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")", color: "#fff", fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3935
+ },
3936
+ "Add to Cart"
3937
+ ))))
3938
+ );
3939
+ };
3940
+
3941
+ // src/components/IDCard/IDCard.jsx
3942
+ var import_react26 = __toESM(require("react"));
3943
+ var IDCard = ({
3944
+ name = "John Doe",
3945
+ role = "Software Engineer",
3946
+ company = "TechCorp",
3947
+ photo = "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=600&q=80",
3948
+ accent = "#6366f1",
3949
+ bg = "#0f172a",
3950
+ onContactClick = () => {
3951
+ }
3952
+ }) => {
3953
+ const alpha = (hex, op) => {
3954
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3955
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3956
+ };
3957
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { background: bg, borderRadius: "20px", padding: "24px", width: "300px", color: "#fff", fontFamily: "system-ui,sans-serif", boxShadow: "0 10px 40px rgba(0,0,0,0.5)", border: "1px solid " + alpha(accent, 0.25), position: "relative" } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "16px", marginBottom: "20px" } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { width: "80px", height: "80px", borderRadius: "50%", overflow: "hidden", border: "2px solid " + alpha(accent, 0.5) } }, /* @__PURE__ */ import_react26.default.createElement("img", { src: photo, alt: name, style: { width: "100%", height: "100%", objectFit: "cover" } })), /* @__PURE__ */ import_react26.default.createElement("div", null, /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontSize: "18px", fontWeight: "700", marginBottom: "4px" } }, name), /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.5)" } }, role))), /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontSize: "14px", color: "rgba(255,255,255,0.6)", marginBottom: "20px", paddingBottom: "20px", borderBottom: "1px solid " + alpha(accent, 0.1) } }, company), /* @__PURE__ */ import_react26.default.createElement("button", { onClick: onContactClick, style: { width: "100%", padding: "12px", borderRadius: "12px", border: "none", background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")", color: "#fff", fontSize: "14px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" } }, "Contact"));
3958
+ };
3959
+
3960
+ // src/components/DatePicker/DatePicker.jsx
3961
+ var import_react27 = __toESM(require("react"));
3962
+ var DatePicker = ({
3963
+ selectedDate = /* @__PURE__ */ new Date(),
3964
+ accent = "#6366f1",
3965
+ bg = "#0f172a",
3966
+ onDateChange = () => {
3967
+ }
3968
+ }) => {
3969
+ const [date, setDate] = (0, import_react27.useState)(selectedDate);
3970
+ const alpha = (hex, op) => {
3971
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3972
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3973
+ };
3974
+ const handleDateChange = (e) => {
3975
+ const newDate = new Date(e.target.value);
3976
+ setDate(newDate);
3977
+ onDateChange(newDate);
3978
+ };
3979
+ return /* @__PURE__ */ import_react27.default.createElement("div", { style: { background: bg, borderRadius: "12px", padding: "16px", width: "280px", fontFamily: "system-ui,sans-serif", boxShadow: "0 10px 40px rgba(0,0,0,0.5)", border: "1px solid rgba(255,255,255,0.07)" } }, /* @__PURE__ */ import_react27.default.createElement(
3980
+ "input",
3981
+ {
3982
+ type: "date",
3983
+ value: date.toISOString().split("T")[0],
3984
+ onChange: handleDateChange,
3985
+ style: {
3986
+ width: "100%",
3987
+ padding: "12px",
3988
+ borderRadius: "8px",
3989
+ border: "1px solid " + alpha(accent, 0.3),
3990
+ background: "transparent",
3991
+ color: "#fff",
3992
+ fontFamily: "inherit",
3993
+ fontSize: "14px",
3994
+ outline: "none",
3995
+ cursor: "pointer"
3996
+ }
3997
+ }
3998
+ ));
3999
+ };
3991
4000
  // Annotate the CommonJS export names for ESM import in node:
3992
4001
  0 && (module.exports = {
3993
4002
  AnimatedButton,
@@ -3998,9 +4007,11 @@ var AnimatedButton = ({
3998
4007
  Card,
3999
4008
  Charts,
4000
4009
  ColorPicker,
4001
- EcommerceCard,
4010
+ DatePicker,
4011
+ ECommerceCard,
4002
4012
  FileUpload,
4003
4013
  Footer,
4014
+ IDCard,
4004
4015
  ImageCard,
4005
4016
  ImageSlider,
4006
4017
  InvoiceCard,
package/dist/index.mjs CHANGED
@@ -3523,64 +3523,8 @@ var ProgressBar = ({
3523
3523
  return null;
3524
3524
  };
3525
3525
 
3526
- // src/components/EcommerceCard/EcommerceCard.jsx
3527
- import React20, { useState as useState18 } from "react";
3528
- var EcommerceCard = ({
3529
- image = "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=600&q=80",
3530
- title = "Wireless Headphones",
3531
- description = "Premium noise-cancelling headphones with 40 hours battery life.",
3532
- price = 199,
3533
- currency = "$",
3534
- accent = "#6366f1",
3535
- bg = "#0f172a",
3536
- onAddToCart = () => {
3537
- },
3538
- onViewDetails = () => {
3539
- }
3540
- }) => {
3541
- const [hovered, setHovered] = useState18(false);
3542
- const alpha = (hex, op) => {
3543
- const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3544
- return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3545
- };
3546
- return /* @__PURE__ */ React20.createElement(
3547
- "div",
3548
- {
3549
- onMouseEnter: () => setHovered(true),
3550
- onMouseLeave: () => setHovered(false),
3551
- style: {
3552
- background: bg,
3553
- borderRadius: "20px",
3554
- overflow: "hidden",
3555
- width: "300px",
3556
- border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3557
- fontFamily: "system-ui,sans-serif",
3558
- transition: "transform 0.25s, box-shadow 0.25s",
3559
- transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3560
- boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3561
- }
3562
- },
3563
- /* @__PURE__ */ React20.createElement("div", { style: { position: "relative", width: "100%", height: "200px", overflow: "hidden" } }, /* @__PURE__ */ React20.createElement("img", { src: image, alt: title, style: { width: "100%", height: "100%", objectFit: "cover", transform: hovered ? "scale(1.05)" : "scale(1)", transition: "transform 0.4s ease" } }), /* @__PURE__ */ React20.createElement("div", { style: { position: "absolute", inset: 0, background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)" } })),
3564
- /* @__PURE__ */ React20.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ React20.createElement("h3", { style: { fontSize: "15px", fontWeight: "700", color: "#fff", margin: "0 0 8px", lineHeight: 1.4 } }, title), /* @__PURE__ */ React20.createElement("p", { style: { fontSize: "13px", color: "rgba(255,255,255,0.45)", lineHeight: 1.65, margin: "0 0 18px" } }, description), /* @__PURE__ */ React20.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "18px" } }, /* @__PURE__ */ React20.createElement("span", { style: { fontSize: "24px", fontWeight: "800", color: "#fff" } }, currency, price), /* @__PURE__ */ React20.createElement(
3565
- "button",
3566
- {
3567
- onClick: onAddToCart,
3568
- style: { padding: "8px 16px", borderRadius: "12px", border: "none", background: accent, color: "#fff", fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3569
- },
3570
- "Add to Cart"
3571
- )), /* @__PURE__ */ React20.createElement(
3572
- "button",
3573
- {
3574
- onClick: onViewDetails,
3575
- style: { width: "100%", padding: "11px", borderRadius: "12px", border: "1px solid " + alpha(accent, 0.3), background: "transparent", color: accent, fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3576
- },
3577
- "View Details"
3578
- ))
3579
- );
3580
- };
3581
-
3582
3526
  // src/components/AnimatedForm/AnimatedForm.jsx
3583
- import React21, { useState as useState19 } from "react";
3527
+ import React20, { useState as useState18 } from "react";
3584
3528
  var AnimatedForm = ({
3585
3529
  title = "Contact Us",
3586
3530
  description = "We'll get back to you shortly",
@@ -3590,15 +3534,15 @@ var AnimatedForm = ({
3590
3534
  onSubmit = () => {
3591
3535
  }
3592
3536
  }) => {
3593
- const [name, setName] = useState19("");
3594
- const [email, setEmail] = useState19("");
3595
- const [message, setMessage] = useState19("");
3596
- const [hovered, setHovered] = useState19(false);
3537
+ const [name, setName] = useState18("");
3538
+ const [email, setEmail] = useState18("");
3539
+ const [message, setMessage] = useState18("");
3540
+ const [hovered, setHovered] = useState18(false);
3597
3541
  const alpha = (hex, op) => {
3598
3542
  const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3599
3543
  return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3600
3544
  };
3601
- return /* @__PURE__ */ React21.createElement(
3545
+ return /* @__PURE__ */ React20.createElement(
3602
3546
  "div",
3603
3547
  {
3604
3548
  onMouseEnter: () => setHovered(true),
@@ -3615,9 +3559,9 @@ var AnimatedForm = ({
3615
3559
  boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3616
3560
  }
3617
3561
  },
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(
3562
+ /* @__PURE__ */ React20.createElement("h2", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, title),
3563
+ /* @__PURE__ */ React20.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.45)", margin: "0 0 24px" } }, description),
3564
+ /* @__PURE__ */ React20.createElement(
3621
3565
  "input",
3622
3566
  {
3623
3567
  type: "text",
@@ -3639,7 +3583,7 @@ var AnimatedForm = ({
3639
3583
  }
3640
3584
  }
3641
3585
  ),
3642
- /* @__PURE__ */ React21.createElement(
3586
+ /* @__PURE__ */ React20.createElement(
3643
3587
  "input",
3644
3588
  {
3645
3589
  type: "email",
@@ -3661,7 +3605,7 @@ var AnimatedForm = ({
3661
3605
  }
3662
3606
  }
3663
3607
  ),
3664
- /* @__PURE__ */ React21.createElement(
3608
+ /* @__PURE__ */ React20.createElement(
3665
3609
  "textarea",
3666
3610
  {
3667
3611
  placeholder: "Your Message",
@@ -3684,7 +3628,7 @@ var AnimatedForm = ({
3684
3628
  }
3685
3629
  }
3686
3630
  ),
3687
- /* @__PURE__ */ React21.createElement(
3631
+ /* @__PURE__ */ React20.createElement(
3688
3632
  "button",
3689
3633
  {
3690
3634
  onClick: () => onSubmit({ name, email, message }),
@@ -3707,7 +3651,7 @@ var AnimatedForm = ({
3707
3651
  };
3708
3652
 
3709
3653
  // src/components/ReviewCard/ReviewCard.jsx
3710
- import React22 from "react";
3654
+ import React21 from "react";
3711
3655
  var ReviewCard = ({
3712
3656
  avatar = "https://images.unsplash.com/photo-1633332755192-727a05c4013d?w=800&q=80",
3713
3657
  name = "John Doe",
@@ -3723,11 +3667,11 @@ var ReviewCard = ({
3723
3667
  const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3724
3668
  return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3725
3669
  };
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));
3670
+ return /* @__PURE__ */ React21.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__ */ React21.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ React21.createElement("img", { src: avatar, alt: name, onClick: onProfileClick, style: { width: "40px", height: "40px", borderRadius: "50%", cursor: "pointer" } }), /* @__PURE__ */ React21.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "2px" } }, /* @__PURE__ */ React21.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ React21.createElement("div", { style: { display: "flex", alignItems: "center", gap: "4px" } }, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ React21.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__ */ React21.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__ */ React21.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "12px" } }, review), /* @__PURE__ */ React21.createElement("div", { style: { fontSize: "11px", color: "rgba(255,255,255,0.4)" } }, date));
3727
3671
  };
3728
3672
 
3729
3673
  // src/components/Card/Card.jsx
3730
- import React23, { useState as useState20 } from "react";
3674
+ import React22, { useState as useState19 } from "react";
3731
3675
  var Card = ({
3732
3676
  title = "Performance",
3733
3677
  description = "Real-time metrics with live dashboard updates every second.",
@@ -3735,8 +3679,8 @@ var Card = ({
3735
3679
  tag = "Active",
3736
3680
  onClick
3737
3681
  }) => {
3738
- const [hovered, setHovered] = useState20(false);
3739
- return /* @__PURE__ */ React23.createElement(
3682
+ const [hovered, setHovered] = useState19(false);
3683
+ return /* @__PURE__ */ React22.createElement(
3740
3684
  "div",
3741
3685
  {
3742
3686
  onMouseEnter: () => setHovered(true),
@@ -3756,7 +3700,7 @@ var Card = ({
3756
3700
  width: "260px"
3757
3701
  }
3758
3702
  },
3759
- /* @__PURE__ */ React23.createElement("div", { style: {
3703
+ /* @__PURE__ */ React22.createElement("div", { style: {
3760
3704
  position: "absolute",
3761
3705
  top: 0,
3762
3706
  left: 0,
@@ -3765,7 +3709,7 @@ var Card = ({
3765
3709
  background: "#1D9E75",
3766
3710
  borderRadius: "12px 12px 0 0"
3767
3711
  } }),
3768
- /* @__PURE__ */ React23.createElement("div", { style: {
3712
+ /* @__PURE__ */ React22.createElement("div", { style: {
3769
3713
  width: 40,
3770
3714
  height: 40,
3771
3715
  borderRadius: 8,
@@ -3776,22 +3720,22 @@ var Card = ({
3776
3720
  fontSize: 18,
3777
3721
  marginBottom: 14
3778
3722
  } }, icon),
3779
- /* @__PURE__ */ React23.createElement("p", { style: { fontSize: 15, fontWeight: 700, color: "#111", margin: "0 0 6px" } }, title),
3780
- /* @__PURE__ */ React23.createElement("p", { style: { fontSize: 13, color: "#666", lineHeight: 1.6, margin: "0 0 16px" } }, description),
3781
- /* @__PURE__ */ React23.createElement("div", { style: {
3723
+ /* @__PURE__ */ React22.createElement("p", { style: { fontSize: 15, fontWeight: 700, color: "#111", margin: "0 0 6px" } }, title),
3724
+ /* @__PURE__ */ React22.createElement("p", { style: { fontSize: 13, color: "#666", lineHeight: 1.6, margin: "0 0 16px" } }, description),
3725
+ /* @__PURE__ */ React22.createElement("div", { style: {
3782
3726
  display: "flex",
3783
3727
  alignItems: "center",
3784
3728
  justifyContent: "space-between",
3785
3729
  borderTop: "0.5px solid #0000001a",
3786
3730
  paddingTop: 12
3787
- } }, /* @__PURE__ */ React23.createElement("span", { style: {
3731
+ } }, /* @__PURE__ */ React22.createElement("span", { style: {
3788
3732
  fontSize: 11,
3789
3733
  fontWeight: 500,
3790
3734
  padding: "3px 9px",
3791
3735
  borderRadius: 20,
3792
3736
  background: "#E1F5EE",
3793
3737
  color: "#0F6E56"
3794
- } }, tag), /* @__PURE__ */ React23.createElement("span", { style: {
3738
+ } }, tag), /* @__PURE__ */ React22.createElement("span", { style: {
3795
3739
  fontSize: 14,
3796
3740
  color: "#999",
3797
3741
  display: "inline-block",
@@ -3802,90 +3746,36 @@ var Card = ({
3802
3746
  };
3803
3747
 
3804
3748
  // src/components/Button/Button.jsx
3805
- import React24, { useState as useState21 } from "react";
3806
- var Button = ({
3807
- text = "Click Me",
3808
- variant = "gradient",
3809
- // primary | outline | ghost | gradient
3810
- size = "md",
3811
- // sm | md | lg
3812
- icon,
3813
- loading = false,
3814
- disabled = false,
3815
- onClick
3816
- }) => {
3817
- const [hovered, setHovered] = useState21(false);
3818
- const variants = {
3819
- primary: {
3820
- background: "#2563eb",
3821
- color: "#fff",
3822
- border: "none"
3823
- },
3824
- outline: {
3825
- background: "transparent",
3826
- color: "#2563eb",
3827
- border: "1px solid #2563eb"
3828
- },
3829
- ghost: {
3830
- background: "transparent",
3831
- color: "#111",
3832
- border: "none"
3833
- },
3834
- gradient: {
3835
- background: "linear-gradient(135deg, #6366f1, #06b6d4)",
3836
- color: "#fff",
3837
- border: "none"
3838
- }
3839
- };
3840
- const sizes = {
3841
- sm: { padding: "6px 12px", fontSize: "12px" },
3842
- md: { padding: "10px 18px", fontSize: "14px" },
3843
- lg: { padding: "14px 24px", fontSize: "16px" }
3844
- };
3845
- return /* @__PURE__ */ React24.createElement(
3749
+ import React23 from "react";
3750
+ var Button = ({ text = "Get Started", bg = "#7c3aed", color = "#fff", size = "md", disabled = false, loading = false, onClick = () => {
3751
+ } }) => {
3752
+ const sizes = { sm: "8px 16px", md: "11px 24px", lg: "14px 32px" };
3753
+ return /* @__PURE__ */ React23.createElement(
3846
3754
  "button",
3847
3755
  {
3848
3756
  onClick,
3849
3757
  disabled: disabled || loading,
3850
- onMouseEnter: () => setHovered(true),
3851
- onMouseLeave: () => setHovered(false),
3852
3758
  style: {
3853
- ...variants[variant],
3854
- ...sizes[size],
3759
+ background: bg,
3760
+ color,
3761
+ padding: sizes[size],
3855
3762
  borderRadius: "10px",
3763
+ border: "none",
3856
3764
  cursor: disabled ? "not-allowed" : "pointer",
3857
- display: "flex",
3858
- alignItems: "center",
3859
- gap: "8px",
3860
- fontWeight: 600,
3861
- fontFamily: "sans-serif",
3862
- // 🔥 Animation
3863
- transform: hovered ? "translateY(-2px) scale(1.02)" : "scale(1)",
3864
- boxShadow: hovered ? "0 10px 20px rgba(0,0,0,0.15)" : "0 2px 6px rgba(0,0,0,0.1)",
3865
- transition: "all 0.2s ease",
3765
+ fontWeight: "700",
3766
+ fontSize: "15px",
3767
+ fontFamily: "system-ui,sans-serif",
3768
+ boxShadow: "0 4px 14px rgba(124,58,237,0.4)",
3866
3769
  opacity: disabled ? 0.6 : 1,
3867
- position: "relative",
3868
- overflow: "hidden"
3770
+ transition: "opacity 0.2s"
3869
3771
  }
3870
3772
  },
3871
- /* @__PURE__ */ React24.createElement(
3872
- "span",
3873
- {
3874
- style: {
3875
- position: "absolute",
3876
- inset: 0,
3877
- background: "rgba(255,255,255,0.2)",
3878
- opacity: hovered ? 1 : 0,
3879
- transition: "opacity 0.3s"
3880
- }
3881
- }
3882
- ),
3883
- loading ? /* @__PURE__ */ React24.createElement("span", null, "Loading...") : /* @__PURE__ */ React24.createElement(React24.Fragment, null, icon && /* @__PURE__ */ React24.createElement("span", null, icon), /* @__PURE__ */ React24.createElement("span", null, text))
3773
+ loading ? "Loading..." : text
3884
3774
  );
3885
3775
  };
3886
3776
 
3887
3777
  // src/components/AnimatedButton/AnimatedButton.jsx
3888
- import React25, { useState as useState22 } from "react";
3778
+ import React24, { useState as useState20 } from "react";
3889
3779
  var AnimatedButton = ({
3890
3780
  text = "Click Me!",
3891
3781
  bg = "#7c3aed",
@@ -3899,8 +3789,8 @@ var AnimatedButton = ({
3899
3789
  onClick
3900
3790
  }) => {
3901
3791
  const sizes = { sm: "8px 16px", md: "12px 24px", lg: "16px 32px" };
3902
- const [hovered, setHovered] = useState22(false);
3903
- return /* @__PURE__ */ React25.createElement(
3792
+ const [hovered, setHovered] = useState20(false);
3793
+ return /* @__PURE__ */ React24.createElement(
3904
3794
  "button",
3905
3795
  {
3906
3796
  onClick,
@@ -3929,6 +3819,123 @@ var AnimatedButton = ({
3929
3819
  text
3930
3820
  );
3931
3821
  };
3822
+
3823
+ // src/components/ECommerceCard/ECommerceCard.jsx
3824
+ import React25, { useState as useState21 } from "react";
3825
+ var ECommerceCard = ({
3826
+ title = "Wireless Headphones",
3827
+ description = "Experience immersive sound with noise cancellation.",
3828
+ price = 199.99,
3829
+ currency = "$",
3830
+ image = "https://images.unsplash.com/photo-1618366712010-f4ae9c647dc5?w=600&q=80",
3831
+ rating = 4.5,
3832
+ accent = "#6366f1",
3833
+ bg = "#0f172a",
3834
+ onAddToCart = () => {
3835
+ },
3836
+ onViewDetails = () => {
3837
+ }
3838
+ }) => {
3839
+ const [hovered, setHovered] = useState21(false);
3840
+ const alpha = (hex, op) => {
3841
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3842
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3843
+ };
3844
+ return /* @__PURE__ */ React25.createElement(
3845
+ "div",
3846
+ {
3847
+ onMouseEnter: () => setHovered(true),
3848
+ onMouseLeave: () => setHovered(false),
3849
+ style: {
3850
+ background: bg,
3851
+ borderRadius: "20px",
3852
+ overflow: "hidden",
3853
+ width: "280px",
3854
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"),
3855
+ fontFamily: "system-ui,sans-serif",
3856
+ transition: "transform 0.25s, box-shadow 0.25s",
3857
+ transform: hovered ? "translateY(-4px)" : "translateY(0px)",
3858
+ boxShadow: hovered ? "0 16px 40px rgba(0,0,0,0.5)" : "0 4px 20px rgba(0,0,0,0.3)"
3859
+ }
3860
+ },
3861
+ /* @__PURE__ */ React25.createElement("div", { style: { position: "relative", width: "100%", height: "180px", overflow: "hidden" } }, /* @__PURE__ */ React25.createElement("img", { src: image, alt: title, style: { width: "100%", height: "100%", objectFit: "cover", transform: hovered ? "scale(1.05)" : "scale(1)", transition: "transform 0.4s ease" } }), /* @__PURE__ */ React25.createElement("div", { style: { position: "absolute", inset: 0, background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)" } }), /* @__PURE__ */ React25.createElement("div", { style: { position: "absolute", top: "12px", left: "12px", padding: "4px 10px", borderRadius: "20px", background: alpha(accent, 0.85), fontSize: "10px", fontWeight: "700", color: "#fff", textTransform: "uppercase", letterSpacing: "0.5px" } }, rating.toFixed(1), " \u2605")),
3862
+ /* @__PURE__ */ React25.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ React25.createElement("h3", { style: { fontSize: "15px", fontWeight: "700", color: "#fff", margin: "0 0 8px", lineHeight: 1.4 } }, title), /* @__PURE__ */ React25.createElement("p", { style: { fontSize: "13px", color: "rgba(255,255,255,0.45)", lineHeight: 1.65, margin: "0 0 18px" } }, description), /* @__PURE__ */ React25.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" } }, /* @__PURE__ */ React25.createElement("div", { style: { fontSize: "24px", fontWeight: "800", color: accent } }, currency, Math.round(price)), /* @__PURE__ */ React25.createElement("div", { style: { display: "flex", gap: "8px" } }, /* @__PURE__ */ React25.createElement(
3863
+ "button",
3864
+ {
3865
+ onClick: onViewDetails,
3866
+ style: { padding: "8px 16px", borderRadius: "10px", border: "1px solid " + alpha(accent, 0.3), background: "transparent", color: accent, fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3867
+ },
3868
+ "Details"
3869
+ ), /* @__PURE__ */ React25.createElement(
3870
+ "button",
3871
+ {
3872
+ onClick: onAddToCart,
3873
+ style: { padding: "8px 16px", borderRadius: "10px", border: "none", background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")", color: "#fff", fontSize: "13px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" }
3874
+ },
3875
+ "Add to Cart"
3876
+ ))))
3877
+ );
3878
+ };
3879
+
3880
+ // src/components/IDCard/IDCard.jsx
3881
+ import React26 from "react";
3882
+ var IDCard = ({
3883
+ name = "John Doe",
3884
+ role = "Software Engineer",
3885
+ company = "TechCorp",
3886
+ photo = "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=600&q=80",
3887
+ accent = "#6366f1",
3888
+ bg = "#0f172a",
3889
+ onContactClick = () => {
3890
+ }
3891
+ }) => {
3892
+ const alpha = (hex, op) => {
3893
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3894
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3895
+ };
3896
+ return /* @__PURE__ */ React26.createElement("div", { style: { background: bg, borderRadius: "20px", padding: "24px", width: "300px", color: "#fff", fontFamily: "system-ui,sans-serif", boxShadow: "0 10px 40px rgba(0,0,0,0.5)", border: "1px solid " + alpha(accent, 0.25), position: "relative" } }, /* @__PURE__ */ React26.createElement("div", { style: { display: "flex", alignItems: "center", gap: "16px", marginBottom: "20px" } }, /* @__PURE__ */ React26.createElement("div", { style: { width: "80px", height: "80px", borderRadius: "50%", overflow: "hidden", border: "2px solid " + alpha(accent, 0.5) } }, /* @__PURE__ */ React26.createElement("img", { src: photo, alt: name, style: { width: "100%", height: "100%", objectFit: "cover" } })), /* @__PURE__ */ React26.createElement("div", null, /* @__PURE__ */ React26.createElement("div", { style: { fontSize: "18px", fontWeight: "700", marginBottom: "4px" } }, name), /* @__PURE__ */ React26.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.5)" } }, role))), /* @__PURE__ */ React26.createElement("div", { style: { fontSize: "14px", color: "rgba(255,255,255,0.6)", marginBottom: "20px", paddingBottom: "20px", borderBottom: "1px solid " + alpha(accent, 0.1) } }, company), /* @__PURE__ */ React26.createElement("button", { onClick: onContactClick, style: { width: "100%", padding: "12px", borderRadius: "12px", border: "none", background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")", color: "#fff", fontSize: "14px", fontWeight: "700", cursor: "pointer", fontFamily: "inherit" } }, "Contact"));
3897
+ };
3898
+
3899
+ // src/components/DatePicker/DatePicker.jsx
3900
+ import React27, { useState as useState22 } from "react";
3901
+ var DatePicker = ({
3902
+ selectedDate = /* @__PURE__ */ new Date(),
3903
+ accent = "#6366f1",
3904
+ bg = "#0f172a",
3905
+ onDateChange = () => {
3906
+ }
3907
+ }) => {
3908
+ const [date, setDate] = useState22(selectedDate);
3909
+ const alpha = (hex, op) => {
3910
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
3911
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
3912
+ };
3913
+ const handleDateChange = (e) => {
3914
+ const newDate = new Date(e.target.value);
3915
+ setDate(newDate);
3916
+ onDateChange(newDate);
3917
+ };
3918
+ return /* @__PURE__ */ React27.createElement("div", { style: { background: bg, borderRadius: "12px", padding: "16px", width: "280px", fontFamily: "system-ui,sans-serif", boxShadow: "0 10px 40px rgba(0,0,0,0.5)", border: "1px solid rgba(255,255,255,0.07)" } }, /* @__PURE__ */ React27.createElement(
3919
+ "input",
3920
+ {
3921
+ type: "date",
3922
+ value: date.toISOString().split("T")[0],
3923
+ onChange: handleDateChange,
3924
+ style: {
3925
+ width: "100%",
3926
+ padding: "12px",
3927
+ borderRadius: "8px",
3928
+ border: "1px solid " + alpha(accent, 0.3),
3929
+ background: "transparent",
3930
+ color: "#fff",
3931
+ fontFamily: "inherit",
3932
+ fontSize: "14px",
3933
+ outline: "none",
3934
+ cursor: "pointer"
3935
+ }
3936
+ }
3937
+ ));
3938
+ };
3932
3939
  export {
3933
3940
  AnimatedButton,
3934
3941
  AnimatedForm,
@@ -3938,9 +3945,11 @@ export {
3938
3945
  Card,
3939
3946
  Charts,
3940
3947
  ColorPicker,
3941
- EcommerceCard,
3948
+ DatePicker,
3949
+ ECommerceCard,
3942
3950
  FileUpload,
3943
3951
  Footer,
3952
+ IDCard,
3944
3953
  ImageCard,
3945
3954
  ImageSlider,
3946
3955
  InvoiceCard,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-ui-project-lib",
3
- "version": "1.0.0",
3
+ "version": "1.0.4",
4
4
  "description": "Virtual UI React Component Library",
5
5
  "author": "Rahul Kumar",
6
6
  "license": "ISC",