@salesmind-ai/design-system 0.3.1 → 0.3.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 (197) hide show
  1. package/dist/admin/index.cjs +68 -2928
  2. package/dist/admin/index.cjs.map +1 -1
  3. package/dist/admin/index.js +5 -2915
  4. package/dist/admin/index.js.map +1 -1
  5. package/dist/blog/index.cjs +53 -1064
  6. package/dist/blog/index.cjs.map +1 -1
  7. package/dist/blog/index.js +8 -1054
  8. package/dist/blog/index.js.map +1 -1
  9. package/dist/charts/index.cjs +46 -2694
  10. package/dist/charts/index.cjs.map +1 -1
  11. package/dist/charts/index.js +3 -2680
  12. package/dist/charts/index.js.map +1 -1
  13. package/dist/chunk-2GARWEJK.js +17 -0
  14. package/dist/chunk-2GARWEJK.js.map +1 -0
  15. package/dist/chunk-3NKRFUAR.js +37 -0
  16. package/dist/chunk-3NKRFUAR.js.map +1 -0
  17. package/dist/chunk-3TGSIILM.cjs +201 -0
  18. package/dist/chunk-3TGSIILM.cjs.map +1 -0
  19. package/dist/chunk-4GM5BGBN.cjs +801 -0
  20. package/dist/chunk-4GM5BGBN.cjs.map +1 -0
  21. package/dist/chunk-5LGDEZWY.cjs +2434 -0
  22. package/dist/chunk-5LGDEZWY.cjs.map +1 -0
  23. package/dist/chunk-6H4DSTXR.js +786 -0
  24. package/dist/chunk-6H4DSTXR.js.map +1 -0
  25. package/dist/chunk-6UNG76Y2.js +153 -0
  26. package/dist/chunk-6UNG76Y2.js.map +1 -0
  27. package/dist/chunk-7PX2AZ6Y.js +39 -0
  28. package/dist/chunk-7PX2AZ6Y.js.map +1 -0
  29. package/dist/chunk-B6AVAX4F.js +1415 -0
  30. package/dist/chunk-B6AVAX4F.js.map +1 -0
  31. package/dist/chunk-BILT5KD3.js +264 -0
  32. package/dist/chunk-BILT5KD3.js.map +1 -0
  33. package/dist/chunk-C2BCDNAV.js +24 -0
  34. package/dist/chunk-C2BCDNAV.js.map +1 -0
  35. package/dist/chunk-CH42VPWE.cjs +421 -0
  36. package/dist/chunk-CH42VPWE.cjs.map +1 -0
  37. package/dist/chunk-CJ2MKVAF.cjs +46 -0
  38. package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
  39. package/dist/chunk-DP74LUXG.cjs +98 -0
  40. package/dist/chunk-DP74LUXG.cjs.map +1 -0
  41. package/dist/chunk-E7D6EKJ4.cjs +44 -0
  42. package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
  43. package/dist/chunk-ECXBTUH6.cjs +584 -0
  44. package/dist/chunk-ECXBTUH6.cjs.map +1 -0
  45. package/dist/chunk-EFRAP5ES.js +157 -0
  46. package/dist/chunk-EFRAP5ES.js.map +1 -0
  47. package/dist/chunk-F6YYWMME.js +485 -0
  48. package/dist/chunk-F6YYWMME.js.map +1 -0
  49. package/dist/chunk-FAFAP4L5.js +183 -0
  50. package/dist/chunk-FAFAP4L5.js.map +1 -0
  51. package/dist/chunk-GUZIMHWS.js +1608 -0
  52. package/dist/chunk-GUZIMHWS.js.map +1 -0
  53. package/dist/chunk-H2Y6BSTL.cjs +69 -0
  54. package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
  55. package/dist/chunk-HN4PHABT.js +126 -0
  56. package/dist/chunk-HN4PHABT.js.map +1 -0
  57. package/dist/chunk-HRENHNDJ.js +211 -0
  58. package/dist/chunk-HRENHNDJ.js.map +1 -0
  59. package/dist/chunk-I75BFEYT.cjs +2561 -0
  60. package/dist/chunk-I75BFEYT.cjs.map +1 -0
  61. package/dist/chunk-IFRATNLU.js +562 -0
  62. package/dist/chunk-IFRATNLU.js.map +1 -0
  63. package/dist/chunk-IYPXJ6YC.cjs +69 -0
  64. package/dist/chunk-IYPXJ6YC.cjs.map +1 -0
  65. package/dist/chunk-JPJN4YBC.js +409 -0
  66. package/dist/chunk-JPJN4YBC.js.map +1 -0
  67. package/dist/chunk-KBA2LFBG.js +62 -0
  68. package/dist/chunk-KBA2LFBG.js.map +1 -0
  69. package/dist/chunk-KCKUSU2M.cjs +166 -0
  70. package/dist/chunk-KCKUSU2M.cjs.map +1 -0
  71. package/dist/chunk-KJ2OXQF4.js +287 -0
  72. package/dist/chunk-KJ2OXQF4.js.map +1 -0
  73. package/dist/chunk-KNQEIU7O.cjs +1202 -0
  74. package/dist/chunk-KNQEIU7O.cjs.map +1 -0
  75. package/dist/chunk-KVGSVGRK.cjs +569 -0
  76. package/dist/chunk-KVGSVGRK.cjs.map +1 -0
  77. package/dist/chunk-L352JRV6.cjs +105 -0
  78. package/dist/chunk-L352JRV6.cjs.map +1 -0
  79. package/dist/chunk-LJADZITX.cjs +298 -0
  80. package/dist/chunk-LJADZITX.cjs.map +1 -0
  81. package/dist/chunk-LMJPWXTZ.cjs +194 -0
  82. package/dist/chunk-LMJPWXTZ.cjs.map +1 -0
  83. package/dist/chunk-LOWEAQST.js +701 -0
  84. package/dist/chunk-LOWEAQST.js.map +1 -0
  85. package/dist/chunk-MDB2WCRQ.cjs +137 -0
  86. package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
  87. package/dist/chunk-MQDEE7HC.cjs +283 -0
  88. package/dist/chunk-MQDEE7HC.cjs.map +1 -0
  89. package/dist/chunk-MQRB634A.cjs +34 -0
  90. package/dist/chunk-MQRB634A.cjs.map +1 -0
  91. package/dist/chunk-MTI27RDV.js +185 -0
  92. package/dist/chunk-MTI27RDV.js.map +1 -0
  93. package/dist/chunk-MU6GW5ZV.js +2317 -0
  94. package/dist/chunk-MU6GW5ZV.js.map +1 -0
  95. package/dist/chunk-NN3TUHIH.js +28 -0
  96. package/dist/chunk-NN3TUHIH.js.map +1 -0
  97. package/dist/chunk-NT4LBP7D.cjs +111 -0
  98. package/dist/chunk-NT4LBP7D.cjs.map +1 -0
  99. package/dist/chunk-OLV7OD3X.cjs +502 -0
  100. package/dist/chunk-OLV7OD3X.cjs.map +1 -0
  101. package/dist/chunk-OXNXEQY7.js +2538 -0
  102. package/dist/chunk-OXNXEQY7.js.map +1 -0
  103. package/dist/chunk-P5BOFE5A.js +546 -0
  104. package/dist/chunk-P5BOFE5A.js.map +1 -0
  105. package/dist/chunk-Q2MFGYTE.cjs +1449 -0
  106. package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
  107. package/dist/chunk-Q75DBVDY.cjs +68 -0
  108. package/dist/chunk-Q75DBVDY.cjs.map +1 -0
  109. package/dist/chunk-REQ5Q6ZI.js +1022 -0
  110. package/dist/chunk-REQ5Q6ZI.js.map +1 -0
  111. package/dist/chunk-SICKWUWB.js +62 -0
  112. package/dist/chunk-SICKWUWB.js.map +1 -0
  113. package/dist/chunk-T343CCH5.js +1190 -0
  114. package/dist/chunk-T343CCH5.js.map +1 -0
  115. package/dist/chunk-TEC62D4A.cjs +1624 -0
  116. package/dist/chunk-TEC62D4A.cjs.map +1 -0
  117. package/dist/chunk-TW5JB35D.js +2122 -0
  118. package/dist/chunk-TW5JB35D.js.map +1 -0
  119. package/dist/chunk-VC5LMUVQ.cjs +20 -0
  120. package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
  121. package/dist/chunk-VM7WFMKI.cjs +76 -0
  122. package/dist/chunk-VM7WFMKI.cjs.map +1 -0
  123. package/dist/chunk-W2WTP6HS.cjs +233 -0
  124. package/dist/chunk-W2WTP6HS.cjs.map +1 -0
  125. package/dist/chunk-WH7PYHZY.cjs +35 -0
  126. package/dist/chunk-WH7PYHZY.cjs.map +1 -0
  127. package/dist/chunk-XQZVY7JJ.cjs +717 -0
  128. package/dist/chunk-XQZVY7JJ.cjs.map +1 -0
  129. package/dist/chunk-XU3OMQ7V.js +98 -0
  130. package/dist/chunk-XU3OMQ7V.js.map +1 -0
  131. package/dist/chunk-XWPDRMZG.js +62 -0
  132. package/dist/chunk-XWPDRMZG.js.map +1 -0
  133. package/dist/chunk-Y3CPKNB7.js +67 -0
  134. package/dist/chunk-Y3CPKNB7.js.map +1 -0
  135. package/dist/chunk-YNVRDD2P.js +98 -0
  136. package/dist/chunk-YNVRDD2P.js.map +1 -0
  137. package/dist/chunk-YSYR54XR.js +92 -0
  138. package/dist/chunk-YSYR54XR.js.map +1 -0
  139. package/dist/chunk-YTYDQBVY.cjs +162 -0
  140. package/dist/chunk-YTYDQBVY.cjs.map +1 -0
  141. package/dist/chunk-ZDLOA2UT.cjs +1042 -0
  142. package/dist/chunk-ZDLOA2UT.cjs.map +1 -0
  143. package/dist/chunk-ZWUKRCOJ.cjs +2162 -0
  144. package/dist/chunk-ZWUKRCOJ.cjs.map +1 -0
  145. package/dist/core/index.cjs +807 -4333
  146. package/dist/core/index.cjs.map +1 -1
  147. package/dist/core/index.js +14 -4130
  148. package/dist/core/index.js.map +1 -1
  149. package/dist/i18n/index.cjs +86 -558
  150. package/dist/i18n/index.cjs.map +1 -1
  151. package/dist/i18n/index.js +1 -544
  152. package/dist/i18n/index.js.map +1 -1
  153. package/dist/index.cjs +1432 -17140
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.js +31 -16785
  156. package/dist/index.js.map +1 -1
  157. package/dist/marketing/index.cjs +142 -3072
  158. package/dist/marketing/index.cjs.map +1 -1
  159. package/dist/marketing/index.js +11 -3042
  160. package/dist/marketing/index.js.map +1 -1
  161. package/dist/motion/index.cjs +26 -1222
  162. package/dist/motion/index.cjs.map +1 -1
  163. package/dist/motion/index.js +2 -1215
  164. package/dist/motion/index.js.map +1 -1
  165. package/dist/nav/index.cjs +101 -1518
  166. package/dist/nav/index.cjs.map +1 -1
  167. package/dist/nav/index.js +4 -1498
  168. package/dist/nav/index.js.map +1 -1
  169. package/dist/report/index.cjs +171 -2403
  170. package/dist/report/index.cjs.map +1 -1
  171. package/dist/report/index.js +3 -2363
  172. package/dist/report/index.js.map +1 -1
  173. package/dist/sections/index.cjs +28 -378
  174. package/dist/sections/index.cjs.map +1 -1
  175. package/dist/sections/index.js +4 -372
  176. package/dist/sections/index.js.map +1 -1
  177. package/dist/social-proof/index.cjs +53 -1250
  178. package/dist/social-proof/index.cjs.map +1 -1
  179. package/dist/social-proof/index.js +6 -1235
  180. package/dist/social-proof/index.js.map +1 -1
  181. package/dist/theme/index.cjs +38 -565
  182. package/dist/theme/index.cjs.map +1 -1
  183. package/dist/theme/index.js +2 -555
  184. package/dist/theme/index.js.map +1 -1
  185. package/dist/web/client/index.cjs +38 -491
  186. package/dist/web/client/index.cjs.map +1 -1
  187. package/dist/web/client/index.js +4 -483
  188. package/dist/web/client/index.js.map +1 -1
  189. package/dist/web/index.cjs +158 -1346
  190. package/dist/web/index.cjs.map +1 -1
  191. package/dist/web/index.js +9 -1305
  192. package/dist/web/index.js.map +1 -1
  193. package/dist/web/server/index.cjs +26 -563
  194. package/dist/web/server/index.cjs.map +1 -1
  195. package/dist/web/server/index.js +1 -560
  196. package/dist/web/server/index.js.map +1 -1
  197. package/package.json +11 -1
