# Store manifest for exordos_ecosystem.
#
# Builds a "Магазин элементов" entry in the left menu and the storefront behind
# it, assembled entirely from constructor components: the tab strip, the search
# field, the banner, a "Популярное" shortlist and the full catalogue as grids of
# cards, an install control on every card, an element window and a
# notification. It follows the store design (web/elements_shop.png), the same
# one the hand-written page in web/src/pages/ElementStorePage.tsx follows.
#
# Two constructor features carry the page:
#
# * `list` draws its children once per record of its data source and hands each
#   copy that record as its runtime context, so one hand-built card becomes a
#   card per element and reads it through `context://<field>`.
# * The storefront source is /v1/store/elements/, the ecosystem endpoint that
#   merges the core repository with the ratings, review counts, display names
#   and tags of the settings file. `?order_by=reviews_count&limit=2` is what
#   makes the shortlist a shortlist.
#
# It is an element of this repository: `make build` renders it beside the
# ecosystem element, and it is installed from the build output:
#   exordos em elements install \
#     output/exordos-elements/ecosystem_ui_store/<version>/manifests/ui_store.yaml
#
# The conventions of exordos/manifests/examples/ui_example.yaml hold here too:
# every `props` block spells out ALL fields of its kind (the agent hashes the
# whole value it reads back), the tree is built with `parent_uuid`, and siblings
# are ordered by `position`.
#
# Unlike that manifest, this one creates no IAM resources: every component is
# filed under the ecosystem's own project, imported from the ecosystem element.
# That is the administration project (`[ui] admin_project_id`), so the storefront
# is read by every account beside the pages of the project it is signed into.

name: "ecosystem_ui_store"
description: "Elements store page built with the UI constructor"
schema_version: 1
version: "0.0.32"
api_version: "v1"

requirements:
  exordos_ecosystem:
    from_version: "0.0.0"
  core:
    from_version: "0.0.0"

imports:
  eco_project:
    element: "$exordos_ecosystem"
    kind: "resource"
    link: "$core.iam.projects.$eco_project"

