@solostylist/ui-kit 1.0.171 → 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.
@@ -1,193 +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 u, alpha as e, Box as o } from "@mui/material";
4
- import { SMovingBorder as h } 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
- h,
14
- {
15
- duration: l,
16
- borderRadius: r,
17
- height: 60,
18
- glowSize: d,
19
- glowColor: c,
20
- children: /* @__PURE__ */ i.jsx(
21
- u,
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
- background: `
104
- ${(t.vars || t).palette.gradient.primary},
105
- linear-gradient(135deg,
106
- ${a === "light" ? e(t.palette.primary.dark, 0.1) : e(t.palette.primary.light, 0.1)} 0%,
107
- transparent 50%,
108
- ${a === "light" ? e(t.palette.primary.main, 0.1) : e(t.palette.primary.light, 0.1)} 100%)
109
- `,
110
- backgroundSize: "100% 100%, 200% 200%",
111
- backgroundClip: "text",
112
- WebkitBackgroundClip: "text",
113
- color: "transparent",
114
- WebkitTextFillColor: "transparent",
115
- transition: "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-position 0.6s ease",
116
- textShadow: a === "light" ? `0 1px 3px ${e(t.palette.common.black, 0.08)},
117
- 0 2px 6px ${e(t.palette.primary.main, 0.1)}` : `0 2px 4px ${e(t.palette.common.black, 0.4)},
118
- 0 4px 8px ${e(t.palette.primary.light, 0.2)}`,
119
- letterSpacing: "0.025em",
120
- lineHeight: 1.2,
121
- WebkitFontSmoothing: "antialiased",
122
- MozOsxFontSmoothing: "grayscale",
123
- textRendering: "optimizeLegibility",
124
- "&:hover": {
125
- backgroundPosition: "100% 0, 50% 50%",
126
- transform: "scale(1.02)",
127
- textShadow: a === "light" ? `0 2px 4px ${e(t.palette.common.black, 0.12)},
128
- 0 4px 12px ${e(t.palette.primary.main, 0.15)},
129
- 0 0 20px ${e(t.palette.primary.main, 0.1)}` : `0 3px 6px ${e(t.palette.common.black, 0.5)},
130
- 0 6px 16px ${e(t.palette.primary.light, 0.25)},
131
- 0 0 30px ${e(t.palette.primary.light, 0.15)}`
132
- },
133
- "button:hover &": {
134
- backgroundPosition: "100% 0, 50% 50%",
135
- transform: "scale(1.02)",
136
- textShadow: a === "light" ? `0 2px 4px ${e(t.palette.common.black, 0.12)},
137
- 0 4px 12px ${e(t.palette.primary.main, 0.15)},
138
- 0 0 20px ${e(t.palette.primary.main, 0.1)}` : `0 3px 6px ${e(t.palette.common.black, 0.5)},
139
- 0 6px 16px ${e(t.palette.primary.light, 0.25)},
140
- 0 0 30px ${e(t.palette.primary.light, 0.15)}`,
141
- animation: "textGlow 2s ease-in-out infinite alternate"
142
- },
143
- "@keyframes textGlow": {
144
- "0%": {
145
- filter: "brightness(1) contrast(1)"
146
- },
147
- "100%": {
148
- filter: "brightness(1.1) contrast(1.05)"
149
- }
150
- }
151
- },
152
- children: [
153
- p,
154
- /* @__PURE__ */ i.jsx(
155
- o,
156
- {
157
- sx: {
158
- position: "absolute",
159
- top: 0,
160
- left: 0,
161
- right: 0,
162
- bottom: 0,
163
- 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%)`,
164
- backgroundClip: "text",
165
- WebkitBackgroundClip: "text",
166
- color: "transparent",
167
- WebkitTextFillColor: "transparent",
168
- pointerEvents: "none",
169
- opacity: 0.6,
170
- transition: "opacity 0.3s ease",
171
- "button:hover &": {
172
- opacity: 0.8
173
- }
174
- },
175
- children: p
176
- }
177
- )
178
- ]
179
- }
180
- )
181
- }
182
- )
183
- }
184
- );
185
- };
186
- 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";
187
38
  try {
188
- 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" } } } };
189
40
  } catch {
190
41
  }
191
42
  export {
192
- n as default
43
+ t as default
193
44
  };
@@ -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
  ] }),
@@ -31,11 +31,11 @@ const o = ({
31
31
  };
32
32
  o.displayName = "SSkeleton";
33
33
  try {
34
- o.displayName = "SSkeleton", o.__docgenInfo = { description: "An enhanced skeleton loading component with pre-defined component presets for consistent loading states.", displayName: "SSkeleton", props: { variant: { defaultValue: { value: "text" }, description: "Visual variant of the skeleton", name: "variant", required: !1, type: { name: "enum", value: [{ value: '"text"' }, { value: '"rectangular"' }, { value: '"rounded"' }, { value: '"circular"' }] } }, height: { defaultValue: { value: "32" }, description: "Height of the skeleton (number for px, string for CSS units)", name: "height", required: !1, type: { name: "string | number" } }, width: { defaultValue: { value: "100%" }, description: "Width of the skeleton (number for px, string for CSS units)", name: "width", required: !1, type: { name: "string | number" } }, fontSize: { defaultValue: { value: "16px" }, description: "Font size for text variant skeletons", name: "fontSize", required: !1, type: { name: "string | number" } }, component: { defaultValue: null, description: "Pre-defined component preset for common UI elements", name: "component", required: !1, type: { name: "enum", value: [{ value: '"typography"' }, { value: '"button"' }, { value: '"checkbox"' }, { value: '"radio-button"' }, { value: '"avatar"' }, { value: '"rounded-avatar"' }, { value: '"icon-button"' }, { value: '"title-typography"' }] } } } };
34
+ o.displayName = "SSkeleton", o.__docgenInfo = { description: "An enhanced skeleton loading component with pre-defined component presets for consistent loading states.", displayName: "SSkeleton", props: { variant: { defaultValue: { value: "text" }, description: "Visual variant of the skeleton", name: "variant", required: !1, type: { name: "enum", value: [{ value: '"text"' }, { value: '"rectangular"' }, { value: '"rounded"' }, { value: '"circular"' }] } }, height: { defaultValue: { value: "32" }, description: "Height of the skeleton (number for px, string for CSS units)", name: "height", required: !1, type: { name: "string | number" } }, width: { defaultValue: { value: "100%" }, description: "Width of the skeleton (number for px, string for CSS units)", name: "width", required: !1, type: { name: "string | number" } }, fontSize: { defaultValue: { value: "16px" }, description: "Font size for text variant skeletons", name: "fontSize", required: !1, type: { name: "string | number" } }, component: { defaultValue: null, description: "Pre-defined component preset for common UI elements", name: "component", required: !1, type: { name: "enum", value: [{ value: '"button"' }, { value: '"checkbox"' }, { value: '"typography"' }, { value: '"radio-button"' }, { value: '"avatar"' }, { value: '"rounded-avatar"' }, { value: '"icon-button"' }, { value: '"title-typography"' }] } } } };
35
35
  } catch {
36
36
  }
37
37
  try {
38
- sskeleton.displayName = "sskeleton", sskeleton.__docgenInfo = { description: "An enhanced skeleton loading component with pre-defined component presets for consistent loading states.", displayName: "sskeleton", props: { variant: { defaultValue: { value: "text" }, description: "Visual variant of the skeleton", name: "variant", required: !1, type: { name: "enum", value: [{ value: '"text"' }, { value: '"rectangular"' }, { value: '"rounded"' }, { value: '"circular"' }] } }, height: { defaultValue: { value: "32" }, description: "Height of the skeleton (number for px, string for CSS units)", name: "height", required: !1, type: { name: "string | number" } }, width: { defaultValue: { value: "100%" }, description: "Width of the skeleton (number for px, string for CSS units)", name: "width", required: !1, type: { name: "string | number" } }, fontSize: { defaultValue: { value: "16px" }, description: "Font size for text variant skeletons", name: "fontSize", required: !1, type: { name: "string | number" } }, component: { defaultValue: null, description: "Pre-defined component preset for common UI elements", name: "component", required: !1, type: { name: "enum", value: [{ value: '"typography"' }, { value: '"button"' }, { value: '"checkbox"' }, { value: '"radio-button"' }, { value: '"avatar"' }, { value: '"rounded-avatar"' }, { value: '"icon-button"' }, { value: '"title-typography"' }] } } } };
38
+ sskeleton.displayName = "sskeleton", sskeleton.__docgenInfo = { description: "An enhanced skeleton loading component with pre-defined component presets for consistent loading states.", displayName: "sskeleton", props: { variant: { defaultValue: { value: "text" }, description: "Visual variant of the skeleton", name: "variant", required: !1, type: { name: "enum", value: [{ value: '"text"' }, { value: '"rectangular"' }, { value: '"rounded"' }, { value: '"circular"' }] } }, height: { defaultValue: { value: "32" }, description: "Height of the skeleton (number for px, string for CSS units)", name: "height", required: !1, type: { name: "string | number" } }, width: { defaultValue: { value: "100%" }, description: "Width of the skeleton (number for px, string for CSS units)", name: "width", required: !1, type: { name: "string | number" } }, fontSize: { defaultValue: { value: "16px" }, description: "Font size for text variant skeletons", name: "fontSize", required: !1, type: { name: "string | number" } }, component: { defaultValue: null, description: "Pre-defined component preset for common UI elements", name: "component", required: !1, type: { name: "enum", value: [{ value: '"button"' }, { value: '"checkbox"' }, { value: '"typography"' }, { value: '"radio-button"' }, { value: '"avatar"' }, { value: '"rounded-avatar"' }, { value: '"icon-button"' }, { value: '"title-typography"' }] } } } };
39
39
  } catch {
40
40
  }
41
41
  export {
@@ -34,11 +34,11 @@ const r = (t) => {
34
34
  };
35
35
  r.displayName = "StripeTextField";
36
36
  try {
37
- r.displayName = "StripeTextField", r.__docgenInfo = { description: "Generic Stripe text field component that integrates Stripe Elements with Material-UI styling.", displayName: "StripeTextField", props: { inputProps: { defaultValue: null, description: "Props passed directly to the Stripe Element", name: "inputProps", required: !1, type: { name: "CardExpiryElementProps | CardNumberElementProps | AuBankAccountElementProps | CardCvcElementProps | FpxBankElementProps | IbanElementProps | IdealBankElementProps" } }, labelErrorMessage: { defaultValue: null, description: "Custom error message to display when validation fails", name: "labelErrorMessage", required: !1, type: { name: "string" } }, onChange: { defaultValue: null, description: "Change handler for Stripe Element events", name: "onChange", required: !1, type: { name: "((event: StripeCardExpiryElementChangeEvent) => any) | ((event: StripeCardNumberElementChangeEvent) => any) | ... 5 more ..." } }, stripeElement: { defaultValue: null, description: "The Stripe Element component to render", name: "stripeElement", required: !1, type: { name: "StripeElement" } } } };
37
+ r.displayName = "StripeTextField", r.__docgenInfo = { description: "Generic Stripe text field component that integrates Stripe Elements with Material-UI styling.", displayName: "StripeTextField", props: { inputProps: { defaultValue: null, description: "Props passed directly to the Stripe Element", name: "inputProps", required: !1, type: { name: "CardNumberElementProps | CardExpiryElementProps | AuBankAccountElementProps | CardCvcElementProps | FpxBankElementProps | IbanElementProps | IdealBankElementProps" } }, labelErrorMessage: { defaultValue: null, description: "Custom error message to display when validation fails", name: "labelErrorMessage", required: !1, type: { name: "string" } }, onChange: { defaultValue: null, description: "Change handler for Stripe Element events", name: "onChange", required: !1, type: { name: "((event: StripeCardNumberElementChangeEvent) => any) | ((event: StripeCardExpiryElementChangeEvent) => any) | ... 5 more ..." } }, stripeElement: { defaultValue: null, description: "The Stripe Element component to render", name: "stripeElement", required: !1, type: { name: "StripeElement" } } } };
38
38
  } catch {
39
39
  }
40
40
  try {
41
- sstripe.displayName = "sstripe", sstripe.__docgenInfo = { description: "Generic Stripe text field component that integrates Stripe Elements with Material-UI styling.", displayName: "sstripe", props: { inputProps: { defaultValue: null, description: "Props passed directly to the Stripe Element", name: "inputProps", required: !1, type: { name: "CardExpiryElementProps | CardNumberElementProps | AuBankAccountElementProps | CardCvcElementProps | FpxBankElementProps | IbanElementProps | IdealBankElementProps" } }, labelErrorMessage: { defaultValue: null, description: "Custom error message to display when validation fails", name: "labelErrorMessage", required: !1, type: { name: "string" } }, onChange: { defaultValue: null, description: "Change handler for Stripe Element events", name: "onChange", required: !1, type: { name: "((event: StripeCardExpiryElementChangeEvent) => any) | ((event: StripeCardNumberElementChangeEvent) => any) | ... 5 more ..." } }, stripeElement: { defaultValue: null, description: "The Stripe Element component to render", name: "stripeElement", required: !1, type: { name: "StripeElement" } } } };
41
+ sstripe.displayName = "sstripe", sstripe.__docgenInfo = { description: "Generic Stripe text field component that integrates Stripe Elements with Material-UI styling.", displayName: "sstripe", props: { inputProps: { defaultValue: null, description: "Props passed directly to the Stripe Element", name: "inputProps", required: !1, type: { name: "CardNumberElementProps | CardExpiryElementProps | AuBankAccountElementProps | CardCvcElementProps | FpxBankElementProps | IbanElementProps | IdealBankElementProps" } }, labelErrorMessage: { defaultValue: null, description: "Custom error message to display when validation fails", name: "labelErrorMessage", required: !1, type: { name: "string" } }, onChange: { defaultValue: null, description: "Change handler for Stripe Element events", name: "onChange", required: !1, type: { name: "((event: StripeCardNumberElementChangeEvent) => any) | ((event: StripeCardExpiryElementChangeEvent) => any) | ... 5 more ..." } }, stripeElement: { defaultValue: null, description: "The Stripe Element component to render", name: "stripeElement", required: !1, type: { name: "StripeElement" } } } };
42
42
  } catch {
43
43
  }
44
44
  export {
@@ -24,11 +24,11 @@ const t = u(
24
24
  );
25
25
  t.displayName = "STabPanel";
26
26
  try {
27
- t.displayName = "STabPanel", t.__docgenInfo = { description: "Individual tab content panel component with advanced mounting controls.", displayName: "STabPanel", props: { children: { defaultValue: null, description: "Content to display in the tab panel", name: "children", required: !1, type: { name: "ReactNode" } }, index: { defaultValue: null, description: "Index of this specific tab panel (0-based)", name: "index", required: !0, type: { name: "number" } }, value: { defaultValue: null, description: "Current active tab index from the parent tabs component", name: "value", required: !0, type: { name: "number" } }, keepMounted: { defaultValue: { value: "false" }, description: "Keep the panel mounted in the DOM when not active", name: "keepMounted", required: !1, type: { name: "boolean" } } } };
27
+ t.displayName = "STabPanel", t.__docgenInfo = { description: "Individual tab content panel component with advanced mounting controls.", displayName: "STabPanel", props: { children: { defaultValue: null, description: "Content to display in the tab panel", name: "children", required: !1, type: { name: "ReactNode" } }, value: { defaultValue: null, description: "Current active tab index from the parent tabs component", name: "value", required: !0, type: { name: "number" } }, index: { defaultValue: null, description: "Index of this specific tab panel (0-based)", name: "index", required: !0, type: { name: "number" } }, keepMounted: { defaultValue: { value: "false" }, description: "Keep the panel mounted in the DOM when not active", name: "keepMounted", required: !1, type: { name: "boolean" } } } };
28
28
  } catch {
29
29
  }
30
30
  try {
31
- stabpanel.displayName = "stabpanel", stabpanel.__docgenInfo = { description: "Individual tab content panel component with advanced mounting controls.", displayName: "stabpanel", props: { children: { defaultValue: null, description: "Content to display in the tab panel", name: "children", required: !1, type: { name: "ReactNode" } }, index: { defaultValue: null, description: "Index of this specific tab panel (0-based)", name: "index", required: !0, type: { name: "number" } }, value: { defaultValue: null, description: "Current active tab index from the parent tabs component", name: "value", required: !0, type: { name: "number" } }, keepMounted: { defaultValue: { value: "false" }, description: "Keep the panel mounted in the DOM when not active", name: "keepMounted", required: !1, type: { name: "boolean" } } } };
31
+ stabpanel.displayName = "stabpanel", stabpanel.__docgenInfo = { description: "Individual tab content panel component with advanced mounting controls.", displayName: "stabpanel", props: { children: { defaultValue: null, description: "Content to display in the tab panel", name: "children", required: !1, type: { name: "ReactNode" } }, value: { defaultValue: null, description: "Current active tab index from the parent tabs component", name: "value", required: !0, type: { name: "number" } }, index: { defaultValue: null, description: "Index of this specific tab panel (0-based)", name: "index", required: !0, type: { name: "number" } }, keepMounted: { defaultValue: { value: "false" }, description: "Keep the panel mounted in the DOM when not active", name: "keepMounted", required: !1, type: { name: "boolean" } } } };
32
32
  } catch {
33
33
  }
34
34
  export {