]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19899 - Onboarding Tutorial - Change TutorialSelection to new UI
authorKevin Silva <kevin.silva@sonarsource.com>
Thu, 13 Jul 2023 09:13:58 +0000 (11:13 +0200)
committersonartech <sonartech@sonarsource.com>
Thu, 13 Jul 2023 20:03:16 +0000 (20:03 +0000)
server/sonar-web/public/images/tutorials/github-actions.svg
server/sonar-web/public/images/tutorials/jenkins.svg
server/sonar-web/src/main/js/apps/tutorials/components/__tests__/TutorialsApp-test.tsx
server/sonar-web/src/main/js/components/tutorials/TutorialSelection.tsx
server/sonar-web/src/main/js/components/tutorials/TutorialSelectionRenderer.tsx
server/sonar-web/src/main/js/components/tutorials/__tests__/TutorialSelection-it.tsx
server/sonar-web/src/main/js/helpers/urls.ts
sonar-core/src/main/resources/org/sonar/l10n/core.properties

index 6f0c864641a36b49dc796676c63e86391dda75ec..97c8f324e502252f967b2b83e10f84b67ec1e51f 100644 (file)
@@ -1,16 +1,3 @@
-<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M10 1C14.9707 1 19 5.02932 19 10C19 14.9707 14.9707 19 10 19C5.02932 19 1 14.9707 1 10C1 5.02932 5.02932 1 10 1Z" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M23 19C26.3137 19 29 21.6863 29 25C29 28.3137 26.3137 31 23 31C19.6863 31 17 28.3137 17 25C17 21.6863 19.6863 19 23 19Z" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M23 35C26.3137 35 29 37.6863 29 41C29 44.3137 26.3137 47 23 47C19.6863 47 17 44.3137 17 41C17 37.6863 19.6863 35 23 35Z" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M41 35C44.3137 35 47 37.6863 47 41C47 44.3137 44.3137 47 41 47C37.6863 47 35 44.3137 35 41C35 37.6863 37.6863 35 41 35Z" stroke="#cae3f2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M25.0365 23.6069L21.9673 26.672L20.4766 25.1866" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M41 19C44.3137 19 47 21.6863 47 25C47 28.3137 44.3137 31 41 31C37.6863 31 35 28.3137 35 25C35 21.6863 37.6863 19 41 19Z" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M43.0365 23.6069L39.9673 26.672L38.4766 25.1866" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M7 6.81201C7 6.02498 7.86709 5.54641 8.533 5.9659L13.6462 9.18692C14.2715 9.58082 14.2682 10.4935 13.6402 10.8829L8.52697 14.0534C7.8608 14.4664 7 13.9873 7 13.2035V6.81201Z" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M9 19V34C9 37.866 12.1772 41 16 41H17" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M16.949 26C17.5013 26 17.949 25.5523 17.949 25C17.949 24.4477 17.5013 24 16.949 24V26ZM8 19.0352C8 22.8817 11.1183 26 14.9648 26V24C12.2228 24 10 21.7772 10 19.0352H8ZM14.9648 26H16.949V24H14.9648V26Z" fill="#236a97"/>
-<path d="M29.0547 25H34.9993" stroke="#236a97" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M21 40C21.5518 40 22 40.4482 22 41C22 41.5526 21.5518 42 21 42C20.4482 42 20 41.5526 20 41C20 40.4482 20.4482 40 21 40Z" fill="#cae3f2"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M25 40C25.5518 40 26 40.4482 26 41C26 41.5526 25.5518 42 25 42C24.4482 42 24 41.5526 24 41C24 40.4482 24.4482 40 25 40Z" fill="#cae3f2"/>
-<path d="M34.0048 41.0069L32.9922 41.0399" stroke="#cae3f2" stroke-width="2" stroke-linecap="round"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.601 -3545.014 54.017 52.551">
+  <path fill="#191717" fill-rule="evenodd" d="M-711.675-3545.014a26.975 26.975 0 0 0-8.59 52.53c1.322.165 1.817-.661 1.817-1.322v-4.625c-7.433 1.652-9.085-3.634-9.085-3.634-1.156-3.139-2.973-3.965-2.973-3.965-2.478-1.652.165-1.652.165-1.652 2.643.165 4.13 2.808 4.13 2.808 2.478 4.13 6.277 2.973 7.764 2.313a5.752 5.752 0 0 1 1.646-3.634c-5.947-.661-12.224-2.973-12.224-13.38a10.24 10.24 0 0 1 2.808-7.268 9.781 9.781 0 0 1 .33-6.938s2.313-.661 7.433 2.808a23.083 23.083 0 0 1 6.773-.826 30.4 30.4 0 0 1 6.773.826c5.121-3.469 7.433-2.808 7.433-2.808a10.343 10.343 0 0 1 .33 7.1 10.684 10.684 0 0 1 2.815 7.267c0 10.407-6.277 12.554-12.224 13.215.991.826 1.817 2.478 1.817 4.956v7.433c0 .661.5 1.487 1.817 1.322a26.976 26.976 0 0 0-8.755-52.526z"/>
+</svg>
\ No newline at end of file
index 3ffa20bced1a8175e2357562c2d0c4df3b1dee88..4a4538daf6f45f39ceefcbb00a8a3c368c335600 100644 (file)
@@ -1 +1,283 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="56" height="76"><path fill="#236A97" fill-rule="nonzero" d="M17.0487743 26.4874701c-.2633309-.4728576-1.091713.3613828-1.79162.7607377-2.0687996.6851018-3.9790932-1.532657-4.4992041-4.0925528-.3969505-1.9537243.6064908-3.6941751 1.7771685-4.1474922 2.1227488-.8219843 3.5884107-.2877 4.1680091 2.8376465 1.1349544.0049922 1.9983633-.1127172 2.3897069-.6850429-.0684018-1.529288-.7478783-2.8505691-.7226231-4.0184879.0659164-3.0482709 1.46717-5.1785694.4644218-8.35489055.0664461-.87419458 2.0685712-3.12052482 4.7722246-4.86588792 1.9747258-1.27479955 3.7726433-2.2680363 6.5660309-2.29279903 2.423728-.02148573 4.703752.44235801 8.5545414 2.25344223.9477408.4457359 2.8432176 2.82299404 4.1298563 4.4905583.0345611.08007787.014399.0857984-.192986.05719856-1.8308574-.32752321-2.8607584.55403556-2.7853569 1.76171361.9885263-.77163072 2.8770115-.60270742 4.1852372.7550201 3.0931417 2.8159886 1.0480218 16.8814333-1.4373276 20.0309168-2.0538241 3.9080016-4.3234108 5.2699709-8.6354801 6.2460792-1.8609157.2797775-3.8362101-.0940405-5.7140137-1.1865931-2.1407315-1.2455341-4.4144694-3.503981-6.0553618-6.1948739.0187808 2.0723495 3.7764384 6.0576603 5.9342381 7.2376698-.9367737.0237142-2.4691968-.3932156-3.1200741.7386627-5.9998256-.1512471-6.5604195-1.8928926-8.2563742-5.9540435-.3390647-.8119272-.7232751-1.9810477-.756441-2.6943729-.4627059-1.3040079 1.3941192-1.5492592 1.0254278-2.6826088zm1.4114021-18.4179207c-.7504505.44015027-1.1164727-.15117563-2.4875059.28615942-1.4904753.47543417-1.7618711.51125029-1.7438222.42310144 1.1400862-3.0500199 7.9781043-6.31313247 8.6498836-5.70269013h.0028816c.2534771.20019524.0555727.54255567-.3888558.69496208-.269705.09248869-1.768848 1.30622226-2.1944501 1.75372426-.4601907.48386846-.9379839 1.74136047-1.8381312 2.54474293zm-6.552946 9.7466289c-.2453848-3.0207694-.3236691-5.386481 1.5237371-6.8752622 1.8657474-1.5035618 4.4617843-2.02415494 4.5452929-1.6015585h-.0028736c.7186455 2.3687677-.3154615 4.9265824-.2585473 7.8946002.0184245.960804.6820579 2.3650825.4947415 3.0188752-.1190424.2205283-.3172893.2902448-.6567364.3431914-.1298428-2.3835495-2.5874789-4.2332759-5.6456142-2.7798461zm32.4737865 34.630842c1.0554108-3.1369598 4.2353252-11.7545206 4.0642596-13.2528985.040128-1.658918-2.5599197-2.6618238-5.334522-5.7627521-.2239439-.3911208.1247224-1.0979212.5605312-1.8527667 1.9562556-3.0924062 2.7360681-8.5637912 3.0284629-13.0388633 9.9973171 10.8607839 7.8274932 25.1614774 3.1482943 32.2027661-3.3426731.4176008-5.4734514 2.0281428-5.467026 1.7045145zm-3.9864971-16.3044329c.0779954-.1555206 1.260896-1.1362674 1.4862967-1.3212856.4301278.2716838 1.38033 1.2429404 2.383406 2.1319682 1.1109469.9846328 2.2727537 1.9048948 2.5593899 2.4582061.1526616.3031561.1526616.3088738.1238546.8408196-.836367 4.9767902-3.0647228 10.5983295-4.0252504 12.2770078-.2847638.4976759-1.1681317.5097189-2.4528022.5583352-1.1838459.0486209-1.5813443.1058206-1.9413954.2859939-.2246724.1143994-.2880451.1201171-.2880451.0200188 0-.1000938 4.6173036-7.6760398 4.8074125-8.0478265.2808776-.2329702-.8649593-1.0602052-.8785271-1.5129012.5691258-1.4867022.7019038-3.7086756.1826514-5.4432341-.6463905-2.1592441-1.4993073-1.6584963-1.9569909-2.2471022zM7.42243884 42.1312658c2.96225546-2.586478 6.14876306-4.4512718 9.48232206-5.8428294.5016567.0859968 1.2529385 1.2522493 2.1113377 2.1363665.9583995.987113 3.0928106 2.0244973 5.5447976 3.1401973 1.0727713 4.0182114 1.3969963 6.8164438 3.2692673 6.0230073.1814641-.0657785.3600511-.1201171.3888559-.1201171.4755212.2040689-1.4584967 1.587195-.8468409 2.5596351.927405.9815222 3.901969 2.1249765 6.2677861 3.2202814-4.3627853.216851-9.7240752.8353422-12.6450164 1.0381506-.3479927-.3262174-.5738478-1.5709715-.1526594-6.5864073 0-1.1983142-.5789648-1.1897309-.8007555.0142966-.3498102.8189554.7433036 5.0602025-.2010874 6.2322951-.7221824-.1516801-1.6541154-1.166919-1.9736252-.9986391-.1152167.1773168-.0057598.4747507.308206.8379585.4796679.6176388.3551967 1.0049462-.4579872 1.1296701-.6279317.1344181-.9015687.3317491-.9015687.6663639-.1395094.3793679 1.7505102-.2829514 3.5342674.2173543.2443345 2.3134203.7231506 6.0003224 1.2126529 9.7494889-.9334102.1562189-2.6924146-.144593-5.3689015-1.2736192-1.3569528-.5724096-2.9659282-1.5385969-4.7903192-2.4042461-.200343-6.1900766-1.0420005-13.0804379-3.98073156-19.7392074zm33.34942636-4.1568963c1.0761987.6798942 1.2887029 4.6628109.5588004 5.5525415-1.6636188-.111969-3.5862152-.3158021-4.634591-.6463406l.0144058-1.5100401c.2330021-.2415718.7888386-.3189489 1.4641343-.335567.1722553-.0263259.0618314-.1123771-.7209905-.256435-.3190395-.0503213-.3024234-.0644636-.5357543-.0228799-.296683.0571997-.3686937.0085833-.4464653-.2659706-.2473759-.6561483-.3081684-.5911451-.0748878-.6806605 1.7038609-1.0030418 3.0355483-2.2834828 4.3753484-1.8346478zm-5.570723 1.5515014c-2.185086.1358646-2.8748468-.4421992-3.5372803-.9069699-.1847635-.1519839-.0382396-.2665147.2881729-.1941026 1.500481.5652363 3.0031449-.2086077 5.104091-.5147882.1092616.0026072.1216968.0972554-.0086357.1887613l-1.8463479 1.4270994zm-10.7900283.366069c-.0288047.2345164-.0432083.2516741-.1584226.2516741-2.0120338-.3476962-3.7995849-1.358682-3.5745951-1.9418921.0921728-.2950715.0477019-.2362622.6610565.0114399 1.2486549.4270956 3.4091261.2227999 3.2937519.5605479l-.2217907 1.1182302zm1.5928594-1.3184178c.528331-.508549 1.3135619-.2434308 3.3405929.4603 2.1563543.7486335 2.3527608 1.4729544 3.6588196 1.62458.0561572.2824799.1364588.3496232-.1526616.5033482-.6745057.2826975-.9914879.3036775-1.4488495.4375697-.2534725.0714962-.3110842.1916133-.0662497.1429924.2794002-.0571997 1.6764011.3346103 1.8204201.5090659.0483778.1974263.0158878.6200102-.0057632 1.0124142-1.0173949.6903864-1.5958346 1.4047092-2.4893247 1.9470792-1.6727499 1.0154068-3.4106559 1.5628416-3.8879125 1.1702382-1.2952561-2.9770501-1.932367-5.7144963-.7690714-7.8075878zm8.583643 4.0925506c-.3825812 0-.5086758.0036728-.592898-.1884484l-.3086707-1.4931862c-.0375089-.2543493.0086426-.3002905.1353811-.3632124.8101859-.491804 1.505968-.2981457 1.7599291.2945727.3145116.7340378.0616898 1.7664571-.9937415 1.7502743zm2.6931749 9.5121068c-1.4713976-2.4595278-2.2944343-5.4311004-4.0585054-7.8190368l.4925506-.6492017c1.0905427.2081633 1.2475496-.429535 2.1902373-.3751193.5379942.0310551 1.0523054.9250978 2.2427228 1.0128856-.1457864 3.9609981-.3897989 6.9955018-.8670053 7.8304722zm1.6090782-7.7096341c1.3227297-.7345955 2.8101361.0347732 3.3798098 1.1032127-1.610471 2.9352215-3.4830136 5.9623388-4.3829794 6.8766044.5539163-2.3396918.9406874-5.2615781 1.0031696-7.9798171zm-10.4749847 4.7267303c.558451-2.0553211 2.0712576-2.9049145 3.9116025-4.0982773 1.4246776 1.5691577 2.6177963 4.4670215 3.8050284 7.3986337-.2971831.24412-5.4596849-1.8637622-7.7166309-3.3003564zm23.1182041 12.895413c-1.3330231.5543042-4.0072895.5021466-4.1852372.1315615.0739037-.3542844 3.1411702-.7231918 3.1396495-.8608383-.6133912-.3748428-2.7728487-.3046524-5.4785479-.077223-.270648-2.6463211-.537597-5.3210721-.9793426-6.6521858.7334235-.8522005 3.4006662-1.4868246 4.5191437-1.9646812.815803-.3485441 2.1127077-1.3390668 3.4019951.8207101.9678298 2.8423689 2.7158877 6.8163441-.4176606 8.6026567zm-9.3987815-.1401404c-.1433729-1.4407521-.5979511-4.2829396-.9707023-7.1269364.0110378-.0756541-.1462499-.1899945 1.5642693-.1007512.9756754 1.6290689 1.2601698 4.0207551 1.2412544 6.7472193-.8914739.3505799-1.4238694.4422762-1.8348214.4804683zM24.6559484 73.4016815c-1.8657839-5.9032529-3.0647183-11.7852764-3.5861148-17.6457396 4.4640711-.8617996 10.0507435-1.5304034 15.1941792-.643475.7175837 8.3497085.7617578 15.8041862 1.3480363 18.5580554-3.4600635.9393037-7.5809416 1.0867443-12.9561007-.2688408zm12.9647364-9.9096299c-.2218158-2.9470242-.3887851-5.8165669-.3226039-8.3567048.6615704-.1614876 1.3503996-.2862705 2.2747495-.1747186.5406201 2.071853.6619904 5.487357.888204 7.8893586.0043704.0464353.0030917.1411424-.0233041.1901941-1.1417039.2140125-2.6601893.5458614-2.8170455.4518707zm2.7940109 6.8009004c-.8881082.3303344-1.7105329.5320546-2.4109114.4947649-.1643206-2.1891635-.2022245-4.4026532-.2534748-5.9429278 1.1125659-.0275274 1.9020826-.6572183 1.8549904.0600654.2541758 1.6986744.8236669 3.3178768.8093958 5.3880975zm.8612375-52.6483682c-.1872274.0486197-.2073895.0657774-.2073895.1944744 0 .4575884.3312441.8751371.7949877 1.0124141.7517909.2144932 2.0422154-.1773156 2.7219934-.8179397.4176606-.4003899.4118974-.37179.0720084-.9323357-.2765209-.4518684-.8324396-1.5557987-1.4142792-2.8084481-.1296224-.2859928-.2506-.514787-.2678805-.514787-.0230438 0-.0360042.1673074-.0360042.3675006 0 .6463429.1598679 1.2855387.5861688 2.3437103.1296179.3231715.2304333.632043.2189114.6892427-.047622.3048632-1.7124007.2862909-2.4685163.4661684zm-8.8054178-.674945c-.6048834-.6291842-.7345035-.8379596-1.2068942-1.9418898-.1785871-.4146899-.5357612-1.1697088-.5357612-1.1697088-.3586149 1.3439377 1.1471681 3.4797556 1.3221155 4.0782541-.1473871.3515298-.8972714.4688277-1.686263.3515298-1.1793841-.1753364-1.6776272-.344411-1.750074-.0969969-.1583062.3134421-.1793109.5622358.0695743.8514627.5033395.584924 2.0079877.7810739 3.0671136.5706162.5009488-.0995429.7407462-.3381674 1.0283939-.5784016.4119202-.3440245.5241525-.9569113.2809826-1.3840749-.1231057-.2162525-.3522101-.4109649-.5891875-.6807908zm2.4483473 10.2070751c3.5064365.196941 5.3796962-1.1430348 7.4055398-2.3394175.0751549-.4534056.3155985-1.0462102.4608666-1.5929808.0950567-.4575862.0576094-.5290869-.7517864-1.3184268-2.0854214-2.0276848-4.3580678-5.1621667-4.6288254-6.3947939-.1719059-.8159288-.6864408-.820938-.599127-.2087743-.0130198 2.2932077 2.1214256 4.9591893 4.0786677 7.0954765.5821227.5774902.8298593 1.3924554.146903 2.2450436-1.2912055.6016759-2.579438 1.2011618-3.3412803 1.4128052-2.725544.4427795-2.5725262.0994839-3.0445949-1.5701032 0-.0085788-.0172852-.0200187-.0489669-.0200187-.2396513.1542918-.8132822 1.5595995.3226038 2.6911899zm-18.9272026-3.7121806c.5120563-3.2591491-3.2341125-4.7353352-3.8154246-2.0384129.0684612.2191362.3203958-.6146734 1.1193578-.3667876-.4047299 1.4989357-.30906 2.6578608.2144074 3.5278289.1771645.219805.0729697-1.9784269.2378166-2.4439163.2146791-.578057.6621457-.8122356 1.0242599-.5554809.3348872.2374501.7232739 1.3000631 1.2195829 1.8767688zM37.977868 29.985162c.0058957-.6745097-.0058591-1.3032075-.1008131-1.7159567-2.5228263-.0387385-5.4137344-.0493554-7.1319052-.8579772-.0777716-.0343199-.0720107-.0042895.0489646.2216437.6669865 1.320313 3.4760563 2.5471818 7.1837537 2.3522902zm-8.3186418-.5205058c.605251.5591037 1.2321735 1.5441173 1.797381 2.2164415 1.5968598 1.9539169 5.8118059 1.4710364 7.0598944.6377641.1497801-.1229782.4925506-.6005854.4925506-.6806627-4.1099886-.0213768-7.289903.2138719-8.6412433-2.3079588-.1630898-.3833694-.2429941-.3504598-.5720645-.2768302-.3105339.0694807-.2772858.2201542-.1365182.4112461zm19.8505261 24.8374977c-.7082744-.0782477-2.9402106.3236555-3.846942 1.6425538 1.1316115.177081 2.5202484-1.1793474 3.846942-1.6425538zm.879815 2.3975761c.1807562-.0576803-1.3810242-.4067458-2.5775565-.3445675-.6858425.0356393-1.3818187.3913883-1.2303536.5447597.7647057.0825235 2.1757607-.0261355 3.8079101-.2001922zm.37445 2.0334071c-1.2844649-.396648-3.5702567-.7666799-4.297579-.0858018.204348.1373155 4.7274557.2154227 4.297579.0858018zM10.00905 17.2442234c.4131133-.5564388.4900949.7719747.3360872 1.1800536-2.26958619 2.8168025-.64580712 9.8906178 4.1429491 10.7114866-.0527059 2.1839014 1.7782406 4.0514339 1.7922055 5.0245428.0131558.9233499-2.643008 1.7219601-8.20474079 5.4054705-1.01301658.6709164-2.16982393.9905273-2.26615024 2.0049455-.14060831 1.7961928 3.26377063 7.4421808 3.76758284 14.0451018-7.74279379-6.602921-13.29829129-25.1133417.43206639-38.3716008zm11.3344206 49.95143c.7744808 2.7034618 1.5656256 5.539773 2.540527 7.8562177 4.1938386 1.2252114 8.3597722 1.0468518 12.3713795.6577851 1.7400089-.2462784 2.3531033-.8003196 2.67046-1.6274548.0736981-.1920849-.1473962-.978711-.1212927-1.8530705 1.3465269-.278195 2.5070002-.3087876 2.9177925-1.6649395.3717465-1.2272791-1.1306023-4.8176195-.5932976-6.1483841.7907772-.1828803 1.3238805-.563613 1.2385829-1.3870664.8995479-.5029854 2.2333473-.6780895 3.8107871-.6692205.1209867.2266949.2695702.4509186.4522262.6720862.1785871.2059143.1872274.2087754.679778.2945727 1.5064589.2573964 2.3908406.2226684 4.2313293.0142965 2.9667936-.3240363 3.6401873-5.0599803 2.8055191-7.278503-.4205377-1.4499839-.9678207-2.9257087-1.376841-3.7121852-.6888338-1.1635772-1.1668804-1.1161126-1.3509111-1.3699042 6.1624679-10.1759497 5.1983554-25.3322172-5.0119272-34.8939595-.1491178-6.56000758-2.9313374-10.88118462-8.5286046-14.55627608-3.0926211-2.03057428-12.370489-2.17915292-16.7556673.40250145-3.8552272 2.07365627-7.4997837 3.46897675-8.5519475 7.22703241-2.0096215 1.14435482-2.545466 3.32852382-2.6701461 5.80279012-13.67288175 11.6898471-13.14913114 31.9336859-.34277054 43.1705844.19339699 2.1792606-.08949447 4.8812579.69418034 5.3966763 1.3862439.792693 2.8089087 1.2135222 3.9831199 1.8179844 1.9821925 1.020399 3.7363561 1.9764568 6.9077238 1.8484365zm7.9065686-56.6769982c.2992861-.1857233.3606471-1.38743884-1.4839585-1.54769376-.5022504-.04363432-1.4704433.40739137-2.2695867 1.07719506-.9602103.8048006-1.3603391 1.5809877-1.5712519 2.2658242-.0901726.2927942-.1088871.5476445-.0862246.748247.0238726.2113237.2608089.4837171.3231587.4775267.457599-.0454344.9477407-3.6401765 5.087863-3.0210992zm9.4623346 17.6904915c-.043206.0714985-.0518462 1.2183285-.0086449 1.4757226.0288071.1773168.0374473.1801733.2304333.1801733 2.3590241-.1859341 3.7712802-1.9131607 4.6201829-3.6149456-4.1535211 2.3084802-4.3352318 1.6143485-4.8419713 1.9590497zm-1.955767 17.3298377c0-.4171746-.4541626-.6793274-.8155312-.4707378-.3613687.2085896-.3613664.7328906 0 .9414802.3613686.2085895.8155312-.0535633.8155312-.4707424zm.5558502 2.590917c0-.4113662-.4514727-.6698689-.8107019-.4641858-.3592291.2056831-.3592291.722684 0 .9283671.3592292.2056831.8107019-.0528151.8107019-.4641813z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   width="226"
+   height="312"
+   xml:space="preserve"
+   sodipodi:docname="logo.svg"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs6"><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath18"><path
+         d="M 0,2494.84 0,0 l 1804.34,0 0,2494.84 -1804.34,0 z"
+         id="path20"
+         inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1500"
+     inkscape:window-height="844"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="-65.859116"
+     inkscape:cy="172.53076"
+     inkscape:window-x="2189"
+     inkscape:window-y="496"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="g10" /><g
+     id="g10"
+     inkscape:groupmode="layer"
+     inkscape:label="ink_ext_XXXXXX"
+     transform="matrix(1.25,0,0,-1.25,0,312)"><g
+       id="g3393"><path
+         d="m 177.718,129.264 c 0,-49.4288 -39.175,-89.4992 -87.5,-89.4992 -48.3242,0 -87.49925,40.0704 -87.49925,89.4992 0,49.43 39.17505,89.501 87.49925,89.501 48.325,0 87.5,-40.071 87.5,-89.501"
+         style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path22"
+         inkscape:connector-curvature="0" /><path
+         d="m 6.28438,107.098 c 0,0 -6.33438,93.333 79.66602,96 l -5.9996,10 -46.6664,-15.667 -13.3336,-15.333 -11.66642,-22.334 -6.66719,-26 2,-17.333"
+         style="fill:#ef3d3a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path24"
+         inkscape:connector-curvature="0" /><path
+         d="M 30.2883,190.319 C 14.9363,174.611 5.43633,152.923 5.43633,128.93 l 0,0 c 0,-23.988 9.49997,-45.6788 24.85197,-61.3839 l 0,0 C 45.6477,51.841 66.8152,42.15 90.2168,42.15 l 0,0 c 23.4022,0 44.5712,9.691 59.9292,25.3961 l 0,0 c 15.351,15.7051 24.853,37.3959 24.853,61.3839 l 0,0 c 0,23.993 -9.502,45.681 -24.853,61.389 l 0,0 c -15.358,15.702 -36.527,25.393 -59.9292,25.395 l 0,0 C 66.8152,215.712 45.6477,206.021 30.2883,190.319 l 0,0 z M 26.4023,63.7469 C 10.0867,80.4328 0,103.493 0,128.93 l 0,0 c 0,25.441 10.0867,48.499 26.4023,65.186 l 0,0 c 16.3118,16.69 38.8915,27.035 63.8145,27.032 l 0,0 c 24.9232,0.003 47.5052,-10.342 63.8142,-27.032 l 0,0 c 16.317,-16.687 26.405,-39.747 26.403,-65.186 l 0,0 c 0.002,-25.437 -10.086,-48.4972 -26.403,-65.1831 l 0,0 C 137.722,47.0578 115.14,36.7141 90.2168,36.7141 l 0,0 c -24.923,0 -47.5027,10.3437 -63.8145,27.0328 l 0,0"
+         style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path26"
+         inkscape:connector-curvature="0" /><path
+         d="m 127.051,128.768 -13.334,-2 -18.0002,-2 -11.6672,-0.333 -11.3328,0.333 -8.6672,2.667 -7.6668,8.333 -6,17 -1.3332,3.667 -8,2.666 -4.6668,7.667 -3.3332,11 3.6672,9.667 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1.3328,1.666 -1.3328,7.667 -0.334,9.667 2,13.333 -0.0781,7.616 6.0781,9.717 10.6668,7.667 18.6672,8 20.6662,-3 18,-13 8.334,-13.333 5.333,-9.667 1.333,-24 -4,-20.667 -7.333,-18.333 -7,-9.667"
+         style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path28"
+         inkscape:connector-curvature="0" /><path
+         d="m 115.717,71.102 -47.6674,-2 0,-8 4,-28 -2,-2.334 -33.3328,11.334 -2.334,4 -3.3332,37.666 -7.6656,22.667 -1.6672,5.333 26.666,18.333 8.334,3.334 7.3328,-9 6.3332,-5.667 7.334,-2.333 3.3328,-1 4,-17.333 3,-3.6668 7.6672,2.6668 -5.334,-10.334 29.0002,-13.666 -3.666,-2"
+         style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path30"
+         inkscape:connector-curvature="0" /><path
+         d="m 36.7168,187.435 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1,4 -2,7.666 2,18.334 -1.6672,10 6,7 13,10.333 -3.6668,5 -18.3332,-9 -7.6668,-6 -4.3332,-9.333 -6.6668,-9 -2,-10.667 1.334,-11.333"
+         style="fill:#6d6b6d;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path32"
+         inkscape:connector-curvature="0" /><path
+         d="m 50.3828,218.768 c 0,0 5,12.333 25,18.333 20,6 1,4.334 1,4.334 l -21.666,-8.334 -8.334,-8.333 -3.666,-6.667 7.666,0.667"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path34"
+         inkscape:connector-curvature="0" /><path
+         d="m 40.3828,189.768 c 0,0 -7,23.334 19.6668,26.667 l -1,4 -18.3328,-4.334 -5.334,-17.333 1.334,-11.333 3.666,2.333"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path36"
+         inkscape:connector-curvature="0" /><path
+         d="m 51.0496,158.768 4.3645,4.229 c 0,0 1.9699,-0.229 2.3027,-2.562 0.3328,-2.334 1.3328,-23.334 15.666,-34.668 1.3074,-1.034 -10.666,1.668 -10.666,1.668 l -10.6672,16.666"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path38"
+         inkscape:connector-curvature="0" /><path
+         d="m 112.385,165.101 c 0,0 0.777,10.104 3.498,9.327 2.721,-0.777 2.721,-3.498 2.721,-3.498 0,0 -6.608,-4.275 -6.219,-5.829"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path40"
+         inkscape:connector-curvature="0" /><path
+         d="m 140.05,202.101 c 0,0 -5.494,-1.16 -6,-6 -0.506,-4.841 6,-1 7,-0.667"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path42"
+         inkscape:connector-curvature="0" /><path
+         d="m 99.7168,201.767 c 0,0 -7.334,-1 -7.334,-5.666 0,-4.667 8.3342,-4.334 10.6672,-2.334"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path44"
+         inkscape:connector-curvature="0" /><path
+         d="m 54.3828,180.101 c 0,0 -12.6672,7.667 -14,0.333 -1.3332,-7.333 -4.334,-12.667 2,-20.333 l -4.3332,1.333 -4,10.333 -1.3328,10 7.666,8.001 8.6668,-0.667 5,-4 0.3332,-5"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path46"
+         inkscape:connector-curvature="0" /><path
+         d="m 60.3828,201.101 c 0,0 5.6668,29.333 34.334,35 23.6012,4.665 35.9992,-1 40.6662,-6.333 0,0 -21,24.999 -41.0002,17.333 -20,-7.667 -34.666,-21.667 -34.3332,-30.666 0.5676,-15.328 0.3332,-15.334 0.3332,-15.334"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path48"
+         inkscape:connector-curvature="0" /><path
+         d="m 137.717,226.435 c 0,0 -9.666,0.333 -10,-8.334 0,0 -0.001,-1.333 0.666,-2.666 0,0 7.668,8.667 12.334,4"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path50"
+         inkscape:connector-curvature="0" /><path
+         d="m 95.3887,214.532 c 0,0 -1.6641,13.303 -13.0059,5.569 -7.3332,-5 -6.666,-12 -5.3332,-13.333 1.3332,-1.334 0.9707,-4.019 1.9856,-2.176 1.0144,1.843 0.6804,7.843 4.3476,9.509 3.6668,1.667 9.6777,3.529 12.0059,0.431"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path52"
+         inkscape:connector-curvature="0" /><path
+         d="m 64.0496,124.435 -31.3328,-14 c 0,0 13,-51.667 6.3328,-67.667 l -4.6668,1.666 -0.3332,19.6672 -8.6656,37.3328 -3.6672,10.334 32.666,21.999 9.6668,-9.332"
+         style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path54"
+         inkscape:connector-curvature="0" /><path
+         d="m 67.2715,95.8578 4.4453,-5.4238 0,-20 -5.334,0 c 0,0 -0.666,14 -0.666,15.6672 0,1.6668 0.666,7.6668 0.666,7.6668"
+         style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path56"
+         inkscape:connector-curvature="0" /><path
+         d="m 67.3828,67.434 -15,-0.666 4.334,-3 10.666,-1.6668"
+         style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path58"
+         inkscape:connector-curvature="0" /><path
+         d="m 118.717,70.768 12.333,0.3332 3,-30.6672 -12.667,-1.666 -2.666,32"
+         style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path60"
+         inkscape:connector-curvature="0" /><path
+         d="m 122.05,70.768 18.667,1 c 0,0 7.666,19.3332 7.666,20.3332 0,1 6.667,27.9998 6.667,27.9998 l -15,15.666 -3,2.667 -8,-8 0,-31 -7,-28.666"
+         style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path62"
+         inkscape:connector-curvature="0" /><path
+         d="m 130.383,73.1012 -11.666,-2.3332 1.666,-9.334 c 4.333,-2 11.667,3.334 11.667,3.334"
+         style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path64"
+         inkscape:connector-curvature="0" /><path
+         d="m 130.717,131.434 23.333,-17.333 0.667,8 -17.667,16.333 -6.333,-7"
+         style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path66"
+         inkscape:connector-curvature="0" /><path
+         d="M 78.9508,5.09805 72.0496,33.102 68.6172,53.7648 68.0496,69.102 l 31.2348,1.6628 19.4326,0.0032 -1.767,-35.0032 3,-26.99996 -0.333,-5 -25.3326,-2 -15.3336,3.33321"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path68"
+         inkscape:connector-curvature="0" /><path
+         d="m 114.383,71.1012 c 0,0 -1.666,-34.6672 3.334,-59.3332 0,0 -10,-6.33402 -24.6674,-8.00003 l 28.0004,1 3.333,2 -4,54.66603 -1,11.668"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path70"
+         inkscape:connector-curvature="0" /><path
+         d="m 134.618,43.098 13,3.6668 24.666,1.3332 3.667,11.3329 -6.667,19.6671 -7.666,1 -10.667,-3.3332 -10.234,-4.9968 -5.433,0.9968 -4.234,-1.6636"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path72"
+         inkscape:connector-curvature="0" /><path
+         d="m 134.383,49.768 c 0,0 8.666,3.9992 10,3.666 l -3.666,18.334 4.333,1.666 c 0,0 3,-17.3328 3,-19.3328 0,0 18.666,-1 20.333,-1 0,0 4,7.6668 3,15.6668 l 3.667,-10.6668 0.333,-6 -5.333,-8 -6,-1.3332 -10,0.3332 -3.333,4.3328 -11.667,-1.666 -3.667,-1.334"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path74"
+         inkscape:connector-curvature="0" /><path
+         d="m 121.284,73.4309 -7.333,18.6671 -7.667,11 c 0,0 1.666,4.667 4,4.667 2.334,0 7.667,0 7.667,0 l 7.333,-2.667 -0.666,-12.3332 -3.334,-19.3339"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path76"
+         inkscape:connector-curvature="0" /><path
+         d="m 122.717,79.768 c 0,0 -9.334,17.9992 -9.334,20.666 0,0 1.666,4 4,3 2.334,-1 7.334,-3.666 7.334,-3.666 l 0,6.333 -11.334,2.334 -7.666,-1 13,-30.667 2.666,-0.334"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path78"
+         inkscape:connector-curvature="0" /><path
+         d="m 81.9512,123.764 -9.2344,1.004 -8.6672,2.667 0,-3 4.2348,-4.67 13.3332,-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path80"
+         inkscape:connector-curvature="0" /><path
+         d="m 67.0508,122.765 c 0,0 10.334,-4.334 13.6672,-3.334 l 0.3316,-3.996 -9.3316,1.996 -5.6672,4 1,1.334"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path82"
+         inkscape:connector-curvature="0" /><path
+         d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854"
+         style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path84"
+         inkscape:connector-curvature="0" /><path
+         d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854 z"
+         style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="path86"
+         inkscape:connector-curvature="0" /><path
+         d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846"
+         style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path88"
+         inkscape:connector-curvature="0" /><path
+         d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846 z"
+         style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="path90"
+         inkscape:connector-curvature="0" /><path
+         d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072"
+         style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path92"
+         inkscape:connector-curvature="0" /><path
+         d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072 z"
+         style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="path94"
+         inkscape:connector-curvature="0" /><path
+         d="m 121.617,107.431 c 0,0 -2.334,3.334 -0.667,4.334 1.667,1 3.334,-0.001 4.334,1.666 1,1.667 0,2.667 0.333,4.667 0.333,2 2.001,2.334 3.667,2.667 1.666,0.333 6.334,1 7,-0.667 l -2,6 -4,1.333 -12.667,-7.333 -0.667,-3.667 0,-7.333"
+         style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path96"
+         inkscape:connector-curvature="0" /><path
+         d="m 86.6172,96.4309 c -0.4004,5.2021 -0.8242,10.3971 -1.2957,15.5941 -0.7055,7.76 1.864,6.406 8.5906,6.406 1.0274,0 6.3259,-1.225 6.7049,-2 1.818,-3.713 -3.04,-2.888 2.094,-5.688 4.334,-2.363 11.99,1.435 10.239,6.688 -0.98,1.168 -5.106,0.364 -6.585,1.131 -2.604,1.35 -5.208,2.7 -7.8123,4.05 -3.3132,1.719 -10.9707,4.225 -14.5031,1.823 -8.9504,-6.087 0.5649,-21.296 3.7578,-27.6459"
+         style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path98"
+         inkscape:connector-curvature="0" /><path
+         d="m 95.3887,214.532 c -9.0852,2.116 -13.5996,-3.802 -16.3535,-9.94 -2.459,0.596 -1.4805,3.94 -0.8594,5.644 1.6262,4.472 8.1797,10.425 13.5344,9.618 2.3043,-0.347 5.4226,-2.454 3.6785,-5.322"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path100"
+         inkscape:connector-curvature="0" /><path
+         d="m 139.655,204.186 c 0.143,-0.006 0.288,-0.011 0.431,-0.017 2.053,-4.265 3.83,-8.783 6.42,-12.548 -1.735,-4.041 -13.138,-7.617 -12.962,-0.361 2.466,1.078 6.723,0.22 8.909,1.597 -1.264,3.469 -3.088,6.422 -2.798,11.329"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path102"
+         inkscape:connector-curvature="0" /><path
+         d="m 100.04,204.075 c 1.948,-3.571 2.582,-7.323 5.351,-10.022 1.247,-1.215 3.672,-2.696 2.47,-6.075 -0.281,-0.797 -2.334,-2.574 -3.519,-2.923 -4.329,-1.278 -14.4162,-0.264 -11.0002,5.133 3.5801,-0.167 8.3922,-2.325 11.0682,0.274 -2.055,3.285 -5.7186,9.784 -4.37,13.613"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path104"
+         inkscape:connector-curvature="0" /><path
+         d="m 138.03,167.781 c -6.518,-4.187 -13.786,-8.74 -24.466,-7.684 -2.282,1.984 -3.152,6.399 -0.935,9.315 1.154,-1.984 0.429,-5.633 3.645,-6.182 6.06,-1.037 13.113,3.707 17.472,5.365 2.703,4.557 -0.233,6.233 -2.668,9.166 -4.985,6.009 -11.672,13.457 -11.429,22.453 2.015,1.461 2.189,-2.23 2.478,-2.902 2.603,-6.092 9.154,-13.883 13.935,-19.097 1.174,-1.284 3.107,-2.516 3.322,-3.365 0.62,-2.469 -1.613,-5.427 -1.354,-7.069"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path106"
+         inkscape:connector-curvature="0" /><path
+         d="m 52.1016,172.189 c -2.043,1.166 -2.5293,6.302 -4.9278,6.448 -3.4277,0.208 -2.8027,-6.663 -2.789,-10.681 -2.3594,2.142 -2.7743,8.737 -1.041,12.124 -1.9754,0.97 -2.8575,-1.07 -3.9532,-1.789 1.4082,10.23 14.9649,4.745 12.711,-6.102"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path108"
+         inkscape:connector-curvature="0" /><path
+         d="m 142.18,163.521 c -3.034,-5.775 -7.326,-12.135 -16.229,-12.32 -0.181,1.865 -0.32,4.703 0.01,5.826 6.806,0.654 11.008,4.118 16.219,6.494"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path110"
+         inkscape:connector-curvature="0" /><path
+         d="m 99.5266,159.777 c 5.6784,-2.986 16.1144,-3.307 23.8324,-3.081 0.414,-1.691 0.404,-3.78 0.42,-5.842 -9.921,-0.495 -21.651,1.96 -24.2524,8.923"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path112"
+         inkscape:connector-curvature="0" /><path
+         d="m 98.4473,154.209 c 3.9267,-9.859 17.4227,-8.724 28.8037,-8.452 -0.501,-1.28 -1.587,-2.792 -2.937,-3.339 -3.647,-1.484 -13.706,-2.61 -18.769,0.079 -3.211,1.707 -5.274,5.564 -7.0333,7.825 -0.8496,1.092 -5.0801,3.881 -0.0644,3.887"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path114"
+         inkscape:connector-curvature="0" /><path
+         d="m 137.556,99.8262 c -4.608,-7.8922 -9.017,-15.9981 -14.484,-22.9594 2.292,6.7391 3.273,18.0184 3.619,26.6172 4.795,2.244 8.901,-0.505 10.865,-3.6578"
+         style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path116"
+         inkscape:connector-curvature="0" /><path
+         d="m 162.352,71.4609 c -5.159,-1.0328 -8.784,-6.0468 -13.817,-5.725 2.766,3.8993 7.613,5.543 13.817,5.725"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path118"
+         inkscape:connector-curvature="0" /><path
+         d="m 164.628,63.3871 c -4.205,-0.4441 -9.144,-1.125 -13.409,-0.7742 2.019,3.084 9.798,2.0199 13.409,0.7742"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path120"
+         inkscape:connector-curvature="0" /><path
+         d="m 166.085,56.4262 c -4.726,-0.1024 -10.6,-0.0082 -15.092,0.3687 2.657,2.8539 12.027,1.059 15.092,-0.3687"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path122"
+         inkscape:connector-curvature="0" /><path
+         d="m 128.664,37.377 c 0.678,-5.9352 3.031,-11.9489 2.736,-18.4489 -2.613,-0.8812 -4.114,-1.6519 -7.615,-1.6472 -0.247,5.5242 -0.986,13.9691 -0.765,19.2351 1.722,-0.114 4.261,1.2301 5.644,0.861"
+         style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path124"
+         inkscape:connector-curvature="0" /><path
+         d="m 121.045,124.849 c -2.373,-1.549 -4.394,-3.483 -6.673,-5.137 -5.054,-0.25 -7.812,0.35 -11.525,3.252 0.061,0.233 0.434,0.129 0.448,0.415 5.41,-2.411 12.287,0.982 17.75,1.47"
+         style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path126"
+         inkscape:connector-curvature="0" /><path
+         d="m 92.6445,87.9711 c 1.4864,6.441 7.3106,9.7769 12.5995,13.3239 5.459,-6.9282 8.779,-15.838 12.435,-24.436 -8.638,2.6039 -17.464,6.8289 -25.0345,11.1121"
+         style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path128"
+         inkscape:connector-curvature="0" /><path
+         d="m 123.02,36.516 c -0.221,-5.266 0.518,-13.7109 0.765,-19.2351 3.501,-0.0047 5.002,0.766 7.615,1.6472 0.295,6.5 -2.058,12.5137 -2.736,18.4489 -1.383,0.3691 -3.922,-0.975 -5.644,-0.861 z M 68.5059,66.4648 C 70.8145,45.2418 74.1582,27.4012 80.291,8.60781 93.9023,4.475 110.311,4.11484 122.342,7.84414 120.133,18.4512 121.098,31.3648 119.807,42.684 c -0.973,8.5078 -0.477,17.068 -1.811,25.748 -14.578,3.0328 -35.1835,0.709 -49.4901,-1.9672 z m 52.9371,1.834 c -0.123,-9.1148 0.408,-18.1058 1.104,-27.232 3.5,0.5254 5.875,0.8762 9.127,1.5891 -1.056,8.7859 -0.926,18.6722 -3.077,26.4441 -2.486,-0.0238 -4.675,0.0289 -7.154,-0.8012 z m 17.755,1.4692 c -1.661,0.3808 -3.595,0.0148 -5.182,-0.016 0.746,-7.4301 2.556,-15.629 3.193,-23.4282 2.497,-0.0777 3.831,1.1 5.885,1.4961 0.11,6.8461 -0.598,16.2781 -3.896,21.9481 z m 26.884,-24.5629 c 5.205,1.264 8.478,7.639 7.022,14.1859 -0.977,4.4 -2.717,12.6852 -4.579,15.5 -1.376,2.082 -5.107,4.8078 -8.086,2.9 -4.846,-3.1031 -13.383,-4.0039 -16.917,-7.7601 1.772,-5.9 2.322,-14.0039 3.053,-21.4797 6.054,-0.3774 13.503,1.666 18.538,-0.5024 -3.515,-1.1386 -8.076,-1.1476 -11.113,-2.807 2.482,-1.1988 8.293,-0.9566 12.082,-0.0367 z M 117.679,76.859 c -3.656,8.598 -6.976,17.5078 -12.435,24.436 C 99.9551,97.748 94.1309,94.4121 92.6445,87.9711 100.215,83.6879 109.041,79.4629 117.679,76.859 z m 9.012,26.625 c -0.346,-8.5988 -1.327,-19.8781 -3.619,-26.6172 5.467,6.9613 9.876,15.0672 14.484,22.9594 -1.964,3.1528 -6.07,5.9018 -10.865,3.6578 z m -10.216,3.63 c -2.071,0.223 -3.829,-2.381 -6.522,-1.255 -0.617,-0.682 -1.178,-1.421 -1.807,-2.087 5.948,-7.1681 8.651,-17.338 13.245,-25.7618 2.465,8.0918 2.181,16.957 2.724,25.7888 -3.387,-0.215 -5.266,3.063 -7.64,3.315 z m -6.569,8.67 c -0.221,-2.455 0.35,-3.258 0.844,-6.072 8.07,-2.523 6.661,11.076 -0.844,6.072 z m -8.949,2.938 c -3.4773,1.9 -8.7011,3.969 -13.1925,4.826 -5.5672,1.065 -5.0457,-7.594 -4.8094,-12.76 0.1855,-4.09 2.3125,-8.415 3.2363,-11.1321 0.4336,-1.2688 0.5313,-2.6149 1.616,-2.8668 1.9172,-0.4469 8.2414,2.082 10.0434,3.0648 3.8112,2.0781 6.7682,5.3781 10.0052,7.5941 0.042,1.078 0.083,2.155 0.126,3.233 -1.946,0.97 -4.195,1.658 -7.052,1.783 1.938,0.975 4.789,0.961 6.555,2.121 0.017,0.432 0.035,0.863 0.05,1.291 -3.224,0.248 -4.453,1.684 -6.578,2.846 z m -33.2136,6.033 c -2.886,-2.93 8.0945,-6.924 11.5906,-7.139 -0.0195,1.854 1.0566,3.602 0.8398,4.932 -4.1523,0.729 -9.6093,0.248 -12.4304,2.207 z m 35.5516,-1.376 c -0.014,-0.286 -0.387,-0.182 -0.448,-0.415 3.713,-2.902 6.471,-3.502 11.525,-3.252 2.279,1.654 4.3,3.588 6.673,5.137 -5.463,-0.488 -12.34,-3.881 -17.75,-1.47 z m 32.632,-9.895 c -0.156,3.255 -1.011,9.949 -3.023,11.121 -4.223,2.465 -11.73,-4.977 -14.91,-6.112 0.346,-0.996 0.917,-1.785 0.961,-3.058 1.881,0.463 4.171,0.146 5.801,-0.655 -1.885,-0.211 -3.975,-0.197 -5.222,-1.095 -0.457,-1.321 0.112,-3.121 -0.192,-4.955 4.474,-1.262 9.584,-1.934 15.24,-2.1 1.1,1.43 1.475,4.154 1.345,6.854 z m -73.0422,8.437 c -0.9063,0.646 -7.0371,8.623 -7.877,8.292 C 43.9141,125.838 33.541,118.273 24.2715,111.118 33.1094,92.1539 36.677,68.9199 37.3074,46.5262 47.4316,41.791 56.3242,34.9648 70.0625,34.252 68.4727,45.5 67.0215,55.5352 66.1191,66.125 c -3.4519,1.4551 -8.4043,-0.066 -11.6347,0.4512 -0.0274,3.8929 4.9336,1.7047 5.3468,4.3226 0.3114,1.9801 -2.7296,2.1301 -1.7394,5.2481 2.5254,-0.918 3.8516,-2.9457 6.5449,-3.7071 2.461,5.384 -0.0344,14.9102 0.3203,19.4102 0.0672,0.8449 0.4219,4.6809 2.3145,4.0078 1.675,-0.5957 -0.0957,-10.2019 0.0879,-14.4609 0.1672,-3.9239 -0.4739,-7.7207 1.1152,-10.184 13.2754,1.807 26.7656,2.975 41.1294,3.3691 -3.16,1.3559 -6.914,2.6391 -11.0298,4.959 -2.2312,1.2578 -9.2644,3.875 -9.9082,5.9942 -1.0273,3.3769 2.6953,5.1757 3.332,8.0707 -6.7011,-3.6547 -8.0085,3.5031 -9.5937,8.5741 -1.4363,4.593 -2.2539,8.024 -2.6063,10.673 -5.7726,2.752 -11.9445,5.539 -16.9132,9.068 z m 67.1792,7.327 c 9.243,4.482 10.909,-16.751 7.286,-23.591 0.56,-2.04 2.486,-2.821 3.272,-4.655 -5.158,-9.2399 -10.887,-17.8649 -16.15,-26.9961 3.915,2.4371 9.507,0.4359 14.114,2.2601 1.684,0.666 2.903,4.5211 4.178,7.6051 3.507,8.4848 7.189,19.1819 8.827,27.2789 0.37,1.845 1.378,5.865 1.152,7.507 -0.403,2.94 -4.392,5.12 -6.421,6.938 -3.738,3.358 -6.092,6.313 -9.991,9.453 -1.581,-2.334 -4.974,-3.902 -6.267,-5.8 z m -88.3179,81.968 c -4.4043,-4.846 -3.4824,-13.926 -2.9492,-20.386 7.9609,5.008 18.5273,-0.396 18.4277,-8.914 3.8008,0.101 1.4199,4.747 0.7324,7.74 -2.2468,9.776 3.7852,20.397 0.2735,29.337 -6.8184,-0.517 -12.42,-3.302 -16.4844,-7.777 z m 31.5137,28.126 c -9.9707,-2.826 -22.7493,-10.071 -26.8465,-19.028 3.1726,0.461 5.375,2.061 8.5047,2.259 1.1828,0.077 2.7324,-0.496 4.0918,-0.158 2.709,0.672 4.9953,6.746 7.039,9.006 1.9922,2.207 4.3867,3.15 6.0254,5.162 1.0528,0.508 2.6094,0.473 2.6692,2.054 -0.4563,0.488 -0.9368,0.86 -1.4836,0.705 z m 51.9032,-2.658 c -10.349,5.839 -27.8661,10.231 -38.8747,4.743 -8.8828,-4.429 -20.8899,-11.757 -24.9836,-21.043 3.8242,-8.961 -1.1328,-17.172 -1.4492,-26.27 -0.168,-4.841 2.2793,-9.067 2.4668,-14.337 -1.3086,-2.159 -5.3067,-2.425 -8.0743,-2.277 -0.9316,4.662 -2.5625,9.902 -7.3632,10.428 -6.793,0.743 -11.7598,-4.879 -12.0684,-10.754 -0.3652,-6.909 5.3066,-18.36 13.3457,-17.565 3.1055,0.307 3.8684,3.42 7.252,3.388 1.8339,-3.659 -2.8289,-4.808 -3.3086,-7.425 -0.125,-0.676 0.3867,-3.318 0.6843,-4.557 1.4602,-6.033 4.7153,-13.841 7.9192,-18.434 4.0664,-5.826 12.0555,-6.704 20.6504,-7.275 1.5351,3.307 7.1902,3.035 10.875,2.17 -4.416,1.749 -8.5215,5.989 -11.9239,9.742 -3.9082,4.306 -7.8671,8.925 -8.0671,14.553 7.3855,-10.246 13.4871,-19.194 26.9168,-23.701 10.1618,-3.408 22.0298,1.562 29.8378,7.045 3.24,2.279 5.174,5.895 7.477,9.205 8.617,12.395 12.638,30.087 11.754,47.235 -0.364,7.072 -0.348,14.12 -2.721,18.878 -2.48,4.975 -10.868,9.426 -15.778,4.926 -0.91,4.838 4.083,7.83 9.948,6.089 -4.182,5.397 -8.571,11.882 -14.515,15.236 z M 144.444,77.1168 c 8.087,4.0203 23.197,10.8211 28.267,-0.0148 1.871,-3.9942 4.066,-10.7461 5.035,-14.8692 1.369,-5.8168 -1.484,-18.043 -7.463,-19.9949 -5.281,-1.7238 -11.443,-1.6188 -17.804,-0.341 -0.749,0.623 -1.583,1.709 -2.166,2.841 -4.542,0.1762 -8.795,-0.2438 -12.383,-2.1109 0.34,-3.359 -1.932,-3.8981 -4.062,-4.5899 -1.579,-6.2609 3.159,-14.4371 2.025,-20.1461 -0.809,-4.0672 -5.813,-4.6961 -9.491,-5.457 -0.12,-2.2602 0.161,-4.14689 0.412,-6.059 -0.841,-3.09883 -4.613,-4.86289 -8.187,-5.29492 -11.759,-1.414064 -29.6133,-2.049221 -40.9239,2.01797 -3.1562,7.74175 -5.6426,17.15785 -8.2715,25.99805 -11.0312,-1.1781 -19.9531,4.7598 -28.364,8.65 -2.9121,1.35 -6.9406,2.0937 -8.0285,4.4117 -1.0547,2.2442 -0.6231,6.5453 -0.8848,10.6082 -0.666,10.377 -1.2363,20.386 -3.9766,31.011 -1.2304,4.7679 -3.375,8.975 -4.8711,13.5691 -1.3828,4.2579 -3.7988,9.5199 -4.4289,13.7659 -0.9343,6.293 4.9914,6.643 8.7805,9.37 5.8574,4.217 10.4551,6.549 16.7988,10.355 1.8789,1.127 7.545,3.98 8.1895,5.294 1.2812,2.605 -2.1992,6.278 -3.1297,8.32 -1.4719,3.229 -2.2395,5.972 -2.4504,9.158 -5.3215,0.841 -9.3555,4.008 -11.7922,7.579 -4.0308,5.91 -6.8262,16.844 -3.3387,25.161 0.2735,0.655 1.6375,1.943 1.8387,2.949 0.3969,1.981 -0.7469,4.615 -0.818,6.722 -0.3664,10.81 1.829,20.124 9.1063,23.384 2.9543,11.769 13.5281,15.682 23.4902,21.531 3.7239,2.186 7.8289,3.583 12.0684,5.143 15.2082,5.597 38.5419,4.543 51.1639,-5.003 5.352,-4.048 13.907,-12.595 16.967,-18.783 8.082,-16.337 7.508,-43.64 1.855,-63.513 -0.76,-2.668 -1.862,-6.59 -3.401,-9.795 -1.073,-2.238 -4.408,-6.716 -4.003,-8.692 0.417,-2.043 7.604,-7.5 9.145,-8.986 2.775,-2.677 8.047,-6.23 8.474,-9.608 0.459,-3.595 -1.584,-8.513 -2.619,-11.982 -3.46,-11.5769 -6.836,-22.2781 -10.759,-32.5992"
+         style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path130"
+         inkscape:connector-curvature="0" /><path
+         d="m 90.491,157.255 c 0.4387,0.584 2.8508,1.471 6.2258,-0.154 0,0 -4,-0.667 -3.6672,-7.336 l -1.6668,0.334 c 0,0 -1.7226,6.047 -0.8918,7.156"
+         style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path132"
+         inkscape:connector-curvature="0" /><path
+         d="m 119.717,99.934 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.012 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.822 1.834,-1.834"
+         style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path134"
+         inkscape:connector-curvature="0" /><path
+         d="m 121.55,91.434 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.0121 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.8219 1.834,-1.834"
+         style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path136"
+         inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
index 2129f201339a14546df291526b91f4a652a94e82..ad5c80cb80d5038e06449795f4fb8a4a88978c78 100644 (file)
@@ -21,7 +21,7 @@ import SettingsServiceMock from '../../../../api/mocks/SettingsServiceMock';
 import UserTokensMock from '../../../../api/mocks/UserTokensMock';
 import handleRequiredAuthentication from '../../../../helpers/handleRequiredAuthentication';
 import { mockCurrentUser, mockLoggedInUser } from '../../../../helpers/testMocks';
