🏡 index : quine-global-labs/bazaar.git

using Gtk 4.0;

template $BzAppTile: Button {
  styles [
    "card",
    "app-tile",
  ]

  child: Box {
    margin-start: 12;
    margin-end: 12;
    margin-top: 12;
    margin-bottom: 12;
    orientation: horizontal;
    spacing: 15;
    can-focus: false;

    Image {
      pixel-size: 64;
      paintable: bind try {template.group as <$BzEntryGroup>.ui-entry as <$BzResult>.object as <$BzEntry>.icon-paintable, template.icon-override};

      styles ["icon-dropshadow"]
    }

    Box content_box {
      valign: center;
      hexpand: true;
      orientation: vertical;
      spacing: 4;

      Box {
        orientation: horizontal;
        spacing: 6;

        Label {
          css-name: "app-tile-title";
          styles [
            "heading",
          ]

          xalign: 0.0;
          ellipsize: end;
          label: bind template.group as <$BzEntryGroup>.title;
        }

        Image {
          css-name: "app-tile-verified-check";
          styles [
            "verified",
          ]
          visible: bind template.group as <$BzEntryGroup>.is-verified;
          icon-name: "verified-checkmark-symbolic";
          pixel-size: 14;
          accessibility {
            label: _("Verified");
          }
        }
      }

      Label {
        css-name: "app-tile-description";
        xalign: 0.0;
        yalign: 0.0;
        wrap: true;
        ellipsize: end;
        vexpand: true;
        lines: bind $description_line_amount($is_zero(template.group as <$BzEntryGroup>.removable) as <bool>) as <int>;
        label: bind template.group as <$BzEntryGroup>.description;
      }
    }
  };
}