omui-lib 1.0.0 → 1.0.3

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.
Files changed (40) hide show
  1. package/dist/chunk-57QJO5RD.mjs +83 -0
  2. package/dist/chunk-5LA6VVEY.mjs +56 -0
  3. package/dist/chunk-EWRW432G.mjs +39 -0
  4. package/dist/chunk-FGTNFYFJ.mjs +114 -0
  5. package/dist/chunk-MQOZXOBV.mjs +93 -0
  6. package/dist/chunk-NJSJATQ6.mjs +128 -0
  7. package/dist/chunk-SJ4MEFAG.mjs +103 -0
  8. package/dist/chunk-UVOXBLXP.mjs +38 -0
  9. package/dist/chunk-VA6HDMVP.mjs +50 -0
  10. package/dist/chunk-XD6E2QQI.mjs +143 -0
  11. package/dist/chunk-XGVKPI3O.mjs +23 -0
  12. package/dist/components/AnimatedProgressBar/AnimatedProgressBar.js +83 -0
  13. package/dist/components/AnimatedProgressBar/AnimatedProgressBar.mjs +6 -0
  14. package/dist/components/Box/Box.js +71 -0
  15. package/dist/components/Box/Box.mjs +6 -0
  16. package/dist/components/Button/Button.js +89 -0
  17. package/dist/components/Button/Button.mjs +6 -0
  18. package/dist/components/CommentCard/CommentCard.js +72 -0
  19. package/dist/components/CommentCard/CommentCard.mjs +6 -0
  20. package/dist/components/Graph/Graph.js +136 -0
  21. package/dist/components/Graph/Graph.mjs +6 -0
  22. package/dist/components/HoverCard/HoverCard.js +126 -0
  23. package/dist/components/HoverCard/HoverCard.mjs +6 -0
  24. package/dist/components/Loader/Loader.js +56 -0
  25. package/dist/components/Loader/Loader.mjs +6 -0
  26. package/dist/components/PricingCard/PricingCard.js +147 -0
  27. package/dist/components/PricingCard/PricingCard.mjs +6 -0
  28. package/dist/components/SliderCard/SliderCard.js +161 -0
  29. package/dist/components/SliderCard/SliderCard.mjs +6 -0
  30. package/dist/components/SwipeCard/SwipeCard.js +176 -0
  31. package/dist/components/SwipeCard/SwipeCard.mjs +6 -0
  32. package/dist/components/ThumbnailCard/ThumbnailCard.js +116 -0
  33. package/dist/components/ThumbnailCard/ThumbnailCard.mjs +6 -0
  34. package/dist/components/ToggleButton/ToggleButton.js +100 -0
  35. package/dist/components/ToggleButton/ToggleButton.mjs +66 -0
  36. package/dist/components/Toolbox/Toolbox.js +102 -0
  37. package/dist/components/Toolbox/Toolbox.mjs +68 -0
  38. package/dist/index.js +820 -236
  39. package/dist/index.mjs +43 -271
  40. package/package.json +7 -4
