sonr/pkl/UIUX.pkl

92 lines
2.4 KiB
Plaintext

@go.Package { name = "github.com/onsonr/sonr/pkg/nebula/models" }
module models
import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl"
// ╭───────────────────────────────────────────────────────────╮
// │ General State │
// ╰───────────────────────────────────────────────────────────╯
typealias InputType = "text" | "password" | "email" | "credential" | "file"
class Button {
text: String
href: String
}
abstract class Form {
title: String
description: String
inputs: List<Input>
}
class Image {
src: String
width: String
height: String
}
class Input {
label: String
type: InputType
placeholder: String
value: String?
error: String?
help: String?
required: Boolean?
}
class Link {
text: String
href: String
}
class SocialLink {
link: Link
icon: String
}
// ╭───────────────────────────────────────────────────────────╮
// │ Data Models │
// ╰───────────────────────────────────────────────────────────╯
class Feature {
title: String
description: String
icon: String?
image: Image?
}
class Stat {
value: String
label: String
}
// ╭───────────────────────────────────────────────────────────╮
// │ Homepage View Model │
// ╰───────────────────────────────────────────────────────────╯
class Hero {
titleFirst: String
titleEmphasis: String
titleSecond: String
subtitle: String
primaryButton: Button
secondaryButton: Button
image: Image
stats: Listing<Stat>
}
class Highlights {
heading: String
subheading: String
highlights: Listing<Feature>
}
class Home {
hero: Hero
}
home : Home