You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/03/30 17:15:31 UTC

[camel-karavan] branch main updated: Readme (#260)

This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 2385c14  Readme (#260)
2385c14 is described below

commit 2385c14e3403c86f607619f5354285534593d744
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Mar 30 13:15:28 2022 -0400

    Readme (#260)
---
 README.md                                          |  35 ++--
 {screenshots => images}/create.png                 | Bin
 {screenshots => images}/install.png                | Bin
 images/karavan-logo-dark.png                       | Bin 0 -> 23280 bytes
 images/karavan-logo-dark.svg                       | 222 +++++++++++++++++++++
 images/karavan-logo-light.png                      | Bin 0 -> 23131 bytes
 images/karavan-logo-light.svg                      | 222 +++++++++++++++++++++
 images/karavan-vscode.png                          | Bin 0 -> 523137 bytes
 images/karavan-web.png                             | Bin 0 -> 434416 bytes
 {screenshots => images}/karavan.png                | Bin
 {screenshots => images}/open.png                   | Bin
 .../src/designer/route/DslSelector.tsx             |  27 ++-
 .../designer/route/property/DslPropertyField.tsx   |   2 +-
 karavan-designer/src/designer/utils/CamelUi.ts     |   4 +-
 screenshots/karavan-vscode.png                     | Bin 319708 -> 0 bytes
 15 files changed, 483 insertions(+), 29 deletions(-)

diff --git a/README.md b/README.md
index 49e9186..f2c802b 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,38 @@
-![Build](https://img.shields.io/badge/Build_with-Fun-orange.svg?style=for-the-badge)
-![Camel](https://img.shields.io/badge/-Camel-orange.svg?style=for-the-badge&)
-![Java](https://img.shields.io/badge/-Java-orange.svg?style=for-the-badge&logo=java)
-![Quarkus](https://img.shields.io/badge/-Quarkus-orange.svg?style=for-the-badge&logo=quarkus)
-![React](https://img.shields.io/badge/-React-orange.svg?style=for-the-badge&logo=react)
-![Typescript](https://img.shields.io/badge/-Typescript-orange.svg?style=for-the-badge&logo=typescript)
-![License](https://img.shields.io/badge/License-Apache-green.svg?style=for-the-badge&logo=apache)
+![Build](https://img.shields.io/badge/Build_with-Fun-blue.svg?style=for-the-badge)
+![Camel](https://img.shields.io/badge/-Camel-blue.svg?style=for-the-badge&)
+![Java](https://img.shields.io/badge/-Java-blue.svg?style=for-the-badge&logo=java)
+![Quarkus](https://img.shields.io/badge/-Quarkus-blue.svg?style=for-the-badge&logo=quarkus)
+![React](https://img.shields.io/badge/-React-blue.svg?style=for-the-badge&logo=react)
+![Typescript](https://img.shields.io/badge/-Typescript-blue.svg?style=for-the-badge&logo=typescript)
+![License](https://img.shields.io/badge/License-Apache-blue.svg?style=for-the-badge&logo=apache)
 
-# Apache Camel Karavan
-Karavan, an Integration Designer for Apache Camel makes integration easy and fun through visualization of integration pipeline.
+![karavan-logo](images/karavan-logo-dark.png#gh-dark-mode-only)
+![karavan-logo](images/karavan-logo-light.png#gh-light-mode-only)
+
+## Apache Camel Karavan
+Mastering Tool for Apache Camel makes integration easy and fun through the visualization of pipelines and integration with runtimes.
 
 ## Features
 
-* Read/Write Integration CRD (*.yaml with kind:Integration) and plain yaml routes
-* Kamelets source/sink/action
 * Enterprise Integration Patterns DSL
-* Components consumer/producer
-* Integration with [JBang](https://www.jbang.dev)
+* REST DSL
+* Beans and dependencies
+* 100+ Kamelets source/sink/action
+* 300+ Components consumer/producer
+* Read/Write Integration CRD (*.yaml with kind:Integration) and plain yaml routes
+* Integration with [Camel-K](https://camel.apache.org/camel-k/next/index.html) and [JBang](https://www.jbang.dev)
 
 ## VS Code extension
 Install Karavan VS Code extension from the [Marketplace](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan)
 
 
-![karavan-vscode](screenshots/karavan-vscode.png)
+![karavan-vscode](images/karavan-vscode.png)
 
 ## Standalone application
 
  Install Karavan Standalone command line: `docker pull ghcr.io/apache/camel-karavan:latest`
 
-![karavan](screenshots/karavan.png)
+![karavan-web](images/karavan-web.png)
 
 ## Project structure
 1. Karavan-generator  
diff --git a/screenshots/create.png b/images/create.png
similarity index 100%
rename from screenshots/create.png
rename to images/create.png
diff --git a/screenshots/install.png b/images/install.png
similarity index 100%
rename from screenshots/install.png
rename to images/install.png
diff --git a/images/karavan-logo-dark.png b/images/karavan-logo-dark.png
new file mode 100644
index 0000000..280e38d
Binary files /dev/null and b/images/karavan-logo-dark.png differ
diff --git a/images/karavan-logo-dark.svg b/images/karavan-logo-dark.svg
new file mode 100644
index 0000000..396ffc2
--- /dev/null
+++ b/images/karavan-logo-dark.svg
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="1132.0219"
+   height="360.13885"
+   viewBox="0 0 1132.0219 360.13885"
+   version="1.1"
+   preserveAspectRatio="xMidYMid"
+   id="svg50"
+   sodipodi:docname="karavan-logo.svg"
+   inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
+   inkscape:export-filename="/Users/mgubaidu/Desktop/karavan-logo.png"
+   inkscape:export-xdpi="50.880001"
+   inkscape:export-ydpi="50.880001"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview52"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="0.36"
+     inkscape:cx="309.72222"
+     inkscape:cy="229.16667"
+     inkscape:window-width="2560"
+     inkscape:window-height="1387"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg50"
+     width="1256px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs31">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient1351">
+      <stop
+         style="stop-color:#dcffff;stop-opacity:1"
+         offset="0"
+         id="stop1347" />
+      <stop
+         style="stop-color:#96d2e6;stop-opacity:1"
+         offset="1"
+         id="stop1349" />
+    </linearGradient>
+    <circle
+       id="path-1"
+       cx="128"
+       cy="128.00015"
+       r="128" />
+    <linearGradient
+       x1="-26.051073"
+       y1="271.33054"
+       x2="254.31573"
+       y2="0.047514945"
+       id="linearGradient-3"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#F69923"
+         offset="0%"
+         id="stop10"
+         style="stop-color:#4790bb;stop-opacity:1" />
+      <stop
+         stop-color="#F79A23"
+         offset="10.996%"
+         id="stop12"
+         style="stop-color:#64b7db;stop-opacity:1" />
+      <stop
+         stop-color="#E97826"
+         offset="94.502%"
+         id="stop14"
+         style="stop-color:#326ea0;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       x1="-32.163429"
+       y1="277.02905"
+       x2="259.33835"
+       y2="-5.0281582"
+       id="linearGradient-4"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#F69923"
+         offset="0%"
+         id="stop17" />
+      <stop
+         stop-color="#F79A23"
+         offset="8.0478%"
+         id="stop19" />
+      <stop
+         stop-color="#E97826"
+         offset="41.874%"
+         id="stop21" />
+    </linearGradient>
+    <linearGradient
+       x1="217.94496"
+       y1="67.504837"
+       x2="99.458817"
+       y2="247.00549"
+       id="linearGradient-5"
+       gradientTransform="scale(0.96441978,1.0368929)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient-4">
+      <stop
+         stop-color="#F6E423"
+         offset="0%"
+         id="stop24"
+         style="stop-color:#92d6d5;stop-opacity:1" />
+      <stop
+         stop-color="#F79A23"
+         offset="41.191%"
+         id="stop26"
+         style="stop-color:#79b7cc;stop-opacity:1" />
+      <stop
+         stop-color="#E97826"
+         offset="73.271%"
+         id="stop28"
+         style="stop-color:#5891c5;stop-opacity:1" />
+    </linearGradient>
+    <mask
+       id="mask-2"
+       fill="#ffffff">
+      <use
+         xlink:href="#path-1"
+         id="use33"
+         x="0"
+         y="0"
+         width="100%"
+         height="100%" />
+    </mask>
+    <mask
+       id="mask-2-7"
+       fill="#ffffff">
+      <use
+         xlink:href="#path-1"
+         id="use137"
+         x="0"
+         y="0"
+         width="100%"
+         height="100%" />
+    </mask>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1351"
+       id="linearGradient1345"
+       x1="233.12198"
+       y1="56.01545"
+       x2="2.2396212"
+       y2="242.78015"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="g36"
+     transform="translate(45.104634,56.041665)" />
+  <circle
+     fill="url(#linearGradient-3)"
+     fill-rule="nonzero"
+     mask="url(#mask-2)"
+     cx="127.99429"
+     cy="127.99429"
+     r="123.11053"
+     id="circle38"
+     style="fill:url(#linearGradient-3)"
+     transform="translate(45.104634,56.041665)" />
+  <g
+     id="g2266"
+     transform="translate(45.104634,56.041665)">
+    <path
+       d="m 98.043695,75.516752 c -1.750682,-0.002 -3.524167,0.0098 -5.292059,0.06144 -2.05519,0.06065 -4.816316,0.713182 -7.999625,1.784532 53.775199,40.834016 73.108199,114.497516 39.875049,178.514206 1.12865,0.0293 2.24876,0.12307 3.38456,0.12307 60.7361,0 111.49261,-42.32269 124.60904,-99.07129 C 214.07872,111.75077 161.80794,75.61511 98.043301,75.516654 Z"
+       fill="url(#linearGradient-5)"
+       fill-rule="nonzero"
+       opacity="0.75"
+       mask="url(#mask-2)"
+       id="path42"
+       style="fill:url(#linearGradient-5);fill-opacity:1" />
+  </g>
+  <path
+     d="M 84.752011,77.367742 C 66.89547,83.377158 32.82977,104.54579 0.07906091,132.8108 2.5662796,200.14549 57.107277,254.12351 124.62706,255.88195 157.86021,191.86526 138.528,118.20176 84.752011,77.367742 Z"
+     fill="#28170b"
+     fill-rule="nonzero"
+     opacity="0.75"
+     mask="url(#mask-2)"
+     id="path44"
+     style="fill:#1e4b7b;fill-opacity:1"
+     transform="translate(45.104634,56.041665)" />
+  <path
+     d="m 128.74719,54.004528 c -10.98485,5.495372 0,27.466068 0,27.466068 -32.973011,27.483724 -25.9672,74.429124 -64.435392,74.429124 -20.970343,0 -42.242226,-24.0768 -64.23273709,-38.82804 -0.28309669,3.47897 -0.78535974,6.97247 -0.78535974,10.52442 0,48.09504 26.26287383,89.92436 65.41967783,111.89721 10.952683,-1.3796 22.838636,-4.11444 31.050991,-9.59255 43.14527,-28.76482 53.85703,-83.49096 71.48633,-109.92509 10.97897,-16.492 62.43429,-15.06102 65.90679,-22.01013 5.50126,-10.9907 [...]
+     fill="#ffffff"
+     fill-rule="nonzero"
+     mask="url(#mask-2-7)"
+     id="path150"
+     transform="translate(44.335601,55.908568)"
+     style="fill:url(#linearGradient1345);fill-opacity:1" />
+  <path
+     d="M 128,256 C 57.307552,256 0,198.69245 0,128 0,57.307552 57.307552,0 128,0 c 70.69245,0 128,57.307552 128,128 0,70.69245 -57.30755,128 -128,128 z m 0,-9.76795 C 193.29776,246.23205 246.23205,193.29776 246.23205,128 246.23205,62.702243 193.29776,9.7679529 128,9.7679529 62.702243,9.7679529 9.7679529,62.702243 9.7679529,128 9.7679529,193.29776 62.702243,246.23205 128,246.23205 Z"
+     fill="url(#linearGradient-4)"
+     fill-rule="nonzero"
+     mask="url(#mask-2)"
+     id="path40"
+     style="fill:#2d4150;fill-opacity:1"
+     transform="matrix(1.020345,0,0,1.020345,41.979634,53.958328)" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.949px;line-height:1.25;font-family:'M PLUS 1 Code';-inkscape-font-specification:'M PLUS 1 Code, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#96d2e6;fill-opacity:1;stroke:none;stroke-width:5.3487"
+     x="346.91318"
+     y="259.39081"
+     id="text3018"><tspan
+       sodipodi:role="line"
+       id="tspan3016"
+       x="346.91318"
+       y="259.39081"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.949px;font-family:'M PLUS 1 Code';-inkscape-font-specification:'M PLUS 1 Code, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#96d2e6;fill-opacity:1;stroke-width:5.3487">Karavan</tspan></text>
+</svg>
diff --git a/images/karavan-logo-light.png b/images/karavan-logo-light.png
new file mode 100644
index 0000000..a80c02e
Binary files /dev/null and b/images/karavan-logo-light.png differ
diff --git a/images/karavan-logo-light.svg b/images/karavan-logo-light.svg
new file mode 100644
index 0000000..82a46b5
--- /dev/null
+++ b/images/karavan-logo-light.svg
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="1109.375"
+   height="344.79166"
+   viewBox="0 0 1109.375 344.79166"
+   version="1.1"
+   preserveAspectRatio="xMidYMid"
+   id="svg50"
+   sodipodi:docname="karavan-logo-light.svg"
+   inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
+   inkscape:export-filename="/Users/mgubaidu/projects/oss/camel-karavan/images/karavan-logo-light.png"
+   inkscape:export-xdpi="50.880001"
+   inkscape:export-ydpi="50.880001"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview52"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="0.96"
+     inkscape:cx="276.5625"
+     inkscape:cy="293.22917"
+     inkscape:window-width="2560"
+     inkscape:window-height="1387"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg50"
+     width="1256px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs31">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient1351">
+      <stop
+         style="stop-color:#dcffff;stop-opacity:1"
+         offset="0"
+         id="stop1347" />
+      <stop
+         style="stop-color:#96d2e6;stop-opacity:1"
+         offset="1"
+         id="stop1349" />
+    </linearGradient>
+    <circle
+       id="path-1"
+       cx="128"
+       cy="128.00015"
+       r="128" />
+    <linearGradient
+       x1="-26.051073"
+       y1="271.33054"
+       x2="254.31573"
+       y2="0.047514945"
+       id="linearGradient-3"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#F69923"
+         offset="0%"
+         id="stop10"
+         style="stop-color:#4790bb;stop-opacity:1" />
+      <stop
+         stop-color="#F79A23"
+         offset="10.996%"
+         id="stop12"
+         style="stop-color:#64b7db;stop-opacity:1" />
+      <stop
+         stop-color="#E97826"
+         offset="94.502%"
+         id="stop14"
+         style="stop-color:#326ea0;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       x1="-32.163429"
+       y1="277.02905"
+       x2="259.33835"
+       y2="-5.0281582"
+       id="linearGradient-4"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#F69923"
+         offset="0%"
+         id="stop17" />
+      <stop
+         stop-color="#F79A23"
+         offset="8.0478%"
+         id="stop19" />
+      <stop
+         stop-color="#E97826"
+         offset="41.874%"
+         id="stop21" />
+    </linearGradient>
+    <linearGradient
+       x1="217.94496"
+       y1="67.504837"
+       x2="99.458817"
+       y2="247.00549"
+       id="linearGradient-5"
+       gradientTransform="scale(0.96441978,1.0368929)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient-4">
+      <stop
+         stop-color="#F6E423"
+         offset="0%"
+         id="stop24"
+         style="stop-color:#92d6d5;stop-opacity:1" />
+      <stop
+         stop-color="#F79A23"
+         offset="41.191%"
+         id="stop26"
+         style="stop-color:#79b7cc;stop-opacity:1" />
+      <stop
+         stop-color="#E97826"
+         offset="73.271%"
+         id="stop28"
+         style="stop-color:#5891c5;stop-opacity:1" />
+    </linearGradient>
+    <mask
+       id="mask-2"
+       fill="#ffffff">
+      <use
+         xlink:href="#path-1"
+         id="use33"
+         x="0"
+         y="0"
+         width="100%"
+         height="100%" />
+    </mask>
+    <mask
+       id="mask-2-7"
+       fill="#ffffff">
+      <use
+         xlink:href="#path-1"
+         id="use137"
+         x="0"
+         y="0"
+         width="100%"
+         height="100%" />
+    </mask>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1351"
+       id="linearGradient1345"
+       x1="233.12198"
+       y1="56.01545"
+       x2="2.2396212"
+       y2="242.78015"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="g36"
+     transform="translate(54.166668,36.458182)" />
+  <circle
+     fill="url(#linearGradient-3)"
+     fill-rule="nonzero"
+     mask="url(#mask-2)"
+     cx="127.99429"
+     cy="127.99429"
+     r="123.11053"
+     id="circle38"
+     style="fill:url(#linearGradient-3)"
+     transform="translate(54.166668,36.458182)" />
+  <g
+     id="g2266"
+     transform="translate(54.166668,36.458182)">
+    <path
+       d="m 98.043695,75.516752 c -1.750682,-0.002 -3.524167,0.0098 -5.292059,0.06144 -2.05519,0.06065 -4.816316,0.713182 -7.999625,1.784532 53.775199,40.834016 73.108199,114.497516 39.875049,178.514206 1.12865,0.0293 2.24876,0.12307 3.38456,0.12307 60.7361,0 111.49261,-42.32269 124.60904,-99.07129 C 214.07872,111.75077 161.80794,75.61511 98.043301,75.516654 Z"
+       fill="url(#linearGradient-5)"
+       fill-rule="nonzero"
+       opacity="0.75"
+       mask="url(#mask-2)"
+       id="path42"
+       style="fill:url(#linearGradient-5);fill-opacity:1" />
+  </g>
+  <path
+     d="M 84.752011,77.367742 C 66.89547,83.377158 32.82977,104.54579 0.07906091,132.8108 2.5662796,200.14549 57.107277,254.12351 124.62706,255.88195 157.86021,191.86526 138.528,118.20176 84.752011,77.367742 Z"
+     fill="#28170b"
+     fill-rule="nonzero"
+     opacity="0.75"
+     mask="url(#mask-2)"
+     id="path44"
+     style="fill:#1e4b7b;fill-opacity:1"
+     transform="translate(54.166668,36.458182)" />
+  <path
+     d="m 128.74719,54.004528 c -10.98485,5.495372 0,27.466068 0,27.466068 -32.973011,27.483724 -25.9672,74.429124 -64.435392,74.429124 -20.970343,0 -42.242226,-24.0768 -64.23273709,-38.82804 -0.28309669,3.47897 -0.78535974,6.97247 -0.78535974,10.52442 0,48.09504 26.26287383,89.92436 65.41967783,111.89721 10.952683,-1.3796 22.838636,-4.11444 31.050991,-9.59255 43.14527,-28.76482 53.85703,-83.49096 71.48633,-109.92509 10.97897,-16.492 62.43429,-15.06102 65.90679,-22.01013 5.50126,-10.9907 [...]
+     fill="#ffffff"
+     fill-rule="nonzero"
+     mask="url(#mask-2-7)"
+     id="path150"
+     transform="translate(53.397635,36.325085)"
+     style="fill:url(#linearGradient1345);fill-opacity:1" />
+  <path
+     d="M 128,256 C 57.307552,256 0,198.69245 0,128 0,57.307552 57.307552,0 128,0 c 70.69245,0 128,57.307552 128,128 0,70.69245 -57.30755,128 -128,128 z m 0,-9.76795 C 193.29776,246.23205 246.23205,193.29776 246.23205,128 246.23205,62.702243 193.29776,9.7679529 128,9.7679529 62.702243,9.7679529 9.7679529,62.702243 9.7679529,128 9.7679529,193.29776 62.702243,246.23205 128,246.23205 Z"
+     fill="url(#linearGradient-4)"
+     fill-rule="nonzero"
+     mask="url(#mask-2)"
+     id="path40"
+     style="fill:#2d4150;fill-opacity:1"
+     transform="matrix(1.020345,0,0,1.020345,51.041668,34.374845)" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.949px;line-height:1.25;font-family:'M PLUS 1 Code';-inkscape-font-specification:'M PLUS 1 Code, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#1e4b7b;fill-opacity:1;stroke:none;stroke-width:5.3487"
+     x="355.97519"
+     y="239.80733"
+     id="text3018"><tspan
+       sodipodi:role="line"
+       id="tspan3016"
+       x="355.97519"
+       y="239.80733"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.949px;font-family:'M PLUS 1 Code';-inkscape-font-specification:'M PLUS 1 Code, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#1e4b7b;fill-opacity:1;stroke-width:5.3487">Karavan</tspan></text>
+</svg>
diff --git a/images/karavan-vscode.png b/images/karavan-vscode.png
new file mode 100644
index 0000000..106f4a5
Binary files /dev/null and b/images/karavan-vscode.png differ
diff --git a/images/karavan-web.png b/images/karavan-web.png
new file mode 100644
index 0000000..b76f8e7
Binary files /dev/null and b/images/karavan-web.png differ
diff --git a/screenshots/karavan.png b/images/karavan.png
similarity index 100%
rename from screenshots/karavan.png
rename to images/karavan.png
diff --git a/screenshots/open.png b/images/open.png
similarity index 100%
rename from screenshots/open.png
rename to images/open.png
diff --git a/karavan-designer/src/designer/route/DslSelector.tsx b/karavan-designer/src/designer/route/DslSelector.tsx
index 2cb6456..797fe1f 100644
--- a/karavan-designer/src/designer/route/DslSelector.tsx
+++ b/karavan-designer/src/designer/route/DslSelector.tsx
@@ -42,7 +42,7 @@ interface State {
 export class DslSelector extends React.Component<Props, State> {
 
     public state: State = {
-        tabIndex: CamelUi.getSelectorModelTypes(this.props.parentDsl, this.props.showSteps)[0],
+        tabIndex: CamelUi.getSelectorModelTypes(this.props.parentDsl, this.props.showSteps)[0][0],
     };
 
 
@@ -52,7 +52,7 @@ export class DslSelector extends React.Component<Props, State> {
 
     componentDidUpdate = (prevProps: Readonly<Props>, prevState: Readonly<State>, snapshot?: any) => {
         if (prevProps.parentDsl !== this.props.parentDsl) {
-            this.setState({tabIndex: CamelUi.getSelectorModelTypes(this.props.parentDsl, this.props.showSteps)[0]});
+            this.setState({tabIndex: CamelUi.getSelectorModelTypes(this.props.parentDsl, this.props.showSteps)[0][0]});
         }
     }
 
@@ -131,15 +131,20 @@ export class DslSelector extends React.Component<Props, State> {
             <PageSection variant={this.props.dark ? "darker" : "light"}>
                 {this.searchInput()}
                 <Tabs style={{overflow: 'hidden'}} activeKey={this.state.tabIndex} onSelect={this.selectTab}>
-                    {CamelUi.getSelectorModelTypes(parentDsl, this.props.showSteps).map((label: any, index: number) => (
-                        <Tab eventKey={label} key={"tab-" + label} title={<TabTitleText>{CamelUtil.capitalizeName(label)}</TabTitleText>}>
-                            <Gallery key={"gallery-" + label} hasGutter className="dsl-gallery">
-                                {CamelUi.getSelectorModelsForParentFiltered(parentDsl, label, this.props.showSteps)
-                                    .filter((dsl: DslMetaModel) => this.checkFilter(dsl))
-                                    .map((dsl: DslMetaModel, index: number) => this.getCard(dsl, index))}
-                            </Gallery>
-                        </Tab>
-                    ))}
+                    {CamelUi.getSelectorModelTypes(parentDsl, this.props.showSteps).map((label: [string, number], index: number) => {
+                        const labelText = label[0];
+                        const count = label[1];
+                        const title = ['kamelet', 'component'].includes(labelText.toLowerCase()) ? labelText+"s (" + count + ")" : labelText;
+                        return (
+                            <Tab eventKey={labelText} key={"tab-" + labelText} title={<TabTitleText>{CamelUtil.capitalizeName(title)}</TabTitleText>}>
+                                <Gallery key={"gallery-" + labelText} hasGutter className="dsl-gallery">
+                                    {CamelUi.getSelectorModelsForParentFiltered(parentDsl, labelText, this.props.showSteps)
+                                        .filter((dsl: DslMetaModel) => this.checkFilter(dsl))
+                                        .map((dsl: DslMetaModel, index: number) => this.getCard(dsl, index))}
+                                </Gallery>
+                            </Tab>
+                        )
+                    })}
                 </Tabs>
             </PageSection>
         );
diff --git a/karavan-designer/src/designer/route/property/DslPropertyField.tsx b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
index 9dec9b1..4408ab5 100644
--- a/karavan-designer/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
@@ -44,7 +44,7 @@ import {ObjectField} from "./ObjectField";
 import {CamelDefinitionApi} from "karavan-core/lib/api/CamelDefinitionApi";
 import AddIcon from "@patternfly/react-icons/dist/js/icons/plus-circle-icon";
 import {MediaTypes} from "../../utils/MediaTypes";
-import {ComponentProperty} from "../../../../../karavan-core/lib/model/ComponentModels";
+import {ComponentProperty} from "karavan-core/lib/model/ComponentModels";
 
 interface Props {
     property: PropertyMeta,
diff --git a/karavan-designer/src/designer/utils/CamelUi.ts b/karavan-designer/src/designer/utils/CamelUi.ts
index 5dad20c..7d919df 100644
--- a/karavan-designer/src/designer/utils/CamelUi.ts
+++ b/karavan-designer/src/designer/utils/CamelUi.ts
@@ -79,14 +79,14 @@ export class RouteToCreate {
 
 export class CamelUi {
 
-    static getSelectorModelTypes = (parentDsl: string | undefined, showSteps: boolean = true): string[] => {
+    static getSelectorModelTypes = (parentDsl: string | undefined, showSteps: boolean = true): [string, number][] => {
         const navs =  CamelUi.getSelectorModelsForParent(parentDsl, showSteps).map(dsl => dsl.navigation.split(","))
             .reduce((accumulator, value) => accumulator.concat(value), [])
             .filter((nav, i, arr) => arr.findIndex(l => l === nav) === i)
             .filter((nav, i, arr) => ![ 'dataformat'].includes(nav));
         const connectorNavs = ['routing', "transformation", "error", "configuration", "endpoint", "kamelet", "component"];
         const eipLabels = connectorNavs.filter(n => navs.includes(n));
-        return eipLabels;
+        return eipLabels.map(label => [label, this.getSelectorModelsForParentFiltered(parentDsl, label, true).length]);
     }
 
     static dslHasSteps = (className: string): boolean => {
diff --git a/screenshots/karavan-vscode.png b/screenshots/karavan-vscode.png
deleted file mode 100644
index 036d10c..0000000
Binary files a/screenshots/karavan-vscode.png and /dev/null differ