Files
metabuilder/frontends/qt6/FrontPage.qml

229 lines
9.0 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import "qmllib/MetaBuilder" as MetaBuilder
Rectangle {
id: root
width: 1280
height: 900
color: "#03030a"
property var featureHighlights: [
{ title: "Visual stacks", desc: "Compose landing, admin, and observability panels through drag-and-drop sections." },
{ title: "Observability built in", desc: "Monitor DBAL, Prisma, and daemon health from a single cockpit." },
{ title: "Config-first", desc: "Declarative seeds keep designers and developers aligned." }
]
property var ciRuns: [
{ name: "frontends-nextjs-build", status: "passing" },
{ name: "dbal-unit-tests", status: "passing" },
{ name: "prisma-migrations", status: "running" }
]
property var statusItems: [
{ label: "DBAL stack", value: "healthy" },
{ label: "Prisma migrations", value: "pending" },
{ label: "Daemon progress", value: "building" }
]
Rectangle {
anchors.fill: parent
gradient: Gradient {
GradientStop { position: 0.0; color: "#040b22" }
GradientStop { position: 0.5; color: "#0b1121" }
GradientStop { position: 1.0; color: "#03030a" }
}
}
MetaBuilder.NavBar {
id: navBar
anchors {
top: parent.top
left: parent.left
right: parent.right
}
onActionTriggered: console.log("navbar action:", action)
}
ScrollView {
anchors {
top: navBar.bottom
left: parent.left
right: parent.right
bottom: parent.bottom
}
anchors.margins: 24
clip: true
ColumnLayout {
width: parent.width - 24
spacing: 28
MetaBuilder.HeroSection {
Layout.fillWidth: true
onPrimaryAction: console.log("Hero primary action")
onSecondaryAction: console.log("Hero secondary action")
}
TabView {
width: parent.width
height: 420
background: Rectangle { color: "transparent" }
Tab {
title: "Home"
Rectangle {
anchors.fill: parent
color: "transparent"
ColumnLayout {
anchors.fill: parent
spacing: 24
Rectangle {
width: parent.width
radius: 12
color: "#0b1121"
border.color: "#1d1f2f"
border.width: 1
padding: 22
ColumnLayout {
spacing: 12
Text {
text: "Why builders choose MetaBuilder"
font.pixelSize: 22
color: "#f6f9ff"
}
RowLayout {
width: parent.width
spacing: 16
Repeater {
model: featureHighlights
delegate: MetaBuilder.FeatureCard {
Layout.fillWidth: true
Layout.preferredWidth: (parent.width - 32) / 3
title: modelData.title
description: modelData.desc
}
}
}
}
}
Rectangle {
width: parent.width
radius: 12
color: "#0b1121"
border.color: "#1d1f2f"
border.width: 1
padding: 22
ColumnLayout {
spacing: 10
Text {
text: "About MetaBuilder"
font.pixelSize: 22
color: "#ffffff"
}
Text {
text: "MetaBuilder turns seed metadata, dbal automation, and Prisma migrations into cohesive UX experiences without losing low-level control."
font.pixelSize: 16
color: "#aeb8cf"
wrapMode: Text.Wrap
}
}
}
}
}
}
Tab {
title: "GitHub Actions"
Rectangle {
anchors.fill: parent
color: "transparent"
ColumnLayout {
spacing: 16
Repeater {
model: ciRuns
delegate: Rectangle {
width: parent.width
height: 56
radius: 10
color: "#0f1324"
border.color: "#1f2b46"
border.width: 1
anchors.horizontalCenter: parent.horizontalCenter
RowLayout {
anchors.fill: parent
anchors.margins: 12
spacing: 16
Text {
text: modelData.name
color: "#eef2ff"
font.pixelSize: 16
}
Rectangle {
width: 8
height: 8
radius: 4
color: modelData.status === "passing" ? "#39d98a" : "#facc15"
anchors.right: parent.right
}
Text {
text: modelData.status
color: modelData.status === "passing" ? "#39d98a" : "#facc15"
font.pixelSize: 15
anchors.rightMargin: 0
}
}
}
}
}
}
}
Tab {
title: "Status"
Rectangle {
anchors.fill: parent
color: "transparent"
ColumnLayout {
spacing: 16
Repeater {
model: statusItems
delegate: MetaBuilder.StatusCard {
Layout.fillWidth: true
label: modelData.label
value: modelData.value
}
}
}
}
}
}
MetaBuilder.ContactForm {
Layout.fillWidth: true
onSubmitRequested: console.log("contact form submitted", name, company, email)
}
RowLayout {
width: parent.width
spacing: 20
Text {
text: "© MetaBuilder • Public interface preview"
color: "#7e899d"
}
Text {
text: "Built for data-driven builders"
color: "#7e899d"
}
}
}
}
}