@farzadbagheri/fb-components 0.1.0

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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +131 -0
  3. package/dist/ai.cjs +16 -0
  4. package/dist/ai.cjs.map +1 -0
  5. package/dist/ai.css +176 -0
  6. package/dist/ai.css.map +1 -0
  7. package/dist/ai.d.cts +33 -0
  8. package/dist/ai.d.ts +33 -0
  9. package/dist/ai.js +3 -0
  10. package/dist/ai.js.map +1 -0
  11. package/dist/backgrounds.cjs +32 -0
  12. package/dist/backgrounds.cjs.map +1 -0
  13. package/dist/backgrounds.css +253 -0
  14. package/dist/backgrounds.css.map +1 -0
  15. package/dist/backgrounds.d.cts +71 -0
  16. package/dist/backgrounds.d.ts +71 -0
  17. package/dist/backgrounds.js +3 -0
  18. package/dist/backgrounds.js.map +1 -0
  19. package/dist/buttons.cjs +20 -0
  20. package/dist/buttons.cjs.map +1 -0
  21. package/dist/buttons.css +116 -0
  22. package/dist/buttons.css.map +1 -0
  23. package/dist/buttons.d.cts +40 -0
  24. package/dist/buttons.d.ts +40 -0
  25. package/dist/buttons.js +3 -0
  26. package/dist/buttons.js.map +1 -0
  27. package/dist/chunk-4FWJRWS5.cjs +125 -0
  28. package/dist/chunk-4FWJRWS5.cjs.map +1 -0
  29. package/dist/chunk-BSEOOGOV.cjs +217 -0
  30. package/dist/chunk-BSEOOGOV.cjs.map +1 -0
  31. package/dist/chunk-C3ASXASL.cjs +205 -0
  32. package/dist/chunk-C3ASXASL.cjs.map +1 -0
  33. package/dist/chunk-CTD2GDO6.cjs +121 -0
  34. package/dist/chunk-CTD2GDO6.cjs.map +1 -0
  35. package/dist/chunk-EIE6FLCL.js +202 -0
  36. package/dist/chunk-EIE6FLCL.js.map +1 -0
  37. package/dist/chunk-H2AV67DY.cjs +260 -0
  38. package/dist/chunk-H2AV67DY.cjs.map +1 -0
  39. package/dist/chunk-H6Y3EJPA.cjs +83 -0
  40. package/dist/chunk-H6Y3EJPA.cjs.map +1 -0
  41. package/dist/chunk-JHOJY54P.js +123 -0
  42. package/dist/chunk-JHOJY54P.js.map +1 -0
  43. package/dist/chunk-JWV3IITG.js +80 -0
  44. package/dist/chunk-JWV3IITG.js.map +1 -0
  45. package/dist/chunk-K5QRX5CZ.js +194 -0
  46. package/dist/chunk-K5QRX5CZ.js.map +1 -0
  47. package/dist/chunk-MKCSRMHF.cjs +198 -0
  48. package/dist/chunk-MKCSRMHF.cjs.map +1 -0
  49. package/dist/chunk-R2F3FTBL.js +119 -0
  50. package/dist/chunk-R2F3FTBL.js.map +1 -0
  51. package/dist/chunk-ROKPXWY2.cjs +198 -0
  52. package/dist/chunk-ROKPXWY2.cjs.map +1 -0
  53. package/dist/chunk-RUSFF3MZ.js +214 -0
  54. package/dist/chunk-RUSFF3MZ.js.map +1 -0
  55. package/dist/chunk-T7CC3CLH.js +195 -0
  56. package/dist/chunk-T7CC3CLH.js.map +1 -0
  57. package/dist/chunk-UWQ5QNE3.cjs +311 -0
  58. package/dist/chunk-UWQ5QNE3.cjs.map +1 -0
  59. package/dist/chunk-WDUETPNG.js +256 -0
  60. package/dist/chunk-WDUETPNG.js.map +1 -0
  61. package/dist/chunk-YQSTEIU5.js +304 -0
  62. package/dist/chunk-YQSTEIU5.js.map +1 -0
  63. package/dist/data.cjs +20 -0
  64. package/dist/data.cjs.map +1 -0
  65. package/dist/data.css +151 -0
  66. package/dist/data.css.map +1 -0
  67. package/dist/data.d.cts +47 -0
  68. package/dist/data.d.ts +47 -0
  69. package/dist/data.js +3 -0
  70. package/dist/data.js.map +1 -0
  71. package/dist/heroes.cjs +12 -0
  72. package/dist/heroes.cjs.map +1 -0
  73. package/dist/heroes.css +190 -0
  74. package/dist/heroes.css.map +1 -0
  75. package/dist/heroes.d.cts +19 -0
  76. package/dist/heroes.d.ts +19 -0
  77. package/dist/heroes.js +3 -0
  78. package/dist/heroes.js.map +1 -0
  79. package/dist/index.cjs +104 -0
  80. package/dist/index.cjs.map +1 -0
  81. package/dist/index.css +1269 -0
  82. package/dist/index.css.map +1 -0
  83. package/dist/index.d.cts +10 -0
  84. package/dist/index.d.ts +10 -0
  85. package/dist/index.js +11 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/landing.cjs +12 -0
  88. package/dist/landing.cjs.map +1 -0
  89. package/dist/landing.css +137 -0
  90. package/dist/landing.css.map +1 -0
  91. package/dist/landing.d.cts +14 -0
  92. package/dist/landing.d.ts +14 -0
  93. package/dist/landing.js +3 -0
  94. package/dist/landing.js.map +1 -0
  95. package/dist/motion.cjs +16 -0
  96. package/dist/motion.cjs.map +1 -0
  97. package/dist/motion.css +79 -0
  98. package/dist/motion.css.map +1 -0
  99. package/dist/motion.d.cts +26 -0
  100. package/dist/motion.d.ts +26 -0
  101. package/dist/motion.js +3 -0
  102. package/dist/motion.js.map +1 -0
  103. package/dist/text.cjs +16 -0
  104. package/dist/text.cjs.map +1 -0
  105. package/dist/text.css +72 -0
  106. package/dist/text.css.map +1 -0
  107. package/dist/text.d.cts +28 -0
  108. package/dist/text.d.ts +28 -0
  109. package/dist/text.js +3 -0
  110. package/dist/text.js.map +1 -0
  111. package/dist/ui.cjs +16 -0
  112. package/dist/ui.cjs.map +1 -0
  113. package/dist/ui.css +95 -0
  114. package/dist/ui.css.map +1 -0
  115. package/dist/ui.d.cts +28 -0
  116. package/dist/ui.d.ts +28 -0
  117. package/dist/ui.js +3 -0
  118. package/dist/ui.js.map +1 -0
  119. package/package.json +134 -0