resources:
  $exordos_ecosystem.ui.components:

    # ---------------------------------------------------------------- page --
    # Root of the storefront. The sidebar item at the end of the file points
    # at this component.
    store_page:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: panel
        name: "store-page"
        description: "Магазин элементов"
        width: null
        height: null
        stretch: true
        padding_top: 20
        padding_right: 20
        padding_bottom: 20
        padding_left: 20
        position: 0
        direction: column
        gap: 16
        justify_content: flex-start
        align_items: stretch
        parent_uuid: null
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#161C24"
        border_color: "#2A3340"
        border_width: 1
        border_radius: 12
        action:
          kind: dummy

    # ---------------------------------------------------------------- tabs --
    # The two tabs of the design. The active one is a button that does nothing
    # (`dummy`) and carries the light surface; the other links to the client's
    # own elements page, which is a plain internal route and not a component of
    # this manifest.
    store_tabs:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-tabs"
        description: ""
        width: null
        height: 36
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_tab_store:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: button
        name: "store-tab-store"
        description: ""
        width: 220
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_tabs:uuid
        css: ""
        conditional_visibility:
          kind: always
        label: "Магазин элементов"
        background_color: "#FFFFFF"
        text_color: "#0F1319"
        action:
          kind: dummy
        border_radius_top_left: null
        border_radius_top_right: null
        border_radius_bottom_right: null
        border_radius_bottom_left: null

    store_tab_elements:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: button
        name: "store-tab-elements"
        description: ""
        width: 180
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_tabs:uuid
        css: ""
        conditional_visibility:
          kind: always
        label: "Мои элементы"
        background_color: "#222A34"
        text_color: "#E5E7EB"
        action:
          kind: link
          link: "/account/elements"
        border_radius_top_left: null
        border_radius_top_right: null
        border_radius_bottom_right: null
        border_radius_bottom_left: null

    # -------------------------------------------------------------- search --
    # A search filters whichever component draws the collection, so it points at
    # the catalogue below: a card whose record does not contain what was typed
    # drops out of the grid. It filters the records already loaded, which is what
    # the hand-written page does as well.
    store_search:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: search
        name: "store-search"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        placeholder: "Поиск по элементам"
        table_uuid: $exordos_ecosystem.ui.components.$store_all_list:uuid
        border_radius_top_left: 10
        border_radius_top_right: 10
        border_radius_bottom_right: 10
        border_radius_bottom_left: 10

    # ---------------------------------------------------------------- hero --
    # The banner of the design: an empty tile the width of the page.
    store_hero:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: panel
        name: "store-hero"
        description: ""
        width: null
        height: 180
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: column
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#8A94A6"
        border_color: "#8A94A6"
        border_width: 0
        border_radius: 16
        action:
          kind: dummy

    # ------------------------------------------------------------- popular --
    # The shortlist: the two most-reviewed elements, ordered and cut by the
    # storefront endpoint itself. Review counts come from the settings file, which
    # is exactly what that endpoint merges in. Both sources refresh every five
    # seconds, the clock the store pages of the web client run on.
    store_popular_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Популярное"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-popular-source"
        description: "Самые популярные элементы витрины"
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        url: "/api/ecosystem/v1/store/elements/?order_by=reviews_count&limit=2"
        method: GET
        refresh_method:
          kind: periodic
          seconds: 5
        conditional_visibility:
          kind: always

    store_popular_list:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-popular-list"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 4
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        data_source_uuid: $exordos_ecosystem.ui.components.$store_popular_source:uuid
        items_path: ""
        columns: 2

    # The card of the design, drawn once per record of the list above: the
    # element's icon beside its name and summary, its rating, and the install
    # control. Everything inside reads the element the copy stands for through
    # `context://<field>`, and the card itself opens the element window on it.
    store_popular_card:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: panel
        name: "store-popular-card"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 16
        padding_right: 16
        padding_bottom: 16
        padding_left: 16
        position: 0
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_list:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#222A34"
        border_color: "#2A3340"
        border_width: 1
        border_radius: 12
        action:
          kind: open_window
          window_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
          method: GET
          url: "/api/ecosystem/v1/store/elements/{uuid}"

    store_popular_card_head:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-popular-card-head"
        description: ""
        width: null
        height: 92
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: flex-start
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_popular_card_icon:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-popular-card-icon"
        description: ""
        width: 92
        height: 92
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_head:uuid
        css: "border-radius: 8px"
        conditional_visibility:
          kind: always
        urn: "context://icon"
        alt: "context://display_name"

    store_popular_card_text:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-popular-card-text"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: column
        gap: 4
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_head:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_popular_card_name:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-name"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_text:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://display_name"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_summary:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-summary"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_text:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://summary"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_rating_row:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-popular-card-rating-row"
        description: ""
        width: null
        height: 20
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 6
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_popular_card_star:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-star"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "★"
        font_size: 14
        text_color: "#F5C451"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_rating:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-rating"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://rating"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_reviews:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-reviews"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://reviews_count"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_reviews_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-popular-card-reviews-caption"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "оценок"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_popular_card_versions_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-popular-card-versions-source"
        description: "Стабильные версии элемента карточки"
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card:uuid
        url: "/api/core/v1/repo/store/elements/{uuid}/actions/stable_versions"
        method: GET
        refresh_method:
          kind: once
        conditional_visibility:
          kind: always

    store_popular_card_install_row:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-popular-card-install-row"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_popular_card_install:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: button
        name: "store-popular-card-install"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_install_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        label: "Установить"
        background_color: "#FFFFFF"
        text_color: "#0F1319"
        action:
          kind: request
          method: POST
          url: "/api/core/v1/repo/elements/{component://66666666-6666-4666-8666-666666666666/value}/actions/install/invoke"
          confirm: "Установить элемент «{display_name}»?"
          on_success:
            - kind: open_window
              window_uuid: $exordos_ecosystem.ui.components.$store_installed_window:uuid
        border_radius_top_left: 10
        border_radius_top_right: 0
        border_radius_bottom_right: 0
        border_radius_bottom_left: 10

    store_popular_card_version_select:
      uuid: "66666666-6666-4666-8666-666666666666"
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: select
        name: "store-popular-card-version-select"
        description: ""
        width: 44
        height: 36
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_popular_card_install_row:uuid
        css: "background-color: #FFFFFF; color: #0F1319; border-color: #FFFFFF; border-left: 1px solid #D4D8DE; border-radius: 0 10px 10px 0; min-height: 0"
        conditional_visibility:
          kind: always
        placeholder: ""
        value: "context://uuid"
        options: []
        data_source_uuid: $exordos_ecosystem.ui.components.$store_popular_card_versions_source:uuid
        value_path: "uuid"
        label_path: "version"
        chevron_only: true
        action:
          kind: dummy
        option_columns:
          - path: "version"
            format: "text"
          - path: "size"
            format: "size"
          - path: "published_at"
            format: "date"

    # ----------------------------------------------------------- catalogue --
    # The full catalogue as the same grid of cards. The install control reloads
    # this source as soon as the platform accepted the request, so a card does not
    # wait out even the five seconds until the next refresh.
    store_all_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 5
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Все элементы"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-all-source"
        description: "Элементы витрины"
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        url: "/api/ecosystem/v1/store/elements/"
        method: GET
        refresh_method:
          kind: periodic
          seconds: 5
        conditional_visibility:
          kind: always

    store_all_list:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-all-list"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 6
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        data_source_uuid: $exordos_ecosystem.ui.components.$store_all_source:uuid
        items_path: ""
        columns: 2

    store_all_card:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: panel
        name: "store-all-card"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 16
        padding_right: 16
        padding_bottom: 16
        padding_left: 16
        position: 0
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_list:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#222A34"
        border_color: "#2A3340"
        border_width: 1
        border_radius: 12
        action:
          kind: open_window
          window_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
          method: GET
          url: "/api/ecosystem/v1/store/elements/{uuid}"

    store_all_card_head:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-all-card-head"
        description: ""
        width: null
        height: 92
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: flex-start
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_all_card_icon:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-all-card-icon"
        description: ""
        width: 92
        height: 92
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_head:uuid
        css: "border-radius: 8px"
        conditional_visibility:
          kind: always
        urn: "context://icon"
        alt: "context://display_name"

    store_all_card_text:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-all-card-text"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: column
        gap: 4
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_head:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_all_card_name:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-name"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_text:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://display_name"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_summary:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-summary"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_text:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://summary"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_rating_row:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-all-card-rating-row"
        description: ""
        width: null
        height: 20
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 6
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_all_card_star:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-star"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "★"
        font_size: 14
        text_color: "#F5C451"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_rating:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-rating"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://rating"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_reviews:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-reviews"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://reviews_count"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_reviews_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-all-card-reviews-caption"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_rating_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "оценок"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_all_card_versions_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-all-card-versions-source"
        description: "Стабильные версии элемента карточки"
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card:uuid
        url: "/api/core/v1/repo/store/elements/{uuid}/actions/stable_versions"
        method: GET
        refresh_method:
          kind: once
        conditional_visibility:
          kind: always

    store_all_card_install_row:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-all-card-install-row"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_all_card_install:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: button
        name: "store-all-card-install"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_install_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        label: "Установить"
        background_color: "#FFFFFF"
        text_color: "#0F1319"
        action:
          kind: request
          method: POST
          url: "/api/core/v1/repo/elements/{component://77777777-7777-4777-8777-777777777777/value}/actions/install/invoke"
          confirm: "Установить элемент «{display_name}»?"
          on_success:
            - kind: reload_data_source
              data_source_uuid: $exordos_ecosystem.ui.components.$store_all_source:uuid
            - kind: open_window
              window_uuid: $exordos_ecosystem.ui.components.$store_installed_window:uuid
        border_radius_top_left: 10
        border_radius_top_right: 0
        border_radius_bottom_right: 0
        border_radius_bottom_left: 10

    store_all_card_version_select:
      uuid: "77777777-7777-4777-8777-777777777777"
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: select
        name: "store-all-card-version-select"
        description: ""
        width: 44
        height: 36
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_all_card_install_row:uuid
        css: "background-color: #FFFFFF; color: #0F1319; border-color: #FFFFFF; border-left: 1px solid #D4D8DE; border-radius: 0 10px 10px 0; min-height: 0"
        conditional_visibility:
          kind: always
        placeholder: ""
        value: "context://uuid"
        options: []
        data_source_uuid: $exordos_ecosystem.ui.components.$store_all_card_versions_source:uuid
        value_path: "uuid"
        label_path: "version"
        chevron_only: true
        action:
          kind: dummy
        option_columns:
          - path: "version"
            format: "text"
          - path: "size"
            format: "size"
          - path: "published_at"
            format: "date"

    store_element_window:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: window
        name: "store-element-window"
        description: ""
        width: 760
        height: 620
        stretch: true
        padding_top: 20
        padding_right: 20
        padding_bottom: 20
        padding_left: 20
        position: 7
        direction: column
        gap: 24
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#161C24"
        border_color: "#2A3340"
        border_width: 1
        border_radius: 12
        action:
          kind: dummy
        title: "Элемент"
        left: 160
        top: 100
        placement: free
        auto_close_ms: 0

    store_element_hero:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-hero"
        description: ""
        width: null
        height: 190
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 16
        justify_content: flex-start
        align_items: flex-start
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_icon:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-element-icon"
        description: ""
        width: 190
        height: 190
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_hero:uuid
        css: "border-radius: 12px"
        conditional_visibility:
          kind: always
        urn: "context://icon"
        alt: "context://display_name"

    store_element_intro:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-intro"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: column
        gap: 6
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_hero:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_title:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-title"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_intro:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://display_name"
        font_size: 28
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_publisher:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-publisher"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_intro:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://publisher/display_name"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_facts:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-facts"
        description: ""
        width: null
        height: 20
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 10
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_intro:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_version_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-version-caption"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "v"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_version:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-version"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://version"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_published:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-published"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://published_at"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_star:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-star"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "★"
        font_size: 14
        text_color: "#F5C451"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_rating:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-rating"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 4
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://rating"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 5
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://reviews_count"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-caption"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 6
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_facts:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "оценок"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_versions_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-versions-source"
        description: "Стабильные версии элемента"
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        url: "/api/core/v1/repo/store/elements/{uuid}/actions/stable_versions"
        method: GET
        refresh_method:
          kind: once
        conditional_visibility:
          kind: always

    store_element_install_row:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-install-row"
        description: ""
        width: 244
        height: 36
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_intro:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_version_select:
      uuid: "55555555-5555-4555-8555-555555555555"
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: select
        name: "store-element-version-select"
        description: ""
        width: 44
        height: 36
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_install_row:uuid
        css: "background-color: #FFFFFF; color: #0F1319; border-color: #FFFFFF; border-left: 1px solid #D4D8DE; border-radius: 0 10px 10px 0; min-height: 0"
        conditional_visibility:
          kind: always
        placeholder: ""
        value: "context://uuid"
        options: []
        data_source_uuid: $exordos_ecosystem.ui.components.$store_versions_source:uuid
        value_path: "uuid"
        label_path: "version"
        chevron_only: true
        # Picking a version asks the storefront for that version of the element
        # and reopens this window on the answer, so the title, the facts, the
        # description and the manifest below all follow the pick.
        action:
          kind: open_window
          window_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
          method: GET
          url: "/api/ecosystem/v1/store/elements/{component://55555555-5555-4555-8555-555555555555/value}"
        option_columns:
          - path: "version"
            format: "text"
          - path: "size"
            format: "size"
          - path: "published_at"
            format: "date"

    store_element_install:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: button
        name: "store-element-install"
        description: ""
        width: null
        height: 36
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_install_row:uuid
        css: ""
        conditional_visibility:
          kind: always
        label: "Установить"
        background_color: "#FFFFFF"
        text_color: "#0F1319"
        action:
          kind: request
          method: POST
          url: "/api/core/v1/repo/elements/{component://55555555-5555-4555-8555-555555555555/value}/actions/install/invoke"
          confirm: "Установить элемент «{display_name}»?"
          on_success:
            - kind: reload_data_source
              data_source_uuid: $exordos_ecosystem.ui.components.$store_all_source:uuid
            - kind: open_window
              window_uuid: $exordos_ecosystem.ui.components.$store_installed_window:uuid
        border_radius_top_left: 10
        border_radius_top_right: 0
        border_radius_bottom_right: 0
        border_radius_bottom_left: 10

    store_element_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    # The gallery of the design: one tile per screenshot the element carries.
    # An entry is a plain address rather than a record, and the picture below
    # reaches it through `context://value`. An element with no screenshots at
    # all draws the placeholder pair beside this list instead.
    store_element_gallery:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-element-gallery"
        description: ""
        width: null
        height: 260
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: not_equals
          left: "context://screenshots/0"
          right: ""
        data_source_uuid: null
        items_path: "screenshots"
        columns: 0

    store_element_shot:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-element-shot"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_gallery:uuid
        css: "border-radius: 12px; object-fit: cover"
        conditional_visibility:
          kind: always
        urn: "context://value"
        alt: "context://value"

    store_element_gallery_empty:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-gallery-empty"
        description: ""
        width: null
        height: 260
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 12
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: equals
          left: "context://screenshots/0"
          right: ""

    store_element_shot_placeholder_1:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-element-shot-placeholder-1"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_gallery_empty:uuid
        css: "border-radius: 12px"
        conditional_visibility:
          kind: always
        urn: ""
        alt: ""

    store_element_shot_placeholder_2:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: picture
        name: "store-element-shot-placeholder-2"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_gallery_empty:uuid
        css: "border-radius: 12px"
        conditional_visibility:
          kind: always
        urn: ""
        alt: ""

    store_element_description_section:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-description-section"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 4
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_description_section_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-description-section-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_description_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Описание"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_description_section_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-description-section-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_description_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    store_element_description:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-description"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_description_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://description"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: true
        copyable: true
        expandable: false

    store_element_metadata_section:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-section"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 5
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_section_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-section-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Метаданные элемента"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_section_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-metadata-section-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    store_element_metadata:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: column
        gap: 6
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_section:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_version:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-version"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_version_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-version-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_version:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Версия"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_version_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-version-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_version:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://version"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_status:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-status"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_status_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-status-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_status:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Статус"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_status_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-status-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_status:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://status"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_published:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-published"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_published_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-published-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_published:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Опубликован"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_published_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-published-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_published:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://published_at"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_updated:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-updated"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_updated_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-updated-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_updated:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Обновлён"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_updated_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-updated-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_updated:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://updated_at"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_publisher:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-publisher"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 4
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_publisher_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-publisher-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_publisher:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Издатель"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_publisher_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-publisher-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_publisher:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://publisher/company"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_website:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-website"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 5
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_website_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-website-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_website:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Сайт"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_website_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-website-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_website:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://website"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: "context://website"
        open_in_new_tab: true
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_license:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-license"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 6
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_license_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-license-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_license:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Лицензия"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_license_value:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-license-value"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_license:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://license"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    # The elements this one needs, read from the manifest it carries.
    # `requirements` files each dependency under its own name, and a list over a
    # map hands the name to the row as `key`, so the row draws "core 0.0.0".
    # The row grows with the list instead of holding a line's height.
    store_element_metadata_requirements:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-requirements"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 7
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: flex-start
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_requirements_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-requirements-caption"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_requirements:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Зависимости"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_requirements_list:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-element-metadata-requirements-list"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: column
        gap: 4
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_requirements:uuid
        css: ""
        conditional_visibility:
          kind: always
        data_source_uuid: null
        items_path: "manifest.requirements"
        columns: 0

    store_element_metadata_requirement:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-metadata-requirement"
        description: ""
        width: null
        height: 20
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 6
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_requirements_list:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_metadata_requirement_name:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-requirement-name"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_requirement:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://key"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_metadata_requirement_version:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-metadata-requirement-version"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_metadata_requirement:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://from_version"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_section:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-reviews-section"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 6
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_reviews_section_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-section-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Отзывы"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_section_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-reviews-section-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    store_element_reviews_summary:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-reviews-summary"
        description: ""
        width: null
        height: 24
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_section:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_reviews_star:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-star"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_summary:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "★"
        font_size: 18
        text_color: "#F5C451"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_rating:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-rating"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_summary:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://rating"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_scale:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-scale"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_summary:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "из 5"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_count:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-count"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_summary:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://reviews_count"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_reviews_count_caption:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-reviews-count-caption"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 4
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_summary:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "оценок"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_reviews_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-reviews-source"
        description: "Отзывы об элементе"
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        url: "/api/ecosystem/v1/store/reviews/?name={name}"
        method: GET
        refresh_method:
          kind: once
        conditional_visibility:
          kind: always

    store_reviews_list:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-reviews-list"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_reviews_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        data_source_uuid: $exordos_ecosystem.ui.components.$store_reviews_source:uuid
        items_path: ""
        columns: 0

    store_review:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: panel
        name: "store-review"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 12
        padding_right: 12
        padding_bottom: 12
        padding_left: 12
        position: 0
        direction: column
        gap: 4
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_reviews_list:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#1B2430"
        border_color: "#2A3340"
        border_width: 1
        border_radius: 12
        action:
          kind: dummy

    store_review_head:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-review-head"
        description: ""
        width: null
        height: 20
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_review:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_review_author:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-review-author"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_review_head:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://author"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_review_star:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-review-star"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_review_head:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "★"
        font_size: 14
        text_color: "#F5C451"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_review_rating:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-review-rating"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_review_head:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://rating"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_review_published:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-review-published"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 3
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_review_head:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://published_at"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_review_text:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-review-text"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_review:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://text"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_changelog_section:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-changelog-section"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 7
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_changelog_section_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-changelog-section-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_changelog_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "История изменений"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_changelog_section_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-changelog-section-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_changelog_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    store_changelog_source:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: data_source
        name: "store-changelog-source"
        description: "История изменений элемента"
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        url: "/api/ecosystem/v1/store/changelog/?name={name}"
        method: GET
        refresh_method:
          kind: once
        conditional_visibility:
          kind: always

    store_changelog_list:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: list
        name: "store-changelog-list"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: column
        gap: 6
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_changelog_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        data_source_uuid: $exordos_ecosystem.ui.components.$store_changelog_source:uuid
        items_path: ""
        columns: 0

    store_changelog_entry:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-changelog-entry"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 8
        justify_content: flex-start
        align_items: flex-start
        parent_uuid: $exordos_ecosystem.ui.components.$store_changelog_list:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_changelog_version:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-changelog-version"
        description: ""
        width: 80
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_changelog_entry:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://version"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_changelog_published:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-changelog-published"
        description: ""
        width: 160
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_changelog_entry:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://published_at"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_changelog_text:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-changelog-text"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_changelog_entry:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "context://text"
        font_size: 14
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    # -------------------------------------------------------- notification --
    # Raised by both install controls. It is pinned to the top right corner and
    # closes itself, and it centres its message the way the banner does. The
    # install answers with an empty body, so the message is a fixed text rather
    # than a `context://` reference.
    store_installed_window:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: window
        name: "store-installed-window"
        description: ""
        width: 360
        height: 140
        stretch: true
        padding_top: 16
        padding_right: 16
        padding_bottom: 16
        padding_left: 16
        position: 8
        direction: column
        gap: 12
        justify_content: center
        align_items: center
        parent_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        css: ""
        conditional_visibility:
          kind: always
        background_color: "#1F2E24"
        border_color: "#2F5941"
        border_width: 1
        border_radius: 12
        action:
          kind: dummy
        title: "Установка запущена"
        left: 280
        top: 120
        placement: top_right
        auto_close_ms: 4000

    store_installed_message:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-installed-message"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_installed_window:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Элемент устанавливается"
        font_size: 14
        text_color: "#E5E7EB"
        text_align: center
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_manifest_section:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: view
        name: "store-element-manifest-section"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 8
        direction: column
        gap: 8
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_window:uuid
        css: ""
        conditional_visibility:
          kind: always

    store_element_manifest_section_heading:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-manifest-section-heading"
        description: ""
        width: null
        height: null
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 0
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_manifest_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        value: "Манифест"
        font_size: 18
        text_color: "#E5E7EB"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: false
        copyable: false
        expandable: false

    store_element_manifest_section_rule:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: line
        name: "store-element-manifest-section-rule"
        description: ""
        width: 720
        height: 8
        stretch: false
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 1
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_manifest_section:uuid
        css: ""
        conditional_visibility:
          kind: always
        x1: 0
        y1: 4
        x2: 720
        y2: 4
        thickness: 1
        color: "#2A3340"
        line_style: "solid"

    store_element_manifest:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: label
        name: "store-element-manifest"
        description: ""
        width: null
        height: null
        stretch: true
        padding_top: 0
        padding_right: 0
        padding_bottom: 0
        padding_left: 0
        position: 2
        direction: row
        gap: 0
        justify_content: flex-start
        align_items: stretch
        parent_uuid: $exordos_ecosystem.ui.components.$store_element_manifest_section:uuid
        css: "white-space: pre; font-family: monospace"
        conditional_visibility:
          kind: always
        value: "context://manifest"
        font_size: 12
        text_color: "#9CA3AF"
        text_align: left
        link: ""
        open_in_new_tab: false
        scrollable: true
        copyable: true
        expandable: true

  $exordos_ecosystem.ui.sidebar_items:

    store_item:
      project_id: $ecosystem_ui_store.imports.$eco_project:uuid
      props:
        kind: sidebar_item
        name: "Магазин элементов"
        description: "Витрина элементов Exordos"
        position: 0
        component_uuid: $exordos_ecosystem.ui.components.$store_page:uuid
        icon: elementStore