@caffeinebounce/ui 0.62.2

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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/FinancialStatementTable-BNUrdTU4.d.cts +249 -0
  4. package/dist/FinancialStatementTable-BNUrdTU4.d.ts +249 -0
  5. package/dist/NewsletterSignup-BPreFi5W.d.cts +37 -0
  6. package/dist/NewsletterSignup-BPreFi5W.d.ts +37 -0
  7. package/dist/TestimonialsSection-DtPu2OeR.d.ts +736 -0
  8. package/dist/TestimonialsSection-z-yotRfv.d.cts +736 -0
  9. package/dist/UnifiedTableControls-CG299y9h.d.ts +1233 -0
  10. package/dist/UnifiedTableControls-CIjRpNhy.d.cts +1233 -0
  11. package/dist/blog.d.cts +99 -0
  12. package/dist/blog.d.ts +99 -0
  13. package/dist/blog.js +292 -0
  14. package/dist/blog.mjs +279 -0
  15. package/dist/button-BHnoRUkF.d.cts +34 -0
  16. package/dist/button-BHnoRUkF.d.ts +34 -0
  17. package/dist/charts.d.cts +80 -0
  18. package/dist/charts.d.ts +80 -0
  19. package/dist/charts.js +19 -0
  20. package/dist/charts.mjs +2 -0
  21. package/dist/chunk-33JR5SYE.js +44 -0
  22. package/dist/chunk-3NDB4YPC.js +247 -0
  23. package/dist/chunk-5RW4PYZ6.js +1504 -0
  24. package/dist/chunk-5THF4YP6.mjs +155 -0
  25. package/dist/chunk-6BUBNZPG.mjs +164 -0
  26. package/dist/chunk-6DVWMJ3H.mjs +7029 -0
  27. package/dist/chunk-6TGV2DNP.js +120 -0
  28. package/dist/chunk-72JGQ7IJ.mjs +1498 -0
  29. package/dist/chunk-7DHKQODW.mjs +2932 -0
  30. package/dist/chunk-7IKHZKAC.js +160 -0
  31. package/dist/chunk-ADIDI7AJ.js +11 -0
  32. package/dist/chunk-BFWX5GJZ.mjs +940 -0
  33. package/dist/chunk-BMFQG6RA.mjs +5537 -0
  34. package/dist/chunk-C4UT5V3P.js +65 -0
  35. package/dist/chunk-CC4KUIKC.js +2004 -0
  36. package/dist/chunk-D3QXPL47.mjs +1814 -0
  37. package/dist/chunk-DQWHYBV2.js +36 -0
  38. package/dist/chunk-E42B4GSB.js +993 -0
  39. package/dist/chunk-ESZ7CBA2.js +1007 -0
  40. package/dist/chunk-EYJJQVV4.js +111 -0
  41. package/dist/chunk-FRRS2YZH.mjs +129 -0
  42. package/dist/chunk-G5TQWWQA.mjs +37 -0
  43. package/dist/chunk-GAIQJCAZ.js +5612 -0
  44. package/dist/chunk-GMBGWOCR.mjs +48 -0
  45. package/dist/chunk-GUSTCU2W.mjs +105 -0
  46. package/dist/chunk-HBLKVQIQ.mjs +23 -0
  47. package/dist/chunk-HMAMMC72.js +26 -0
  48. package/dist/chunk-IMKLN273.mjs +9 -0
  49. package/dist/chunk-J6OLBSZR.js +250 -0
  50. package/dist/chunk-JAE45W2T.js +28 -0
  51. package/dist/chunk-JORVSG52.js +606 -0
  52. package/dist/chunk-KB7UXIQZ.mjs +984 -0
  53. package/dist/chunk-KGGQ5NZV.js +186 -0
  54. package/dist/chunk-KHCC5UKW.mjs +22 -0
  55. package/dist/chunk-KRRIRS6A.mjs +1945 -0
  56. package/dist/chunk-LQCVRWVF.js +48 -0
  57. package/dist/chunk-MHZXUOGN.mjs +168 -0
  58. package/dist/chunk-MPZFPU4X.js +349 -0
  59. package/dist/chunk-MVYRNJA6.js +74 -0
  60. package/dist/chunk-N6AFNFZR.mjs +565 -0
  61. package/dist/chunk-OFQLWSUR.mjs +214 -0
  62. package/dist/chunk-OLAAXLXY.mjs +219 -0
  63. package/dist/chunk-OZZWDIOY.js +1859 -0
  64. package/dist/chunk-PZRI43EZ.js +111 -0
  65. package/dist/chunk-Q256HRYD.js +176 -0
  66. package/dist/chunk-Q52ZEL62.mjs +223 -0
  67. package/dist/chunk-R26Y7LGJ.js +142 -0
  68. package/dist/chunk-RBUYW6QQ.js +39 -0
  69. package/dist/chunk-RVEFPVZF.mjs +43 -0
  70. package/dist/chunk-SORWLKOK.js +96 -0
  71. package/dist/chunk-STEP6C4C.mjs +33 -0
  72. package/dist/chunk-T5R6HUDG.mjs +22 -0
  73. package/dist/chunk-T6ZBA6VJ.js +7109 -0
  74. package/dist/chunk-UM7WMXIU.js +2995 -0
  75. package/dist/chunk-VBD4Q5LL.mjs +117 -0
  76. package/dist/chunk-WOITB4JL.js +195 -0
  77. package/dist/chunk-YKZEKJMZ.mjs +71 -0
  78. package/dist/chunk-YL7RZRHM.mjs +103 -0
  79. package/dist/chunk-YSLD2HLP.mjs +346 -0
  80. package/dist/chunk-ZFLZA7UP.mjs +140 -0
  81. package/dist/chunk-ZKUIUE7W.mjs +26 -0
  82. package/dist/chunk-ZOA7B32D.js +248 -0
  83. package/dist/data-table.d.cts +46 -0
  84. package/dist/data-table.d.ts +46 -0
  85. package/dist/data-table.js +270 -0
  86. package/dist/data-table.mjs +13 -0
  87. package/dist/editor.d.cts +89 -0
  88. package/dist/editor.d.ts +89 -0
  89. package/dist/editor.js +10 -0
  90. package/dist/editor.mjs +1 -0
  91. package/dist/forms.d.cts +142 -0
  92. package/dist/forms.d.ts +142 -0
  93. package/dist/forms.js +24 -0
  94. package/dist/forms.mjs +11 -0
  95. package/dist/hooks-8ORd7T1A.d.cts +751 -0
  96. package/dist/hooks-B2jU1GVT.d.ts +751 -0
  97. package/dist/hooks.d.cts +6 -0
  98. package/dist/hooks.d.ts +6 -0
  99. package/dist/hooks.js +99 -0
  100. package/dist/hooks.mjs +10 -0
  101. package/dist/index.d.cts +3141 -0
  102. package/dist/index.d.ts +3141 -0
  103. package/dist/index.js +7332 -0
  104. package/dist/index.mjs +5876 -0
  105. package/dist/layouts-DPfDDF53.d.cts +1001 -0
  106. package/dist/layouts-DPfDDF53.d.ts +1001 -0
  107. package/dist/layouts.d.cts +4 -0
  108. package/dist/layouts.d.ts +4 -0
  109. package/dist/layouts.js +100 -0
  110. package/dist/layouts.mjs +11 -0
  111. package/dist/marketing-3d.d.cts +51 -0
  112. package/dist/marketing-3d.d.ts +51 -0
  113. package/dist/marketing-3d.js +553 -0
  114. package/dist/marketing-3d.mjs +526 -0
  115. package/dist/marketing.d.cts +583 -0
  116. package/dist/marketing.d.ts +583 -0
  117. package/dist/marketing.js +299 -0
  118. package/dist/marketing.mjs +10 -0
  119. package/dist/media.d.cts +29 -0
  120. package/dist/media.d.ts +29 -0
  121. package/dist/media.js +189 -0
  122. package/dist/media.mjs +182 -0
  123. package/dist/navigation.d.cts +591 -0
  124. package/dist/navigation.d.ts +591 -0
  125. package/dist/navigation.js +108 -0
  126. package/dist/navigation.mjs +15 -0
  127. package/dist/portal.d.cts +58 -0
  128. package/dist/portal.d.ts +58 -0
  129. package/dist/portal.js +403 -0
  130. package/dist/portal.mjs +395 -0
  131. package/dist/primitives.d.cts +508 -0
  132. package/dist/primitives.d.ts +508 -0
  133. package/dist/primitives.js +295 -0
  134. package/dist/primitives.mjs +14 -0
  135. package/dist/settings.d.cts +216 -0
  136. package/dist/settings.d.ts +216 -0
  137. package/dist/settings.js +34 -0
  138. package/dist/settings.mjs +9 -0
  139. package/dist/shared-Dqn36QHZ.d.cts +4 -0
  140. package/dist/shared-Dqn36QHZ.d.ts +4 -0
  141. package/dist/styles.css +1213 -0
  142. package/package.json +189 -0
  143. package/styles.css +1 -0
