@solostylist/ui-kit 1.0.170 → 1.0.172

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 (36) hide show
  1. package/dist/s-ai-tool-bar/s-ai-tool-bar.d.ts +2 -4
  2. package/dist/s-ai-tool-bar/s-ai-tool-bar.js +253 -287
  3. package/dist/s-blur-text/s-blur-text.js +19 -20
  4. package/dist/s-breadcrumbs/s-breadcrumbs.js +2 -2
  5. package/dist/s-button-link/s-button-link.js +2 -2
  6. package/dist/s-category-card/s-category-card.js +2 -2
  7. package/dist/s-chat-input/s-chat-input.js +29 -29
  8. package/dist/s-chat-message/s-chat-message.js +73 -151
  9. package/dist/s-comment-message/s-comment-message.js +9 -9
  10. package/dist/s-countdown/s-count-box.js +2 -2
  11. package/dist/s-countdown/s-count-down.js +2 -2
  12. package/dist/s-error-layout/s-error-layout.js +2 -2
  13. package/dist/s-gallery/s-gallery.js +106 -119
  14. package/dist/s-glow-button/s-glow-button.d.ts +7 -1
  15. package/dist/s-glow-button/s-glow-button.js +39 -189
  16. package/dist/s-gradient-icon/s-gradient-icon.js +2 -2
  17. package/dist/s-moving-border/s-moving-border.d.ts +1 -1
  18. package/dist/s-moving-border/s-moving-border.js +34 -34
  19. package/dist/s-review/s-review.js +28 -28
  20. package/dist/s-scroll-reveal/s-scroll-reveal.js +2 -2
  21. package/dist/s-skeleton/s-skeleton.js +2 -2
  22. package/dist/s-stripe/s-stripe.js +2 -2
  23. package/dist/s-text-shimmer/s-text-shimmer.d.ts +2 -2
  24. package/dist/s-text-shimmer/s-text-shimmer.js +13 -13
  25. package/dist/s-text-truncation/s-text-truncation.js +1 -1
  26. package/dist/s-theme-demo/s-theme-demo.js +105 -142
  27. package/dist/s-theme-provider/s-theme-provider.js +2 -2
  28. package/dist/s-theme-switch/s-theme-switch.js +1 -1
  29. package/dist/s-two-pane-layout/index.js +1 -1
  30. package/dist/s-two-pane-layout/s-two-pane-layout.js +2 -2
  31. package/dist/s-typewriter-text/s-typewriter-text.js +8 -8
  32. package/dist/s-zoom-image/index.js +1 -1
  33. package/dist/s-zoom-image/s-zoom-image.js +2 -2
  34. package/dist/theme/theme-primitives.d.ts +6 -0
  35. package/dist/theme/theme-primitives.js +51 -45
  36. package/package.json +1 -1
