@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.
- package/LICENSE +21 -0
- package/README.md +131 -0
- package/dist/ai.cjs +16 -0
- package/dist/ai.cjs.map +1 -0
- package/dist/ai.css +176 -0
- package/dist/ai.css.map +1 -0
- package/dist/ai.d.cts +33 -0
- package/dist/ai.d.ts +33 -0
- package/dist/ai.js +3 -0
- package/dist/ai.js.map +1 -0
- package/dist/backgrounds.cjs +32 -0
- package/dist/backgrounds.cjs.map +1 -0
- package/dist/backgrounds.css +253 -0
- package/dist/backgrounds.css.map +1 -0
- package/dist/backgrounds.d.cts +71 -0
- package/dist/backgrounds.d.ts +71 -0
- package/dist/backgrounds.js +3 -0
- package/dist/backgrounds.js.map +1 -0
- package/dist/buttons.cjs +20 -0
- package/dist/buttons.cjs.map +1 -0
- package/dist/buttons.css +116 -0
- package/dist/buttons.css.map +1 -0
- package/dist/buttons.d.cts +40 -0
- package/dist/buttons.d.ts +40 -0
- package/dist/buttons.js +3 -0
- package/dist/buttons.js.map +1 -0
- package/dist/chunk-4FWJRWS5.cjs +125 -0
- package/dist/chunk-4FWJRWS5.cjs.map +1 -0
- package/dist/chunk-BSEOOGOV.cjs +217 -0
- package/dist/chunk-BSEOOGOV.cjs.map +1 -0
- package/dist/chunk-C3ASXASL.cjs +205 -0
- package/dist/chunk-C3ASXASL.cjs.map +1 -0
- package/dist/chunk-CTD2GDO6.cjs +121 -0
- package/dist/chunk-CTD2GDO6.cjs.map +1 -0
- package/dist/chunk-EIE6FLCL.js +202 -0
- package/dist/chunk-EIE6FLCL.js.map +1 -0
- package/dist/chunk-H2AV67DY.cjs +260 -0
- package/dist/chunk-H2AV67DY.cjs.map +1 -0
- package/dist/chunk-H6Y3EJPA.cjs +83 -0
- package/dist/chunk-H6Y3EJPA.cjs.map +1 -0
- package/dist/chunk-JHOJY54P.js +123 -0
- package/dist/chunk-JHOJY54P.js.map +1 -0
- package/dist/chunk-JWV3IITG.js +80 -0
- package/dist/chunk-JWV3IITG.js.map +1 -0
- package/dist/chunk-K5QRX5CZ.js +194 -0
- package/dist/chunk-K5QRX5CZ.js.map +1 -0
- package/dist/chunk-MKCSRMHF.cjs +198 -0
- package/dist/chunk-MKCSRMHF.cjs.map +1 -0
- package/dist/chunk-R2F3FTBL.js +119 -0
- package/dist/chunk-R2F3FTBL.js.map +1 -0
- package/dist/chunk-ROKPXWY2.cjs +198 -0
- package/dist/chunk-ROKPXWY2.cjs.map +1 -0
- package/dist/chunk-RUSFF3MZ.js +214 -0
- package/dist/chunk-RUSFF3MZ.js.map +1 -0
- package/dist/chunk-T7CC3CLH.js +195 -0
- package/dist/chunk-T7CC3CLH.js.map +1 -0
- package/dist/chunk-UWQ5QNE3.cjs +311 -0
- package/dist/chunk-UWQ5QNE3.cjs.map +1 -0
- package/dist/chunk-WDUETPNG.js +256 -0
- package/dist/chunk-WDUETPNG.js.map +1 -0
- package/dist/chunk-YQSTEIU5.js +304 -0
- package/dist/chunk-YQSTEIU5.js.map +1 -0
- package/dist/data.cjs +20 -0
- package/dist/data.cjs.map +1 -0
- package/dist/data.css +151 -0
- package/dist/data.css.map +1 -0
- package/dist/data.d.cts +47 -0
- package/dist/data.d.ts +47 -0
- package/dist/data.js +3 -0
- package/dist/data.js.map +1 -0
- package/dist/heroes.cjs +12 -0
- package/dist/heroes.cjs.map +1 -0
- package/dist/heroes.css +190 -0
- package/dist/heroes.css.map +1 -0
- package/dist/heroes.d.cts +19 -0
- package/dist/heroes.d.ts +19 -0
- package/dist/heroes.js +3 -0
- package/dist/heroes.js.map +1 -0
- package/dist/index.cjs +104 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +1269 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/landing.cjs +12 -0
- package/dist/landing.cjs.map +1 -0
- package/dist/landing.css +137 -0
- package/dist/landing.css.map +1 -0
- package/dist/landing.d.cts +14 -0
- package/dist/landing.d.ts +14 -0
- package/dist/landing.js +3 -0
- package/dist/landing.js.map +1 -0
- package/dist/motion.cjs +16 -0
- package/dist/motion.cjs.map +1 -0
- package/dist/motion.css +79 -0
- package/dist/motion.css.map +1 -0
- package/dist/motion.d.cts +26 -0
- package/dist/motion.d.ts +26 -0
- package/dist/motion.js +3 -0
- package/dist/motion.js.map +1 -0
- package/dist/text.cjs +16 -0
- package/dist/text.cjs.map +1 -0
- package/dist/text.css +72 -0
- package/dist/text.css.map +1 -0
- package/dist/text.d.cts +28 -0
- package/dist/text.d.ts +28 -0
- package/dist/text.js +3 -0
- package/dist/text.js.map +1 -0
- package/dist/ui.cjs +16 -0
- package/dist/ui.cjs.map +1 -0
- package/dist/ui.css +95 -0
- package/dist/ui.css.map +1 -0
- package/dist/ui.d.cts +28 -0
- package/dist/ui.d.ts +28 -0
- package/dist/ui.js +3 -0
- package/dist/ui.js.map +1 -0
- package/package.json +134 -0
package/dist/text.css
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* src/text/RevealText.css */
|
|
2
|
+
.fb-reveal-text {
|
|
3
|
+
display: inline-block;
|
|
4
|
+
font-weight: 650;
|
|
5
|
+
letter-spacing: -0.05em;
|
|
6
|
+
animation: fbRevealText 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
7
|
+
}
|
|
8
|
+
@keyframes fbRevealText {
|
|
9
|
+
from {
|
|
10
|
+
opacity: 0;
|
|
11
|
+
transform: translateY(22px);
|
|
12
|
+
}
|
|
13
|
+
to {
|
|
14
|
+
opacity: 1;
|
|
15
|
+
transform: translateY(0);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
@media (prefers-reduced-motion: reduce) {
|
|
19
|
+
.fb-reveal-text {
|
|
20
|
+
animation: none !important;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* src/text/BlurReveal.css */
|
|
25
|
+
.fb-blur-reveal {
|
|
26
|
+
display: inline-block;
|
|
27
|
+
font-weight: 650;
|
|
28
|
+
line-height: 0.92;
|
|
29
|
+
letter-spacing: -0.045em;
|
|
30
|
+
animation: fbBlurReveal var( --fb-blur-reveal-duration, 0.8s ) cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
31
|
+
}
|
|
32
|
+
.fb-blur-reveal--repeat {
|
|
33
|
+
animation: fbBlurRevealRepeat calc(var( --fb-blur-reveal-duration, 0.8s ) * 3) cubic-bezier(0.16, 1, 0.3, 1) infinite;
|
|
34
|
+
}
|
|
35
|
+
@keyframes fbBlurReveal {
|
|
36
|
+
from {
|
|
37
|
+
opacity: 0;
|
|
38
|
+
filter: blur(var( --fb-blur-reveal-blur, 14px ));
|
|
39
|
+
transform: translateY(var( --fb-blur-reveal-distance, 24px ));
|
|
40
|
+
}
|
|
41
|
+
to {
|
|
42
|
+
opacity: 1;
|
|
43
|
+
filter: blur(0);
|
|
44
|
+
transform: translateY(0);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
@keyframes fbBlurRevealRepeat {
|
|
48
|
+
0% {
|
|
49
|
+
opacity: 0;
|
|
50
|
+
filter: blur(var( --fb-blur-reveal-blur, 14px ));
|
|
51
|
+
transform: translateY(var( --fb-blur-reveal-distance, 24px ));
|
|
52
|
+
}
|
|
53
|
+
28%, 72% {
|
|
54
|
+
opacity: 1;
|
|
55
|
+
filter: blur(0);
|
|
56
|
+
transform: translateY(0);
|
|
57
|
+
}
|
|
58
|
+
100% {
|
|
59
|
+
opacity: 0;
|
|
60
|
+
filter: blur(calc(var( --fb-blur-reveal-blur, 14px ) * 0.5));
|
|
61
|
+
transform: translateY(calc(var( --fb-blur-reveal-distance, 24px ) * -0.35));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
.fb-blur-reveal {
|
|
66
|
+
animation: none !important;
|
|
67
|
+
opacity: 1;
|
|
68
|
+
filter: none;
|
|
69
|
+
transform: none;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/*# sourceMappingURL=text.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/text/RevealText.css","../src/text/BlurReveal.css"],"sourcesContent":[".fb-reveal-text {\r\n display: inline-block;\r\n\r\n font-weight: 650;\r\n\r\n letter-spacing:\r\n -0.05em;\r\n\r\n animation:\r\n fbRevealText\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 both;\r\n}\r\n\r\n@keyframes fbRevealText {\r\n from {\r\n opacity: 0;\r\n\r\n transform:\r\n translateY(\r\n 22px\r\n );\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n\r\n transform:\r\n translateY(\r\n 0\r\n );\r\n }\r\n}\r\n\r\n@media (\r\n prefers-reduced-motion:\r\n reduce\r\n) {\r\n .fb-reveal-text {\r\n animation:\r\n none !important;\r\n }\r\n}",".fb-blur-reveal {\r\n display: inline-block;\r\n\r\n font-weight: 650;\r\n\r\n line-height: 0.92;\r\n\r\n letter-spacing: -0.045em;\r\n\r\n animation:\r\n fbBlurReveal\r\n var(\r\n --fb-blur-reveal-duration,\r\n 0.8s\r\n )\r\n cubic-bezier(\r\n 0.16,\r\n 1,\r\n 0.3,\r\n 1\r\n )\r\n both;\r\n}\r\n\r\n.fb-blur-reveal--repeat {\r\n animation:\r\n fbBlurRevealRepeat\r\n calc(\r\n var(\r\n --fb-blur-reveal-duration,\r\n 0.8s\r\n ) * 3\r\n )\r\n cubic-bezier(\r\n 0.16,\r\n 1,\r\n 0.3,\r\n 1\r\n )\r\n infinite;\r\n}\r\n\r\n@keyframes fbBlurReveal {\r\n from {\r\n opacity: 0;\r\n\r\n filter:\r\n blur(\r\n var(\r\n --fb-blur-reveal-blur,\r\n 14px\r\n )\r\n );\r\n\r\n transform:\r\n translateY(\r\n var(\r\n --fb-blur-reveal-distance,\r\n 24px\r\n )\r\n );\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n\r\n filter:\r\n blur(0);\r\n\r\n transform:\r\n translateY(0);\r\n }\r\n}\r\n\r\n@keyframes fbBlurRevealRepeat {\r\n 0% {\r\n opacity: 0;\r\n\r\n filter:\r\n blur(\r\n var(\r\n --fb-blur-reveal-blur,\r\n 14px\r\n )\r\n );\r\n\r\n transform:\r\n translateY(\r\n var(\r\n --fb-blur-reveal-distance,\r\n 24px\r\n )\r\n );\r\n }\r\n\r\n 28%,\r\n 72% {\r\n opacity: 1;\r\n\r\n filter:\r\n blur(0);\r\n\r\n transform:\r\n translateY(0);\r\n }\r\n\r\n 100% {\r\n opacity: 0;\r\n\r\n filter:\r\n blur(\r\n calc(\r\n var(\r\n --fb-blur-reveal-blur,\r\n 14px\r\n ) * 0.5\r\n )\r\n );\r\n\r\n transform:\r\n translateY(\r\n calc(\r\n var(\r\n --fb-blur-reveal-distance,\r\n 24px\r\n ) * -0.35\r\n )\r\n );\r\n }\r\n}\r\n\r\n@media (\r\n prefers-reduced-motion:\r\n reduce\r\n) {\r\n .fb-blur-reveal {\r\n animation:\r\n none !important;\r\n\r\n opacity: 1;\r\n\r\n filter: none;\r\n\r\n transform: none;\r\n }\r\n}"],"mappings":";AAAA,CAAC;AACC,WAAS;AAET,eAAa;AAEb,kBACE;AAEF,aACE,aACA,KACA,aACE,IAAI,EACJ,CAAC,EACD,GAAG,EACH,GAEF;AACJ;AAEA,WAXI;AAYF;AACE,aAAS;AAET,eACE,WACE;AAEN;AAEA;AACE,aAAS;AAET,eACE,WACE;AAEN;AACF;AAEA,QAAO,wBAEL;AAEA,GA5CD;AA6CG,eACE;AACJ;AACF;;;AChDA,CAAC;AACC,WAAS;AAET,eAAa;AAEb,eAAa;AAEb,kBAAgB;AAEhB,aACE,aACA,KACE,yBAAyB,EACzB,OAEF,aACE,IAAI,EACJ,CAAC,EACD,GAAG,EACH,GAEF;AACJ;AAEA,CAAC;AACC,aACE,mBACA,KACE,KACE,yBAAyB,EACzB,OACA,EAAE,GAEN,aACE,IAAI,EACJ,CAAC,EACD,GAAG,EACH,GAEF;AACJ;AAEA,WAhCI;AAiCF;AACE,aAAS;AAET,YACE,KACE,KACE,qBAAqB,EACrB;AAIN,eACE,WACE,KACE,yBAAyB,EACzB;AAGR;AAEA;AACE,aAAS;AAET,YACE,KAAK;AAEP,eACE,WAAW;AACf;AACF;AAEA,WAhDI;AAiDF;AACE,aAAS;AAET,YACE,KACE,KACE,qBAAqB,EACrB;AAIN,eACE,WACE,KACE,yBAAyB,EACzB;AAGR;AAEA;AAEE,aAAS;AAET,YACE,KAAK;AAEP,eACE,WAAW;AACf;AAEA;AACE,aAAS;AAET,YACE,KACE,KACE,KACE,qBAAqB,EACrB,OACA,EAAE;AAIV,eACE,WACE,KACE,KACE,yBAAyB,EACzB,OACA,EAAE;AAGZ;AACF;AAEA,QAAO,wBAEL;AAEA,GAvID;AAwIG,eACE;AAEF,aAAS;AAET,YAAQ;AAER,eAAW;AACb;AACF;","names":[]}
|
package/dist/text.d.cts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface RevealTextProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
color?: string;
|
|
7
|
+
accent?: string;
|
|
8
|
+
fontSize?: number;
|
|
9
|
+
lineHeight?: number;
|
|
10
|
+
duration?: number;
|
|
11
|
+
uppercase?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
declare function RevealText({ children, color, accent, fontSize, lineHeight, duration, uppercase, className, }: RevealTextProps): react.JSX.Element;
|
|
15
|
+
|
|
16
|
+
interface BlurRevealProps extends HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
color?: string;
|
|
19
|
+
fontSize?: number;
|
|
20
|
+
blur?: number;
|
|
21
|
+
distance?: number;
|
|
22
|
+
duration?: number;
|
|
23
|
+
repeat?: boolean;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
declare function BlurReveal({ children, color, fontSize, blur, distance, duration, repeat, className, style, ...props }: BlurRevealProps): react.JSX.Element;
|
|
27
|
+
|
|
28
|
+
export { BlurReveal, type BlurRevealProps, RevealText, type RevealTextProps };
|
package/dist/text.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface RevealTextProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
color?: string;
|
|
7
|
+
accent?: string;
|
|
8
|
+
fontSize?: number;
|
|
9
|
+
lineHeight?: number;
|
|
10
|
+
duration?: number;
|
|
11
|
+
uppercase?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
declare function RevealText({ children, color, accent, fontSize, lineHeight, duration, uppercase, className, }: RevealTextProps): react.JSX.Element;
|
|
15
|
+
|
|
16
|
+
interface BlurRevealProps extends HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
color?: string;
|
|
19
|
+
fontSize?: number;
|
|
20
|
+
blur?: number;
|
|
21
|
+
distance?: number;
|
|
22
|
+
duration?: number;
|
|
23
|
+
repeat?: boolean;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
declare function BlurReveal({ children, color, fontSize, blur, distance, duration, repeat, className, style, ...props }: BlurRevealProps): react.JSX.Element;
|
|
27
|
+
|
|
28
|
+
export { BlurReveal, type BlurRevealProps, RevealText, type RevealTextProps };
|
package/dist/text.js
ADDED
package/dist/text.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"text.js"}
|
package/dist/ui.cjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkC3ASXASL_cjs = require('./chunk-C3ASXASL.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "GlassCard", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return chunkC3ASXASL_cjs.GlassCard; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "SpotlightCard", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkC3ASXASL_cjs.SpotlightCard; }
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=ui.cjs.map
|
|
16
|
+
//# sourceMappingURL=ui.cjs.map
|
package/dist/ui.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ui.cjs"}
|
package/dist/ui.css
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* src/ui/SpotlightCard.css */
|
|
2
|
+
.fb-spotlight-card {
|
|
3
|
+
position: relative;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
min-height: 280px;
|
|
6
|
+
padding: 32px;
|
|
7
|
+
border: 1px solid;
|
|
8
|
+
transition: transform 0.25s ease;
|
|
9
|
+
}
|
|
10
|
+
.fb-spotlight-card:hover {
|
|
11
|
+
transform: translateY(-4px);
|
|
12
|
+
}
|
|
13
|
+
.fb-spotlight-card > span {
|
|
14
|
+
display: block;
|
|
15
|
+
color: #b99cff;
|
|
16
|
+
font-size: 10px;
|
|
17
|
+
}
|
|
18
|
+
.fb-spotlight-card > strong {
|
|
19
|
+
display: block;
|
|
20
|
+
margin-top: 100px;
|
|
21
|
+
font-size: 34px;
|
|
22
|
+
}
|
|
23
|
+
.fb-spotlight-card > p {
|
|
24
|
+
color: rgba(255, 255, 255, 0.55);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* src/ui/GlassCard.css */
|
|
28
|
+
.fb-glass-card {
|
|
29
|
+
position: relative;
|
|
30
|
+
isolation: isolate;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
width: min(100%, 390px);
|
|
33
|
+
min-height: 300px;
|
|
34
|
+
padding: 30px;
|
|
35
|
+
border: 1px solid;
|
|
36
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
37
|
+
transition: transform 0.3s ease, border-color 0.3s ease;
|
|
38
|
+
}
|
|
39
|
+
.fb-glass-card:hover {
|
|
40
|
+
transform: translateY(-5px);
|
|
41
|
+
}
|
|
42
|
+
.fb-glass-card__glow {
|
|
43
|
+
position: absolute;
|
|
44
|
+
z-index: -1;
|
|
45
|
+
left: -10%;
|
|
46
|
+
top: -15%;
|
|
47
|
+
width: 70%;
|
|
48
|
+
aspect-ratio: 1;
|
|
49
|
+
border-radius: 50%;
|
|
50
|
+
opacity: 0.2;
|
|
51
|
+
pointer-events: none;
|
|
52
|
+
transition: transform 0.5s ease, opacity 0.5s ease;
|
|
53
|
+
}
|
|
54
|
+
.fb-glass-card:hover .fb-glass-card__glow {
|
|
55
|
+
opacity: 0.32;
|
|
56
|
+
transform: translate3d(30px, 20px, 0) scale(1.1);
|
|
57
|
+
}
|
|
58
|
+
.fb-glass-card__inner {
|
|
59
|
+
position: relative;
|
|
60
|
+
z-index: 1;
|
|
61
|
+
min-height: 240px;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
}
|
|
65
|
+
.fb-glass-card__eyebrow {
|
|
66
|
+
color: #bba8ff;
|
|
67
|
+
font-family: "DM Mono", monospace;
|
|
68
|
+
font-size: 9px;
|
|
69
|
+
letter-spacing: 1.4px;
|
|
70
|
+
}
|
|
71
|
+
.fb-glass-card__content {
|
|
72
|
+
margin-top: auto;
|
|
73
|
+
}
|
|
74
|
+
.fb-glass-card__content strong {
|
|
75
|
+
display: block;
|
|
76
|
+
color: white;
|
|
77
|
+
font-size: clamp(32px, 5vw, 48px);
|
|
78
|
+
font-weight: 550;
|
|
79
|
+
line-height: 0.92;
|
|
80
|
+
letter-spacing: -0.045em;
|
|
81
|
+
}
|
|
82
|
+
.fb-glass-card__content p {
|
|
83
|
+
max-width: 260px;
|
|
84
|
+
margin: 18px 0 0;
|
|
85
|
+
color: rgba(255, 255, 255, 0.55);
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
line-height: 1.65;
|
|
88
|
+
}
|
|
89
|
+
@media (prefers-reduced-motion: reduce) {
|
|
90
|
+
.fb-glass-card,
|
|
91
|
+
.fb-glass-card__glow {
|
|
92
|
+
transition: none !important;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/*# sourceMappingURL=ui.css.map */
|
package/dist/ui.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/SpotlightCard.css","../src/ui/GlassCard.css"],"sourcesContent":[".fb-spotlight-card {\r\n position: relative;\r\n\r\n overflow: hidden;\r\n\r\n min-height: 280px;\r\n\r\n padding: 32px;\r\n\r\n border:\r\n 1px solid;\r\n\r\n transition:\r\n transform\r\n 0.25s\r\n ease;\r\n}\r\n\r\n.fb-spotlight-card:hover {\r\n transform:\r\n translateY(\r\n -4px\r\n );\r\n}\r\n\r\n.fb-spotlight-card\r\n> span {\r\n display: block;\r\n\r\n color: #b99cff;\r\n\r\n font-size: 10px;\r\n}\r\n\r\n.fb-spotlight-card\r\n> strong {\r\n display: block;\r\n\r\n margin-top: 100px;\r\n\r\n font-size: 34px;\r\n}\r\n\r\n.fb-spotlight-card\r\n> p {\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.55\r\n );\r\n}",".fb-glass-card {\r\n position: relative;\r\n\r\n isolation: isolate;\r\n\r\n overflow: hidden;\r\n\r\n width: min(\r\n 100%,\r\n 390px\r\n );\r\n\r\n min-height: 300px;\r\n\r\n padding: 30px;\r\n\r\n border:\r\n 1px solid;\r\n\r\n box-shadow:\r\n inset\r\n 0\r\n 1px\r\n 0\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.1\r\n );\r\n\r\n transition:\r\n transform\r\n 0.3s\r\n ease,\r\n border-color\r\n 0.3s\r\n ease;\r\n}\r\n\r\n.fb-glass-card:hover {\r\n transform:\r\n translateY(-5px);\r\n}\r\n\r\n.fb-glass-card__glow {\r\n position: absolute;\r\n\r\n z-index: -1;\r\n\r\n left: -10%;\r\n top: -15%;\r\n\r\n width: 70%;\r\n aspect-ratio: 1;\r\n\r\n border-radius: 50%;\r\n\r\n opacity: 0.2;\r\n\r\n pointer-events: none;\r\n\r\n transition:\r\n transform\r\n 0.5s\r\n ease,\r\n opacity\r\n 0.5s\r\n ease;\r\n}\r\n\r\n.fb-glass-card:hover\r\n.fb-glass-card__glow {\r\n opacity: 0.32;\r\n\r\n transform:\r\n translate3d(\r\n 30px,\r\n 20px,\r\n 0\r\n )\r\n scale(1.1);\r\n}\r\n\r\n.fb-glass-card__inner {\r\n position: relative;\r\n\r\n z-index: 1;\r\n\r\n min-height: 240px;\r\n\r\n display: flex;\r\n\r\n flex-direction: column;\r\n}\r\n\r\n.fb-glass-card__eyebrow {\r\n color: #bba8ff;\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.4px;\r\n}\r\n\r\n.fb-glass-card__content {\r\n margin-top: auto;\r\n}\r\n\r\n.fb-glass-card__content\r\nstrong {\r\n display: block;\r\n\r\n color: white;\r\n\r\n font-size:\r\n clamp(\r\n 32px,\r\n 5vw,\r\n 48px\r\n );\r\n\r\n font-weight: 550;\r\n\r\n line-height: 0.92;\r\n\r\n letter-spacing: -0.045em;\r\n}\r\n\r\n.fb-glass-card__content\r\np {\r\n max-width: 260px;\r\n\r\n margin:\r\n 18px\r\n 0\r\n 0;\r\n\r\n color:\r\n rgba(\r\n 255,\r\n 255,\r\n 255,\r\n 0.55\r\n );\r\n\r\n font-size: 12px;\r\n\r\n line-height: 1.65;\r\n}\r\n\r\n@media (\r\n prefers-reduced-motion:\r\n reduce\r\n) {\r\n .fb-glass-card,\r\n .fb-glass-card__glow {\r\n transition:\r\n none !important;\r\n }\r\n}"],"mappings":";AAAA,CAAC;AACC,YAAU;AAEV,YAAU;AAEV,cAAY;AAEZ,WAAS;AAET,UACE,IAAI;AAEN,cACE,UACA,MACA;AACJ;AAEA,CAlBC,iBAkBiB;AAChB,aACE,WACE;AAEN;AAEA,CAzBC,kBA0BD,EAAE;AACA,WAAS;AAET,SAAO;AAEP,aAAW;AACb;AAEA,CAlCC,kBAmCD,EAAE;AACA,WAAS;AAET,cAAY;AAEZ,aAAW;AACb;AAEA,CA3CC,kBA4CD,EAAE;AACA,SACE,KACE,GAAG,EACH,GAAG,EACH,GAAG,EACH;AAEN;;;ACpDA,CAAC;AACC,YAAU;AAEV,aAAW;AAEX,YAAU;AAEV,SAAO,IACL,IAAI,EACJ;AAGF,cAAY;AAEZ,WAAS;AAET,UACE,IAAI;AAEN,cACE,MACA,EACA,IACA,EACA,KACE,GAAG,EACH,GAAG,EACH,GAAG,EACH;AAGJ,cACE,UACA,KACA,IAAI,EACJ,aACA,KACA;AACJ;AAEA,CAxCC,aAwCa;AACZ,aACE,WAAW;AACf;AAEA,CAAC;AACC,YAAU;AAEV,WAAS;AAET,QAAM;AACN,OAAK;AAEL,SAAO;AACP,gBAAc;AAEd,iBAAe;AAEf,WAAS;AAET,kBAAgB;AAEhB,cACE,UACA,KACA,IAAI,EACJ,QACA,KACA;AACJ;AAEA,CAvEC,aAuEa,OACd,CA3BC;AA4BC,WAAS;AAET,aACE,YACE,IAAI,EACJ,IAAI,EACJ,GAEF,MAAM;AACV;AAEA,CAAC;AACC,YAAU;AAEV,WAAS;AAET,cAAY;AAEZ,WAAS;AAET,kBAAgB;AAClB;AAEA,CAAC;AACC,SAAO;AAEP,eACE,SAAS,EACT;AAEF,aAAW;AAEX,kBAAgB;AAClB;AAEA,CAAC;AACC,cAAY;AACd;AAEA,CAJC,uBAKD;AACE,WAAS;AAET,SAAO;AAEP,aACE,MACE,IAAI,EACJ,GAAG,EACH;AAGJ,eAAa;AAEb,eAAa;AAEb,kBAAgB;AAClB;AAEA,CAxBC,uBAyBD;AACE,aAAW;AAEX,UACE,KACA,EACA;AAEF,SACE,KACE,GAAG,EACH,GAAG,EACH,GAAG,EACH;AAGJ,aAAW;AAEX,eAAa;AACf;AAEA,QAAO,wBAEL;AAEA,GA9JD;AAAA,EA+JC,CAlHD;AAmHG,gBACE;AACJ;AACF;","names":[]}
|
package/dist/ui.d.cts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface SpotlightCardProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
background?: string;
|
|
7
|
+
spotlightColor?: string;
|
|
8
|
+
radius?: number;
|
|
9
|
+
glow?: number;
|
|
10
|
+
borderOpacity?: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
declare function SpotlightCard({ children, background, spotlightColor, radius, glow, borderOpacity, className, }: SpotlightCardProps): react.JSX.Element;
|
|
14
|
+
|
|
15
|
+
interface GlassCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
tint?: string;
|
|
18
|
+
opacity?: number;
|
|
19
|
+
blur?: number;
|
|
20
|
+
radius?: number;
|
|
21
|
+
borderOpacity?: number;
|
|
22
|
+
glowColor?: string;
|
|
23
|
+
glow?: number;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
declare function GlassCard({ children, tint, opacity, blur, radius, borderOpacity, glowColor, glow, className, style, ...props }: GlassCardProps): react.JSX.Element;
|
|
27
|
+
|
|
28
|
+
export { GlassCard, type GlassCardProps, SpotlightCard, type SpotlightCardProps };
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface SpotlightCardProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
background?: string;
|
|
7
|
+
spotlightColor?: string;
|
|
8
|
+
radius?: number;
|
|
9
|
+
glow?: number;
|
|
10
|
+
borderOpacity?: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
declare function SpotlightCard({ children, background, spotlightColor, radius, glow, borderOpacity, className, }: SpotlightCardProps): react.JSX.Element;
|
|
14
|
+
|
|
15
|
+
interface GlassCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
tint?: string;
|
|
18
|
+
opacity?: number;
|
|
19
|
+
blur?: number;
|
|
20
|
+
radius?: number;
|
|
21
|
+
borderOpacity?: number;
|
|
22
|
+
glowColor?: string;
|
|
23
|
+
glow?: number;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
declare function GlassCard({ children, tint, opacity, blur, radius, borderOpacity, glowColor, glow, className, style, ...props }: GlassCardProps): react.JSX.Element;
|
|
27
|
+
|
|
28
|
+
export { GlassCard, type GlassCardProps, SpotlightCard, type SpotlightCardProps };
|
package/dist/ui.js
ADDED
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ui.js"}
|
package/package.json
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@farzadbagheri/fb-components",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Production-minded React components for motion, AI interfaces, data visualization and modern product experiences.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Farzad Bagheri"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/BAGHERIFarzad/fb-components.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/BAGHERIFarzad/fb-components/issues"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://farzadbagheri.fr/en/components",
|
|
17
|
+
"type": "module",
|
|
18
|
+
"sideEffects": [
|
|
19
|
+
"**/*.css"
|
|
20
|
+
],
|
|
21
|
+
"main": "./dist/index.cjs",
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js",
|
|
28
|
+
"require": "./dist/index.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./backgrounds": {
|
|
31
|
+
"types": "./dist/backgrounds.d.ts",
|
|
32
|
+
"import": "./dist/backgrounds.js",
|
|
33
|
+
"require": "./dist/backgrounds.cjs"
|
|
34
|
+
},
|
|
35
|
+
"./backgrounds.css": "./dist/backgrounds.css",
|
|
36
|
+
"./buttons": {
|
|
37
|
+
"types": "./dist/buttons.d.ts",
|
|
38
|
+
"import": "./dist/buttons.js",
|
|
39
|
+
"require": "./dist/buttons.cjs"
|
|
40
|
+
},
|
|
41
|
+
"./buttons.css": "./dist/buttons.css",
|
|
42
|
+
"./text": {
|
|
43
|
+
"types": "./dist/text.d.ts",
|
|
44
|
+
"import": "./dist/text.js",
|
|
45
|
+
"require": "./dist/text.cjs"
|
|
46
|
+
},
|
|
47
|
+
"./text.css": "./dist/text.css",
|
|
48
|
+
"./ui": {
|
|
49
|
+
"types": "./dist/ui.d.ts",
|
|
50
|
+
"import": "./dist/ui.js",
|
|
51
|
+
"require": "./dist/ui.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./ui.css": "./dist/ui.css",
|
|
54
|
+
"./motion": {
|
|
55
|
+
"types": "./dist/motion.d.ts",
|
|
56
|
+
"import": "./dist/motion.js",
|
|
57
|
+
"require": "./dist/motion.cjs"
|
|
58
|
+
},
|
|
59
|
+
"./motion.css": "./dist/motion.css",
|
|
60
|
+
"./ai": {
|
|
61
|
+
"types": "./dist/ai.d.ts",
|
|
62
|
+
"import": "./dist/ai.js",
|
|
63
|
+
"require": "./dist/ai.cjs"
|
|
64
|
+
},
|
|
65
|
+
"./ai.css": "./dist/ai.css",
|
|
66
|
+
"./heroes": {
|
|
67
|
+
"types": "./dist/heroes.d.ts",
|
|
68
|
+
"import": "./dist/heroes.js",
|
|
69
|
+
"require": "./dist/heroes.cjs"
|
|
70
|
+
},
|
|
71
|
+
"./heroes.css": "./dist/heroes.css",
|
|
72
|
+
"./landing": {
|
|
73
|
+
"types": "./dist/landing.d.ts",
|
|
74
|
+
"import": "./dist/landing.js",
|
|
75
|
+
"require": "./dist/landing.cjs"
|
|
76
|
+
},
|
|
77
|
+
"./landing.css": "./dist/landing.css",
|
|
78
|
+
"./data": {
|
|
79
|
+
"types": "./dist/data.d.ts",
|
|
80
|
+
"import": "./dist/data.js",
|
|
81
|
+
"require": "./dist/data.cjs"
|
|
82
|
+
},
|
|
83
|
+
"./data.css": "./dist/data.css",
|
|
84
|
+
"./styles.css": "./dist/index.css"
|
|
85
|
+
},
|
|
86
|
+
"files": [
|
|
87
|
+
"dist",
|
|
88
|
+
"README.md",
|
|
89
|
+
"LICENSE"
|
|
90
|
+
],
|
|
91
|
+
"engines": {
|
|
92
|
+
"node": ">=18"
|
|
93
|
+
},
|
|
94
|
+
"keywords": [
|
|
95
|
+
"react",
|
|
96
|
+
"react-components",
|
|
97
|
+
"ui",
|
|
98
|
+
"ui-components",
|
|
99
|
+
"components",
|
|
100
|
+
"typescript",
|
|
101
|
+
"animation",
|
|
102
|
+
"motion",
|
|
103
|
+
"ai",
|
|
104
|
+
"ai-ui",
|
|
105
|
+
"dashboard",
|
|
106
|
+
"data-visualization",
|
|
107
|
+
"design-system",
|
|
108
|
+
"frontend"
|
|
109
|
+
],
|
|
110
|
+
"publishConfig": {
|
|
111
|
+
"access": "public"
|
|
112
|
+
},
|
|
113
|
+
"scripts": {
|
|
114
|
+
"build": "tsup",
|
|
115
|
+
"dev": "tsup --watch",
|
|
116
|
+
"clean": "rimraf dist",
|
|
117
|
+
"typecheck": "tsc --noEmit",
|
|
118
|
+
"prepublishOnly": "npm run typecheck && npm run build"
|
|
119
|
+
},
|
|
120
|
+
"peerDependencies": {
|
|
121
|
+
"react": ">=18 <20",
|
|
122
|
+
"react-dom": ">=18 <20"
|
|
123
|
+
},
|
|
124
|
+
"dependencies": {
|
|
125
|
+
"lucide-react": "^0.468.0"
|
|
126
|
+
},
|
|
127
|
+
"devDependencies": {
|
|
128
|
+
"@types/react": "^19.0.0",
|
|
129
|
+
"@types/react-dom": "^19.0.0",
|
|
130
|
+
"rimraf": "^6.0.0",
|
|
131
|
+
"tsup": "^8.3.5",
|
|
132
|
+
"typescript": "^5.7.2"
|
|
133
|
+
}
|
|
134
|
+
}
|