File tree 3 files changed +71
-8
lines changed
3 files changed +71
-8
lines changed Original file line number Diff line number Diff line change 3
3
"ignorePaths" : [],
4
4
"dictionaryDefinitions" : [],
5
5
"dictionaries" : [],
6
- "words" : [" kars" ],
6
+ "words" : [" kars" , " maraquee " ],
7
7
"ignoreWords" : [],
8
8
"import" : []
9
9
}
Original file line number Diff line number Diff line change
1
+ import { cn } from "@/utils/cn" ;
2
+
3
+ /*
4
+ Copyright © 2024 Kars (github.com/kars1996)
5
+
6
+ Not to be shared, replicated or used without prior consent.
7
+ Contact Kars for any enquiries
8
+ */
9
+
10
+ interface MarqueeProps {
11
+ className ?: string ;
12
+ reverse ?: boolean ;
13
+ pauseOnHover ?: boolean ;
14
+ children ?: React . ReactNode ;
15
+ vertical ?: boolean ;
16
+ repeat ?: number ;
17
+ [ key : string ] : any ;
18
+ }
19
+
20
+ export default function Marquee ( {
21
+ className,
22
+ reverse,
23
+ pauseOnHover = true ,
24
+ children,
25
+ vertical = false ,
26
+ repeat = 4 ,
27
+ ...props
28
+ } : MarqueeProps ) {
29
+ return (
30
+ < div
31
+ { ...props }
32
+ className = { cn (
33
+ "group flex overflow-hidden p-2 [--duration:40s] [--gap:1rem] [gap:var(--gap)]" ,
34
+ {
35
+ "flex-row" : ! vertical ,
36
+ "flex-col" : vertical ,
37
+ } ,
38
+ className ,
39
+ ) }
40
+ >
41
+ { Array ( repeat )
42
+ . fill ( 0 )
43
+ . map ( ( _ , i ) => (
44
+ < div
45
+ key = { i }
46
+ className = { cn (
47
+ "flex shrink-0 justify-around [gap:var(--gap)]" ,
48
+ {
49
+ "animate-marquee flex-row" : ! vertical ,
50
+ "animate-marquee-vertical flex-col" : vertical ,
51
+ "group-hover:[animation-play-state:paused]" :
52
+ pauseOnHover ,
53
+ "[animation-direction:reverse]" : reverse ,
54
+ } ,
55
+ ) }
56
+ >
57
+ { children }
58
+ </ div >
59
+ ) ) }
60
+ </ div >
61
+ ) ;
62
+ }
Original file line number Diff line number Diff line change @@ -30,17 +30,18 @@ const config: Config = {
30
30
} ,
31
31
} ,
32
32
animation : {
33
- marquee : "marquee 25s linear infinite" ,
34
- marquee2 : "marquee2 25s linear infinite" ,
33
+ marquee : "marquee var(--duration) linear infinite" ,
34
+ "marquee-vertical" :
35
+ "marquee-vertical var(--duration) linear infinite" ,
35
36
} ,
36
37
keyframes : {
37
38
marquee : {
38
- "0%" : { transform : "translateX(0% )" } ,
39
- "100%" : { transform : "translateX(-100%)" } ,
39
+ from : { transform : "translateX(0)" } ,
40
+ to : { transform : "translateX(calc( -100% - var(--gap)) )" } ,
40
41
} ,
41
- marquee2 : {
42
- "0%" : { transform : "translateX(100% )" } ,
43
- "100%" : { transform : "translateX(0% )" } ,
42
+ "marquee-vertical" : {
43
+ from : { transform : "translateY(0 )" } ,
44
+ to : { transform : "translateY(calc(-100% - var(--gap)) )" } ,
44
45
} ,
45
46
} ,
46
47
} ,
You can’t perform that action at this time.
0 commit comments