@@ -6,17 +6,42 @@ import {
66 View ,
77 StyleSheet ,
88 Image ,
9+ Svg ,
10+ Path ,
911} from '@react-pdf/renderer' ;
1012
1113const styles = StyleSheet . create ( {
1214 page : {
1315 padding : 30 ,
1416 fontSize : 12 ,
1517 } ,
16- header : {
18+ headerContainer : {
19+ flexDirection : 'row' ,
20+ alignItems : 'center' ,
21+ marginBottom : 40 ,
22+ } ,
23+ logoContainer : {
24+ width : 40 ,
25+ height : 40 ,
26+ marginRight : 10 ,
27+ } ,
28+ headerText : {
1729 fontSize : 24 ,
30+ fontWeight : 'bold' ,
31+ } ,
32+ infoTable : {
1833 marginBottom : 20 ,
19- textAlign : 'center' ,
34+ } ,
35+ infoRow : {
36+ flexDirection : 'row' ,
37+ marginBottom : 8 ,
38+ } ,
39+ infoLabel : {
40+ width : 150 ,
41+ fontWeight : 'bold' ,
42+ } ,
43+ infoValue : {
44+ flex : 1 ,
2045 } ,
2146 section : {
2247 marginTop : 15 ,
@@ -97,12 +122,9 @@ const styles = StyleSheet.create({
97122 } ,
98123} ) ;
99124
100- const formatDate = ( dateString ) => {
101- return new Date ( dateString ) . toLocaleDateString ( 'en-US' , {
102- year : 'numeric' ,
103- month : 'long' ,
104- day : 'numeric' ,
105- } ) ;
125+ const formatDate = ( ) => {
126+ const now = new Date ( ) ;
127+ return now . toISOString ( ) . replace ( 'T' , ' ' ) . slice ( 0 , - 5 ) + 'Z' ;
106128} ;
107129
108130const TableRow = ( { items, isHeader = false , twoColumns = false } ) => (
@@ -121,9 +143,32 @@ const TableRow = ({ items, isHeader = false, twoColumns = false }) => (
121143const SecurityReport = ( { organization, alerts, summary, showAllAlerts, chartImages } ) => (
122144 < Document >
123145 < Page size = "A4" style = { styles . page } >
124- < Text style = { styles . header } >
125- Security Report for { organization }
126- </ Text >
146+ < View style = { styles . headerContainer } >
147+ < View style = { styles . logoContainer } >
148+ < Svg viewBox = "0 0 98 96" >
149+ < Path
150+ fill = "#24292f"
151+ fillRule = "evenodd"
152+ d = "M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"
153+ />
154+ </ Svg >
155+ </ View >
156+ < View >
157+ < Text style = { styles . headerText } > GitHub Advanced Security</ Text >
158+ < Text style = { styles . headerText } > Summary Report</ Text >
159+ </ View >
160+ </ View >
161+
162+ < View style = { styles . infoTable } >
163+ < View style = { styles . infoRow } >
164+ < Text style = { styles . infoLabel } > GitHub Repository:</ Text >
165+ < Text style = { styles . infoValue } > { organization } </ Text >
166+ </ View >
167+ < View style = { styles . infoRow } >
168+ < Text style = { styles . infoLabel } > Generated:</ Text >
169+ < Text style = { styles . infoValue } > { formatDate ( ) } </ Text >
170+ </ View >
171+ </ View >
127172
128173 { /* Executive Summary */ }
129174 < View style = { styles . section } >
0 commit comments