code: public static function groupList($items, $options = [])
      {
          Ui::addCssClasses($options, ['ui', 'list']);
          $lines = [];
          foreach ($items as $item) {
              if (is_string($item)) {
                  $lines[] = $item;
  
              } else {
                  $icon = ArrayHelper::remove($item, 'icon');
                  $image = ArrayHelper::remove($item, 'image');
                  $header = ArrayHelper::remove($item, 'header');
                  $description = ArrayHelper::remove($item, 'description');
                  if ($description) {
                      $description = Ui::tag('div', $description, ['class' => 'description']);
                  }
  
                  $content = [];
                  $content[] = $icon;
                  $content[] = $image;
                  if ($header || $description) {
                      $content[] = Ui::tag('div', $header . $description, ['class' => 'content']);
                  }
                  $lines[] = Ui::tag('div', implode("\n", $content), $item);
              }
          }
          return Ui::tag('div', implode("\n", $lines), $options);
      }
docs: Generates a group list @see http://semantic-ui.com/elements/list.html
  
  @param array $items the items to render on the group. Each item configuration supports these special options:
  - icon, string, optional, the item's icon
  - image, string, optional, the item's image
  - header, string, optional, the item's header
  - description, string, option, the description of the item
  @param array $options the tag options in terms of name-value pairs of the layer containing the list group
  
  @return string the generated list