diff --git a/docs/30_Page/20_Navigation.md b/docs/30_Page/20_Navigation.md
index 2b4daa9ea14addb8e1bb774b28b98e3e69ccbfca..e1aad06399d0426d17ab0cae81447b947adc4c24 100644
--- a/docs/30_Page/20_Navigation.md
+++ b/docs/30_Page/20_Navigation.md
@@ -72,4 +72,20 @@ $aReplace['{{NAVI_LEFT}}']=''
         'nav', ['class'=>'mt-2'],
         $renderAdminLTE->getSidebarNavigation($aSidebarNav)
     );
-```
\ No newline at end of file
+```
+
+### Navigation hacks
+
+#### Sidebar
+
+To render a horizontal line in the sidebar menu, add a navigation item with label '-'
+
+```php
+$aSidebarNav[]=['href'=>'#', 'label'=>'-'];
+```
+
+In your css file add a rule:
+
+```css
+.nav-item hr{color: #505860; border-top: 1px solid; height: 1px; padding: 0; margin: 0; }
+```
diff --git a/docs/50_Forms/Select.md b/docs/50_Forms/Select.md
new file mode 100644
index 0000000000000000000000000000000000000000..415a7f312baf18ebb6511bff41847cc410531e1a
--- /dev/null
+++ b/docs/50_Forms/Select.md
@@ -0,0 +1,75 @@
+## Select
+
+Draw aselect box with option fields
+
+### Syntax
+
+```php
+$renderAdminLTE->getFormSelect($aOptions);
+```
+
+### Return
+
+{string} html code
+
+### Parameters
+
+* $aOptions - {array} options to describe the element
+
+Option fields:
+
+Key      | Description
+---      | ---
+options  | List of option tags<br> - value   - value in the option<br> - label   - visible text in the option<br>other keys are attributes in the option
+
+Styling for select tag:
+
+Key      | Description
+---      | ---
+class    | optional: additional css classes
+size     | optional: visible option lines
+
+Content:
+
+Key      | Description
+---      | ---
+name     | name attribute for sending form data
+value    | value of the input field/ visible text; for checkbox and radio: the data to send when sending a form
+
+### Example
+
+#### Simple select box
+
+```php
+$renderAdminLTE->getFormSelect(array
+(
+    'label' => 'Select contact',
+    'name' => 'contact',
+    'tag' => 'select',
+    'size' => 1,
+    'options' => [
+            ['value' => '',  'label' => 'select'],
+            ['value' => '1', 'label' => 'Tom'],
+            ['value' => '2', 'label' => 'Dick', 'selected' => 1 ],
+            ['value' => '3', 'label' => 'Harry'],
+    ],
+));
+```
+
+You get a label, an select box wrapped in a ``<div class="form-group row">``.
+
+```html
+<div class="form-group row">
+    <label for="contact-39c4c14176af359d95e81c45078f27f3" class="col-sm-2 col-form-label">Select contact</label>
+    <div class="col-sm-10">
+        <div class="form-group">
+            <select name="contact" tag="select" size="1" class="form-control ">
+                <option value="">select</option>
+                <option value="1">Tom</option>
+                <option value="2" selected="1">Dick</option>
+                <option value="3">Harry</option>
+            </select>
+        </div>
+    </div>
+</div>
+```
diff --git a/public_html/classes/render-adminlte.class.php b/public_html/classes/render-adminlte.class.php
index 72f2e76b16ee60ab361530ccb858634633151439..1035af9dac0f6e7adc4704f6e9cca0fa36851aca 100755
--- a/public_html/classes/render-adminlte.class.php
+++ b/public_html/classes/render-adminlte.class.php
@@ -11,6 +11,7 @@ require_once 'htmlelements.class.php';
  * 2023-09-11  <axel.hahn@unibe.ch>  add shadows on card + callout
  * 2023-09-27  <axel.hahn@unibe.ch>  add form input fields
  * 2023-11-17  <axel.hahn@unibe.ch>  add tabbed content; "=" renders hamburger item
+ * 2024-05-03  <axel.hahn@unibe.ch>  add line in sidebar menu; add getFormSelect
  * ======================================================================
  *
  * @author Axel
