@frequencyads/components 0.1.1 → 0.1.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 (93) hide show
  1. package/dist/AnimatedCounter/AnimatedCounter.d.ts +19 -0
  2. package/dist/AnimatedCounter/AnimatedCounter.d.ts.map +1 -0
  3. package/dist/AnimatedCounter/index.d.ts +2 -0
  4. package/dist/AnimatedCounter/index.d.ts.map +1 -0
  5. package/dist/AnimatedWaveform/AnimatedWaveform.d.ts +10 -0
  6. package/dist/AnimatedWaveform/AnimatedWaveform.d.ts.map +1 -0
  7. package/dist/AnimatedWaveform/index.d.ts +2 -0
  8. package/dist/AnimatedWaveform/index.d.ts.map +1 -0
  9. package/dist/AudioPlayer/AudioPlayer.d.ts +26 -0
  10. package/dist/AudioPlayer/AudioPlayer.d.ts.map +1 -0
  11. package/dist/AudioPlayer/index.d.ts +2 -0
  12. package/dist/AudioPlayer/index.d.ts.map +1 -0
  13. package/dist/AudioWaveform/AudioWaveform.d.ts +27 -0
  14. package/dist/AudioWaveform/AudioWaveform.d.ts.map +1 -0
  15. package/dist/AudioWaveform/index.d.ts +2 -0
  16. package/dist/AudioWaveform/index.d.ts.map +1 -0
  17. package/dist/CodeBlock/CodeBlock.d.ts +10 -0
  18. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -0
  19. package/dist/CodeBlock/index.d.ts +2 -0
  20. package/dist/CodeBlock/index.d.ts.map +1 -0
  21. package/dist/ColorPalette/ColorPalette.d.ts +10 -0
  22. package/dist/ColorPalette/ColorPalette.d.ts.map +1 -0
  23. package/dist/ColorPalette/index.d.ts +2 -0
  24. package/dist/ColorPalette/index.d.ts.map +1 -0
  25. package/dist/ColorSwatch/ColorSwatch.d.ts +10 -0
  26. package/dist/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  27. package/dist/ColorSwatch/index.d.ts +2 -0
  28. package/dist/ColorSwatch/index.d.ts.map +1 -0
  29. package/dist/Copyable/Copyable.d.ts +7 -0
  30. package/dist/Copyable/Copyable.d.ts.map +1 -0
  31. package/dist/Copyable/index.d.ts +2 -0
  32. package/dist/Copyable/index.d.ts.map +1 -0
  33. package/dist/DosDonts/DosDonts.d.ts +10 -0
  34. package/dist/DosDonts/DosDonts.d.ts.map +1 -0
  35. package/dist/DosDonts/index.d.ts +2 -0
  36. package/dist/DosDonts/index.d.ts.map +1 -0
  37. package/dist/ExpandableCard/ExpandableCard.d.ts +30 -0
  38. package/dist/ExpandableCard/ExpandableCard.d.ts.map +1 -0
  39. package/dist/ExpandableCard/index.d.ts +2 -0
  40. package/dist/ExpandableCard/index.d.ts.map +1 -0
  41. package/dist/FadeInSection/FadeInSection.d.ts +10 -0
  42. package/dist/FadeInSection/FadeInSection.d.ts.map +1 -0
  43. package/dist/FadeInSection/index.d.ts +2 -0
  44. package/dist/FadeInSection/index.d.ts.map +1 -0
  45. package/dist/FrequencyWave/FrequencyWave.d.ts +15 -0
  46. package/dist/FrequencyWave/FrequencyWave.d.ts.map +1 -0
  47. package/dist/FrequencyWave/index.d.ts +2 -0
  48. package/dist/FrequencyWave/index.d.ts.map +1 -0
  49. package/dist/GradientSwatch/GradientSwatch.d.ts +10 -0
  50. package/dist/GradientSwatch/GradientSwatch.d.ts.map +1 -0
  51. package/dist/GradientSwatch/index.d.ts +2 -0
  52. package/dist/GradientSwatch/index.d.ts.map +1 -0
  53. package/dist/Hero/Hero.d.ts +34 -0
  54. package/dist/Hero/Hero.d.ts.map +1 -0
  55. package/dist/Hero/index.d.ts +2 -0
  56. package/dist/Hero/index.d.ts.map +1 -0
  57. package/dist/HintBadge/HintBadge.d.ts +8 -0
  58. package/dist/HintBadge/HintBadge.d.ts.map +1 -0
  59. package/dist/HintBadge/index.d.ts +2 -0
  60. package/dist/HintBadge/index.d.ts.map +1 -0
  61. package/dist/MiniAudioPlayer/MiniAudioPlayer.d.ts +18 -0
  62. package/dist/MiniAudioPlayer/MiniAudioPlayer.d.ts.map +1 -0
  63. package/dist/MiniAudioPlayer/index.d.ts +2 -0
  64. package/dist/MiniAudioPlayer/index.d.ts.map +1 -0
  65. package/dist/PrincipleCard/PrincipleCard.d.ts +14 -0
  66. package/dist/PrincipleCard/PrincipleCard.d.ts.map +1 -0
  67. package/dist/PrincipleCard/index.d.ts +2 -0
  68. package/dist/PrincipleCard/index.d.ts.map +1 -0
  69. package/dist/SpeedDial/SpeedDial.d.ts +33 -0
  70. package/dist/SpeedDial/SpeedDial.d.ts.map +1 -0
  71. package/dist/SpeedDial/index.d.ts +2 -0
  72. package/dist/SpeedDial/index.d.ts.map +1 -0
  73. package/dist/SplitSection/SplitSection.d.ts +35 -0
  74. package/dist/SplitSection/SplitSection.d.ts.map +1 -0
  75. package/dist/SplitSection/index.d.ts +2 -0
  76. package/dist/SplitSection/index.d.ts.map +1 -0
  77. package/dist/TestimonialCard/TestimonialCard.d.ts +17 -0
  78. package/dist/TestimonialCard/TestimonialCard.d.ts.map +1 -0
  79. package/dist/TestimonialCard/index.d.ts +2 -0
  80. package/dist/TestimonialCard/index.d.ts.map +1 -0
  81. package/dist/VideoBackground/VideoBackground.d.ts +8 -0
  82. package/dist/VideoBackground/VideoBackground.d.ts.map +1 -0
  83. package/dist/VideoBackground/index.d.ts +2 -0
  84. package/dist/VideoBackground/index.d.ts.map +1 -0
  85. package/dist/components.css +1 -0
  86. package/dist/index.d.ts +25 -339
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +1 -1562
  89. package/dist/index.mjs +915 -1215
  90. package/llms.txt +9 -0
  91. package/package.json +10 -6
  92. package/dist/index.css +0 -543
  93. package/dist/index.d.mts +0 -341