@@ -1,194 +1,44 @@
1
- import { j as i } from "../jsx-runtime-OVHDjVDe.js";
2
- import { useRef as x } from "react";
3
- import { useColorScheme as g, useTheme as b, Button as h, alpha as e, Box as o } from "@mui/material";
4
- import { SMovingBorder as u } from "../s-moving-border/s-moving-border.js";
5
- const n = ({
6
- borderRadius: r = 12,
7
- children: p,
8
- duration: l = 6e3,
9
- ...m
10
- }) => {
11
- const s = x(null), { mode: a } = g(), t = b(), c = a === "light" ? (t.vars || t).palette.primary.main : (t.vars || t).palette.primary.light, d = a === "light" ? 90 : 110;
12
- return /* @__PURE__ */ i.jsx(
13
- u,
14
- {
15
- duration: l,
16
- borderRadius: r,
17
- height: 60,
18
- glowSize: d,
19
- glowColor: c,
20
- children: /* @__PURE__ */ i.jsx(
21
- h,
22
- {
23
- variant: "text",
24
- sx: {
25
- height: "100%",
26
- borderRadius: r,
27
- position: "relative",
28
- overflow: "hidden",
29
- background: a === "light" ? `linear-gradient(0deg, ${(t.vars || t).palette.background.paper}, ${(t.vars || t).palette.background.paper}),
30
- linear-gradient(45deg, ${e(t.palette.primary.main, 0.04)} 0%, transparent 60%)` : `linear-gradient(0deg, ${(t.vars || t).palette.background.default}, ${(t.vars || t).palette.background.default}),
31
- linear-gradient(45deg, ${e(t.palette.primary.light, 0.06)} 0%, transparent 60%)`,
32
- border: `1px solid ${a === "light" ? e(t.palette.divider, 0.25) : e(t.palette.divider, 0.4)}`,
33
- "&::before": {
34
- content: '""',
35
- position: "absolute",
36
- top: 0,
37
- left: 0,
38
- right: 0,
39
- height: "1px",
40
- background: a === "light" ? `linear-gradient(90deg, transparent, ${e(t.palette.common.white, 0.6)}, transparent)` : `linear-gradient(90deg, transparent, ${e(t.palette.common.white, 0.2)}, transparent)`,
41
- borderRadius: `${r}px ${r}px 0 0`
42
- },
43
- "&::after": {
44
- content: '""',
45
- position: "absolute",
46
- inset: "1px",
47
- borderRadius: `${Number(r) - 1}px`,
48
- background: a === "light" ? `linear-gradient(180deg, ${e(t.palette.common.white, 0.1)} 0%, transparent 50%)` : `linear-gradient(180deg, ${e(t.palette.common.white, 0.05)} 0%, transparent 50%)`,
49
- pointerEvents: "none"
50
- },
51
- boxShadow: a === "light" ? `0 1px 3px ${e(t.palette.common.black, 0.08)},
52
- 0 4px 12px ${e(t.palette.common.black, 0.05)},
53
- 0 16px 24px ${e(t.palette.common.black, 0.03)},
54
- inset 0 1px 0 ${e(t.palette.common.white, 0.2)}` : `0 2px 8px ${e(t.palette.common.black, 0.3)},
55
- 0 8px 24px ${e(t.palette.common.black, 0.2)},
56
- 0 16px 32px ${e(t.palette.common.black, 0.1)},
57
- inset 0 1px 0 ${e(t.palette.common.white, 0.1)}`,
58
- backdropFilter: "blur(20px) saturate(1.2)",
59
- WebkitBackdropFilter: "blur(20px) saturate(1.2)",
60
- transition: "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)",
61
- "&:hover": {
62
- background: a === "light" ? `linear-gradient(0deg, ${(t.vars || t).palette.background.paper}, ${(t.vars || t).palette.background.paper}),
63
- linear-gradient(45deg, ${e(t.palette.primary.main, 0.08)} 0%, transparent 60%)` : `linear-gradient(0deg, ${(t.vars || t).palette.background.default}, ${(t.vars || t).palette.background.default}),
64
- linear-gradient(45deg, ${e(t.palette.primary.light, 0.1)} 0%, transparent 60%)`,
65
- boxShadow: a === "light" ? `0 6px 18px ${e(t.palette.common.black, 0.12)}` : `0 10px 24px ${e(t.palette.common.black, 0.4)}`,
66
- transform: "translateY(-1px)",
67
- border: `1px solid ${a === "light" ? e(t.palette.primary.main, 0.2) : e(t.palette.primary.light, 0.25)}`
68
- },
69
- "&:active": {
70
- transform: "translateY(-1px) scale(1.01)",
71
- transition: "all 0.15s cubic-bezier(0.4, 0, 0.6, 1)",
72
- boxShadow: a === "light" ? `0 2px 8px ${e(t.palette.common.black, 0.1)},
73
- 0 8px 24px ${e(t.palette.common.black, 0.06)},
74
- inset 0 1px 0 ${e(t.palette.common.white, 0.2)}` : `0 4px 16px ${e(t.palette.common.black, 0.35)},
75
- 0 12px 32px ${e(t.palette.common.black, 0.25)},
76
- inset 0 1px 0 ${e(t.palette.common.white, 0.1)}`
77
- },
78
- "&:focus-visible": {
79
- outline: "none",
80
- boxShadow: a === "light" ? `0 4px 12px ${e(t.palette.common.black, 0.12)},
81
- 0 12px 32px ${e(t.palette.common.black, 0.08)},
82
- 0 0 0 3px ${e(t.palette.primary.main, 0.3)},
83
- 0 0 20px ${e(t.palette.primary.main, 0.2)},
84
- inset 0 1px 0 ${e(t.palette.common.white, 0.3)}` : `0 8px 24px ${e(t.palette.common.black, 0.4)},
85
- 0 16px 48px ${e(t.palette.common.black, 0.3)},
86
- 0 0 0 3px ${e(t.palette.primary.light, 0.4)},
87
- 0 0 30px ${e(t.palette.primary.light, 0.3)},
88
- inset 0 1px 0 ${e(t.palette.common.white, 0.15)}`,
89
- transform: "translateY(-1px)"
90
- }
91
- },
92
- ref: s,
93
- disableRipple: !0,
94
- ...m,
95
- fullWidth: !0,
96
- children: /* @__PURE__ */ i.jsxs(
97
- o,
98
- {
99
- sx: {
100
- position: "relative",
101
- zIndex: 2,
102
- fontSize: 16,
103
- fontWeight: a === "light" ? 700 : 600,
104
- background: `
105
- ${(t.vars || t).palette.gradient.primary},
106
- linear-gradient(135deg,
107
- ${a === "light" ? e(t.palette.primary.dark, 0.1) : e(t.palette.primary.light, 0.1)} 0%,
108
- transparent 50%,
109
- ${a === "light" ? e(t.palette.primary.main, 0.1) : e(t.palette.primary.light, 0.1)} 100%)
110
- `,
111
- backgroundSize: "100% 100%, 200% 200%",
112
- backgroundClip: "text",
113
- WebkitBackgroundClip: "text",
114
- color: "transparent",
115
- WebkitTextFillColor: "transparent",
116
- transition: "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-position 0.6s ease",
117
- textShadow: a === "light" ? `0 1px 3px ${e(t.palette.common.black, 0.08)},
118
- 0 2px 6px ${e(t.palette.primary.main, 0.1)}` : `0 2px 4px ${e(t.palette.common.black, 0.4)},
119
- 0 4px 8px ${e(t.palette.primary.light, 0.2)}`,
120
- letterSpacing: "0.025em",
121
- lineHeight: 1.2,
122
- WebkitFontSmoothing: "antialiased",
123
- MozOsxFontSmoothing: "grayscale",
124
- textRendering: "optimizeLegibility",
125
- "&:hover": {
126
- backgroundPosition: "100% 0, 50% 50%",
127
- transform: "scale(1.02)",
128
- textShadow: a === "light" ? `0 2px 4px ${e(t.palette.common.black, 0.12)},
129
- 0 4px 12px ${e(t.palette.primary.main, 0.15)},
130
- 0 0 20px ${e(t.palette.primary.main, 0.1)}` : `0 3px 6px ${e(t.palette.common.black, 0.5)},
131
- 0 6px 16px ${e(t.palette.primary.light, 0.25)},
132
- 0 0 30px ${e(t.palette.primary.light, 0.15)}`
133
- },
134
- "button:hover &": {
135
- backgroundPosition: "100% 0, 50% 50%",
136
- transform: "scale(1.02)",
137
- textShadow: a === "light" ? `0 2px 4px ${e(t.palette.common.black, 0.12)},
138
- 0 4px 12px ${e(t.palette.primary.main, 0.15)},
139
- 0 0 20px ${e(t.palette.primary.main, 0.1)}` : `0 3px 6px ${e(t.palette.common.black, 0.5)},
140
- 0 6px 16px ${e(t.palette.primary.light, 0.25)},
141
- 0 0 30px ${e(t.palette.primary.light, 0.15)}`,
142
- animation: "textGlow 2s ease-in-out infinite alternate"
143
- },
144
- "@keyframes textGlow": {
145
- "0%": {
146
- filter: "brightness(1) contrast(1)"
147
- },
148
- "100%": {
149
- filter: "brightness(1.1) contrast(1.05)"
150
- }
151
- }
152
- },
153
- children: [
154
- p,
155
- /* @__PURE__ */ i.jsx(
156
- o,
157
- {
158
- sx: {
159
- position: "absolute",
160
- top: 0,
161
- left: 0,
162
- right: 0,
163
- bottom: 0,
164
- background: a === "light" ? `linear-gradient(180deg, ${e(t.palette.common.white, 0.3)} 0%, transparent 50%)` : `linear-gradient(180deg, ${e(t.palette.common.white, 0.1)} 0%, transparent 50%)`,
165
- backgroundClip: "text",
166
- WebkitBackgroundClip: "text",
167
- color: "transparent",
168
- WebkitTextFillColor: "transparent",
169
- pointerEvents: "none",
170
- opacity: 0.6,
171
- transition: "opacity 0.3s ease",
172
- "button:hover &": {
173
- opacity: 0.8
174
- }
175
- },
176
- children: p
177
- }
178
- )
179
- ]
180
- }
181
- )
182
- }
183
- )
184
- }
185
- );
186
- };
187
- n.displayName = "SGlowButton";
1
+ import { j as r } from "../jsx-runtime-OVHDjVDe.js";
2
+ import { hslToRgb as d, Button as s } from "@mui/material";
3
+ import { SMovingBorder as f } from "../s-moving-border/s-moving-border.js";
4
+ import { blue as m } from "../theme/theme-primitives.js";
5
+ const t = ({
6
+ borderRadius: e = 12,
7
+ children: i,
8
+ duration: n = 3e3,
9
+ width: o = "fit-content",
10
+ glowSize: a = 60,
11
+ glowColor: l = d(m[500]),
12
+ ...u
13
+ }) => /* @__PURE__ */ r.jsx(
14
+ f,
15
+ {
16
+ width: o,
17
+ duration: n,
18
+ borderRadius: e,
19
+ glowSize: a,
20
+ glowColor: l,
21
+ padding: 0.3,
22
+ children: /* @__PURE__ */ r.jsx(
23
+ s,
24
+ {
25
+ sx: {
26
+ borderRadius: e,
27
+ width: o
28
+ },
29
+ disableRipple: !0,
30
+ ...u,
31
+ fullWidth: !0,
32
+ children: i
33
+ }
34
+ )
35
+ }
36
+ );
37
+ t.displayName = "SGlowButton";
188
38
  try {
189
- n.displayName = "SGlowButton", n.__docgenInfo = { description: "A visually striking button with animated glowing border effects and gradient text.", displayName: "SGlowButton", props: { borderRadius: { defaultValue: { value: "12" }, description: "Border radius for the button (defaults to 12px)", name: "borderRadius", required: !1, type: { name: "string | number" } }, children: { defaultValue: null, description: "Button content", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "6000" }, description: "Duration of the moving border animation in milliseconds (defaults to 6000ms)", name: "duration", required: !1, type: { name: "number" } } } };
39
+ t.displayName = "SGlowButton", t.__docgenInfo = { description: "A visually striking button with animated glowing border effects and gradient text.", displayName: "SGlowButton", props: { borderRadius: { defaultValue: { value: "12" }, description: "Border radius for the button (defaults to 12px)", name: "borderRadius", required: !1, type: { name: "string | number" } }, children: { defaultValue: null, description: "Button content", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "3000" }, description: "Duration of the moving border animation in milliseconds (defaults to 6000ms)", name: "duration", required: !1, type: { name: "number" } }, width: { defaultValue: { value: "fit-content" }, description: "Button width (defaults to 'fit-content')", name: "width", required: !1, type: { name: "string" } }, glowSize: { defaultValue: { value: "60" }, description: "Size of the glow effect in pixels (defaults to 60)", name: "glowSize", required: !1, type: { name: "number" } }, glowColor: { defaultValue: { value: "hslToRgb(blue[500])" }, description: "Color of the glow effect (defaults to blue[500])", name: "glowColor", required: !1, type: { name: "string" } } } };
190
40
  } catch {
191
41
  }
