@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
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":[]}
@@ -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
@@ -0,0 +1,3 @@
1
+ export { BlurReveal, RevealText } from './chunk-JWV3IITG.js';
2
+ //# sourceMappingURL=text.js.map
3
+ //# sourceMappingURL=text.js.map
@@ -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
@@ -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 */
@@ -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
@@ -0,0 +1,3 @@
1
+ export { GlassCard, SpotlightCard } from './chunk-EIE6FLCL.js';
2
+ //# sourceMappingURL=ui.js.map
3
+ //# sourceMappingURL=ui.js.map
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
+ }