@@ -0,0 +1,553 @@
1
+ 'use strict';
2
+
3
+ var chunkJAE45W2T_js = require('./chunk-JAE45W2T.js');
4
+ var chunk6TGV2DNP_js = require('./chunk-6TGV2DNP.js');
5
+ require('./chunk-Q256HRYD.js');
6
+ var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
7
+ var fiber = require('@react-three/fiber');
8
+ var React = require('react');
9
+ var THREE = require('three');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var react = require('motion/react');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ function _interopNamespace(e) {
16
+ if (e && e.__esModule) return e;
17
+ var n = Object.create(null);
18
+ if (e) {
19
+ Object.keys(e).forEach(function (k) {
20
+ if (k !== 'default') {
21
+ var d = Object.getOwnPropertyDescriptor(e, k);
22
+ Object.defineProperty(n, k, d.get ? d : {
23
+ enumerable: true,
24
+ get: function () { return e[k]; }
25
+ });
26
+ }
27
+ });
28
+ }
29
+ n.default = e;
30
+ return Object.freeze(n);
31
+ }
32
+
33
+ var React__default = /*#__PURE__*/_interopDefault(React);
34
+ var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
35
+
36
+ var CanvasRevealEffect = ({
37
+ animationSpeed = 0.4,
38
+ opacities = [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1],
39
+ colors = [[0, 255, 255]],
40
+ containerClassName,
41
+ dotSize,
42
+ showGradient = true
43
+ }) => {
44
+ return /* @__PURE__ */ jsxRuntime.jsxs(
45
+ "div",
46
+ {
47
+ className: chunkADIDI7AJ_js.cn("h-full relative w-full", containerClassName),
48
+ style: { backgroundColor: "transparent" },
49
+ children: [
50
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
51
+ DotMatrix,
52
+ {
53
+ colors: colors ?? [[0, 255, 255]],
54
+ dotSize: dotSize ?? 3,
55
+ opacities: opacities ?? [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1],
56
+ shader: `
57
+ float animation_speed_factor = ${animationSpeed.toFixed(1)};
58
+ float intro_offset = distance(u_resolution / 2.0 / u_total_size, st2) * 0.01 + (random(st2) * 0.15);
59
+ opacity *= step(intro_offset, u_time * animation_speed_factor);
60
+ opacity *= clamp((1.0 - step(intro_offset + 0.1, u_time * animation_speed_factor)) * 1.25, 1.0, 1.25);
61
+ `,
62
+ center: ["x", "y"]
63
+ }
64
+ ) }),
65
+ showGradient && /* @__PURE__ */ jsxRuntime.jsx(
66
+ "div",
67
+ {
68
+ className: "absolute inset-0",
69
+ style: {
70
+ background: "linear-gradient(to top, var(--color-card, hsl(var(--card))), transparent 84%)"
71
+ }
72
+ }
73
+ )
74
+ ]
75
+ }
76
+ );
77
+ };
78
+ var DotMatrix = ({
79
+ colors = [[0, 0, 0]],
80
+ opacities = [0.04, 0.04, 0.04, 0.04, 0.04, 0.08, 0.08, 0.08, 0.08, 0.14],
81
+ totalSize = 4,
82
+ dotSize = 2,
83
+ shader = "",
84
+ center = ["x", "y"]
85
+ }) => {
86
+ const uniforms = React__default.default.useMemo(() => {
87
+ let colorsArray = [
88
+ colors[0],
89
+ colors[0],
90
+ colors[0],
91
+ colors[0],
92
+ colors[0],
93
+ colors[0]
94
+ ];
95
+ if (colors.length === 2) {
96
+ colorsArray = [
97
+ colors[0],
98
+ colors[0],
99
+ colors[0],
100
+ colors[1],
101
+ colors[1],
102
+ colors[1]
103
+ ];
104
+ } else if (colors.length === 3) {
105
+ colorsArray = [
106
+ colors[0],
107
+ colors[0],
108
+ colors[1],
109
+ colors[1],
110
+ colors[2],
111
+ colors[2]
112
+ ];
113
+ }
114
+ return {
115
+ u_colors: {
116
+ value: colorsArray.map((color) => [
117
+ color[0] / 255,
118
+ color[1] / 255,
119
+ color[2] / 255
120
+ ]),
121
+ type: "uniform3fv"
122
+ },
123
+ u_opacities: {
124
+ value: opacities,
125
+ type: "uniform1fv"
126
+ },
127
+ u_total_size: {
128
+ value: totalSize,
129
+ type: "uniform1f"
130
+ },
131
+ u_dot_size: {
132
+ value: dotSize,
133
+ type: "uniform1f"
134
+ }
135
+ };
136
+ }, [colors, opacities, totalSize, dotSize]);
137
+ return /* @__PURE__ */ jsxRuntime.jsx(
138
+ Shader,
139
+ {
140
+ source: `
141
+ precision mediump float;
142
+ in vec2 fragCoord;
143
+
144
+ uniform float u_time;
145
+ uniform float u_opacities[10];
146
+ uniform vec3 u_colors[6];
147
+ uniform float u_total_size;
148
+ uniform float u_dot_size;
149
+ uniform vec2 u_resolution;
150
+ out vec4 fragColor;
151
+ float PHI = 1.61803398874989484820459;
152
+ float random(vec2 xy) {
153
+ return fract(tan(distance(xy * PHI, xy) * 0.5) * xy.x);
154
+ }
155
+ float map(float value, float min1, float max1, float min2, float max2) {
156
+ return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
157
+ }
158
+ void main() {
159
+ vec2 st = fragCoord.xy;
160
+ ${center.includes("x") ? "st.x -= abs(floor((mod(u_resolution.x, u_total_size) - u_dot_size) * 0.5));" : ""}
161
+ ${center.includes("y") ? "st.y -= abs(floor((mod(u_resolution.y, u_total_size) - u_dot_size) * 0.5));" : ""}
162
+ float opacity = step(0.0, st.x);
163
+ opacity *= step(0.0, st.y);
164
+
165
+ vec2 st2 = vec2(int(st.x / u_total_size), int(st.y / u_total_size));
166
+
167
+ float frequency = 5.0;
168
+ float show_offset = random(st2);
169
+ float rand = random(st2 * floor((u_time / frequency) + show_offset + frequency) + 1.0);
170
+ opacity *= u_opacities[int(rand * 10.0)];
171
+ opacity *= 1.0 - step(u_dot_size / u_total_size, fract(st.x / u_total_size));
172
+ opacity *= 1.0 - step(u_dot_size / u_total_size, fract(st.y / u_total_size));
173
+
174
+ vec3 color = u_colors[int(show_offset * 6.0)];
175
+
176
+ ${shader}
177
+
178
+ fragColor = vec4(color, opacity);
179
+ fragColor.rgb *= fragColor.a;
180
+ }`,
181
+ uniforms,
182
+ maxFps: 60
183
+ }
184
+ );
185
+ };
186
+ var ShaderMaterial2 = ({
187
+ source,
188
+ uniforms,
189
+ maxFps = 60
190
+ }) => {
191
+ const { size } = fiber.useThree();
192
+ const ref = React.useRef(null);
193
+ let lastFrameTime = 0;
194
+ fiber.useFrame((state) => {
195
+ if (!ref.current) return;
196
+ const timestamp = "elapsed" in state ? state.elapsed : state.clock?.getElapsedTime?.() ?? 0;
197
+ if (timestamp - lastFrameTime < 1 / maxFps) {
198
+ return;
199
+ }
200
+ lastFrameTime = timestamp;
201
+ const material2 = ref.current.material;
202
+ const timeLocation = material2.uniforms.u_time;
203
+ timeLocation.value = timestamp;
204
+ });
205
+ const getUniforms = () => {
206
+ const preparedUniforms = {};
207
+ for (const uniformName in uniforms) {
208
+ const uniform = uniforms[uniformName];
209
+ switch (uniform.type) {
210
+ case "uniform1f":
211
+ preparedUniforms[uniformName] = { value: uniform.value, type: "1f" };
212
+ break;
213
+ case "uniform3f":
214
+ preparedUniforms[uniformName] = {
215
+ value: new THREE__namespace.Vector3().fromArray(uniform.value),
216
+ type: "3f"
217
+ };
218
+ break;
219
+ case "uniform1fv":
220
+ preparedUniforms[uniformName] = { value: uniform.value, type: "1fv" };
221
+ break;
222
+ case "uniform3fv":
223
+ preparedUniforms[uniformName] = {
224
+ value: uniform.value.map(
225
+ (v) => new THREE__namespace.Vector3().fromArray(v)
226
+ ),
227
+ type: "3fv"
228
+ };
229
+ break;
230
+ case "uniform2f":
231
+ preparedUniforms[uniformName] = {
232
+ value: new THREE__namespace.Vector2().fromArray(uniform.value),
233
+ type: "2f"
234
+ };
235
+ break;
236
+ default:
237
+ console.error(`Invalid uniform type for '${uniformName}'.`);
238
+ break;
239
+ }
240
+ }
241
+ preparedUniforms["u_time"] = { value: 0, type: "1f" };
242
+ preparedUniforms["u_resolution"] = {
243
+ value: new THREE__namespace.Vector2(size.width * 2, size.height * 2)
244
+ };
245
+ return preparedUniforms;
246
+ };
247
+ const material = React.useMemo(() => {
248
+ const materialObject = new THREE__namespace.ShaderMaterial({
249
+ vertexShader: `
250
+ precision mediump float;
251
+ in vec2 coordinates;
252
+ uniform vec2 u_resolution;
253
+ out vec2 fragCoord;
254
+ void main(){
255
+ float x = position.x;
256
+ float y = position.y;
257
+ gl_Position = vec4(x, y, 0.0, 1.0);
258
+ fragCoord = (position.xy + vec2(1.0)) * 0.5 * u_resolution;
259
+ fragCoord.y = u_resolution.y - fragCoord.y;
260
+ }
261
+ `,
262
+ fragmentShader: source,
263
+ uniforms: getUniforms(),
264
+ glslVersion: THREE__namespace.GLSL3,
265
+ blending: THREE__namespace.CustomBlending,
266
+ blendSrc: THREE__namespace.SrcAlphaFactor,
267
+ blendDst: THREE__namespace.OneFactor
268
+ });
269
+ return materialObject;
270
+ }, [size.width, size.height, source]);
271
+ return React__default.default.createElement(
272
+ "mesh",
273
+ { ref },
274
+ React__default.default.createElement("planeGeometry", { args: [2, 2] }),
275
+ React__default.default.createElement("primitive", {
276
+ object: material,
277
+ attach: "material"
278
+ })
279
+ );
280
+ };
281
+ var Shader = ({ source, uniforms, maxFps = 60 }) => {
282
+ return /* @__PURE__ */ jsxRuntime.jsx(
283
+ fiber.Canvas,
284
+ {
285
+ className: "absolute inset-0 h-full w-full",
286
+ gl: { alpha: true },
287
+ style: { background: "transparent" },
288
+ children: /* @__PURE__ */ jsxRuntime.jsx(ShaderMaterial2, { source, uniforms, maxFps })
289
+ }
290
+ );
291
+ };
292
+ var CardSpotlight = ({
293
+ children,
294
+ radius = 350,
295
+ color,
296
+ className,
297
+ ...props
298
+ }) => {
299
+ const mouseX = react.useMotionValue(0);
300
+ const mouseY = react.useMotionValue(0);
301
+ const [isDark, setIsDark] = React.useState(true);
302
+ React.useEffect(() => {
303
+ const html = document.documentElement;
304
+ const check = () => setIsDark(html.classList.contains("dark"));
305
+ check();
306
+ const obs = new MutationObserver(check);
307
+ obs.observe(html, { attributes: true, attributeFilter: ["class"] });
308
+ return () => obs.disconnect();
309
+ }, []);
310
+ function handleMouseMove({
311
+ currentTarget,
312
+ clientX,
313
+ clientY
314
+ }) {
315
+ const { left, top } = currentTarget.getBoundingClientRect();
316
+ mouseX.set(clientX - left);
317
+ mouseY.set(clientY - top);
318
+ }
319
+ const [isHovering, setIsHovering] = React.useState(false);
320
+ const handleMouseEnter = () => setIsHovering(true);
321
+ const handleMouseLeave = () => setIsHovering(false);
322
+ const resolvedColor = color ?? (isDark ? "#262626" : "rgba(129,140,248,0.08)");
323
+ const dotColors = isDark ? [
324
+ [59, 130, 246],
325
+ [139, 92, 246]
326
+ ] : [
327
+ [129, 140, 248],
328
+ [165, 148, 249]
329
+ ];
330
+ return (
331
+ // biome-ignore lint/a11y/noStaticElementInteractions: spotlight effect requires mouse tracking on the card container
332
+ /* @__PURE__ */ jsxRuntime.jsxs(
333
+ "div",
334
+ {
335
+ className: chunkADIDI7AJ_js.cn("group/spotlight p-10 rounded-md relative", className),
336
+ style: {
337
+ backgroundColor: "var(--color-card, hsl(var(--card)))",
338
+ borderWidth: "1px",
339
+ borderStyle: "solid",
340
+ borderColor: "var(--color-border, hsl(var(--border)))"
341
+ },
342
+ onMouseMove: handleMouseMove,
343
+ onMouseEnter: handleMouseEnter,
344
+ onMouseLeave: handleMouseLeave,
345
+ ...props,
346
+ children: [
347
+ /* @__PURE__ */ jsxRuntime.jsx(
348
+ react.motion.div,
349
+ {
350
+ className: "pointer-events-none absolute z-0 -inset-px rounded-md opacity-0 transition duration-300 group-hover/spotlight:opacity-100",
351
+ style: {
352
+ backgroundColor: resolvedColor,
353
+ maskImage: react.useMotionTemplate`
354
+ radial-gradient(
355
+ ${radius}px circle at ${mouseX}px ${mouseY}px,
356
+ white,
357
+ transparent 80%
358
+ )
359
+ `
360
+ },
361
+ children: isHovering && /* @__PURE__ */ jsxRuntime.jsx(
362
+ CanvasRevealEffect,
363
+ {
364
+ animationSpeed: 5,
365
+ containerClassName: "bg-transparent absolute inset-0 pointer-events-none",
366
+ colors: dotColors,
367
+ dotSize: 3,
368
+ showGradient: false
369
+ }
370
+ )
371
+ }
372
+ ),
373
+ children
374
+ ]
375
+ }
376
+ )
377
+ );
378
+ };
379
+ function BentoGridSection({
380
+ heading,
381
+ subheading,
382
+ items,
383
+ tone = "muted",
384
+ padding = "lg",
385
+ className,
386
+ containerClassName,
387
+ spotlight = false
388
+ }) {
389
+ return /* @__PURE__ */ jsxRuntime.jsx(
390
+ "section",
391
+ {
392
+ className: chunkJAE45W2T_js.cx(
393
+ chunkJAE45W2T_js.sectionToneClasses[tone],
394
+ chunkJAE45W2T_js.sectionPaddingClasses[padding],
395
+ className
396
+ ),
397
+ "data-slot": "bento-grid-section",
398
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkJAE45W2T_js.cx("mx-auto max-w-6xl px-6", containerClassName), children: [
399
+ heading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto mb-10 max-w-2xl text-center", children: [
400
+ /* @__PURE__ */ jsxRuntime.jsx(
401
+ "h2",
402
+ {
403
+ className: "text-3xl font-semibold tracking-tight md:text-4xl",
404
+ style: {
405
+ color: "var(--color-foreground, hsl(var(--foreground)))"
406
+ },
407
+ children: heading
408
+ }
409
+ ),
410
+ subheading ? /* @__PURE__ */ jsxRuntime.jsx(
411
+ "p",
412
+ {
413
+ className: "mt-3",
414
+ style: {
415
+ color: "var(--color-foreground, hsl(var(--foreground)))"
416
+ },
417
+ children: subheading
418
+ }
419
+ ) : null
420
+ ] }) : null,
421
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3 auto-rows-[minmax(11rem,auto)]", children: items.map(
422
+ (item) => spotlight ? /* @__PURE__ */ jsxRuntime.jsx(
423
+ CardSpotlight,
424
+ {
425
+ className: chunkJAE45W2T_js.cx(
426
+ "rounded-xl p-0 flex flex-col",
427
+ item.colSpan === 2 && "md:col-span-2",
428
+ item.rowSpan === 2 && "md:row-span-2"
429
+ ),
430
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-20 flex flex-col flex-1", children: [
431
+ item.illustration ? /* @__PURE__ */ jsxRuntime.jsx(
432
+ "div",
433
+ {
434
+ className: chunkJAE45W2T_js.cx(
435
+ "w-full overflow-hidden",
436
+ item.headerClassName
437
+ ),
438
+ "aria-hidden": "true",
439
+ children: item.illustration
440
+ }
441
+ ) : null,
442
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col p-5", children: [
443
+ item.icon ? /* @__PURE__ */ jsxRuntime.jsx(
444
+ "div",
445
+ {
446
+ className: "mb-3",
447
+ style: {
448
+ color: "var(--color-foreground, hsl(var(--foreground)))"
449
+ },
450
+ "aria-hidden": "true",
451
+ children: item.icon
452
+ }
453
+ ) : null,
454
+ /* @__PURE__ */ jsxRuntime.jsx(
455
+ "h3",
456
+ {
457
+ className: "text-lg font-medium",
458
+ style: {
459
+ color: "var(--color-foreground, hsl(var(--foreground)))"
460
+ },
461
+ children: item.title
462
+ }
463
+ ),
464
+ /* @__PURE__ */ jsxRuntime.jsx(
465
+ "p",
466
+ {
467
+ className: "mt-2 flex-1 text-sm leading-6",
468
+ style: {
469
+ color: "var(--color-foreground, hsl(var(--foreground)))",
470
+ opacity: 0.75
471
+ },
472
+ children: item.description
473
+ }
474
+ ),
475
+ item.cta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunk6TGV2DNP_js.Button, { asChild: true, variant: "outline", size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.cta.href, children: item.cta.label }) }) }) : null
476
+ ] })
477
+ ] })
478
+ },
479
+ item.id
480
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
481
+ "article",
482
+ {
483
+ className: chunkJAE45W2T_js.cx(
484
+ "overflow-hidden rounded-xl shadow-sm transition-colors flex flex-col",
485
+ item.colSpan === 2 && "md:col-span-2",
486
+ item.rowSpan === 2 && "md:row-span-2"
487
+ ),
488
+ style: {
489
+ backgroundColor: "var(--color-card, hsl(var(--card)))",
490
+ borderWidth: "1px",
491
+ borderStyle: "solid",
492
+ borderColor: "var(--color-border, hsl(var(--border)))"
493
+ },
494
+ children: [
495
+ item.illustration ? /* @__PURE__ */ jsxRuntime.jsx(
496
+ "div",
497
+ {
498
+ className: chunkJAE45W2T_js.cx(
499
+ "w-full overflow-hidden",
500
+ item.headerClassName
501
+ ),
502
+ "aria-hidden": "true",
503
+ children: item.illustration
504
+ }
505
+ ) : null,
506
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col p-5", children: [
507
+ item.icon ? /* @__PURE__ */ jsxRuntime.jsx(
508
+ "div",
509
+ {
510
+ className: "mb-3",
511
+ style: {
512
+ color: "var(--color-foreground, hsl(var(--foreground)))"
513
+ },
514
+ "aria-hidden": "true",
515
+ children: item.icon
516
+ }
517
+ ) : null,
518
+ /* @__PURE__ */ jsxRuntime.jsx(
519
+ "h3",
520
+ {
521
+ className: "text-lg font-medium",
522
+ style: {
523
+ color: "var(--color-foreground, hsl(var(--foreground)))"
524
+ },
525
+ children: item.title
526
+ }
527
+ ),
528
+ /* @__PURE__ */ jsxRuntime.jsx(
529
+ "p",
530
+ {
531
+ className: "mt-2 flex-1 text-sm leading-6",
532
+ style: {
533
+ color: "var(--color-foreground, hsl(var(--foreground)))",
534
+ opacity: 0.75
535
+ },
536
+ children: item.description
537
+ }
538
+ ),
539
+ item.cta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunk6TGV2DNP_js.Button, { asChild: true, variant: "outline", size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.cta.href, children: item.cta.label }) }) }) : null
540
+ ] })
541
+ ]
542
+ },
543
+ item.id
544
+ )
545
+ ) })
546
+ ] })
547
+ }
548
+ );
549
+ }
550
+
551
+ exports.BentoGridSection = BentoGridSection;
552
+ exports.CanvasRevealEffect = CanvasRevealEffect;
553
+ exports.CardSpotlight = CardSpotlight;