omui-lib 1.0.1 → 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 +811 -405
  39. package/dist/index.mjs +43 -448
  40. package/package.json +4 -3
package/dist/index.js CHANGED
@@ -29,461 +29,867 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  // src/index.js
30
30
  var index_exports = {};
31
31
  __export(index_exports, {
32
+ AnimatedProgressBar: () => AnimatedProgressBar,
33
+ Box: () => Box,
32
34
  Button: () => Button,
33
- Card: () => Card,
34
- ProfileCard: () => ProfileCard
35
+ CommentCard: () => CommentCard,
36
+ Graph: () => Graph,
37
+ HoverCard: () => HoverCard,
38
+ Loader: () => Loader,
39
+ PricingCard: () => PricingCard,
40
+ SliderCard: () => SliderCard,
41
+ SwipeCard: () => SwipeCard,
42
+ ThumbnailCard: () => ThumbnailCard
35
43
  });
36
44
  module.exports = __toCommonJS(index_exports);
37
45
 
38
- // src/components/Button/Button.jsx
46
+ // src/components/PricingCard/PricingCard.jsx
39
47
  var import_react = __toESM(require("react"));
40
- var Button = ({
41
- text = "Button",
42
- variant = "solid",
43
- // solid | outline | ghost
44
- size = "md",
45
- // sm | md | lg
46
- palette = "primary",
47
- // primary | secondary | danger | success
48
- disabled = false,
49
- fullWidth = false,
50
- onClick = () => {
48
+ var PricingCard = ({
49
+ title = "Premium Plan",
50
+ price = 49,
51
+ currency = "$",
52
+ period = "/month",
53
+ features = ["Unlimited projects", "Priority support", "Advanced analytics", "Custom integrations"],
54
+ ctaText = "Get Started",
55
+ accent = "#6366f1",
56
+ bg = "#0f172a",
57
+ popular = true,
58
+ onCtaClick = () => {
51
59
  }
52
60
  }) => {
53
- const [isHovered, setIsHovered] = (0, import_react.useState)(false);
54
- const [isActive, setIsActive] = (0, import_react.useState)(false);
55
- const palettes = {
56
- primary: {
57
- bg: "#4CAF50",
58
- text: "#ffffff",
59
- border: "#4CAF50",
60
- hover: "#45a049",
61
- active: "#3e8e41"
62
- },
63
- secondary: {
64
- bg: "#2196F3",
65
- text: "#ffffff",
66
- border: "#2196F3",
67
- hover: "#1976d2",
68
- active: "#1565c0"
69
- },
70
- danger: {
71
- bg: "#f44336",
72
- text: "#ffffff",
73
- border: "#f44336",
74
- hover: "#d32f2f",
75
- active: "#b71c1c"
76
- },
77
- success: {
78
- bg: "#00897b",
79
- text: "#ffffff",
80
- border: "#00897b",
81
- hover: "#00695c",
82
- active: "#004d40"
83
- }
61
+ const alpha = (hex, op) => {
62
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
63
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
84
64
  };
85
- const sizes = {
86
- sm: {
87
- padding: "6px 12px",
88
- fontSize: "12px"
89
- },
90
- md: {
91
- padding: "10px 18px",
92
- fontSize: "14px"
65
+ return /* @__PURE__ */ import_react.default.createElement("div", { style: {
66
+ background: bg,
67
+ borderRadius: "20px",
68
+ padding: "32px 28px",
69
+ width: "320px",
70
+ position: "relative",
71
+ border: "1px solid " + alpha(accent, 0.2),
72
+ boxShadow: "0 15px 40px rgba(0,0,0,0.4)",
73
+ fontFamily: "system-ui, sans-serif"
74
+ } }, popular && /* @__PURE__ */ import_react.default.createElement("div", { style: {
75
+ position: "absolute",
76
+ top: "16px",
77
+ right: "16px",
78
+ background: accent,
79
+ color: "white",
80
+ fontSize: "12px",
81
+ fontWeight: "700",
82
+ padding: "4px 12px",
83
+ borderRadius: "20px",
84
+ textTransform: "uppercase"
85
+ } }, "Popular"), /* @__PURE__ */ import_react.default.createElement("h3", { style: {
86
+ fontSize: "22px",
87
+ fontWeight: "800",
88
+ color: "white",
89
+ margin: "0 0 8px"
90
+ } }, title), /* @__PURE__ */ import_react.default.createElement("p", { style: {
91
+ fontSize: "14px",
92
+ color: "rgba(255,255,255,0.6)",
93
+ margin: "0 0 24px"
94
+ } }, "Perfect for growing businesses"), /* @__PURE__ */ import_react.default.createElement("div", { style: {
95
+ display: "flex",
96
+ alignItems: "baseline",
97
+ gap: "4px",
98
+ marginBottom: "8px"
99
+ } }, /* @__PURE__ */ import_react.default.createElement("span", { style: {
100
+ fontSize: "14px",
101
+ fontWeight: "600",
102
+ color: "rgba(255,255,255,0.7)"
103
+ } }, currency), /* @__PURE__ */ import_react.default.createElement("span", { style: {
104
+ fontSize: "48px",
105
+ fontWeight: "800",
106
+ color: "white"
107
+ } }, price), /* @__PURE__ */ import_react.default.createElement("span", { style: {
108
+ fontSize: "14px",
109
+ color: "rgba(255,255,255,0.5)"
110
+ } }, period)), /* @__PURE__ */ import_react.default.createElement("div", { style: {
111
+ height: "1px",
112
+ background: "rgba(255,255,255,0.1)",
113
+ margin: "24px 0"
114
+ } }), /* @__PURE__ */ import_react.default.createElement("ul", { style: {
115
+ listStyle: "none",
116
+ padding: 0,
117
+ margin: "0 0 32px",
118
+ display: "flex",
119
+ flexDirection: "column",
120
+ gap: "12px"
121
+ } }, features.map((feature, i) => /* @__PURE__ */ import_react.default.createElement("li", { key: i, style: {
122
+ display: "flex",
123
+ alignItems: "center",
124
+ gap: "8px",
125
+ fontSize: "14px",
126
+ color: "rgba(255,255,255,0.8)"
127
+ } }, /* @__PURE__ */ import_react.default.createElement("div", { style: {
128
+ width: "20px",
129
+ height: "20px",
130
+ borderRadius: "50%",
131
+ background: alpha(accent, 0.2),
132
+ display: "flex",
133
+ alignItems: "center",
134
+ justifyContent: "center",
135
+ flexShrink: 0
136
+ } }, /* @__PURE__ */ import_react.default.createElement("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: accent, strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react.default.createElement("polyline", { points: "20 6 9 17 4 12" }))), feature))), /* @__PURE__ */ import_react.default.createElement(
137
+ "button",
138
+ {
139
+ onClick: onCtaClick,
140
+ style: {
141
+ width: "100%",
142
+ padding: "14px",
143
+ borderRadius: "12px",
144
+ border: "none",
145
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
146
+ color: "white",
147
+ fontSize: "15px",
148
+ fontWeight: "700",
149
+ cursor: "pointer",
150
+ transition: "transform 0.2s, box-shadow 0.2s"
151
+ }
93
152
  },
94
- lg: {
95
- padding: "14px 26px",
96
- fontSize: "16px"
97
- }
98
- };
99
- const selectedPalette = palettes[palette] || palettes.primary;
100
- const selectedSize = sizes[size] || sizes.md;
101
- const getVariantStyles = () => {
102
- if (variant === "outline") {
103
- return {
104
- backgroundColor: "transparent",
105
- color: selectedPalette.border,
106
- border: `2px solid ${selectedPalette.border}`
107
- };
108
- }
109
- if (variant === "ghost") {
110
- return {
111
- backgroundColor: "transparent",
112
- color: selectedPalette.border,
113
- border: "none"
114
- };
115
- }
116
- return {
117
- backgroundColor: selectedPalette.bg,
118
- color: selectedPalette.text,
119
- border: "none"
120
- };
121
- };
122
- const getStateStyles = () => {
123
- if (disabled) {
124
- return {
125
- backgroundColor: "#ccc",
126
- color: "#666",
127
- cursor: "not-allowed"
128
- };
129
- }
130
- if (isActive) {
131
- return {
132
- backgroundColor: variant === "solid" ? selectedPalette.active : "#e0e0e0",
133
- transform: "scale(0.96)"
134
- };
135
- }
136
- if (isHovered) {
137
- return {
138
- backgroundColor: variant === "solid" ? selectedPalette.hover : "#f5f5f5"
139
- };
140
- }
141
- return {};
153
+ ctaText
154
+ ));
155
+ };
156
+
157
+ // src/components/CommentCard/CommentCard.jsx
158
+ var import_react2 = __toESM(require("react"));
159
+ var CommentCard = ({
160
+ avatar = "https://i.pravatar.cc/150?img=68",
161
+ name = "John Doe",
162
+ timestamp = "2 hours ago",
163
+ comment = "This is an insightful comment that adds value to the discussion.",
164
+ accent = "#6366f1",
165
+ bg = "#0f172a",
166
+ onReplyClick = () => {
167
+ }
168
+ }) => {
169
+ const alpha = (hex, op) => {
170
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
171
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
142
172
  };
143
- const baseStyles = {
144
- display: "inline-block",
145
- width: fullWidth ? "100%" : "auto",
173
+ return /* @__PURE__ */ import_react2.default.createElement("div", { style: {
174
+ background: bg,
175
+ borderRadius: "16px",
176
+ padding: "16px",
177
+ border: "1px solid " + alpha(accent, 0.1),
178
+ fontFamily: "system-ui,sans-serif",
179
+ width: "320px"
180
+ } }, /* @__PURE__ */ import_react2.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "12px" } }, /* @__PURE__ */ import_react2.default.createElement("img", { src: avatar, alt: name, style: { width: "40px", height: "40px", borderRadius: "50%", objectFit: "cover" } }), /* @__PURE__ */ import_react2.default.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ import_react2.default.createElement("div", { style: { fontSize: "14px", fontWeight: "700", color: "#fff" } }, name), /* @__PURE__ */ import_react2.default.createElement("div", { style: { fontSize: "12px", color: "rgba(255,255,255,0.4)" } }, timestamp))), /* @__PURE__ */ import_react2.default.createElement("div", { style: { fontSize: "13px", color: "rgba(255,255,255,0.7)", lineHeight: 1.5, marginBottom: "16px" } }, comment), /* @__PURE__ */ import_react2.default.createElement("button", { onClick: onReplyClick, style: {
181
+ padding: "6px 12px",
146
182
  borderRadius: "8px",
183
+ border: "1px solid " + alpha(accent, 0.2),
184
+ background: "transparent",
185
+ color: accent,
186
+ fontSize: "12px",
147
187
  fontWeight: "600",
148
- transition: "all 0.25s ease",
149
- cursor: disabled ? "not-allowed" : "pointer",
150
- outline: "none",
151
- userSelect: "none"
152
- };
153
- const combinedStyles = {
154
- ...baseStyles,
155
- ...selectedSize,
156
- ...getVariantStyles(),
157
- ...getStateStyles()
188
+ cursor: "pointer",
189
+ fontFamily: "inherit"
190
+ } }, "Reply"));
191
+ };
192
+
193
+ // src/components/ThumbnailCard/ThumbnailCard.jsx
194
+ var import_react3 = __toESM(require("react"));
195
+ var ThumbnailCard = ({
196
+ image = "https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=600&q=80",
197
+ title = "Modern UI Design",
198
+ views = 1243,
199
+ duration = "2:45",
200
+ channel = "Design Mastery",
201
+ accent = "#6366f1",
202
+ bg = "#0f172a",
203
+ onClick = () => {
204
+ }
205
+ }) => {
206
+ const [hovered, setHovered] = (0, import_react3.useState)(false);
207
+ const alpha = (hex, op) => {
208
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
209
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
158
210
  };
159
- return /* @__PURE__ */ import_react.default.createElement(
160
- "button",
211
+ return /* @__PURE__ */ import_react3.default.createElement(
212
+ "div",
161
213
  {
162
- style: combinedStyles,
163
- disabled,
164
- onClick: (e) => !disabled && onClick(e),
165
- onMouseEnter: () => setIsHovered(true),
166
- onMouseLeave: () => {
167
- setIsHovered(false);
168
- setIsActive(false);
169
- },
170
- onMouseDown: () => setIsActive(true),
171
- onMouseUp: () => setIsActive(false)
214
+ onClick,
215
+ onMouseEnter: () => setHovered(true),
216
+ onMouseLeave: () => setHovered(false),
217
+ style: {
218
+ background: bg,
219
+ borderRadius: "12px",
220
+ overflow: "hidden",
221
+ width: "280px",
222
+ cursor: "pointer",
223
+ transition: "transform 0.2s",
224
+ transform: hovered ? "scale(1.02)" : "scale(1)",
225
+ fontFamily: "system-ui,sans-serif"
226
+ }
172
227
  },
173
- text
228
+ /* @__PURE__ */ import_react3.default.createElement("div", { style: { position: "relative", width: "100%", height: "160px" } }, /* @__PURE__ */ import_react3.default.createElement(
229
+ "img",
230
+ {
231
+ src: image,
232
+ alt: title,
233
+ style: {
234
+ width: "100%",
235
+ height: "100%",
236
+ objectFit: "cover",
237
+ transition: "transform 0.3s",
238
+ transform: hovered ? "scale(1.05)" : "scale(1)"
239
+ }
240
+ }
241
+ ), /* @__PURE__ */ import_react3.default.createElement("div", { style: {
242
+ position: "absolute",
243
+ bottom: "8px",
244
+ right: "8px",
245
+ padding: "3px 6px",
246
+ borderRadius: "4px",
247
+ background: "rgba(0,0,0,0.8)",
248
+ color: "#fff",
249
+ fontSize: "10px",
250
+ fontWeight: "600"
251
+ } }, duration)),
252
+ /* @__PURE__ */ import_react3.default.createElement("div", { style: { padding: "12px" } }, /* @__PURE__ */ import_react3.default.createElement("h3", { style: {
253
+ fontSize: "14px",
254
+ fontWeight: "700",
255
+ color: "#fff",
256
+ margin: "0 0 6px",
257
+ lineHeight: 1.4,
258
+ whiteSpace: "nowrap",
259
+ overflow: "hidden",
260
+ textOverflow: "ellipsis"
261
+ } }, title), /* @__PURE__ */ import_react3.default.createElement("p", { style: {
262
+ fontSize: "12px",
263
+ color: "rgba(255,255,255,0.5)",
264
+ margin: "0 0 4px"
265
+ } }, channel), /* @__PURE__ */ import_react3.default.createElement("p", { style: {
266
+ fontSize: "11px",
267
+ color: "rgba(255,255,255,0.35)",
268
+ margin: 0
269
+ } }, views.toLocaleString(), " views"))
174
270
  );
175
271
  };
176
272
 
177
- // src/components/Card/Card.jsx
178
- var import_react2 = __toESM(require("react"));
179
- var Card = ({
180
- title = "Card Title",
181
- description = "This is a simple card description.",
182
- image = "",
183
- variant = "elevated",
184
- // elevated | outlined | flat
273
+ // src/components/Loader/Loader.jsx
274
+ var import_react4 = __toESM(require("react"));
275
+ var Loader = ({
276
+ size = "48px",
277
+ color = "#6366f1",
278
+ bg = "rgba(255,255,255,0.1)",
279
+ speed = "1s",
280
+ thickness = "4px"
281
+ }) => {
282
+ return /* @__PURE__ */ import_react4.default.createElement("div", { style: { display: "flex", justifyContent: "center", alignItems: "center", width: "100%", height: "100%" } }, /* @__PURE__ */ import_react4.default.createElement("div", { style: {
283
+ width: size,
284
+ height: size,
285
+ borderRadius: "50%",
286
+ border: thickness + " solid " + bg,
287
+ borderTop: thickness + " solid " + color,
288
+ animation: "spin " + speed + " linear infinite",
289
+ display: "inline-block"
290
+ } }), /* @__PURE__ */ import_react4.default.createElement("style", null, "@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }"));
291
+ };
292
+
293
+ // src/components/Button/Button.jsx
294
+ var import_react5 = __toESM(require("react"));
295
+ var Button = ({
296
+ text = "Click me",
297
+ bg = "#6366f1",
298
+ color = "#ffffff",
185
299
  size = "md",
186
- // sm | md | lg
187
- palette = "primary",
188
- // primary | secondary | danger | success
189
- hoverable = true,
190
- clickable = false,
191
- fullWidth = false,
300
+ radius = "10px",
301
+ disabled = false,
302
+ loading = false,
192
303
  onClick = () => {
193
- }
304
+ },
305
+ shadow = true
194
306
  }) => {
195
- const [isHovered, setIsHovered] = (0, import_react2.useState)(false);
196
- const palettes = {
197
- primary: {
198
- bg: "#ffffff",
199
- border: "#4CAF50",
200
- title: "#333",
201
- text: "#555"
202
- },
203
- secondary: {
204
- bg: "#ffffff",
205
- border: "#2196F3",
206
- title: "#333",
207
- text: "#555"
208
- },
209
- danger: {
210
- bg: "#ffffff",
211
- border: "#f44336",
212
- title: "#333",
213
- text: "#555"
214
- },
215
- success: {
216
- bg: "#ffffff",
217
- border: "#00897b",
218
- title: "#333",
219
- text: "#555"
220
- }
221
- };
222
307
  const sizes = {
223
- sm: {
224
- padding: "10px",
225
- titleSize: "14px",
226
- textSize: "12px"
227
- },
228
- md: {
229
- padding: "16px",
230
- titleSize: "18px",
231
- textSize: "14px"
232
- },
233
- lg: {
234
- padding: "20px",
235
- titleSize: "22px",
236
- textSize: "16px"
237
- }
238
- };
239
- const selectedPalette = palettes[palette] || palettes.primary;
240
- const selectedSize = sizes[size] || sizes.md;
241
- const getVariantStyles = () => {
242
- switch (variant) {
243
- case "outlined":
244
- return {
245
- border: `2px solid ${selectedPalette.border}`,
246
- boxShadow: "none"
247
- };
248
- case "flat":
249
- return {
250
- border: "none",
251
- boxShadow: "none"
252
- };
253
- default:
254
- return {
255
- border: "none",
256
- boxShadow: "0 4px 10px rgba(0,0,0,0.15)"
257
- };
258
- }
308
+ sm: { padding: "8px 16px", fontSize: "13px" },
309
+ md: { padding: "12px 24px", fontSize: "15px" },
310
+ lg: { padding: "16px 32px", fontSize: "17px" }
259
311
  };
260
- const hoverStyles = hoverable && isHovered ? {
261
- transform: "translateY(-5px)",
262
- boxShadow: "0 8px 18px rgba(0,0,0,0.2)"
263
- } : {};
264
- const baseStyles = {
265
- width: fullWidth ? "100%" : "280px",
266
- backgroundColor: selectedPalette.bg,
267
- borderRadius: "12px",
268
- overflow: "hidden",
269
- cursor: clickable ? "pointer" : "default",
270
- transition: "all 0.3s ease"
312
+ const alpha = (hex, op) => {
313
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
314
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
271
315
  };
272
- const containerStyles = {
273
- ...baseStyles,
274
- ...getVariantStyles(),
275
- ...hoverStyles
316
+ return /* @__PURE__ */ import_react5.default.createElement(
317
+ "button",
318
+ {
319
+ onClick,
320
+ disabled: disabled || loading,
321
+ style: {
322
+ background: bg,
323
+ color,
324
+ padding: sizes[size].padding,
325
+ borderRadius: radius,
326
+ border: "none",
327
+ cursor: disabled ? "not-allowed" : "pointer",
328
+ fontWeight: "700",
329
+ fontSize: sizes[size].fontSize,
330
+ fontFamily: "system-ui, sans-serif",
331
+ boxShadow: shadow ? "0 4px 14px " + alpha(bg, 0.4) : "none",
332
+ opacity: disabled ? 0.7 : 1,
333
+ transition: "all 0.2s ease",
334
+ position: "relative",
335
+ overflow: "hidden",
336
+ transform: "translateY(0)",
337
+ "&:hover": {
338
+ transform: "translateY(-1px)"
339
+ }
340
+ }
341
+ },
342
+ loading ? /* @__PURE__ */ import_react5.default.createElement("span", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "8px" } }, /* @__PURE__ */ import_react5.default.createElement("span", { style: { width: "12px", height: "12px", borderRadius: "50%", border: "2px solid " + color, borderTopColor: "transparent", animation: "spin 0.8s linear infinite" } }), "Loading...") : text
343
+ );
344
+ };
345
+
346
+ // src/components/Graph/Graph.jsx
347
+ var import_react6 = __toESM(require("react"));
348
+ var Graph = ({
349
+ data = [25, 50, 75, 100, 75, 50, 25],
350
+ labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
351
+ width = 600,
352
+ height = 300,
353
+ bg = "#0f172a",
354
+ accent = "#6366f1",
355
+ gridColor = "rgba(255,255,255,0.05)",
356
+ textColor = "rgba(255,255,255,0.5)",
357
+ showDots = true,
358
+ showArea = true
359
+ }) => {
360
+ const canvasRef = (0, import_react6.useRef)(null);
361
+ const alpha = (hex, op) => {
362
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
363
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
276
364
  };
277
- const contentStyles = {
278
- padding: selectedSize.padding
365
+ (0, import_react6.useEffect)(() => {
366
+ const canvas = canvasRef.current;
367
+ const ctx = canvas.getContext("2d");
368
+ ctx.clearRect(0, 0, width, height);
369
+ ctx.strokeStyle = gridColor;
370
+ ctx.lineWidth = 1;
371
+ const gridLines = 5;
372
+ for (let i = 0; i <= gridLines; i++) {
373
+ const y = (height - 40) * (i / gridLines) + 20;
374
+ ctx.beginPath();
375
+ ctx.moveTo(40, y);
376
+ ctx.lineTo(width - 20, y);
377
+ ctx.stroke();
378
+ ctx.fillStyle = textColor;
379
+ ctx.font = "10px system-ui, sans-serif";
380
+ ctx.textAlign = "right";
381
+ ctx.fillText(String(100 - i * 20), 35, y + 4);
382
+ }
383
+ const step = (width - 60) / (data.length - 1);
384
+ for (let i = 0; i < data.length; i++) {
385
+ const x = 40 + i * step;
386
+ ctx.beginPath();
387
+ ctx.moveTo(x, 20);
388
+ ctx.lineTo(x, height - 20);
389
+ ctx.stroke();
390
+ ctx.fillStyle = textColor;
391
+ ctx.font = "11px system-ui, sans-serif";
392
+ ctx.textAlign = "center";
393
+ ctx.fillText(labels[i], x, height - 5);
394
+ }
395
+ const points = data.map((value, i) => {
396
+ const x = 40 + i * step;
397
+ const y = height - 20 - value / 100 * (height - 40);
398
+ return { x, y };
399
+ });
400
+ if (showArea) {
401
+ ctx.fillStyle = alpha(accent, 0.15);
402
+ ctx.beginPath();
403
+ ctx.moveTo(40, height - 20);
404
+ points.forEach((point) => ctx.lineTo(point.x, point.y));
405
+ ctx.lineTo(width - 20, height - 20);
406
+ ctx.closePath();
407
+ ctx.fill();
408
+ }
409
+ ctx.strokeStyle = accent;
410
+ ctx.lineWidth = 2;
411
+ ctx.beginPath();
412
+ ctx.moveTo(points[0].x, points[0].y);
413
+ points.slice(1).forEach((point) => ctx.lineTo(point.x, point.y));
414
+ ctx.stroke();
415
+ if (showDots) {
416
+ points.forEach((point) => {
417
+ ctx.fillStyle = accent;
418
+ ctx.beginPath();
419
+ ctx.arc(point.x, point.y, 4, 0, Math.PI * 2);
420
+ ctx.fill();
421
+ ctx.fillStyle = bg;
422
+ ctx.beginPath();
423
+ ctx.arc(point.x, point.y, 2, 0, Math.PI * 2);
424
+ ctx.fill();
425
+ });
426
+ }
427
+ }, [data, labels, width, height, bg, accent, gridColor, textColor, showDots, showArea]);
428
+ return /* @__PURE__ */ import_react6.default.createElement("div", { style: {
429
+ background: bg,
430
+ borderRadius: "16px",
431
+ padding: "20px",
432
+ width: width + "px",
433
+ border: "1px solid rgba(255,255,255,0.08)",
434
+ boxShadow: "0 10px 40px rgba(0,0,0,0.4)"
435
+ } }, /* @__PURE__ */ import_react6.default.createElement(
436
+ "canvas",
437
+ {
438
+ ref: canvasRef,
439
+ width,
440
+ height,
441
+ style: { display: "block" }
442
+ }
443
+ ));
444
+ };
445
+
446
+ // src/components/SwipeCard/SwipeCard.jsx
447
+ var import_react7 = __toESM(require("react"));
448
+ var SwipeCard = ({
449
+ title = "Swipe to Unlock",
450
+ description = "Slide the button to confirm your action",
451
+ accent = "#6366f1",
452
+ bg = "#0f172a",
453
+ onSwipeComplete = () => {
454
+ },
455
+ successText = "Success!"
456
+ }) => {
457
+ const [position, setPosition] = (0, import_react7.useState)(0);
458
+ const [isDragging, setIsDragging] = (0, import_react7.useState)(false);
459
+ const [isComplete, setIsComplete] = (0, import_react7.useState)(false);
460
+ const containerRef = (0, import_react7.useRef)(null);
461
+ const maxWidth = 300;
462
+ const threshold = maxWidth * 0.8;
463
+ const alpha = (hex, op) => {
464
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
465
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
279
466
  };
280
- const titleStyles = {
281
- fontSize: selectedSize.titleSize,
282
- fontWeight: "600",
283
- marginBottom: "8px",
284
- color: selectedPalette.title
467
+ const handleMouseDown = () => {
468
+ setIsDragging(true);
285
469
  };
286
- const textStyles = {
287
- fontSize: selectedSize.textSize,
288
- color: selectedPalette.text,
289
- lineHeight: "1.5"
470
+ const handleMouseMove = (e) => {
471
+ if (!isDragging) return;
472
+ const containerRect = containerRef.current.getBoundingClientRect();
473
+ const newPosition = e.clientX - containerRect.left;
474
+ if (newPosition >= 0 && newPosition <= maxWidth) {
475
+ setPosition(newPosition);
476
+ }
290
477
  };
291
- const imageStyles = {
292
- width: "100%",
293
- height: "160px",
294
- objectFit: "cover"
478
+ const handleMouseUp = () => {
479
+ setIsDragging(false);
480
+ if (position >= threshold) {
481
+ setPosition(maxWidth);
482
+ setIsComplete(true);
483
+ onSwipeComplete();
484
+ } else {
485
+ setPosition(0);
486
+ }
295
487
  };
296
- return /* @__PURE__ */ import_react2.default.createElement(
488
+ (0, import_react7.useEffect)(() => {
489
+ if (isDragging) {
490
+ document.addEventListener("mousemove", handleMouseMove);
491
+ document.addEventListener("mouseup", handleMouseUp);
492
+ } else {
493
+ document.removeEventListener("mousemove", handleMouseMove);
494
+ document.removeEventListener("mouseup", handleMouseUp);
495
+ }
496
+ return () => {
497
+ document.removeEventListener("mousemove", handleMouseMove);
498
+ document.removeEventListener("mouseup", handleMouseUp);
499
+ };
500
+ }, [isDragging, position]);
501
+ return /* @__PURE__ */ import_react7.default.createElement("div", { style: {
502
+ background: bg,
503
+ borderRadius: "16px",
504
+ padding: "24px",
505
+ width: "340px",
506
+ fontFamily: "system-ui,sans-serif",
507
+ boxShadow: "0 10px 40px rgba(0,0,0,0.4)",
508
+ border: "1px solid rgba(255,255,255,0.08)"
509
+ } }, /* @__PURE__ */ import_react7.default.createElement("h3", { style: {
510
+ fontSize: "18px",
511
+ fontWeight: "700",
512
+ color: "#fff",
513
+ margin: "0 0 8px"
514
+ } }, title), /* @__PURE__ */ import_react7.default.createElement("p", { style: {
515
+ fontSize: "14px",
516
+ color: "rgba(255,255,255,0.5)",
517
+ margin: "0 0 24px",
518
+ lineHeight: 1.5
519
+ } }, description), /* @__PURE__ */ import_react7.default.createElement(
297
520
  "div",
298
521
  {
299
- style: containerStyles,
300
- onMouseEnter: () => setIsHovered(true),
301
- onMouseLeave: () => setIsHovered(false),
302
- onClick: (e) => clickable && onClick(e)
522
+ ref: containerRef,
523
+ style: {
524
+ width: "100%",
525
+ height: "50px",
526
+ borderRadius: "12px",
527
+ background: "rgba(255,255,255,0.05)",
528
+ position: "relative",
529
+ overflow: "hidden"
530
+ }
303
531
  },
304
- image && /* @__PURE__ */ import_react2.default.createElement("img", { src: image, alt: "card", style: imageStyles }),
305
- /* @__PURE__ */ import_react2.default.createElement("div", { style: contentStyles }, /* @__PURE__ */ import_react2.default.createElement("div", { style: titleStyles }, title), /* @__PURE__ */ import_react2.default.createElement("div", { style: textStyles }, description))
306
- );
532
+ /* @__PURE__ */ import_react7.default.createElement(
533
+ "div",
534
+ {
535
+ style: {
536
+ position: "absolute",
537
+ left: 0,
538
+ top: 0,
539
+ width: position + "px",
540
+ height: "100%",
541
+ background: "linear-gradient(90deg, " + accent + ", " + alpha(accent, 0.7) + ")",
542
+ borderRadius: "12px",
543
+ transition: isDragging ? "none" : "width 0.3s ease"
544
+ }
545
+ }
546
+ ),
547
+ isComplete ? /* @__PURE__ */ import_react7.default.createElement("div", { style: {
548
+ position: "absolute",
549
+ top: 0,
550
+ left: 0,
551
+ right: 0,
552
+ bottom: 0,
553
+ display: "flex",
554
+ alignItems: "center",
555
+ justifyContent: "center",
556
+ color: "#fff",
557
+ fontWeight: "700",
558
+ fontSize: "14px"
559
+ } }, successText) : /* @__PURE__ */ import_react7.default.createElement(
560
+ "div",
561
+ {
562
+ onMouseDown: handleMouseDown,
563
+ style: {
564
+ position: "absolute",
565
+ left: position + "px",
566
+ top: "50%",
567
+ transform: "translate(-50%, -50%)",
568
+ width: "60px",
569
+ height: "60px",
570
+ borderRadius: "12px",
571
+ background: "#fff",
572
+ cursor: "grab",
573
+ display: "flex",
574
+ alignItems: "center",
575
+ justifyContent: "center",
576
+ boxShadow: "0 4px 12px rgba(0,0,0,0.2)",
577
+ userSelect: "none",
578
+ zIndex: 2
579
+ }
580
+ },
581
+ /* @__PURE__ */ import_react7.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: accent, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react7.default.createElement("polyline", { points: "9 18 15 12 9 6" }))
582
+ )
583
+ ));
307
584
  };
308
585
 
309
- // src/components/ProfileCard/ProfileCard.jsx
310
- var import_react3 = __toESM(require("react"));
311
- var ProfileCard = ({
312
- name = "John Doe",
313
- role = "Frontend Developer",
314
- bio = "Passionate developer who loves building clean UI components.",
315
- avatar = "https://via.placeholder.com/150",
316
- variant = "elevated",
317
- // elevated | outlined | flat
318
- size = "md",
319
- // sm | md | lg
320
- palette = "primary",
321
- // primary | secondary | danger | success
322
- clickable = false,
323
- hoverable = true,
324
- fullWidth = false,
325
- onFollow = () => {
326
- },
327
- onMessage = () => {
328
- }
329
- }) => {
330
- const [isHovered, setIsHovered] = (0, import_react3.useState)(false);
331
- const [isFollowing, setIsFollowing] = (0, import_react3.useState)(false);
332
- const palettes = {
333
- primary: {
334
- border: "#4CAF50",
335
- accent: "#4CAF50",
336
- text: "#333",
337
- subText: "#666",
338
- bg: "#ffffff"
339
- },
340
- secondary: {
341
- border: "#2196F3",
342
- accent: "#2196F3",
343
- text: "#333",
344
- subText: "#666",
345
- bg: "#ffffff"
586
+ // src/components/SliderCard/SliderCard.jsx
587
+ var import_react8 = __toESM(require("react"));
588
+ var SliderCard = ({
589
+ items = [
590
+ {
591
+ title: "Mountain Retreat",
592
+ description: "Escape to the serene mountains for a peaceful getaway.",
593
+ image: "https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?w=600&q=80",
594
+ buttonText: "Book Now"
346
595
  },
347
- danger: {
348
- border: "#f44336",
349
- accent: "#f44336",
350
- text: "#333",
351
- subText: "#666",
352
- bg: "#ffffff"
596
+ {
597
+ title: "Beach Paradise",
598
+ description: "Relax on pristine beaches with crystal clear waters.",
599
+ image: "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=600&q=80",
600
+ buttonText: "Explore"
353
601
  },
354
- success: {
355
- border: "#00897b",
356
- accent: "#00897b",
357
- text: "#333",
358
- subText: "#666",
359
- bg: "#ffffff"
602
+ {
603
+ title: "City Adventure",
604
+ description: "Experience the vibrant energy of urban landscapes.",
605
+ image: "https://images.unsplash.com/photo-1480714378408-67cf0d13bc1b?w=600&q=80",
606
+ buttonText: "Discover"
360
607
  }
608
+ ],
609
+ accent = "#6366f1",
610
+ bg = "#0f172a",
611
+ autoSlide = true,
612
+ slideInterval = 5e3,
613
+ onButtonClick = () => {
614
+ }
615
+ }) => {
616
+ const [currentIndex, setCurrentIndex] = (0, import_react8.useState)(0);
617
+ const [hovered, setHovered] = (0, import_react8.useState)(false);
618
+ const alpha = (hex, op) => {
619
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
620
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
361
621
  };
362
- const sizes = {
363
- sm: {
364
- padding: "12px",
365
- name: "14px",
366
- role: "12px",
367
- bio: "12px",
368
- avatar: "60px"
369
- },
370
- md: {
371
- padding: "16px",
372
- name: "18px",
373
- role: "14px",
374
- bio: "13px",
375
- avatar: "80px"
376
- },
377
- lg: {
378
- padding: "20px",
379
- name: "22px",
380
- role: "16px",
381
- bio: "14px",
382
- avatar: "100px"
383
- }
622
+ (0, import_react8.useEffect)(() => {
623
+ if (!autoSlide || hovered) return;
624
+ const interval = setInterval(() => {
625
+ setCurrentIndex((prev) => prev === items.length - 1 ? 0 : prev + 1);
626
+ }, slideInterval);
627
+ return () => clearInterval(interval);
628
+ }, [currentIndex, autoSlide, hovered, items.length, slideInterval]);
629
+ const goToSlide = (index) => {
630
+ setCurrentIndex(index);
384
631
  };
385
- const selectedPalette = palettes[palette] || palettes.primary;
386
- const selectedSize = sizes[size] || sizes.md;
387
- const getVariantStyles = () => {
388
- switch (variant) {
389
- case "outlined":
390
- return {
391
- border: `2px solid ${selectedPalette.border}`,
392
- boxShadow: "none"
393
- };
394
- case "flat":
395
- return {
632
+ const currentItem = items[currentIndex];
633
+ return /* @__PURE__ */ import_react8.default.createElement(
634
+ "div",
635
+ {
636
+ onMouseEnter: () => setHovered(true),
637
+ onMouseLeave: () => setHovered(false),
638
+ style: {
639
+ position: "relative",
640
+ width: "400px",
641
+ height: "500px",
642
+ borderRadius: "20px",
643
+ overflow: "hidden",
644
+ background: bg,
645
+ boxShadow: "0 10px 40px rgba(0,0,0,0.5)",
646
+ border: "1px solid rgba(255,255,255,0.08)",
647
+ fontFamily: "system-ui,sans-serif"
648
+ }
649
+ },
650
+ /* @__PURE__ */ import_react8.default.createElement("div", { style: { position: "relative", width: "100%", height: "60%" } }, /* @__PURE__ */ import_react8.default.createElement(
651
+ "img",
652
+ {
653
+ src: currentItem.image,
654
+ alt: currentItem.title,
655
+ style: {
656
+ width: "100%",
657
+ height: "100%",
658
+ objectFit: "cover",
659
+ transition: "opacity 0.5s ease",
660
+ opacity: hovered ? 0.9 : 1
661
+ }
662
+ }
663
+ ), /* @__PURE__ */ import_react8.default.createElement("div", { style: {
664
+ position: "absolute",
665
+ bottom: "20px",
666
+ left: "0",
667
+ right: "0",
668
+ display: "flex",
669
+ justifyContent: "center",
670
+ gap: "8px"
671
+ } }, items.map((_, index) => /* @__PURE__ */ import_react8.default.createElement(
672
+ "button",
673
+ {
674
+ key: index,
675
+ onClick: () => goToSlide(index),
676
+ style: {
677
+ width: "10px",
678
+ height: "10px",
679
+ borderRadius: "50%",
396
680
  border: "none",
397
- boxShadow: "none"
398
- };
399
- default:
400
- return {
681
+ cursor: "pointer",
682
+ background: currentIndex === index ? accent : "rgba(255,255,255,0.2)",
683
+ transition: "background 0.3s"
684
+ }
685
+ }
686
+ )))),
687
+ /* @__PURE__ */ import_react8.default.createElement("div", { style: { padding: "24px" } }, /* @__PURE__ */ import_react8.default.createElement("h3", { style: { fontSize: "20px", fontWeight: "700", color: "#fff", margin: "0 0 8px" } }, currentItem.title), /* @__PURE__ */ import_react8.default.createElement("p", { style: { fontSize: "14px", color: "rgba(255,255,255,0.6)", lineHeight: 1.5, margin: "0 0 20px" } }, currentItem.description), /* @__PURE__ */ import_react8.default.createElement(
688
+ "button",
689
+ {
690
+ onClick: () => onButtonClick(currentIndex),
691
+ style: {
692
+ width: "100%",
693
+ padding: "12px",
694
+ borderRadius: "10px",
401
695
  border: "none",
402
- boxShadow: "0 6px 16px rgba(0,0,0,0.15)"
403
- };
404
- }
405
- };
406
- const hoverStyles = hoverable && isHovered ? {
407
- transform: "translateY(-6px)",
408
- boxShadow: "0 10px 22px rgba(0,0,0,0.2)"
409
- } : {};
410
- const containerStyles = {
411
- width: fullWidth ? "100%" : "300px",
412
- backgroundColor: selectedPalette.bg,
413
- borderRadius: "14px",
414
- textAlign: "center",
415
- padding: selectedSize.padding,
416
- cursor: clickable ? "pointer" : "default",
417
- transition: "all 0.3s ease",
418
- ...getVariantStyles(),
419
- ...hoverStyles
420
- };
421
- const avatarStyles = {
422
- width: selectedSize.avatar,
423
- height: selectedSize.avatar,
424
- borderRadius: "50%",
425
- objectFit: "cover",
426
- marginBottom: "12px",
427
- border: `3px solid ${selectedPalette.border}`
428
- };
429
- const nameStyles = {
430
- fontSize: selectedSize.name,
431
- fontWeight: "600",
432
- color: selectedPalette.text
433
- };
434
- const roleStyles = {
435
- fontSize: selectedSize.role,
436
- color: selectedPalette.accent,
437
- marginBottom: "8px"
696
+ background: "linear-gradient(135deg, " + accent + ", " + alpha(accent, 0.7) + ")",
697
+ color: "#fff",
698
+ fontSize: "14px",
699
+ fontWeight: "700",
700
+ cursor: "pointer",
701
+ fontFamily: "inherit",
702
+ transition: "transform 0.2s",
703
+ transform: hovered ? "scale(1.02)" : "scale(1)"
704
+ }
705
+ },
706
+ currentItem.buttonText
707
+ ))
708
+ );
709
+ };
710
+
711
+ // src/components/HoverCard/HoverCard.jsx
712
+ var import_react9 = __toESM(require("react"));
713
+ var HoverCard = ({
714
+ title = "Premium Features",
715
+ description = "Unlock powerful tools to boost your productivity",
716
+ icon = "\u{1F680}",
717
+ accent = "#6366f1",
718
+ bg = "#0f172a",
719
+ width = "280px",
720
+ onHover = () => {
721
+ }
722
+ }) => {
723
+ const [hovered, setHovered] = (0, import_react9.useState)(false);
724
+ const alpha = (hex, op) => {
725
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
726
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
438
727
  };
439
- const bioStyles = {
440
- fontSize: selectedSize.bio,
441
- color: selectedPalette.subText,
442
- marginBottom: "12px",
443
- lineHeight: "1.4"
728
+ return /* @__PURE__ */ import_react9.default.createElement(
729
+ "div",
730
+ {
731
+ onMouseEnter: () => {
732
+ setHovered(true);
733
+ onHover();
734
+ },
735
+ onMouseLeave: () => setHovered(false),
736
+ style: {
737
+ background: bg,
738
+ borderRadius: "16px",
739
+ padding: "24px",
740
+ width,
741
+ border: "1px solid " + (hovered ? alpha(accent, 0.3) : "rgba(255,255,255,0.08)"),
742
+ fontFamily: "system-ui,sans-serif",
743
+ transition: "all 0.25s ease",
744
+ transform: hovered ? "translateY(-8px)" : "translateY(0)",
745
+ boxShadow: hovered ? "0 20px 50px rgba(0,0,0,0.5)" : "0 10px 30px rgba(0,0,0,0.3)",
746
+ position: "relative",
747
+ overflow: "hidden"
748
+ }
749
+ },
750
+ /* @__PURE__ */ import_react9.default.createElement("div", { style: {
751
+ position: "absolute",
752
+ top: "-50px",
753
+ right: "-50px",
754
+ width: "100px",
755
+ height: "100px",
756
+ borderRadius: "50%",
757
+ background: alpha(accent, 0.1),
758
+ filter: "blur(40px)",
759
+ transition: "all 0.4s ease",
760
+ opacity: hovered ? 1 : 0
761
+ } }),
762
+ /* @__PURE__ */ import_react9.default.createElement("div", { style: {
763
+ width: "48px",
764
+ height: "48px",
765
+ borderRadius: "12px",
766
+ background: alpha(accent, 0.15),
767
+ display: "flex",
768
+ alignItems: "center",
769
+ justifyContent: "center",
770
+ fontSize: "20px",
771
+ marginBottom: "16px",
772
+ border: "1px solid " + alpha(accent, 0.3)
773
+ } }, icon),
774
+ /* @__PURE__ */ import_react9.default.createElement("h3", { style: {
775
+ fontSize: "18px",
776
+ fontWeight: "700",
777
+ color: "#fff",
778
+ margin: "0 0 8px",
779
+ lineHeight: 1.3
780
+ } }, title),
781
+ /* @__PURE__ */ import_react9.default.createElement("p", { style: {
782
+ fontSize: "14px",
783
+ color: "rgba(255,255,255,0.6)",
784
+ lineHeight: 1.5,
785
+ margin: 0
786
+ } }, description),
787
+ /* @__PURE__ */ import_react9.default.createElement("div", { style: {
788
+ position: "absolute",
789
+ bottom: "0",
790
+ left: "0",
791
+ right: "0",
792
+ height: "3px",
793
+ background: "linear-gradient(90deg, " + accent + ", " + alpha(accent, 0.3) + ")",
794
+ transform: hovered ? "scaleX(1)" : "scaleX(0)",
795
+ transformOrigin: "left",
796
+ transition: "transform 0.4s cubic-bezier(0.65, 0, 0.35, 1)"
797
+ } })
798
+ );
799
+ };
800
+
801
+ // src/components/AnimatedProgressBar/AnimatedProgressBar.jsx
802
+ var import_react10 = __toESM(require("react"));
803
+ var AnimatedProgressBar = ({
804
+ progress = 75,
805
+ height = "12px",
806
+ width = "300px",
807
+ bg = "#1e293b",
808
+ color = "#6366f1",
809
+ showPercentage = true,
810
+ borderRadius = "20px",
811
+ animationDuration = "1s"
812
+ }) => {
813
+ const [animatedProgress, setAnimatedProgress] = (0, import_react10.useState)(0);
814
+ (0, import_react10.useEffect)(() => {
815
+ const timer = setTimeout(() => {
816
+ setAnimatedProgress(progress);
817
+ }, 100);
818
+ return () => clearTimeout(timer);
819
+ }, [progress]);
820
+ const alpha = (hex, op) => {
821
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
822
+ return "rgba(" + r + "," + g + "," + b + "," + op + ")";
444
823
  };
445
- const buttonBase = {
446
- padding: "8px 14px",
447
- margin: "4px",
448
- borderRadius: "6px",
449
- border: "none",
450
- cursor: "pointer",
824
+ return /* @__PURE__ */ import_react10.default.createElement("div", { style: { width, fontFamily: "system-ui,sans-serif" } }, /* @__PURE__ */ import_react10.default.createElement("div", { style: {
825
+ width: "100%",
826
+ height,
827
+ background: bg,
828
+ borderRadius,
829
+ overflow: "hidden",
830
+ position: "relative",
831
+ boxShadow: "inset 0 1px 3px rgba(0,0,0,0.2)"
832
+ } }, /* @__PURE__ */ import_react10.default.createElement("div", { style: {
833
+ width: animatedProgress + "%",
834
+ height: "100%",
835
+ background: "linear-gradient(90deg, " + color + ", " + alpha(color, 0.7) + ")",
836
+ borderRadius,
837
+ transition: "width " + animationDuration + " cubic-bezier(0.65, 0, 0.35, 1)",
838
+ boxShadow: "0 2px 10px " + alpha(color, 0.4)
839
+ } })), showPercentage && /* @__PURE__ */ import_react10.default.createElement("div", { style: {
840
+ display: "flex",
841
+ justifyContent: "space-between",
842
+ marginTop: "8px",
451
843
  fontSize: "12px",
452
- fontWeight: "500",
453
- transition: "0.2s"
454
- };
455
- const followBtn = {
456
- ...buttonBase,
457
- backgroundColor: isFollowing ? "#ccc" : selectedPalette.accent,
458
- color: isFollowing ? "#333" : "#fff"
459
- };
460
- const messageBtn = {
461
- ...buttonBase,
462
- backgroundColor: "transparent",
463
- border: `1px solid ${selectedPalette.accent}`,
464
- color: selectedPalette.accent
465
- };
466
- const handleFollow = () => {
467
- setIsFollowing(!isFollowing);
468
- onFollow();
469
- };
470
- return /* @__PURE__ */ import_react3.default.createElement(
844
+ color: "rgba(255,255,255,0.6)"
845
+ } }, /* @__PURE__ */ import_react10.default.createElement("span", null, "Progress"), /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontWeight: "700", color } }, animatedProgress, "%")));
846
+ };
847
+
848
+ // src/components/Box/Box.jsx
849
+ var import_react11 = __toESM(require("react"));
850
+ var Box = ({
851
+ width = "300px",
852
+ height = "200px",
853
+ bg = "#1e293b",
854
+ color = "#fff",
855
+ borderRadius = "16px",
856
+ padding = "20px",
857
+ border = "1px solid rgba(255,255,255,0.08)",
858
+ shadow = "0 10px 40px rgba(0,0,0,0.4)",
859
+ children = "Box Content"
860
+ }) => {
861
+ return /* @__PURE__ */ import_react11.default.createElement(
471
862
  "div",
472
863
  {
473
- style: containerStyles,
474
- onMouseEnter: () => setIsHovered(true),
475
- onMouseLeave: () => setIsHovered(false)
864
+ style: {
865
+ width,
866
+ height,
867
+ background: bg,
868
+ color,
869
+ borderRadius,
870
+ padding,
871
+ border,
872
+ boxShadow: shadow,
873
+ fontFamily: "system-ui, sans-serif",
874
+ display: "flex",
875
+ alignItems: "center",
876
+ justifyContent: "center"
877
+ }
476
878
  },
477
- /* @__PURE__ */ import_react3.default.createElement("img", { src: avatar, alt: "avatar", style: avatarStyles }),
478
- /* @__PURE__ */ import_react3.default.createElement("div", { style: nameStyles }, name),
479
- /* @__PURE__ */ import_react3.default.createElement("div", { style: roleStyles }, role),
480
- /* @__PURE__ */ import_react3.default.createElement("div", { style: bioStyles }, bio),
481
- /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement("button", { style: followBtn, onClick: handleFollow }, isFollowing ? "Following" : "Follow"), /* @__PURE__ */ import_react3.default.createElement("button", { style: messageBtn, onClick: onMessage }, "Message"))
879
+ children
482
880
  );
483
881
  };
484
882
  // Annotate the CommonJS export names for ESM import in node:
485
883
  0 && (module.exports = {
884
+ AnimatedProgressBar,
885
+ Box,
486
886
  Button,
487
- Card,
488
- ProfileCard
887
+ CommentCard,
888
+ Graph,
889
+ HoverCard,
890
+ Loader,
891
+ PricingCard,
892
+ SliderCard,
893
+ SwipeCard,
894
+ ThumbnailCard
489
895
  });