@@ -0,0 +1,304 @@
1
+ import { useRef, useEffect, useMemo } from 'react';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+
4
+ // src/backgrounds/PredictiveArc.tsx
5
+ function PredictiveArc({
6
+ color = "#9b7cff",
7
+ background = "#0d0d11",
8
+ size = 70,
9
+ thickness = 3,
10
+ glow = 16,
11
+ animated = true,
12
+ className = ""
13
+ }) {
14
+ const containerRef = useRef(
15
+ null
16
+ );
17
+ useEffect(() => {
18
+ const element = containerRef.current;
19
+ if (!element) {
20
+ return;
21
+ }
22
+ element.style.setProperty(
23
+ "--predictive-arc-color",
24
+ color
25
+ );
26
+ element.style.setProperty(
27
+ "--predictive-arc-background",
28
+ background
29
+ );
30
+ element.style.setProperty(
31
+ "--predictive-arc-size",
32
+ `${size}%`
33
+ );
34
+ element.style.setProperty(
35
+ "--predictive-arc-thickness",
36
+ `${thickness}px`
37
+ );
38
+ element.style.setProperty(
39
+ "--predictive-arc-glow",
40
+ `${glow}px`
41
+ );
42
+ }, [
43
+ color,
44
+ background,
45
+ size,
46
+ thickness,
47
+ glow
48
+ ]);
49
+ return /* @__PURE__ */ jsxs(
50
+ "div",
51
+ {
52
+ ref: containerRef,
53
+ className: `fb-predictive-arc ${animated ? "fb-predictive-arc--animated" : ""} ${className}`,
54
+ children: [
55
+ /* @__PURE__ */ jsx("div", { className: "fb-predictive-arc__line fb-predictive-arc__line--outer" }),
56
+ /* @__PURE__ */ jsx("div", { className: "fb-predictive-arc__line fb-predictive-arc__line--inner" }),
57
+ /* @__PURE__ */ jsx("span", { className: "fb-predictive-arc__point fb-predictive-arc__point--left" }),
58
+ /* @__PURE__ */ jsx("span", { className: "fb-predictive-arc__point fb-predictive-arc__point--right" })
59
+ ]
60
+ }
61
+ );
62
+ }
63
+ function SignalParticles({
64
+ color = "#b99cff",
65
+ background = "#0d0d11",
66
+ density = 30,
67
+ size = 3,
68
+ speed = 1,
69
+ animated = true,
70
+ className = ""
71
+ }) {
72
+ const particles = useMemo(
73
+ () => Array.from({
74
+ length: Math.max(
75
+ 1,
76
+ density
77
+ )
78
+ }).map(
79
+ (_, index) => ({
80
+ id: index,
81
+ left: index * 37 % 100,
82
+ top: index * 53 % 100,
83
+ delay: index % 10 * 0.12
84
+ })
85
+ ),
86
+ [
87
+ density
88
+ ]
89
+ );
90
+ return /* @__PURE__ */ jsx(
91
+ "div",
92
+ {
93
+ className: `fb-signal-particles ${className}`,
94
+ style: {
95
+ background
96
+ },
97
+ children: particles.map(
98
+ (particle) => /* @__PURE__ */ jsx(
99
+ "span",
100
+ {
101
+ className: animated ? "fb-signal-particles__particle fb-signal-particles__particle--animated" : "fb-signal-particles__particle",
102
+ style: {
103
+ left: `${particle.left}%`,
104
+ top: `${particle.top}%`,
105
+ width: size,
106
+ height: size,
107
+ background: color,
108
+ animationDuration: `${3 / speed}s`,
109
+ animationDelay: `${particle.delay}s`,
110
+ boxShadow: `0 0 ${size * 4}px ${color}`
111
+ }
112
+ },
113
+ particle.id
114
+ )
115
+ )
116
+ }
117
+ );
118
+ }
119
+ function DotMatrix({
120
+ color = "#9b7cff",
121
+ background = "#0d0d11",
122
+ dotSize = 2,
123
+ gap = 20,
124
+ opacity = 0.8,
125
+ fade = true,
126
+ className = ""
127
+ }) {
128
+ return /* @__PURE__ */ jsx(
129
+ "div",
130
+ {
131
+ className: `fb-dot-matrix ${fade ? "fb-dot-matrix--fade" : ""} ${className}`,
132
+ style: {
133
+ backgroundColor: background,
134
+ opacity,
135
+ backgroundImage: `radial-gradient(
136
+ circle,
137
+ ${color} ${dotSize}px,
138
+ transparent ${dotSize + 0.8}px
139
+ )`,
140
+ backgroundSize: `${gap}px ${gap}px`
141
+ }
142
+ }
143
+ );
144
+ }
145
+ function GradientMesh({
146
+ primary = "#654cff",
147
+ secondary = "#3c6dff",
148
+ accent = "#a44cff",
149
+ background = "#0d0d11",
150
+ blur = 35,
151
+ speed = 8,
152
+ animated = true,
153
+ className = ""
154
+ }) {
155
+ return /* @__PURE__ */ jsx(
156
+ "div",
157
+ {
158
+ className: `fb-gradient-mesh ${className}`,
159
+ style: {
160
+ background
161
+ },
162
+ children: /* @__PURE__ */ jsx(
163
+ "div",
164
+ {
165
+ className: `fb-gradient-mesh__layer ${animated ? "fb-gradient-mesh__layer--animated" : ""}`,
166
+ style: {
167
+ background: `
168
+ radial-gradient(
169
+ circle at 30% 30%,
170
+ ${primary},
171
+ transparent 35%
172
+ ),
173
+ radial-gradient(
174
+ circle at 65% 60%,
175
+ ${secondary},
176
+ transparent 32%
177
+ ),
178
+ radial-gradient(
179
+ circle at 50% 50%,
180
+ ${accent},
181
+ transparent 40%
182
+ )
183
+ `,
184
+ filter: `blur(${blur}px)`,
185
+ animationDuration: `${speed}s`
186
+ }
187
+ }
188
+ )
189
+ }
190
+ );
191
+ }
192
+ function AuroraGrid({
193
+ gridColor = "#765cff",
194
+ auroraColor = "#7c5cff",
195
+ background = "#09090d",
196
+ gridSize = 34,
197
+ glow = 55,
198
+ speed = 8,
199
+ animated = true,
200
+ className = ""
201
+ }) {
202
+ return /* @__PURE__ */ jsxs(
203
+ "div",
204
+ {
205
+ className: `fb-aurora-grid ${className}`,
206
+ style: {
207
+ background
208
+ },
209
+ children: [
210
+ /* @__PURE__ */ jsx(
211
+ "div",
212
+ {
213
+ className: `fb-aurora-grid__grid ${animated ? "fb-aurora-grid__grid--animated" : ""}`,
214
+ style: {
215
+ backgroundImage: `
216
+ linear-gradient(
217
+ ${gridColor}33 1px,
218
+ transparent 1px
219
+ ),
220
+ linear-gradient(
221
+ 90deg,
222
+ ${gridColor}33 1px,
223
+ transparent 1px
224
+ )
225
+ `,
226
+ backgroundSize: `${gridSize}px ${gridSize}px`,
227
+ animationDuration: `${speed}s`
228
+ }
229
+ }
230
+ ),
231
+ /* @__PURE__ */ jsx(
232
+ "div",
233
+ {
234
+ className: `fb-aurora-grid__glow ${animated ? "fb-aurora-grid__glow--animated" : ""}`,
235
+ style: {
236
+ background: auroraColor,
237
+ filter: `blur(${glow}px)`,
238
+ animationDuration: `${speed * 0.8}s`
239
+ }
240
+ }
241
+ )
242
+ ]
243
+ }
244
+ );
245
+ }
246
+ function NoiseField({
247
+ color = "#8f73ff",
248
+ background = "#0b0b0f",
249
+ opacity = 0.3,
250
+ scale = 1,
251
+ speed = 6,
252
+ animated = true,
253
+ className = ""
254
+ }) {
255
+ return /* @__PURE__ */ jsxs(
256
+ "div",
257
+ {
258
+ className: `fb-noise-field ${className}`,
259
+ style: {
260
+ background
261
+ },
262
+ children: [
263
+ /* @__PURE__ */ jsx(
264
+ "div",
265
+ {
266
+ className: `fb-noise-field__blob fb-noise-field__blob--one ${animated ? "fb-noise-field__blob--animated" : ""}`,
267
+ style: {
268
+ background: color,
269
+ opacity,
270
+ transform: `scale(${scale})`,
271
+ animationDuration: `${speed}s`
272
+ }
273
+ }
274
+ ),
275
+ /* @__PURE__ */ jsx(
276
+ "div",
277
+ {
278
+ className: `fb-noise-field__blob fb-noise-field__blob--two ${animated ? "fb-noise-field__blob--animated" : ""}`,
279
+ style: {
280
+ background: color,
281
+ opacity: opacity * 0.7,
282
+ transform: `scale(${scale * 0.8})`,
283
+ animationDuration: `${speed * 1.2}s`
284
+ }
285
+ }
286
+ ),
287
+ /* @__PURE__ */ jsx(
288
+ "div",
289
+ {
290
+ className: `fb-noise-field__texture ${animated ? "fb-noise-field__texture--animated" : ""}`,
291
+ style: {
292
+ opacity: opacity * 0.5,
293
+ animationDuration: `${speed * 0.85}s`
294
+ }
295
+ }
296
+ )
297
+ ]
298
+ }
299
+ );
300
+ }
301
+
302
+ export { AuroraGrid, DotMatrix, GradientMesh, NoiseField, PredictiveArc, SignalParticles };
303
+ //# sourceMappingURL=chunk-YQSTEIU5.js.map
304
+ //# sourceMappingURL=chunk-YQSTEIU5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/backgrounds/PredictiveArc.tsx","../src/backgrounds/SignalParticles.tsx","../src/backgrounds/DotMatrix.tsx","../src/backgrounds/GradientMesh.tsx","../src/backgrounds/AuroraGrid.tsx","../src/backgrounds/NoiseField.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-YQSTEIU5.js","sourcesContent":["import {\r\n useEffect,\r\n useRef,\r\n} from \"react\";\r\nimport \"./PredictiveArc.css\";\r\n\r\nexport interface PredictiveArcProps {\r\n color?: string;\r\n background?: string;\r\n size?: number;\r\n thickness?: number;\r\n glow?: number;\r\n animated?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function PredictiveArc({\r\n color = \"#9b7cff\",\r\n background = \"#0d0d11\",\r\n size = 70,\r\n thickness = 3,\r\n glow = 16,\r\n animated = true,\r\n className = \"\",\r\n}: PredictiveArcProps) {\r\n const containerRef =\r\n useRef<HTMLDivElement>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n const element =\r\n containerRef.current;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n element.style.setProperty(\r\n \"--predictive-arc-color\",\r\n color\r\n );\r\n\r\n element.style.setProperty(\r\n \"--predictive-arc-background\",\r\n background\r\n );\r\n\r\n element.style.setProperty(\r\n \"--predictive-arc-size\",\r\n `${size}%`\r\n );\r\n\r\n element.style.setProperty(\r\n \"--predictive-arc-thickness\",\r\n `${thickness}px`\r\n );\r\n\r\n element.style.setProperty(\r\n \"--predictive-arc-glow\",\r\n `${glow}px`\r\n );\r\n }, [\r\n color,\r\n background,\r\n size,\r\n thickness,\r\n glow,\r\n ]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={`fb-predictive-arc ${\r\n animated\r\n ? \"fb-predictive-arc--animated\"\r\n : \"\"\r\n } ${className}`}\r\n >\r\n <div className=\"fb-predictive-arc__line fb-predictive-arc__line--outer\" />\r\n\r\n <div className=\"fb-predictive-arc__line fb-predictive-arc__line--inner\" />\r\n\r\n <span className=\"fb-predictive-arc__point fb-predictive-arc__point--left\" />\r\n\r\n <span className=\"fb-predictive-arc__point fb-predictive-arc__point--right\" />\r\n </div>\r\n );\r\n}","import {\r\n useMemo,\r\n} from \"react\";\r\n\r\nimport \"./SignalParticles.css\";\r\n\r\nexport interface SignalParticlesProps {\r\n color?: string;\r\n background?: string;\r\n density?: number;\r\n size?: number;\r\n speed?: number;\r\n animated?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function SignalParticles({\r\n color = \"#b99cff\",\r\n background = \"#0d0d11\",\r\n density = 30,\r\n size = 3,\r\n speed = 1,\r\n animated = true,\r\n className = \"\",\r\n}: SignalParticlesProps) {\r\n const particles =\r\n useMemo(\r\n () =>\r\n Array.from({\r\n length:\r\n Math.max(\r\n 1,\r\n density\r\n ),\r\n }).map(\r\n (\r\n _,\r\n index\r\n ) => ({\r\n id:\r\n index,\r\n\r\n left:\r\n (index *\r\n 37) %\r\n 100,\r\n\r\n top:\r\n (index *\r\n 53) %\r\n 100,\r\n\r\n delay:\r\n (index %\r\n 10) *\r\n 0.12,\r\n })\r\n ),\r\n [\r\n density,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n className={`fb-signal-particles ${className}`}\r\n style={{\r\n background,\r\n }}\r\n >\r\n {particles.map(\r\n (\r\n particle\r\n ) => (\r\n <span\r\n key={\r\n particle.id\r\n }\r\n className={\r\n animated\r\n ? \"fb-signal-particles__particle fb-signal-particles__particle--animated\"\r\n : \"fb-signal-particles__particle\"\r\n }\r\n style={{\r\n left:\r\n `${particle.left}%`,\r\n\r\n top:\r\n `${particle.top}%`,\r\n\r\n width:\r\n size,\r\n\r\n height:\r\n size,\r\n\r\n background:\r\n color,\r\n\r\n animationDuration:\r\n `${3 / speed}s`,\r\n\r\n animationDelay:\r\n `${particle.delay}s`,\r\n\r\n boxShadow:\r\n `0 0 ${size * 4}px ${color}`,\r\n }}\r\n />\r\n )\r\n )}\r\n </div>\r\n );\r\n}","import \"./DotMatrix.css\";\r\n\r\nexport interface DotMatrixProps {\r\n color?: string;\r\n background?: string;\r\n dotSize?: number;\r\n gap?: number;\r\n opacity?: number;\r\n fade?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function DotMatrix({\r\n color = \"#9b7cff\",\r\n background = \"#0d0d11\",\r\n dotSize = 2,\r\n gap = 20,\r\n opacity = 0.8,\r\n fade = true,\r\n className = \"\",\r\n}: DotMatrixProps) {\r\n return (\r\n <div\r\n className={`fb-dot-matrix ${\r\n fade\r\n ? \"fb-dot-matrix--fade\"\r\n : \"\"\r\n } ${className}`}\r\n style={{\r\n backgroundColor:\r\n background,\r\n\r\n opacity,\r\n\r\n backgroundImage:\r\n `radial-gradient(\r\n circle,\r\n ${color} ${dotSize}px,\r\n transparent ${\r\n dotSize +\r\n 0.8\r\n }px\r\n )`,\r\n\r\n backgroundSize:\r\n `${gap}px ${gap}px`,\r\n }}\r\n />\r\n );\r\n}","import \"./GradientMesh.css\";\r\n\r\nexport interface GradientMeshProps {\r\n primary?: string;\r\n secondary?: string;\r\n accent?: string;\r\n background?: string;\r\n blur?: number;\r\n speed?: number;\r\n animated?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function GradientMesh({\r\n primary = \"#654cff\",\r\n secondary = \"#3c6dff\",\r\n accent = \"#a44cff\",\r\n background = \"#0d0d11\",\r\n blur = 35,\r\n speed = 8,\r\n animated = true,\r\n className = \"\",\r\n}: GradientMeshProps) {\r\n return (\r\n <div\r\n className={`fb-gradient-mesh ${className}`}\r\n style={{\r\n background,\r\n }}\r\n >\r\n <div\r\n className={`fb-gradient-mesh__layer ${\r\n animated\r\n ? \"fb-gradient-mesh__layer--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n background: `\r\n radial-gradient(\r\n circle at 30% 30%,\r\n ${primary},\r\n transparent 35%\r\n ),\r\n radial-gradient(\r\n circle at 65% 60%,\r\n ${secondary},\r\n transparent 32%\r\n ),\r\n radial-gradient(\r\n circle at 50% 50%,\r\n ${accent},\r\n transparent 40%\r\n )\r\n `,\r\n\r\n filter:\r\n `blur(${blur}px)`,\r\n\r\n animationDuration:\r\n `${speed}s`,\r\n }}\r\n />\r\n </div>\r\n );\r\n}","import \"./AuroraGrid.css\";\r\n\r\nexport interface AuroraGridProps {\r\n gridColor?: string;\r\n auroraColor?: string;\r\n background?: string;\r\n gridSize?: number;\r\n glow?: number;\r\n speed?: number;\r\n animated?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function AuroraGrid({\r\n gridColor = \"#765cff\",\r\n auroraColor = \"#7c5cff\",\r\n background = \"#09090d\",\r\n gridSize = 34,\r\n glow = 55,\r\n speed = 8,\r\n animated = true,\r\n className = \"\",\r\n}: AuroraGridProps) {\r\n return (\r\n <div\r\n className={`fb-aurora-grid ${className}`}\r\n style={{\r\n background,\r\n }}\r\n >\r\n <div\r\n className={`fb-aurora-grid__grid ${\r\n animated\r\n ? \"fb-aurora-grid__grid--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n backgroundImage: `\r\n linear-gradient(\r\n ${gridColor}33 1px,\r\n transparent 1px\r\n ),\r\n linear-gradient(\r\n 90deg,\r\n ${gridColor}33 1px,\r\n transparent 1px\r\n )\r\n `,\r\n\r\n backgroundSize:\r\n `${gridSize}px ${gridSize}px`,\r\n\r\n animationDuration:\r\n `${speed}s`,\r\n }}\r\n />\r\n\r\n <div\r\n className={`fb-aurora-grid__glow ${\r\n animated\r\n ? \"fb-aurora-grid__glow--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n background:\r\n auroraColor,\r\n\r\n filter:\r\n `blur(${glow}px)`,\r\n\r\n animationDuration:\r\n `${speed * 0.8}s`,\r\n }}\r\n />\r\n </div>\r\n );\r\n}","import \"./NoiseField.css\";\r\n\r\nexport interface NoiseFieldProps {\r\n color?: string;\r\n background?: string;\r\n opacity?: number;\r\n scale?: number;\r\n speed?: number;\r\n animated?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function NoiseField({\r\n color = \"#8f73ff\",\r\n background = \"#0b0b0f\",\r\n opacity = 0.3,\r\n scale = 1,\r\n speed = 6,\r\n animated = true,\r\n className = \"\",\r\n}: NoiseFieldProps) {\r\n return (\r\n <div\r\n className={`fb-noise-field ${className}`}\r\n style={{\r\n background,\r\n }}\r\n >\r\n <div\r\n className={`fb-noise-field__blob fb-noise-field__blob--one ${\r\n animated\r\n ? \"fb-noise-field__blob--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n background:\r\n color,\r\n\r\n opacity,\r\n\r\n transform:\r\n `scale(${scale})`,\r\n\r\n animationDuration:\r\n `${speed}s`,\r\n }}\r\n />\r\n\r\n <div\r\n className={`fb-noise-field__blob fb-noise-field__blob--two ${\r\n animated\r\n ? \"fb-noise-field__blob--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n background:\r\n color,\r\n\r\n opacity:\r\n opacity * 0.7,\r\n\r\n transform:\r\n `scale(${scale * 0.8})`,\r\n\r\n animationDuration:\r\n `${speed * 1.2}s`,\r\n }}\r\n />\r\n\r\n <div\r\n className={`fb-noise-field__texture ${\r\n animated\r\n ? \"fb-noise-field__texture--animated\"\r\n : \"\"\r\n }`}\r\n style={{\r\n opacity:\r\n opacity * 0.5,\r\n\r\n animationDuration:\r\n `${speed * 0.85}s`,\r\n }}\r\n />\r\n </div>\r\n );\r\n}"]}
package/dist/data.cjs ADDED
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var chunkH2AV67DY_cjs = require('./chunk-H2AV67DY.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "AnimatedCounter", {
8
+ enumerable: true,
9
+ get: function () { return chunkH2AV67DY_cjs.AnimatedCounter; }
10
+ });
11
+ Object.defineProperty(exports, "MetricGrid", {
12
+ enumerable: true,
13
+ get: function () { return chunkH2AV67DY_cjs.MetricGrid; }
14
+ });
15
+ Object.defineProperty(exports, "RadialProgress", {
16
+ enumerable: true,
17
+ get: function () { return chunkH2AV67DY_cjs.RadialProgress; }
18
+ });
19
+ //# sourceMappingURL=data.cjs.map
20
+ //# sourceMappingURL=data.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"data.cjs"}
package/dist/data.css ADDED
@@ -0,0 +1,151 @@
1
+ /* src/data/AnimatedCounter.css */
2
+ .fb-animated-counter {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ text-align: center;
7
+ }
8
+ .fb-animated-counter__label {
9
+ color: rgba(255, 255, 255, 0.38);
10
+ font-family: "DM Mono", monospace;
11
+ font-size: 9px;
12
+ letter-spacing: 1.7px;
13
+ }
14
+ .fb-animated-counter strong {
15
+ margin-top: 10px;
16
+ color: inherit;
17
+ font-size: var( --fb-counter-size, 72px );
18
+ font-weight: 550;
19
+ line-height: 1;
20
+ letter-spacing: -0.065em;
21
+ }
22
+ .fb-animated-counter small {
23
+ margin-top: 12px;
24
+ padding: 5px 9px;
25
+ border-radius: 999px;
26
+ background: color-mix(in srgb, var( --fb-counter-accent ) 12%, transparent);
27
+ color: var( --fb-counter-accent );
28
+ font-size: 9px;
29
+ }
30
+
31
+ /* src/data/RadialProgress.css */
32
+ .fb-radial-progress {
33
+ position: relative;
34
+ display: inline-flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ }
38
+ .fb-radial-progress svg {
39
+ position: absolute;
40
+ inset: 0;
41
+ width: 100%;
42
+ height: 100%;
43
+ transform: rotate(-90deg);
44
+ }
45
+ .fb-radial-progress__value {
46
+ filter: drop-shadow(0 0 7px color-mix(in srgb, var( --fb-radial-color ) 55%, transparent));
47
+ transition: stroke-dashoffset 0.7s cubic-bezier(0.16, 1, 0.3, 1);
48
+ }
49
+ .fb-radial-progress__value--animated {
50
+ animation: fbRadialAppear 0.65s ease-out both;
51
+ }
52
+ @keyframes fbRadialAppear {
53
+ from {
54
+ opacity: 0;
55
+ }
56
+ to {
57
+ opacity: 1;
58
+ }
59
+ }
60
+ .fb-radial-progress__content {
61
+ position: relative;
62
+ z-index: 1;
63
+ text-align: center;
64
+ }
65
+ .fb-radial-progress__content strong {
66
+ display: block;
67
+ color: white;
68
+ font-size: 38px;
69
+ line-height: 1;
70
+ letter-spacing: -0.06em;
71
+ }
72
+ .fb-radial-progress__content strong small {
73
+ font-size: 14px;
74
+ color: rgba(255, 255, 255, 0.42);
75
+ }
76
+ .fb-radial-progress__content > span {
77
+ display: block;
78
+ margin-top: 6px;
79
+ color: rgba(255, 255, 255, 0.32);
80
+ font-family: "DM Mono", monospace;
81
+ font-size: 7px;
82
+ letter-spacing: 1.3px;
83
+ }
84
+ @keyframes fbRadialAppear {
85
+ from {
86
+ opacity: 0;
87
+ stroke-dashoffset: 999;
88
+ }
89
+ to {
90
+ opacity: 1;
91
+ }
92
+ }
93
+ @media (prefers-reduced-motion: reduce) {
94
+ .fb-radial-progress__value {
95
+ animation: none !important;
96
+ transition: none !important;
97
+ }
98
+ }
99
+
100
+ /* src/data/MetricGrid.css */
101
+ .fb-metric-grid {
102
+ width: 100%;
103
+ display: grid;
104
+ gap: 12px;
105
+ }
106
+ .fb-metric-grid article {
107
+ min-width: 0;
108
+ padding: clamp(18px, 3vw, 28px);
109
+ border: 1px solid rgba(255, 255, 255, 0.08);
110
+ border-radius: var( --fb-metric-radius );
111
+ background: var( --fb-metric-background );
112
+ transition: transform 0.22s ease, border-color 0.22s ease;
113
+ }
114
+ .fb-metric-grid article:hover {
115
+ transform: translateY(-4px);
116
+ border-color: color-mix(in srgb, var( --fb-metric-accent ) 35%, transparent);
117
+ }
118
+ .fb-metric-grid article > span {
119
+ color: rgba(255, 255, 255, 0.36);
120
+ font-size: 10px;
121
+ }
122
+ .fb-metric-grid strong {
123
+ display: block;
124
+ margin-top: 10px;
125
+ color: white;
126
+ font-size: clamp(24px, 4vw, 38px);
127
+ letter-spacing: -0.045em;
128
+ }
129
+ .fb-metric-grid small {
130
+ display: inline-block;
131
+ margin-top: 10px;
132
+ padding: 4px 7px;
133
+ border-radius: 999px;
134
+ background: rgba(86, 217, 151, 0.08);
135
+ color: #75dfa7;
136
+ }
137
+ .fb-metric-grid small.is-negative {
138
+ background: rgba(255, 100, 115, 0.08);
139
+ color: #ff7c89;
140
+ }
141
+ @media (max-width: 650px) {
142
+ .fb-metric-grid {
143
+ grid-template-columns: 1fr !important;
144
+ }
145
+ }
146
+ @media (prefers-reduced-motion: reduce) {
147
+ .fb-metric-grid article {
148
+ transition: none !important;
149
+ }
150
+ }
151
+ /*# sourceMappingURL=data.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/AnimatedCounter.css","../src/data/RadialProgress.css","../src/data/MetricGrid.css"],"sourcesContent":[".fb-animated-counter {\r\n display: flex;\r\n\r\n flex-direction: column;\r\n\r\n align-items: center;\r\n\r\n text-align: center;\r\n}\r\n\r\n.fb-animated-counter__label {\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.38\r\n );\r\n\r\n font-family:\r\n \"DM Mono\",\r\n monospace;\r\n\r\n font-size: 9px;\r\n\r\n letter-spacing: 1.7px;\r\n}\r\n\r\n.fb-animated-counter\r\nstrong {\r\n margin-top: 10px;\r\n\r\n color: inherit;\r\n\r\n font-size:\r\n var(\r\n --fb-counter-size,\r\n 72px\r\n );\r\n\r\n font-weight: 550;\r\n\r\n line-height: 1;\r\n\r\n letter-spacing: -0.065em;\r\n}\r\n\r\n.fb-animated-counter\r\nsmall {\r\n margin-top: 12px;\r\n\r\n padding:\r\n 5px\r\n 9px;\r\n\r\n border-radius: 999px;\r\n\r\n background:\r\n color-mix(\r\n in srgb,\r\n var(\r\n --fb-counter-accent\r\n )\r\n 12%,\r\n transparent\r\n );\r\n\r\n color:\r\n var(\r\n --fb-counter-accent\r\n );\r\n\r\n font-size: 9px;\r\n}",".fb-radial-progress {\r\n position: relative;\r\n\r\n display: inline-flex;\r\n\r\n align-items: center;\r\n\r\n justify-content: center;\r\n}\r\n\r\n.fb-radial-progress\r\nsvg {\r\n position: absolute;\r\n\r\n inset: 0;\r\n\r\n width: 100%;\r\n height: 100%;\r\n\r\n transform:\r\n rotate(-90deg);\r\n}\r\n\r\n.fb-radial-progress__value {\r\n filter:\r\n drop-shadow(\r\n 0\r\n 0\r\n 7px\r\n color-mix(\r\n in srgb,\r\n var(\r\n --fb-radial-color\r\n )\r\n 55%,\r\n transparent\r\n )\r\n );\r\n\r\n transition:\r\n stroke-dashoffset\r\n 0.7s\r\n cubic-bezier(\r\n 0.16,\r\n 1,\r\n 0.3,\r\n 1\r\n );\r\n}\r\n\r\n.fb-radial-progress__value--animated {\r\n animation:\r\n fbRadialAppear\r\n 0.65s\r\n ease-out\r\n both;\r\n}\r\n\r\n@keyframes fbRadialAppear {\r\n from {\r\n opacity:\r\n 0;\r\n }\r\n\r\n to {\r\n opacity:\r\n 1;\r\n }\r\n}\r\n\r\n.fb-radial-progress__content {\r\n position: relative;\r\n\r\n z-index: 1;\r\n\r\n text-align: center;\r\n}\r\n\r\n.fb-radial-progress__content\r\nstrong {\r\n display: block;\r\n\r\n color: white;\r\n\r\n font-size: 38px;\r\n\r\n line-height: 1;\r\n\r\n letter-spacing: -0.06em;\r\n}\r\n\r\n.fb-radial-progress__content\r\nstrong\r\nsmall {\r\n font-size: 14px;\r\n\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.42\r\n );\r\n}\r\n\r\n.fb-radial-progress__content\r\n> span {\r\n display: block;\r\n\r\n margin-top: 6px;\r\n\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.32\r\n );\r\n\r\n font-family:\r\n \"DM Mono\",\r\n monospace;\r\n\r\n font-size: 7px;\r\n\r\n letter-spacing: 1.3px;\r\n}\r\n\r\n@keyframes fbRadialAppear {\r\n from {\r\n opacity: 0;\r\n\r\n stroke-dashoffset:\r\n 999;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@media (\r\n prefers-reduced-motion:\r\n reduce\r\n) {\r\n .fb-radial-progress__value {\r\n animation:\r\n none !important;\r\n\r\n transition:\r\n none !important;\r\n }\r\n}",".fb-metric-grid {\r\n width: 100%;\r\n\r\n display: grid;\r\n\r\n gap: 12px;\r\n}\r\n\r\n.fb-metric-grid\r\narticle {\r\n min-width: 0;\r\n\r\n padding:\r\n clamp(\r\n 18px,\r\n 3vw,\r\n 28px\r\n );\r\n\r\n border:\r\n 1px solid\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.08\r\n );\r\n\r\n border-radius:\r\n var(\r\n --fb-metric-radius\r\n );\r\n\r\n background:\r\n var(\r\n --fb-metric-background\r\n );\r\n\r\n transition:\r\n transform\r\n 0.22s\r\n ease,\r\n border-color\r\n 0.22s\r\n ease;\r\n}\r\n\r\n.fb-metric-grid\r\narticle:hover {\r\n transform:\r\n translateY(-4px);\r\n\r\n border-color:\r\n color-mix(\r\n in srgb,\r\n var(\r\n --fb-metric-accent\r\n )\r\n 35%,\r\n transparent\r\n );\r\n}\r\n\r\n.fb-metric-grid\r\narticle\r\n> span {\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.36\r\n );\r\n\r\n font-size: 10px;\r\n}\r\n\r\n.fb-metric-grid\r\nstrong {\r\n display: block;\r\n\r\n margin-top: 10px;\r\n\r\n color: white;\r\n\r\n font-size:\r\n clamp(\r\n 24px,\r\n 4vw,\r\n 38px\r\n );\r\n\r\n letter-spacing: -0.045em;\r\n}\r\n\r\n.fb-metric-grid\r\nsmall {\r\n display: inline-block;\r\n\r\n margin-top: 10px;\r\n\r\n padding:\r\n 4px\r\n 7px;\r\n\r\n border-radius: 999px;\r\n\r\n background:\r\n rgba(\r\n 86,\r\n 217,\r\n 151,\r\n 0.08\r\n );\r\n\r\n color: #75dfa7;\r\n}\r\n\r\n.fb-metric-grid\r\nsmall.is-negative {\r\n background:\r\n rgba(\r\n 255,\r\n 100,\r\n 115,\r\n 0.08\r\n );\r\n\r\n color: #ff7c89;\r\n}\r\n\r\n@media (\r\n max-width:\r\n 650px\r\n) {\r\n .fb-metric-grid {\r\n grid-template-columns:\r\n 1fr !important;\r\n }\r\n}\r\n\r\n@media (\r\n prefers-reduced-motion:\r\n reduce\r\n) {\r\n .fb-metric-grid\r\n article {\r\n transition:\r\n none !important;\r\n }\r\n}"],"mappings":"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","names":[]}
@@ -0,0 +1,47 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface AnimatedCounterProps extends HTMLAttributes<HTMLDivElement> {
5
+ value?: number;
6
+ duration?: number;
7
+ color?: string;
8
+ accent?: string;
9
+ fontSize?: number;
10
+ prefix?: string;
11
+ suffix?: string;
12
+ label?: string;
13
+ delta?: string;
14
+ decimals?: number;
15
+ className?: string;
16
+ }
17
+ declare function AnimatedCounter({ value, duration, color, accent, fontSize, prefix, suffix, label, delta, decimals, className, style, ...props }: AnimatedCounterProps): react.JSX.Element;
18
+
19
+ interface RadialProgressProps extends HTMLAttributes<HTMLDivElement> {
20
+ value?: number;
21
+ size?: number;
22
+ strokeWidth?: number;
23
+ color?: string;
24
+ trackColor?: string;
25
+ animated?: boolean;
26
+ label?: string;
27
+ className?: string;
28
+ }
29
+ declare function RadialProgress({ value, size, strokeWidth, color, trackColor, animated, label, className, style, ...props }: RadialProgressProps): react.JSX.Element;
30
+
31
+ interface MetricItem {
32
+ label: string;
33
+ value: string;
34
+ delta?: string;
35
+ positive?: boolean;
36
+ }
37
+ interface MetricGridProps extends HTMLAttributes<HTMLDivElement> {
38
+ accent?: string;
39
+ background?: string;
40
+ columns?: number;
41
+ radius?: number;
42
+ items?: MetricItem[];
43
+ className?: string;
44
+ }
45
+ declare function MetricGrid({ accent, background, columns, radius, items, className, style, ...props }: MetricGridProps): react.JSX.Element;
46
+
47
+ export { AnimatedCounter, type AnimatedCounterProps, MetricGrid, type MetricGridProps, type MetricItem, RadialProgress, type RadialProgressProps };
package/dist/data.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface AnimatedCounterProps extends HTMLAttributes<HTMLDivElement> {
5
+ value?: number;
6
+ duration?: number;
7
+ color?: string;
8
+ accent?: string;
9
+ fontSize?: number;
10
+ prefix?: string;
11
+ suffix?: string;
12
+ label?: string;
13
+ delta?: string;
14
+ decimals?: number;
15
+ className?: string;
16
+ }
17
+ declare function AnimatedCounter({ value, duration, color, accent, fontSize, prefix, suffix, label, delta, decimals, className, style, ...props }: AnimatedCounterProps): react.JSX.Element;
18
+
19
+ interface RadialProgressProps extends HTMLAttributes<HTMLDivElement> {
20
+ value?: number;
21
+ size?: number;
22
+ strokeWidth?: number;
23
+ color?: string;
24
+ trackColor?: string;
25
+ animated?: boolean;
26
+ label?: string;
27
+ className?: string;
28
+ }
29
+ declare function RadialProgress({ value, size, strokeWidth, color, trackColor, animated, label, className, style, ...props }: RadialProgressProps): react.JSX.Element;
30
+
31
+ interface MetricItem {
32
+ label: string;
33
+ value: string;
34
+ delta?: string;
35
+ positive?: boolean;
36
+ }
37
+ interface MetricGridProps extends HTMLAttributes<HTMLDivElement> {
38
+ accent?: string;
39
+ background?: string;
40
+ columns?: number;
41
+ radius?: number;
42
+ items?: MetricItem[];
43
+ className?: string;
44
+ }
45
+ declare function MetricGrid({ accent, background, columns, radius, items, className, style, ...props }: MetricGridProps): react.JSX.Element;
46
+
47
+ export { AnimatedCounter, type AnimatedCounterProps, MetricGrid, type MetricGridProps, type MetricItem, RadialProgress, type RadialProgressProps };
package/dist/data.js ADDED
@@ -0,0 +1,3 @@
1
+ export { AnimatedCounter, MetricGrid, RadialProgress } from './chunk-WDUETPNG.js';
2
+ //# sourceMappingURL=data.js.map
3
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"data.js"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunk4FWJRWS5_cjs = require('./chunk-4FWJRWS5.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "SaasLaunchHero", {
8
+ enumerable: true,
9
+ get: function () { return chunk4FWJRWS5_cjs.SaasLaunchHero; }
10
+ });
11
+ //# sourceMappingURL=heroes.cjs.map
12
+ //# sourceMappingURL=heroes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"heroes.cjs"}