@@ -669,7 +670,12 @@ class renderadminlte {
 
 
     /** 
-     * get a navigation items for sidebar
+     * Get a navigation items for sidebar
+     * Links can be nested with the key "children".
+     * 
+     * Remark: for a horizontal line ($aLink['label']='-') this css is required
+     *   .nav-item hr{color: #505860; border-top: 1px solid; height: 1px; padding: 0; margin: 0; }
+     * 
      * @param  array  $aLinks  list of link items
      */
     public function getNavi2Items($aLinks){
@@ -677,7 +683,14 @@ class renderadminlte {
         if (!$aLinks || !is_array($aLinks) || !count($aLinks)){
             return false;
         }
+        
         foreach($aLinks as $aLink){
+
+            if ($aLink['label']=='-') {
+                // TODO: draw a nice line
+                $sReturn.='<li class="nav-item"><hr></li>';  
+                continue;
+            }
             // to render active or open links: 
             $aLink['class']='nav-link' . (isset($aLink['class']) ? ' '.$aLink['class'] : '');
 
@@ -1117,7 +1130,7 @@ class renderadminlte {
      * A colored box with large icon, text and a value.
      * https://adminlte.io/docs/3.2/components/boxes.html
      * 
-     * @param type $aOptions  hash with keys for all options
+     * @param array $aOptions  hash with keys for all options
      *                        styling:
      *                          - type    - color of the box; one of [none]|danger|dark|info|primary|secondary|success|warning
      *                          - iconbg  - background color or type of icon; use it for default type (type="")
@@ -1242,7 +1255,7 @@ class renderadminlte {
      * return a text input field:
      * https://adminlte.io/themes/v3/pages/forms/general.html
      * 
-     * @param type $aOptions  hash with keys for all options
+     * @param array $aOptions  hash with keys for all options
      *                        styling:
      *                          - type    - field type: text, email, password, hidden and all other html 5 input types
       *                        content
@@ -1310,8 +1323,8 @@ class renderadminlte {
     }
 
     /**
-     * return a textare field .. or html editor using summernote
-     * @param type $aOptions  hash with keys for all options
+     * return a textarea field .. or html editor using summernote
+     * @param array $aOptions  hash with keys for all options
      *                        styling:
      *                          - type    - field type: [none]|html
      *                        content
@@ -1348,6 +1361,58 @@ class renderadminlte {
 
     }
 
+    /**
+     * return a select box field
+     * @param array $aOptions  hash with keys for all options
+     *                        styling:
+     *                          - class   - css class
+     *                        option fields
+     *                          - options - array of options with keys per item:
+     *                              - value   - value in the option
+     *                              - label   - visible text in the option
+     *                              other keys are attributes in the option
+     *                        select tag
+     *                          - label   - label tag
+     *                          - name    - name attribute for sending form
+     *                          other keys are attributes in the select
+     * @return string
+     */
+    public function getFormSelect($aOptions){
+        $aElement=$aOptions;
+        $aElement['class']=''
+            . 'form-control '
+            . (isset($aOptions['class']) ? $aOptions['class']: '')
+        ;
+        
+        $sLabel=isset($aOptions['label']) ? $aOptions['label'] : '';
+        $sFormid=(isset($aOptions['id']) 
+        
+            ? $aOptions['id'] 
+            : (isset($aOptions['name']) ? $aOptions['name'] : 'field' ).'-'.md5(microtime(true))
+        );
+
+        $sOptionTags='';
+        foreach($aOptions['options'] as $aField){
+            $optionText=$aField['label'];
+            unset($aField['label']);
+            $sOptionTags.=$this->_tag('option', $aField, $optionText )."\n";
+        }
+
+        foreach(['_infos', 'label', 'debug','type', 'value', 'options'] as $sDeleteKey){
+            if(isset($aElement[$sDeleteKey])){
+                unset($aElement[$sDeleteKey]);
+            }
+        }
+        return $this->getHorizontalFormElement(
+            $this->_tag('div', ['class'=>'form-group'],
+                $this->_tag('select', $aElement, $sOptionTags)
+                ), 
+                $sLabel, 
+                $sFormid
+            );
+
+    }
+
     // ----------------------------------------------------------------------
     // 
     // PUBLIC FUNCTIONS :: CONTENT - TABBED CONTENT