Компоненты макета

<Box>, <Text>, <ScrollBox>, <Modal>, <SplitPane>, <Stack>, <Grid>, <Spacer>, <Divider> и <Badge>.

Эти примитивы формируют макет сетки ячеек с помощью Yoga flexbox.

<Box>

Контейнер макета.

Вживую64×14 · booting Turbolog…tsx
preview://layout:1
<Box className="flex-row gap-2 p-1 border rounded">  <Box className="flex-col grow border rounded px-1 bg-surface">    <Text bold>Sidebar</Text>  </Box>  <Box className="flex-col grow border rounded px-1 border-accent">    <Text color="accent">Content</Text>  </Box></Box>
PropОписание
classNameУтилиты для ячеек
bordersingle rounded double heavy dashed
titleТекст, встроенный в верхнюю границу
bg / fgЦвет фона и текста
overflowhidden или scroll

<Text>

Строчный текст. Вложенные <Text> становятся span со стилями.

<Text wrap="truncate-end">  <Text bold>Deployed</Text> to <Text color="accent">production</Text></Text>
PropОписание
colorЦвет текста
bold italic underline dimАтрибуты
wrapwrap nowrap truncate-end

<ScrollBox>

Прокручиваемый столбец. stickyScroll удерживает прокрутку у нижнего края по мере добавления содержимого.

Вживую60×12 · booting Turbolog…tsx
preview://scrollbox:1
<ScrollBox stickyScroll focusable className="border rounded px-1" height={8}>  {logs.map((line, i) => <Text key={i}>{line}</Text>)}</ScrollBox>

Центрированный оверлей, который затемняет содержимое под ним и удерживает фокус внутри.

Вживую72×14 · booting Turbolog…tsx
preview://modal:1
<Modal title=" Commands " onClose={() => setOpen(false)} width={48}>  <Select searchable autoFocus options={commands} onChange={run} /></Modal>

Spacer, Divider и Badge

<Spacer /><Divider title="Deployments" /><Badge variant="success">READY</Badge><KeyHint keys="⌘K" label="search" />

Вспомогательные компоненты макета

Сокращённые записи для типовых компоновок flex.

<Center>  <Text>Nothing deployed yet</Text></Center><Stack gap={1} divider>  <Overview />  <Deployments /></Stack><Grid columns={3} gap={1}>  {metrics.map((m) => <Metric key={m.id} {...m} />)}</Grid>

<SplitPane>

Две панели и разделитель. С resizable разделитель включается в порядок перехода по Tab, а ← → меняют размер панелей (с Shift на пять ячеек).

<SplitPane defaultSize={0.3} resizable minSize={16}>  <Sidebar />  <Content /></SplitPane>

size задаёт долю (0.3) или число ячеек (24). direction="column" располагает панели друг под другом.

Изменить эту страницу на GitHub