-import { renderAppRoutes } from '../../../../helpers/testReactTestingUtils';
+import { renderAppWithComponentContext } from '../../../../helpers/testReactTestingUtils';
 import { byLabelText, byRole } from '../../../../helpers/testSelector';
 import { Permissions } from '../../../../types/permissions';
 import routes from '../../routes';
@@ -47,7 +47,7 @@ beforeEach(jest.clearAllMocks);
 
 const ui = {
   loading: byLabelText('loading'),
-  localScanButton: byRole('button', { name: 'onboarding.tutorial.choose_method.local' }),
+  localScanButton: byRole('heading', { name: 'onboarding.tutorial.choose_method' }),
 };
 
 it('renders tutorials page', async () => {
@@ -64,7 +64,7 @@ it('should redirect if user is not logged in', () => {
 });
 
 function renderTutorialsApp(currentUser = mockCurrentUser()) {
-  return renderAppRoutes('tutorials', routes, {
+  return renderAppWithComponentContext('tutorials', routes, {
     currentUser,
   });
 }
index 31236a85d0f1af49a1d207596aa6cfcd9a3eaf0c..83ebf05e9aacd7b710847f93ba678b3c9e054931 100644 (file)
@@ -31,7 +31,7 @@ import { Permissions } from '../../types/permissions';
 import { SettingsKey } from '../../types/settings';
 import { Component } from '../../types/types';
 import { LoggedInUser } from '../../types/users';
-import { Location, Router, withRouter } from '../hoc/withRouter';
+import { Location, withRouter } from '../hoc/withRouter';
 import TutorialSelectionRenderer from './TutorialSelectionRenderer';
 import { TutorialModes } from './types';
 
@@ -41,7 +41,6 @@ interface Props {
   projectBinding?: ProjectAlmBindingResponse;
   willRefreshAutomatically?: boolean;
   location: Location;
-  router: Router;
 }
 
 interface State {
@@ -114,18 +113,6 @@ export class TutorialSelection extends React.PureComponent<Props, State> {
     }
   };
 
-  handleSelectTutorial = (selectedTutorial: TutorialModes) => {
-    const {
-      router,
-      location: { pathname, query },
-    } = this.props;
-
-    router.push({
-      pathname,
-      query: { ...query, selectedTutorial },
-    });
-  };
-
   render() {
     const { component, currentUser, location, projectBinding, willRefreshAutomatically } =
       this.props;
@@ -147,7 +134,6 @@ export class TutorialSelection extends React.PureComponent<Props, State> {
               (branchLikes.find((b) => isMainBranch(b)) as MainBranch | undefined)?.name ||
               DEFAULT_MAIN_BRANCH_NAME
             }
-            onSelectTutorial={this.handleSelectTutorial}
             projectBinding={projectBinding}
             selectedTutorial={selectedTutorial}
             willRefreshAutomatically={willRefreshAutomatically}
index fdb72ea155405f350fdeaef145a9a5942f66a899..4bdf4962281468bdc15ff337a68218dc4938e7aa 100644 (file)
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-import styled from '@emotion/styled';
-import { themeBorder } from 'design-system';
+import {
+  Breadcrumbs,
+  Card,
+  HoverLink,
+  LightLabel,
+  LightPrimary,
+  StandoutLink,
+  SubTitle,
+  Title,
+} from 'design-system';
 import * as React from 'react';
-import EllipsisIcon from '../../components/icons/EllipsisIcon';
 import { translate } from '../../helpers/l10n';
 import { getBaseUrl } from '../../helpers/system';
+import { getProjectTutorialLocation, getProjectUrl } from '../../helpers/urls';
 import { AlmKeys, AlmSettingsInstance, ProjectAlmBindingResponse } from '../../types/alm-settings';
 import { Component } from '../../types/types';
 import { LoggedInUser } from '../../types/users';
@@ -43,33 +51,29 @@ export interface TutorialSelectionRendererProps {
   currentUserCanScanProject: boolean;
   loading: boolean;
   mainBranchName: string;
-  onSelectTutorial: (mode: TutorialModes) => void;
   projectBinding?: ProjectAlmBindingResponse;
   selectedTutorial?: TutorialModes;
   willRefreshAutomatically?: boolean;
 }
 
-const DEFAULT_ICON_SIZE = 60;
-const GH_ACTION_ICON_SIZE = 46;
-
-function renderButton(
-  mode: TutorialModes,
-  onSelectTutorial: (mode: TutorialModes) => void,
-  icon: React.ReactNode
-) {
+function renderAlm(mode: TutorialModes, project: string, icon?: React.ReactNode) {
   return (
-    <StyledTutorialButtons
-      className={`button button-huge display-flex-column big-spacer-right big-spacer-bottom tutorial-mode-${mode}`}
-      // Currently, OtherCI is the same tutorial as Manual. We might update it to its own stand-alone
-      // tutorial in the future.
-      onClick={() => onSelectTutorial(mode)}
-      type="button"
-    >
-      {icon}
-      <div className="medium big-spacer-top">
+    <Card className="sw-col-span-4 sw-p-4">
+      <StandoutLink icon={icon} to={getProjectTutorialLocation(project, mode)}>
         {translate('onboarding.tutorial.choose_method', mode)}
-      </div>
-    </StyledTutorialButtons>
+      </StandoutLink>
+
+      {mode === TutorialModes.Local && (
+        <LightLabel as="p" className="sw-mt-3">
+          {translate('onboarding.mode.help.manual')}
+        </LightLabel>
+      )}
+      {mode === TutorialModes.OtherCI && (
+        <LightLabel as="p" className="sw-mt-3">
+          {translate('onboarding.mode.help.otherci')}
+        </LightLabel>
+      )}
+    </Card>
   );
 }
 
@@ -86,7 +90,6 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender
     selectedTutorial,
     willRefreshAutomatically,
   } = props;
-
   if (loading) {
     return <i aria-label={translate('loading')} className="spinner" />;
   }
@@ -115,97 +118,88 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender
   }
 
   return (
-    <>
+    <div className="sw-body-sm">
       {selectedTutorial === undefined && (
-        <>
-          <h2 className="spacer-top huge-spacer-bottom">
+        <div className="sw-flex sw-flex-col">
+          <Title className="sw-mb-6 sw-heading-lg">
+            {translate('onboarding.tutorial.page.title')}
+          </Title>
+          <LightPrimary>{translate('onboarding.tutorial.page.description')}</LightPrimary>
+          <SubTitle className="sw-mt-12 sw-mb-4 sw-heading-md">
             {translate('onboarding.tutorial.choose_method')}
-          </h2>
-
-          <div className="tutorial-selection">
-            <p className="big-spacer-bottom">
-              {translate('onboarding.tutorial.choose_method.devops_platform.description')}
-            </p>
-            <div className="display-flex-start display-flex-wrap">
-              {showJenkins &&
-                renderButton(
-                  TutorialModes.Jenkins,
-                  props.onSelectTutorial,
-                  <img
-                    alt="" // Should be ignored by screen readers
-                    height={DEFAULT_ICON_SIZE}
-                    src={`${getBaseUrl()}/images/tutorials/jenkins.svg`}
-                  />
-                )}
-
-              {showGitHubActions &&
-                renderButton(
-                  TutorialModes.GitHubActions,
-                  props.onSelectTutorial,
-                  <img
-                    alt="" // Should be ignored by screen readers
-                    height={GH_ACTION_ICON_SIZE}
-                    className="spacer-bottom spacer-top"
-                    src={`${getBaseUrl()}/images/tutorials/github-actions.svg`}
-                  />
-                )}
+          </SubTitle>
 
-              {showBitbucketPipelines &&
-                renderButton(
-                  TutorialModes.BitbucketPipelines,
-                  props.onSelectTutorial,
-                  <img
-                    alt="" // Should be ignored by screen readers
-                    height={DEFAULT_ICON_SIZE}
-                    src={`${getBaseUrl()}/images/alm/bitbucket.svg`}
-                  />
-                )}
+          <div className="it__tutorial-selection sw-grid sw-gap-6 sw-grid-cols-12">
+            {showJenkins &&
+              renderAlm(
+                TutorialModes.Jenkins,
+                component.key,
+                <img
+                  alt="" // Should be ignored by screen readers
+                  className="sw-h-4 sw-w-4"
+                  src={`${getBaseUrl()}/images/tutorials/jenkins.svg`}
+                />
+              )}
 
-              {showGitLabCICD &&
-                renderButton(
-                  TutorialModes.GitLabCI,
-                  props.onSelectTutorial,
-                  <img
-                    alt="" // Should be ignored by screen readers
-                    height={DEFAULT_ICON_SIZE}
-                    src={`${getBaseUrl()}/images/alm/gitlab.svg`}
-                  />
-                )}
+            {showGitHubActions &&
+              renderAlm(
+                TutorialModes.GitHubActions,
+                component.key,
+                <img
+                  alt="" // Should be ignored by screen readers
+                  className="sw-h-4 sw-w-4"
+                  src={`${getBaseUrl()}/images/tutorials/github-actions.svg`}
+                />
+              )}
 
-              {showAzurePipelines &&
-                renderButton(
-                  TutorialModes.AzurePipelines,
-                  props.onSelectTutorial,
-                  <img
-                    alt="" // Should be ignored by screen readers
-                    height={DEFAULT_ICON_SIZE}
-                    src={`${getBaseUrl()}/images/tutorials/azure-pipelines.svg`}
-                  />
-                )}
+            {showBitbucketPipelines &&
+              renderAlm(
+                TutorialModes.BitbucketPipelines,
+                component.key,
+                <img
+                  alt="" // Should be ignored by screen readers
+                  className="sw-h-4 sw-w-4"
+                  src={`${getBaseUrl()}/images/alm/bitbucket.svg`}
+                />
+              )}
 
-              {renderButton(
-                TutorialModes.OtherCI,
-                props.onSelectTutorial,
-                <EllipsisIcon size={DEFAULT_ICON_SIZE} />
+            {showGitLabCICD &&
+              renderAlm(
+                TutorialModes.GitLabCI,
+                component.key,
+                <img
+                  alt="" // Should be ignored by screen readers
+                  className="sw-h-4 sw-w-4"
+                  src={`${getBaseUrl()}/images/alm/gitlab.svg`}
+                />
               )}
-            </div>
 
-            <p className="big-spacer-bottom spacer-top">
-              {translate('onboarding.tutorial.choose_method.local.description')}
-            </p>
-            <div>
-              {renderButton(
-                TutorialModes.Local,
-                props.onSelectTutorial,
+            {showAzurePipelines &&
+              renderAlm(
+                TutorialModes.AzurePipelines,
+                component.key,
                 <img
                   alt="" // Should be ignored by screen readers
-                  height={DEFAULT_ICON_SIZE}
-                  src={`${getBaseUrl()}/images/tutorials/manual.svg`}
+                  className="sw-h-4 sw-w-4"
+                  src={`${getBaseUrl()}/images/tutorials/azure-pipelines.svg`}
                 />
               )}
-            </div>
+
+            {renderAlm(TutorialModes.OtherCI, component.key)}
+            {renderAlm(TutorialModes.Local, component.key)}
           </div>
-        </>
+        </div>
+      )}
+
+      {selectedTutorial && (
+        <Breadcrumbs className="sw-mb-3">
+          <HoverLink to={getProjectUrl(component.key)}>
+            {translate('onboarding.tutorial.breadcrumbs.home')}
+          </HoverLink>
+          <HoverLink to={getProjectTutorialLocation(component.key, selectedTutorial)}>
+            {translate('onboarding.tutorial.breadcrumbs', selectedTutorial)}
+          </HoverLink>
+        </Breadcrumbs>
       )}
 
       {selectedTutorial === TutorialModes.Local && (
@@ -268,17 +262,6 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender
           willRefreshAutomatically={willRefreshAutomatically}
         />
       )}
-    </>
+    </div>
   );
 }
-
-const StyledTutorialButtons = styled.button`
-  border: ${themeBorder('default', 'projectCardBorder')};
-  &:hover,
-  &:focus,
-  &:focus-visible,
-  &:active {
-    border: ${themeBorder('default', 'tabBorder')};
-    outline: none;
-  }
-`;
index ce925bf94372135f8fab4f1152af63ca2b5e16e8..a13a514b11a4bff904a91a4ce7557a65f30ad59c 100644 (file)
@@ -74,8 +74,8 @@ beforeEach(jest.clearAllMocks);
 const ui = {
   loading: byLabelText('loading'),
   noScanRights: byText('onboarding.tutorial.no_scan_rights'),
-  chooseTutorialBtn: (mode: TutorialModes) =>
-    byRole('button', { name: `onboarding.tutorial.choose_method.${mode}` }),
+  chooseTutorialLink: (mode: TutorialModes) =>
+    byRole('link', { name: `onboarding.tutorial.choose_method.${mode}` }),
 };
 
 it.each([
@@ -89,15 +89,18 @@ it.each([
   [TutorialModes.GitLabCI, 'onboarding.tutorial.with.gitlab_ci.title'],
   [TutorialModes.Local, 'onboarding.project_analysis.header'],
   [TutorialModes.OtherCI, 'onboarding.project_analysis.header'],
-])('should behave correctly for %s', async (mode, title) => {
+])('should properly click link for %s', async (mode, title) => {
   const user = userEvent.setup();
-  renderTutorialSelection();
+  const breadcrumbs = `onboarding.tutorial.breadcrumbs.${mode}`;
+  renderTutorialSelection({});
   await waitOnDataLoaded();
 
   expect(screen.getByText('onboarding.tutorial.choose_method')).toBeInTheDocument();
 
-  await user.click(ui.chooseTutorialBtn(mode).get());
+  expect(screen.queryByText(breadcrumbs)).not.toBeInTheDocument();
+  await user.click(ui.chooseTutorialLink(mode).get());
   expect(screen.getByText(title)).toBeInTheDocument();
+  expect(screen.getByText(breadcrumbs)).toBeInTheDocument();
 });
 
 it.each([
@@ -113,7 +116,7 @@ it.each([
   renderTutorialSelection({ projectBinding: mockProjectAlmBindingResponse({ alm }) });
   await waitOnDataLoaded();
 
-  modes.forEach((mode) => expect(ui.chooseTutorialBtn(mode).get()).toBeInTheDocument());
+  modes.forEach((mode) => expect(ui.chooseTutorialLink(mode).get()).toBeInTheDocument());
 });
 
 it('should correctly fetch the corresponding ALM setting', async () => {
@@ -121,9 +124,12 @@ it('should correctly fetch the corresponding ALM setting', async () => {
     mockGithubBindingDefinition({ key: 'binding', url: 'https://enterprise.github.com' }),
   ]);
   const user = userEvent.setup();
-  renderTutorialSelection({
-    projectBinding: mockProjectAlmBindingResponse({ alm: AlmKeys.GitHub, key: 'binding' }),
-  });
+  renderTutorialSelection(
+    {
+      projectBinding: mockProjectAlmBindingResponse({ alm: AlmKeys.GitHub, key: 'binding' }),
+    },
+    `dashboard?selectedTutorial=${TutorialModes.Jenkins}&id=bar`
+  );
   await waitOnDataLoaded();
 
   await startJenkinsTutorial(user);
@@ -175,31 +181,33 @@ async function waitOnDataLoaded() {
 }
 
 async function startLocalTutorial(user: UserEvent) {
-  await user.click(ui.chooseTutorialBtn(TutorialModes.Local).get());
+  await user.click(ui.chooseTutorialLink(TutorialModes.Local).get());
   await user.click(screen.getByRole('button', { name: 'onboarding.token.generate' }));
   await user.click(screen.getByRole('button', { name: 'continue' }));
   await user.click(screen.getByRole('button', { name: 'onboarding.build.maven' }));
 }
 
 async function startJenkinsTutorial(user: UserEvent) {
-  await user.click(ui.chooseTutorialBtn(TutorialModes.Jenkins).get());
   await user.click(
     screen.getByRole('button', { name: 'onboarding.tutorial.with.jenkins.prereqs.done' })
   );
 }
 
-function renderTutorialSelection(props: Partial<TutorialSelection['props']> = {}) {
-  const Wrapper = withRouter(({ router, location, ...subProps }: TutorialSelection['props']) => {
-    return <TutorialSelection location={location} router={router} {...subProps} />;
+function renderTutorialSelection(
+  props: Partial<TutorialSelection['props']> = {},
+  navigateTo: string = 'dashboard?id=bar'
+) {
+  const Wrapper = withRouter(({ location, ...subProps }: TutorialSelection['props']) => {
+    return <TutorialSelection location={location} {...subProps} />;
   });
 
   return renderApp(
-    '/',
+    '/dashboard',
     <Wrapper
       component={mockComponent({ key: 'foo' })}
       currentUser={mockLoggedInUser({ permissions: { global: [Permissions.Scan] } })}
       {...props}
     />,
-    { featureList: [Feature.BranchSupport] }
+    { featureList: [Feature.BranchSupport], navigateTo }
   );
 }
index b6bf974eb3d530c84ab1f1a59f4f31f5a4b245b0..a5a368827911cba1b81b971be06d1b2defed2251 100644 (file)
@@ -318,6 +318,19 @@ export function getQualityGateUrl(name: string): To {
   };
 }
 
+/**
+ * Generate URL for the project tutorial page
+ */
+export function getProjectTutorialLocation(
+  project: string,
+  selectedTutorial?: string
+): Partial<Path> {
+  return {
+    pathname: PROJECT_BASE_URL,
+    search: queryToSearch({ id: project, selectedTutorial }),
+  };
+}
+
 export function getQualityGatesUrl(): To {
   return {
     pathname: '/quality_gates',
index 608fff975caf7185e8919dcdca0bcc71a071c57b..3d9df0392af0385c9b5ff061c30aa16f9a0e5b08 100644 (file)
@@ -4064,6 +4064,9 @@ onboarding.tutorial.cfamilly.speed_caching=You can also speed up your analysis b
 onboarding.tutorial.cfamilly.speed_caching.link=multi-threading and caching
 onboarding.tutorial.cfamily.examples_repositories_description=Check out our C and C++ sample projects with SonarQube analysis configured
 
+
+onboarding.tutorial.page.title=Analysis Method
+onboarding.tutorial.page.description=Use this page to manage and set-up the way your analyses are performed.
 onboarding.tutorial.choose_method=How do you want to analyze your repository?
 onboarding.tutorial.choose_method.devops_platform.description=Do you want to integrate with your favorite CI? Choose one of the following tutorials.
 onboarding.tutorial.choose_method.local.description=Are you just testing or have an advanced use-case? Analyze your project locally.
@@ -4074,6 +4077,16 @@ onboarding.tutorial.choose_method.github-actions=With GitHub Actions
 onboarding.tutorial.choose_method.gitlab-ci=With GitLab CI
 onboarding.tutorial.choose_method.azure-pipelines=With Azure Pipelines
 onboarding.tutorial.choose_method.bitbucket-pipelines=With Bitbucket Pipelines
+onboarding.tutorial.breadcrumbs.home=Analysis Method
+onboarding.tutorial.breadcrumbs.local=Locally
+onboarding.tutorial.breadcrumbs.other-ci=Other CI
+onboarding.tutorial.breadcrumbs.jenkins=Jenkins
+onboarding.tutorial.breadcrumbs.github-actions=GitHub Actions
+onboarding.tutorial.breadcrumbs.gitlab-ci=GitLab CI
+onboarding.tutorial.breadcrumbs.azure-pipelines=Azure Pipelines
+onboarding.tutorial.breadcrumbs.bitbucket-pipelines=Bitbucket Pipelines
+onboarding.mode.help.manual=Use this for testing or advanced use-case. Other modes are recommended to help you set up your CI environment.
+onboarding.mode.help.otherci=SonarQube integrates with your workflow no matter which CI tool you're using.
 
 
 onboarding.tutorial.with.yaml.gradle=Update your {groovy} or {kotlin} file with the {sq} plugin and its configuration:
@@ -4454,6 +4467,7 @@ onboarding.tutorial.with.azure_pipelines.BranchAnalysis.branch_protection=To mak
 onboarding.tutorial.with.azure_pipelines.BranchAnalysis.branch_protection.link=documentation
 
 onboarding.tutorial.no_scan_rights=You do not have permission to analyze this project. Please contact the project administrator.
+
 #------------------------------------------------------------------------------
 #
 # BRANCHES