1
1
import React , { useState , useMemo } from "react" ;
2
- import { useThemeHooks } from ' @redocly/theme/core/hooks' ;
2
+ import { useThemeHooks } from " @redocly/theme/core/hooks" ;
3
3
const moment = require ( "moment" ) ;
4
- const amaImage = require ( "../static/img/events/AMAs.png" )
5
- const hackathon = require ( "../static/img/events/Hackathons.png" )
6
- const sanDiego = require ( "../static/img/events/event-meetup-san-diego@2x.jpg" )
7
- const miami = require ( "../static/img/events/event-meetup-miami@2x.jpg" )
8
- const conference = require ( "../static/img/events/Conference.png" )
9
- const zone = require ( "../static/img/events/XRPLZone.png" )
10
- const calls = require ( "../static/img/events/CommunityCalls.png" )
11
- const brazil = require ( "../static/img/events/event-meetup-brazil.png" )
12
- const korea = require ( "../static/img/events/SouthKoreaMeetup.png" )
4
+ const amaImage = require ( "../static/img/events/AMAs.png" ) ;
5
+ const hackathon = require ( "../static/img/events/Hackathons.png" ) ;
6
+ const sanDiego = require ( "../static/img/events/event-meetup-san-diego@2x.jpg" ) ;
7
+ const miami = require ( "../static/img/events/event-meetup-miami@2x.jpg" ) ;
8
+ const conference = require ( "../static/img/events/Conference.png" ) ;
9
+ const zone = require ( "../static/img/events/XRPLZone.png" ) ;
10
+ const calls = require ( "../static/img/events/CommunityCalls.png" ) ;
11
+ const brazil = require ( "../static/img/events/event-meetup-brazil.png" ) ;
12
+ const korea = require ( "../static/img/events/SouthKoreaMeetup.png" ) ;
13
13
const infoSession = require ( "../static/img/events/InfoSessions.png" ) ;
14
14
export const frontmatter = {
15
15
seo : {
@@ -463,7 +463,7 @@ const events = [
463
463
name : "XRPL Grants Info Session: Financial Inclusion Focused" ,
464
464
description :
465
465
"Join us for a live information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Financial Inclusion projects." ,
466
- type : "info-session " ,
466
+ type : "info" ,
467
467
link : "https://www.youtube.com/watch?v=TgLaAXTZY7Q" ,
468
468
location : "Virtual - Zoom" ,
469
469
date : "September 05, 2023" ,
@@ -485,7 +485,7 @@ const events = [
485
485
name : "XRPL Grants Info Session: Decentralized Exchange (DEX) Focused" ,
486
486
description :
487
487
"Watch the recorded information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Decentralized Exchange (DEX) projects." ,
488
- type : "info-session " ,
488
+ type : "info" ,
489
489
link : "https://www.youtube.com/watch?v=BbGu0QC5WEE" ,
490
490
location : "Virtual - Zoom" ,
491
491
date : "September 06, 2023" ,
@@ -640,7 +640,6 @@ const events = [
640
640
image : conference ,
641
641
end_date : "June 1, 2024" ,
642
642
} ,
643
-
644
643
{
645
644
name : "Permissionless" ,
646
645
description :
@@ -743,7 +742,7 @@ const events = [
743
742
{
744
743
name : "XRP Community After Hours" ,
745
744
description :
746
- "Celebrate with the XRP Community during Korea Blockchain Week! Don’ t miss this opportunity to mingle with the vibrant XRP community, visionary XRPL developers, trailblazing innovators, and influential investors." ,
745
+ "Celebrate with the XRP Community during Korea Blockchain Week! Don' t miss this opportunity to mingle with the vibrant XRP community, visionary XRPL developers, trailblazing innovators, and influential investors." ,
747
746
type : "meetup" ,
748
747
link : "https://lu.ma/mbg067j3" ,
749
748
location : "Seongdong-su, Seoul" ,
@@ -755,17 +754,28 @@ const events = [
755
754
name : "XRPL Builder Office Hours" ,
756
755
description :
757
756
"XRPL Builder Office Hours is an open forum hosted monthly by Developer Advocates to answer technical and business questions from community members." ,
758
- type : "info-session " ,
757
+ type : "info" ,
759
758
link : "https://ripple.zoom.us/meeting/register/tJMscOCsrDoiHNUN6hZLpFVR69OcfG9rXtIA#/registration" ,
760
759
location : "Virtual - Zoom" ,
761
760
date : "August 23, 2024" ,
762
761
image : infoSession ,
763
762
end_date : "August 23, 2024" ,
764
763
} ,
764
+ {
765
+ name : "APEX 2024: The XRPL Developer Summit" ,
766
+ description :
767
+ "Apex XRPL Developer Summit is the annual event where developers, contributors, and thought leaders come together to learn, build, share, network, and celebrate all things XRP Ledger." ,
768
+ type : "conference" ,
769
+ link : "https://www.youtube.com/playlist?list=PLl-QsmXvjodqeHPgq1UrKVcRPoNJe12Wv" ,
770
+ location : "Amsterdam" ,
771
+ date : "June 11 - 13, 2024" ,
772
+ image : conference ,
773
+ end_date : "June 13, 2024" ,
774
+ } ,
765
775
] ;
766
776
767
777
export default function Events ( ) {
768
- const { useTranslate} = useThemeHooks ( ) ;
778
+ const { useTranslate } = useThemeHooks ( ) ;
769
779
const { translate } = useTranslate ( ) ;
770
780
const { past, upcoming } = useMemo ( ( ) => categorizeDates ( events ) , [ ] ) ;
771
781
@@ -775,8 +785,8 @@ export default function Events() {
775
785
hackathon : true ,
776
786
ama : true ,
777
787
cc : true ,
778
- zone : true ,
779
- "info-session " : true ,
788
+ zone : true ,
789
+ "info" : true ,
780
790
} ) ;
781
791
782
792
const [ pastFilters , setPastFilters ] = useState ( {
@@ -786,32 +796,34 @@ export default function Events() {
786
796
ama : true ,
787
797
cc : true ,
788
798
zone : true ,
789
- "info-session " : true ,
799
+ "info" : true ,
790
800
} ) ;
791
801
792
802
const filteredUpcoming = useMemo ( ( ) => {
793
803
return upcoming . filter (
794
804
( event ) => upcomingFilters [ event . type . split ( "-" ) [ 0 ] ] !== false
795
805
) ;
796
806
} , [ upcoming , upcomingFilters ] ) ;
797
-
807
+
798
808
const filteredPast = useMemo ( ( ) => {
799
- return past . filter ( ( event ) => pastFilters [ event . type . split ( "-" ) [ 0 ] ] !== false ) ;
809
+ return past . filter (
810
+ ( event ) => pastFilters [ event . type . split ( "-" ) [ 0 ] ] !== false
811
+ ) ;
800
812
} , [ past , pastFilters ] ) ;
801
-
813
+
802
814
const handleUpcomingFilterChange = ( event ) => {
803
815
const { name, checked } = event . target ;
804
816
setUpcomingFilters ( ( prevFilters ) => ( {
805
817
...prevFilters ,
806
- [ name . split ( "-" ) [ 0 ] ] : checked ,
818
+ [ name . replace ( "-upcoming" , "" ) ] : checked ,
807
819
} ) ) ;
808
820
} ;
809
821
810
822
const handlePastFilterChange = ( event ) => {
811
823
const { name, checked } = event . target ;
812
824
setPastFilters ( ( prevFilters ) => ( {
813
825
...prevFilters ,
814
- [ name . split ( "-" ) [ 0 ] ] : checked ,
826
+ [ name . replace ( "-past" , "" ) ] : checked ,
815
827
} ) ) ;
816
828
} ;
817
829
@@ -847,26 +859,26 @@ export default function Events() {
847
859
< div className = "pt-5 pr-2 col" >
848
860
< div className = "d-flex flex-column-reverse" >
849
861
< h2 className = "mb-8 h4 h2-sm" >
850
- { translate ( "XRP Ledger Apex " ) }
862
+ { translate ( "XRPL Zone Seoul " ) }
851
863
</ h2 >
852
864
< h6 className = "mb-3 eyebrow" > { translate ( "Save the Date" ) } </ h6 >
853
865
</ div >
854
866
< p className = "mb-4" >
855
867
{ translate (
856
- "XRP Ledger Apex 2024 is the official global community summit that unites developers, innovators, businesses , and investors who are building the future of finance on the XRP Ledger blockchain. "
868
+ "Join us at XRPL Zone Seoul where developers, corporates, fintechs, banks, VCs, academia , and the XRP community come together under one roof for the biggest XRPL event in South Korea! "
857
869
) }
858
870
</ p >
859
871
< div className = " my-3 event-small-gray" >
860
- Location: Amsterdam
872
+ Location: Seongdong-su, Seoul
861
873
</ div >
862
874
< div className = "py-2 my-3 event-small-gray" >
863
- Date: June 11-13 , 2024
875
+ September 4th , 2024
864
876
</ div >
865
877
< div className = "d-lg-block" >
866
878
< a
867
879
className = "btn btn-primary btn-arrow-out"
868
880
target = "_blank"
869
- href = "https://register.xrpledgerapex .com/2024/?utm_source=xrplorg & utm_medium = web & utm_campaign = events "
881
+ href = "https://ripple.swoogo .com/xrpl-zone-seoul "
870
882
>
871
883
{ translate ( "Register Now" ) }
872
884
</ a >
@@ -897,7 +909,9 @@ export default function Events() {
897
909
checked = { upcomingFilters . conference }
898
910
onChange = { handleUpcomingFilterChange }
899
911
/>
900
- < label htmlFor = "conference-upcoming" > { translate ( "Conference" ) } </ label >
912
+ < label htmlFor = "conference-upcoming" >
913
+ { translate ( "Conference" ) }
914
+ </ label >
901
915
</ div >
902
916
< div className = "form-check form-check-inline" >
903
917
< input
@@ -921,7 +935,9 @@ export default function Events() {
921
935
checked = { upcomingFilters . hackathon }
922
936
onChange = { handleUpcomingFilterChange }
923
937
/>
924
- < label htmlFor = "hackathon-upcoming" > { translate ( "Hackathons" ) } </ label >
938
+ < label htmlFor = "hackathon-upcoming" >
939
+ { translate ( "Hackathons" ) }
940
+ </ label >
925
941
</ div >
926
942
< div className = "form-check form-check-inline" >
927
943
< input
@@ -945,7 +961,9 @@ export default function Events() {
945
961
checked = { upcomingFilters . cc }
946
962
onChange = { handleUpcomingFilterChange }
947
963
/>
948
- < label htmlFor = "cc-upcoming" > { translate ( "Community Calls" ) } </ label >
964
+ < label htmlFor = "cc-upcoming" >
965
+ { translate ( "Community Calls" ) }
966
+ </ label >
949
967
</ div >
950
968
< div className = "form-check form-check-inline" >
951
969
< input
@@ -961,19 +979,21 @@ export default function Events() {
961
979
</ div >
962
980
< div className = "form-check form-check-inline" >
963
981
< input
964
- defaultValue = "info-session "
965
- id = "info-session- upcoming"
966
- name = "info-session- upcoming"
982
+ defaultValue = "info"
983
+ id = "info-upcoming"
984
+ name = "info-upcoming"
967
985
type = "checkbox"
968
986
className = "events-filter"
969
- checked = { upcomingFilters [ "info-session " ] }
987
+ checked = { upcomingFilters [ "info" ] }
970
988
onChange = { handleUpcomingFilterChange }
971
989
/>
972
- < label htmlFor = "info-session-upcoming" > { translate ( "Info Session" ) } </ label >
990
+ < label htmlFor = "info-upcoming" >
991
+ { translate ( "Info Session" ) }
992
+ </ label >
973
993
</ div >
974
994
</ div >
975
995
</ div >
976
- { /* # Available Types - conference, hackathon, ama, cc, zone, meetup, info-session */ }
996
+ { /* # Available Types - conference, hackathon, ama, cc, zone, meetup, info */ }
977
997
< div className = "mt-2 row row-cols-1 row-cols-lg-3 card-deck" >
978
998
{ filteredUpcoming . map ( ( event , i ) => (
979
999
< a
@@ -989,7 +1009,9 @@ export default function Events() {
989
1009
background : `url(${ event . image } ) no-repeat` ,
990
1010
} }
991
1011
>
992
- < div className = "event-card-title" > { translate ( event . name ) } </ div >
1012
+ < div className = "event-card-title" >
1013
+ { translate ( event . name ) }
1014
+ </ div >
993
1015
</ div >
994
1016
< div className = "event-card-body" >
995
1017
< p > { translate ( event . description ) } </ p >
@@ -1025,7 +1047,9 @@ export default function Events() {
1025
1047
checked = { pastFilters . conference }
1026
1048
onChange = { handlePastFilterChange }
1027
1049
/>
1028
- < label htmlFor = "conference-past" > { translate ( "Conference" ) } </ label >
1050
+ < label htmlFor = "conference-past" >
1051
+ { translate ( "Conference" ) }
1052
+ </ label >
1029
1053
</ div >
1030
1054
< div className = "form-check form-check-inline" >
1031
1055
< input
@@ -1049,7 +1073,9 @@ export default function Events() {
1049
1073
checked = { pastFilters . hackathon }
1050
1074
onChange = { handlePastFilterChange }
1051
1075
/>
1052
- < label htmlFor = "hackathon-past" > { translate ( "Hackathons" ) } </ label >
1076
+ < label htmlFor = "hackathon-past" >
1077
+ { translate ( "Hackathons" ) }
1078
+ </ label >
1053
1079
</ div >
1054
1080
< div className = "form-check form-check-inline" >
1055
1081
< input
@@ -1089,15 +1115,17 @@ export default function Events() {
1089
1115
</ div >
1090
1116
< div className = "form-check form-check-inline" >
1091
1117
< input
1092
- defaultValue = "info-session "
1093
- id = "info-session- past"
1094
- name = "info-session- past"
1118
+ defaultValue = "info"
1119
+ id = "info-past"
1120
+ name = "info-past"
1095
1121
type = "checkbox"
1096
1122
className = "events-filter"
1097
- checked = { pastFilters [ "info-session " ] }
1123
+ checked = { pastFilters [ "info" ] }
1098
1124
onChange = { handlePastFilterChange }
1099
1125
/>
1100
- < label htmlFor = "info-session-past" > { translate ( "Info Session" ) } </ label >
1126
+ < label htmlFor = "info-past" >
1127
+ { translate ( "Info Session" ) }
1128
+ </ label >
1101
1129
</ div >
1102
1130
</ div >
1103
1131
</ div >
@@ -1115,7 +1143,9 @@ export default function Events() {
1115
1143
background : `url(${ event . image } ) no-repeat` ,
1116
1144
} }
1117
1145
>
1118
- < div className = "event-card-title" > { translate ( event . name ) } </ div >
1146
+ < div className = "event-card-title" >
1147
+ { translate ( event . name ) }
1148
+ </ div >
1119
1149
</ div >
1120
1150
< div className = "event-card-body" >
1121
1151
< p > { translate ( event . description ) } </ p >
0 commit comments