Skip to content

WtPage ​

Верхній структурний рівень інтерфейсу: визначає компоновку сторінки та об'єднує один або декілька wt-layout в єдиний робочий простір.

Page
├── Header
└── Body
    └── Layout
        └── Content Wrapper
            └── Content
  • Займає 100% ширини та висоти контейнера.
  • Body розподіляє доступну ширину між Layout; при зміні розміру вікна простір перерозподіляється, мінімальні обмеження Layout лишаються активними.
  • Не містить безпосередньо контентних компонентів, бізнес-логіки чи візуального оформлення — лише Layout.

Props ​

PropDescription
navigationRail{ topItems?, bottomItems?, activeItemId? }: конфіг wt-navigation-rail

Навігаційна панель відображається зліва від body, під header. Вона з'являється, лише якщо хоча б один зі списків topItems / bottomItems не порожній; без пропа або з порожніми списками не рендериться.

Events ​

EventDescription
navigation-selectКлік по доступній кнопці панелі, payload: item

Slots ​

SlotDescription
headerШапка сторінки (напр. wt-app-header)
defaultBody: один або декілька wt-layout

CSS variables ​

VariableLightDark
--wt-page-background-color--p-surface-50--p-surface-850
--wt-page-padding-x / -y00
--wt-page-gap00
--wt-page-body-background-colortransparenttransparent
--wt-page-body-padding-x / -y--spacing-sm--spacing-sm
--wt-page-body-gap--spacing-sm--spacing-sm

Example Page ​

Fluid
Fixed 320px
Code
vue
<script setup>
import { ref } from 'vue';

const isSidePanelShown = ref(true);
</script>

<template>
  <div style="height: 480px">
    <wt-page>
      <template #header>
        <div style="height: 40px; background: lightblue" />
      </template>
      <wt-layout :default-width="320" resizable>
        <wt-content-wrapper align="stretch">
          <wt-button @click="isSidePanelShown = !isSidePanelShown">
            Toggle side layout
          </wt-button>
        </wt-content-wrapper>
      </wt-layout>
      <wt-layout>
        <wt-content-wrapper>Fluid</wt-content-wrapper>
      </wt-layout>
      <wt-layout v-if="isSidePanelShown" :default-width="320">
        <wt-content-wrapper>Fixed 320px</wt-content-wrapper>
      </wt-layout>
    </wt-page>
  </div>
</template>