virtual-ui-lib 1.0.27 → 1.0.29

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
  CopyButton: () => CopyButton,
36
36
  Dropdown: () => Dropdown,
37
37
  EmptyState: () => EmptyState,
38
+ Footer: () => Footer,
38
39
  FormInput: () => FormInput,
39
40
  GridLayout: () => GridLayout,
40
41
  ImageUploadPreview: () => ImageUploadPreview,
@@ -42,7 +43,8 @@ __export(index_exports, {
42
43
  Navbar: () => Navbar,
43
44
  OTPInput: () => OTPInput,
44
45
  RatingStars: () => RatingStars,
45
- UserAvatar: () => UserAvatar
46
+ UserAvatar: () => UserAvatar,
47
+ WishlistButton: () => WishlistButton
46
48
  });
47
49
  module.exports = __toCommonJS(index_exports);
48
50
 
@@ -828,6 +830,51 @@ var Navbar = ({
828
830
  margin: "15px 0"
829
831
  } }, link.name)))));
830
832
  };
833
+
834
+ // src/components/WishlistButton/WishlistButton.jsx
835
+ var import_react15 = __toESM(require("react"));
836
+ var WishlistButton = ({
837
+ isActive = false,
838
+ size = "40px",
839
+ inactiveColor = "#d1d5db",
840
+ activeColor = "#ff3e30",
841
+ onToggle
842
+ }) => {
843
+ const [active, setActive] = (0, import_react15.useState)(isActive);
844
+ const handleClick = () => {
845
+ setActive((prev) => !prev);
846
+ if (onToggle) onToggle(!active);
847
+ };
848
+ return /* @__PURE__ */ import_react15.default.createElement("div", { onClick: handleClick, style: { cursor: "pointer", width: size, height: size, display: "flex", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ import_react15.default.createElement(
849
+ "svg",
850
+ {
851
+ width: "100%",
852
+ height: "100%",
853
+ viewBox: "0 0 24 24",
854
+ fill: "none",
855
+ xmlns: "http://www.w3.org/2000/svg",
856
+ style: {
857
+ transition: "transform 0.2s",
858
+ transform: active ? "scale(1.2)" : "scale(1)",
859
+ fill: active ? activeColor : inactiveColor
860
+ }
861
+ },
862
+ /* @__PURE__ */ import_react15.default.createElement("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" })
863
+ ));
864
+ };
865
+
866
+ // src/components/Footer/Footer.jsx
867
+ var import_react16 = __toESM(require("react"));
868
+ var Footer = ({
869
+ bg = "#1e293b",
870
+ textColor = "#f1f5f9",
871
+ links = [{ text: "Home", url: "/" }, { text: "About", url: "/about" }, { text: "Services", url: "/services" }, { text: "Contact", url: "/contact" }],
872
+ brandTitle = "Company Name",
873
+ description = "Your reliable partner in success.",
874
+ socialLinks = [{ icon: "\u{1F3E0}", url: "https://facebook.com" }, { icon: "\u{1F426}", url: "https://twitter.com" }, { icon: "\u{1F4F8}", url: "https://instagram.com" }]
875
+ }) => {
876
+ return /* @__PURE__ */ import_react16.default.createElement("footer", { style: { background: bg, color: textColor, padding: "20px 40px", fontFamily: "system-ui, sans-serif" } }, /* @__PURE__ */ import_react16.default.createElement("div", { style: { display: "flex", flexDirection: "column", alignItems: "center" } }, /* @__PURE__ */ import_react16.default.createElement("h2", { style: { margin: "0 0 10px", fontSize: "24px", fontWeight: "700" } }, brandTitle), /* @__PURE__ */ import_react16.default.createElement("p", { style: { margin: "0 0 20px", fontSize: "14px", textAlign: "center" } }, description), /* @__PURE__ */ import_react16.default.createElement("nav", { style: { display: "flex", justifyContent: "center", gap: "20px", marginBottom: "20px" } }, links.map((link) => /* @__PURE__ */ import_react16.default.createElement("a", { key: link.text, href: link.url, style: { color: textColor, textDecoration: "none", fontSize: "16px", transition: "color 0.3s" }, onMouseOver: (e) => e.currentTarget.style.color = "#7c3aed", onMouseOut: (e) => e.currentTarget.style.color = textColor }, link.text))), /* @__PURE__ */ import_react16.default.createElement("div", { style: { display: "flex", gap: "20px" } }, socialLinks.map((social) => /* @__PURE__ */ import_react16.default.createElement("a", { key: social.url, href: social.url, style: { color: textColor, fontSize: "24px", textDecoration: "none", transition: "color 0.3s" }, onMouseOver: (e) => e.currentTarget.style.color = "#7c3aed", onMouseOut: (e) => e.currentTarget.style.color = textColor }, social.icon)))), /* @__PURE__ */ import_react16.default.createElement("div", { style: { marginTop: "20px", fontSize: "12px", textAlign: "center", color: "#94a3b8" } }, "\xA9 ", (/* @__PURE__ */ new Date()).getFullYear(), " ", brandTitle, ". All rights reserved."));
877
+ };
831
878
  // Annotate the CommonJS export names for ESM import in node:
832
879
  0 && (module.exports = {
833
880
  AlertBanner,
@@ -836,6 +883,7 @@ var Navbar = ({
836
883
  CopyButton,
837
884
  Dropdown,
838
885
  EmptyState,
886
+ Footer,
839
887
  FormInput,
840
888
  GridLayout,
841
889
  ImageUploadPreview,
@@ -843,5 +891,6 @@ var Navbar = ({
843
891
  Navbar,
844
892
  OTPInput,
845
893
  RatingStars,
846
- UserAvatar
894
+ UserAvatar,
895
+ WishlistButton
847
896
  });
package/dist/index.mjs CHANGED
@@ -780,6 +780,51 @@ var Navbar = ({
780
780
  margin: "15px 0"
781
781
  } }, link.name)))));