@@ -0,0 +1,83 @@
1
+ // src/components/ThumbnailCard/ThumbnailCard.jsx
2
+ import React, { useState } from "react";
3
+ var ThumbnailCard = ({
4
+ image = "https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=600&q=80",
5
+ title = "Modern UI Design",
6
+ views = 1243,
7
+ duration = "2:45",
8
+ channel = "Design Mastery",
9
+ accent = "#6366f1",
10
+ bg = "#0f172a",
11
+ onClick = () => {
12
+ }
13
+ }) => {
14
+ const [hovered, setHovered] = useState(false);
15
+ const alpha = (hex, op) => {
16
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
17
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
18
+ };
19
+ return /* @__PURE__ */ React.createElement(
20
+ "div",
21
+ {
22
+ onClick,
23
+ onMouseEnter: () => setHovered(true),
24
+ onMouseLeave: () => setHovered(false),
25
+ style: {
26
+ background: bg,
27
+ borderRadius: "12px",
28
+ overflow: "hidden",
29
+ width: "280px",
30
+ cursor: "pointer",
31
+ transition: "transform 0.2s",
32
+ transform: hovered ? "scale(1.02)" : "scale(1)",
33
+ fontFamily: "system-ui,sans-serif"
34
+ }
35
+ },
36
+ /* @__PURE__ */ React.createElement("div", { style: { position: "relative", width: "100%", height: "160px" } }, /* @__PURE__ */ React.createElement(
37
+ "img",
38
+ {
39
+ src: image,
40
+ alt: title,
41
+ style: {
42
+ width: "100%",
43
+ height: "100%",
44
+ objectFit: "cover",
45
+ transition: "transform 0.3s",
46
+ transform: hovered ? "scale(1.05)" : "scale(1)"
47
+ }
48
+ }
49
+ ), /* @__PURE__ */ React.createElement("div", { style: {
50
+ position: "absolute",
51
+ bottom: "8px",
52
+ right: "8px",
53
+ padding: "3px 6px",
54
+ borderRadius: "4px",
55
+ background: "rgba(0,0,0,0.8)",
56
+ color: "#fff",
57
+ fontSize: "10px",
58
+ fontWeight: "600"
59
+ } }, duration)),
60
+ /* @__PURE__ */ React.createElement("div", { style: { padding: "12px" } }, /* @__PURE__ */ React.createElement("h3", { style: {
61
+ fontSize: "14px",
62
+ fontWeight: "700",
63
+ color: "#fff",
64
+ margin: "0 0 6px",
65
+ lineHeight: 1.4,
66
+ whiteSpace: "nowrap",
67
+ overflow: "hidden",
68
+ textOverflow: "ellipsis"
69
+ } }, title), /* @__PURE__ */ React.createElement("p", { style: {
70
+ fontSize: "12px",
71
+ color: "rgba(255,255,255,0.5)",
72
+ margin: "0 0 4px"
73
+ } }, channel), /* @__PURE__ */ React.createElement("p", { style: {
74
+ fontSize: "11px",
75
+ color: "rgba(255,255,255,0.35)",
76
+ margin: 0
77
+ } }, views.toLocaleString(), " views"))
78
+ );
79
+ };
80
+
81
+ export {
82
+ ThumbnailCard
83
+ };
@@ -0,0 +1,56 @@
1
+ // src/components/Button/Button.jsx
2
+ import React from "react";
3
+ var Button = ({
4
+ text = "Click me",
5
+ bg = "#6366f1",
6
+ color = "#ffffff",
7
+ size = "md",
8
+ radius = "10px",
9
+ disabled = false,
10
+ loading = false,
11
+ onClick = () => {
12
+ },
13
+ shadow = true
14
+ }) => {
15
+ const sizes = {
16
+ sm: { padding: "8px 16px", fontSize: "13px" },
17
+ md: { padding: "12px 24px", fontSize: "15px" },
18
+ lg: { padding: "16px 32px", fontSize: "17px" }
19
+ };
20
+ const alpha = (hex, op) => {
21
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
22
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
23
+ };
24
+ return /* @__PURE__ */ React.createElement(
25
+ "button",
26
+ {
27
+ onClick,
28
+ disabled: disabled || loading,
29
+ style: {
30
+ background: bg,
31
+ color,
32
+ padding: sizes[size].padding,
33
+ borderRadius: radius,
34
+ border: "none",
35
+ cursor: disabled ? "not-allowed" : "pointer",
36
+ fontWeight: "700",
37
+ fontSize: sizes[size].fontSize,
38
+ fontFamily: "system-ui, sans-serif",
39
+ boxShadow: shadow ? "0 4px 14px " + alpha(bg, 0.4) : "none",
40
+ opacity: disabled ? 0.7 : 1,
41
+ transition: "all 0.2s ease",
42
+ position: "relative",
43
+ overflow: "hidden",
44
+ transform: "translateY(0)",
45
+ "&:hover": {
46
+ transform: "translateY(-1px)"
47
+ }
48
+ }
49
+ },
50
+ loading ? /* @__PURE__ */ React.createElement("span", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "8px" } }, /* @__PURE__ */ React.createElement("span", { style: { width: "12px", height: "12px", borderRadius: "50%", border: "2px solid " + color, borderTopColor: "transparent", animation: "spin 0.8s linear infinite" } }), "Loading...") : text
51
+ );
52
+ };
53
+
54
+ export {
55
+ Button
56
+ };
@@ -0,0 +1,39 @@
1
+ // src/components/CommentCard/CommentCard.jsx
2
+ import React from "react";
3
+ var CommentCard = ({
4
+ avatar = "https://i.pravatar.cc/150?img=68",
5
+ name = "John Doe",
6
+ timestamp = "2 hours ago",
7
+ comment = "This is an insightful comment that adds value to the discussion.",
8
+ accent = "#6366f1",
9
+ bg = "#0f172a",
10
+ onReplyClick = () => {
11
+ }
12
+ }) => {
13
+ const alpha = (hex, op) => {
14
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
15
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
16
+ };
17
+ return /* @__PURE__ */ React.createElement("div", { style: {
18
+ background: bg,
19
+ borderRadius: "16px",
20
+ padding: "16px",
21
+ border: "1px solid " + alpha(accent, 0.1),
22
+ fontFamily: "system-ui,sans-serif",
23
+ width: "320px"
24
+ } }, /* @__PURE__ */ React.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ React.createElement("img", { src: avatar, alt: name, style: { width: "40px", height: "40px", borderRadius: "50%", objectFit: "cover" } }), /* @__PURE__ */ React.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ React.createElement("div", { style: { fontSize: "12px", color: "rgba(255,255,255,0.4)" } }, timestamp))), /* @__PURE__ */ React.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "16px" } }, comment), /* @__PURE__ */ React.createElement("button", { onClick: onReplyClick, style: {
25
+ padding: "6px 12px",
26
+ borderRadius: "8px",
27
+ border: "1px solid " + alpha(accent, 0.2),
28
+ background: "transparent",
29
+ color: accent,
30
+ fontSize: "12px",
31
+ fontWeight: "600",
32
+ cursor: "pointer",
33
+ fontFamily: "inherit"
34
+ } }, "Reply"));
35
+ };
36
+
37
+ export {
38
+ CommentCard
39
+ };
@@ -0,0 +1,114 @@
1
+ // src/components/PricingCard/PricingCard.jsx
2
+ import React from "react";
3
+ var PricingCard = ({
4
+ title = "Premium Plan",
5
+ price = 49,
6
+ currency = "$",
7
+ period = "/month",
8
+ features = ["Unlimited projects", "Priority support", "Advanced analytics", "Custom integrations"],
9
+ ctaText = "Get Started",
10
+ accent = "#6366f1",
11
+ bg = "#0f172a",
12
+ popular = true,
13
+ onCtaClick = () => {
14
+ }
15
+ }) => {
16
+ const alpha = (hex, op) => {
17
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
18
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
19
+ };
20
+ return /* @__PURE__ */ React.createElement("div", { style: {
21
+ background: bg,
22
+ borderRadius: "20px",
23
+ padding: "32px 28px",
24
+ width: "320px",
25
+ position: "relative",
26
+ border: "1px solid " + alpha(accent, 0.2),
27
+ boxShadow: "0 15px 40px rgba(0,0,0,0.4)",
28
+ fontFamily: "system-ui, sans-serif"
29
+ } }, popular && /* @__PURE__ */ React.createElement("div", { style: {
30
+ position: "absolute",
31
+ top: "16px",
32
+ right: "16px",
33
+ background: accent,
34
+ color: "white",
35
+ fontSize: "12px",
36
+ fontWeight: "700",
37
+ padding: "4px 12px",
38
+ borderRadius: "20px",
39
+ textTransform: "uppercase"
40
+ } }, "Popular"), /* @__PURE__ */ React.createElement("h3", { style: {
41
+ fontSize: "22px",
42
+ fontWeight: "800",
43
+ color: "white",
44
+ margin: "0 0 8px"
45
+ } }, title), /* @__PURE__ */ React.createElement("p", { style: {
46
+ fontSize: "14px",
47
+ color: "rgba(255,255,255,0.6)",
48
+ margin: "0 0 24px"
49
+ } }, "Perfect for growing businesses"), /* @__PURE__ */ React.createElement("div", { style: {
50
+ display: "flex",
51
+ alignItems: "baseline",
52
+ gap: "4px",
53
+ marginBottom: "8px"
54
+ } }, /* @__PURE__ */ React.createElement("span", { style: {
55
+ fontSize: "14px",
56
+ fontWeight: "600",
57
+ color: "rgba(255,255,255,0.7)"
58
+ } }, currency), /* @__PURE__ */ React.createElement("span", { style: {
59
+ fontSize: "48px",
60
+ fontWeight: "800",
61
+ color: "white"
62
+ } }, price), /* @__PURE__ */ React.createElement("span", { style: {
63
+ fontSize: "14px",
64
+ color: "rgba(255,255,255,0.5)"
65
+ } }, period)), /* @__PURE__ */ React.createElement("div", { style: {
66
+ height: "1px",
67
+ background: "rgba(255,255,255,0.1)",
68
+ margin: "24px 0"
69
+ } }), /* @__PURE__ */ React.createElement("ul", { style: {
70
+ listStyle: "none",
71
+ padding: 0,
72
+ margin: "0 0 32px",
73
+ display: "flex",
74
+ flexDirection: "column",
75
+ gap: "12px"
76
+ } }, features.map((feature, i) => /* @__PURE__ */ React.createElement("li", { key: i, style: {
77
+ display: "flex",
78
+ alignItems: "center",
79
+ gap: "8px",
80
+ fontSize: "14px",
81
+ color: "rgba(255,255,255,0.8)"
82
+ } }, /* @__PURE__ */ React.createElement("div", { style: {
83
+ width: "20px",
84
+ height: "20px",
85
+ borderRadius: "50%",
86
+ background: alpha(accent, 0.2),
87
+ display: "flex",
88
+ alignItems: "center",
89
+ justifyContent: "center",
90
+ flexShrink: 0
91
+ } }, /* @__PURE__ */ React.createElement("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: accent, strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React.createElement("polyline", { points: "20 6 9 17 4 12" }))), feature))), /* @__PURE__ */ React.createElement(
92
+ "button",
93
+ {
94
+ onClick: onCtaClick,
95
+ style: {
96
+ width: "100%",
97
+ padding: "14px",
98
+ borderRadius: "12px",
99
+ border: "none",
100
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
101
+ color: "white",
102
+ fontSize: "15px",
103
+ fontWeight: "700",
104
+ cursor: "pointer",
105
+ transition: "transform 0.2s, box-shadow 0.2s"
106
+ }
107
+ },
108
+ ctaText
109
+ ));
110
+ };
111
+
112
+ export {
113
+ PricingCard
114
+ };
@@ -0,0 +1,93 @@
1
+ // src/components/HoverCard/HoverCard.jsx
2
+ import React, { useState } from "react";
3
+ var HoverCard = ({
4
+ title = "Premium Features",
5
+ description = "Unlock powerful tools to boost your productivity",
6
+ icon = "\u{1F680}",
7
+ accent = "#6366f1",
8
+ bg = "#0f172a",
9
+ width = "280px",
10
+ onHover = () => {
11
+ }
12
+ }) => {
13
+ const [hovered, setHovered] = useState(false);
14
+ const alpha = (hex, op) => {
15
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
16
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
17
+ };
18
+ return /* @__PURE__ */ React.createElement(
19
+ "div",
20
+ {
21
+ onMouseEnter: () => {
22
+ setHovered(true);
23
+ onHover();
24
+ },
25
+ onMouseLeave: () => setHovered(false),
26
+ style: {
27
+ background: bg,
28
+ borderRadius: "16px",
29
+ padding: "24px",
30
+ width,
31
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.08)"),
32
+ fontFamily: "system-ui,sans-serif",
33
+ transition: "all 0.25s ease",
34
+ transform: hovered ? "translateY(-8px)" : "translateY(0)",
35
+ boxShadow: hovered ? "0 20px 50px rgba(0,0,0,0.5)" : "0 10px 30px rgba(0,0,0,0.3)",
36
+ position: "relative",
37
+ overflow: "hidden"
38
+ }
39
+ },
40
+ /* @__PURE__ */ React.createElement("div", { style: {
41
+ position: "absolute",
42
+ top: "-50px",
43
+ right: "-50px",
44
+ width: "100px",
45
+ height: "100px",
46
+ borderRadius: "50%",
47
+ background: alpha(accent, 0.1),
48
+ filter: "blur(40px)",
49
+ transition: "all 0.4s ease",
50
+ opacity: hovered ? 1 : 0
51
+ } }),
52
+ /* @__PURE__ */ React.createElement("div", { style: {
53
+ width: "48px",
54
+ height: "48px",
55
+ borderRadius: "12px",
56
+ background: alpha(accent, 0.15),
57
+ display: "flex",
58
+ alignItems: "center",
59
+ justifyContent: "center",
60
+ fontSize: "20px",
61
+ marginBottom: "16px",
62
+ border: "1px solid " + alpha(accent, 0.3)
63
+ } }, icon),
64
+ /* @__PURE__ */ React.createElement("h3", { style: {
65
+ fontSize: "18px",
66
+ fontWeight: "700",
67
+ color: "#fff",
68
+ margin: "0 0 8px",
69
+ lineHeight: 1.3
70
+ } }, title),
71
+ /* @__PURE__ */ React.createElement("p", { style: {
72
+ fontSize: "14px",
73
+ color: "rgba(255,255,255,0.6)",
74
+ lineHeight: 1.5,
75
+ margin: 0
76
+ } }, description),
77
+ /* @__PURE__ */ React.createElement("div", { style: {
78
+ position: "absolute",
79
+ bottom: "0",
80
+ left: "0",
81
+ right: "0",
82
+ height: "3px",
83
+ background: "linear-gradient(90deg, " + accent + ", " + alpha(accent, 0.3) + ")",
84
+ transform: hovered ? "scaleX(1)" : "scaleX(0)",
85
+ transformOrigin: "left",
86
+ transition: "transform 0.4s cubic-bezier(0.65, 0, 0.35, 1)"
87
+ } })
88
+ );
89
+ };
90
+
91
+ export {
92
+ HoverCard
93
+ };
@@ -0,0 +1,128 @@
1
+ // src/components/SliderCard/SliderCard.jsx
2
+ import React, { useState, useEffect } from "react";
3
+ var SliderCard = ({
4
+ items = [
5
+ {
6
+ title: "Mountain Retreat",
7
+ description: "Escape to the serene mountains for a peaceful getaway.",
8
+ image: "https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?w=600&q=80",
9
+ buttonText: "Book Now"
10
+ },
11
+ {
12
+ title: "Beach Paradise",
13
+ description: "Relax on pristine beaches with crystal clear waters.",
14
+ image: "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=600&q=80",
15
+ buttonText: "Explore"
16
+ },
17
+ {
18
+ title: "City Adventure",
19
+ description: "Experience the vibrant energy of urban landscapes.",
20
+ image: "https://images.unsplash.com/photo-1480714378408-67cf0d13bc1b?w=600&q=80",
21
+ buttonText: "Discover"
22
+ }
23
+ ],
24
+ accent = "#6366f1",
25
+ bg = "#0f172a",
26
+ autoSlide = true,
27
+ slideInterval = 5e3,
28
+ onButtonClick = () => {
29
+ }
30
+ }) => {
31
+ const [currentIndex, setCurrentIndex] = useState(0);
32
+ const [hovered, setHovered] = useState(false);
33
+ const alpha = (hex, op) => {
34
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
35
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
36
+ };
37
+ useEffect(() => {
38
+ if (!autoSlide || hovered) return;
39
+ const interval = setInterval(() => {
40
+ setCurrentIndex((prev) => prev === items.length - 1 ? 0 : prev + 1);
41
+ }, slideInterval);
42
+ return () => clearInterval(interval);
43
+ }, [currentIndex, autoSlide, hovered, items.length, slideInterval]);
44
+ const goToSlide = (index) => {
45
+ setCurrentIndex(index);
46
+ };
47
+ const currentItem = items[currentIndex];
48
+ return /* @__PURE__ */ React.createElement(
49
+ "div",
50
+ {
51
+ onMouseEnter: () => setHovered(true),
52
+ onMouseLeave: () => setHovered(false),
53
+ style: {
54
+ position: "relative",
55
+ width: "400px",
56
+ height: "500px",
57
+ borderRadius: "20px",
58
+ overflow: "hidden",
59
+ background: bg,
60
+ boxShadow: "0 10px 40px rgba(0,0,0,0.5)",
61
+ border: "1px solid rgba(255,255,255,0.08)",
62
+ fontFamily: "system-ui,sans-serif"
63
+ }
64
+ },
65
+ /* @__PURE__ */ React.createElement("div", { style: { position: "relative", width: "100%", height: "60%" } }, /* @__PURE__ */ React.createElement(
66
+ "img",
67
+ {
68
+ src: currentItem.image,
69
+ alt: currentItem.title,
70
+ style: {
71
+ width: "100%",
72
+ height: "100%",
73
+ objectFit: "cover",
74
+ transition: "opacity 0.5s ease",
75
+ opacity: hovered ? 0.9 : 1
76
+ }
77
+ }
78
+ ), /* @__PURE__ */ React.createElement("div", { style: {
79
+ position: "absolute",
80
+ bottom: "20px",
81
+ left: "0",
82
+ right: "0",
83
+ display: "flex",
84
+ justifyContent: "center",
85
+ gap: "8px"
86
+ } }, items.map((_, index) => /* @__PURE__ */ React.createElement(
87
+ "button",
88
+ {
89
+ key: index,
90
+ onClick: () => goToSlide(index),
91
+ style: {
92
+ width: "10px",
93
+ height: "10px",
94
+ borderRadius: "50%",
95
+ border: "none",
96
+ cursor: "pointer",
97
+ background: currentIndex === index ? accent : "rgba(255,255,255,0.2)",
98
+ transition: "background 0.3s"
99
+ }
100
+ }
101
+ )))),
102
+ /* @__PURE__ */ React.createElement("div", { style: { padding: "24px" } }, /* @__PURE__ */ React.createElement("h3", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, currentItem.title), /* @__PURE__ */ React.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.6)", lineHeight: 1.5, margin: "0 0 20px" } }, currentItem.description), /* @__PURE__ */ React.createElement(
103
+ "button",
104
+ {
105
+ onClick: () => onButtonClick(currentIndex),
106
+ style: {
107
+ width: "100%",
108
+ padding: "12px",
109
+ borderRadius: "10px",
110
+ border: "none",
111
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
112
+ color: "#fff",
113
+ fontSize: "14px",
114
+ fontWeight: "700",
115
+ cursor: "pointer",
116
+ fontFamily: "inherit",
117
+ transition: "transform 0.2s",
118
+ transform: hovered ? "scale(1.02)" : "scale(1)"
119
+ }
120
+ },
121
+ currentItem.buttonText
122
+ ))
123
+ );
124
+ };
125
+
126
+ export {
127
+ SliderCard
128
+ };
@@ -0,0 +1,103 @@
1
+ // src/components/Graph/Graph.jsx
2
+ import React, { useState, useEffect, useRef } from "react";
3
+ var Graph = ({
4
+ data = [25, 50, 75, 100, 75, 50, 25],
5
+ labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
6
+ width = 600,
7
+ height = 300,
8
+ bg = "#0f172a",
9
+ accent = "#6366f1",
10
+ gridColor = "rgba(255,255,255,0.05)",
11
+ textColor = "rgba(255,255,255,0.5)",
12
+ showDots = true,
13
+ showArea = true
14
+ }) => {
15
+ const canvasRef = useRef(null);
16
+ const alpha = (hex, op) => {
17
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
18
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
19
+ };
20
+ useEffect(() => {
21
+ const canvas = canvasRef.current;
22
+ const ctx = canvas.getContext("2d");
23
+ ctx.clearRect(0, 0, width, height);
24
+ ctx.strokeStyle = gridColor;
25
+ ctx.lineWidth = 1;
26
+ const gridLines = 5;
27
+ for (let i = 0; i <= gridLines; i++) {
28
+ const y = (height - 40) * (i / gridLines) + 20;
29
+ ctx.beginPath();
30
+ ctx.moveTo(40, y);
31
+ ctx.lineTo(width - 20, y);
32
+ ctx.stroke();
33
+ ctx.fillStyle = textColor;
34
+ ctx.font = "10px system-ui, sans-serif";
35
+ ctx.textAlign = "right";
36
+ ctx.fillText(String(100 - i * 20), 35, y + 4);
37
+ }
38
+ const step = (width - 60) / (data.length - 1);
39
+ for (let i = 0; i < data.length; i++) {
40
+ const x = 40 + i * step;
41
+ ctx.beginPath();
42
+ ctx.moveTo(x, 20);
43
+ ctx.lineTo(x, height - 20);
44
+ ctx.stroke();
45
+ ctx.fillStyle = textColor;
46
+ ctx.font = "11px system-ui, sans-serif";
47
+ ctx.textAlign = "center";
48
+ ctx.fillText(labels[i], x, height - 5);
49
+ }
50
+ const points = data.map((value, i) => {
51
+ const x = 40 + i * step;
52
+ const y = height - 20 - value / 100 * (height - 40);
53
+ return { x, y };
54
+ });
55
+ if (showArea) {
56
+ ctx.fillStyle = alpha(accent, 0.15);
57
+ ctx.beginPath();
58
+ ctx.moveTo(40, height - 20);
59
+ points.forEach((point) => ctx.lineTo(point.x, point.y));
60
+ ctx.lineTo(width - 20, height - 20);
61
+ ctx.closePath();
62
+ ctx.fill();
63
+ }
64
+ ctx.strokeStyle = accent;
65
+ ctx.lineWidth = 2;
66
+ ctx.beginPath();
67
+ ctx.moveTo(points[0].x, points[0].y);
68
+ points.slice(1).forEach((point) => ctx.lineTo(point.x, point.y));
69
+ ctx.stroke();
70
+ if (showDots) {
71
+ points.forEach((point) => {
72
+ ctx.fillStyle = accent;
73
+ ctx.beginPath();
74
+ ctx.arc(point.x, point.y, 4, 0, Math.PI * 2);
75
+ ctx.fill();
76
+ ctx.fillStyle = bg;
77
+ ctx.beginPath();
78
+ ctx.arc(point.x, point.y, 2, 0, Math.PI * 2);
79
+ ctx.fill();
80
+ });
81
+ }
82
+ }, [data, labels, width, height, bg, accent, gridColor, textColor, showDots, showArea]);
83
+ return /* @__PURE__ */ React.createElement("div", { style: {
84
+ background: bg,
85
+ borderRadius: "16px",
86
+ padding: "20px",
87
+ width: width + "px",
88
+ border: "1px solid rgba(255,255,255,0.08)",
89
+ boxShadow: "0 10px 40px rgba(0,0,0,0.4)"
90
+ } }, /* @__PURE__ */ React.createElement(
91
+ "canvas",
92
+ {
93
+ ref: canvasRef,
94
+ width,
95
+ height,
96
+ style: { display: "block" }
97
+ }
98
+ ));
99
+ };
100
+
101
+ export {
102
+ Graph
103
+ };
@@ -0,0 +1,38 @@
1
+ // src/components/Box/Box.jsx
2
+ import React from "react";
3
+ var Box = ({
4
+ width = "300px",
5
+ height = "200px",
6
+ bg = "#1e293b",
7
+ color = "#fff",
8
+ borderRadius = "16px",
9
+ padding = "20px",
10
+ border = "1px solid rgba(255,255,255,0.08)",
11
+ shadow = "0 10px 40px rgba(0,0,0,0.4)",
12
+ children = "Box Content"
13
+ }) => {
14
+ return /* @__PURE__ */ React.createElement(
15
+ "div",
16
+ {
17
+ style: {
18
+ width,
19
+ height,
20
+ background: bg,
21
+ color,
22
+ borderRadius,
23
+ padding,
24
+ border,
25
+ boxShadow: shadow,
26
+ fontFamily: "system-ui, sans-serif",
27
+ display: "flex",
28
+ alignItems: "center",
29
+ justifyContent: "center"
30
+ }
31
+ },
32
+ children
33
+ );
34
+ };
35
+
36
+ export {
37
+ Box
38
+ };