192
42
  export {
193
- n as default
43
+ t as default
194
44
  };
@@ -78,11 +78,11 @@ const s = ({
78
78
  };
79
79
  s.displayName = "SGradientIcon";
80
80
  try {
81
- s.displayName = "SGradientIcon", s.__docgenInfo = { description: "A customizable icon component that applies gradient effects with multiple themes and animations.", displayName: "SGradientIcon", props: { hovered: { defaultValue: { value: "false" }, description: "Whether the icon should show the gradient fill (hover state)", name: "hovered", required: !1, type: { name: "boolean" } }, IconComponent: { defaultValue: null, description: "The Material-UI icon component to render with gradient effect", name: "IconComponent", required: !0, type: { name: "IconComponent" } }, sx: { defaultValue: null, description: "Additional styling props", name: "sx", required: !1, type: { name: "SxProps" } }, strokeWidth: { defaultValue: { value: "0" }, description: "Stroke width for the icon (default: 0)", name: "strokeWidth", required: !1, type: { name: "number" } }, gradientTheme: { defaultValue: { value: "blue-cyan" }, description: "Predefined gradient theme (default: 'blue-cyan')", name: "gradientTheme", required: !1, type: { name: "enum", value: [{ value: '"custom"' }, { value: '"blue-cyan"' }, { value: '"purple-pink"' }, { value: '"orange-red"' }, { value: '"green-teal"' }, { value: '"indigo-purple"' }] } }, customGradient: { defaultValue: null, description: "Custom gradient colors when theme is 'custom'", name: "customGradient", required: !1, type: { name: "CustomGradient" } }, gradientDirection: { defaultValue: { value: "diagonal" }, description: "Direction of the gradient (default: 'diagonal')", name: "gradientDirection", required: !1, type: { name: "enum", value: [{ value: '"horizontal"' }, { value: '"vertical"' }, { value: '"diagonal"' }, { value: '"radial"' }] } }, animationDuration: { defaultValue: { value: "300" }, description: "Animation duration in milliseconds (default: 300)", name: "animationDuration", required: !1, type: { name: "number" } }, animationEasing: { defaultValue: { value: "ease" }, description: "Animation easing function (default: 'ease')", name: "animationEasing", required: !1, type: { name: "enum", value: [{ value: '"ease"' }, { value: '"ease-in"' }, { value: '"ease-out"' }, { value: '"ease-in-out"' }, { value: '"linear"' }] } }, autoHover: { defaultValue: { value: "false" }, description: "Whether to automatically detect hover state (default: false)", name: "autoHover", required: !1, type: { name: "boolean" } }, gradientId: { defaultValue: null, description: "Unique identifier for the gradient (auto-generated if not provided)", name: "gradientId", required: !1, type: { name: "string" } }, alwaysGradient: { defaultValue: { value: "false" }, description: "Whether to always show gradient (overrides hovered state)", name: "alwaysGradient", required: !1, type: { name: "boolean" } }, fallbackColor: { defaultValue: null, description: "Fallback color when gradient is not shown", name: "fallbackColor", required: !1, type: { name: "string" } } } };
81
+ s.displayName = "SGradientIcon", s.__docgenInfo = { description: "A customizable icon component that applies gradient effects with multiple themes and animations.", displayName: "SGradientIcon", props: { hovered: { defaultValue: { value: "false" }, description: "Whether the icon should show the gradient fill (hover state)", name: "hovered", required: !1, type: { name: "boolean" } }, IconComponent: { defaultValue: null, description: "The Material-UI icon component to render with gradient effect", name: "IconComponent", required: !0, type: { name: "IconComponent" } }, sx: { defaultValue: null, description: "Additional styling props", name: "sx", required: !1, type: { name: "SxProps" } }, strokeWidth: { defaultValue: { value: "0" }, description: "Stroke width for the icon (default: 0)", name: "strokeWidth", required: !1, type: { name: "number" } }, gradientTheme: { defaultValue: { value: "blue-cyan" }, description: "Predefined gradient theme (default: 'blue-cyan')", name: "gradientTheme", required: !1, type: { name: "enum", value: [{ value: '"custom"' }, { value: '"blue-cyan"' }, { value: '"purple-pink"' }, { value: '"orange-red"' }, { value: '"green-teal"' }, { value: '"indigo-purple"' }] } }, customGradient: { defaultValue: null, description: "Custom gradient colors when theme is 'custom'", name: "customGradient", required: !1, type: { name: "CustomGradient" } }, gradientDirection: { defaultValue: { value: "diagonal" }, description: "Direction of the gradient (default: 'diagonal')", name: "gradientDirection", required: !1, type: { name: "enum", value: [{ value: '"horizontal"' }, { value: '"vertical"' }, { value: '"diagonal"' }, { value: '"radial"' }] } }, animationDuration: { defaultValue: { value: "300" }, description: "Animation duration in milliseconds (default: 300)", name: "animationDuration", required: !1, type: { name: "number" } }, animationEasing: { defaultValue: { value: "ease" }, description: "Animation easing function (default: 'ease')", name: "animationEasing", required: !1, type: { name: "enum", value: [{ value: '"linear"' }, { value: '"ease"' }, { value: '"ease-in"' }, { value: '"ease-in-out"' }, { value: '"ease-out"' }] } }, autoHover: { defaultValue: { value: "false" }, description: "Whether to automatically detect hover state (default: false)", name: "autoHover", required: !1, type: { name: "boolean" } }, gradientId: { defaultValue: null, description: "Unique identifier for the gradient (auto-generated if not provided)", name: "gradientId", required: !1, type: { name: "string" } }, alwaysGradient: { defaultValue: { value: "false" }, description: "Whether to always show gradient (overrides hovered state)", name: "alwaysGradient", required: !1, type: { name: "boolean" } }, fallbackColor: { defaultValue: null, description: "Fallback color when gradient is not shown", name: "fallbackColor", required: !1, type: { name: "string" } } } };
82
82
  } catch {
83
83
  }
84
84
  try {
85
- sgradienticon.displayName = "sgradienticon", sgradienticon.__docgenInfo = { description: "A customizable icon component that applies gradient effects with multiple themes and animations.", displayName: "sgradienticon", props: { hovered: { defaultValue: { value: "false" }, description: "Whether the icon should show the gradient fill (hover state)", name: "hovered", required: !1, type: { name: "boolean" } }, IconComponent: { defaultValue: null, description: "The Material-UI icon component to render with gradient effect", name: "IconComponent", required: !0, type: { name: "IconComponent" } }, sx: { defaultValue: null, description: "Additional styling props", name: "sx", required: !1, type: { name: "SxProps" } }, strokeWidth: { defaultValue: { value: "0" }, description: "Stroke width for the icon (default: 0)", name: "strokeWidth", required: !1, type: { name: "number" } }, gradientTheme: { defaultValue: { value: "blue-cyan" }, description: "Predefined gradient theme (default: 'blue-cyan')", name: "gradientTheme", required: !1, type: { name: "enum", value: [{ value: '"custom"' }, { value: '"blue-cyan"' }, { value: '"purple-pink"' }, { value: '"orange-red"' }, { value: '"green-teal"' }, { value: '"indigo-purple"' }] } }, customGradient: { defaultValue: null, description: "Custom gradient colors when theme is 'custom'", name: "customGradient", required: !1, type: { name: "CustomGradient" } }, gradientDirection: { defaultValue: { value: "diagonal" }, description: "Direction of the gradient (default: 'diagonal')", name: "gradientDirection", required: !1, type: { name: "enum", value: [{ value: '"horizontal"' }, { value: '"vertical"' }, { value: '"diagonal"' }, { value: '"radial"' }] } }, animationDuration: { defaultValue: { value: "300" }, description: "Animation duration in milliseconds (default: 300)", name: "animationDuration", required: !1, type: { name: "number" } }, animationEasing: { defaultValue: { value: "ease" }, description: "Animation easing function (default: 'ease')", name: "animationEasing", required: !1, type: { name: "enum", value: [{ value: '"ease"' }, { value: '"ease-in"' }, { value: '"ease-out"' }, { value: '"ease-in-out"' }, { value: '"linear"' }] } }, autoHover: { defaultValue: { value: "false" }, description: "Whether to automatically detect hover state (default: false)", name: "autoHover", required: !1, type: { name: "boolean" } }, gradientId: { defaultValue: null, description: "Unique identifier for the gradient (auto-generated if not provided)", name: "gradientId", required: !1, type: { name: "string" } }, alwaysGradient: { defaultValue: { value: "false" }, description: "Whether to always show gradient (overrides hovered state)", name: "alwaysGradient", required: !1, type: { name: "boolean" } }, fallbackColor: { defaultValue: null, description: "Fallback color when gradient is not shown", name: "fallbackColor", required: !1, type: { name: "string" } } } };
85
+ sgradienticon.displayName = "sgradienticon", sgradienticon.__docgenInfo = { description: "A customizable icon component that applies gradient effects with multiple themes and animations.", displayName: "sgradienticon", props: { hovered: { defaultValue: { value: "false" }, description: "Whether the icon should show the gradient fill (hover state)", name: "hovered", required: !1, type: { name: "boolean" } }, IconComponent: { defaultValue: null, description: "The Material-UI icon component to render with gradient effect", name: "IconComponent", required: !0, type: { name: "IconComponent" } }, sx: { defaultValue: null, description: "Additional styling props", name: "sx", required: !1, type: { name: "SxProps" } }, strokeWidth: { defaultValue: { value: "0" }, description: "Stroke width for the icon (default: 0)", name: "strokeWidth", required: !1, type: { name: "number" } }, gradientTheme: { defaultValue: { value: "blue-cyan" }, description: "Predefined gradient theme (default: 'blue-cyan')", name: "gradientTheme", required: !1, type: { name: "enum", value: [{ value: '"custom"' }, { value: '"blue-cyan"' }, { value: '"purple-pink"' }, { value: '"orange-red"' }, { value: '"green-teal"' }, { value: '"indigo-purple"' }] } }, customGradient: { defaultValue: null, description: "Custom gradient colors when theme is 'custom'", name: "customGradient", required: !1, type: { name: "CustomGradient" } }, gradientDirection: { defaultValue: { value: "diagonal" }, description: "Direction of the gradient (default: 'diagonal')", name: "gradientDirection", required: !1, type: { name: "enum", value: [{ value: '"horizontal"' }, { value: '"vertical"' }, { value: '"diagonal"' }, { value: '"radial"' }] } }, animationDuration: { defaultValue: { value: "300" }, description: "Animation duration in milliseconds (default: 300)", name: "animationDuration", required: !1, type: { name: "number" } }, animationEasing: { defaultValue: { value: "ease" }, description: "Animation easing function (default: 'ease')", name: "animationEasing", required: !1, type: { name: "enum", value: [{ value: '"linear"' }, { value: '"ease"' }, { value: '"ease-in"' }, { value: '"ease-in-out"' }, { value: '"ease-out"' }] } }, autoHover: { defaultValue: { value: "false" }, description: "Whether to automatically detect hover state (default: false)", name: "autoHover", required: !1, type: { name: "boolean" } }, gradientId: { defaultValue: null, description: "Unique identifier for the gradient (auto-generated if not provided)", name: "gradientId", required: !1, type: { name: "string" } }, alwaysGradient: { defaultValue: { value: "false" }, description: "Whether to always show gradient (overrides hovered state)", name: "alwaysGradient", required: !1, type: { name: "boolean" } }, fallbackColor: { defaultValue: null, description: "Fallback color when gradient is not shown", name: "fallbackColor", required: !1, type: { name: "string" } } } };
86
86
  } catch {
87
87
  }
88
88
  export {
@@ -8,7 +8,7 @@ export interface SMovingBorderProps extends BoxProps {
8
8
  duration?: number;
9
9
  /** Additional CSS class name for styling */
10
10
  className?: string;
11
- /** Color of the glow effect (default: '#38bdf8') */
11
+ /** Color of the glow effect (default: 'var(--s-palette-primary-main)') */
12
12
  glowColor?: string;
13
13
  /** Size of the glow effect in pixels (default: 250) */
14
14
  glowSize?: number;
@@ -1,8 +1,8 @@
1
1
  import { j as e } from "../jsx-runtime-OVHDjVDe.js";
2
- import { useRef as f, useEffect as w } from "react";
2
+ import { useRef as m, useEffect as w } from "react";
3
3
  import { Box as a } from "@mui/material";
4
4
  import { useMotionValue as _, useAnimationFrame as j, useTransform as g, useMotionTemplate as S, motion as C } from "framer-motion";
5
- const N = 250, V = "#38bdf8", h = (n, r) => ({
5
+ const N = 250, h = (n, o) => ({
6
6
  position: "absolute",
7
7
  left: "50%",
8
8
  top: "50%",
@@ -10,35 +10,35 @@ const N = 250, V = "#38bdf8", h = (n, r) => ({
10
10
  height: `${n}px`,
11
11
  transform: "translate(-50%, -50%)",
12
12
  opacity: 0.5,
13
- background: `radial-gradient(${r} 40%, transparent 60%)`,
13
+ background: `radial-gradient(${o} 40%, transparent 60%)`,
14
14
  filter: "blur(12px)",
15
15
  // Creates the soft glow effect
16
16
  pointerEvents: "none"
17
17
  // Prevents interference with user interactions
18
18
  });
19
- function x({
19
+ function y({
20
20
  children: n,
21
- duration: r,
22
- rx: p,
21
+ duration: o,
22
+ rx: u,
23
23
  ry: d,
24
24
  phase: c = 0
25
25
  }) {
26
- const i = f(null), s = _(0);
26
+ const i = m(null), s = _(0);
27
27
  j((l) => {
28
- var o;
29
- const t = (o = i.current) == null ? void 0 : o.getTotalLength();
28
+ var r;
29
+ const t = (r = i.current) == null ? void 0 : r.getTotalLength();
30
30
  if (t) {
31
- const v = t / r;
32
- s.set((l * v + t * c) % t);
31
+ const b = t / o;
32
+ s.set((l * b + t * c) % t);
33
33
  }
34
34
  });
35
- const u = g(s, (l) => {
36
- var t, o;
37
- return (o = (t = i.current) == null ? void 0 : t.getPointAtLength(l)) == null ? void 0 : o.x;
38
- }), b = g(s, (l) => {
39
- var t, o;
40
- return (o = (t = i.current) == null ? void 0 : t.getPointAtLength(l)) == null ? void 0 : o.y;
41
- }), y = S`translateX(${u}px) translateY(${b}px) translateX(-50%) translateY(-50%)`;
35
+ const p = g(s, (l) => {
36
+ var t, r;
37
+ return (r = (t = i.current) == null ? void 0 : t.getPointAtLength(l)) == null ? void 0 : r.x;
38
+ }), x = g(s, (l) => {
39
+ var t, r;
40
+ return (r = (t = i.current) == null ? void 0 : t.getPointAtLength(l)) == null ? void 0 : r.y;
41
+ }), v = S`translateX(${p}px) translateY(${x}px) translateX(-50%) translateY(-50%)`;
42
42
  return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
43
43
  /* @__PURE__ */ e.jsx(
44
44
  "svg",
@@ -48,7 +48,7 @@ function x({
48
48
  width: "100%",
49
49
  height: "100%",
50
50
  style: { position: "absolute", inset: 0 },
51
- children: /* @__PURE__ */ e.jsx("rect", { fill: "none", width: "100%", height: "100%", rx: p, ry: d, ref: i })
51
+ children: /* @__PURE__ */ e.jsx("rect", { fill: "none", width: "100%", height: "100%", rx: u, ry: d, ref: i })
52
52
  }
53
53
  ),
54
54
  /* @__PURE__ */ e.jsx(
@@ -59,24 +59,24 @@ function x({
59
59
  top: 0,
60
60
  left: 0,
61
61
  display: "inline-block",
62
- transform: y
62
+ transform: v
63
63
  },
64
64
  children: n
65
65
  }
66
66
  )
67
67
  ] });
68
68
  }
69
- const m = ({
69
+ const f = ({
70
70
  className: n,
71
- duration: r = 6e3,
72
- children: p,
73
- glowColor: d = V,
71
+ duration: o = 6e3,
72
+ children: u,
73
+ glowColor: d = "var(--s-palette-primary-main)",
74
74
  glowSize: c = N,
75
75
  ...i
76
76
  }) => {
77
- const s = f(null), u = f(null);
77
+ const s = m(null), p = m(null);
78
78
  return w(() => () => {
79
- u.current !== null && window.cancelAnimationFrame(u.current);
79
+ p.current !== null && window.cancelAnimationFrame(p.current);
80
80
  }, []), // Main container with relative positioning for absolute children
81
81
  /* @__PURE__ */ e.jsxs(
82
82
  a,
@@ -93,8 +93,8 @@ const m = ({
93
93
  ...i,
94
94
  children: [
95
95
  /* @__PURE__ */ e.jsxs(a, { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, children: [
96
- /* @__PURE__ */ e.jsx(x, { duration: r, rx: "100%", ry: "100%", phase: 0, children: /* @__PURE__ */ e.jsx(a, { sx: h(c, d) }) }),
97
- /* @__PURE__ */ e.jsx(x, { duration: r, rx: "100%", ry: "100%", phase: 0.5, children: /* @__PURE__ */ e.jsx(a, { sx: h(c, d) }) })
96
+ /* @__PURE__ */ e.jsx(y, { duration: o, rx: "100%", ry: "100%", phase: 0, children: /* @__PURE__ */ e.jsx(a, { sx: h(c, d) }) }),
97
+ /* @__PURE__ */ e.jsx(y, { duration: o, rx: "100%", ry: "100%", phase: 0.5, children: /* @__PURE__ */ e.jsx(a, { sx: h(c, d) }) })
98
98
  ] }),
99
99
  /* @__PURE__ */ e.jsx(
100
100
  a,
@@ -129,21 +129,21 @@ const m = ({
129
129
  )
130
130
  }
131
131
  ),
132
- p
132
+ u
133
133
  ]
134
134
  }
135
135
  );
136
136
  };
137
- m.displayName = "SMovingBorder";
137
+ f.displayName = "SMovingBorder";
138
138
  try {
139
- m.displayName = "SMovingBorder", m.__docgenInfo = { description: "An animated border effect component that creates smooth moving light effects around the element perimeter.", displayName: "SMovingBorder", props: { duration: { defaultValue: { value: "6000" }, description: "Duration of one complete animation cycle in milliseconds (default: 6000)", name: "duration", required: !1, type: { name: "number" } }, className: { defaultValue: null, description: "Additional CSS class name for styling", name: "className", required: !1, type: { name: "string" } }, glowColor: { defaultValue: { value: "#38bdf8" }, description: "Color of the glow effect (default: '#38bdf8')", name: "glowColor", required: !1, type: { name: "string" } }, glowSize: { defaultValue: { value: "250" }, description: "Size of the glow effect in pixels (default: 250)", name: "glowSize", required: !1, type: { name: "number" } }, children: { defaultValue: null, description: "Content to render inside the moving border container", name: "children", required: !0, type: { name: "ReactNode" } } } };
139
+ f.displayName = "SMovingBorder", f.__docgenInfo = { description: "An animated border effect component that creates smooth moving light effects around the element perimeter.", displayName: "SMovingBorder", props: { duration: { defaultValue: { value: "6000" }, description: "Duration of one complete animation cycle in milliseconds (default: 6000)", name: "duration", required: !1, type: { name: "number" } }, className: { defaultValue: null, description: "Additional CSS class name for styling", name: "className", required: !1, type: { name: "string" } }, glowColor: { defaultValue: { value: "var(--s-palette-primary-main)" }, description: "Color of the glow effect (default: 'var(--s-palette-primary-main)')", name: "glowColor", required: !1, type: { name: "string" } }, glowSize: { defaultValue: { value: "250" }, description: "Size of the glow effect in pixels (default: 250)", name: "glowSize", required: !1, type: { name: "number" } }, children: { defaultValue: null, description: "Content to render inside the moving border container", name: "children", required: !0, type: { name: "ReactNode" } } } };
140
140
  } catch {
141
141
  }
142
142
  try {
143
- smovingborder.displayName = "smovingborder", smovingborder.__docgenInfo = { description: "An animated border effect component that creates smooth moving light effects around the element perimeter.", displayName: "smovingborder", props: { duration: { defaultValue: { value: "6000" }, description: "Duration of one complete animation cycle in milliseconds (default: 6000)", name: "duration", required: !1, type: { name: "number" } }, className: { defaultValue: null, description: "Additional CSS class name for styling", name: "className", required: !1, type: { name: "string" } }, glowColor: { defaultValue: { value: "#38bdf8" }, description: "Color of the glow effect (default: '#38bdf8')", name: "glowColor", required: !1, type: { name: "string" } }, glowSize: { defaultValue: { value: "250" }, description: "Size of the glow effect in pixels (default: 250)", name: "glowSize", required: !1, type: { name: "number" } }, children: { defaultValue: null, description: "Content to render inside the moving border container", name: "children", required: !0, type: { name: "ReactNode" } } } };
143
+ smovingborder.displayName = "smovingborder", smovingborder.__docgenInfo = { description: "An animated border effect component that creates smooth moving light effects around the element perimeter.", displayName: "smovingborder", props: { duration: { defaultValue: { value: "6000" }, description: "Duration of one complete animation cycle in milliseconds (default: 6000)", name: "duration", required: !1, type: { name: "number" } }, className: { defaultValue: null, description: "Additional CSS class name for styling", name: "className", required: !1, type: { name: "string" } }, glowColor: { defaultValue: { value: "var(--s-palette-primary-main)" }, description: "Color of the glow effect (default: 'var(--s-palette-primary-main)')", name: "glowColor", required: !1, type: { name: "string" } }, glowSize: { defaultValue: { value: "250" }, description: "Size of the glow effect in pixels (default: 250)", name: "glowSize", required: !1, type: { name: "number" } }, children: { defaultValue: null, description: "Content to render inside the moving border container", name: "children", required: !0, type: { name: "ReactNode" } } } };
144
144
  } catch {
145
145
  }
146
146
  export {
147
- m as SMovingBorder,
148
- m as default
147
+ f as SMovingBorder,
148
+ f as default
149
149
  };
@@ -1,6 +1,6 @@
1
1
  import { j as e } from "../jsx-runtime-OVHDjVDe.js";
2
2
  import { useState as v, useEffect as P } from "react";
3
- import { Box as d, Stack as s, Divider as T, Typography as c, IconButton as H } from "@mui/material";
3
+ import { Box as d, Stack as o, Divider as T, Typography as c, IconButton as H } from "@mui/material";
4
4
  import { SAvatar as G } from "../s-avatar/s-avatar.js";
5
5
  import { SImageModal as J } from "../s-image-modal/s-image-modal.js";
6
6
  import "../s-lazy-image/index.js";
@@ -12,18 +12,18 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
12
12
  d: "M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2m4 0v12h4V3z"
13
13
  }), "ThumbDown"), Z = N(/* @__PURE__ */ e.jsx("path", {
14
14
  d: "M1 21h4V9H1zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73z"
15
- }), "ThumbUp"), ee = (o) => {
16
- const m = /* @__PURE__ */ new Date(), w = typeof o == "string" ? new Date(o) : o, j = m.getTime() - w.getTime(), y = Math.floor(j / 1e3), u = Math.floor(y / 60), r = Math.floor(u / 60), i = Math.floor(r / 24), f = Math.floor(i / 7), h = Math.floor(i / 30), p = Math.floor(i / 365);
17
- return y < 60 ? "just now" : u < 60 ? u === 1 ? "1 minute ago" : `${u} minutes ago` : r < 24 ? r === 1 ? "1 hour ago" : `${r} hours ago` : i < 7 ? i === 1 ? "1 day ago" : `${i} days ago` : f < 4 ? f === 1 ? "1 week ago" : `${f} weeks ago` : h < 12 ? h === 1 ? "1 month ago" : `${h} months ago` : p === 1 ? "1 year ago" : `${p} years ago`;
15
+ }), "ThumbUp"), ee = (s) => {
16
+ const m = /* @__PURE__ */ new Date(), y = typeof s == "string" ? new Date(s) : s, j = m.getTime() - y.getTime(), w = Math.floor(j / 1e3), u = Math.floor(w / 60), i = Math.floor(u / 60), r = Math.floor(i / 24), f = Math.floor(r / 7), h = Math.floor(r / 30), p = Math.floor(r / 365);
17
+ return w < 60 ? "just now" : u < 60 ? u === 1 ? "1 minute ago" : `${u} minutes ago` : i < 24 ? i === 1 ? "1 hour ago" : `${i} hours ago` : r < 7 ? r === 1 ? "1 day ago" : `${r} days ago` : f < 4 ? f === 1 ? "1 week ago" : `${f} weeks ago` : h < 12 ? h === 1 ? "1 month ago" : `${h} months ago` : p === 1 ? "1 year ago" : `${p} years ago`;
18
18
  }, q = ({
19
- id: o = Date.now(),
19
+ id: s = Date.now(),
20
20
  userName: m,
21
- userAvatar: w,
21
+ userAvatar: y,
22
22
  rating: j,
23
- reviewContent: y,
23
+ reviewContent: w,
24
24
  datetime: u,
25
- images: r,
26
- userHelpfulVote: i = null,
25
+ images: i,
26
+ userHelpfulVote: r = null,
27
27
  helpfulYes: f = 0,
28
28
  helpfulNo: h = 0,
29
29
  onHelpfulVote: p,
@@ -35,11 +35,11 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
35
35
  loading: W = !1,
36
36
  sx: k = {}
37
37
  }) => {
38
- const [_, I] = v(f), [U, V] = v(h), [x, M] = v(i), [Y, D] = v(!1), [A, S] = v(null), R = (a) => {
38
+ const [_, I] = v(f), [U, V] = v(h), [x, M] = v(r), [Y, D] = v(!1), [A, S] = v(null), R = (a) => {
39
39
  let n = a;
40
- x === a ? (a === "yes" ? I((t) => Math.max(0, t - 1)) : V((t) => Math.max(0, t - 1)), M(null), n = null) : (x === "yes" ? I((t) => Math.max(0, t - 1)) : x === "no" && V((t) => Math.max(0, t - 1)), a === "yes" ? I((t) => t + 1) : V((t) => t + 1), M(a), n = a), p && p(o, n);
41
- }, g = (r == null ? void 0 : r.map((a, n) => ({
42
- id: `review-${o}-image-${n}`,
40
+ x === a ? (a === "yes" ? I((t) => Math.max(0, t - 1)) : V((t) => Math.max(0, t - 1)), M(null), n = null) : (x === "yes" ? I((t) => Math.max(0, t - 1)) : x === "no" && V((t) => Math.max(0, t - 1)), a === "yes" ? I((t) => t + 1) : V((t) => t + 1), M(a), n = a), p && p(s, n);
41
+ }, g = (i == null ? void 0 : i.map((a, n) => ({
42
+ id: `review-${s}-image-${n}`,
43
43
  type: "image",
44
44
  url: a,
45
45
  title: `Review image ${n + 1}`,
@@ -53,18 +53,18 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
53
53
  S(a);
54
54
  }, F = ee(u);
55
55
  return P(() => {
56
- M(i);
57
- }, [i]), W ? /* @__PURE__ */ e.jsxs(d, { sx: { py: 2, ...k }, children: [
58
- /* @__PURE__ */ e.jsxs(s, { direction: "row", spacing: 2, alignItems: "flex-start", children: [
56
+ M(r);
57
+ }, [r]), W ? /* @__PURE__ */ e.jsxs(d, { sx: { py: 2, ...k }, children: [
58
+ /* @__PURE__ */ e.jsxs(o, { direction: "row", spacing: 2, alignItems: "flex-start", children: [
59
59
  /* @__PURE__ */ e.jsx(l, { component: "rounded-avatar", width: b, height: b }),
60
60
  /* @__PURE__ */ e.jsxs(d, { sx: { flex: 1 }, children: [
61
- /* @__PURE__ */ e.jsxs(s, { direction: "row", alignItems: "center", spacing: 2, mb: 1, children: [
61
+ /* @__PURE__ */ e.jsxs(o, { direction: "row", alignItems: "center", spacing: 2, mb: 1, children: [
62
62
  /* @__PURE__ */ e.jsx(l, { variant: "text", width: 120, height: 20 }),
63
63
  /* @__PURE__ */ e.jsx(l, { variant: "text", width: 80, height: 16 })
64
64
  ] }),
65
65
  /* @__PURE__ */ e.jsx(d, { sx: { mb: 1 }, children: /* @__PURE__ */ e.jsx(l, { variant: "text", width: 100, height: 20 }) }),
66
66
  /* @__PURE__ */ e.jsx(l, { variant: "text", width: "100%", height: 16, sx: { mb: 0.5 } }),
67
- /* @__PURE__ */ e.jsxs(s, { direction: "row", spacing: 1, sx: { display: "inline-flex", alignItems: "center" }, children: [
67
+ /* @__PURE__ */ e.jsxs(o, { direction: "row", spacing: 1, sx: { display: "inline-flex", alignItems: "center" }, children: [
68
68
  /* @__PURE__ */ e.jsx(l, { variant: "text", width: 140, height: 16, sx: { mr: 2 } }),
69
69
  /* @__PURE__ */ e.jsx(l, { component: "icon-button" }),
70
70
  /* @__PURE__ */ e.jsx(l, { variant: "text", width: 20, height: 16 }),
@@ -75,16 +75,16 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
75
75
  ] }),
76
76
  C && /* @__PURE__ */ e.jsx(T, { sx: { mt: 2 } })
77
77
  ] }) : /* @__PURE__ */ e.jsxs(d, { sx: { py: 2, ...k }, children: [
78
- /* @__PURE__ */ e.jsxs(s, { direction: "row", spacing: 2, alignItems: "flex-start", children: [
79
- /* @__PURE__ */ e.jsx(G, { avatar: w, name: m, size: b }),
78
+ /* @__PURE__ */ e.jsxs(o, { direction: "row", spacing: 2, alignItems: "flex-start", children: [
79
+ /* @__PURE__ */ e.jsx(G, { avatar: y, name: m, size: b }),
80
80
  /* @__PURE__ */ e.jsxs(d, { sx: { flex: 1 }, children: [
81
- /* @__PURE__ */ e.jsxs(s, { direction: "row", alignItems: "center", spacing: 2, mb: 1, children: [
81
+ /* @__PURE__ */ e.jsxs(o, { direction: "row", alignItems: "center", spacing: 2, mb: 1, children: [
82
82
  /* @__PURE__ */ e.jsx(c, { variant: "subtitle2", fontWeight: "600", children: m }),
83
- /* @__PURE__ */ e.jsx("div", { children: /* @__PURE__ */ e.jsx(c, { variant: "caption", color: "text.secondary", children: F }) })
83
+ /* @__PURE__ */ e.jsx("div", { children: /* @__PURE__ */ e.jsx(c, { variant: "caption", children: F }) })
84
84
  ] }),
85
85
  /* @__PURE__ */ e.jsx(d, { sx: { mb: 1 }, children: /* @__PURE__ */ e.jsx(K, { value: j, max: z, readOnly: L, size: "small" }) }),
86
- /* @__PURE__ */ e.jsx(c, { variant: "body2", sx: { mb: 2, lineHeight: 1.6 }, children: y }),
87
- r && r.length > 0 && /* @__PURE__ */ e.jsx(s, { direction: "row", spacing: 1, sx: { mb: 2, flexWrap: "wrap", gap: 1 }, children: r.map((a, n) => /* @__PURE__ */ e.jsx(
86
+ /* @__PURE__ */ e.jsx(c, { variant: "body2", sx: { mb: 2, lineHeight: 1.6 }, children: w }),
87
+ i && i.length > 0 && /* @__PURE__ */ e.jsx(o, { direction: "row", spacing: 1, sx: { mb: 2, flexWrap: "wrap", gap: 1 }, children: i.map((a, n) => /* @__PURE__ */ e.jsx(
88
88
  Q,
89
89
  {
90
90
  src: a,
@@ -106,8 +106,8 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
106
106
  },
107
107
  n
108
108
  )) }),
109
- $ && /* @__PURE__ */ e.jsxs(s, { direction: "row", spacing: 1, sx: { display: "inline-flex", alignItems: "center" }, children: [
110
- /* @__PURE__ */ e.jsx(c, { variant: "caption", color: "text.secondary", sx: { mr: 2 }, children: "Was this review helpful?" }),
109
+ $ && /* @__PURE__ */ e.jsxs(o, { direction: "row", spacing: 1, sx: { display: "inline-flex", alignItems: "center" }, children: [
110
+ /* @__PURE__ */ e.jsx(c, { variant: "caption", sx: { mr: 2 }, children: "Was this review helpful?" }),
111
111
  /* @__PURE__ */ e.jsx(
112
112
  H,
113
113
  {
@@ -122,7 +122,7 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
122
122
  children: /* @__PURE__ */ e.jsx(Z, { fontSize: "small" })
123
123
  }
124
124
  ),
125
- /* @__PURE__ */ e.jsx(c, { variant: "caption", color: "text.secondary", children: _ }),
125
+ /* @__PURE__ */ e.jsx(c, { variant: "caption", children: _ }),
126
126
  /* @__PURE__ */ e.jsx(
127
127
  H,
128
128
  {
@@ -138,7 +138,7 @@ const X = N(/* @__PURE__ */ e.jsx("path", {
138
138
  children: /* @__PURE__ */ e.jsx(X, { fontSize: "small" })
139
139
  }
140
140
  ),
141
- /* @__PURE__ */ e.jsx(c, { variant: "caption", color: "text.secondary", children: U })
141
+ /* @__PURE__ */ e.jsx(c, { variant: "caption", children: U })
142
142
  ] })
143
143
  ] })
144
144
  ] }),
@@ -60,11 +60,11 @@ const l = ({
60
60
  };
61
61
  l.displayName = "SScrollReveal";
62
62
  try {
63
- l.displayName = "SScrollReveal", l.__docgenInfo = { description: "A scroll-triggered animation component that reveals content with smooth animations when elements enter the viewport.", displayName: "SScrollReveal", props: { children: { defaultValue: null, description: "The content to be revealed with animation", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "0.6" }, description: "Animation duration in seconds (default: 0.6)", name: "duration", required: !1, type: { name: "number" } }, ease: { defaultValue: { value: "easeOut" }, description: "Framer Motion easing function for the animation (default: 'easeOut')", name: "ease", required: !1, type: { name: "Easing" } }, threshold: { defaultValue: null, description: "Intersection Observer threshold (0-1) for triggering animation", name: "threshold", required: !1, type: { name: "number" } }, rootMargin: { defaultValue: null, description: "Intersection Observer root margin (CSS margin syntax)", name: "rootMargin", required: !1, type: { name: "string" } }, delay: { defaultValue: null, description: "Delay before starting animation in milliseconds", name: "delay", required: !1, type: { name: "number" } }, direction: { defaultValue: null, description: "Direction from which elements animate into view", name: "direction", required: !1, type: { name: "enum", value: [{ value: '"left"' }, { value: '"right"' }, { value: '"up"' }, { value: '"down"' }] } }, distance: { defaultValue: null, description: "Distance in pixels that elements travel during animation", name: "distance", required: !1, type: { name: "number" } }, scale: { defaultValue: { value: "true" }, description: "Whether to include scaling effect in the animation (default: true)", name: "scale", required: !1, type: { name: "boolean" } }, rotate: { defaultValue: { value: "false" }, description: "Whether to include rotation effect in the animation (default: false)", name: "rotate", required: !1, type: { name: "boolean" } }, stagger: { defaultValue: { value: "true" }, description: "Whether to stagger animations for multiple children (default: true)", name: "stagger", required: !1, type: { name: "boolean" } }, staggerDelay: { defaultValue: { value: "0.1" }, description: "Delay between staggered child animations in seconds (default: 0.1)", name: "staggerDelay", required: !1, type: { name: "number" } } } };
63
+ l.displayName = "SScrollReveal", l.__docgenInfo = { description: "A scroll-triggered animation component that reveals content with smooth animations when elements enter the viewport.", displayName: "SScrollReveal", props: { children: { defaultValue: null, description: "The content to be revealed with animation", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "0.6" }, description: "Animation duration in seconds (default: 0.6)", name: "duration", required: !1, type: { name: "number" } }, ease: { defaultValue: { value: "easeOut" }, description: "Framer Motion easing function for the animation (default: 'easeOut')", name: "ease", required: !1, type: { name: "Easing" } }, threshold: { defaultValue: null, description: "Intersection Observer threshold (0-1) for triggering animation", name: "threshold", required: !1, type: { name: "number" } }, rootMargin: { defaultValue: null, description: "Intersection Observer root margin (CSS margin syntax)", name: "rootMargin", required: !1, type: { name: "string" } }, delay: { defaultValue: null, description: "Delay before starting animation in milliseconds", name: "delay", required: !1, type: { name: "number" } }, direction: { defaultValue: null, description: "Direction from which elements animate into view", name: "direction", required: !1, type: { name: "enum", value: [{ value: '"right"' }, { value: '"left"' }, { value: '"up"' }, { value: '"down"' }] } }, distance: { defaultValue: null, description: "Distance in pixels that elements travel during animation", name: "distance", required: !1, type: { name: "number" } }, scale: { defaultValue: { value: "true" }, description: "Whether to include scaling effect in the animation (default: true)", name: "scale", required: !1, type: { name: "boolean" } }, rotate: { defaultValue: { value: "false" }, description: "Whether to include rotation effect in the animation (default: false)", name: "rotate", required: !1, type: { name: "boolean" } }, stagger: { defaultValue: { value: "true" }, description: "Whether to stagger animations for multiple children (default: true)", name: "stagger", required: !1, type: { name: "boolean" } }, staggerDelay: { defaultValue: { value: "0.1" }, description: "Delay between staggered child animations in seconds (default: 0.1)", name: "staggerDelay", required: !1, type: { name: "number" } } } };
64
64
  } catch {
65
65
  }
66
66
  try {
67
- sscrollreveal.displayName = "sscrollreveal", sscrollreveal.__docgenInfo = { description: "A scroll-triggered animation component that reveals content with smooth animations when elements enter the viewport.", displayName: "sscrollreveal", props: { children: { defaultValue: null, description: "The content to be revealed with animation", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "0.6" }, description: "Animation duration in seconds (default: 0.6)", name: "duration", required: !1, type: { name: "number" } }, ease: { defaultValue: { value: "easeOut" }, description: "Framer Motion easing function for the animation (default: 'easeOut')", name: "ease", required: !1, type: { name: "Easing" } }, threshold: { defaultValue: null, description: "Intersection Observer threshold (0-1) for triggering animation", name: "threshold", required: !1, type: { name: "number" } }, rootMargin: { defaultValue: null, description: "Intersection Observer root margin (CSS margin syntax)", name: "rootMargin", required: !1, type: { name: "string" } }, delay: { defaultValue: null, description: "Delay before starting animation in milliseconds", name: "delay", required: !1, type: { name: "number" } }, direction: { defaultValue: null, description: "Direction from which elements animate into view", name: "direction", required: !1, type: { name: "enum", value: [{ value: '"left"' }, { value: '"right"' }, { value: '"up"' }, { value: '"down"' }] } }, distance: { defaultValue: null, description: "Distance in pixels that elements travel during animation", name: "distance", required: !1, type: { name: "number" } }, scale: { defaultValue: { value: "true" }, description: "Whether to include scaling effect in the animation (default: true)", name: "scale", required: !1, type: { name: "boolean" } }, rotate: { defaultValue: { value: "false" }, description: "Whether to include rotation effect in the animation (default: false)", name: "rotate", required: !1, type: { name: "boolean" } }, stagger: { defaultValue: { value: "true" }, description: "Whether to stagger animations for multiple children (default: true)", name: "stagger", required: !1, type: { name: "boolean" } }, staggerDelay: { defaultValue: { value: "0.1" }, description: "Delay between staggered child animations in seconds (default: 0.1)", name: "staggerDelay", required: !1, type: { name: "number" } } } };
67
+ sscrollreveal.displayName = "sscrollreveal", sscrollreveal.__docgenInfo = { description: "A scroll-triggered animation component that reveals content with smooth animations when elements enter the viewport.", displayName: "sscrollreveal", props: { children: { defaultValue: null, description: "The content to be revealed with animation", name: "children", required: !0, type: { name: "ReactNode" } }, duration: { defaultValue: { value: "0.6" }, description: "Animation duration in seconds (default: 0.6)", name: "duration", required: !1, type: { name: "number" } }, ease: { defaultValue: { value: "easeOut" }, description: "Framer Motion easing function for the animation (default: 'easeOut')", name: "ease", required: !1, type: { name: "Easing" } }, threshold: { defaultValue: null, description: "Intersection Observer threshold (0-1) for triggering animation", name: "threshold", required: !1, type: { name: "number" } }, rootMargin: { defaultValue: null, description: "Intersection Observer root margin (CSS margin syntax)", name: "rootMargin", required: !1, type: { name: "string" } }, delay: { defaultValue: null, description: "Delay before starting animation in milliseconds", name: "delay", required: !1, type: { name: "number" } }, direction: { defaultValue: null, description: "Direction from which elements animate into view", name: "direction", required: !1, type: { name: "enum", value: [{ value: '"right"' }, { value: '"left"' }, { value: '"up"' }, { value: '"down"' }] } }, distance: { defaultValue: null, description: "Distance in pixels that elements travel during animation", name: "distance", required: !1, type: { name: "number" } }, scale: { defaultValue: { value: "true" }, description: "Whether to include scaling effect in the animation (default: true)", name: "scale", required: !1, type: { name: "boolean" } }, rotate: { defaultValue: { value: "false" }, description: "Whether to include rotation effect in the animation (default: false)", name: "rotate", required: !1, type: { name: "boolean" } }, stagger: { defaultValue: { value: "true" }, description: "Whether to stagger animations for multiple children (default: true)", name: "stagger", required: !1, type: { name: "boolean" } }, staggerDelay: { defaultValue: { value: "0.1" }, description: "Delay between staggered child animations in seconds (default: 0.1)", name: "staggerDelay", required: !1, type: { name: "number" } } } };
68
68
  } catch {
69
69
  }
70
70
  export {