package/dist/index.mjs CHANGED
@@ -1,1005 +1,685 @@
1
1
  'use client';
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __objRest = (source, exclude) => {
22
- var target = {};
23
- for (var prop in source)
24
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
- target[prop] = source[prop];
26
- if (source != null && __getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(source)) {
28
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
- target[prop] = source[prop];
30
- }
31
- return target;
32
- };
33
-
34
- // src/AnimatedCounter/AnimatedCounter.tsx
35
- import { useEffect, useRef, useState } from "react";
36
- import { Text } from "@mantine/core";
37
- import { jsxs } from "react/jsx-runtime";
38
- function AnimatedCounter(_a) {
39
- var _b = _a, {
40
- value,
41
- suffix = "",
42
- prefix = "",
43
- duration = 2e3,
44
- threshold = 0.5,
45
- abbreviate = true,
46
- decimals
47
- } = _b, textProps = __objRest(_b, [
48
- "value",
49
- "suffix",
50
- "prefix",
51
- "duration",
52
- "threshold",
53
- "abbreviate",
54
- "decimals"
55
- ]);
56
- const [count, setCount] = useState(0);
57
- const [hasTriggered, setHasTriggered] = useState(false);
58
- const ref = useRef(null);
59
- useEffect(() => {
60
- const el = ref.current;
61
- if (!el) return;
62
- const observer = new IntersectionObserver(
63
- ([entry]) => {
64
- if (entry.isIntersecting && !hasTriggered) {
65
- setHasTriggered(true);
66
- }
2
+ import { jsxs as m, jsx as e, Fragment as ze } from "react/jsx-runtime";
3
+ import { useState as z, useRef as D, useEffect as P, forwardRef as xe, useImperativeHandle as Se, useCallback as B } from "react";
4
+ import { Text as N, Box as k, Group as F, ActionIcon as Y, Slider as Be, Button as ie, Portal as Te, Notification as Pe, Title as oe, SimpleGrid as Me, Paper as U, Stack as ce, ThemeIcon as We, useMantineColorScheme as Ee, Badge as $e, Transition as De, Tooltip as Fe, Avatar as je } from "@mantine/core";
5
+ import { motion as S } from "framer-motion";
6
+ import { IconPlayerPauseFilled as Ce, IconPlayerPlayFilled as ke, IconVolumeOff as Ge, IconVolume as Re, IconDownload as Ae, IconX as Oe, IconCheck as He, IconPlus as ue, IconQuote as Ve } from "@tabler/icons-react";
7
+ import qe from "@frequencyads/brand/assets/frequency-mark-white.svg";
8
+ import { gradients as Ue } from "@frequencyads/brand/colors";
9
+ function Cn({
10
+ value: t,
11
+ suffix: o = "",
12
+ prefix: a = "",
13
+ duration: s = 2e3,
14
+ threshold: i = 0.5,
15
+ abbreviate: p = !0,
16
+ decimals: y,
17
+ ...g
18
+ }) {
19
+ const [_, c] = z(0), [u, b] = z(!1), r = D(null);
20
+ return P(() => {
21
+ const d = r.current;
22
+ if (!d) return;
23
+ const l = new IntersectionObserver(
24
+ ([w]) => {
25
+ w.isIntersecting && !u && b(!0);
67
26
  },
68
- { threshold }
27
+ { threshold: i }
69
28
  );
70
- observer.observe(el);
71
- return () => observer.disconnect();
72
- }, [hasTriggered, threshold]);
73
- useEffect(() => {
74
- if (!hasTriggered) return;
75
- let startTime;
76
- let raf;
77
- const animate = (timestamp) => {
78
- if (!startTime) startTime = timestamp;
79
- const progress = Math.min((timestamp - startTime) / duration, 1);
80
- const eased = 1 - Math.pow(1 - progress, 3);
81
- setCount(eased * value);
82
- if (progress < 1) {
83
- raf = requestAnimationFrame(animate);
84
- }
29
+ return l.observe(d), () => l.disconnect();
30
+ }, [u, i]), P(() => {
31
+ if (!u) return;
32
+ let d, l;
33
+ const w = (n) => {
34
+ d || (d = n);
35
+ const f = Math.min((n - d) / s, 1), I = 1 - Math.pow(1 - f, 3);
36
+ c(I * t), f < 1 && (l = requestAnimationFrame(w));
85
37
  };
86
- raf = requestAnimationFrame(animate);
87
- return () => cancelAnimationFrame(raf);
88
- }, [hasTriggered, value, duration]);
89
- const formatValue = () => {
90
- if (abbreviate && value >= 1e3) {
91
- const kValue = count / 1e3;
92
- return kValue % 1 === 0 ? `${Math.round(kValue)}K` : `${kValue.toFixed(1)}K`;
93
- }
94
- if (decimals !== void 0) {
95
- return count.toFixed(decimals);
96
- }
97
- if (value !== Math.floor(value)) {
98
- return count.toFixed(1);
99
- }
100
- return Math.round(count).toString();
101
- };
102
- return /* @__PURE__ */ jsxs(
103
- Text,
104
- __spreadProps(__spreadValues({
38
+ return l = requestAnimationFrame(w), () => cancelAnimationFrame(l);
39
+ }, [u, t, s]), /* @__PURE__ */ m(
40
+ N,
41
+ {
105
42
  component: "span",
106
- ref,
107
- style: { fontVariantNumeric: "tabular-nums" }
108
- }, textProps), {
43
+ ref: r,
44
+ style: { fontVariantNumeric: "tabular-nums" },
45
+ ...g,
109
46
  children: [
110
- prefix,
111
- formatValue(),
112
- suffix
47
+ a,
48
+ (() => {
49
+ if (p && t >= 1e3) {
50
+ const d = _ / 1e3;
51
+ return d % 1 === 0 ? `${Math.round(d)}K` : `${d.toFixed(1)}K`;
52
+ }
53
+ return y !== void 0 ? _.toFixed(y) : t !== Math.floor(t) ? _.toFixed(1) : Math.round(_).toString();
54
+ })(),
55
+ o
113
56
  ]
114
- })
57
+ }
115
58
  );
116
59
  }
117
-
118
- // src/AnimatedWaveform/AnimatedWaveform.tsx
119
- import { useEffect as useEffect2, useState as useState2 } from "react";
120
- import { motion } from "framer-motion";
121
-
122
- // src/AnimatedWaveform/AnimatedWaveform.module.css
123
- var AnimatedWaveform_default = {};
124
-
125
- // src/AnimatedWaveform/AnimatedWaveform.tsx
126
- import { jsx, jsxs as jsxs2 } from "react/jsx-runtime";
127
- var BAR_COUNT = 140;
128
- var BAR_WIDTH = 3;
129
- var BAR_GAP = 10;
130
- var VIEW_HEIGHT = 150;
131
- var MIDLINE = VIEW_HEIGHT / 2;
132
- function AnimatedWaveform({
133
- barCount = BAR_COUNT,
134
- duration = 3,
135
- repeatDelay = 3
60
+ const Xe = "_root_1bq7s_1", Ye = "_svg_1bq7s_12", me = {
61
+ root: Xe,
62
+ svg: Ye
63
+ }, Ke = 140, he = 3, pe = 10, Le = 150, V = Le / 2;
64
+ function fe({
65
+ barCount: t = Ke,
66
+ duration: o = 3,
67
+ repeatDelay: a = 3
136
68
  }) {
137
- const [mounted, setMounted] = useState2(false);
138
- useEffect2(() => {
139
- setMounted(true);
140
- }, []);
141
- if (!mounted) return null;
142
- const viewWidth = barCount * BAR_GAP;
143
- return /* @__PURE__ */ jsx("div", { className: AnimatedWaveform_default.root, children: /* @__PURE__ */ jsxs2(
69
+ const [s, i] = z(!1);
70
+ if (P(() => {
71
+ i(!0);
72
+ }, []), !s) return null;
73
+ const p = t * pe;
74
+ return /* @__PURE__ */ e("div", { className: me.root, children: /* @__PURE__ */ m(
144
75
  "svg",
145
76
  {
146
- className: AnimatedWaveform_default.svg,
147
- viewBox: `0 0 ${viewWidth} ${VIEW_HEIGHT}`,
77
+ className: me.svg,
78
+ viewBox: `0 0 ${p} ${Le}`,
148
79
  preserveAspectRatio: "none",
149
80
  children: [
150
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs2("linearGradient", { id: "waveformBarGradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
151
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "white", stopOpacity: "0" }),
152
- /* @__PURE__ */ jsx("stop", { offset: "15%", stopColor: "white", stopOpacity: "0.15" }),
153
- /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: "white", stopOpacity: "0.25" }),
154
- /* @__PURE__ */ jsx("stop", { offset: "85%", stopColor: "white", stopOpacity: "0.15" }),
155
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "white", stopOpacity: "0" })
81
+ /* @__PURE__ */ e("defs", { children: /* @__PURE__ */ m("linearGradient", { id: "waveformBarGradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
82
+ /* @__PURE__ */ e("stop", { offset: "0%", stopColor: "white", stopOpacity: "0" }),
83
+ /* @__PURE__ */ e("stop", { offset: "15%", stopColor: "white", stopOpacity: "0.15" }),
84
+ /* @__PURE__ */ e("stop", { offset: "50%", stopColor: "white", stopOpacity: "0.25" }),
85
+ /* @__PURE__ */ e("stop", { offset: "85%", stopColor: "white", stopOpacity: "0.15" }),
86
+ /* @__PURE__ */ e("stop", { offset: "100%", stopColor: "white", stopOpacity: "0" })
156
87
  ] }) }),
157
- [...Array(barCount)].map((_, i) => {
158
- const x = i * BAR_GAP;
159
- const baseHeight = 18 + Math.sin(i * 0.4) * 6 + Math.cos(i * 0.7) * 4;
160
- const staggerDelay = Math.min(i, barCount - 1 - i) * 0.04;
161
- return /* @__PURE__ */ jsxs2("g", { children: [
162
- /* @__PURE__ */ jsx(
163
- motion.rect,
88
+ [...Array(t)].map((y, g) => {
89
+ const _ = g * pe, c = 18 + Math.sin(g * 0.4) * 6 + Math.cos(g * 0.7) * 4, u = Math.min(g, t - 1 - g) * 0.04;
90
+ return /* @__PURE__ */ m("g", { children: [
91
+ /* @__PURE__ */ e(
92
+ S.rect,
164
93
  {
165
- x,
166
- width: BAR_WIDTH,
94
+ x: _,
95
+ width: he,
167
96
  rx: "1.5",
168
97
  fill: "url(#waveformBarGradient)",
169
- initial: { height: baseHeight / 2, y: MIDLINE - baseHeight / 4 },
98
+ initial: { height: c / 2, y: V - c / 4 },
170
99
  animate: {
171
- height: [baseHeight / 2, baseHeight * 2, baseHeight / 2, baseHeight * 1.2, baseHeight / 2],
100
+ height: [c / 2, c * 2, c / 2, c * 1.2, c / 2],
172
101
  y: [
173
- MIDLINE - baseHeight / 4,
174
- MIDLINE - baseHeight,
175
- MIDLINE - baseHeight / 4,
176
- MIDLINE - baseHeight * 0.6,
177
- MIDLINE - baseHeight / 4
102
+ V - c / 4,
103
+ V - c,
104
+ V - c / 4,
105
+ V - c * 0.6,
106
+ V - c / 4
178
107
  ]
179
108
  },
180
109
  transition: {
181
- duration,
182
- repeat: Infinity,
110
+ duration: o,
111
+ repeat: 1 / 0,
183
112
  ease: "easeInOut",
184
- delay: staggerDelay,
185
- repeatDelay
113
+ delay: u,
114
+ repeatDelay: a
186
115
  }
187
116
  }
188
117
  ),
189
- /* @__PURE__ */ jsx(
190
- motion.rect,
118
+ /* @__PURE__ */ e(
119
+ S.rect,
191
120
  {
192
- x,
193
- y: MIDLINE,
194
- width: BAR_WIDTH,
121
+ x: _,
122
+ y: V,
123
+ width: he,
195
124
  rx: "1.5",
196
125
  fill: "url(#waveformBarGradient)",
197
- initial: { height: baseHeight / 2 },
126
+ initial: { height: c / 2 },
198
127
  animate: {
199
- height: [baseHeight / 2, baseHeight * 2, baseHeight / 2, baseHeight * 1.2, baseHeight / 2]
128
+ height: [c / 2, c * 2, c / 2, c * 1.2, c / 2]
200
129
  },
201
130
  transition: {
202
- duration,
203
- repeat: Infinity,
131
+ duration: o,
132
+ repeat: 1 / 0,
204
133
  ease: "easeInOut",
205
- delay: staggerDelay,
206
- repeatDelay
134
+ delay: u,
135
+ repeatDelay: a
207
136
  }
208
137
  }
209
138
  )
210
- ] }, i);
139
+ ] }, g);
211
140
  })
212
141
  ]
213
142
  }
214
143
  ) });
215
144
  }
216
-
217
- // src/AudioPlayer/AudioPlayer.tsx
218
- import { useRef as useRef3, useState as useState4, useEffect as useEffect4, useCallback as useCallback2 } from "react";
219
- import { ActionIcon, Group, Text as Text2, Slider, Box as Box2 } from "@mantine/core";
220
- import {
221
- IconPlayerPlayFilled,
222
- IconPlayerPauseFilled,
223
- IconVolume,
224
- IconVolumeOff,
225
- IconDownload
226
- } from "@tabler/icons-react";
227
-
228
- // src/AudioWaveform/AudioWaveform.tsx
229
- import { useRef as useRef2, useImperativeHandle, forwardRef, useEffect as useEffect3, useState as useState3, useCallback } from "react";
230
- import { Box } from "@mantine/core";
231
-
232
- // src/AudioWaveform/AudioWaveform.module.css
233
- var AudioWaveform_default = {};
234
-
235
- // src/AudioWaveform/AudioWaveform.tsx
236
- import { jsx as jsx2, jsxs as jsxs3 } from "react/jsx-runtime";
237
- function generateWaveformData(barCount = 100) {
238
- const data = [];
239
- for (let i = 0; i < barCount; i++) {
240
- const progress = i / (barCount - 1);
241
- const baseHeight = 20 + Math.sin(i * 0.1) * 15;
242
- const noise = (Math.random() - 0.5) * 20;
243
- const envelope = Math.sin(progress * Math.PI) * 30;
244
- const midBoost = progress > 0.2 && progress < 0.8 ? Math.random() * 10 : 0;
245
- const endTaper = progress < 0.05 || progress > 0.95 ? Math.min(progress / 0.05, (1 - progress) / 0.05) : 1;
246
- data.push(Math.max(5, Math.min(90, (baseHeight + noise + envelope + midBoost) * endTaper)));
145
+ const Je = "_root_1pkxe_1", Qe = "_progressOverlay_1pkxe_9", Ze = "_bars_1pkxe_19", et = "_bar_1pkxe_19", tt = "_loading_1pkxe_34", J = {
146
+ root: Je,
147
+ progressOverlay: Qe,
148
+ bars: Ze,
149
+ bar: et,
150
+ loading: tt
151
+ };
152
+ function nt(t = 100) {
153
+ const o = [];
154
+ for (let a = 0; a < t; a++) {
155
+ const s = a / (t - 1), i = 20 + Math.sin(a * 0.1) * 15, p = (Math.random() - 0.5) * 20, y = Math.sin(s * Math.PI) * 30, g = s > 0.2 && s < 0.8 ? Math.random() * 10 : 0, _ = s < 0.05 || s > 0.95 ? Math.min(s / 0.05, (1 - s) / 0.05) : 1;
156
+ o.push(Math.max(5, Math.min(90, (i + p + y + g) * _)));
247
157
  }
248
- return data;
158
+ return o;
249
159
  }
250
- var AudioWaveform = forwardRef(
160
+ const le = xe(
251
161
  ({
252
- audioRef,
253
- currentTime = 0,
254
- onSeek,
255
- loading = false,
256
- waveColor = "#CCCCCC",
257
- progressColor = "#169bde",
258
- height = 60,
259
- barWidth = 2,
260
- barGap = 1
261
- }, ref) => {
262
- const containerRef = useRef2(null);
263
- const [waveformData] = useState3(() => generateWaveformData());
264
- const [duration, setDuration] = useState3(0);
265
- const [progress, setProgress] = useState3(0);
266
- useImperativeHandle(ref, () => ({
267
- seekTo: (time) => {
268
- if (duration > 0) {
269
- setProgress(Math.max(0, Math.min(100, time / duration * 100)));
270
- }
162
+ audioRef: t,
163
+ currentTime: o = 0,
164
+ onSeek: a,
165
+ loading: s = !1,
166
+ waveColor: i = "#CCCCCC",
167
+ progressColor: p = "#169bde",
168
+ height: y = 60,
169
+ barWidth: g = 2,
170
+ barGap: _ = 1
171
+ }, c) => {
172
+ const u = D(null), [b] = z(() => nt()), [r, v] = z(0), [d, l] = z(0);
173
+ Se(c, () => ({
174
+ seekTo: (n) => {
175
+ r > 0 && l(Math.max(0, Math.min(100, n / r * 100)));
271
176
  },
272
- getCurrentTime: () => progress / 100 * duration,
273
- getDuration: () => duration
274
- }));
275
- useEffect3(() => {
276
- const audio = audioRef.current;
277
- if (!audio) return;
278
- const handleMeta = () => {
279
- if (audio.duration && !isNaN(audio.duration)) setDuration(audio.duration);
177
+ getCurrentTime: () => d / 100 * r,
178
+ getDuration: () => r
179
+ })), P(() => {
180
+ const n = t.current;
181
+ if (!n) return;
182
+ const f = () => {
183
+ n.duration && !isNaN(n.duration) && v(n.duration);
184
+ }, I = () => {
185
+ n.duration > 0 && l(n.currentTime / n.duration * 100);
280
186
  };
281
- const handleTime = () => {
282
- if (audio.duration > 0) setProgress(audio.currentTime / audio.duration * 100);
187
+ return n.duration && !isNaN(n.duration) && v(n.duration), n.addEventListener("loadedmetadata", f), n.addEventListener("timeupdate", I), () => {
188
+ n.removeEventListener("loadedmetadata", f), n.removeEventListener("timeupdate", I);
283
189
  };
284
- if (audio.duration && !isNaN(audio.duration)) setDuration(audio.duration);
285
- audio.addEventListener("loadedmetadata", handleMeta);
286
- audio.addEventListener("timeupdate", handleTime);
287
- return () => {
288
- audio.removeEventListener("loadedmetadata", handleMeta);
289
- audio.removeEventListener("timeupdate", handleTime);
290
- };
291
- }, [audioRef]);
292
- useEffect3(() => {
293
- if (duration > 0 && typeof currentTime === "number") {
294
- setProgress(currentTime / duration * 100);
295
- }
296
- }, [currentTime, duration]);
297
- const handleClick = useCallback(
298
- (e) => {
299
- if (!containerRef.current || !onSeek || duration === 0) return;
300
- const rect = containerRef.current.getBoundingClientRect();
301
- const seekTime = (e.clientX - rect.left) / rect.width * duration;
302
- onSeek(seekTime);
190
+ }, [t]), P(() => {
191
+ r > 0 && typeof o == "number" && l(o / r * 100);
192
+ }, [o, r]);
193
+ const w = B(
194
+ (n) => {
195
+ if (!u.current || !a || r === 0) return;
196
+ const f = u.current.getBoundingClientRect(), I = (n.clientX - f.left) / f.width * r;
197
+ a(I);
303
198
  },
304
- [onSeek, duration]
199
+ [a, r]
305
200
  );
306
- return /* @__PURE__ */ jsxs3(
307
- Box,
201
+ return /* @__PURE__ */ m(
202
+ k,
308
203
  {
309
- ref: containerRef,
310
- className: AudioWaveform_default.root,
311
- style: { height },
312
- onClick: handleClick,
204
+ ref: u,
205
+ className: J.root,
206
+ style: { height: y },
207
+ onClick: w,
313
208
  children: [
314
- /* @__PURE__ */ jsx2(
209
+ /* @__PURE__ */ e(
315
210
  "div",
316
211
  {
317
- className: AudioWaveform_default.progressOverlay,
318
- style: { width: `${progress}%`, backgroundColor: `${progressColor}15` }
212
+ className: J.progressOverlay,
213
+ style: { width: `${d}%`, backgroundColor: `${p}15` }
319
214
  }
320
215
  ),
321
- /* @__PURE__ */ jsx2("div", { className: AudioWaveform_default.bars, style: { gap: barGap }, children: waveformData.map((barHeight, i) => {
322
- const isActive = i / waveformData.length * 100 <= progress;
323
- return /* @__PURE__ */ jsx2(
216
+ /* @__PURE__ */ e("div", { className: J.bars, style: { gap: _ }, children: b.map((n, f) => {
217
+ const I = f / b.length * 100 <= d;
218
+ return /* @__PURE__ */ e(
324
219
  "div",
325
220
  {
326
- className: AudioWaveform_default.bar,
221
+ className: J.bar,
327
222
  style: {
328
- width: barWidth,
329
- height: `${barHeight}%`,
330
- backgroundColor: isActive ? progressColor : waveColor
223
+ width: g,
224
+ height: `${n}%`,
225
+ backgroundColor: I ? p : i
331
226
  }
332
227
  },
333
- i
228
+ f
334
229
  );
335
230
  }) }),
336
- loading && /* @__PURE__ */ jsx2("div", { className: AudioWaveform_default.loading, children: "Loading waveform..." })
231
+ s && /* @__PURE__ */ e("div", { className: J.loading, children: "Loading waveform..." })
337
232
  ]
338
233
  }
339
234
  );
340
235
  }
341
236
  );
342
- AudioWaveform.displayName = "AudioWaveform";
343
-
344
- // src/AudioPlayer/AudioPlayer.module.css
345
- var AudioPlayer_default = {};
346
-
347
- // src/AudioPlayer/AudioPlayer.tsx
348
- import { jsx as jsx3, jsxs as jsxs4 } from "react/jsx-runtime";
349
- function formatTime(seconds) {
350
- const m = Math.floor(seconds / 60);
351
- const s = Math.floor(seconds % 60);
352
- return `${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`;
237
+ le.displayName = "AudioWaveform";
238
+ const ot = "_root_n9zxy_1", st = "_playButton_n9zxy_8", at = "_time_n9zxy_22", rt = "_volumeGroup_n9zxy_28", Q = {
239
+ root: ot,
240
+ playButton: st,
241
+ time: at,
242
+ volumeGroup: rt
243
+ };
244
+ function se(t) {
245
+ const o = Math.floor(t / 60), a = Math.floor(t % 60);
246
+ return `${o.toString().padStart(2, "0")}:${a.toString().padStart(2, "0")}`;
353
247
  }
354
- function AudioPlayer({
355
- src,
356
- filename = "audio",
357
- playButtonColor,
358
- playButtonSize = 32,
359
- waveColor = "#D0D0D0",
360
- progressColor = "#a8a8a8",
361
- waveHeight = 64,
362
- barWidth = 3,
363
- barGap = 2,
364
- showVolume = true,
365
- showDownload = true
248
+ function kn({
249
+ src: t,
250
+ filename: o = "audio",
251
+ playButtonColor: a,
252
+ playButtonSize: s = 32,
253
+ waveColor: i = "#D0D0D0",
254
+ progressColor: p = "#a8a8a8",
255
+ waveHeight: y = 64,
256
+ barWidth: g = 3,
257
+ barGap: _ = 2,
258
+ showVolume: c = !0,
259
+ showDownload: u = !0
366
260
  }) {
367
- const audioRef = useRef3(null);
368
- const [isPlaying, setIsPlaying] = useState4(false);
369
- const [currentTime, setCurrentTime] = useState4(0);
370
- const [currentTimeFormatted, setCurrentTimeFormatted] = useState4("00:00");
371
- const [totalDuration, setTotalDuration] = useState4("00:00");
372
- const [volume, setVolume] = useState4(50);
373
- const [prevVolume, setPrevVolume] = useState4(50);
374
- const [isMuted, setIsMuted] = useState4(false);
375
- useEffect4(() => {
376
- const audio = audioRef.current;
377
- if (!audio) return;
378
- audio.volume = volume / 100;
379
- const handleTimeUpdate = () => {
380
- setCurrentTime(audio.currentTime);
381
- setCurrentTimeFormatted(formatTime(audio.currentTime));
382
- };
383
- const handleMeta = () => setTotalDuration(formatTime(audio.duration));
384
- const handleEnded = () => {
261
+ const b = D(null), [r, v] = z(!1), [d, l] = z(0), [w, n] = z("00:00"), [f, I] = z("00:00"), [T, R] = z(50), [A, j] = z(50), [C, M] = z(!1);
262
+ P(() => {
263
+ const h = b.current;
264
+ if (!h) return;
265
+ h.volume = T / 100;
266
+ const x = () => {
267
+ l(h.currentTime), n(se(h.currentTime));
268
+ }, L = () => I(se(h.duration)), X = () => {
385
269
  setTimeout(() => {
386
- setCurrentTime(0);
387
- setCurrentTimeFormatted("00:00");
388
- setIsPlaying(false);
270
+ l(0), n("00:00"), v(!1);
389
271
  }, 500);
272
+ }, Z = () => v(!0), ee = () => v(!1);
273
+ return h.addEventListener("timeupdate", x), h.addEventListener("loadedmetadata", L), h.addEventListener("ended", X), h.addEventListener("play", Z), h.addEventListener("pause", ee), () => {
274
+ h.removeEventListener("timeupdate", x), h.removeEventListener("loadedmetadata", L), h.removeEventListener("ended", X), h.removeEventListener("play", Z), h.removeEventListener("pause", ee);
390
275
  };
391
- const handlePlay = () => setIsPlaying(true);
392
- const handlePause = () => setIsPlaying(false);
393
- audio.addEventListener("timeupdate", handleTimeUpdate);
394
- audio.addEventListener("loadedmetadata", handleMeta);
395
- audio.addEventListener("ended", handleEnded);
396
- audio.addEventListener("play", handlePlay);
397
- audio.addEventListener("pause", handlePause);
398
- return () => {
399
- audio.removeEventListener("timeupdate", handleTimeUpdate);
400
- audio.removeEventListener("loadedmetadata", handleMeta);
401
- audio.removeEventListener("ended", handleEnded);
402
- audio.removeEventListener("play", handlePlay);
403
- audio.removeEventListener("pause", handlePause);
404
- };
405
- }, [src]);
406
- const togglePlay = useCallback2(() => {
407
- const audio = audioRef.current;
408
- if (!audio) return;
409
- if (isPlaying) {
410
- audio.pause();
411
- } else {
412
- audio.play().catch(() => {
413
- });
414
- }
415
- }, [isPlaying]);
416
- const handleSeek = useCallback2((time) => {
417
- const audio = audioRef.current;
418
- if (audio && !isNaN(time) && isFinite(time)) {
419
- audio.currentTime = time;
420
- setCurrentTime(time);
421
- setCurrentTimeFormatted(formatTime(time));
422
- }
423
- }, []);
424
- const handleVolumeChange = useCallback2(
425
- (value) => {
426
- const audio = audioRef.current;
427
- if (!audio) return;
428
- audio.volume = value / 100;
429
- setVolume(value);
430
- if (value > 0) {
431
- setPrevVolume(value);
432
- setIsMuted(false);
433
- } else {
434
- setIsMuted(true);
435
- }
276
+ }, [t]);
277
+ const E = B(() => {
278
+ const h = b.current;
279
+ h && (r ? h.pause() : h.play().catch(() => {
280
+ }));
281
+ }, [r]), G = B((h) => {
282
+ const x = b.current;
283
+ x && !isNaN(h) && isFinite(h) && (x.currentTime = h, l(h), n(se(h)));
284
+ }, []), O = B(
285
+ (h) => {
286
+ const x = b.current;
287
+ x && (x.volume = h / 100, R(h), h > 0 ? (j(h), M(!1)) : M(!0));
436
288
  },
437
289
  []
438
- );
439
- const toggleMute = useCallback2(() => {
440
- const audio = audioRef.current;
441
- if (!audio) return;
442
- if (isMuted) {
443
- const restore = prevVolume || 50;
444
- audio.volume = restore / 100;
445
- setVolume(restore);
446
- setIsMuted(false);
447
- } else {
448
- setPrevVolume(volume);
449
- audio.volume = 0;
450
- setVolume(0);
451
- setIsMuted(true);
452
- }
453
- }, [isMuted, volume, prevVolume]);
454
- const handleDownload = useCallback2(() => {
455
- fetch(src).then((r) => r.blob()).then((blob) => {
456
- const url = URL.createObjectURL(blob);
457
- const a = document.createElement("a");
458
- a.href = url;
459
- a.download = filename;
460
- document.body.appendChild(a);
461
- a.click();
462
- document.body.removeChild(a);
463
- URL.revokeObjectURL(url);
464
- }).catch(() => window.open(src, "_blank"));
465
- }, [src, filename]);
466
- return /* @__PURE__ */ jsxs4(Group, { gap: "sm", wrap: "nowrap", className: AudioPlayer_default.root, children: [
467
- /* @__PURE__ */ jsx3("audio", { ref: audioRef, src, preload: "metadata" }),
468
- /* @__PURE__ */ jsx3(
469
- ActionIcon,
290
+ ), H = B(() => {
291
+ const h = b.current;
292
+ if (h)
293
+ if (C) {
294
+ const x = A || 50;
295
+ h.volume = x / 100, R(x), M(!1);
296
+ } else
297
+ j(T), h.volume = 0, R(0), M(!0);
298
+ }, [C, T, A]), K = B(() => {
299
+ fetch(t).then((h) => h.blob()).then((h) => {
300
+ const x = URL.createObjectURL(h), L = document.createElement("a");
301
+ L.href = x, L.download = o, document.body.appendChild(L), L.click(), document.body.removeChild(L), URL.revokeObjectURL(x);
302
+ }).catch(() => window.open(t, "_blank"));
303
+ }, [t, o]);
304
+ return /* @__PURE__ */ m(F, { gap: "sm", wrap: "nowrap", className: Q.root, children: [
305
+ /* @__PURE__ */ e("audio", { ref: b, src: t, preload: "metadata" }),
306
+ /* @__PURE__ */ e(
307
+ Y,
470
308
  {
471
309
  variant: "filled",
472
310
  radius: "xl",
473
- size: playButtonSize,
474
- color: playButtonColor,
475
- onClick: togglePlay,
476
- "aria-label": isPlaying ? "Pause" : "Play",
477
- className: AudioPlayer_default.playButton,
478
- children: isPlaying ? /* @__PURE__ */ jsx3(IconPlayerPauseFilled, { size: playButtonSize * 0.5 }) : /* @__PURE__ */ jsx3(IconPlayerPlayFilled, { size: playButtonSize * 0.5 })
311
+ size: s,
312
+ color: a,
313
+ onClick: E,
314
+ "aria-label": r ? "Pause" : "Play",
315
+ className: Q.playButton,
316
+ children: r ? /* @__PURE__ */ e(Ce, { size: s * 0.5 }) : /* @__PURE__ */ e(ke, { size: s * 0.5 })
479
317
  }
480
318
  ),
481
- /* @__PURE__ */ jsx3(Text2, { size: "xs", ff: "monospace", c: "dimmed", className: AudioPlayer_default.time, children: currentTimeFormatted }),
482
- /* @__PURE__ */ jsx3(Box2, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsx3(
483
- AudioWaveform,
319
+ /* @__PURE__ */ e(N, { size: "xs", ff: "monospace", c: "dimmed", className: Q.time, children: w }),
320
+ /* @__PURE__ */ e(k, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ e(
321
+ le,
484
322
  {
485
- audioRef,
486
- currentTime,
487
- onSeek: handleSeek,
488
- waveColor,
489
- progressColor,
490
- height: waveHeight,
491
- barWidth,
492
- barGap
323
+ audioRef: b,
324
+ currentTime: d,
325
+ onSeek: G,
326
+ waveColor: i,
327
+ progressColor: p,
328
+ height: y,
329
+ barWidth: g,
330
+ barGap: _
493
331
  }
494
332
  ) }),
495
- /* @__PURE__ */ jsx3(Text2, { size: "xs", ff: "monospace", c: "dimmed", className: AudioPlayer_default.time, children: totalDuration }),
496
- showVolume && /* @__PURE__ */ jsxs4(Group, { gap: 4, wrap: "nowrap", className: AudioPlayer_default.volumeGroup, children: [
497
- /* @__PURE__ */ jsx3(
498
- ActionIcon,
333
+ /* @__PURE__ */ e(N, { size: "xs", ff: "monospace", c: "dimmed", className: Q.time, children: f }),
334
+ c && /* @__PURE__ */ m(F, { gap: 4, wrap: "nowrap", className: Q.volumeGroup, children: [
335
+ /* @__PURE__ */ e(
336
+ Y,
499
337
  {
500
338
  variant: "subtle",
501
339
  size: "sm",
502
- onClick: toggleMute,
503
- "aria-label": isMuted ? "Unmute" : "Mute",
504
- children: isMuted ? /* @__PURE__ */ jsx3(IconVolumeOff, { size: 16 }) : /* @__PURE__ */ jsx3(IconVolume, { size: 16 })
340
+ onClick: H,
341
+ "aria-label": C ? "Unmute" : "Mute",
342
+ children: C ? /* @__PURE__ */ e(Ge, { size: 16 }) : /* @__PURE__ */ e(Re, { size: 16 })
505
343
  }
506
344
  ),
507
- /* @__PURE__ */ jsx3(
508
- Slider,
345
+ /* @__PURE__ */ e(
346
+ Be,
509
347
  {
510
- value: volume,
511
- onChange: handleVolumeChange,
348
+ value: T,
349
+ onChange: O,
512
350
  size: "xs",
513
351
  w: 80,
514
352
  "aria-label": "Volume"
515
353
  }
516
354
  )
517
355
  ] }),
518
- showDownload && /* @__PURE__ */ jsx3(ActionIcon, { variant: "subtle", size: "sm", onClick: handleDownload, "aria-label": "Download", children: /* @__PURE__ */ jsx3(IconDownload, { size: 16 }) })
356
+ u && /* @__PURE__ */ e(Y, { variant: "subtle", size: "sm", onClick: K, "aria-label": "Download", children: /* @__PURE__ */ e(Ae, { size: 16 }) })
519
357
  ] });
520
358
  }
521
-
522
- // src/CodeBlock/CodeBlock.tsx
523
- import { useState as useState5, useCallback as useCallback3 } from "react";
524
- import { Box as Box3, Button, Group as Group2, Text as Text3 } from "@mantine/core";
525
-
526
- // src/CodeBlock/CodeBlock.module.css
527
- var CodeBlock_default = {};
528
-
529
- // src/CodeBlock/CodeBlock.tsx
530
- import { jsx as jsx4, jsxs as jsxs5 } from "react/jsx-runtime";
531
- function CodeBlock({ code, filename, height = 384 }) {
532
- const [copied, setCopied] = useState5(false);
533
- const handleCopy = useCallback3(async () => {
359
+ const it = "_root_ujac8_1", ct = "_textarea_ujac8_5", _e = {
360
+ root: it,
361
+ textarea: ct
362
+ };
363
+ function Ln({ code: t, filename: o, height: a = 384 }) {
364
+ const [s, i] = z(!1), p = B(async () => {
534
365
  try {
535
- await navigator.clipboard.writeText(code);
536
- setCopied(true);
537
- setTimeout(() => setCopied(false), 2e3);
538
- } catch (e) {
366
+ await navigator.clipboard.writeText(t), i(!0), setTimeout(() => i(!1), 2e3);
367
+ } catch {
539
368
  }
540
- }, [code]);
541
- return /* @__PURE__ */ jsxs5(Box3, { className: CodeBlock_default.root, children: [
542
- /* @__PURE__ */ jsxs5(Group2, { justify: "space-between", mb: "xs", children: [
543
- filename && /* @__PURE__ */ jsx4(Text3, { size: "sm", fw: 500, c: "dimmed", children: filename }),
544
- /* @__PURE__ */ jsx4(
545
- Button,
369
+ }, [t]);
370
+ return /* @__PURE__ */ m(k, { className: _e.root, children: [
371
+ /* @__PURE__ */ m(F, { justify: "space-between", mb: "xs", children: [
372
+ o && /* @__PURE__ */ e(N, { size: "sm", fw: 500, c: "dimmed", children: o }),
373
+ /* @__PURE__ */ e(
374
+ ie,
546
375
  {
547
376
  size: "xs",
548
377
  radius: "md",
549
- color: copied ? "green" : "blue",
550
- onClick: handleCopy,
551
- children: copied ? "Copied!" : "Copy"
378
+ color: s ? "green" : "blue",
379
+ onClick: p,
380
+ children: s ? "Copied!" : "Copy"
552
381
  }
553
382
  )
554
383
  ] }),
555
- /* @__PURE__ */ jsx4(
384
+ /* @__PURE__ */ e(
556
385
  "textarea",
557
386
  {
558
- readOnly: true,
559
- value: code,
560
- className: CodeBlock_default.textarea,
561
- style: { height }
387
+ readOnly: !0,
388
+ value: t,
389
+ className: _e.textarea,
390
+ style: { height: a }
562
391
  }
563
392
  )
564
393
  ] });
565
394
  }
566
-
567
- // src/ColorPalette/ColorPalette.tsx
568
- import { SimpleGrid, Text as Text4, Title } from "@mantine/core";
569
-
570
- // src/Copyable/Copyable.tsx
571
- import { useState as useState6, useCallback as useCallback4 } from "react";
572
- import { Notification, Portal } from "@mantine/core";
573
-
574
- // src/Copyable/Copyable.module.css
575
- var Copyable_default = {};
576
-
577
- // src/Copyable/Copyable.tsx
578
- import { Fragment, jsx as jsx5, jsxs as jsxs6 } from "react/jsx-runtime";
579
- function Copyable({ value, children }) {
580
- const [toast, setToast] = useState6(null);
581
- const handleCopy = useCallback4(() => {
582
- navigator.clipboard.writeText(value).then(() => {
583
- setToast(`Copied ${value}`);
584
- setTimeout(() => setToast(null), 1800);
395
+ const lt = "_root_ix1b2_1", dt = "_toast_ix1b2_5", ve = {
396
+ root: lt,
397
+ toast: dt
398
+ };
399
+ function de({ value: t, children: o }) {
400
+ const [a, s] = z(null), i = B(() => {
401
+ navigator.clipboard.writeText(t).then(() => {
402
+ s(`Copied ${t}`), setTimeout(() => s(null), 1800);
585
403
  });
586
- }, [value]);
587
- return /* @__PURE__ */ jsxs6(Fragment, { children: [
588
- /* @__PURE__ */ jsx5(
404
+ }, [t]);
405
+ return /* @__PURE__ */ m(ze, { children: [
406
+ /* @__PURE__ */ e(
589
407
  "span",
590
408
  {
591
- onClick: handleCopy,
592
- className: Copyable_default.root,
593
- title: `Click to copy ${value}`,
594
- children
409
+ onClick: i,
410
+ className: ve.root,
411
+ title: `Click to copy ${t}`,
412
+ children: o
595
413
  }
596
414
  ),
597
- toast && /* @__PURE__ */ jsx5(Portal, { children: /* @__PURE__ */ jsx5(
598
- Notification,
415
+ a && /* @__PURE__ */ e(Te, { children: /* @__PURE__ */ e(
416
+ Pe,
599
417
  {
600
- withCloseButton: false,
601
- className: Copyable_default.toast,
418
+ withCloseButton: !1,
419
+ className: ve.toast,
602
420
  color: "blue",
603
- children: toast
421
+ children: a
604
422
  }
605
423
  ) })
606
424
  ] });
607
425
  }
608
-
609
- // src/ColorPalette/ColorPalette.module.css
610
- var ColorPalette_default = {};
611
-
612
- // src/ColorPalette/ColorPalette.tsx
613
- import { jsx as jsx6, jsxs as jsxs7 } from "react/jsx-runtime";
614
- function ColorPalette({ name, shades, mainIndex = 5 }) {
615
- return /* @__PURE__ */ jsxs7("div", { className: ColorPalette_default.root, children: [
616
- /* @__PURE__ */ jsx6(Title, { order: 4, size: "lg", tt: "capitalize", mb: "xs", children: name }),
617
- /* @__PURE__ */ jsx6(SimpleGrid, { cols: 10, spacing: 4, children: shades.map((hex, i) => /* @__PURE__ */ jsx6(Copyable, { value: hex, children: /* @__PURE__ */ jsxs7("div", { className: ColorPalette_default.shade, children: [
618
- /* @__PURE__ */ jsx6(
426
+ const ut = "_root_3ht5s_1", mt = "_shade_3ht5s_5", ht = "_color_3ht5s_10", pt = "_main_3ht5s_20", te = {
427
+ root: ut,
428
+ shade: mt,
429
+ color: ht,
430
+ main: pt
431
+ };
432
+ function Sn({ name: t, shades: o, mainIndex: a = 5 }) {
433
+ return /* @__PURE__ */ m("div", { className: te.root, children: [
434
+ /* @__PURE__ */ e(oe, { order: 4, size: "lg", tt: "capitalize", mb: "xs", children: t }),
435
+ /* @__PURE__ */ e(Me, { cols: 10, spacing: 4, children: o.map((s, i) => /* @__PURE__ */ e(de, { value: s, children: /* @__PURE__ */ m("div", { className: te.shade, children: [
436
+ /* @__PURE__ */ e(
619
437
  "div",
620
438
  {
621
- className: `${ColorPalette_default.color} ${i === mainIndex ? ColorPalette_default.main : ""}`,
622
- style: { backgroundColor: hex }
439
+ className: `${te.color} ${i === a ? te.main : ""}`,
440
+ style: { backgroundColor: s }
623
441
  }
624
442
  ),
625
- /* @__PURE__ */ jsx6(Text4, { size: "xs", c: "dimmed", ta: "center", mt: 4, children: i }),
626
- /* @__PURE__ */ jsx6(Text4, { size: "xs", c: "dimmed", ta: "center", ff: "monospace", children: hex })
443
+ /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", ta: "center", mt: 4, children: i }),
444
+ /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", ta: "center", ff: "monospace", children: s })
627
445
  ] }) }, i)) })
628
446
  ] });
629
447
  }
630
-
631
- // src/ColorSwatch/ColorSwatch.tsx
632
- import { Paper, Text as Text5 } from "@mantine/core";
633
-
634
- // src/ColorSwatch/ColorSwatch.module.css
635
- var ColorSwatch_default = {};
636
-
637
- // src/ColorSwatch/ColorSwatch.tsx
638
- import { jsx as jsx7, jsxs as jsxs8 } from "react/jsx-runtime";
639
- function ColorSwatch({ name, hex, label }) {
640
- return /* @__PURE__ */ jsx7(Copyable, { value: hex, children: /* @__PURE__ */ jsxs8(Paper, { className: ColorSwatch_default.root, shadow: "lg", radius: "md", withBorder: false, children: [
641
- /* @__PURE__ */ jsx7("div", { className: ColorSwatch_default.preview, style: { backgroundColor: hex } }),
642
- /* @__PURE__ */ jsxs8("div", { className: ColorSwatch_default.info, children: [
643
- /* @__PURE__ */ jsx7(Text5, { fw: 600, size: "sm", children: name }),
644
- /* @__PURE__ */ jsx7(Text5, { size: "xs", c: "dimmed", ff: "monospace", children: hex }),
645
- label && /* @__PURE__ */ jsx7(Text5, { size: "xs", c: "dimmed", children: label })
448
+ const ft = "_root_1vxkx_1", _t = "_preview_1vxkx_11", vt = "_info_1vxkx_15", ae = {
449
+ root: ft,
450
+ preview: _t,
451
+ info: vt
452
+ };
453
+ function Bn({ name: t, hex: o, label: a }) {
454
+ return /* @__PURE__ */ e(de, { value: o, children: /* @__PURE__ */ m(U, { className: ae.root, shadow: "lg", radius: "md", withBorder: !1, children: [
455
+ /* @__PURE__ */ e("div", { className: ae.preview, style: { backgroundColor: o } }),
456
+ /* @__PURE__ */ m("div", { className: ae.info, children: [
457
+ /* @__PURE__ */ e(N, { fw: 600, size: "sm", children: t }),
458
+ /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", ff: "monospace", children: o }),
459
+ a && /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", children: a })
646
460
  ] })
647
461
  ] }) });
648
462
  }
649
-
650
- // src/DosDonts/DosDonts.tsx
651
- import { SimpleGrid as SimpleGrid2, Paper as Paper2, Text as Text6, Group as Group3 } from "@mantine/core";
652
- import { IconCheck, IconX } from "@tabler/icons-react";
653
-
654
- // src/DosDonts/DosDonts.module.css
655
- var DosDonts_default = {};
656
-
657
- // src/DosDonts/DosDonts.tsx
658
- import { jsx as jsx8, jsxs as jsxs9 } from "react/jsx-runtime";
659
- function DosDonts({ items }) {
660
- return /* @__PURE__ */ jsx8("div", { className: DosDonts_default.root, children: items.map((item, i) => /* @__PURE__ */ jsxs9(SimpleGrid2, { cols: { base: 1, sm: 2 }, spacing: "md", children: [
661
- /* @__PURE__ */ jsxs9(Paper2, { className: DosDonts_default.dont, p: "md", radius: "md", children: [
662
- /* @__PURE__ */ jsxs9(Group3, { gap: 6, mb: 6, children: [
663
- /* @__PURE__ */ jsx8(IconX, { size: 16, className: DosDonts_default.dontIcon }),
664
- /* @__PURE__ */ jsx8(Text6, { size: "sm", fw: 600, className: DosDonts_default.dontLabel, children: "Don't" })
463
+ const gt = "_root_dzed6_1", yt = "_dont_dzed6_7", bt = "_dontIcon_dzed6_12", wt = "_dontLabel_dzed6_13", Nt = "_doIcon_dzed6_22", It = "_doLabel_dzed6_23", q = {
464
+ root: gt,
465
+ dont: yt,
466
+ dontIcon: bt,
467
+ dontLabel: wt,
468
+ do: "_do_dzed6_7",
469
+ doIcon: Nt,
470
+ doLabel: It
471
+ };
472
+ function Tn({ items: t }) {
473
+ return /* @__PURE__ */ e("div", { className: q.root, children: t.map((o, a) => /* @__PURE__ */ m(Me, { cols: { base: 1, sm: 2 }, spacing: "md", children: [
474
+ /* @__PURE__ */ m(U, { className: q.dont, p: "md", radius: "md", children: [
475
+ /* @__PURE__ */ m(F, { gap: 6, mb: 6, children: [
476
+ /* @__PURE__ */ e(Oe, { size: 16, className: q.dontIcon }),
477
+ /* @__PURE__ */ e(N, { size: "sm", fw: 600, className: q.dontLabel, children: "Don't" })
665
478
  ] }),
666
- /* @__PURE__ */ jsx8(Text6, { size: "sm", children: item.dont })
479
+ /* @__PURE__ */ e(N, { size: "sm", children: o.dont })
667
480
  ] }),
668
- /* @__PURE__ */ jsxs9(Paper2, { className: DosDonts_default.do, p: "md", radius: "md", children: [
669
- /* @__PURE__ */ jsxs9(Group3, { gap: 6, mb: 6, children: [
670
- /* @__PURE__ */ jsx8(IconCheck, { size: 16, className: DosDonts_default.doIcon }),
671
- /* @__PURE__ */ jsx8(Text6, { size: "sm", fw: 600, className: DosDonts_default.doLabel, children: "Do" })
481
+ /* @__PURE__ */ m(U, { className: q.do, p: "md", radius: "md", children: [
482
+ /* @__PURE__ */ m(F, { gap: 6, mb: 6, children: [
483
+ /* @__PURE__ */ e(He, { size: 16, className: q.doIcon }),
484
+ /* @__PURE__ */ e(N, { size: "sm", fw: 600, className: q.doLabel, children: "Do" })
672
485
  ] }),
673
- /* @__PURE__ */ jsx8(Text6, { size: "sm", children: item.do })
486
+ /* @__PURE__ */ e(N, { size: "sm", children: o.do })
674
487
  ] })
675
- ] }, i)) });
488
+ ] }, a)) });
676
489
  }
677
-
678
- // src/ExpandableCard/ExpandableCard.tsx
679
- import { useEffect as useEffect5, useRef as useRef4, useState as useState7 } from "react";
680
- import { Paper as Paper3, Group as Group4, Stack, Text as Text7, ThemeIcon } from "@mantine/core";
681
- import { motion as motion2 } from "framer-motion";
682
-
683
- // src/ExpandableCard/ExpandableCard.module.css
684
- var ExpandableCard_default = {};
685
-
686
- // src/ExpandableCard/ExpandableCard.tsx
687
- import { jsx as jsx9, jsxs as jsxs10 } from "react/jsx-runtime";
688
- function ExpandableCard({
689
- title,
690
- description,
691
- expandedContent,
692
- icon: Icon,
693
- color = "blue",
694
- iconSize = "lg",
695
- collapsedHeight = 120,
696
- threshold = 0.5,
697
- delay = 300,
698
- expanded: controlledExpanded,
699
- onExpandedChange
490
+ const zt = "_root_xi08i_1", xt = "_inner_xi08i_6", ge = {
491
+ root: zt,
492
+ inner: xt
493
+ };
494
+ function Pn({
495
+ title: t,
496
+ description: o,
497
+ expandedContent: a,
498
+ icon: s,
499
+ color: i = "blue",
500
+ iconSize: p = "lg",
501
+ collapsedHeight: y = 120,
502
+ threshold: g = 0.5,
503
+ delay: _ = 300,
504
+ expanded: c,
505
+ onExpandedChange: u
700
506
  }) {
701
- const ref = useRef4(null);
702
- const [internalExpanded, setInternalExpanded] = useState7(false);
703
- const isControlled = controlledExpanded !== void 0;
704
- const isExpanded = isControlled ? controlledExpanded : internalExpanded;
705
- useEffect5(() => {
706
- if (isControlled) return;
707
- const el = ref.current;
708
- if (!el) return;
709
- const observer = new IntersectionObserver(
710
- ([entry]) => {
711
- if (entry.isIntersecting) {
712
- setTimeout(() => {
713
- setInternalExpanded(true);
714
- onExpandedChange == null ? void 0 : onExpandedChange(true);
715
- }, delay);
716
- }
507
+ const b = D(null), [r, v] = z(!1), d = c !== void 0, l = d ? c : r;
508
+ return P(() => {
509
+ if (d) return;
510
+ const w = b.current;
511
+ if (!w) return;
512
+ const n = new IntersectionObserver(
513
+ ([f]) => {
514
+ f.isIntersecting && setTimeout(() => {
515
+ v(!0), u == null || u(!0);
516
+ }, _);
717
517
  },
718
- { threshold }
518
+ { threshold: g }
719
519
  );
720
- observer.observe(el);
721
- return () => observer.disconnect();
722
- }, [isControlled, threshold, delay, onExpandedChange]);
723
- return /* @__PURE__ */ jsx9(
724
- Paper3,
725
- __spreadProps(__spreadValues({
726
- ref,
520
+ return n.observe(w), () => n.disconnect();
521
+ }, [d, g, _, u]), /* @__PURE__ */ e(
522
+ U,
523
+ {
524
+ ref: b,
727
525
  radius: 4,
728
- className: ExpandableCard_default.root,
729
- component: motion2.div
730
- }, {
731
- animate: { height: isExpanded ? "auto" : collapsedHeight },
732
- transition: { duration: 0.5, ease: "easeOut" }
733
- }), {
734
- children: /* @__PURE__ */ jsx9("div", { className: ExpandableCard_default.inner, children: /* @__PURE__ */ jsxs10(Group4, { align: "flex-start", justify: "space-between", gap: "lg", wrap: "nowrap", children: [
735
- /* @__PURE__ */ jsxs10(Stack, { gap: "xs", style: { flex: 1 }, children: [
736
- /* @__PURE__ */ jsx9(Text7, { fw: 700, size: "xl", lh: 1.3, children: title }),
737
- /* @__PURE__ */ jsx9(Text7, { size: "md", c: "dimmed", children: description }),
738
- /* @__PURE__ */ jsx9(
739
- motion2.div,
526
+ className: ge.root,
527
+ component: S.div,
528
+ animate: { height: l ? "auto" : y },
529
+ transition: { duration: 0.5, ease: "easeOut" },
530
+ children: /* @__PURE__ */ e("div", { className: ge.inner, children: /* @__PURE__ */ m(F, { align: "flex-start", justify: "space-between", gap: "lg", wrap: "nowrap", children: [
531
+ /* @__PURE__ */ m(ce, { gap: "xs", style: { flex: 1 }, children: [
532
+ /* @__PURE__ */ e(N, { fw: 700, size: "xl", lh: 1.3, children: t }),
533
+ /* @__PURE__ */ e(N, { size: "md", c: "dimmed", children: o }),
534
+ /* @__PURE__ */ e(
535
+ S.div,
740
536
  {
741
537
  initial: { opacity: 0, height: 0 },
742
538
  animate: {
743
- opacity: isExpanded ? 1 : 0,
744
- height: isExpanded ? "auto" : 0
539
+ opacity: l ? 1 : 0,
540
+ height: l ? "auto" : 0
745
541
  },
746
542
  transition: { duration: 0.4, delay: 0.2 },
747
543
  style: { overflow: "hidden" },
748
- children: typeof expandedContent === "string" ? /* @__PURE__ */ jsx9(Text7, { size: "sm", c: "dimmed", mt: "sm", children: expandedContent }) : expandedContent
544
+ children: typeof a == "string" ? /* @__PURE__ */ e(N, { size: "sm", c: "dimmed", mt: "sm", children: a }) : a
749
545
  }
750
546
  )
751
547
  ] }),
752
- /* @__PURE__ */ jsx9(
753
- motion2.div,
548
+ /* @__PURE__ */ e(
549
+ S.div,
754
550
  {
755
- animate: { scale: isExpanded ? 1.1 : 1 },
551
+ animate: { scale: l ? 1.1 : 1 },
756
552
  transition: { duration: 0.3 },
757
- children: /* @__PURE__ */ jsx9(ThemeIcon, { size: iconSize, radius: 4, color, variant: "filled", children: /* @__PURE__ */ jsx9(Icon, { size: 20, stroke: 1.5 }) })
553
+ children: /* @__PURE__ */ e(We, { size: p, radius: 4, color: i, variant: "filled", children: /* @__PURE__ */ e(s, { size: 20, stroke: 1.5 }) })
758
554
  }
759
555
  )
760
556
  ] }) })
761
- })
557
+ }
762
558
  );
763
559
  }
764
-
765
- // src/FadeInSection/FadeInSection.tsx
766
- import { useEffect as useEffect6, useRef as useRef5, useState as useState8 } from "react";
767
- import { Box as Box4 } from "@mantine/core";
768
-
769
- // src/FadeInSection/FadeInSection.module.css
770
- var FadeInSection_default = {};
771
-
772
- // src/FadeInSection/FadeInSection.tsx
773
- import { jsx as jsx10 } from "react/jsx-runtime";
774
- function FadeInSection(_a) {
775
- var _b = _a, {
776
- children,
777
- delay = 0,
778
- threshold = 0.1,
779
- className
780
- } = _b, props = __objRest(_b, [
781
- "children",
782
- "delay",
783
- "threshold",
784
- "className"
785
- ]);
786
- const ref = useRef5(null);
787
- const [isVisible, setIsVisible] = useState8(false);
788
- useEffect6(() => {
789
- const el = ref.current;
790
- if (!el) return;
791
- const observer = new IntersectionObserver(
792
- ([entry]) => {
793
- if (entry.isIntersecting) {
794
- if (delay > 0) {
795
- setTimeout(() => setIsVisible(true), delay);
796
- } else {
797
- setIsVisible(true);
798
- }
799
- }
560
+ const Mt = "_root_ho0ln_1", $t = "_visible_ho0ln_7", ye = {
561
+ root: Mt,
562
+ visible: $t
563
+ };
564
+ function Wn({
565
+ children: t,
566
+ delay: o = 0,
567
+ threshold: a = 0.1,
568
+ className: s,
569
+ ...i
570
+ }) {
571
+ const p = D(null), [y, g] = z(!1);
572
+ return P(() => {
573
+ const _ = p.current;
574
+ if (!_) return;
575
+ const c = new IntersectionObserver(
576
+ ([u]) => {
577
+ u.isIntersecting && (o > 0 ? setTimeout(() => g(!0), o) : g(!0));
800
578
  },
801
- { threshold }
579
+ { threshold: a }
802
580
  );
803
- observer.observe(el);
804
- return () => observer.disconnect();
805
- }, [delay, threshold]);
806
- return /* @__PURE__ */ jsx10(
807
- Box4,
808
- __spreadProps(__spreadValues({
809
- ref,
810
- className: `${FadeInSection_default.root} ${isVisible ? FadeInSection_default.visible : ""} ${className != null ? className : ""}`
811
- }, props), {
812
- children
813
- })
581
+ return c.observe(_), () => c.disconnect();
582
+ }, [o, a]), /* @__PURE__ */ e(
583
+ k,
584
+ {
585
+ ref: p,
586
+ className: `${ye.root} ${y ? ye.visible : ""} ${s ?? ""}`,
587
+ ...i,
588
+ children: t
589
+ }
814
590
  );
815
591
  }
816
-
817
- // src/FrequencyWave/FrequencyWave.tsx
818
- import { useEffect as useEffect7, useRef as useRef6, useState as useState9, useCallback as useCallback5 } from "react";
819
- import { Box as Box5, useMantineColorScheme } from "@mantine/core";
820
- import { jsx as jsx11 } from "react/jsx-runtime";
821
- function FrequencyWave({ isActive = false, height = 60 }) {
822
- const canvasRef = useRef6(null);
823
- const animationRef = useRef6(void 0);
824
- const [isPulsing, setIsPulsing] = useState9(false);
825
- const lastPulseRef = useRef6(null);
826
- const randomSpikeRef = useRef6(null);
827
- const { colorScheme } = useMantineColorScheme();
828
- const isDark = colorScheme === "dark";
829
- const colors = {
830
- start: isDark ? "#7950F2" : "#9775FA",
831
- mid: isDark ? "#BE4BDB" : "#DA77F2",
832
- end: isDark ? "#15AABF" : "#22B8CF"
833
- };
834
- const drawWave = useCallback5(
835
- (ctx, width, canvasHeight, time) => {
836
- var _a;
837
- ctx.clearRect(0, 0, width, canvasHeight);
838
- const isAnimating = isActive || isPulsing;
839
- const waveY = canvasHeight * 0.65;
840
- const baseAmplitude = isActive ? 5 : isPulsing ? 7 : 1.5;
841
- if (isAnimating) {
842
- if (randomSpikeRef.current === null) {
843
- randomSpikeRef.current = Math.random();
844
- }
845
- if (Math.floor(time / 500) !== Math.floor((time - 16) / 500)) {
846
- randomSpikeRef.current = Math.random();
847
- }
592
+ function En({ isActive: t = !1, height: o = 60 }) {
593
+ const a = D(null), s = D(void 0), [i, p] = z(!1), y = D(null), g = D(null), { colorScheme: _ } = Ee(), c = _ === "dark", u = {
594
+ start: c ? "#7950F2" : "#9775FA",
595
+ mid: c ? "#BE4BDB" : "#DA77F2",
596
+ end: c ? "#15AABF" : "#22B8CF"
597
+ }, b = B(
598
+ (r, v, d, l) => {
599
+ r.clearRect(0, 0, v, d);
600
+ const w = t || i, n = d * 0.65, f = t ? 5 : i ? 7 : 1.5;
601
+ w && (g.current === null && (g.current = Math.random()), Math.floor(l / 500) !== Math.floor((l - 16) / 500) && (g.current = Math.random()));
602
+ const I = r.createLinearGradient(0, 0, v, 0);
603
+ I.addColorStop(0, u.start), I.addColorStop(0.5, u.mid), I.addColorStop(1, u.end), r.strokeStyle = I, r.lineWidth = w ? 2.5 : 1.5, r.lineCap = "round", r.lineJoin = "round", w ? (r.shadowColor = u.mid, r.shadowBlur = i ? 12 : 8) : r.shadowBlur = 0, r.beginPath();
604
+ const T = 300, R = v / T, A = t ? 0.02 : i ? 0.025 : 3e-3;
605
+ for (let j = 0; j <= T; j++) {
606
+ const C = j * R, M = C / v;
607
+ let E = n;
608
+ if (w) {
609
+ const G = Math.sin(M * Math.PI * 6 + l * A) * f, O = Math.sin(M * Math.PI * 12 + l * A * 1.3) * (f * 0.4), H = Math.sin(M * Math.PI * 18 + l * A * 0.8) * (f * 0.2), K = g.current ?? 0.5, h = Math.abs(M - K), x = h < 0.15 ? (1 - h / 0.15) * f * 1 : 0, L = Math.sin(M * Math.PI * 20 + l * A * 2) * x;
610
+ let X = 0;
611
+ i && (X = Math.sin(M * Math.PI * 30 + l * 0.03) * f * 0.4, X += Math.sin(M * Math.PI * 8 + l * 0.015) * f * 0.5);
612
+ const Z = G + O + H + L + X, ee = Math.sin(M * Math.PI);
613
+ E = n + Z * ee;
614
+ } else
615
+ E += Math.sin(M * Math.PI * 2 + l * A) * f;
616
+ j === 0 ? r.moveTo(C, E) : r.lineTo(C, E);
848
617
  }
849
- const gradient = ctx.createLinearGradient(0, 0, width, 0);
850
- gradient.addColorStop(0, colors.start);
851
- gradient.addColorStop(0.5, colors.mid);
852
- gradient.addColorStop(1, colors.end);
853
- ctx.strokeStyle = gradient;
854
- ctx.lineWidth = isAnimating ? 2.5 : 1.5;
855
- ctx.lineCap = "round";
856
- ctx.lineJoin = "round";
857
- if (isAnimating) {
858
- ctx.shadowColor = colors.mid;
859
- ctx.shadowBlur = isPulsing ? 12 : 8;
860
- } else {
861
- ctx.shadowBlur = 0;
862
- }
863
- ctx.beginPath();
864
- const segments = 300;
865
- const segmentWidth = width / segments;
866
- const speed = isActive ? 0.02 : isPulsing ? 0.025 : 3e-3;
867
- for (let i = 0; i <= segments; i++) {
868
- const x = i * segmentWidth;
869
- const normalizedX = x / width;
870
- let y = waveY;
871
- if (isAnimating) {
872
- const wave1 = Math.sin(normalizedX * Math.PI * 6 + time * speed) * baseAmplitude;
873
- const wave2 = Math.sin(normalizedX * Math.PI * 12 + time * speed * 1.3) * (baseAmplitude * 0.4);
874
- const wave3 = Math.sin(normalizedX * Math.PI * 18 + time * speed * 0.8) * (baseAmplitude * 0.2);
875
- const spikePosition = (_a = randomSpikeRef.current) != null ? _a : 0.5;
876
- const distToSpike = Math.abs(normalizedX - spikePosition);
877
- const spikeAmplitude = distToSpike < 0.15 ? (1 - distToSpike / 0.15) * baseAmplitude * 1 : 0;
878
- const spikeWave = Math.sin(normalizedX * Math.PI * 20 + time * speed * 2) * spikeAmplitude;
879
- let aggressiveWave = 0;
880
- if (isPulsing) {
881
- aggressiveWave = Math.sin(normalizedX * Math.PI * 30 + time * 0.03) * baseAmplitude * 0.4;
882
- aggressiveWave += Math.sin(normalizedX * Math.PI * 8 + time * 0.015) * baseAmplitude * 0.5;
883
- }
884
- const combinedWave = wave1 + wave2 + wave3 + spikeWave + aggressiveWave;
885
- const envelope = Math.sin(normalizedX * Math.PI);
886
- y = waveY + combinedWave * envelope;
887
- } else {
888
- y += Math.sin(normalizedX * Math.PI * 2 + time * speed) * baseAmplitude;
889
- }
890
- if (i === 0) {
891
- ctx.moveTo(x, y);
892
- } else {
893
- ctx.lineTo(x, y);
894
- }
895
- }
896
- ctx.stroke();
897
- if (isActive) {
898
- const barCount = 80;
899
- const barWidth = 2;
900
- const barGap = width / barCount;
901
- const maxBarHeight = 16;
902
- ctx.shadowBlur = 3;
903
- for (let i = 0; i < barCount; i++) {
904
- const x = i * barGap + barGap / 2;
905
- const normalizedX = x / width;
906
- const baseBarHeight = Math.sin(normalizedX * Math.PI * 8 + time * 0.025) * 0.5 + Math.sin(normalizedX * Math.PI * 14 + time * 0.018) * 0.3 + Math.sin(normalizedX * Math.PI * 4 + time * 0.03) * 0.2;
907
- const envelope = Math.sin(normalizedX * Math.PI);
908
- const barHeight = Math.abs(baseBarHeight) * maxBarHeight * envelope;
909
- const barGradient = ctx.createLinearGradient(
910
- x,
911
- waveY - barHeight / 2,
912
- x,
913
- waveY + barHeight / 2
618
+ if (r.stroke(), t) {
619
+ const M = v / 80, E = 16;
620
+ r.shadowBlur = 3;
621
+ for (let G = 0; G < 80; G++) {
622
+ const O = G * M + M / 2, H = O / v, K = Math.sin(H * Math.PI * 8 + l * 0.025) * 0.5 + Math.sin(H * Math.PI * 14 + l * 0.018) * 0.3 + Math.sin(H * Math.PI * 4 + l * 0.03) * 0.2, h = Math.sin(H * Math.PI), x = Math.abs(K) * E * h, L = r.createLinearGradient(
623
+ O,
624
+ n - x / 2,
625
+ O,
626
+ n + x / 2
914
627
  );
915
- barGradient.addColorStop(0, colors.start + "90");
916
- barGradient.addColorStop(0.5, colors.mid + "70");
917
- barGradient.addColorStop(1, colors.end + "50");
918
- ctx.fillStyle = barGradient;
919
- ctx.fillRect(x - barWidth / 2, waveY - barHeight / 2, barWidth, barHeight);
628
+ L.addColorStop(0, u.start + "90"), L.addColorStop(0.5, u.mid + "70"), L.addColorStop(1, u.end + "50"), r.fillStyle = L, r.fillRect(O - 2 / 2, n - x / 2, 2, x);
920
629
  }
921
630
  }
922
- if (isPulsing) {
923
- const particleCount = 15;
924
- for (let i = 0; i < particleCount; i++) {
925
- const px = (Math.sin(time * 1e-3 + i * 1.5) * 0.5 + 0.5) * width;
926
- const py = waveY + Math.sin(time * 2e-3 + i) * 8;
927
- const radius = 1.5 + Math.sin(time * 3e-3 + i * 2) * 0.5;
928
- ctx.beginPath();
929
- ctx.arc(px, py, radius, 0, Math.PI * 2);
930
- ctx.fillStyle = i % 2 === 0 ? colors.start + "80" : colors.end + "80";
931
- ctx.fill();
631
+ if (i)
632
+ for (let C = 0; C < 15; C++) {
633
+ const M = (Math.sin(l * 1e-3 + C * 1.5) * 0.5 + 0.5) * v, E = n + Math.sin(l * 2e-3 + C) * 8, G = 1.5 + Math.sin(l * 3e-3 + C * 2) * 0.5;
634
+ r.beginPath(), r.arc(M, E, G, 0, Math.PI * 2), r.fillStyle = C % 2 === 0 ? u.start + "80" : u.end + "80", r.fill();
932
635
  }
933
- }
934
636
  },
935
- [isActive, isPulsing, colors.start, colors.mid, colors.end]
637
+ [t, i, u.start, u.mid, u.end]
936
638
  );
937
- useEffect7(() => {
938
- const canvas = canvasRef.current;
939
- if (!canvas) return;
940
- const ctx = canvas.getContext("2d");
941
- if (!ctx) return;
942
- const updateSize = () => {
943
- const dpr = window.devicePixelRatio || 1;
944
- const rect = canvas.getBoundingClientRect();
945
- canvas.width = rect.width * dpr;
946
- canvas.height = rect.height * dpr;
947
- ctx.scale(dpr, dpr);
639
+ return P(() => {
640
+ const r = a.current;
641
+ if (!r) return;
642
+ const v = r.getContext("2d");
643
+ if (!v) return;
644
+ const d = () => {
645
+ const n = window.devicePixelRatio || 1, f = r.getBoundingClientRect();
646
+ r.width = f.width * n, r.height = f.height * n, v.scale(n, n);
948
647
  };
949
- updateSize();
950
- window.addEventListener("resize", updateSize);
951
- const startTime = performance.now();
952
- const animate = (currentTime) => {
953
- const elapsed = currentTime - startTime;
954
- const rect = canvas.getBoundingClientRect();
955
- drawWave(ctx, rect.width, rect.height, elapsed);
956
- animationRef.current = requestAnimationFrame(animate);
648
+ d(), window.addEventListener("resize", d);
649
+ const l = performance.now(), w = (n) => {
650
+ const f = n - l, I = r.getBoundingClientRect();
651
+ b(v, I.width, I.height, f), s.current = requestAnimationFrame(w);
957
652
  };
958
- animationRef.current = requestAnimationFrame(animate);
959
- return () => {
960
- window.removeEventListener("resize", updateSize);
961
- if (animationRef.current) {
962
- cancelAnimationFrame(animationRef.current);
963
- }
653
+ return s.current = requestAnimationFrame(w), () => {
654
+ window.removeEventListener("resize", d), s.current && cancelAnimationFrame(s.current);
964
655
  };
965
- }, [drawWave]);
966
- useEffect7(() => {
967
- if (isActive) {
968
- queueMicrotask(() => setIsPulsing(false));
969
- lastPulseRef.current = Date.now();
656
+ }, [b]), P(() => {
657
+ if (t) {
658
+ queueMicrotask(() => p(!1)), y.current = Date.now();
970
659
  return;
971
660
  }
972
- const checkForPulse = () => {
973
- const now = Date.now();
974
- if (lastPulseRef.current === null) {
975
- lastPulseRef.current = now;
976
- }
977
- const timeSinceLastPulse = now - lastPulseRef.current;
978
- const pulseInterval = 12e4 + Math.random() * 6e4;
979
- if (timeSinceLastPulse >= pulseInterval && !isPulsing) {
980
- setIsPulsing(true);
981
- lastPulseRef.current = now;
982
- setTimeout(() => setIsPulsing(false), 4e3);
983
- }
984
- };
985
- const intervalId = setInterval(checkForPulse, 5e3);
986
- return () => clearInterval(intervalId);
987
- }, [isActive, isPulsing]);
988
- return /* @__PURE__ */ jsx11(
989
- Box5,
661
+ const v = setInterval(() => {
662
+ const d = Date.now();
663
+ y.current === null && (y.current = d);
664
+ const l = d - y.current, w = 12e4 + Math.random() * 6e4;
665
+ l >= w && !i && (p(!0), y.current = d, setTimeout(() => p(!1), 4e3));
666
+ }, 5e3);
667
+ return () => clearInterval(v);
668
+ }, [t, i]), /* @__PURE__ */ e(
669
+ k,
990
670
  {
991
671
  style: {
992
672
  position: "relative",
993
673
  width: "100%",
994
- height,
674
+ height: o,
995
675
  overflow: "hidden",
996
676
  pointerEvents: "none",
997
- opacity: isDark ? 1 : 0.8
677
+ opacity: c ? 1 : 0.8
998
678
  },
999
- children: /* @__PURE__ */ jsx11(
679
+ children: /* @__PURE__ */ e(
1000
680
  "canvas",
1001
681
  {
1002
- ref: canvasRef,
682
+ ref: a,
1003
683
  style: {
1004
684
  width: "100%",
1005
685
  height: "100%",
@@ -1010,158 +690,204 @@ function FrequencyWave({ isActive = false, height = 60 }) {
1010
690
  }
1011
691
  );
1012
692
  }
1013
-
1014
- // src/GradientSwatch/GradientSwatch.tsx
1015
- import { Paper as Paper4, Text as Text8 } from "@mantine/core";
1016
-
1017
- // src/GradientSwatch/GradientSwatch.module.css
1018
- var GradientSwatch_default = {};
1019
-
1020
- // src/GradientSwatch/GradientSwatch.tsx
1021
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1022
- function GradientSwatch({ name, colors, description }) {
1023
- const css = `linear-gradient(135deg, ${colors[0]} 0%, ${colors[1]} 100%)`;
1024
- return /* @__PURE__ */ jsx12(Copyable, { value: css, children: /* @__PURE__ */ jsxs11(Paper4, { className: GradientSwatch_default.root, shadow: "lg", radius: "md", children: [
1025
- /* @__PURE__ */ jsx12("div", { className: GradientSwatch_default.preview, style: { background: css } }),
1026
- /* @__PURE__ */ jsxs11("div", { className: GradientSwatch_default.info, children: [
1027
- /* @__PURE__ */ jsx12(Text8, { fw: 600, size: "sm", children: name }),
1028
- description && /* @__PURE__ */ jsx12(Text8, { size: "xs", c: "dimmed", children: description }),
1029
- /* @__PURE__ */ jsxs11(Text8, { size: "xs", c: "dimmed", ff: "monospace", children: [
1030
- colors[0],
1031
- " \u2192 ",
1032
- colors[1]
693
+ const Ct = "_root_9li00_1", kt = "_preview_9li00_11", Lt = "_info_9li00_15", re = {
694
+ root: Ct,
695
+ preview: kt,
696
+ info: Lt
697
+ };
698
+ function Dn({ name: t, colors: o, description: a }) {
699
+ const s = `linear-gradient(135deg, ${o[0]} 0%, ${o[1]} 100%)`;
700
+ return /* @__PURE__ */ e(de, { value: s, children: /* @__PURE__ */ m(U, { className: re.root, shadow: "lg", radius: "md", children: [
701
+ /* @__PURE__ */ e("div", { className: re.preview, style: { background: s } }),
702
+ /* @__PURE__ */ m("div", { className: re.info, children: [
703
+ /* @__PURE__ */ e(N, { fw: 600, size: "sm", children: t }),
704
+ a && /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", children: a }),
705
+ /* @__PURE__ */ m(N, { size: "xs", c: "dimmed", ff: "monospace", children: [
706
+ o[0],
707
+ " ",
708
+ o[1]
1033
709
  ] })
1034
710
  ] })
1035
711
  ] }) });
1036
712
  }
1037
-
1038
- // src/Hero/Hero.tsx
1039
- import {
1040
- Box as Box6,
1041
- Button as Button2,
1042
- Group as Group5,
1043
- Image,
1044
- Stack as Stack2,
1045
- Text as Text9,
1046
- Title as Title2
1047
- } from "@mantine/core";
1048
- import defaultLogoSrc from "@frequencyads/brand/assets/frequency-mark-white.svg";
1049
- import { gradients } from "@frequencyads/brand/colors";
1050
-
1051
- // src/VideoBackground/VideoBackground.module.css
1052
- var VideoBackground_default = {};
1053
-
1054
- // src/VideoBackground/VideoBackground.tsx
1055
- import { jsx as jsx13 } from "react/jsx-runtime";
1056
- function VideoBackground({ src, opacity = 0.3 }) {
1057
- return /* @__PURE__ */ jsx13(
1058
- "video",
1059
- {
1060
- autoPlay: true,
1061
- muted: true,
1062
- loop: true,
1063
- playsInline: true,
1064
- className: VideoBackground_default.root,
1065
- style: { opacity },
1066
- children: /* @__PURE__ */ jsx13("source", { src, type: "video/mp4" })
1067
- }
1068
- );
713
+ const St = "_root_1vlvy_1", Bt = "_video_1vlvy_9", be = {
714
+ root: St,
715
+ video: Bt
716
+ };
717
+ function Tt({ src: t, opacity: o = 0.3 }) {
718
+ return /* @__PURE__ */ e("div", { className: be.root, style: { opacity: o }, children: /* @__PURE__ */ e("video", { autoPlay: !0, muted: !0, loop: !0, playsInline: !0, className: be.video, children: /* @__PURE__ */ e("source", { src: t, type: "video/mp4" }) }) });
1069
719
  }
1070
-
1071
- // src/Hero/Hero.module.css
1072
- var Hero_default = {};
1073
-
1074
- // src/Hero/Hero.tsx
1075
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
1076
- function Hero({
1077
- variant = "logo",
1078
- heading,
1079
- tagline,
1080
- logoSrc = defaultLogoSrc,
1081
- gradient: gradientName = "frequencyAlive",
1082
- shimmer = true,
1083
- primaryAction,
1084
- secondaryAction,
1085
- backgroundVideoSrc,
1086
- showWaveform
720
+ const Pt = "_root_1suaa_1", Wt = "_content_1suaa_8", Et = "_label_1suaa_21", Dt = "_vignette_1suaa_37", Ft = "_logoWrapper_1suaa_50", jt = "_logo_1suaa_50", Gt = "_glow_1suaa_73", Rt = "_textWrapper_1suaa_85", At = "_heading_1suaa_91", Ot = "_shimmer_1suaa_125", Ht = "_tagline_1suaa_129", Vt = "_primaryButton_1suaa_143", qt = "_secondaryButton_1suaa_148", Ut = "_scrollIndicator_1suaa_160", Xt = "_scrollLabel_1suaa_171", Yt = "_scrollLine_1suaa_179", $ = {
721
+ root: Pt,
722
+ content: Wt,
723
+ label: Et,
724
+ vignette: Dt,
725
+ logoWrapper: Ft,
726
+ logo: jt,
727
+ glow: Gt,
728
+ textWrapper: Rt,
729
+ heading: At,
730
+ shimmer: Ot,
731
+ tagline: Ht,
732
+ primaryButton: Vt,
733
+ secondaryButton: qt,
734
+ scrollIndicator: Ut,
735
+ scrollLabel: Xt,
736
+ scrollLine: Yt
737
+ };
738
+ function Fn({
739
+ variant: t = "logo",
740
+ heading: o,
741
+ label: a,
742
+ tagline: s,
743
+ logoSrc: i = qe,
744
+ gradient: p = "frequencyAlive",
745
+ shimmer: y = !0,
746
+ primaryAction: g,
747
+ secondaryAction: _,
748
+ backgroundVideoSrc: c,
749
+ showWaveform: u,
750
+ showScrollIndicator: b = !1
1087
751
  }) {
1088
- const resolvedHeading = heading != null ? heading : variant === "text" ? "Frequency" : void 0;
1089
- const hasActions = primaryAction || secondaryAction;
1090
- const waveformVisible = showWaveform != null ? showWaveform : true;
1091
- const grad = gradients[gradientName];
1092
- return /* @__PURE__ */ jsxs12(Box6, { className: Hero_default.root, children: [
1093
- backgroundVideoSrc && /* @__PURE__ */ jsx14(VideoBackground, { src: backgroundVideoSrc }),
1094
- /* @__PURE__ */ jsxs12(Stack2, { className: Hero_default.content, align: "center", gap: "lg", children: [
1095
- variant === "logo" && /* @__PURE__ */ jsxs12("div", { className: Hero_default.logoWrapper, children: [
1096
- waveformVisible && /* @__PURE__ */ jsx14(AnimatedWaveform, {}),
1097
- waveformVisible && /* @__PURE__ */ jsx14("div", { className: Hero_default.vignette }),
1098
- /* @__PURE__ */ jsx14(
1099
- Image,
752
+ const [r, v] = z(!1), d = o ?? (t === "text" ? "Your Message" : void 0), l = a || (t === "logo" ? "Welcome" : void 0), w = g || _, n = u ?? !0, f = Ue[p];
753
+ return P(() => {
754
+ v(!0);
755
+ }, []), /* @__PURE__ */ m(k, { component: "section", className: $.root, children: [
756
+ c && /* @__PURE__ */ e(Tt, { src: c }),
757
+ /* @__PURE__ */ m("div", { className: $.content, children: [
758
+ r && /* @__PURE__ */ m(ze, { children: [
759
+ l && /* @__PURE__ */ e(
760
+ S.p,
1100
761
  {
1101
- src: logoSrc,
1102
- alt: resolvedHeading != null ? resolvedHeading : "Frequency",
1103
- className: Hero_default.logo,
1104
- fit: "contain"
762
+ initial: { opacity: 0 },
763
+ animate: { opacity: 1 },
764
+ transition: { duration: 0.8, delay: 0.2 },
765
+ className: $.label,
766
+ children: l
1105
767
  }
1106
768
  ),
1107
- /* @__PURE__ */ jsx14("div", { className: Hero_default.glow })
1108
- ] }),
1109
- variant === "text" && resolvedHeading && /* @__PURE__ */ jsxs12("div", { className: Hero_default.textWrapper, children: [
1110
- waveformVisible && /* @__PURE__ */ jsx14(AnimatedWaveform, {}),
1111
- waveformVisible && /* @__PURE__ */ jsx14("div", { className: Hero_default.vignette }),
1112
- /* @__PURE__ */ jsx14(
1113
- Title2,
769
+ t === "logo" && /* @__PURE__ */ m(
770
+ S.div,
1114
771
  {
1115
- order: 1,
1116
- className: `${Hero_default.heading} ${shimmer ? Hero_default.shimmer : ""}`,
1117
- style: {
1118
- backgroundImage: `linear-gradient(135deg, ${grad.from}, ${grad.to}, ${grad.from})`,
1119
- backgroundSize: shimmer ? "200% 100%" : void 0
1120
- },
1121
- children: resolvedHeading
772
+ initial: { opacity: 0, scale: 0.8 },
773
+ animate: { opacity: 1, scale: 1 },
774
+ transition: { duration: 1.2, delay: 0.3, ease: "easeOut" },
775
+ className: $.logoWrapper,
776
+ children: [
777
+ n && /* @__PURE__ */ e(fe, {}),
778
+ n && /* @__PURE__ */ e("div", { className: $.vignette }),
779
+ /* @__PURE__ */ e(
780
+ S.img,
781
+ {
782
+ src: i,
783
+ alt: d ?? "Frequency",
784
+ className: $.logo,
785
+ animate: { rotate: [0, 0.5, -0.5, 0] },
786
+ transition: { duration: 8, repeat: 1 / 0, ease: "easeInOut" }
787
+ }
788
+ ),
789
+ /* @__PURE__ */ e("div", { className: $.glow })
790
+ ]
1122
791
  }
1123
- )
1124
- ] }),
1125
- tagline && /* @__PURE__ */ jsx14(Text9, { className: Hero_default.tagline, children: tagline }),
1126
- hasActions && /* @__PURE__ */ jsxs12(Group5, { gap: "md", justify: "center", wrap: "wrap", children: [
1127
- primaryAction && /* @__PURE__ */ jsx14(
1128
- Button2,
792
+ ),
793
+ t === "text" && d && /* @__PURE__ */ m(
794
+ S.div,
1129
795
  {
1130
- component: "a",
1131
- href: primaryAction.href,
1132
- size: "lg",
1133
- radius: 4,
1134
- className: Hero_default.primaryButton,
1135
- children: primaryAction.label
796
+ initial: { opacity: 0, scale: 0.8 },
797
+ animate: { opacity: 1, scale: 1 },
798
+ transition: { duration: 1.2, delay: 0.3, ease: "easeOut" },
799
+ className: $.textWrapper,
800
+ children: [
801
+ n && /* @__PURE__ */ e(fe, {}),
802
+ n && /* @__PURE__ */ e("div", { className: $.vignette }),
803
+ /* @__PURE__ */ e(
804
+ oe,
805
+ {
806
+ order: 1,
807
+ className: `${$.heading} ${y ? $.shimmer : ""}`,
808
+ style: {
809
+ backgroundImage: `linear-gradient(135deg, ${f.from}, ${f.to}, ${f.from})`,
810
+ backgroundSize: y ? "200% 100%" : void 0
811
+ },
812
+ children: d
813
+ }
814
+ )
815
+ ]
1136
816
  }
1137
817
  ),
1138
- secondaryAction && /* @__PURE__ */ jsx14(
1139
- Button2,
818
+ s && /* @__PURE__ */ e(
819
+ S.div,
1140
820
  {
1141
- component: "a",
1142
- href: secondaryAction.href,
1143
- size: "lg",
1144
- radius: 4,
1145
- variant: "outline",
1146
- className: Hero_default.secondaryButton,
1147
- children: secondaryAction.label
821
+ initial: { opacity: 0, y: 20 },
822
+ animate: { opacity: 1, y: 0 },
823
+ transition: { duration: 0.8, delay: 0.7 },
824
+ children: /* @__PURE__ */ e(N, { className: $.tagline, children: s })
825
+ }
826
+ ),
827
+ w && /* @__PURE__ */ e(
828
+ S.div,
829
+ {
830
+ initial: { opacity: 0, y: 20 },
831
+ animate: { opacity: 1, y: 0 },
832
+ transition: { duration: 0.8, delay: 0.9 },
833
+ children: /* @__PURE__ */ m(F, { gap: "md", justify: "center", wrap: "wrap", children: [
834
+ g && /* @__PURE__ */ e(
835
+ ie,
836
+ {
837
+ component: "a",
838
+ href: g.href,
839
+ size: "lg",
840
+ radius: 4,
841
+ className: $.primaryButton,
842
+ children: g.label
843
+ }
844
+ ),
845
+ _ && /* @__PURE__ */ e(
846
+ ie,
847
+ {
848
+ component: "a",
849
+ href: _.href,
850
+ size: "lg",
851
+ radius: 4,
852
+ variant: "outline",
853
+ className: $.secondaryButton,
854
+ children: _.label
855
+ }
856
+ )
857
+ ] })
1148
858
  }
1149
859
  )
1150
- ] })
860
+ ] }),
861
+ r && b && /* @__PURE__ */ m(
862
+ S.div,
863
+ {
864
+ className: $.scrollIndicator,
865
+ initial: { opacity: 0 },
866
+ animate: { opacity: 1 },
867
+ transition: { duration: 1, delay: 1.4 },
868
+ children: [
869
+ /* @__PURE__ */ e("span", { className: $.scrollLabel, children: "Scroll" }),
870
+ /* @__PURE__ */ e(
871
+ S.div,
872
+ {
873
+ className: $.scrollLine,
874
+ animate: { scaleY: [1, 1.5, 1] },
875
+ transition: { duration: 1.5, repeat: 1 / 0 }
876
+ }
877
+ )
878
+ ]
879
+ }
880
+ )
1151
881
  ] })
1152
882
  ] });
1153
883
  }
1154
-
1155
- // src/HintBadge/HintBadge.tsx
1156
- import { Badge } from "@mantine/core";
1157
- import { jsxs as jsxs13 } from "react/jsx-runtime";
1158
- function HintBadge({ variant, children }) {
1159
- const isDo = variant === "do";
1160
- return /* @__PURE__ */ jsxs13(
1161
- Badge,
884
+ function we({ variant: t, children: o }) {
885
+ const a = t === "do";
886
+ return /* @__PURE__ */ m(
887
+ $e,
1162
888
  {
1163
889
  variant: "light",
1164
- color: isDo ? "green" : "red",
890
+ color: a ? "green" : "red",
1165
891
  size: "lg",
1166
892
  radius: "sm",
1167
893
  styles: {
@@ -1169,121 +895,87 @@ function HintBadge({ variant, children }) {
1169
895
  label: { whiteSpace: "normal", lineHeight: 1.4 }
1170
896
  },
1171
897
  children: [
1172
- /* @__PURE__ */ jsxs13("strong", { children: [
1173
- isDo ? "Do" : "Don't",
898
+ /* @__PURE__ */ m("strong", { children: [
899
+ a ? "Do" : "Don't",
1174
900
  ":"
1175
901
  ] }),
1176
902
  " ",
1177
- children
903
+ o
1178
904
  ]
1179
905
  }
1180
906
  );
1181
907
  }
1182
-
1183
- // src/MiniAudioPlayer/MiniAudioPlayer.tsx
1184
- import { useRef as useRef7, useState as useState10, useEffect as useEffect8, forwardRef as forwardRef2, useCallback as useCallback6 } from "react";
1185
- import { ActionIcon as ActionIcon2, Group as Group6, Box as Box7 } from "@mantine/core";
1186
- import { IconPlayerPlayFilled as IconPlayerPlayFilled2, IconPlayerPauseFilled as IconPlayerPauseFilled2 } from "@tabler/icons-react";
1187
-
1188
- // src/MiniAudioPlayer/MiniAudioPlayer.module.css
1189
- var MiniAudioPlayer_default = {};
1190
-
1191
- // src/MiniAudioPlayer/MiniAudioPlayer.tsx
1192
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
1193
- var SIZE_CONFIG = {
908
+ const Kt = "_root_13w21_1", Jt = "_playButton_13w21_11", Ne = {
909
+ root: Kt,
910
+ playButton: Jt
911
+ }, Qt = {
1194
912
  mini: { height: 24, buttonSize: 20, iconSize: 14, waveHeight: 16, barWidth: 1, barGap: 0 },
1195
913
  small: { height: 32, buttonSize: 28, iconSize: 16, waveHeight: 20, barWidth: 1, barGap: 0 },
1196
914
  compact: { height: 40, buttonSize: 32, iconSize: 18, waveHeight: 24, barWidth: 2, barGap: 1 }
1197
- };
1198
- var MiniAudioPlayer = forwardRef2(
915
+ }, Zt = xe(
1199
916
  ({
1200
- audioUrl,
1201
- size = "mini",
1202
- waveColor = "#CCCCCC",
1203
- progressColor = "#169bde",
1204
- onPlay,
1205
- onPause,
1206
- className,
1207
- style
1208
- }, ref) => {
1209
- const audioRef = useRef7(null);
1210
- const [isPlaying, setIsPlaying] = useState10(false);
1211
- const [currentTime, setCurrentTime] = useState10(0);
1212
- const config = SIZE_CONFIG[size];
1213
- useEffect8(() => {
1214
- const audio = audioRef.current;
1215
- if (!audio) return;
1216
- const handleTimeUpdate = () => setCurrentTime(audio.currentTime);
1217
- const handleEnded = () => {
1218
- setIsPlaying(false);
1219
- setCurrentTime(0);
1220
- };
1221
- const handlePause = () => setIsPlaying(false);
1222
- const handlePlay = () => setIsPlaying(true);
1223
- audio.addEventListener("timeupdate", handleTimeUpdate);
1224
- audio.addEventListener("ended", handleEnded);
1225
- audio.addEventListener("pause", handlePause);
1226
- audio.addEventListener("play", handlePlay);
1227
- return () => {
1228
- audio.removeEventListener("timeupdate", handleTimeUpdate);
1229
- audio.removeEventListener("ended", handleEnded);
1230
- audio.removeEventListener("pause", handlePause);
1231
- audio.removeEventListener("play", handlePlay);
917
+ audioUrl: t,
918
+ size: o = "mini",
919
+ waveColor: a = "#CCCCCC",
920
+ progressColor: s = "#169bde",
921
+ onPlay: i,
922
+ onPause: p,
923
+ className: y,
924
+ style: g
925
+ }, _) => {
926
+ const c = D(null), [u, b] = z(!1), [r, v] = z(0), d = Qt[o];
927
+ P(() => {
928
+ const n = c.current;
929
+ if (!n) return;
930
+ const f = () => v(n.currentTime), I = () => {
931
+ b(!1), v(0);
932
+ }, T = () => b(!1), R = () => b(!0);
933
+ return n.addEventListener("timeupdate", f), n.addEventListener("ended", I), n.addEventListener("pause", T), n.addEventListener("play", R), () => {
934
+ n.removeEventListener("timeupdate", f), n.removeEventListener("ended", I), n.removeEventListener("pause", T), n.removeEventListener("play", R);
1232
935
  };
1233
- }, [audioUrl]);
1234
- const handlePlayPause = useCallback6(() => {
1235
- const audio = audioRef.current;
1236
- if (!audio) return;
1237
- if (isPlaying) {
1238
- audio.pause();
1239
- onPause == null ? void 0 : onPause();
1240
- } else {
1241
- audio.play().catch(() => {
1242
- });
1243
- onPlay == null ? void 0 : onPlay();
1244
- }
1245
- }, [isPlaying, onPlay, onPause]);
1246
- const handleSeek = useCallback6((time) => {
1247
- const audio = audioRef.current;
1248
- if (audio && !isNaN(time) && isFinite(time)) {
1249
- audio.currentTime = time;
1250
- setCurrentTime(time);
1251
- }
936
+ }, [t]);
937
+ const l = B(() => {
938
+ const n = c.current;
939
+ n && (u ? (n.pause(), p == null || p()) : (n.play().catch(() => {
940
+ }), i == null || i()));
941
+ }, [u, i, p]), w = B((n) => {
942
+ const f = c.current;
943
+ f && !isNaN(n) && isFinite(n) && (f.currentTime = n, v(n));
1252
944
  }, []);
1253
- return /* @__PURE__ */ jsxs14(
1254
- Group6,
945
+ return /* @__PURE__ */ m(
946
+ F,
1255
947
  {
1256
- ref,
1257
- gap: size === "mini" ? 6 : size === "small" ? 8 : 10,
948
+ ref: _,
949
+ gap: o === "mini" ? 6 : o === "small" ? 8 : 10,
1258
950
  wrap: "nowrap",
1259
- className: `${MiniAudioPlayer_default.root} ${className != null ? className : ""}`,
1260
- style: __spreadValues({ height: config.height }, style),
951
+ className: `${Ne.root} ${y ?? ""}`,
952
+ style: { height: d.height, ...g },
1261
953
  children: [
1262
- /* @__PURE__ */ jsx15("audio", { ref: audioRef, src: audioUrl, preload: "metadata" }),
1263
- /* @__PURE__ */ jsx15(
1264
- ActionIcon2,
954
+ /* @__PURE__ */ e("audio", { ref: c, src: t, preload: "metadata" }),
955
+ /* @__PURE__ */ e(
956
+ Y,
1265
957
  {
1266
958
  variant: "filled",
1267
959
  color: "blue",
1268
960
  radius: "xl",
1269
- size: config.buttonSize,
1270
- onClick: handlePlayPause,
1271
- "aria-label": isPlaying ? "Pause" : "Play",
1272
- className: MiniAudioPlayer_default.playButton,
1273
- children: isPlaying ? /* @__PURE__ */ jsx15(IconPlayerPauseFilled2, { size: config.iconSize }) : /* @__PURE__ */ jsx15(IconPlayerPlayFilled2, { size: config.iconSize })
961
+ size: d.buttonSize,
962
+ onClick: l,
963
+ "aria-label": u ? "Pause" : "Play",
964
+ className: Ne.playButton,
965
+ children: u ? /* @__PURE__ */ e(Ce, { size: d.iconSize }) : /* @__PURE__ */ e(ke, { size: d.iconSize })
1274
966
  }
1275
967
  ),
1276
- /* @__PURE__ */ jsx15(Box7, { style: { flex: 1, minWidth: 80 }, children: /* @__PURE__ */ jsx15(
1277
- AudioWaveform,
968
+ /* @__PURE__ */ e(k, { style: { flex: 1, minWidth: 80 }, children: /* @__PURE__ */ e(
969
+ le,
1278
970
  {
1279
- audioRef,
1280
- currentTime,
1281
- onSeek: handleSeek,
1282
- waveColor,
1283
- progressColor,
1284
- height: config.waveHeight,
1285
- barWidth: config.barWidth,
1286
- barGap: config.barGap
971
+ audioRef: c,
972
+ currentTime: r,
973
+ onSeek: w,
974
+ waveColor: a,
975
+ progressColor: s,
976
+ height: d.waveHeight,
977
+ barWidth: d.barWidth,
978
+ barGap: d.barGap
1287
979
  }
1288
980
  ) })
1289
981
  ]
@@ -1291,240 +983,248 @@ var MiniAudioPlayer = forwardRef2(
1291
983
  );
1292
984
  }
1293
985
  );
1294
- MiniAudioPlayer.displayName = "MiniAudioPlayer";
1295
-
1296
- // src/PrincipleCard/PrincipleCard.tsx
1297
- import { Paper as Paper5, Title as Title3, Text as Text10, Group as Group7 } from "@mantine/core";
1298
-
1299
- // src/PrincipleCard/PrincipleCard.module.css
1300
- var PrincipleCard_default = {};
1301
-
1302
- // src/PrincipleCard/PrincipleCard.tsx
1303
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
1304
- function PrincipleCard({
1305
- accentColor,
1306
- title,
1307
- description,
1308
- doHint,
1309
- dontHint
986
+ Zt.displayName = "MiniAudioPlayer";
987
+ const en = "_root_1bah1_1", tn = {
988
+ root: en
989
+ };
990
+ function jn({
991
+ accentColor: t,
992
+ title: o,
993
+ description: a,
994
+ doHint: s,
995
+ dontHint: i
1310
996
  }) {
1311
- return /* @__PURE__ */ jsxs15(
1312
- Paper5,
997
+ return /* @__PURE__ */ m(
998
+ U,
1313
999
  {
1314
- className: PrincipleCard_default.root,
1000
+ className: tn.root,
1315
1001
  p: "lg",
1316
1002
  radius: "md",
1317
- style: { borderLeftColor: accentColor },
1003
+ style: { borderLeftColor: t },
1318
1004
  children: [
1319
- /* @__PURE__ */ jsx16(Title3, { order: 3, size: "h4", mb: "xs", children: title }),
1320
- /* @__PURE__ */ jsx16(Text10, { c: "dimmed", children: description }),
1321
- (doHint || dontHint) && /* @__PURE__ */ jsxs15(Group7, { gap: "sm", mt: "md", wrap: "wrap", children: [
1322
- doHint && /* @__PURE__ */ jsx16(HintBadge, { variant: "do", children: doHint }),
1323
- dontHint && /* @__PURE__ */ jsx16(HintBadge, { variant: "dont", children: dontHint })
1005
+ /* @__PURE__ */ e(oe, { order: 3, size: "h4", mb: "xs", children: o }),
1006
+ /* @__PURE__ */ e(N, { c: "dimmed", children: a }),
1007
+ (s || i) && /* @__PURE__ */ m(F, { gap: "sm", mt: "md", wrap: "wrap", children: [
1008
+ s && /* @__PURE__ */ e(we, { variant: "do", children: s }),
1009
+ i && /* @__PURE__ */ e(we, { variant: "dont", children: i })
1324
1010
  ] })
1325
1011
  ]
1326
1012
  }
1327
1013
  );
1328
1014
  }
1329
-
1330
- // src/SpeedDial/SpeedDial.tsx
1331
- import { useState as useState11, useCallback as useCallback7 } from "react";
1332
- import { ActionIcon as ActionIcon3, Transition, Tooltip, Box as Box8 } from "@mantine/core";
1333
- import { IconPlus } from "@tabler/icons-react";
1334
-
1335
- // src/SpeedDial/SpeedDial.module.css
1336
- var SpeedDial_default = {};
1337
-
1338
- // src/SpeedDial/SpeedDial.tsx
1339
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
1340
- function SpeedDial({
1341
- actions,
1342
- icon,
1343
- openIcon,
1344
- direction = "up",
1345
- color = "blue",
1346
- size = 56,
1347
- defaultOpen = false,
1348
- open: controlledOpen,
1349
- onOpenChange,
1350
- style,
1351
- className
1015
+ const nn = "_root_ydu7j_1", on = "_actions_ydu7j_22", sn = "_fab_ydu7j_43", an = "_actionButton_ydu7j_61", ne = {
1016
+ root: nn,
1017
+ actions: on,
1018
+ fab: sn,
1019
+ actionButton: an
1020
+ };
1021
+ function Gn({
1022
+ actions: t,
1023
+ icon: o,
1024
+ openIcon: a,
1025
+ direction: s = "up",
1026
+ color: i = "blue",
1027
+ size: p = 56,
1028
+ defaultOpen: y = !1,
1029
+ open: g,
1030
+ onOpenChange: _,
1031
+ style: c,
1032
+ className: u
1352
1033
  }) {
1353
- var _a;
1354
- const [uncontrolledOpen, setUncontrolledOpen] = useState11(defaultOpen);
1355
- const isOpen = controlledOpen != null ? controlledOpen : uncontrolledOpen;
1356
- const toggle = useCallback7(() => {
1357
- const next = !isOpen;
1358
- setUncontrolledOpen(next);
1359
- onOpenChange == null ? void 0 : onOpenChange(next);
1360
- }, [isOpen, onOpenChange]);
1361
- const close = useCallback7(() => {
1362
- setUncontrolledOpen(false);
1363
- onOpenChange == null ? void 0 : onOpenChange(false);
1364
- }, [onOpenChange]);
1365
- const isVertical = direction === "up" || direction === "down";
1366
- return /* @__PURE__ */ jsxs16(
1367
- Box8,
1034
+ const [b, r] = z(y), v = g ?? b, d = B(() => {
1035
+ const n = !v;
1036
+ r(n), _ == null || _(n);
1037
+ }, [v, _]), l = B(() => {
1038
+ r(!1), _ == null || _(!1);
1039
+ }, [_]), w = s === "up" || s === "down";
1040
+ return /* @__PURE__ */ m(
1041
+ k,
1368
1042
  {
1369
- className: `${SpeedDial_default.root} ${className != null ? className : ""}`,
1370
- style,
1371
- "data-direction": direction,
1043
+ className: `${ne.root} ${u ?? ""}`,
1044
+ style: c,
1045
+ "data-direction": s,
1372
1046
  children: [
1373
- /* @__PURE__ */ jsx17("div", { className: SpeedDial_default.actions, "data-direction": direction, children: actions.map((action, i) => {
1374
- const index = direction === "up" || direction === "left" ? actions.length - 1 - i : i;
1375
- return /* @__PURE__ */ jsx17(
1376
- Transition,
1047
+ /* @__PURE__ */ e("div", { className: ne.actions, "data-direction": s, children: t.map((n, f) => {
1048
+ const I = s === "up" || s === "left" ? t.length - 1 - f : f;
1049
+ return /* @__PURE__ */ e(
1050
+ De,
1377
1051
  {
1378
- mounted: isOpen,
1379
- transition: isVertical ? "slide-up" : "slide-right",
1052
+ mounted: v,
1053
+ transition: w ? "slide-up" : "slide-right",
1380
1054
  duration: 200,
1381
1055
  timingFunction: "ease",
1382
- enterDelay: index * 40,
1383
- children: (transitionStyles) => /* @__PURE__ */ jsx17(Tooltip, { label: action.label, position: isVertical ? "left" : "top", children: /* @__PURE__ */ jsx17(
1384
- ActionIcon3,
1056
+ enterDelay: I * 40,
1057
+ children: (T) => /* @__PURE__ */ e(Fe, { label: n.label, position: w ? "left" : "top", children: /* @__PURE__ */ e(
1058
+ Y,
1385
1059
  {
1386
1060
  variant: "filled",
1387
1061
  color: "gray",
1388
1062
  radius: "xl",
1389
- size: size * 0.7,
1390
- style: transitionStyles,
1391
- className: SpeedDial_default.actionButton,
1063
+ size: p * 0.7,
1064
+ style: T,
1065
+ className: ne.actionButton,
1392
1066
  onClick: () => {
1393
- action.onClick();
1394
- close();
1067
+ n.onClick(), l();
1395
1068
  },
1396
- "aria-label": action.label,
1397
- children: action.icon
1069
+ "aria-label": n.label,
1070
+ children: n.icon
1398
1071
  }
1399
1072
  ) })
1400
1073
  },
1401
- action.label
1074
+ n.label
1402
1075
  );
1403
1076
  }) }),
1404
- /* @__PURE__ */ jsx17(
1405
- ActionIcon3,
1077
+ /* @__PURE__ */ e(
1078
+ Y,
1406
1079
  {
1407
1080
  variant: "filled",
1408
- color,
1081
+ color: i,
1409
1082
  radius: "xl",
1410
- size,
1411
- onClick: toggle,
1412
- className: SpeedDial_default.fab,
1413
- "data-open": isOpen || void 0,
1414
- "aria-label": isOpen ? "Close actions" : "Open actions",
1415
- children: isOpen ? (_a = openIcon != null ? openIcon : icon) != null ? _a : /* @__PURE__ */ jsx17(IconPlus, { size: size * 0.45 }) : icon != null ? icon : /* @__PURE__ */ jsx17(IconPlus, { size: size * 0.45 })
1083
+ size: p,
1084
+ onClick: d,
1085
+ className: ne.fab,
1086
+ "data-open": v || void 0,
1087
+ "aria-label": v ? "Close actions" : "Open actions",
1088
+ children: v ? a ?? o ?? /* @__PURE__ */ e(ue, { size: p * 0.45 }) : o ?? /* @__PURE__ */ e(ue, { size: p * 0.45 })
1416
1089
  }
1417
1090
  )
1418
1091
  ]
1419
1092
  }
1420
1093
  );
1421
1094
  }
1422
-
1423
- // src/SplitSection/SplitSection.tsx
1424
- import {
1425
- Box as Box9,
1426
- Badge as Badge2,
1427
- Text as Text11,
1428
- Title as Title4,
1429
- Stack as Stack3
1430
- } from "@mantine/core";
1431
-
1432
- // src/SplitSection/SplitSection.module.css
1433
- var SplitSection_default = {};
1434
-
1435
- // src/SplitSection/SplitSection.tsx
1436
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
1437
- function SplitSection({
1438
- badge,
1439
- badgeColor = "violet",
1440
- subtitle,
1441
- title,
1442
- titleColor = "blue",
1443
- preTitle,
1444
- description,
1445
- actions,
1446
- heading,
1447
- children,
1448
- stickyHeading = false,
1449
- py,
1450
- reversed = false,
1451
- id,
1452
- className
1095
+ const rn = "_container_9xj91_1", cn = "_layout_9xj91_16", ln = "_reversed_9xj91_29", dn = "_headingSide_9xj91_39", un = "_sticky_9xj91_49", mn = "_stickyInner_9xj91_54", hn = "_contentSide_9xj91_65", pn = "_title_9xj91_76", fn = "_preTitle_9xj91_82", _n = "_titleHighlight_9xj91_88", vn = "_description_9xj91_95", W = {
1096
+ container: rn,
1097
+ layout: cn,
1098
+ reversed: ln,
1099
+ headingSide: dn,
1100
+ sticky: un,
1101
+ stickyInner: mn,
1102
+ contentSide: hn,
1103
+ title: pn,
1104
+ preTitle: fn,
1105
+ titleHighlight: _n,
1106
+ description: vn
1107
+ };
1108
+ function Rn({
1109
+ badge: t,
1110
+ badgeColor: o = "violet",
1111
+ subtitle: a,
1112
+ title: s,
1113
+ titleColor: i = "blue",
1114
+ preTitle: p,
1115
+ description: y,
1116
+ actions: g,
1117
+ heading: _,
1118
+ children: c,
1119
+ stickyHeading: u = !1,
1120
+ py: b,
1121
+ reversed: r = !1,
1122
+ id: v,
1123
+ className: d
1453
1124
  }) {
1454
- const headingContent = heading != null ? heading : /* @__PURE__ */ jsxs17(Stack3, { gap: "sm", children: [
1455
- badge && /* @__PURE__ */ jsxs17(Box9, { children: [
1456
- /* @__PURE__ */ jsx18(
1457
- Badge2,
1125
+ const l = _ ?? /* @__PURE__ */ m(ce, { gap: "sm", children: [
1126
+ t && /* @__PURE__ */ m(k, { children: [
1127
+ /* @__PURE__ */ e(
1128
+ $e,
1458
1129
  {
1459
- color: badgeColor,
1130
+ color: o,
1460
1131
  variant: "filled",
1461
1132
  size: "sm",
1462
1133
  radius: 4,
1463
1134
  tt: "uppercase",
1464
1135
  fw: 700,
1465
- children: badge
1136
+ children: t
1466
1137
  }
1467
1138
  ),
1468
- subtitle && /* @__PURE__ */ jsx18(Text11, { size: "sm", c: "dimmed", mt: "xs", tt: "uppercase", style: { letterSpacing: "0.05em" }, children: subtitle })
1139
+ a && /* @__PURE__ */ e(N, { size: "sm", c: "dimmed", mt: "xs", tt: "uppercase", style: { letterSpacing: "0.05em" }, children: a })
1469
1140
  ] }),
1470
- !badge && subtitle && /* @__PURE__ */ jsx18(Text11, { size: "sm", c: "dimmed", tt: "uppercase", style: { letterSpacing: "0.05em" }, children: subtitle }),
1471
- (preTitle || title) && /* @__PURE__ */ jsxs17(Title4, { order: 2, className: SplitSection_default.title, children: [
1472
- preTitle && /* @__PURE__ */ jsx18("span", { className: SplitSection_default.preTitle, children: preTitle }),
1473
- preTitle && /* @__PURE__ */ jsx18("br", {}),
1474
- title && /* @__PURE__ */ jsx18(
1475
- Text11,
1141
+ !t && a && /* @__PURE__ */ e(N, { size: "sm", c: "dimmed", tt: "uppercase", style: { letterSpacing: "0.05em" }, children: a }),
1142
+ (p || s) && /* @__PURE__ */ m(oe, { order: 2, className: W.title, children: [
1143
+ p && /* @__PURE__ */ e("span", { className: W.preTitle, children: p }),
1144
+ p && /* @__PURE__ */ e("br", {}),
1145
+ s && /* @__PURE__ */ e(
1146
+ N,
1476
1147
  {
1477
1148
  component: "span",
1478
- inherit: true,
1479
- className: SplitSection_default.titleHighlight,
1480
- c: titleColor,
1481
- children: title
1149
+ inherit: !0,
1150
+ className: W.titleHighlight,
1151
+ c: i,
1152
+ children: s
1482
1153
  }
1483
1154
  )
1484
1155
  ] }),
1485
- description && /* @__PURE__ */ jsx18(Text11, { size: "lg", c: "dimmed", lh: 1.7, className: SplitSection_default.description, children: description }),
1486
- actions && /* @__PURE__ */ jsx18(Box9, { mt: "md", children: actions })
1156
+ y && /* @__PURE__ */ e(N, { size: "lg", c: "dimmed", lh: 1.7, className: W.description, children: y }),
1157
+ g && /* @__PURE__ */ e(k, { mt: "md", children: g })
1487
1158
  ] });
1488
- return /* @__PURE__ */ jsx18(
1489
- Box9,
1159
+ return /* @__PURE__ */ e(
1160
+ k,
1490
1161
  {
1491
1162
  component: "section",
1492
- py: py != null ? py : "calc(var(--mantine-spacing-xl) * 3)",
1163
+ py: b ?? "calc(var(--mantine-spacing-xl) * 3)",
1493
1164
  pos: "relative",
1494
- id,
1495
- className,
1496
- children: /* @__PURE__ */ jsx18(Box9, { className: SplitSection_default.container, children: /* @__PURE__ */ jsxs17(Box9, { className: `${SplitSection_default.layout} ${reversed ? SplitSection_default.reversed : ""}`, children: [
1497
- /* @__PURE__ */ jsx18(
1498
- Box9,
1165
+ id: v,
1166
+ className: d,
1167
+ children: /* @__PURE__ */ e(k, { className: W.container, children: /* @__PURE__ */ m(k, { className: `${W.layout} ${r ? W.reversed : ""}`, children: [
1168
+ /* @__PURE__ */ e(
1169
+ k,
1499
1170
  {
1500
- className: `${SplitSection_default.headingSide} ${stickyHeading ? SplitSection_default.sticky : ""}`,
1501
- children: /* @__PURE__ */ jsx18(Box9, { className: stickyHeading ? SplitSection_default.stickyInner : void 0, children: headingContent })
1171
+ className: `${W.headingSide} ${u ? W.sticky : ""}`,
1172
+ children: /* @__PURE__ */ e(k, { className: u ? W.stickyInner : void 0, children: l })
1502
1173
  }
1503
1174
  ),
1504
- /* @__PURE__ */ jsx18(Box9, { className: SplitSection_default.contentSide, children })
1175
+ /* @__PURE__ */ e(k, { className: W.contentSide, children: c })
1505
1176
  ] }) })
1506
1177
  }
1507
1178
  );
1508
1179
  }
1180
+ const gn = "_root_ioshc_1", yn = "_quoteIcon_ioshc_6", Ie = {
1181
+ root: gn,
1182
+ quoteIcon: yn
1183
+ };
1184
+ function bn(t) {
1185
+ return t.split(" ").map((o) => o[0]).join("").toUpperCase().slice(0, 2);
1186
+ }
1187
+ function An({
1188
+ quote: t,
1189
+ name: o,
1190
+ role: a,
1191
+ company: s,
1192
+ avatarSrc: i,
1193
+ accentColor: p = "blue"
1194
+ }) {
1195
+ const y = `var(--mantine-color-${p}-filled)`;
1196
+ return /* @__PURE__ */ m(U, { className: Ie.root, p: "lg", radius: "md", style: { borderLeftColor: y }, children: [
1197
+ /* @__PURE__ */ e(Ve, { size: 32, className: Ie.quoteIcon, color: y }),
1198
+ /* @__PURE__ */ e(N, { fs: "italic", mt: "xs", mb: "md", children: t }),
1199
+ /* @__PURE__ */ m(F, { gap: "sm", children: [
1200
+ /* @__PURE__ */ e(je, { src: i, alt: o, color: p, radius: "xl", size: "md", children: bn(o) }),
1201
+ /* @__PURE__ */ m(ce, { gap: 0, children: [
1202
+ /* @__PURE__ */ e(N, { fw: 600, size: "sm", children: o }),
1203
+ (a || s) && /* @__PURE__ */ e(N, { size: "xs", c: "dimmed", children: [a, s].filter(Boolean).join(", ") })
1204
+ ] })
1205
+ ] })
1206
+ ] });
1207
+ }
1509
1208
  export {
1510
- AnimatedCounter,
1511
- AnimatedWaveform,
1512
- AudioPlayer,
1513
- AudioWaveform,
1514
- CodeBlock,
1515
- ColorPalette,
1516
- ColorSwatch,
1517
- Copyable,
1518
- DosDonts,
1519
- ExpandableCard,
1520
- FadeInSection,
1521
- FrequencyWave,
1522
- GradientSwatch,
1523
- Hero,
1524
- HintBadge,
1525
- MiniAudioPlayer,
1526
- PrincipleCard,
1527
- SpeedDial,
1528
- SplitSection,
1529
- VideoBackground
1209
+ Cn as AnimatedCounter,
1210
+ fe as AnimatedWaveform,
1211
+ kn as AudioPlayer,
1212
+ le as AudioWaveform,
1213
+ Ln as CodeBlock,
1214
+ Sn as ColorPalette,
1215
+ Bn as ColorSwatch,
1216
+ de as Copyable,
1217
+ Tn as DosDonts,
1218
+ Pn as ExpandableCard,
1219
+ Wn as FadeInSection,
1220
+ En as FrequencyWave,
1221
+ Dn as GradientSwatch,
1222
+ Fn as Hero,
1223
+ we as HintBadge,
1224
+ Zt as MiniAudioPlayer,
1225
+ jn as PrincipleCard,
1226
+ Gn as SpeedDial,
1227
+ Rn as SplitSection,
1228
+ An as TestimonialCard,
1229
+ Tt as VideoBackground
1530
1230
  };