From 3a3e3a7afce563a85b21df8d0e0705297c2698fb Mon Sep 17 00:00:00 2001 From: Vladyslav Matsiiako Date: Sun, 28 Apr 2024 19:36:14 -0700 Subject: [PATCH] updated integrations page --- frontend/public/images/integrations/Agent.png | Bin 0 -> 3118 bytes .../public/images/integrations/Ansible.png | Bin 0 -> 9211 bytes frontend/public/images/integrations/ECS.png | Bin 0 -> 14455 bytes .../public/images/integrations/Jenkins.png | Bin 0 -> 26796 bytes .../public/json/frameworkIntegrations.json | 24 --------- .../json/infrastructureIntegrations.json | 50 ++++++++++++++++++ frontend/public/locales/en/translations.json | 2 +- frontend/src/pages/integrations/[id].tsx | 9 ++-- .../IntegrationsPage/IntegrationsPage.tsx | 5 +- .../FrameworkIntegrationSection.tsx | 33 ++++++++++++ .../InfrastructureIntegrationSection.tsx | 50 ++++++++++++++++++ .../index.tsx | 1 + 12 files changed, 145 insertions(+), 29 deletions(-) create mode 100644 frontend/public/images/integrations/Agent.png create mode 100644 frontend/public/images/integrations/Ansible.png create mode 100644 frontend/public/images/integrations/ECS.png create mode 100644 frontend/public/images/integrations/Jenkins.png create mode 100644 frontend/public/json/infrastructureIntegrations.json create mode 100644 frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/InfrastructureIntegrationSection.tsx create mode 100644 frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/index.tsx diff --git a/frontend/public/images/integrations/Agent.png b/frontend/public/images/integrations/Agent.png new file mode 100644 index 0000000000000000000000000000000000000000..662c1b27349f4f630a2b38754d1f21bbc824e854 GIT binary patch literal 3118 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 literal 0 HcmV?d00001 diff --git a/frontend/public/images/integrations/Ansible.png b/frontend/public/images/integrations/Ansible.png new file mode 100644 index 0000000000000000000000000000000000000000..925e48ca6f592ec153e0601760e206ec09fa3b74 GIT binary patch literal 9211 zcmV0L1H&jKx}0G{Q1h#rAx!>>grlB zruJZ5>CGA3jc+C5t=t|TgTb|+oInK%&_%qcXSfPSL8Cc{f>S(a&YVj8eN~VMBLzf& zUcGvS;Og9kG4>$dkB^`rbit3XExr{9?uh{f<`O;@0AmN4f$voU04%!jo%nJ%cqSwi=TP~|MIk?^g8r+dq;7{YGc)xdX%Zlw29Ns&R;>#i6YcM#efbwyJ!LThjIQU#%UfxacaeP`pNH7*JUYw|a znvUwz6kJU^frO~VTVuD%`3Gp^XO@?j*Mg7YlLFGMTepC!s;YsUtIsi`T>)VrX$lqZ zkSu&$g(}$kpHwiPav%GYfV6Gfwk6sYqq)i^;dSnhF9m_bTFxpAzR+;?fBB`Q+2A9B zq5&TuEiFxR^~#kD75LkDS!d%*N%+qXBqBtkMBI-yT81`Uo6w>~#Hs4)>KgEJynP2@ zZDM1GstUZ0g3%o$j--|YUmO@1{0bWLSHVm1${mD^@7&z%WNn!CJ&bO@gfGQ{#L)yW zV82yW{amd!EEso`lenYY058Mqc94XGghZ~YxMQdzFnTPS?@}*F*9b^_d^`s8)S1Bfv-oEvfTTI7MOF55KgM1uC@nn>USP<3gNns4^4*84h9&rX z3Vs<0lI9`+m)s;Yea9k_j* z##?McX=&+M@K8K*2T4v&_S4_I*}tZyW)*&!j{g*pxE;9qw#I)`!?apWY;5e2%F0Ru zco-fhAS4_=WM@Bz-l=!-3fut_cP9{qB)LJ~@Y@!lVL8=0T`_nN9wi_N36X6sU#>!1 zga3{(=IVkZiS3Xo-x2ruLE&NAt2H{^Dew?HMnDpxqkDo9uoa*7L*bArm1jZ@lwoMV zYZ4Qa4x(-1_Nn!rV5GD7_?QgfjJ#C7mxAuCFxcAAV3=J|QBekNj9Uu`x^IJ3z5ZqV zEy+veZ3Rm{4{8Fr99Tw4Ny%|=Q`}a?La#?O19c@nodME?>#angJvlbKMOc1KjqVJ% zA#N!k?PFuxtBikyYs^rPRgd0ICKMndL;~TyQ-HWN=+R%o?q|S%k#lz(`0umn|{~%Wl zJMpPZH1u6ioo0h-Yjxpm+qU}>JzUKmd3Or|A+?GDUyo1QfW+6qTLB)ZtGihr6cl{? z`t|G0n(Wx@0+NuB@PGn*9X{;<63H!4NHiKH2m^}ynp53sRslib=&2eEODRPfB$8i3 z#cq9TYpQSd($yZ$Yo>;F%_bo2+qaKZ4GlZ+X=ji~n#O38RBE+lH9Fl{1 z04~O*0zwslH)?BMMgwdDNF)Mq&LcDmdp|BNt{u1#SE^V{;d}~b>iGjjGuU_&;6ovpkhP zefq%P{_9m*On&uVU0oe4UAhz&EO;BPUG>@)xHf?|)VBr>!^_IbD!@rNRmF;rkH1G@ zuneT#VUiv_dcZ&bxfnX$(R2c{pPwJ@D!m~jI0Sc-edNsn$6W>xESPH9f( zG@FyvQ0~~-u1cVH8&e*f~ zGz=tWNlNN$Oee9I@o8cnFrR|4@l{n-$>0DSA|QIb9%`t|Ep zA5Up3!-fq9iAl6vQAUFe_q#0u!nnaOiGCN2cV+j5`6X5ez$D+Sd)_YjN;30#B@}+3U`0#@djL)xKy9VpmuLBWA zjvQ%BL6J0#!q`J~b#+305`+W<)vGp4VRq-Y_yQytW5L~mnGKJI%`VSZYZQF|3gc~+&_{G;b z+1YUBjP;d+Wb2SiS>|V%fx|Em2v3L!2xntKVig(bLJJkz9Tl*5&z@hrMk?3J6)Qo6 zdwcbgolnfu1>NF3tUcIj0m0R;+!Soq3gi2~}+_(X|cJ64>txLUmw`|!0B8(g{5*IX= z&YAHj6b6IS($cJ2L97-KuIgoXb}NXEj)sRHenjY;@4ovEjvYH@^8HU&e+pLx8dpc4 zCo3gIUM^E`4jm62+HX}2lT`vjzGEhPU0KBlbhXCBh;_l-v}vQ!t!s)47tX`iUw;K6 zOq?{?uEr2vPNb@8`df3LRRU69Ur)JL@gOk^d5@+)HeKWtqjA13Gt=xbl$W(*`wpSV zdZ$jEsGtobP2$J6YE|-@RRY4ffy&lozbgw+E1vcpItZOZBMnMQN-Q2nk#%YqC&HAe z(?DVZ20c4=?AXH6VHO313ZocPq(W-}Du$YXu3b^%eC5g&R_zQ|u3UkgJH;9X4jMEF zx^$840-6FfqDcJwJ6Sr;qJS(~v?v+vn#{0yH@8Gx@8|;Q!JcVg_>UPM9DzmVgZJb!*oOokPO33RN-@ zx?<2Wd62A5XcDwTFaU10gSbTjLEYNoHstG&aZX+%5i&EsgqoTf5asKyzsAV=WubE> zq03j6E;?ot=FAER%^Bnj?gEKP$T*)oWr|Qy6peIVzHAxT0_{A@my4ZC0xa{h znj{<@BzKrQ!0c7URVN-5G#URe17+-rb`?2x^r&!2ZDUp}UjenXwN@WbyT=q1Vo8&j zbwHUF5HviWp&CK&Jz-MV!%nS^V8 z=~F?bgqnex!BPA}1gaXmc<}<*%aJ2Tps1)w=$u)zX35Sczos1qVNGUGq=2)xf5W8->nEOiF^@_c?4jnOA_DaGStDZgTLG z$*W5vtZ@6WeUP4))1zk(WA&a07cN|Y{erfGIo7US1J%{lLg!>;h*diJ0D(7eLTgiR zniP=o^723qOiX|9Atp_nBs?jK+_NGb6D>i>i+lF$7CI+6c@V_MOULAGm~=#$6cF_9 zhvEhl4U%7x(54Oa>u*&#!OxIdwSC(*a3mC2r|)?amq2TwT9u*0hJoZ?pq3nK@;y^; z`1|`)=v6Ga$VV84HyEXth_Gk(ZrYW>(HuB%06k*`Lg%E7Pm}$#eu>FsHIoA3=jTVg zcctU}HpnQa)D4kYAC%7i{`-r;8Bn^4Xc|1_XZ7tXXRh7?uc^3-g&r5PNnE}PrEMf8 zCJLQ%;rw}{Th>{8^6|$)o-yipGGgQi>GJ&v^kkXTluSnuIhWnro8YOZo(55l9y{ig z=~B1I&(DV)+qVmyGjL$CET;MiW~LdUxg|ul=erFWb@uQhVjW9}v11>FzrOM}rw-9s zw@xf|o;+|gGC^XTV`x%aGASSiX@C5RN5_t}sUcfHKp@PRF$3Ox_dTc06Qs65+1c4b z=TM+iroj_TJkEieavK^*Qo93`aY_uD_{>B?H|F5q=M1Hk`ruyf^x3zb8wO$3ESh3KMu=Rtc2LuSa1ZC47qICG9j0*F=ao)*C$hPllQtg z8^roHeqIc@XCE5$ka5*_2Gsp<-TDpCzyAP-xPp%#KL!N_Vv+Sn&@@xkk||TC8sjCR=`4+*O2Z@Hd?R#DQc@E1=y?zLC?;Khrae^}@Oc5b z=bn3vZdnm1_52&bo3k+#h@?huAAPhGh71{E^Q5R1f(_=#X^@eg?vsH-TnJ6}b2TX- zs>;Ml)w~dL?TQ-CR53XHv1#z;oBwU}D%lEkiGO>+J1}qFJe!R717Cj)7cX8EI%oKZ z;qaT^*dOchI2f-q^_EEi!IjJUF3Da9rG!vIp9mxnR5eItuX=%cZ-foBDC976_45I{G&c(&WuzR;y z&3e0b?O?=+k>FD(inxl!c@Pyk`=o%}e}5lHNDyo2LOD>|w>MpLUQmz^bLPx}4?kF9 zmtE4XeS3KQwb$X)gOmJ%bio1a^aq%4ly&Bgs*yQ*kYBz_x zMpIFx5#2p#Qmwgk^XlqrG_4E%(Tb?fIWsDm))_8-6 zK)Fw!e{OviExCfpc>n(U6GAB=w?nJ^haY}qY)ox#$D@uaB6HS>VZ(=`7tQ%VF@h0>U*#=ECsa#)R~A5G5-s3vzRF!B)s% zU$}4~JoEI^aOH~aPD7gg@yOu8uoi{2bC+MwggJ8L8z{)n2N8Pq>lb1kAWzZ>y-JWnC)SX zoSYn(IdcYNW@dstgoTB{TmSe6JoD_c#^<-#fNGY=oOOa`ppc#8rPMN}&og&`#Z=K2 z+E9#`u~hJ4T17`2V-%t{!U}Ys?%K5r9Enb+GY0o)#lQRR9yVv!QlPI-pFWV(xifmp zzBhWY=zCJSO84&Ft^Ph#z;)@;B{+d`9xo)XzTU6^UEwCj4O?`baHcux?KxRvMvtM1 zzC!2JpzT1ToSgv)2_-wupZ~I54X-KanUazMOP4K!fyv3n*Ve50)aY0cVfyqLpz-s< zCN~Un2Mroz_5-#kAgITlM`hG&4RzWzQf(+VrKCj4vvL-++EdTnr+)W4xO}++?14r= zFT}_@l@8Nxl9wlz22V5Kd-mu7-UjZnht{rLYcO|=MFGjr&o9Rv#J+S?H>OXY2aJVL zB9IZi`qS0MScWs9pL6KYK^U5viowNwU=NW|QD~&U2QR$vBCP&Itic>Hd(IQy)<4Uj zs9-UJ)SACo#p~o8U80#GJv|*=yQ1TfFIQB+p@Rp(RiK|9X3m%iD^{!!R*!CH*6i6Z zJ}phS!Cc?IeW7btuWELEO;r?&Td7q`0#kS3~)SvMD9)22;OQDL9jBg%~% z*Wu;={115PrN6*+J7%oYqCoZTq7DffxZ_>LRP1yy)dN_-Dgn{!ISse4y)@2Ep|+d0 zbPy5kr0yuFrO$FSxG8nMw6qjl2?-XZw0Oy6D$YP9_oKytlT`w8iTr%P#af5EIds9t zjT;A|WM`jss&Q@!vP-_i*vrI;8NxN^_ChY>{(`d^-4X`XoT*k-uvu$$QEXRiLW`R- zXwXB(x#6NLTC~V+JHQd-{_q0~8=7iNv!^tAS21?%IBzJ)&5w&~YgOwR0k?#*35;Vy zJRjOUX3Z8)p{Tra1-5P73hn~sasA~lFT(%)<1M55yZ~x#L%ncC*@Y2qd$Mkw0TpY#{r1~1ckYvRH;1qW^7v7`z9)n0;|6Pw z6?1H>+_8BT%>*U#iTd=Z&f?=$tH52^yJru~p7l7KJ?nh?Xb48 zE_9b@{9z5MCm!9iw`F9cF%BRK-FT-@i`90!60$>1ojL{S6DGjEefykhC&k3Xcy8wt z4!g6mvg)lpTu4Ct{DN~aYUt5H!;vFLLR?%Nh_Z3xrY5WP+zo14J#Fd~Sn~e+;7rmp zGCZ;K2|BOT4@FK85|F&Syqg-vcYudNso%qf4HH(cE?hVdpYPoRo&wn=fBoxxc;SVA z7p_IO7K*AaPaBBYKk-1q^lTEV*MLBZhh|6ORj(}XibI@Ct zefBIk8VayZoi^2@b`i#5T|q%XmB=~50#aCb3GWoP6Fdw`{T?zTML6$@8Xj!@>@$Z{ z4Z0e#Lk=7`U>rd$+F{We1`HTzoRsSkFepXUArl0#B|TFGrhbNx9yK0;<^T>KA>N=R zCnp;Y9XbS_40U$=!|&(8dK;Tdn1Uu#rKEbsWGc?tq2S{W5eFk1Z+r*ysr?)eC@+7CtZ*&~29yNeZ&Ye3a?18mO zKqv}n;D$HBLm;D^E~F?V7^eE|dMb+-FNUd8CL2daJAy7)W_g6M-nVZ*=+L1fh_Z3x2D|#`x+7#uQD?`=lO|!jBopj~Y`eRQ*ia-AG$MbDz8`M?+c3e|+va*tBV*-42Mxom1S9 zg22E)n?nT52tEi|b5M|ZMm7sHS&AB^3b{4fh{oUNTMwhlIltt`} zIE!OoMI|NW?}8oJU4@Sxkq^Mk2&?9V+>mJ#(u9LqWWes&;Z@}?7TLP>GZ-~;r0~uD z`QE+8956RTMcwfYe6-7DXSaYK1Nm0Z%hYuT@rTH3X&Sb&# z>5mx~2WyfYEATU-RD00|5H2DoASh@h*ohoU&9XlfkX(i(;R{_n<+vsI=#vjpvG{MRDZNR>`p{;SRzeAT-;O+ zoQ!t2m_$!4JE`AQSeV$X4-$-{N53_8H}rKVA@QlFo`!z?`ax8yRz`t2cP=DxtI{*TL8x#*~T0#l=^^P8=p6y?XWXFD)(k67@c@`DGG`W4WPl7++LY<`5&& zp{bbYQtbz-;R}>tpBuC-aTnOClG4(tU`0zGYp~eeU4)vNngVUOHX5Jy0g1%*Tmhy$ zhWDYv0y7S8wyG$8Z=jlW4kQv6qX7FG#^!RsfjC@1ii(Pg(e3*J_|R-ai5tM!fza@9 zp>kSlaHxuPiyEEo2W@y54a(~V5{dJvMz`*0bn9B|wJVCV`q}G)4g48KRa_E@v*GY+ zX=$lbTH`ux;KTXy@=NF=djW;SXQt#znuYy-0Rhy)#VIw>PEoOLQB$MK3JVKsgTCbZ zKq7H47%?wYG=}kog{2Nxt#0A$kwN-~2K}FL7da0SiDTg^hrbjRRXBADv(sm4UA}y| z#t-xpP}=Pd`%5JMf-gb4V+A-FmkgcDFS-03F#bpIlJ4-5W`@HSKmWi#g9~t~4bm90 zN5WfZ1MrXQr0Iu0)s~+G0id=KChyp447stKJ~7qQxa#ON9p+A<`52|SpYUo zrom7LUlS4*_7XG`&FW36uGZzCXA1>{^}{biK_Y1kW4jeaGdn*&-#J50tf1N5t?2$e z-J*pSBkgRAJN!NpcY$xz8`N24Wo6CUn9v<=NRB(n+0f9i9L8W2el6C9MB;_;-65gc z@r8wj&7SD$HY>JHr_0uchkuVB&S?Bn*0lR3dc6Ltnc_DK)hf4WYw1oZ4X>%G`2mIG z6z(Mb@#}Dq_!#WNpx}^sqGQsWiQDP?C?q-BkkE5zpwWcLmLTyF*pddl{txKgbgPEQ z&F1DcM@f14XXxJ>iBU}V9ZW896nYF-|9ePi=+hMy6>it9&n*RnK<`DC;^#jG)vYf; z;;m3E`OL(`&i}A=z>TwUYqx53b#+x#RI4?rp#gtS_8_>iKud%<3d}IAw6uI{US6Kt zcEEA_xWm<}SM@cz+RSjR_8Mc1hMWh3#G^s2U<*_9PnJ-fkelNvfjM5I(;bco(;nsk zBqSa(oLkZu&Oxs*w!l9yXl`L)iASUuHA^xoH8TXeb_T7k$ekt&yagPT6z9KhMc!qW0@z)9_SoQ22jAdP9$ zrcHvX>fZyEr^t@-Zb=zaU|w-?*?REMegqz!9Ee`78h`(QZHmUPiYcr!zSIIF?m!(b zz3VWRHLJ9=EE7Cz*JzAK?;wp}v9Xa|6&Cm+UJJ?!4gpE?z*s(YSuZLn`3StAfw|YD zm+N#lDq><|x9RKakD(j!ZjhcXmx3<%8@Nv_V2b96;*yg6;K92_W4x;VqO!8mfbQVj zkkHWeilV8+Yt$3uZsKe>sv$c-;g2UKby;!h)Tw4GZgK|RqGB~kWMpJ`P*A|{@sE5` zHi&RAoHwA|_Z1lUtHtHz`@l<^0(!N8+ycE_ccQmz9&Y->@yqrgu^ki))Ta({P!~i- zMsLl^%Blx1#wP^iCp0lJFCIY&Sy#o6Ug_#$6?m`Cjt~+#sL= zgL@|!Q&uX9vazVB=mz*WQb2AaK0cn@!VfaW)6nzP8|{@YsET=Qz84Bb3Fqtx<9xT` z@4vgSu<#oE2b>Hrc6cERvpvR}3Mx*J@xuKf^N;}SYJlZnx=q`;$wI%=`15r&2fFGRz z^pA?Z%v}c+k5}=$dc5%)@Ow4jV?75}gWvBG+DN7N9rE#K<)AQRMMOlL#u$a$bqDcO zq=2{xv}c0!dVLh$=q(KfLxiHL;i|&5s>;YI5Tq#F4{v^>u%G~-Cd3S2;B{P4>iihf z;R`xEr@GEysH(58zkKc5HOhJNiiALkL?V$$Boc{4B9TZW5{X12kw~1x{{tbIGo}w8 RIu_KHjnz6eIsYbj2U%U`FJEw||LYKP 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 literal 0 HcmV?d00001 diff --git a/frontend/public/json/frameworkIntegrations.json b/frontend/public/json/frameworkIntegrations.json index 1a6ff94f2..c96c0a0b4 100644 --- a/frontend/public/json/frameworkIntegrations.json +++ b/frontend/public/json/frameworkIntegrations.json @@ -1,28 +1,4 @@ [ - { - "name": "Docker", - "slug": "docker", - "image": "Docker", - "docsLink": "https://infisical.com/docs/integrations/platforms/docker" - }, - { - "name": "Docker Compose", - "slug": "docker-compose", - "image": "Docker Compose", - "docsLink": "https://infisical.com/docs/integrations/platforms/docker-compose" - }, - { - "name": "Kubernetes", - "slug": "kubernetes", - "image": "Kubernetes", - "docsLink": "https://infisical.com/docs/integrations/platforms/kubernetes" - }, - { - "name": "Terraform", - "slug": "terraform", - "image": "Terraform", - "docsLink": "https://infisical.com/docs/integrations/frameworks/terraform" - }, { "name": "React", "slug": "react", diff --git a/frontend/public/json/infrastructureIntegrations.json b/frontend/public/json/infrastructureIntegrations.json new file mode 100644 index 000000000..657cd17eb --- /dev/null +++ b/frontend/public/json/infrastructureIntegrations.json @@ -0,0 +1,50 @@ +[ + { + "name": "Docker", + "slug": "docker", + "image": "Docker", + "docsLink": "https://infisical.com/docs/integrations/platforms/docker" + }, + { + "name": "Docker Compose", + "slug": "docker-compose", + "image": "Docker Compose", + "docsLink": "https://infisical.com/docs/integrations/platforms/docker-compose" + }, + { + "name": "Kubernetes", + "slug": "kubernetes", + "image": "Kubernetes", + "docsLink": "https://infisical.com/docs/integrations/platforms/kubernetes" + }, + { + "name": "Terraform", + "slug": "terraform", + "image": "Terraform", + "docsLink": "https://infisical.com/docs/integrations/frameworks/terraform" + }, + { + "name": "Jenkins", + "slug": "jenkins", + "image": "Jenkins", + "docsLink": "https://infisical.com/docs/integrations/cicd/jenkins" + }, + { + "name": "Infisical Agent", + "slug": "agent", + "image": "Agent", + "docsLink": "https://infisical.com/docs/integrations/platforms/infisical-agent" + }, + { + "name": "Amazon ECS", + "slug": "ecs", + "image": "ECS", + "docsLink": "https://infisical.com/docs/integrations/platforms/ecs-with-agent" + }, + { + "name": "Ansible", + "slug": "ansible", + "image": "Ansible", + "docsLink": "https://infisical.com/docs/integrations/platforms/ansible" + } +] \ No newline at end of file diff --git a/frontend/public/locales/en/translations.json b/frontend/public/locales/en/translations.json index 8b0487292..b1465f04d 100644 --- a/frontend/public/locales/en/translations.json +++ b/frontend/public/locales/en/translations.json @@ -120,7 +120,7 @@ "available": "Platform & Cloud Integrations", "available-text1": "Click on the integration you want to connect. This will let your environment variables flow automatically into selected third-party services.", "available-text2": "Note: during an integration with Heroku, for security reasons, it is impossible to maintain end-to-end encryption. In theory, this lets Infisical decrypt yor environment variables. In practice, we can assure you that this will never be done, and it allows us to protect your secrets from bad actors online. The core Infisical service will always stay end-to-end encrypted. With any questions, reach out support@infisical.com.", - "cloud-integrations": "Cloud Integrations", + "cloud-integrations": "Native Integrations", "framework-integrations": "Framework Integrations", "click-to-start": "Click on an integration to begin syncing secrets to it.", "click-to-setup": "Click on a framework to get the setup instructions.", diff --git a/frontend/src/pages/integrations/[id].tsx b/frontend/src/pages/integrations/[id].tsx index 143e3ad2f..8cc1baca3 100644 --- a/frontend/src/pages/integrations/[id].tsx +++ b/frontend/src/pages/integrations/[id].tsx @@ -1,14 +1,16 @@ import { useTranslation } from "react-i18next"; import Head from "next/head"; import frameworkIntegrationOptions from "public/json/frameworkIntegrations.json"; +import infrastructureIntegrationOptions from "public/json/infrastructureIntegrations.json"; import { IntegrationsPage } from "@app/views/IntegrationsPage"; type Props = { frameworkIntegrations: typeof frameworkIntegrationOptions; + infrastructureIntegrations: typeof infrastructureIntegrationOptions; }; -const Integration = ({ frameworkIntegrations }: Props) => { +const Integration = ({ frameworkIntegrations, infrastructureIntegrations }: Props) => { const { t } = useTranslation(); return ( @@ -20,7 +22,7 @@ const Integration = ({ frameworkIntegrations }: Props) => { - + ); }; @@ -28,7 +30,8 @@ const Integration = ({ frameworkIntegrations }: Props) => { export const getStaticProps = () => { return { props: { - frameworkIntegrations: frameworkIntegrationOptions + frameworkIntegrations: frameworkIntegrationOptions, + infrastructureIntegrations: infrastructureIntegrationOptions } }; }; diff --git a/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx b/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx index 9f51ac137..73c443ca4 100644 --- a/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx +++ b/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx @@ -21,15 +21,17 @@ import { ProjectVersion } from "@app/hooks/api/workspace/types"; import { CloudIntegrationSection } from "./components/CloudIntegrationSection"; import { FrameworkIntegrationSection } from "./components/FrameworkIntegrationSection"; +import { InfrastructureIntegrationSection } from "./components/InfrastructureIntegrationSection/InfrastructureIntegrationSection"; import { IntegrationsSection } from "./components/IntegrationsSection"; import { generateBotKey, redirectForProviderAuth } from "./IntegrationPage.utils"; type Props = { frameworkIntegrations: Array<{ name: string; slug: string; image: string; docsLink: string }>; + infrastructureIntegrations: Array<{ name: string; slug: string; image: string; docsLink: string }>; }; export const IntegrationsPage = withProjectPermission( - ({ frameworkIntegrations }: Props) => { + ({ frameworkIntegrations, infrastructureIntegrations }: Props) => { const { t } = useTranslation(); @@ -228,6 +230,7 @@ export const IntegrationsPage = withProjectPermission( + ); }, diff --git a/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx b/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx index d77b976bc..3b1df9bdd 100644 --- a/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx @@ -1,4 +1,7 @@ import { useTranslation } from "react-i18next"; +import { faKeyboard } from "@fortawesome/free-regular-svg-icons"; +import { faComputer } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; type Props = { frameworks: Array<{ @@ -50,6 +53,36 @@ export const FrameworkIntegrationSection = ({ frameworks }: Props) => { ))} + +

+ +
+ CLI +
+
+ + ); diff --git a/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/InfrastructureIntegrationSection.tsx b/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/InfrastructureIntegrationSection.tsx new file mode 100644 index 000000000..08652ff66 --- /dev/null +++ b/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/InfrastructureIntegrationSection.tsx @@ -0,0 +1,50 @@ +type Props = { + integrations: Array<{ + name: string; + image: string; + slug: string; + docsLink: string; + }>; +}; + +export const InfrastructureIntegrationSection = ({ integrations }: Props) => { + const sortedIntegrations = integrations.sort((a, b) => a.name.localeCompare(b.name)); + + return ( + <> +
+

Infrastructure Integrations

+

Click on of the integration to read the documentation.

+
+ + + ); +}; diff --git a/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/index.tsx b/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/index.tsx new file mode 100644 index 000000000..8ca5a43c7 --- /dev/null +++ b/frontend/src/views/IntegrationsPage/components/InfrastructureIntegrationSection/index.tsx @@ -0,0 +1 @@ +export { InfrastructureIntegrationSection } from "./InfrastructureIntegrationSection";