@@ -0,0 +1,717 @@
1
+ 'use strict';
2
+
3
+ var chunkL352JRV6_cjs = require('./chunk-L352JRV6.cjs');
4
+ var chunkIYPXJ6YC_cjs = require('./chunk-IYPXJ6YC.cjs');
5
+ var chunkLJADZITX_cjs = require('./chunk-LJADZITX.cjs');
6
+ var React3 = require('react');
7
+ var clsx4 = require('clsx');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var framerMotion = require('framer-motion');
10
+ var dialog = require('@base-ui/react/dialog');
11
+
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var React3__default = /*#__PURE__*/_interopDefault(React3);
15
+ var clsx4__default = /*#__PURE__*/_interopDefault(clsx4);
16
+
17
+ var StarRating = React3.forwardRef(
18
+ ({
19
+ value,
20
+ max = 5,
21
+ size = "md",
22
+ animate = false,
23
+ showValue = false,
24
+ valueLabel,
25
+ className,
26
+ ...props
27
+ }, ref) => {
28
+ const [visible, setVisible] = React3.useState(!animate);
29
+ const containerRef = React3.useRef(null);
30
+ React3.useEffect(() => {
31
+ if (!animate) return;
32
+ if (typeof window !== "undefined") {
33
+ const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
34
+ if (mq.matches) {
35
+ setVisible(true);
36
+ return;
37
+ }
38
+ }
39
+ const target = containerRef.current;
40
+ if (!target) return;
41
+ const observer = new IntersectionObserver(
42
+ ([entry]) => {
43
+ if (entry.isIntersecting) {
44
+ setVisible(true);
45
+ observer.disconnect();
46
+ }
47
+ },
48
+ { threshold: 0.5 }
49
+ );
50
+ observer.observe(target);
51
+ return () => observer.disconnect();
52
+ }, [animate]);
53
+ const clampedValue = Math.min(Math.max(value, 0), max);
54
+ const stars = Array.from({ length: max }, (_, i) => {
55
+ const starIndex = i + 1;
56
+ const fillPercent = clampedValue >= starIndex ? 100 : clampedValue > starIndex - 1 ? (clampedValue - (starIndex - 1)) * 100 : 0;
57
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58
+ "span",
59
+ {
60
+ className: clsx4__default.default(
61
+ "ds-star-rating__star",
62
+ visible && "ds-star-rating__star--visible"
63
+ ),
64
+ style: {
65
+ "--star-fill": `${fillPercent}%`,
66
+ "--star-delay": animate ? `${i * 100}ms` : "0ms"
67
+ },
68
+ children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx(
70
+ "svg",
71
+ {
72
+ viewBox: "0 0 24 24",
73
+ fill: "none",
74
+ xmlns: "http://www.w3.org/2000/svg",
75
+ className: "ds-star-rating__svg",
76
+ "aria-hidden": "true",
77
+ children: /* @__PURE__ */ jsxRuntime.jsx(
78
+ "path",
79
+ {
80
+ d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
81
+ className: "ds-star-rating__empty"
82
+ }
83
+ )
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsxRuntime.jsx(
87
+ "svg",
88
+ {
89
+ viewBox: "0 0 24 24",
90
+ fill: "none",
91
+ xmlns: "http://www.w3.org/2000/svg",
92
+ className: "ds-star-rating__svg ds-star-rating__svg--filled",
93
+ "aria-hidden": "true",
94
+ style: {
95
+ clipPath: `inset(0 ${100 - fillPercent}% 0 0)`
96
+ },
97
+ children: /* @__PURE__ */ jsxRuntime.jsx(
98
+ "path",
99
+ {
100
+ d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
101
+ className: "ds-star-rating__filled"
102
+ }
103
+ )
104
+ }
105
+ )
106
+ ]
107
+ },
108
+ i
109
+ );
110
+ });
111
+ return /* @__PURE__ */ jsxRuntime.jsxs(
112
+ "div",
113
+ {
114
+ ref: (node) => {
115
+ containerRef.current = node;
116
+ if (typeof ref === "function") ref(node);
117
+ else if (ref) ref.current = node;
118
+ },
119
+ className: clsx4__default.default("ds-star-rating", `ds-star-rating--${size}`, className),
120
+ role: "img",
121
+ "aria-label": `${clampedValue} out of ${max} stars`,
122
+ ...props,
123
+ children: [
124
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-star-rating__stars", children: stars }),
125
+ showValue && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-star-rating__value", children: [
126
+ clampedValue.toLocaleString(void 0, {
127
+ minimumFractionDigits: clampedValue % 1 !== 0 ? 1 : 0,
128
+ maximumFractionDigits: 1
129
+ }),
130
+ valueLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-star-rating__value-label", children: valueLabel })
131
+ ] })
132
+ ]
133
+ }
134
+ );
135
+ }
136
+ );
137
+ StarRating.displayName = "StarRating";
138
+ var TrustpilotIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2l2.9 8.9H24l-7.35 5.34 2.81 8.64L12 19.56l-7.46 5.32 2.81-8.64L0 10.9h9.1L12 2z", fill: "#00B67A" }) });
139
+ var G2Icon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
140
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z", fill: "#FF492C" }),
141
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: "50%", y: "54%", dominantBaseline: "middle", textAnchor: "middle", fill: "white", fontWeight: "bold", fontSize: "11", fontFamily: "Arial, sans-serif", children: "G2" })
142
+ ] });
143
+ var GoogleIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
144
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z", fill: "#4285F4" }),
145
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z", fill: "#34A853" }),
146
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18A10.96 10.96 0 001 12c0 1.77.42 3.45 1.18 4.93l3.66-2.84z", fill: "#FBBC05" }),
147
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z", fill: "#EA4335" })
148
+ ] });
149
+ var ChromeWebStoreIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
150
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: "#4285F4", opacity: "0.1", stroke: "#4285F4", strokeWidth: "1.5" }),
151
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0 8.5c-1.93 0-3.5-1.57-3.5-3.5S10.07 8.5 12 8.5s3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z", fill: "#4285F4" }),
152
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 10.5L4 5.5", stroke: "#EA4335", strokeWidth: "1.5", strokeLinecap: "round" }),
153
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16.5 10.5L20 5.5", stroke: "#FBBC05", strokeWidth: "1.5", strokeLinecap: "round" }),
154
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 17l-3.5 5", stroke: "#34A853", strokeWidth: "1.5", strokeLinecap: "round" })
155
+ ] });
156
+ var PLATFORM_ICONS = {
157
+ trustpilot: TrustpilotIcon,
158
+ g2: G2Icon,
159
+ google: GoogleIcon,
160
+ "chrome-web-store": ChromeWebStoreIcon
161
+ };
162
+ var PLATFORM_LABELS = {
163
+ trustpilot: "Trustpilot",
164
+ g2: "G2",
165
+ google: "Google",
166
+ "chrome-web-store": "Chrome Web Store"
167
+ };
168
+ var PLATFORM_COLORS = {
169
+ trustpilot: "#00B67A",
170
+ g2: "#FF492C",
171
+ google: "#4285F4",
172
+ "chrome-web-store": "#4285F4"
173
+ };
174
+ var PlatformBadge = React3.forwardRef(
175
+ ({
176
+ platform,
177
+ variant = "icon-label",
178
+ rating,
179
+ count,
180
+ size = "sm",
181
+ className,
182
+ ...props
183
+ }, ref) => {
184
+ const Icon = PLATFORM_ICONS[platform];
185
+ const label = PLATFORM_LABELS[platform];
186
+ const accentColor = PLATFORM_COLORS[platform];
187
+ const iconSize = size === "sm" ? 18 : 22;
188
+ return /* @__PURE__ */ jsxRuntime.jsxs(
189
+ "div",
190
+ {
191
+ ref,
192
+ role: "img",
193
+ className: clsx4__default.default(
194
+ "ds-platform-badge",
195
+ `ds-platform-badge--${variant}`,
196
+ `ds-platform-badge--${size}`,
197
+ className
198
+ ),
199
+ style: { "--platform-accent": accentColor },
200
+ "aria-label": variant === "full" && rating ? `${label}: ${rating} stars${count ? ` from ${count} reviews` : ""}` : label,
201
+ ...props,
202
+ children: [
203
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-platform-badge__icon", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: iconSize }) }),
204
+ variant !== "icon-only" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-platform-badge__label", children: label }),
205
+ variant === "full" && rating != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-platform-badge__rating", children: [
206
+ /* @__PURE__ */ jsxRuntime.jsx(StarRating, { value: rating, size: "sm" }),
207
+ count != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-platform-badge__count", children: [
208
+ "(",
209
+ count,
210
+ ")"
211
+ ] })
212
+ ] })
213
+ ]
214
+ }
215
+ );
216
+ }
217
+ );
218
+ PlatformBadge.displayName = "PlatformBadge";
219
+ var PlayIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 5v14l11-7z" }) });
220
+ var SocialProofCard = React3.forwardRef(
221
+ ({
222
+ variant = "simple",
223
+ content,
224
+ author,
225
+ media,
226
+ sourceIcon,
227
+ platform,
228
+ starRating,
229
+ date,
230
+ badges,
231
+ ctaText,
232
+ href,
233
+ className,
234
+ children,
235
+ animationDelay,
236
+ headline,
237
+ logo,
238
+ industry,
239
+ metrics,
240
+ ...props
241
+ }, ref) => {
242
+ const cardClass = clsx4__default.default(
243
+ "ds-social-card",
244
+ `ds-social-card--${variant}`,
245
+ animationDelay != null && "ds-social-card--animated",
246
+ className
247
+ );
248
+ const cardStyle = animationDelay != null ? { "--card-delay": `${animationDelay}ms` } : void 0;
249
+ if (variant === "rating-only") {
250
+ const inner = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__rating-row", children: [
251
+ starRating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { value: starRating, size: "lg" }),
252
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__meta", children: [
253
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__name", children: author.name }),
254
+ (author.role || author.company) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__role", children: [
255
+ author.role,
256
+ author.role && author.company && " \xB7 ",
257
+ author.company
258
+ ] })
259
+ ] }),
260
+ platform && /* @__PURE__ */ jsxRuntime.jsx(PlatformBadge, { platform, variant: "icon-label", size: "sm" })
261
+ ] }) });
262
+ if (href) {
263
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { ref, href, context: "social-proof-card", className: cardClass, style: cardStyle, openInNewTab: false, ...props, children: inner });
264
+ }
265
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cardClass, style: cardStyle, ...props, children: inner });
266
+ }
267
+ if (variant === "case-study") {
268
+ const defaultCta2 = ctaText || "Read Case Study \u2192";
269
+ const inner = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
270
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__media", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: media.src, alt: media.alt || `${author.company} case study` }) }),
271
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__content", children: [
272
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__cs-header", children: [
273
+ logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__cs-logo", children: logo }),
274
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__cs-company", children: [
275
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__name", children: author.company || author.name }),
276
+ industry && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__cs-industry", children: industry })
277
+ ] })
278
+ ] }),
279
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-social-card__cs-headline", children: headline }),
280
+ metrics && metrics.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__cs-metrics", children: metrics.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__cs-metric", children: [
281
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__cs-metric-value", children: [
282
+ m.prefix,
283
+ m.value,
284
+ m.suffix
285
+ ] }),
286
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__cs-metric-label", children: m.label })
287
+ ] }, i)) }),
288
+ content && /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "ds-social-card__quote ds-social-card__quote--excerpt", children: [
289
+ "\u201C",
290
+ content,
291
+ "\u201D"
292
+ ] }),
293
+ href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__cta", children: defaultCta2 })
294
+ ] })
295
+ ] });
296
+ if (href) {
297
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { ref, href, context: "social-proof-card", className: cardClass, style: cardStyle, openInNewTab: false, ...props, children: inner });
298
+ }
299
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cardClass, style: cardStyle, ...props, children: inner });
300
+ }
301
+ if (variant === "video") {
302
+ const defaultCta2 = ctaText || "Watch Video \u2192";
303
+ const inner = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
304
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__media", children: [
305
+ media ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: media.src, alt: media.alt || `${author.name} video` }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__media-placeholder" }),
306
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__play", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__play-icon", children: /* @__PURE__ */ jsxRuntime.jsx(PlayIcon, {}) }) }),
307
+ badges && badges.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__badges", children: badges.map((badge, idx) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__badge", children: badge }, idx)) })
308
+ ] }),
309
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__content", children: [
310
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__author", children: [
311
+ author.avatar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__avatar", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: author.avatar, alt: author.name }) }),
312
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__meta", children: [
313
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__name", children: author.name }),
314
+ (author.role || author.company) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__role", children: [
315
+ author.role,
316
+ author.role && author.company && " \xB7 ",
317
+ author.company
318
+ ] })
319
+ ] }),
320
+ platform && /* @__PURE__ */ jsxRuntime.jsx(PlatformBadge, { platform, variant: "icon-only", size: "sm" })
321
+ ] }),
322
+ content && /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "ds-social-card__quote", children: content }),
323
+ href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__cta", children: defaultCta2 })
324
+ ] })
325
+ ] });
326
+ if (href) {
327
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { ref, href, context: "social-proof-card", className: cardClass, style: cardStyle, openInNewTab: false, ...props, children: inner });
328
+ }
329
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cardClass, style: cardStyle, ...props, children: inner });
330
+ }
331
+ if (variant === "social") {
332
+ const inner = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__content", children: [
333
+ (platform || sourceIcon) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__source", children: platform ? /* @__PURE__ */ jsxRuntime.jsx(PlatformBadge, { platform, variant: "icon-only", size: "sm" }) : sourceIcon }),
334
+ content && /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "ds-social-card__quote ds-social-card__quote--clamp", children: content }),
335
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__author", children: [
336
+ author.avatar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__avatar", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: author.avatar, alt: author.name }) }),
337
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__meta", children: [
338
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__name", children: author.name }),
339
+ (author.role || author.company) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__role", children: [
340
+ author.role,
341
+ author.role && author.company && " \xB7 ",
342
+ author.company
343
+ ] }),
344
+ date && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__role", children: date })
345
+ ] })
346
+ ] }),
347
+ starRating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { value: starRating, size: "sm" }),
348
+ children
349
+ ] }) });
350
+ if (href) {
351
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { ref, href, context: "social-proof-card", className: cardClass, style: cardStyle, openInNewTab: false, ...props, children: inner });
352
+ }
353
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cardClass, style: cardStyle, ...props, children: inner });
354
+ }
355
+ const BadgeList = badges && badges.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__badges", children: badges.map((badge, idx) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__badge", children: badge }, idx)) });
356
+ const defaultCta = ctaText || "Read Story \u2192";
357
+ const simpleInner = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__content", children: [
358
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__deco-quote", "aria-hidden": "true", children: "\u201C" }),
359
+ (platform || sourceIcon) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__source", children: platform ? /* @__PURE__ */ jsxRuntime.jsx(PlatformBadge, { platform, variant: "icon-only", size: "sm" }) : sourceIcon }),
360
+ BadgeList,
361
+ content && /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "ds-social-card__quote", children: content }),
362
+ starRating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { value: starRating, size: "sm" }),
363
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__author", children: [
364
+ author.avatar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__avatar", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: author.avatar, alt: author.name }) }),
365
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__meta", children: [
366
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__name", children: [
367
+ author.name,
368
+ author.handle && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__handle", children: [
369
+ "@",
370
+ author.handle
371
+ ] })
372
+ ] }),
373
+ (author.role || author.company) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__role", children: [
374
+ author.role,
375
+ author.role && author.company && " \xB7 ",
376
+ author.company
377
+ ] }),
378
+ date && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__role", children: date })
379
+ ] })
380
+ ] }),
381
+ children,
382
+ href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__cta", children: defaultCta })
383
+ ] });
384
+ if (href) {
385
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { ref, href, context: "social-proof-card", className: cardClass, style: cardStyle, openInNewTab: false, ...props, children: simpleInner });
386
+ }
387
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cardClass, style: cardStyle, ...props, children: simpleInner });
388
+ }
389
+ );
390
+ SocialProofCard.displayName = "SocialProofCard";
391
+ var SocialProofGrid = React3.forwardRef(
392
+ ({ columns = 3, masonry = false, staggered = false, className, children, ...props }, ref) => {
393
+ const enhancedChildren = staggered ? React3__default.default.Children.map(children, (child, index) => {
394
+ if (!React3__default.default.isValidElement(child)) return child;
395
+ const delay = Math.min(index * 50, 600);
396
+ const childProps = child.props;
397
+ return React3__default.default.cloneElement(child, {
398
+ style: { ...childProps.style, "--card-delay": `${delay}ms` },
399
+ className: clsx4__default.default(childProps.className, "ds-social-card--animated")
400
+ });
401
+ }) : children;
402
+ return /* @__PURE__ */ jsxRuntime.jsx(
403
+ chunkIYPXJ6YC_cjs.SectionShell,
404
+ {
405
+ ref,
406
+ padding: "md",
407
+ className: clsx4__default.default("ds-social-proof", className),
408
+ ...props,
409
+ children: masonry ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-masonry", children: enhancedChildren }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4__default.default("ds-social-grid", `ds-social-grid--${columns}-col`), children: enhancedChildren })
410
+ }
411
+ );
412
+ }
413
+ );
414
+ SocialProofGrid.displayName = "SocialProofGrid";
415
+ var LogoItemRender = ({ item, className }) => {
416
+ const content = item.logo ? item.logo : /* @__PURE__ */ jsxRuntime.jsx(
417
+ "img",
418
+ {
419
+ src: item.src,
420
+ alt: item.alt,
421
+ width: 120,
422
+ height: 48,
423
+ loading: "lazy",
424
+ decoding: "async",
425
+ style: { objectFit: "contain", width: "auto", height: "100%" }
426
+ }
427
+ );
428
+ const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
429
+ content,
430
+ item.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-logos__badge", children: item.badge })
431
+ ] });
432
+ if (item.href) {
433
+ const isInternal = item.href.startsWith("/");
434
+ return /* @__PURE__ */ jsxRuntime.jsx(
435
+ chunkLJADZITX_cjs.OutboundLink,
436
+ {
437
+ href: item.href,
438
+ context: "social-proof-logo",
439
+ className: clsx4__default.default("ds-social-logos__item", className),
440
+ title: item.alt,
441
+ openInNewTab: !isInternal,
442
+ children: innerContent
443
+ }
444
+ );
445
+ }
446
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4__default.default("ds-social-logos__item", className), title: item.alt, children: innerContent });
447
+ };
448
+ var SocialProofLogos = React3.forwardRef(
449
+ ({ title, logos, variant = "grid", speed = 40, className, ...props }, ref) => {
450
+ return /* @__PURE__ */ jsxRuntime.jsxs(
451
+ chunkIYPXJ6YC_cjs.SectionShell,
452
+ {
453
+ ref,
454
+ padding: "sm",
455
+ className: clsx4__default.default("ds-social-logos", className),
456
+ ...props,
457
+ children: [
458
+ title && /* @__PURE__ */ jsxRuntime.jsx(
459
+ "p",
460
+ {
461
+ className: "ds-section-header__eyebrow",
462
+ style: { textAlign: "center", marginBottom: "var(--space-8)" },
463
+ children: title
464
+ }
465
+ ),
466
+ variant === "marquee" ? /* @__PURE__ */ jsxRuntime.jsxs(
467
+ "div",
468
+ {
469
+ className: "ds-social-logos__marquee",
470
+ style: { "--marquee-duration": `${speed}s` },
471
+ children: [
472
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-logos__track", children: logos.map((item) => /* @__PURE__ */ jsxRuntime.jsx(LogoItemRender, { item }, `set1-${item.id}`)) }),
473
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-logos__track", "aria-hidden": "true", children: logos.map((item) => /* @__PURE__ */ jsxRuntime.jsx(LogoItemRender, { item }, `set2-${item.id}`)) })
474
+ ]
475
+ }
476
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-grid ds-social-grid--4-col", style: { alignItems: "center" }, children: logos.map((item) => /* @__PURE__ */ jsxRuntime.jsx(LogoItemRender, { item }, item.id)) })
477
+ ]
478
+ }
479
+ );
480
+ }
481
+ );
482
+ SocialProofLogos.displayName = "SocialProofLogos";
483
+ var PlayIconLarge = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "64", height: "64", viewBox: "0 0 64 64", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
484
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "32", cy: "32", r: "32", fill: "white", fillOpacity: "0.9" }),
485
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M42 32L26 41.2376L26 22.7624L42 32Z", fill: "black" })
486
+ ] });
487
+ var SocialProofFeatured = React3.forwardRef(
488
+ ({
489
+ quote,
490
+ author,
491
+ media,
492
+ mediaSrc,
493
+ orientation = "horizontal",
494
+ featuredVariant = "standard",
495
+ starRating,
496
+ platform,
497
+ logo,
498
+ className,
499
+ ...props
500
+ }, ref) => {
501
+ const showMedia = media || mediaSrc;
502
+ const effectiveOrientation = featuredVariant === "spotlight" ? "vertical" : orientation;
503
+ return /* @__PURE__ */ jsxRuntime.jsx(
504
+ chunkIYPXJ6YC_cjs.SectionShell,
505
+ {
506
+ ref,
507
+ padding: "md",
508
+ className: clsx4__default.default("ds-social-featured-section", className),
509
+ ...props,
510
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
511
+ "div",
512
+ {
513
+ className: clsx4__default.default(
514
+ "ds-social-featured",
515
+ `ds-social-featured--${effectiveOrientation}`,
516
+ `ds-social-featured--${featuredVariant}`
517
+ ),
518
+ children: [
519
+ showMedia && featuredVariant !== "spotlight" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-featured__media", children: media ? media : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
520
+ /* @__PURE__ */ jsxRuntime.jsx(
521
+ "img",
522
+ {
523
+ src: mediaSrc || "https://placehold.co/1920x1080/111/FFF?text=Video+Case+Study",
524
+ alt: `Case study by ${author.name}`,
525
+ style: { width: "100%", height: "100%", objectFit: "cover" }
526
+ }
527
+ ),
528
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__play", children: /* @__PURE__ */ jsxRuntime.jsx(PlayIconLarge, {}) })
529
+ ] }) }),
530
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-featured__content", children: [
531
+ logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-featured__logo", children: logo }),
532
+ /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "ds-social-featured__quote", children: [
533
+ "\u201C",
534
+ quote,
535
+ "\u201D"
536
+ ] }),
537
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-featured__author-large", children: [
538
+ author.avatar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-social-card__avatar", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: author.avatar, alt: author.name }) }),
539
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-card__meta", children: [
540
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-social-card__name", children: author.name }),
541
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-social-card__role", children: [
542
+ author.role,
543
+ author.role && author.company && ", ",
544
+ author.company
545
+ ] })
546
+ ] })
547
+ ] }),
548
+ (starRating != null || platform) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-social-featured__trust", children: [
549
+ starRating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { value: starRating, size: "md", showValue: true }),
550
+ platform && /* @__PURE__ */ jsxRuntime.jsx(PlatformBadge, { platform, variant: "icon-label", size: "md" })
551
+ ] })
552
+ ] })
553
+ ]
554
+ }
555
+ )
556
+ }
557
+ );
558
+ }
559
+ );
560
+ SocialProofFeatured.displayName = "SocialProofFeatured";
561
+ var SocialProofCarousel = React3.forwardRef(
562
+ ({ children, className, ...props }, ref) => {
563
+ return /* @__PURE__ */ jsxRuntime.jsx(
564
+ chunkIYPXJ6YC_cjs.SectionShell,
565
+ {
566
+ ref,
567
+ padding: "none",
568
+ containerFluid: true,
569
+ className: clsx4__default.default("ds-social-carousel", className),
570
+ ...props,
571
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
572
+ framerMotion.motion.div,
573
+ {
574
+ className: "ds-social-carousel__track",
575
+ variants: chunkL352JRV6_cjs.VARIANTS.fadeIn,
576
+ initial: "hidden",
577
+ whileInView: "visible",
578
+ viewport: { once: true, margin: "-10%" },
579
+ children: [
580
+ children,
581
+ children
582
+ ]
583
+ }
584
+ )
585
+ }
586
+ );
587
+ }
588
+ );
589
+ SocialProofCarousel.displayName = "SocialProofCarousel";
590
+ function getShortsEmbedUrl(url) {
591
+ const match = url.match(/(?:youtube\.com\/shorts\/|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]+)/);
592
+ if (match) {
593
+ return `https://www.youtube-nocookie.com/embed/${match[1]}?rel=0&modestbranding=1&playsinline=1&controls=1`;
594
+ }
595
+ return url.replace("youtube.com", "youtube-nocookie.com") + (url.includes("?") ? "&" : "?") + "rel=0&modestbranding=1&playsinline=1";
596
+ }
597
+ function VerticalVideoGrid({ urls, className }) {
598
+ if (!urls || urls.length === 0) return null;
599
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionShell, { className: clsx4__default.default("ds-vertical-video-grid my-16", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4 md:gap-6 max-w-6xl mx-auto", children: urls.map((url, i) => /* @__PURE__ */ jsxRuntime.jsx(
600
+ "div",
601
+ {
602
+ className: "relative w-full overflow-hidden rounded-[20px] shadow-lg border border-white/10 bg-black",
603
+ style: { aspectRatio: "9/16" },
604
+ children: /* @__PURE__ */ jsxRuntime.jsx(
605
+ "iframe",
606
+ {
607
+ src: getShortsEmbedUrl(url),
608
+ title: `Short testimonial ${i + 1}`,
609
+ className: "absolute inset-0 w-full h-full",
610
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
611
+ allowFullScreen: true,
612
+ loading: "lazy"
613
+ }
614
+ )
615
+ },
616
+ i
617
+ )) }) });
618
+ }
619
+
620
+ // src/components/SocialProof/index.ts
621
+ var SocialProof = {
622
+ Card: SocialProofCard,
623
+ Grid: SocialProofGrid,
624
+ Logos: SocialProofLogos,
625
+ Featured: SocialProofFeatured,
626
+ Carousel: SocialProofCarousel,
627
+ VerticalGrid: VerticalVideoGrid
628
+ };
629
+ function getEmbedUrl(src) {
630
+ const ytMatch = src.match(
631
+ /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]+)/
632
+ );
633
+ if (ytMatch) return `https://www.youtube-nocookie.com/embed/${ytMatch[1]}?autoplay=1&rel=0`;
634
+ const vimeoMatch = src.match(/(?:vimeo\.com\/)(\d+)/);
635
+ if (vimeoMatch) return `https://player.vimeo.com/video/${vimeoMatch[1]}?autoplay=1`;
636
+ const loomMatch = src.match(/(?:loom\.com\/share\/)([a-zA-Z0-9]+)/);
637
+ if (loomMatch) return `https://www.loom.com/embed/${loomMatch[1]}?autoplay=1`;
638
+ return src;
639
+ }
640
+ var PlayIcon2 = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "64", height: "64", viewBox: "0 0 64 64", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
641
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "32", cy: "32", r: "32", className: "ds-video-lightbox__play-bg" }),
642
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M26 20v24l20-12L26 20z", fill: "white" })
643
+ ] });
644
+ var CloseIcon = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
645
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
646
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
647
+ ] });
648
+ var VideoLightbox = React3.forwardRef(
649
+ ({
650
+ videoUrl,
651
+ thumbnailSrc,
652
+ thumbnailAlt,
653
+ title = "Video",
654
+ trigger,
655
+ className,
656
+ onPlay
657
+ }, ref) => {
658
+ const [open, setOpen] = React3.useState(false);
659
+ const handleOpen = React3.useCallback(() => {
660
+ setOpen(true);
661
+ onPlay?.();
662
+ }, [onPlay]);
663
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx4__default.default("ds-video-lightbox", className), children: /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Root, { open, onOpenChange: setOpen, children: [
664
+ /* @__PURE__ */ jsxRuntime.jsx(
665
+ dialog.Dialog.Trigger,
666
+ {
667
+ className: "ds-video-lightbox__trigger",
668
+ onClick: handleOpen,
669
+ children: trigger || /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-video-lightbox__thumbnail-wrap", children: [
670
+ thumbnailSrc ? /* @__PURE__ */ jsxRuntime.jsx(
671
+ "img",
672
+ {
673
+ src: thumbnailSrc,
674
+ alt: thumbnailAlt || `Play: ${title}`,
675
+ className: "ds-video-lightbox__thumbnail",
676
+ loading: "lazy",
677
+ decoding: "async"
678
+ }
679
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-lightbox__placeholder" }),
680
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-lightbox__overlay", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-lightbox__play-btn", children: /* @__PURE__ */ jsxRuntime.jsx(PlayIcon2, {}) }) })
681
+ ] })
682
+ }
683
+ ),
684
+ /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Portal, { children: [
685
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Backdrop, { className: "ds-video-lightbox__backdrop" }),
686
+ /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Popup, { className: "ds-video-lightbox__popup", children: [
687
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Close, { className: "ds-video-lightbox__close", "aria-label": "Close video", children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {}) }),
688
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Title, { className: "ds-sr-only", children: title }),
689
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-lightbox__iframe-wrap", children: open && /* @__PURE__ */ jsxRuntime.jsx(
690
+ "iframe",
691
+ {
692
+ src: getEmbedUrl(videoUrl),
693
+ title,
694
+ className: "ds-video-lightbox__iframe",
695
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
696
+ allowFullScreen: true
697
+ }
698
+ ) })
699
+ ] })
700
+ ] })
701
+ ] }) });
702
+ }
703
+ );
704
+ VideoLightbox.displayName = "VideoLightbox";
705
+
706
+ exports.PlatformBadge = PlatformBadge;
707
+ exports.SocialProof = SocialProof;
708
+ exports.SocialProofCard = SocialProofCard;
709
+ exports.SocialProofCarousel = SocialProofCarousel;
710
+ exports.SocialProofFeatured = SocialProofFeatured;
711
+ exports.SocialProofGrid = SocialProofGrid;
712
+ exports.SocialProofLogos = SocialProofLogos;
713
+ exports.StarRating = StarRating;
714
+ exports.VerticalVideoGrid = VerticalVideoGrid;
715
+ exports.VideoLightbox = VideoLightbox;
716
+ //# sourceMappingURL=out.js.map
717
+ //# sourceMappingURL=chunk-XQZVY7JJ.cjs.map