virtual-ui-lib 1.0.63 → 1.0.64

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
@@ -37,6 +37,7 @@ __export(index_exports, {
37
37
  DividerLine: () => DividerLine,
38
38
  FileUpload: () => FileUpload,
39
39
  Footer: () => Footer,
40
+ ImageCard: () => ImageCard,
40
41
  Loader: () => Loader,
41
42
  LoadingSpinner: () => LoadingSpinner,
42
43
  Navbar: () => Navbar,
@@ -1945,6 +1946,110 @@ var Charts = ({
1945
1946
  textTransform: "capitalize"
1946
1947
  } }, type)), renderChart());
1947
1948
  };
1949
+
1950
+ // src/components/ImageCard/ImageCard.jsx
1951
+ var import_react24 = __toESM(require("react"));
1952
+ var ImageCard = ({
1953
+ image = "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=600&q=80",
1954
+ tag = "Travel",
1955
+ title = "Discover the Hidden Peaks of the Himalayas",
1956
+ description = "A breathtaking journey through untouched landscapes, ancient monasteries, and snow-capped summits that few have ever seen.",
1957
+ buttonText = "Read More",
1958
+ accent = "#6366f1",
1959
+ bg = "#0f172a",
1960
+ radius = "20px",
1961
+ onButtonClick = () => {
1962
+ }
1963
+ }) => {
1964
+ const [hovered, setHovered] = (0, import_react24.useState)(false);
1965
+ const alpha = (hex, op) => {
1966
+ const r = parseInt(hex.slice(1, 3), 16);
1967
+ const g = parseInt(hex.slice(3, 5), 16);
1968
+ const b = parseInt(hex.slice(5, 7), 16);
1969
+ return `rgba(${r},${g},${b},${op})`;
1970
+ };
1971
+ return /* @__PURE__ */ import_react24.default.createElement(
1972
+ "div",
1973
+ {
1974
+ onMouseEnter: () => setHovered(true),
1975
+ onMouseLeave: () => setHovered(false),
1976
+ style: {
1977
+ background: bg,
1978
+ borderRadius: radius,
1979
+ overflow: "hidden",
1980
+ width: "300px",
1981
+ border: `1px solid ${hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"}`,
1982
+ fontFamily: "system-ui, sans-serif",
1983
+ transition: "border-color 0.25s, transform 0.25s",
1984
+ transform: hovered ? "translateY(-4px)" : "none",
1985
+ boxShadow: hovered ? `0 16px 40px rgba(0,0,0,0.5)` : "0 4px 20px rgba(0,0,0,0.3)"
1986
+ }
1987
+ },
1988
+ /* @__PURE__ */ import_react24.default.createElement("div", { style: { position: "relative", width: "100%", height: "180px", overflow: "hidden" } }, /* @__PURE__ */ import_react24.default.createElement(
1989
+ "img",
1990
+ {
1991
+ src: image,
1992
+ alt: title,
1993
+ style: {
1994
+ width: "100%",
1995
+ height: "100%",
1996
+ objectFit: "cover",
1997
+ transform: hovered ? "scale(1.05)" : "scale(1)",
1998
+ transition: "transform 0.4s ease"
1999
+ }
2000
+ }
2001
+ ), /* @__PURE__ */ import_react24.default.createElement("div", { style: {
2002
+ position: "absolute",
2003
+ inset: 0,
2004
+ background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)"
2005
+ } }), tag && /* @__PURE__ */ import_react24.default.createElement("div", { style: {
2006
+ position: "absolute",
2007
+ top: "12px",
2008
+ left: "12px",
2009
+ padding: "4px 10px",
2010
+ borderRadius: "20px",
2011
+ background: alpha(accent, 0.85),
2012
+ fontSize: "10px",
2013
+ fontWeight: "700",
2014
+ color: "#fff",
2015
+ letterSpacing: "0.5px",
2016
+ textTransform: "uppercase"
2017
+ } }, tag)),
2018
+ /* @__PURE__ */ import_react24.default.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ import_react24.default.createElement("h3", { style: {
2019
+ fontSize: "15px",
2020
+ fontWeight: "700",
2021
+ color: "#fff",
2022
+ margin: "0 0 8px",
2023
+ lineHeight: 1.4
2024
+ } }, title), /* @__PURE__ */ import_react24.default.createElement("p", { style: {
2025
+ fontSize: "13px",
2026
+ color: "rgba(255,255,255,0.45)",
2027
+ lineHeight: 1.65,
2028
+ margin: "0 0 18px"
2029
+ } }, description), /* @__PURE__ */ import_react24.default.createElement(
2030
+ "button",
2031
+ {
2032
+ onClick: onButtonClick,
2033
+ style: {
2034
+ width: "100%",
2035
+ padding: "11px",
2036
+ borderRadius: "12px",
2037
+ border: "none",
2038
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.7)})`,
2039
+ color: "#fff",
2040
+ fontSize: "13px",
2041
+ fontWeight: "700",
2042
+ cursor: "pointer",
2043
+ fontFamily: "inherit",
2044
+ transition: "opacity 0.2s"
2045
+ },
2046
+ onMouseEnter: (e) => e.currentTarget.style.opacity = "0.85",
2047
+ onMouseLeave: (e) => e.currentTarget.style.opacity = "1"
2048
+ },
2049
+ buttonText
2050
+ ))
2051
+ );
2052
+ };
1948
2053
  // Annotate the CommonJS export names for ESM import in node:
1949
2054
  0 && (module.exports = {
1950
2055
  Avatar,
@@ -1955,6 +2060,7 @@ var Charts = ({
1955
2060
  DividerLine,
1956
2061
  FileUpload,
1957
2062
  Footer,
2063
+ ImageCard,
1958
2064
  Loader,
1959
2065
  LoadingSpinner,
1960
2066
  Navbar,
package/dist/index.mjs CHANGED
@@ -1888,6 +1888,110 @@ var Charts = ({
1888
1888
  textTransform: "capitalize"
1889
1889
  } }, type)), renderChart());
1890
1890
  };
1891
+
1892
+ // src/components/ImageCard/ImageCard.jsx
1893
+ import React24, { useState as useState17 } from "react";
1894
+ var ImageCard = ({
1895
+ image = "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=600&q=80",
1896
+ tag = "Travel",
1897
+ title = "Discover the Hidden Peaks of the Himalayas",
1898
+ description = "A breathtaking journey through untouched landscapes, ancient monasteries, and snow-capped summits that few have ever seen.",
1899
+ buttonText = "Read More",
1900
+ accent = "#6366f1",
1901
+ bg = "#0f172a",
1902
+ radius = "20px",
1903
+ onButtonClick = () => {
1904
+ }
1905
+ }) => {
1906
+ const [hovered, setHovered] = useState17(false);
1907
+ const alpha = (hex, op) => {
1908
+ const r = parseInt(hex.slice(1, 3), 16);
1909
+ const g = parseInt(hex.slice(3, 5), 16);
1910
+ const b = parseInt(hex.slice(5, 7), 16);
1911
+ return `rgba(${r},${g},${b},${op})`;
1912
+ };
1913
+ return /* @__PURE__ */ React24.createElement(
1914
+ "div",
1915
+ {
1916
+ onMouseEnter: () => setHovered(true),
1917
+ onMouseLeave: () => setHovered(false),
1918
+ style: {
1919
+ background: bg,
1920
+ borderRadius: radius,
1921
+ overflow: "hidden",
1922
+ width: "300px",
1923
+ border: `1px solid ${hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.07)"}`,
1924
+ fontFamily: "system-ui, sans-serif",
1925
+ transition: "border-color 0.25s, transform 0.25s",
1926
+ transform: hovered ? "translateY(-4px)" : "none",
1927
+ boxShadow: hovered ? `0 16px 40px rgba(0,0,0,0.5)` : "0 4px 20px rgba(0,0,0,0.3)"
1928
+ }
1929
+ },
1930
+ /* @__PURE__ */ React24.createElement("div", { style: { position: "relative", width: "100%", height: "180px", overflow: "hidden" } }, /* @__PURE__ */ React24.createElement(
1931
+ "img",
1932
+ {
1933
+ src: image,
1934
+ alt: title,
1935
+ style: {
1936
+ width: "100%",
1937
+ height: "100%",
1938
+ objectFit: "cover",
1939
+ transform: hovered ? "scale(1.05)" : "scale(1)",
1940
+ transition: "transform 0.4s ease"
1941
+ }
1942
+ }
1943
+ ), /* @__PURE__ */ React24.createElement("div", { style: {
1944
+ position: "absolute",
1945
+ inset: 0,
1946
+ background: "linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 60%)"
1947
+ } }), tag && /* @__PURE__ */ React24.createElement("div", { style: {
1948
+ position: "absolute",
1949
+ top: "12px",
1950
+ left: "12px",
1951
+ padding: "4px 10px",
1952
+ borderRadius: "20px",
1953
+ background: alpha(accent, 0.85),
1954
+ fontSize: "10px",
1955
+ fontWeight: "700",
1956
+ color: "#fff",
1957
+ letterSpacing: "0.5px",
1958
+ textTransform: "uppercase"
1959
+ } }, tag)),
1960
+ /* @__PURE__ */ React24.createElement("div", { style: { padding: "18px" } }, /* @__PURE__ */ React24.createElement("h3", { style: {
1961
+ fontSize: "15px",
1962
+ fontWeight: "700",
1963
+ color: "#fff",
1964
+ margin: "0 0 8px",
1965
+ lineHeight: 1.4
1966
+ } }, title), /* @__PURE__ */ React24.createElement("p", { style: {
1967
+ fontSize: "13px",
1968
+ color: "rgba(255,255,255,0.45)",
1969
+ lineHeight: 1.65,
1970
+ margin: "0 0 18px"
1971
+ } }, description), /* @__PURE__ */ React24.createElement(
1972
+ "button",
1973
+ {
1974
+ onClick: onButtonClick,
1975
+ style: {
1976
+ width: "100%",
1977
+ padding: "11px",
1978
+ borderRadius: "12px",
1979
+ border: "none",
1980
+ background: `linear-gradient(135deg, ${accent}, ${alpha(accent, 0.7)})`,
1981
+ color: "#fff",
1982
+ fontSize: "13px",
1983
+ fontWeight: "700",
1984
+ cursor: "pointer",
1985
+ fontFamily: "inherit",
1986
+ transition: "opacity 0.2s"
1987
+ },
1988
+ onMouseEnter: (e) => e.currentTarget.style.opacity = "0.85",
1989
+ onMouseLeave: (e) => e.currentTarget.style.opacity = "1"
1990
+ },
1991
+ buttonText
1992
+ ))
1993
+ );
1994
+ };
1891
1995
  export {
1892
1996
  Avatar,
1893
1997
  AvatarCard,
@@ -1897,6 +2001,7 @@ export {
1897
2001
  DividerLine,
1898
2002
  FileUpload,
1899
2003
  Footer,
2004
+ ImageCard,
1900
2005
  Loader,
1901
2006
  LoadingSpinner,
1902
2007
  Navbar,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-ui-lib",
3
- "version": "1.0.63",
3
+ "version": "1.0.64",
4
4
  "description": "Virtual UI React Component Library",
5
5
  "author": "Ankush",
6
6
  "license": "ISC",