@@ -3,11 +3,14 @@ import { CustomTooltip } from '@remix-ui/helper'
3
3
import { FormattedMessage } from 'react-intl'
4
4
import './desktop-download.css'
5
5
6
+ const _paq = ( window . _paq = window . _paq || [ ] ) // eslint-disable-line
7
+
6
8
interface DesktopDownloadProps {
7
9
className ?: string
8
10
compact ?: boolean
9
- variant ?: 'button' | 'span'
11
+ variant ?: 'button' | 'span' | 'auto'
10
12
style ?: React . CSSProperties
13
+ trackingContext ?: string // Context for Matomo tracking (e.g., 'hometab', 'dropdown', 'navbar')
11
14
}
12
15
13
16
interface ReleaseAsset {
@@ -35,7 +38,13 @@ const GITHUB_API_URL = 'https://api.github.com/repos/remix-project-org/remix-des
35
38
const CACHE_KEY = 'remix-desktop-release-cache'
36
39
const CACHE_DURATION = 30 * 60 * 1000 // 30 minutes in milliseconds
37
40
38
- export const DesktopDownload : React . FC < DesktopDownloadProps > = ( { className = '' , compact = true , variant = 'button' , style = { } } ) => {
41
+ export const DesktopDownload : React . FC < DesktopDownloadProps > = ( {
42
+ className = '' ,
43
+ compact = true ,
44
+ variant = 'button' ,
45
+ style = { } ,
46
+ trackingContext = 'unknown'
47
+ } ) => {
39
48
const [ releaseData , setReleaseData ] = useState < ReleaseData | null > ( null )
40
49
const [ loading , setLoading ] = useState ( true )
41
50
const [ error , setError ] = useState < string | null > ( null )
@@ -181,6 +190,17 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
181
190
}
182
191
}
183
192
193
+ // Track download click events
194
+ const trackDownloadClick = ( platform ?: string , filename ?: string , variant ?: string ) => {
195
+ const trackingData = [
196
+ 'trackEvent' ,
197
+ 'desktopDownload' ,
198
+ `${ trackingContext } -${ variant || 'button' } ` ,
199
+ platform ? `${ platform } -${ filename } ` : 'releases-page'
200
+ ]
201
+ _paq . push ( trackingData )
202
+ }
203
+
184
204
// Load release data on component mount
185
205
useEffect ( ( ) => {
186
206
const loadReleaseData = async ( ) => {
@@ -277,6 +297,7 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
277
297
style = { { color : 'inherit' } }
278
298
onClick = { ( e ) => {
279
299
e . stopPropagation ( )
300
+ trackDownloadClick ( detectedDownload . platform , detectedDownload . filename , 'span' )
280
301
// Allow the default link behavior
281
302
} }
282
303
>
@@ -337,6 +358,7 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
337
358
className = "btn btn-sm btn-primary d-flex align-items-center gap-2"
338
359
target = "_blank"
339
360
rel = "noopener noreferrer"
361
+ onClick = { ( ) => trackDownloadClick ( detectedDownload . platform , detectedDownload . filename , 'compact' ) }
340
362
>
341
363
< i className = "far fa-desktop" > </ i >
342
364
< span >
@@ -379,6 +401,7 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
379
401
className = "btn btn-sm btn-primary d-flex align-items-center gap-2"
380
402
target = "_blank"
381
403
rel = "noopener noreferrer"
404
+ onClick = { ( ) => trackDownloadClick ( undefined , undefined , 'compact-fallback' ) }
382
405
>
383
406
< i className = "far fa-desktop" > </ i >
384
407
< span >
@@ -433,6 +456,7 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
433
456
className = "btn btn-primary d-flex align-items-center gap-2"
434
457
target = "_blank"
435
458
rel = "noopener noreferrer"
459
+ onClick = { ( ) => trackDownloadClick ( detectedDownload . platform , detectedDownload . filename , 'full' ) }
436
460
>
437
461
< i className = { getPlatformIcon ( detectedDownload . platform ) } > </ i >
438
462
< span >
@@ -471,6 +495,7 @@ export const DesktopDownload: React.FC<DesktopDownloadProps> = ({ className = ''
471
495
className = "btn btn-primary d-flex align-items-center gap-2"
472
496
target = "_blank"
473
497
rel = "noopener noreferrer"
498
+ onClick = { ( ) => trackDownloadClick ( undefined , undefined , 'full-fallback' ) }
474
499
>
475
500
< i className = "fas fa-external-link-alt" > </ i >
476
501
< span >
0 commit comments