782
782
  };
783
+
784
+ // src/components/WishlistButton/WishlistButton.jsx
785
+ import React15, { useState as useState11 } from "react";
786
+ var WishlistButton = ({
787
+ isActive = false,
788
+ size = "40px",
789
+ inactiveColor = "#d1d5db",
790
+ activeColor = "#ff3e30",
791
+ onToggle
792
+ }) => {
793
+ const [active, setActive] = useState11(isActive);
794
+ const handleClick = () => {
795
+ setActive((prev) => !prev);
796
+ if (onToggle) onToggle(!active);
797
+ };
798
+ return /* @__PURE__ */ React15.createElement("div", { onClick: handleClick, style: { cursor: "pointer", width: size, height: size, display: "flex", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ React15.createElement(
799
+ "svg",
800
+ {
801
+ width: "100%",
802
+ height: "100%",
803
+ viewBox: "0 0 24 24",
804
+ fill: "none",
805
+ xmlns: "http://www.w3.org/2000/svg",
806
+ style: {
807
+ transition: "transform 0.2s",
808
+ transform: active ? "scale(1.2)" : "scale(1)",
809
+ fill: active ? activeColor : inactiveColor
810
+ }
811
+ },
812
+ /* @__PURE__ */ React15.createElement("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" })
813
+ ));
814
+ };
815
+
816
+ // src/components/Footer/Footer.jsx
817
+ import React16 from "react";
818
+ var Footer = ({
819
+ bg = "#1e293b",
820
+ textColor = "#f1f5f9",
821
+ links = [{ text: "Home", url: "/" }, { text: "About", url: "/about" }, { text: "Services", url: "/services" }, { text: "Contact", url: "/contact" }],
822
+ brandTitle = "Company Name",
823
+ description = "Your reliable partner in success.",
824
+ socialLinks = [{ icon: "\u{1F3E0}", url: "https://facebook.com" }, { icon: "\u{1F426}", url: "https://twitter.com" }, { icon: "\u{1F4F8}", url: "https://instagram.com" }]
825
+ }) => {
826
+ return /* @__PURE__ */ React16.createElement("footer", { style: { background: bg, color: textColor, padding: "20px 40px", fontFamily: "system-ui, sans-serif" } }, /* @__PURE__ */ React16.createElement("div", { style: { display: "flex", flexDirection: "column", alignItems: "center" } }, /* @__PURE__ */ React16.createElement("h2", { style: { margin: "0 0 10px", fontSize: "24px", fontWeight: "700" } }, brandTitle), /* @__PURE__ */ React16.createElement("p", { style: { margin: "0 0 20px", fontSize: "14px", textAlign: "center" } }, description), /* @__PURE__ */ React16.createElement("nav", { style: { display: "flex", justifyContent: "center", gap: "20px", marginBottom: "20px" } }, links.map((link) => /* @__PURE__ */ React16.createElement("a", { key: link.text, href: link.url, style: { color: textColor, textDecoration: "none", fontSize: "16px", transition: "color 0.3s" }, onMouseOver: (e) => e.currentTarget.style.color = "#7c3aed", onMouseOut: (e) => e.currentTarget.style.color = textColor }, link.text))), /* @__PURE__ */ React16.createElement("div", { style: { display: "flex", gap: "20px" } }, socialLinks.map((social) => /* @__PURE__ */ React16.createElement("a", { key: social.url, href: social.url, style: { color: textColor, fontSize: "24px", textDecoration: "none", transition: "color 0.3s" }, onMouseOver: (e) => e.currentTarget.style.color = "#7c3aed", onMouseOut: (e) => e.currentTarget.style.color = textColor }, social.icon)))), /* @__PURE__ */ React16.createElement("div", { style: { marginTop: "20px", fontSize: "12px", textAlign: "center", color: "#94a3b8" } }, "\xA9 ", (/* @__PURE__ */ new Date()).getFullYear(), " ", brandTitle, ". All rights reserved."));
827
+ };
783
828
  export {
784
829
  AlertBanner,
785
830
  Button,
@@ -787,6 +832,7 @@ export {
787
832
  CopyButton,
788
833
  Dropdown,
789
834
  EmptyState,
835
+ Footer,
790
836
  FormInput,
791
837
  GridLayout,
792
838
  ImageUploadPreview,
@@ -794,5 +840,6 @@ export {
794
840
  Navbar,
795
841
  OTPInput,
796
842
  RatingStars,
797
- UserAvatar
843
+ UserAvatar,
844
+ WishlistButton
798
845
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-ui-lib",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "Virtual UI React Component Library",
5
5
  "author": "Ankush",
6
6
  "license": "ISC",