1
1
import React from "react" ;
2
2
import styles from "./HeaderDecoration.module.css" ;
3
-
4
- const capitalizeFirstLetter = ( string ) => {
5
- return string . charAt ( 0 ) . toUpperCase ( ) + string . slice ( 1 ) ;
6
- } ;
3
+ import { Chip } from "./Chip" ;
4
+ import { Callout } from "./Callout" ;
7
5
8
6
const CHECK_ICON = (
9
7
< svg xmlns = "http://www.w3.org/2000/svg" height = "1em" viewBox = "0 0 512 512" >
@@ -24,6 +22,65 @@ const CROSS_ICON = (
24
22
</ svg >
25
23
) ;
26
24
25
+
26
+ const MetadataStat = ( { label, children } ) => (
27
+ < div className = { styles . metadataStat } >
28
+ < dt className = { styles . metadataStatLabel } > { `${ label } : ` } </ dt >
29
+ < dd className = { styles . metadataStatValue } > { children } </ dd >
30
+ </ div >
31
+ ) ;
32
+
33
+ const EnabledIcon = ( { isEnabled } ) => {
34
+ return isEnabled ? CHECK_ICON : CROSS_ICON ;
35
+ } ;
36
+
37
+ const ConnectorMetadataCallout = ( { isCloud, isOss, isPypiPublished, supportLevel, github_url, dockerImageTag } ) => (
38
+ < Callout className = { styles . connectorMetadataCallout } >
39
+ < dl className = { styles . connectorMetadata } >
40
+ < MetadataStat label = "Availability" >
41
+ < div className = { styles . availability } >
42
+ < Chip className = { isCloud ? styles . available : styles . unavailable } >
43
+ < EnabledIcon isEnabled = { isCloud } /> Airbyte Cloud
44
+ </ Chip >
45
+ < Chip className = { isOss ? styles . available : styles . unavailable } >
46
+ < EnabledIcon isEnabled = { isOss } /> Airbyte OSS
47
+ </ Chip >
48
+ < Chip className = { isPypiPublished ? styles . available : styles . unavailable } >
49
+ < EnabledIcon isEnabled = { isPypiPublished } /> PyAirbyte
50
+ </ Chip >
51
+ </ div >
52
+ </ MetadataStat >
53
+ < MetadataStat label = "Support Level" >
54
+ < a href = "/integrations/connector-support-levels/" >
55
+ < Chip > { supportLevel } </ Chip >
56
+ </ a >
57
+ </ MetadataStat >
58
+ { supportLevel !== "archived" && (
59
+ < MetadataStat label = "Connector Version" >
60
+ < a href = { github_url } target = "_blank" >
61
+ { dockerImageTag }
62
+ </ a >
63
+ </ MetadataStat >
64
+ ) }
65
+ </ dl >
66
+ </ Callout >
67
+ ) ;
68
+
69
+ const ConnectorTitle = ( { iconUrl, originalTitle, originalId, isArchived } ) => (
70
+ < div className = { styles . header } >
71
+ < img src = { iconUrl } alt = "" className = { styles . connectorIcon } />
72
+ < h1 id = { originalId } >
73
+ { isArchived ? (
74
+ < span >
75
+ { originalTitle } < span style = { { color : "gray" } } > [ARCHIVED]</ span >
76
+ </ span >
77
+ ) : (
78
+ originalTitle
79
+ ) }
80
+ </ h1 >
81
+ </ div >
82
+ ) ;
83
+
27
84
export const HeaderDecoration = ( {
28
85
isOss : isOssString ,
29
86
isCloud : isCloudString ,
@@ -42,54 +99,20 @@ export const HeaderDecoration = ({
42
99
43
100
return (
44
101
< >
45
- < dl className = { styles . connectorMetadata } >
46
- < div >
47
- < dt > Availability</ dt >
48
- < dd className = { styles . availability } >
49
- < span className = { isCloud ? styles . available : styles . unavailable } >
50
- { isCloud ? CHECK_ICON : CROSS_ICON } Airbyte Cloud
51
- </ span >
52
- < span className = { isOss ? styles . available : styles . unavailable } >
53
- { isOss ? CHECK_ICON : CROSS_ICON } Airbyte OSS
54
- </ span >
55
- < span className = { isPypiPublished ? styles . available : styles . unavailable } >
56
- { isPypiPublished ? CHECK_ICON : CROSS_ICON } PyAirbyte
57
- </ span >
58
- </ dd >
59
- </ div >
60
- < div >
61
- < dt > Support Level</ dt >
62
- < dd >
63
- < a href = "/integrations/connector-support-levels/" >
64
- { capitalizeFirstLetter ( supportLevel ) }
65
- </ a >
66
- </ dd >
67
- </ div >
68
- { supportLevel !== "archived" && (
69
- < div >
70
- < dt > Latest Version</ dt >
71
-
72
- < dd >
73
- < a href = { github_url } target = "_blank" >
74
- { dockerImageTag }
75
- </ a >
76
- </ dd >
77
- </ div >
78
- ) }
79
- </ dl >
80
-
81
- < div className = { styles . header } >
82
- < img src = { iconUrl } alt = "" className = { styles . connectorIcon } />
83
- < h1 id = { originalId } >
84
- { isArchived ? (
85
- < span >
86
- { originalTitle } < span style = { { color : "gray" } } > [ARCHIVED]</ span >
87
- </ span >
88
- ) : (
89
- originalTitle
90
- ) }
91
- </ h1 >
92
- </ div >
102
+ < ConnectorTitle
103
+ iconUrl = { iconUrl }
104
+ originalTitle = { originalTitle }
105
+ originalId = { originalId }
106
+ isArchived = { isArchived }
107
+ />
108
+ < ConnectorMetadataCallout
109
+ isCloud = { isCloud }
110
+ isOss = { isOss }
111
+ isPypiPublished = { isPypiPublished }
112
+ supportLevel = { supportLevel }
113
+ github_url = { github_url }
114
+ dockerImageTag = { dockerImageTag }
115
+ />
93
116
</ >
94
117
) ;
95
118
} ;
0 commit comments