chore: starter template

This commit is contained in:
e2e
2026-07-10 20:17:46 +02:00
commit 5c1e65dc5f
157 changed files with 6462 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import React from 'react'
import { Box, Group, Stack, Text, Title } from '@mantine/core'
export interface PageHeaderProps {
/** Page title. Pass an i18n string from the app (m.foo()). */
title: React.ReactNode
/** Optional one-line description under the title. */
description?: React.ReactNode
/** Right-aligned actions (buttons, menus). */
actions?: React.ReactNode
}
// The single shared page header every screen uses: a title, optional
// description, and a right-aligned action slot. Keeps headers consistent across
// pages — compose it, don't hand-roll a per-page header.
export function PageHeader({ title, description, actions }: PageHeaderProps) {
return (
<Group justify="space-between" align="flex-end" wrap="nowrap" mb="xl">
<Stack gap={4} style={{ minWidth: 0 }}>
<Title order={1} fz={26} fw={680} style={{ letterSpacing: '-0.03em', lineHeight: 1.1 }}>
{title}
</Title>
{description ? (
<Text c="dimmed" size="sm" style={{ lineHeight: 1.5 }}>
{description}
</Text>
) : null}
</Stack>
{actions ? <Box style={{ flexShrink: 0 }}>{actions}</Box> : null}
</Group>
)
}