components

package
v1.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 17, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package components provides typed, fluent builders for authoring dashboard contract graphs from Go. Every builder emits a contract.GraphNode whose shape matches what the React shell (extensions/dashboard/contract/shell) expects on the wire — Go contributors get compile-time safety; YAML authors keep using the loose map[string]any form.

Tiers

The catalog is organized into four tiers, following atomic-design:

  • layout.* structural containers: Row, Column, Grid, Stack, Container, Section, Card, Tabs, Accordion, Split, Divider, Spacer, Page.
  • atom.* leaf controls: Button, Input, Badge, Label, Text, Heading, Link, Icon, Avatar, Image, Separator, Skeleton, Spinner, Progress, Checkbox, Radio, Switch, Slider, Select, Textarea, Kbd, Code, Tooltip.
  • molecule.* composed controls: Field, StatCard, Alert, SearchBar, EmptyState, Breadcrumb, Pagination, TagInput, FileUpload, DatePicker, Combobox, CommandPalette, DropdownMenu, ListItem, Chip, Rating.
  • organism.* composite views: DataGrid, DynamicForm, Kanban, Calendar, Timeline, TreeView, Stepper, Chart, CodeEditor, NotificationCenter, Comments.

Usage

import comp "github.com/xraph/forge/extensions/dashboard/contract/components"

page := comp.Page("Members").
    Description("Manage team membership").
    Children(
        comp.Grid().Cols(3).Gap("4").Children(
            comp.StatCard("Total members").Value("128").Trend(comp.TrendUp).Build(),
            comp.StatCard("Active sessions").Value("45").Build(),
            comp.StatCard("Pending invites").Value("3").Build(),
        ).Build(),
        comp.Card().Title("Roster").Content(
            comp.DataGrid().
                Data(comp.Query("members.list")).
                Columns(memberCols).
                Selection(comp.SelectionMulti()).
                Pagination(comp.ServerPagination().PageSize(25)).
                Build(),
        ).Build(),
    ).Build()

Wire format

All builders Build() into a contract.GraphNode. Typed props are JSON- serialized into GraphNode.Props (map[string]any) so downstream code — merger, registry, transport, React renderer — operates on the same wire shape regardless of how a node was authored.

Color tokens

Style enums (ColorVariant, Size, Spacing, etc.) emit only canonical shadcn semantic tokens — no success / warning / info, no custom brand colors. The React shell's intent renderers translate these tokens into Tailwind utilities at render time.

Index

Constants

View Source
const (
	IntentLayoutPage      = "layout.page"
	IntentLayoutRow       = "layout.row"
	IntentLayoutColumn    = "layout.column"
	IntentLayoutGrid      = "layout.grid"
	IntentLayoutStack     = "layout.stack"
	IntentLayoutContainer = "layout.container"
	IntentLayoutSection   = "layout.section"
	IntentLayoutCard      = "layout.card"
	IntentLayoutTabs      = "layout.tabs"
	IntentLayoutAccordion = "layout.accordion"
	IntentLayoutSplit     = "layout.split"
	IntentLayoutDivider   = "layout.divider"
	IntentLayoutSpacer    = "layout.spacer"
)

Layout intents.

View Source
const (
	IntentAtomButton     = "atom.button"
	IntentAtomIconButton = "atom.icon-button"
	IntentAtomBadge      = "atom.badge"
	IntentAtomLabel      = "atom.label"
	IntentAtomText       = "atom.text"
	IntentAtomHeading    = "atom.heading"
	IntentAtomLink       = "atom.link"
	IntentAtomIcon       = "atom.icon"
	IntentAtomAvatar     = "atom.avatar"
	IntentAtomImage      = "atom.image"
	IntentAtomSeparator  = "atom.separator"
	IntentAtomSkeleton   = "atom.skeleton"
	IntentAtomSpinner    = "atom.spinner"
	IntentAtomProgress   = "atom.progress"
	IntentAtomInput      = "atom.input"
	IntentAtomTextarea   = "atom.textarea"
	IntentAtomCheckbox   = "atom.checkbox"
	IntentAtomRadio      = "atom.radio"
	IntentAtomSwitch     = "atom.switch"
	IntentAtomSlider     = "atom.slider"
	IntentAtomSelect     = "atom.select"
	IntentAtomKbd        = "atom.kbd"
	IntentAtomCode       = "atom.code"
	IntentAtomTooltip    = "atom.tooltip"
)

Atom intents.

View Source
const (
	IntentMoleculeField          = "molecule.field"
	IntentMoleculeStatCard       = "molecule.stat-card"
	IntentMoleculeAlert          = "molecule.alert"
	IntentMoleculeSearchBar      = "molecule.search-bar"
	IntentMoleculeEmptyState     = "molecule.empty-state"
	IntentMoleculeErrorState     = "molecule.error-state"
	IntentMoleculeLoadingState   = "molecule.loading-state"
	IntentMoleculeBreadcrumb     = "molecule.breadcrumb"
	IntentMoleculePagination     = "molecule.pagination"
	IntentMoleculeTagInput       = "molecule.tag-input"
	IntentMoleculeFileUpload     = "molecule.file-upload"
	IntentMoleculeDatePicker     = "molecule.date-picker"
	IntentMoleculeCombobox       = "molecule.combobox"
	IntentMoleculeCommandPalette = "molecule.command-palette"
	IntentMoleculeDropdownMenu   = "molecule.dropdown-menu"
	IntentMoleculeListItem       = "molecule.list-item"
	IntentMoleculeChip           = "molecule.chip"
	IntentMoleculeRating         = "molecule.rating"
)

Molecule intents.

View Source
const (
	IntentOrganismDataGrid           = "organism.data-grid"
	IntentOrganismDynamicForm        = "organism.dynamic-form"
	IntentOrganismKanban             = "organism.kanban"
	IntentOrganismCalendar           = "organism.calendar"
	IntentOrganismTimeline           = "organism.timeline"
	IntentOrganismTreeView           = "organism.tree-view"
	IntentOrganismStepper            = "organism.stepper"
	IntentOrganismChart              = "organism.chart"
	IntentOrganismCodeEditor         = "organism.code-editor"
	IntentOrganismNotificationCenter = "organism.notification-center"
	IntentOrganismComments           = "organism.comments"
)

Organism intents.

View Source
const (
	IntentAuthSignInForm     = "auth.signin-form"
	IntentAuthSignUpForm     = "auth.signup-form"
	IntentAuthTabs           = "auth.tabs"
	IntentAuthMagicLinkForm  = "auth.magic-link-form"
	IntentAuthOAuthButtons   = "auth.oauth-buttons"
	IntentAuthUserButton     = "auth.user-button"
	IntentAuthAccountMenu    = "auth.account-menu"
	IntentAuthOrgSwitcher    = "auth.org-switcher"
	IntentAuthOrgProfile     = "auth.org-profile"
	IntentAuthTwoFactorSetup = "auth.two-factor-setup"
	IntentAuthPasskeyPrompt  = "auth.passkey-prompt"
	IntentAuthSessionList    = "auth.session-list"
)

Authsome composite intents.

Variables

This section is empty.

Functions

func All

func All(checks ...string) *contract.Predicate

All returns a Predicate that requires every named check to pass.

func Any

func Any(checks ...string) *contract.Predicate

Any returns a Predicate that requires at least one check to pass.

func FromParent

func FromParent(field string) contract.ParamSource

FromParent returns a ParamSource that pulls its value from the parent node's data context (e.g., the row in a list).

func FromRoute

func FromRoute(name string) contract.ParamSource

FromRoute returns a ParamSource that pulls its value from the named route parameter at dispatch time (e.g., FromRoute("id") for "/users/:id").

func FromSession

func FromSession(field string) contract.ParamSource

FromSession returns a ParamSource that pulls its value from the current session (e.g., FromSession("user.id")).

func FromState

func FromState(key string) contract.ParamSource

FromState returns a ParamSource that pulls its value from the page state.

func Intent

func Intent(name string, params ...map[string]contract.ParamSource) *contract.DataBinding

Intent returns an inline DataBinding for the named intent with optional parameters.

Intent("members.list", map[string]contract.ParamSource{
    "orgId": FromRoute("orgId"),
})

func IntentSet

func IntentSet() map[string]struct{}

IntentSet returns the catalog as a lookup map keyed by intent name. O(1) membership checks for validators.

func Intents

func Intents() []string

Intents returns the full set of intent names this package emits. Useful for contract loaders or audit tooling that need to validate a contributor's manifest references only known intents.

func Not

func Not(checks ...string) *contract.Predicate

Not returns a Predicate that requires none of the checks to pass.

func Param

func Param(v any) contract.ParamSource

Param returns a ParamSource carrying a literal value.

func Query

func Query(name string) *contract.DataBinding

Query returns a DataBinding referencing a named query declared in the contributor's manifest.

Query("members.list")

func Warden

func Warden(name string) *contract.Predicate

Warden returns a Predicate that delegates the access decision to the named Warden hook.

Types

type AccordionBuilder

type AccordionBuilder struct {
	*Common[AccordionBuilder]
	Props AccordionProps
}

func Accordion

func Accordion() *AccordionBuilder

func (*AccordionBuilder) AddItem

func (*AccordionBuilder) Build

func (b *AccordionBuilder) Build() contract.GraphNode

func (*AccordionBuilder) ClassName

func (b *AccordionBuilder) ClassName(c string) *AccordionBuilder

func (*AccordionBuilder) Collapsible

func (b *AccordionBuilder) Collapsible(c bool) *AccordionBuilder

func (*AccordionBuilder) Item

func (b *AccordionBuilder) Item(value, title string) *AccordionBuilder

func (*AccordionBuilder) Multiple

func (b *AccordionBuilder) Multiple() *AccordionBuilder

func (*AccordionBuilder) Panel

func (b *AccordionBuilder) Panel(value string, nodes ...contract.GraphNode) *AccordionBuilder

func (*AccordionBuilder) Single

func (b *AccordionBuilder) Single() *AccordionBuilder

type AccordionItem

type AccordionItem struct {
	Value       string `json:"value"`
	Title       string `json:"title"`
	Icon        string `json:"icon,omitempty"`
	Description string `json:"description,omitempty"`
	Disabled    bool   `json:"disabled,omitempty"`
}

AccordionItem describes one collapsible section. Children render in the slot whose name matches the Value.

type AccordionProps

type AccordionProps struct {
	Type        string          `json:"type,omitempty"` // "single" | "multiple"
	Collapsible bool            `json:"collapsible,omitempty"`
	Items       []AccordionItem `json:"items"`
	ClassName   string          `json:"className,omitempty"`
}

AccordionProps configures an accordion.

type AccountMenuBuilder

type AccountMenuBuilder struct {
	*Common[AccountMenuBuilder]
	Props AccountMenuProps
}

func AccountMenu

func AccountMenu() *AccountMenuBuilder

func (*AccountMenuBuilder) BillingURL

func (b *AccountMenuBuilder) BillingURL(u string) *AccountMenuBuilder

func (*AccountMenuBuilder) Build

func (*AccountMenuBuilder) ClassName

func (b *AccountMenuBuilder) ClassName(c string) *AccountMenuBuilder

func (*AccountMenuBuilder) ProfileURL

func (b *AccountMenuBuilder) ProfileURL(u string) *AccountMenuBuilder

func (*AccountMenuBuilder) SettingsURL

func (b *AccountMenuBuilder) SettingsURL(u string) *AccountMenuBuilder

func (*AccountMenuBuilder) ShowOrgSwitcher

func (b *AccountMenuBuilder) ShowOrgSwitcher(s bool) *AccountMenuBuilder

func (*AccountMenuBuilder) SignOutOp

func (b *AccountMenuBuilder) SignOutOp(op string) *AccountMenuBuilder

type AccountMenuProps

type AccountMenuProps struct {
	SignOutOp       string `json:"signOutOp,omitempty"`
	ProfileURL      string `json:"profileURL,omitempty"`
	SettingsURL     string `json:"settingsURL,omitempty"`
	BillingURL      string `json:"billingURL,omitempty"`
	ShowOrgSwitcher bool   `json:"showOrgSwitcher,omitempty"`
	ClassName       string `json:"className,omitempty"`
}

type Action

type Action struct {
	Kind ActionKind `json:"kind"`

	// Navigate
	Href    string `json:"href,omitempty"`
	Replace bool   `json:"replace,omitempty"`

	// OpenDialog / CloseDialog
	Dialog string `json:"dialog,omitempty"`

	// RunCommand — intent + params resolved at dispatch time
	Intent      string                          `json:"intent,omitempty"`
	Contributor string                          `json:"contributor,omitempty"`
	Params      map[string]contract.ParamSource `json:"params,omitempty"`

	// SetState — updates client-side form/page state
	StateKey   string `json:"stateKey,omitempty"`
	StateValue any    `json:"stateValue,omitempty"`

	// Emit — fire a named client-side event
	Event   string         `json:"event,omitempty"`
	Payload map[string]any `json:"payload,omitempty"`

	// Confirm — wrap any action behind a confirmation modal
	ConfirmMessage string  `json:"confirmMessage,omitempty"`
	ConfirmTitle   string  `json:"confirmTitle,omitempty"`
	ConfirmAction  *Action `json:"confirmAction,omitempty"`

	// Copy — write a value to the clipboard
	CopyValue string `json:"copyValue,omitempty"`

	// Toast — surface a notification
	ToastMessage string       `json:"toastMessage,omitempty"`
	ToastVariant ToastVariant `json:"toastVariant,omitempty"`
}

Action describes an event-handler side effect. It serializes to a small JSON object the React shell knows how to dispatch. Exactly one Kind is active; the other fields are interpreted based on Kind.

func CloseDialog

func CloseDialog(name string) *Action

CloseDialog builds an Action that closes the named dialog. Pass "" to close the current dialog.

func Confirm

func Confirm(title, message string, action *Action) *Action

Confirm wraps another Action behind a confirmation modal.

func Copy

func Copy(value string) *Action

Copy builds a copy-to-clipboard Action.

func Emit

func Emit(event string) *Action

Emit fires a named event on the client event bus.

func Navigate(href string) *Action

Navigate builds a navigation Action.

func NavigateReplace(href string) *Action

NavigateReplace builds a replacing navigation Action (history replace).

func OpenDialog

func OpenDialog(name string) *Action

OpenDialog builds an Action that opens the named dialog.

func RunCommand

func RunCommand(intent string) *Action

RunCommand builds an Action that dispatches a contract command intent.

func SetState

func SetState(key string, value any) *Action

SetState builds an Action that writes a value into the client state at the given key.

func Toast

func Toast(message string) *Action

Toast builds a toast-notification Action.

func ToastError

func ToastError(message string) *Action

ToastError builds a destructive-variant toast.

func (*Action) WithContributor

func (a *Action) WithContributor(c string) *Action

WithContributor scopes a RunCommand action to a specific contributor.

func (*Action) WithParams

func (a *Action) WithParams(params map[string]contract.ParamSource) *Action

WithParams attaches a parameter map to a RunCommand action.

type ActionKind

type ActionKind string

ActionKind discriminates the side effect an Action triggers.

const (
	ActionKindNavigate    ActionKind = "navigate"
	ActionKindOpenDialog  ActionKind = "openDialog"
	ActionKindCloseDialog ActionKind = "closeDialog"
	ActionKindRunCommand  ActionKind = "runCommand"
	ActionKindSetState    ActionKind = "setState"
	ActionKindEmit        ActionKind = "emit"
	ActionKindConfirm     ActionKind = "confirm"
	ActionKindCopy        ActionKind = "copy"
	ActionKindToast       ActionKind = "toast"
)

type Aggregation

type Aggregation string

Aggregation names the function used to summarize a grouped column.

const (
	AggSum   Aggregation = "sum"
	AggAvg   Aggregation = "avg"
	AggMin   Aggregation = "min"
	AggMax   Aggregation = "max"
	AggCount Aggregation = "count"
)

type AlertBuilder

type AlertBuilder struct {
	*Common[AlertBuilder]
	Props AlertProps
}

func Alert

func Alert() *AlertBuilder

func (*AlertBuilder) Build

func (b *AlertBuilder) Build() contract.GraphNode

func (*AlertBuilder) ClassName

func (b *AlertBuilder) ClassName(c string) *AlertBuilder

func (*AlertBuilder) Description

func (b *AlertBuilder) Description(d string) *AlertBuilder

func (*AlertBuilder) Dismissible

func (b *AlertBuilder) Dismissible(d bool) *AlertBuilder

func (*AlertBuilder) Icon

func (b *AlertBuilder) Icon(i string) *AlertBuilder

func (*AlertBuilder) OnDismiss

func (b *AlertBuilder) OnDismiss(a *Action) *AlertBuilder

func (*AlertBuilder) TitleText

func (b *AlertBuilder) TitleText(t string) *AlertBuilder

func (*AlertBuilder) Variant

func (b *AlertBuilder) Variant(v AlertVariant) *AlertBuilder

type AlertProps

type AlertProps struct {
	Variant     AlertVariant `json:"variant,omitempty"`
	Title       string       `json:"title,omitempty"`
	Description string       `json:"description,omitempty"`
	Icon        string       `json:"icon,omitempty"`
	Dismissible bool         `json:"dismissible,omitempty"`
	OnDismiss   *Action      `json:"onDismiss,omitempty"`
	ClassName   string       `json:"className,omitempty"`
}

AlertProps configures a banner alert.

type AlertVariant

type AlertVariant string

AlertVariant names the alert's visual tone. Only canonical shadcn tokens are exposed — no success/warning/info.

const (
	AlertDefault     AlertVariant = "default"
	AlertDestructive AlertVariant = "destructive"
	AlertMuted       AlertVariant = "muted"
	AlertAccent      AlertVariant = "accent"
)

type Align

type Align string

Align maps to items-* (flex cross-axis alignment).

const (
	AlignStart    Align = "start"
	AlignCenter   Align = "center"
	AlignEnd      Align = "end"
	AlignStretch  Align = "stretch"
	AlignBaseline Align = "baseline"
)

type AspectRatio

type AspectRatio string

AspectRatio maps to Tailwind's aspect-* utilities.

const (
	AspectSquare AspectRatio = "square"
	AspectVideo  AspectRatio = "video"
	AspectAuto   AspectRatio = "auto"
)

type AuthTabsBuilder

type AuthTabsBuilder struct {
	*Common[AuthTabsBuilder]
	Props AuthTabsProps
}

func AuthTabs

func AuthTabs() *AuthTabsBuilder

func (*AuthTabsBuilder) Brand

func (b *AuthTabsBuilder) Brand(name string) *AuthTabsBuilder

func (*AuthTabsBuilder) Build

func (b *AuthTabsBuilder) Build() contract.GraphNode

func (*AuthTabsBuilder) ClassName

func (b *AuthTabsBuilder) ClassName(c string) *AuthTabsBuilder

func (*AuthTabsBuilder) DefaultTab

func (b *AuthTabsBuilder) DefaultTab(t string) *AuthTabsBuilder

func (*AuthTabsBuilder) OAuthProviders

func (b *AuthTabsBuilder) OAuthProviders(p ...string) *AuthTabsBuilder

func (*AuthTabsBuilder) SignInOp

func (b *AuthTabsBuilder) SignInOp(o string) *AuthTabsBuilder

func (*AuthTabsBuilder) SignUpOp

func (b *AuthTabsBuilder) SignUpOp(o string) *AuthTabsBuilder

type AuthTabsProps

type AuthTabsProps struct {
	DefaultTab     string   `json:"defaultTab,omitempty"` // "signin" | "signup"
	SignInOp       string   `json:"signInOp,omitempty"`
	SignUpOp       string   `json:"signUpOp,omitempty"`
	OAuthProviders []string `json:"oauthProviders,omitempty"`
	Brand          string   `json:"brand,omitempty"`
	ClassName      string   `json:"className,omitempty"`
}

type AvatarBuilder

type AvatarBuilder struct {
	*Common[AvatarBuilder]
	Props AvatarProps
}

func Avatar

func Avatar() *AvatarBuilder

func (*AvatarBuilder) Alt

func (b *AvatarBuilder) Alt(a string) *AvatarBuilder

func (*AvatarBuilder) Build

func (b *AvatarBuilder) Build() contract.GraphNode

func (*AvatarBuilder) ClassName

func (b *AvatarBuilder) ClassName(c string) *AvatarBuilder

func (*AvatarBuilder) Fallback

func (b *AvatarBuilder) Fallback(f string) *AvatarBuilder

func (*AvatarBuilder) Size

func (b *AvatarBuilder) Size(s Size) *AvatarBuilder

func (*AvatarBuilder) Src

func (b *AvatarBuilder) Src(s string) *AvatarBuilder

func (*AvatarBuilder) Status

func (b *AvatarBuilder) Status(s string) *AvatarBuilder

type AvatarProps

type AvatarProps struct {
	Src       string `json:"src,omitempty"`
	Alt       string `json:"alt,omitempty"`
	Fallback  string `json:"fallback,omitempty"`
	Size      Size   `json:"size,omitempty"`
	Status    string `json:"status,omitempty"` // "online" | "offline" | "busy" | "away"
	ClassName string `json:"className,omitempty"`
}

AvatarProps configures an avatar with fallback initials.

type BadgeBuilder

type BadgeBuilder struct {
	*Common[BadgeBuilder]
	Props BadgeProps
}

func Badge

func Badge(label string) *BadgeBuilder

func (*BadgeBuilder) Build

func (b *BadgeBuilder) Build() contract.GraphNode

func (*BadgeBuilder) ClassName

func (b *BadgeBuilder) ClassName(c string) *BadgeBuilder

func (*BadgeBuilder) Dot

func (b *BadgeBuilder) Dot(d bool) *BadgeBuilder

func (*BadgeBuilder) Icon

func (b *BadgeBuilder) Icon(i string) *BadgeBuilder

func (*BadgeBuilder) Variant

func (b *BadgeBuilder) Variant(v ColorVariant) *BadgeBuilder

type BadgeProps

type BadgeProps struct {
	Label     string       `json:"label"`
	Variant   ColorVariant `json:"variant,omitempty"`
	Icon      string       `json:"icon,omitempty"`
	Dot       bool         `json:"dot,omitempty"`
	ClassName string       `json:"className,omitempty"`
}

BadgeProps configures a small status pill.

type BreadcrumbBuilder struct {
	*Common[BreadcrumbBuilder]
	Props BreadcrumbProps
}
func Breadcrumb() *BreadcrumbBuilder
func (b *BreadcrumbBuilder) ClassName(c string) *BreadcrumbBuilder
func (b *BreadcrumbBuilder) Item(label, href string) *BreadcrumbBuilder
func (b *BreadcrumbBuilder) Separator(s string) *BreadcrumbBuilder
type BreadcrumbItem struct {
	Label string `json:"label"`
	Href  string `json:"href,omitempty"`
	Icon  string `json:"icon,omitempty"`
}
type BreadcrumbProps struct {
	Items     []BreadcrumbItem `json:"items"`
	Separator string           `json:"separator,omitempty"` // "/" | ">" | icon name
	ClassName string           `json:"className,omitempty"`
}

type ButtonBuilder

type ButtonBuilder struct {
	*Common[ButtonBuilder]
	Props ButtonProps
}

func Button

func Button(label string) *ButtonBuilder

Button constructs an atom.button builder with the given label.

func (*ButtonBuilder) Build

func (b *ButtonBuilder) Build() contract.GraphNode

func (*ButtonBuilder) ClassName

func (b *ButtonBuilder) ClassName(c string) *ButtonBuilder

func (*ButtonBuilder) Confirm

func (b *ButtonBuilder) Confirm(msg string) *ButtonBuilder

func (*ButtonBuilder) Disabled

func (b *ButtonBuilder) Disabled(d bool) *ButtonBuilder

func (*ButtonBuilder) FullWidth

func (b *ButtonBuilder) FullWidth(f bool) *ButtonBuilder

func (*ButtonBuilder) Label

func (b *ButtonBuilder) Label(l string) *ButtonBuilder

func (*ButtonBuilder) LeadingIcon

func (b *ButtonBuilder) LeadingIcon(name string) *ButtonBuilder

func (*ButtonBuilder) Loading

func (b *ButtonBuilder) Loading(l bool) *ButtonBuilder

func (*ButtonBuilder) OnClick

func (b *ButtonBuilder) OnClick(a *Action) *ButtonBuilder

func (*ButtonBuilder) Size

func (b *ButtonBuilder) Size(s Size) *ButtonBuilder

func (*ButtonBuilder) TrailingIcon

func (b *ButtonBuilder) TrailingIcon(name string) *ButtonBuilder

func (*ButtonBuilder) Variant

func (b *ButtonBuilder) Variant(v ColorVariant) *ButtonBuilder

type ButtonProps

type ButtonProps struct {
	Label        string       `json:"label,omitempty"`
	Variant      ColorVariant `json:"variant,omitempty"`
	Size         Size         `json:"size,omitempty"`
	LeadingIcon  string       `json:"leadingIcon,omitempty"`
	TrailingIcon string       `json:"trailingIcon,omitempty"`
	Loading      bool         `json:"loading,omitempty"`
	Disabled     bool         `json:"disabled,omitempty"`
	FullWidth    bool         `json:"fullWidth,omitempty"`
	OnClick      *Action      `json:"onClick,omitempty"`
	Confirm      string       `json:"confirm,omitempty"`
	ClassName    string       `json:"className,omitempty"`
}

ButtonProps configures a clickable button. OnClick fires an Action; for simple command dispatch, set Op on the builder via the inherited Op() setter instead.

type CalendarBuilder

type CalendarBuilder struct {
	*Common[CalendarBuilder]
	Props CalendarProps
}

func Calendar

func Calendar() *CalendarBuilder

func (*CalendarBuilder) Build

func (b *CalendarBuilder) Build() contract.GraphNode

func (*CalendarBuilder) ClassName

func (b *CalendarBuilder) ClassName(c string) *CalendarBuilder

func (*CalendarBuilder) ColorField

func (b *CalendarBuilder) ColorField(f string) *CalendarBuilder

func (*CalendarBuilder) EndField

func (b *CalendarBuilder) EndField(f string) *CalendarBuilder

func (*CalendarBuilder) OnCreate

func (b *CalendarBuilder) OnCreate(a *Action) *CalendarBuilder

func (*CalendarBuilder) OnEventClick

func (b *CalendarBuilder) OnEventClick(a *Action) *CalendarBuilder

func (*CalendarBuilder) StartField

func (b *CalendarBuilder) StartField(f string) *CalendarBuilder

func (*CalendarBuilder) TitleField

func (b *CalendarBuilder) TitleField(f string) *CalendarBuilder

func (*CalendarBuilder) View

type CalendarProps

type CalendarProps struct {
	View         CalendarView `json:"view,omitempty"`
	TitleField   string       `json:"titleField,omitempty"`
	StartField   string       `json:"startField,omitempty"`
	EndField     string       `json:"endField,omitempty"`
	ColorField   string       `json:"colorField,omitempty"`
	OnEventClick *Action      `json:"onEventClick,omitempty"`
	OnCreate     *Action      `json:"onCreate,omitempty"`
	ClassName    string       `json:"className,omitempty"`
}

type CalendarView

type CalendarView string
const (
	CalendarMonth CalendarView = "month"
	CalendarWeek  CalendarView = "week"
	CalendarDay   CalendarView = "day"
)

type CancelConfig

type CancelConfig struct {
	Label   string       `json:"label,omitempty"`
	Action  *Action      `json:"action,omitempty"` // default: history back
	Variant ColorVariant `json:"variant,omitempty"`
}

CancelConfig configures the cancel button.

type CardBuilder

type CardBuilder struct {
	*Common[CardBuilder]
	Props CardProps
}

func Card

func Card(children ...contract.GraphNode) *CardBuilder

Card constructs a layout.card builder. Children flow into the "content" slot by default.

func (*CardBuilder) Actions

func (b *CardBuilder) Actions(nodes ...contract.GraphNode) *CardBuilder

Actions attaches CTA nodes to the card header's actions slot.

func (*CardBuilder) Bordered

func (b *CardBuilder) Bordered(bo bool) *CardBuilder

func (*CardBuilder) Build

func (b *CardBuilder) Build() contract.GraphNode

func (*CardBuilder) ClassName

func (b *CardBuilder) ClassName(c string) *CardBuilder

func (*CardBuilder) Compact

func (b *CardBuilder) Compact(c bool) *CardBuilder

func (*CardBuilder) Content

func (b *CardBuilder) Content(nodes ...contract.GraphNode) *CardBuilder

Content explicitly appends to the content slot. Equivalent to Children().

func (*CardBuilder) Description

func (b *CardBuilder) Description(d string) *CardBuilder

func (*CardBuilder) Footer

func (b *CardBuilder) Footer(nodes ...contract.GraphNode) *CardBuilder

Footer attaches nodes to the card footer slot.

func (*CardBuilder) Header

func (b *CardBuilder) Header(nodes ...contract.GraphNode) *CardBuilder

Header attaches nodes to the card header slot (above the title).

func (*CardBuilder) NoPadding

func (b *CardBuilder) NoPadding(n bool) *CardBuilder

type CardProps

type CardProps struct {
	Description string `json:"description,omitempty"`
	Compact     bool   `json:"compact,omitempty"`
	NoPadding   bool   `json:"noPadding,omitempty"`
	Bordered    *bool  `json:"bordered,omitempty"`
	ClassName   string `json:"className,omitempty"`
}

CardProps configures a shadcn Card. Slots: header, content, footer, actions. The visible title lives on node.title (use the inherited Title() setter).

type CellRender

type CellRender struct {
	Intent string         `json:"intent"`
	Props  map[string]any `json:"props,omitempty"`
}

CellRender names a custom cell renderer intent for Type=custom columns. The named intent receives `{ row, value, column }` as props.

type ChartBuilder

type ChartBuilder struct {
	*Common[ChartBuilder]
	Props ChartProps
}

func Chart

func Chart(t ChartType) *ChartBuilder

func (*ChartBuilder) Build

func (b *ChartBuilder) Build() contract.GraphNode

func (*ChartBuilder) ClassName

func (b *ChartBuilder) ClassName(c string) *ChartBuilder

func (*ChartBuilder) Height

func (b *ChartBuilder) Height(h int) *ChartBuilder

func (*ChartBuilder) Series

func (b *ChartBuilder) Series(s ...ChartSeries) *ChartBuilder

func (*ChartBuilder) ShowGrid

func (b *ChartBuilder) ShowGrid(s bool) *ChartBuilder

func (*ChartBuilder) ShowLegend

func (b *ChartBuilder) ShowLegend(s bool) *ChartBuilder

func (*ChartBuilder) ShowTooltip

func (b *ChartBuilder) ShowTooltip(s bool) *ChartBuilder

func (*ChartBuilder) Stacked

func (b *ChartBuilder) Stacked(s bool) *ChartBuilder

func (*ChartBuilder) XAxis

func (b *ChartBuilder) XAxis(field string) *ChartBuilder

func (*ChartBuilder) YAxis

func (b *ChartBuilder) YAxis(field string) *ChartBuilder

type ChartProps

type ChartProps struct {
	Type        ChartType     `json:"type"`
	XAxis       string        `json:"xAxis,omitempty"` // field name on each row
	YAxis       string        `json:"yAxis,omitempty"`
	Series      []ChartSeries `json:"series,omitempty"`
	ShowGrid    bool          `json:"showGrid,omitempty"`
	ShowLegend  bool          `json:"showLegend,omitempty"`
	ShowTooltip bool          `json:"showTooltip,omitempty"`
	Height      int           `json:"height,omitempty"`
	Stacked     bool          `json:"stacked,omitempty"`
	ClassName   string        `json:"className,omitempty"`
}

type ChartSeries

type ChartSeries struct {
	Key        string    `json:"key"`
	Label      string    `json:"label,omitempty"`
	Type       ChartType `json:"type,omitempty"`       // for composed charts
	ColorToken string    `json:"colorToken,omitempty"` // "chart-1".."chart-5"
}

ChartSeries declares one series in the chart. ColorToken must reference a shadcn chart-* token (chart-1..5) — no arbitrary hex.

type ChartType

type ChartType string
const (
	ChartLine     ChartType = "line"
	ChartBar      ChartType = "bar"
	ChartArea     ChartType = "area"
	ChartPie      ChartType = "pie"
	ChartScatter  ChartType = "scatter"
	ChartComposed ChartType = "composed"
)

type CheckboxBuilder

type CheckboxBuilder struct {
	*Common[CheckboxBuilder]
	Props CheckboxProps
}

func Checkbox

func Checkbox(name string) *CheckboxBuilder

func (*CheckboxBuilder) Build

func (b *CheckboxBuilder) Build() contract.GraphNode

func (*CheckboxBuilder) Checked

func (b *CheckboxBuilder) Checked(c bool) *CheckboxBuilder

func (*CheckboxBuilder) ClassName

func (b *CheckboxBuilder) ClassName(c string) *CheckboxBuilder

func (*CheckboxBuilder) Default

func (b *CheckboxBuilder) Default(c bool) *CheckboxBuilder

func (*CheckboxBuilder) Description

func (b *CheckboxBuilder) Description(d string) *CheckboxBuilder

func (*CheckboxBuilder) Disabled

func (b *CheckboxBuilder) Disabled(d bool) *CheckboxBuilder

func (*CheckboxBuilder) Error

func (b *CheckboxBuilder) Error(e string) *CheckboxBuilder

func (*CheckboxBuilder) Indeterminate

func (b *CheckboxBuilder) Indeterminate(i bool) *CheckboxBuilder

func (*CheckboxBuilder) Label

func (b *CheckboxBuilder) Label(l string) *CheckboxBuilder

func (*CheckboxBuilder) OnChange

func (b *CheckboxBuilder) OnChange(a *Action) *CheckboxBuilder

func (*CheckboxBuilder) Required

func (b *CheckboxBuilder) Required(r bool) *CheckboxBuilder

type CheckboxProps

type CheckboxProps struct {
	Name          string  `json:"name"`
	Label         string  `json:"label,omitempty"`
	Description   string  `json:"description,omitempty"`
	Checked       *bool   `json:"checked,omitempty"`
	Default       *bool   `json:"default,omitempty"`
	Indeterminate bool    `json:"indeterminate,omitempty"`
	Disabled      bool    `json:"disabled,omitempty"`
	Required      bool    `json:"required,omitempty"`
	OnChange      *Action `json:"onChange,omitempty"`
	Error         string  `json:"error,omitempty"`
	ClassName     string  `json:"className,omitempty"`
}

CheckboxProps configures a single checkbox.

type ChipBuilder

type ChipBuilder struct {
	*Common[ChipBuilder]
	Props ChipProps
}

func Chip

func Chip(label string) *ChipBuilder

func (*ChipBuilder) Build

func (b *ChipBuilder) Build() contract.GraphNode

func (*ChipBuilder) ClassName

func (b *ChipBuilder) ClassName(c string) *ChipBuilder

func (*ChipBuilder) Disabled

func (b *ChipBuilder) Disabled(d bool) *ChipBuilder

func (*ChipBuilder) Icon

func (b *ChipBuilder) Icon(i string) *ChipBuilder

func (*ChipBuilder) OnClick

func (b *ChipBuilder) OnClick(a *Action) *ChipBuilder

func (*ChipBuilder) OnRemove

func (b *ChipBuilder) OnRemove(a *Action) *ChipBuilder

func (*ChipBuilder) Removable

func (b *ChipBuilder) Removable(r bool) *ChipBuilder

func (*ChipBuilder) Variant

func (b *ChipBuilder) Variant(v ColorVariant) *ChipBuilder

type ChipProps

type ChipProps struct {
	Label     string       `json:"label"`
	Icon      string       `json:"icon,omitempty"`
	Variant   ColorVariant `json:"variant,omitempty"`
	Removable bool         `json:"removable,omitempty"`
	OnRemove  *Action      `json:"onRemove,omitempty"`
	OnClick   *Action      `json:"onClick,omitempty"`
	Disabled  bool         `json:"disabled,omitempty"`
	ClassName string       `json:"className,omitempty"`
}

type CodeBuilder

type CodeBuilder struct {
	*Common[CodeBuilder]
	Props CodeProps
}

func Code

func Code(text string) *CodeBuilder

func (*CodeBuilder) Build

func (b *CodeBuilder) Build() contract.GraphNode

func (*CodeBuilder) ClassName

func (b *CodeBuilder) ClassName(c string) *CodeBuilder

func (*CodeBuilder) Copyable

func (b *CodeBuilder) Copyable(c bool) *CodeBuilder

func (*CodeBuilder) Inline

func (b *CodeBuilder) Inline(i bool) *CodeBuilder

func (*CodeBuilder) Language

func (b *CodeBuilder) Language(l string) *CodeBuilder

type CodeEditorBuilder

type CodeEditorBuilder struct {
	*Common[CodeEditorBuilder]
	Props CodeEditorProps
}

func CodeEditor

func CodeEditor() *CodeEditorBuilder

func (*CodeEditorBuilder) Build

func (*CodeEditorBuilder) ClassName

func (b *CodeEditorBuilder) ClassName(c string) *CodeEditorBuilder

func (*CodeEditorBuilder) Default

func (*CodeEditorBuilder) Height

func (*CodeEditorBuilder) Language

func (b *CodeEditorBuilder) Language(l string) *CodeEditorBuilder

func (*CodeEditorBuilder) LineNumbers

func (b *CodeEditorBuilder) LineNumbers(s bool) *CodeEditorBuilder

func (*CodeEditorBuilder) Name

func (*CodeEditorBuilder) OnChange

func (b *CodeEditorBuilder) OnChange(a *Action) *CodeEditorBuilder

func (*CodeEditorBuilder) ReadOnly

func (b *CodeEditorBuilder) ReadOnly(r bool) *CodeEditorBuilder

func (*CodeEditorBuilder) Theme

func (*CodeEditorBuilder) Value

type CodeEditorProps

type CodeEditorProps struct {
	Name        string  `json:"name,omitempty"`
	Language    string  `json:"language,omitempty"`
	Value       string  `json:"value,omitempty"`
	Default     string  `json:"default,omitempty"`
	ReadOnly    bool    `json:"readOnly,omitempty"`
	Theme       string  `json:"theme,omitempty"` // "auto" | "light" | "dark"
	LineNumbers bool    `json:"lineNumbers,omitempty"`
	Height      string  `json:"height,omitempty"`
	OnChange    *Action `json:"onChange,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

type CodeProps

type CodeProps struct {
	Text      string `json:"text"`
	Language  string `json:"language,omitempty"`
	Inline    bool   `json:"inline,omitempty"`
	Copyable  bool   `json:"copyable,omitempty"`
	ClassName string `json:"className,omitempty"`
}

CodeProps configures inline or block code rendering.

type ColorVariant

type ColorVariant string

ColorVariant names the shadcn semantic palette. Only canonical tokens are exposed — there is no Success, Warning, or Info to keep the contract strictly shadcn-aligned. Map non-shadcn semantics to the closest token: errors → Destructive, warnings → Muted, info/notices → Accent.

const (
	VariantDefault     ColorVariant = "default"
	VariantSecondary   ColorVariant = "secondary"
	VariantDestructive ColorVariant = "destructive"
	VariantOutline     ColorVariant = "outline"
	VariantGhost       ColorVariant = "ghost"
	VariantLink        ColorVariant = "link"
	VariantMuted       ColorVariant = "muted"
	VariantAccent      ColorVariant = "accent"
)

type ColumnBuilder

type ColumnBuilder struct {
	*Common[ColumnBuilder]
	Props ColumnProps
}

func Column

func Column(children ...contract.GraphNode) *ColumnBuilder

Column constructs a layout.column builder.

func (*ColumnBuilder) Align

func (b *ColumnBuilder) Align(a Align) *ColumnBuilder

func (*ColumnBuilder) Build

func (b *ColumnBuilder) Build() contract.GraphNode

func (*ColumnBuilder) ClassName

func (b *ColumnBuilder) ClassName(c string) *ColumnBuilder

func (*ColumnBuilder) Gap

func (b *ColumnBuilder) Gap(g Spacing) *ColumnBuilder

func (*ColumnBuilder) Justify

func (b *ColumnBuilder) Justify(j Justify) *ColumnBuilder

func (*ColumnBuilder) Padding

func (b *ColumnBuilder) Padding(p Spacing) *ColumnBuilder

type ColumnPin

type ColumnPin string

ColumnPin names where a column is fixed.

const (
	PinNone  ColumnPin = ""
	PinLeft  ColumnPin = "left"
	PinRight ColumnPin = "right"
)

type ColumnProps

type ColumnProps struct {
	Gap       Spacing `json:"gap,omitempty"`
	Align     Align   `json:"align,omitempty"`
	Justify   Justify `json:"justify,omitempty"`
	Padding   Spacing `json:"padding,omitempty"`
	ClassName string  `json:"className,omitempty"`
}

ColumnProps configures a vertical flex container.

type ColumnType

type ColumnType string

ColumnType is the renderer hint for a DataGrid column. The React side uses this to format the cell value (currency, date, badge, etc.).

const (
	ColText     ColumnType = "text"
	ColNumber   ColumnType = "number"
	ColDate     ColumnType = "date"
	ColDateTime ColumnType = "datetime"
	ColCurrency ColumnType = "currency"
	ColBoolean  ColumnType = "boolean"
	ColBadge    ColumnType = "badge"
	ColAvatar   ColumnType = "avatar"
	ColLink     ColumnType = "link"
	ColActions  ColumnType = "actions"
	ColCustom   ColumnType = "custom"
)

type ComboboxBuilder

type ComboboxBuilder struct {
	*Common[ComboboxBuilder]
	Props ComboboxProps
}

func Combobox

func Combobox(name string) *ComboboxBuilder

func (*ComboboxBuilder) Build

func (b *ComboboxBuilder) Build() contract.GraphNode

func (*ComboboxBuilder) ClassName

func (b *ComboboxBuilder) ClassName(c string) *ComboboxBuilder

func (*ComboboxBuilder) Clearable

func (b *ComboboxBuilder) Clearable(c bool) *ComboboxBuilder

func (*ComboboxBuilder) Creatable

func (b *ComboboxBuilder) Creatable(c bool) *ComboboxBuilder

func (*ComboboxBuilder) Disabled

func (b *ComboboxBuilder) Disabled(d bool) *ComboboxBuilder

func (*ComboboxBuilder) Error

func (b *ComboboxBuilder) Error(e string) *ComboboxBuilder

func (*ComboboxBuilder) Multiple

func (b *ComboboxBuilder) Multiple(m bool) *ComboboxBuilder

func (*ComboboxBuilder) OnChange

func (b *ComboboxBuilder) OnChange(a *Action) *ComboboxBuilder

func (*ComboboxBuilder) OnSearch

func (b *ComboboxBuilder) OnSearch(a *Action) *ComboboxBuilder

func (*ComboboxBuilder) OptionSource

func (b *ComboboxBuilder) OptionSource(s *OptionSource) *ComboboxBuilder

func (*ComboboxBuilder) Options

func (b *ComboboxBuilder) Options(opts ...Option) *ComboboxBuilder

func (*ComboboxBuilder) Placeholder

func (b *ComboboxBuilder) Placeholder(p string) *ComboboxBuilder

func (*ComboboxBuilder) Searchable

func (b *ComboboxBuilder) Searchable(s bool) *ComboboxBuilder

func (*ComboboxBuilder) Value

func (b *ComboboxBuilder) Value(v string) *ComboboxBuilder

func (*ComboboxBuilder) Values

func (b *ComboboxBuilder) Values(vs ...string) *ComboboxBuilder

type ComboboxProps

type ComboboxProps struct {
	Name         string        `json:"name"`
	Placeholder  string        `json:"placeholder,omitempty"`
	Options      []Option      `json:"options,omitempty"`
	OptionSource *OptionSource `json:"optionSource,omitempty"` // dynamic options
	Value        string        `json:"value,omitempty"`
	Multiple     bool          `json:"multiple,omitempty"`
	Values       []string      `json:"values,omitempty"`
	Searchable   bool          `json:"searchable,omitempty"`
	Creatable    bool          `json:"creatable,omitempty"`
	Clearable    bool          `json:"clearable,omitempty"`
	OnSearch     *Action       `json:"onSearch,omitempty"`
	OnChange     *Action       `json:"onChange,omitempty"`
	Disabled     bool          `json:"disabled,omitempty"`
	Error        string        `json:"error,omitempty"`
	ClassName    string        `json:"className,omitempty"`
}

type CommandPaletteBuilder

type CommandPaletteBuilder struct {
	*Common[CommandPaletteBuilder]
	Props CommandPaletteProps
}

func CommandPalette

func CommandPalette() *CommandPaletteBuilder

func (*CommandPaletteBuilder) AddGroup

func (*CommandPaletteBuilder) Build

func (*CommandPaletteBuilder) ClassName

func (*CommandPaletteBuilder) EmptyMessage

func (*CommandPaletteBuilder) Group

func (*CommandPaletteBuilder) Placeholder

func (*CommandPaletteBuilder) TriggerShortcut

func (b *CommandPaletteBuilder) TriggerShortcut(keys ...string) *CommandPaletteBuilder

type CommandPaletteProps

type CommandPaletteProps struct {
	Placeholder     string         `json:"placeholder,omitempty"`
	Groups          []PaletteGroup `json:"groups"`
	TriggerShortcut []string       `json:"triggerShortcut,omitempty"`
	EmptyMessage    string         `json:"emptyMessage,omitempty"`
	ClassName       string         `json:"className,omitempty"`
}

type CommentsBuilder

type CommentsBuilder struct {
	*Common[CommentsBuilder]
	Props CommentsProps
}

func Comments

func Comments() *CommentsBuilder

func (*CommentsBuilder) AuthorField

func (b *CommentsBuilder) AuthorField(f string) *CommentsBuilder

func (*CommentsBuilder) AvatarField

func (b *CommentsBuilder) AvatarField(f string) *CommentsBuilder

func (*CommentsBuilder) BodyField

func (b *CommentsBuilder) BodyField(f string) *CommentsBuilder

func (*CommentsBuilder) Build

func (b *CommentsBuilder) Build() contract.GraphNode

func (*CommentsBuilder) ClassName

func (b *CommentsBuilder) ClassName(c string) *CommentsBuilder

func (*CommentsBuilder) CurrentUserID

func (b *CommentsBuilder) CurrentUserID(id string) *CommentsBuilder

func (*CommentsBuilder) OnDelete

func (b *CommentsBuilder) OnDelete(a *Action) *CommentsBuilder

func (*CommentsBuilder) OnPost

func (b *CommentsBuilder) OnPost(a *Action) *CommentsBuilder

func (*CommentsBuilder) ReadOnly

func (b *CommentsBuilder) ReadOnly(r bool) *CommentsBuilder

func (*CommentsBuilder) TimestampField

func (b *CommentsBuilder) TimestampField(f string) *CommentsBuilder

type CommentsProps

type CommentsProps struct {
	AuthorField    string  `json:"authorField,omitempty"`
	AvatarField    string  `json:"avatarField,omitempty"`
	BodyField      string  `json:"bodyField,omitempty"`
	TimestampField string  `json:"timestampField,omitempty"`
	OnPost         *Action `json:"onPost,omitempty"`
	OnDelete       *Action `json:"onDelete,omitempty"`
	CurrentUserID  string  `json:"currentUserId,omitempty"`
	ReadOnly       bool    `json:"readOnly,omitempty"`
	ClassName      string  `json:"className,omitempty"`
}

type Common

type Common[Self any] struct {
	// Self is the concrete builder pointer. Common setters return it so
	// fluent chains preserve the typed builder.
	Self *Self
	// contains filtered or unexported fields
}

Common carries the metadata fields every component shares — title, op, children, slots, predicates, data binding, etc. — and the fluent setters for them.

The Self type parameter is a self-reference: each component builder embeds *Common[XBuilder] and wires up the Self pointer at construction time, so common setters return the concrete *XBuilder and chains stay typed across both common and component-specific methods.

func (*Common[Self]) Child

func (c *Common[Self]) Child(node contract.GraphNode) *Self

Child appends a single child to the default children slot.

func (*Common[Self]) Children

func (c *Common[Self]) Children(nodes ...contract.GraphNode) *Self

Children appends to the default children slot. The slot name depends on the component — for most layout containers it is "children"; for specialized components like Card it is "content".

func (*Common[Self]) Component

func (c *Common[Self]) Component(name string) *Self

Component sets the escape-hatch React component name for nodes the contract can't express via typed props. Use sparingly.

func (*Common[Self]) Data

func (c *Common[Self]) Data(d *contract.DataBinding) *Self

Data binds the node to a data source — either a named query reference or an inline {intent, params} pair.

func (*Common[Self]) EnabledWhen

func (c *Common[Self]) EnabledWhen(p *contract.Predicate) *Self

EnabledWhen sets the access predicate controlling whether the node is interactive.

func (*Common[Self]) Nav

func (c *Common[Self]) Nav(n *contract.NavConfig) *Self

Nav configures the per-route nav metadata.

func (*Common[Self]) Op

func (c *Common[Self]) Op(op string) *Self

Op sets the command intent invoked when the node is a button or form submit. Mirrors GraphNode.Op.

func (*Common[Self]) Payload

func (c *Common[Self]) Payload(p map[string]contract.ParamSource) *Self

Payload sets the parameter sources used when invoking Op.

func (*Common[Self]) Protocol

func (c *Common[Self]) Protocol(p string) *Self

Protocol declares an iframe message protocol.

func (*Common[Self]) Root

func (c *Common[Self]) Root(r bool) *Self

Root marks this node as the contributor's root page.

func (*Common[Self]) Route

func (c *Common[Self]) Route(r string) *Self

Route declares a top-level route. Only meaningful for nodes registered at the root of a contributor's graph.

func (*Common[Self]) Sandbox

func (c *Common[Self]) Sandbox(flags ...string) *Self

Sandbox sets iframe sandbox flags.

func (*Common[Self]) Slot

func (c *Common[Self]) Slot(name string, nodes ...contract.GraphNode) *Self

Slot appends nodes to a named slot. Use this for slots that are not the default children slot (e.g., `actions`, `header`, `footer`, `trigger`).

func (*Common[Self]) Src

func (c *Common[Self]) Src(s string) *Self

Src points an iframe-rendered node at an external URL.

func (*Common[Self]) Title

func (c *Common[Self]) Title(t string) *Self

Title sets the human-readable label used by layout chrome (page titles, card headers, sidebar nav).

func (*Common[Self]) VisibleWhen

func (c *Common[Self]) VisibleWhen(p *contract.Predicate) *Self

VisibleWhen sets the access predicate controlling node visibility.

type ContainerBuilder

type ContainerBuilder struct {
	*Common[ContainerBuilder]
	Props ContainerProps
}

func Container

func Container(children ...contract.GraphNode) *ContainerBuilder

func (*ContainerBuilder) Build

func (b *ContainerBuilder) Build() contract.GraphNode

func (*ContainerBuilder) ClassName

func (b *ContainerBuilder) ClassName(c string) *ContainerBuilder

func (*ContainerBuilder) Padding

func (b *ContainerBuilder) Padding(p Spacing) *ContainerBuilder

func (*ContainerBuilder) Size

type ContainerProps

type ContainerProps struct {
	Size      ContainerSize `json:"size,omitempty"`
	Padding   Spacing       `json:"padding,omitempty"`
	ClassName string        `json:"className,omitempty"`
}

ContainerProps configures a max-width wrapper.

type ContainerSize

type ContainerSize string

ContainerSize is the max-width preset for layout.container.

const (
	ContainerSm   ContainerSize = "sm"
	ContainerMd   ContainerSize = "md"
	ContainerLg   ContainerSize = "lg"
	ContainerXl   ContainerSize = "xl"
	Container2xl  ContainerSize = "2xl"
	ContainerFull ContainerSize = "full"
)

type DataGridBuilder

type DataGridBuilder struct {
	*Common[DataGridBuilder]
	Props DataGridProps
}

func DataGrid

func DataGrid() *DataGridBuilder

DataGrid constructs an organism.data-grid builder. Attach data via the inherited .Data() setter.

func (*DataGridBuilder) Build

func (b *DataGridBuilder) Build() contract.GraphNode

func (*DataGridBuilder) BulkActions

func (b *DataGridBuilder) BulkActions(actions ...GridBulkAction) *DataGridBuilder

func (*DataGridBuilder) ClassName

func (b *DataGridBuilder) ClassName(c string) *DataGridBuilder

func (*DataGridBuilder) Column

func (b *DataGridBuilder) Column(col GridColumn) *DataGridBuilder

func (*DataGridBuilder) Columns

func (b *DataGridBuilder) Columns(cols ...GridColumn) *DataGridBuilder

func (*DataGridBuilder) Density

func (b *DataGridBuilder) Density(d Density) *DataGridBuilder

func (*DataGridBuilder) EmptyState

func (*DataGridBuilder) Export

func (*DataGridBuilder) Filtering

func (*DataGridBuilder) Grouping

func (*DataGridBuilder) Height

func (b *DataGridBuilder) Height(h string) *DataGridBuilder

func (*DataGridBuilder) MasterDetail

func (b *DataGridBuilder) MasterDetail(c *MasterDetailConfig) *DataGridBuilder

func (*DataGridBuilder) OnRowClick

func (b *DataGridBuilder) OnRowClick(a *Action) *DataGridBuilder

func (*DataGridBuilder) Pagination

func (*DataGridBuilder) PaginationFromBuilder

func (b *DataGridBuilder) PaginationFromBuilder(pb *PaginationConfigBuilder) *DataGridBuilder

func (*DataGridBuilder) Pinning

func (*DataGridBuilder) Resizable

func (b *DataGridBuilder) Resizable(r bool) *DataGridBuilder

func (*DataGridBuilder) RowActions

func (b *DataGridBuilder) RowActions(actions ...GridRowAction) *DataGridBuilder

func (*DataGridBuilder) RowID

func (b *DataGridBuilder) RowID(field string) *DataGridBuilder

func (*DataGridBuilder) Selection

func (*DataGridBuilder) Sorting

func (*DataGridBuilder) StickyHeader

func (b *DataGridBuilder) StickyHeader(s bool) *DataGridBuilder

func (*DataGridBuilder) Toolbar

func (*DataGridBuilder) Virtualization

func (b *DataGridBuilder) Virtualization(c *VirtConfig) *DataGridBuilder

type DataGridProps

type DataGridProps struct {
	Columns        []GridColumn        `json:"columns"`
	RowID          string              `json:"rowId,omitempty"`
	Selection      *SelectionConfig    `json:"selection,omitempty"`
	Sorting        *SortingConfig      `json:"sorting,omitempty"`
	Filtering      *FilteringConfig    `json:"filtering,omitempty"`
	Pagination     *PaginationConfig   `json:"pagination,omitempty"`
	Grouping       *GroupingConfig     `json:"grouping,omitempty"`
	Pinning        *PinningConfig      `json:"pinning,omitempty"`
	Virtualization *VirtConfig         `json:"virtualization,omitempty"`
	Density        Density             `json:"density,omitempty"`
	StickyHeader   bool                `json:"stickyHeader,omitempty"`
	EmptyState     *EmptyStateConfig   `json:"emptyState,omitempty"`
	RowActions     []GridRowAction     `json:"rowActions,omitempty"`
	BulkActions    []GridBulkAction    `json:"bulkActions,omitempty"`
	Toolbar        *ToolbarConfig      `json:"toolbar,omitempty"`
	MasterDetail   *MasterDetailConfig `json:"masterDetail,omitempty"`
	OnRowClick     *Action             `json:"onRowClick,omitempty"`
	Export         *ExportConfig       `json:"export,omitempty"`
	Height         string              `json:"height,omitempty"`
	Resizable      bool                `json:"resizable,omitempty"`
	ClassName      string              `json:"className,omitempty"`
}

DataGridProps configures a TanStack-Table-backed DataGrid.

type DatePickerBuilder

type DatePickerBuilder struct {
	*Common[DatePickerBuilder]
	Props DatePickerProps
}

func DatePicker

func DatePicker(name string) *DatePickerBuilder

func (*DatePickerBuilder) Build

func (*DatePickerBuilder) ClassName

func (b *DatePickerBuilder) ClassName(c string) *DatePickerBuilder

func (*DatePickerBuilder) Default

func (*DatePickerBuilder) Disabled

func (b *DatePickerBuilder) Disabled(d bool) *DatePickerBuilder

func (*DatePickerBuilder) DisabledDates

func (b *DatePickerBuilder) DisabledDates(d ...string) *DatePickerBuilder

func (*DatePickerBuilder) Error

func (*DatePickerBuilder) Format

func (*DatePickerBuilder) Max

func (*DatePickerBuilder) Min

func (*DatePickerBuilder) Mode

func (*DatePickerBuilder) OnChange

func (b *DatePickerBuilder) OnChange(a *Action) *DatePickerBuilder

func (*DatePickerBuilder) Placeholder

func (b *DatePickerBuilder) Placeholder(p string) *DatePickerBuilder

func (*DatePickerBuilder) Value

type DatePickerMode

type DatePickerMode string
const (
	DateModeSingle DatePickerMode = "single"
	DateModeRange  DatePickerMode = "range"
)

type DatePickerProps

type DatePickerProps struct {
	Name          string         `json:"name"`
	Value         string         `json:"value,omitempty"`
	Default       string         `json:"default,omitempty"`
	Mode          DatePickerMode `json:"mode,omitempty"`
	Min           string         `json:"min,omitempty"`
	Max           string         `json:"max,omitempty"`
	DisabledDates []string       `json:"disabledDates,omitempty"`
	Format        string         `json:"format,omitempty"`
	Placeholder   string         `json:"placeholder,omitempty"`
	Disabled      bool           `json:"disabled,omitempty"`
	OnChange      *Action        `json:"onChange,omitempty"`
	Error         string         `json:"error,omitempty"`
	ClassName     string         `json:"className,omitempty"`
}

type Density

type Density string

Density names DataGrid row spacing.

const (
	DensityCompact  Density = "compact"
	DensityNormal   Density = "normal"
	DensitySpacious Density = "spacious"
)

type Direction

type Direction string

Direction is the flex axis.

const (
	DirectionRow      Direction = "row"
	DirectionColumn   Direction = "column"
	DirectionRowRev   Direction = "row-reverse"
	DirectionColumnRv Direction = "column-reverse"
)

type DividerBuilder

type DividerBuilder struct {
	*Common[DividerBuilder]
	Props DividerProps
}

func Divider

func Divider() *DividerBuilder

func (*DividerBuilder) Build

func (b *DividerBuilder) Build() contract.GraphNode

func (*DividerBuilder) ClassName

func (b *DividerBuilder) ClassName(c string) *DividerBuilder

func (*DividerBuilder) Decorative

func (b *DividerBuilder) Decorative(d bool) *DividerBuilder

func (*DividerBuilder) Label

func (b *DividerBuilder) Label(l string) *DividerBuilder

func (*DividerBuilder) Orientation

func (b *DividerBuilder) Orientation(o Orientation) *DividerBuilder

type DividerProps

type DividerProps struct {
	Orientation Orientation `json:"orientation,omitempty"`
	Decorative  bool        `json:"decorative,omitempty"`
	Label       string      `json:"label,omitempty"` // optional centered label
	ClassName   string      `json:"className,omitempty"`
}

DividerProps configures a separator line.

type DropdownMenuBuilder struct {
	*Common[DropdownMenuBuilder]
	Props DropdownMenuProps
}
func DropdownMenu() *DropdownMenuBuilder
func (b *DropdownMenuBuilder) Items(items ...MenuItem) *DropdownMenuBuilder

Trigger attaches a custom trigger node. When set it overrides TriggerLabel/TriggerIcon.

func (b *DropdownMenuBuilder) TriggerIcon(i string) *DropdownMenuBuilder
func (b *DropdownMenuBuilder) TriggerLabel(l string) *DropdownMenuBuilder
type DropdownMenuProps struct {
	TriggerLabel string     `json:"triggerLabel,omitempty"`
	TriggerIcon  string     `json:"triggerIcon,omitempty"`
	Items        []MenuItem `json:"items"`
	Side         string     `json:"side,omitempty"`  // "top" | "bottom" | "left" | "right"
	Align        string     `json:"align,omitempty"` // "start" | "center" | "end"
	ClassName    string     `json:"className,omitempty"`
}

type DynamicFormBuilder

type DynamicFormBuilder struct {
	*Common[DynamicFormBuilder]
	Props DynamicFormProps
}

func DynamicForm

func DynamicForm() *DynamicFormBuilder

DynamicForm constructs an organism.dynamic-form builder. The Op is the command intent invoked on submit — set it via .Op("users.create").

func (*DynamicFormBuilder) Build

func (*DynamicFormBuilder) Cancel

func (*DynamicFormBuilder) ClassName

func (b *DynamicFormBuilder) ClassName(c string) *DynamicFormBuilder

func (*DynamicFormBuilder) DefaultValues

func (b *DynamicFormBuilder) DefaultValues(v map[string]any) *DynamicFormBuilder

func (*DynamicFormBuilder) Field

func (*DynamicFormBuilder) Fields

func (b *DynamicFormBuilder) Fields(specs ...FieldSpec) *DynamicFormBuilder

func (*DynamicFormBuilder) GridCols

func (b *DynamicFormBuilder) GridCols(n int) *DynamicFormBuilder

func (*DynamicFormBuilder) InitialData

func (*DynamicFormBuilder) Layout

func (*DynamicFormBuilder) OnError

func (*DynamicFormBuilder) OnSuccess

func (b *DynamicFormBuilder) OnSuccess(a *Action) *DynamicFormBuilder

func (*DynamicFormBuilder) Reset

func (*DynamicFormBuilder) Section

func (*DynamicFormBuilder) Submit

func (*DynamicFormBuilder) SubmitLabel

func (b *DynamicFormBuilder) SubmitLabel(l string) *DynamicFormBuilder

func (*DynamicFormBuilder) Validation

type DynamicFormProps

type DynamicFormProps struct {
	Fields        []FieldSpec           `json:"fields"`
	Sections      []FormSection         `json:"sections,omitempty"`
	Layout        FormLayout            `json:"layout,omitempty"`
	GridCols      int                   `json:"gridCols,omitempty"` // for FormLayoutGrid
	DefaultValues map[string]any        `json:"defaultValues,omitempty"`
	InitialData   *contract.DataBinding `json:"initialData,omitempty"`
	Validation    FormValidationMode    `json:"validation,omitempty"`
	Submit        SubmitConfig          `json:"submit"`
	Cancel        *CancelConfig         `json:"cancel,omitempty"`
	Reset         *ResetConfig          `json:"reset,omitempty"`
	OnSuccess     *Action               `json:"onSuccess,omitempty"`
	OnError       *Action               `json:"onError,omitempty"`
	ClassName     string                `json:"className,omitempty"`
}

DynamicFormProps configures organism.dynamic-form.

type EmptyStateBuilder

type EmptyStateBuilder struct {
	*Common[EmptyStateBuilder]
	Props EmptyStateProps
}

func EmptyState

func EmptyState(title string) *EmptyStateBuilder

func (*EmptyStateBuilder) Actions

func (b *EmptyStateBuilder) Actions(nodes ...contract.GraphNode) *EmptyStateBuilder

func (*EmptyStateBuilder) Build

func (*EmptyStateBuilder) ClassName

func (b *EmptyStateBuilder) ClassName(c string) *EmptyStateBuilder

func (*EmptyStateBuilder) Description

func (b *EmptyStateBuilder) Description(d string) *EmptyStateBuilder

func (*EmptyStateBuilder) Icon

type EmptyStateConfig

type EmptyStateConfig struct {
	Icon        string `json:"icon,omitempty"`
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
}

EmptyStateConfig customizes the "no rows" state.

type EmptyStateProps

type EmptyStateProps struct {
	Icon        string `json:"icon,omitempty"`
	Title       string `json:"title"`
	Description string `json:"description,omitempty"`
	ClassName   string `json:"className,omitempty"`
}

type ErrorStateBuilder

type ErrorStateBuilder struct {
	*Common[ErrorStateBuilder]
	Props ErrorStateProps
}

func ErrorState

func ErrorState(title string) *ErrorStateBuilder

func (*ErrorStateBuilder) Build

func (*ErrorStateBuilder) ClassName

func (b *ErrorStateBuilder) ClassName(c string) *ErrorStateBuilder

func (*ErrorStateBuilder) Description

func (b *ErrorStateBuilder) Description(d string) *ErrorStateBuilder

func (*ErrorStateBuilder) Error

func (*ErrorStateBuilder) OnRetry

func (b *ErrorStateBuilder) OnRetry(a *Action) *ErrorStateBuilder

type ErrorStateProps

type ErrorStateProps struct {
	Title       string  `json:"title"`
	Description string  `json:"description,omitempty"`
	Error       string  `json:"error,omitempty"`
	OnRetry     *Action `json:"onRetry,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

type ExportConfig

type ExportConfig struct {
	CSV      bool   `json:"csv,omitempty"`
	JSON     bool   `json:"json,omitempty"`
	Excel    bool   `json:"excel,omitempty"`
	Filename string `json:"filename,omitempty"`
}

ExportConfig configures export options.

type FieldBuilder

type FieldBuilder struct {
	*Common[FieldBuilder]
	Props FieldProps
}

func Field

func Field(label string) *FieldBuilder

Field constructs a molecule.field builder. Pass the control via Control().

func (*FieldBuilder) Build

func (b *FieldBuilder) Build() contract.GraphNode

func (*FieldBuilder) ClassName

func (b *FieldBuilder) ClassName(c string) *FieldBuilder

func (*FieldBuilder) Control

func (b *FieldBuilder) Control(node contract.GraphNode) *FieldBuilder

Control attaches the form control node.

func (*FieldBuilder) Description

func (b *FieldBuilder) Description(d string) *FieldBuilder

func (*FieldBuilder) Error

func (b *FieldBuilder) Error(e string) *FieldBuilder

func (*FieldBuilder) For

func (b *FieldBuilder) For(id string) *FieldBuilder

func (*FieldBuilder) HelpText

func (b *FieldBuilder) HelpText(h string) *FieldBuilder

func (*FieldBuilder) Optional

func (b *FieldBuilder) Optional(o bool) *FieldBuilder

func (*FieldBuilder) Required

func (b *FieldBuilder) Required(r bool) *FieldBuilder

type FieldLayout

type FieldLayout struct {
	Span      int  `json:"span,omitempty"`      // 1..12 grid columns
	FullWidth bool `json:"fullWidth,omitempty"` // span entire row
	Indent    int  `json:"indent,omitempty"`    // left padding in grid columns
}

FieldLayout controls how a field places itself in the parent form grid.

type FieldProps

type FieldProps struct {
	Label       string `json:"label,omitempty"`
	Description string `json:"description,omitempty"`
	HelpText    string `json:"helpText,omitempty"`
	Required    bool   `json:"required,omitempty"`
	Optional    bool   `json:"optional,omitempty"`
	Error       string `json:"error,omitempty"`
	For         string `json:"for,omitempty"`
	ClassName   string `json:"className,omitempty"`
}

FieldProps configures a labeled form-control wrapper. The actual control (atom.input, atom.select, etc.) lives in the "control" slot.

type FieldRule

type FieldRule struct {
	Kind    FieldRuleKind `json:"kind"`
	Value   any           `json:"value,omitempty"`
	Message string        `json:"message,omitempty"`
	Intent  string        `json:"intent,omitempty"` // for kind=intent
}

FieldRule is a single validation entry. The shell composes a zod schema from a FieldSpec.Validate slice at render time.

type FieldRuleKind

type FieldRuleKind string

FieldRuleKind names a validation rule's check type.

const (
	RuleRequired  FieldRuleKind = "required"
	RuleMin       FieldRuleKind = "min"       // numeric min
	RuleMax       FieldRuleKind = "max"       // numeric max
	RuleMinLength FieldRuleKind = "minLength" // string min length
	RuleMaxLength FieldRuleKind = "maxLength" // string max length
	RuleRegex     FieldRuleKind = "regex"     // pattern match
	RuleEmail     FieldRuleKind = "email"
	RuleURL       FieldRuleKind = "url"
	RuleUUID      FieldRuleKind = "uuid"
	RuleIntent    FieldRuleKind = "intent" // async check via contract command
)

type FieldSpec

type FieldSpec struct {
	Name         string              `json:"name"`
	Type         FieldType           `json:"type"`
	Label        string              `json:"label,omitempty"`
	Description  string              `json:"description,omitempty"`
	Placeholder  string              `json:"placeholder,omitempty"`
	Default      any                 `json:"default,omitempty"`
	Required     bool                `json:"required,omitempty"`
	Disabled     *contract.Predicate `json:"disabled,omitempty"`
	Visible      *contract.Predicate `json:"visible,omitempty"`
	Validate     []FieldRule         `json:"validate,omitempty"`
	Options      *OptionSource       `json:"options,omitempty"`
	Dependencies []string            `json:"dependencies,omitempty"`
	Layout       *FieldLayout        `json:"layout,omitempty"`
	HelpText     string              `json:"helpText,omitempty"`
	Mask         string              `json:"mask,omitempty"`
	Format       string              `json:"format,omitempty"`
	Custom       string              `json:"custom,omitempty"` // intent name for FieldType=custom
	Min          *float64            `json:"min,omitempty"`
	Max          *float64            `json:"max,omitempty"`
	Step         *float64            `json:"step,omitempty"`
	MinLength    int                 `json:"minLength,omitempty"`
	MaxLength    int                 `json:"maxLength,omitempty"`
	Rows         int                 `json:"rows,omitempty"`
	Accept       string              `json:"accept,omitempty"` // for FieldFile
	Multiple     bool                `json:"multiple,omitempty"`
}

FieldSpec is the wire shape for one dynamic-form field.

type FieldSpecBuilder

type FieldSpecBuilder struct {
	// contains filtered or unexported fields
}

FieldSpecBuilder lets callers compose a FieldSpec fluently.

func CheckboxField

func CheckboxField(name string) *FieldSpecBuilder

func ComboboxField

func ComboboxField(name string) *FieldSpecBuilder

func CustomField

func CustomField(name, intent string) *FieldSpecBuilder

func DateField

func DateField(name string) *FieldSpecBuilder

func DateRangeField

func DateRangeField(name string) *FieldSpecBuilder

func EmailField

func EmailField(name string) *FieldSpecBuilder

func FileField

func FileField(name string) *FieldSpecBuilder

func HiddenField

func HiddenField(name string) *FieldSpecBuilder

func MultiSelectField

func MultiSelectField(name string) *FieldSpecBuilder

func NumberField

func NumberField(name string) *FieldSpecBuilder

func PasswordField

func PasswordField(name string) *FieldSpecBuilder

func RadioField

func RadioField(name string) *FieldSpecBuilder

func SelectField

func SelectField(name string) *FieldSpecBuilder

func SliderField

func SliderField(name string) *FieldSpecBuilder

func SwitchField

func SwitchField(name string) *FieldSpecBuilder

func TagInputField

func TagInputField(name string) *FieldSpecBuilder

func TextField

func TextField(name string) *FieldSpecBuilder

func TextareaField

func TextareaField(name string) *FieldSpecBuilder

func (*FieldSpecBuilder) Accept

func (*FieldSpecBuilder) Build

func (b *FieldSpecBuilder) Build() FieldSpec

Build returns the configured FieldSpec.

func (*FieldSpecBuilder) Default

func (b *FieldSpecBuilder) Default(v any) *FieldSpecBuilder

func (*FieldSpecBuilder) Dependencies

func (b *FieldSpecBuilder) Dependencies(deps ...string) *FieldSpecBuilder

func (*FieldSpecBuilder) Description

func (b *FieldSpecBuilder) Description(d string) *FieldSpecBuilder

func (*FieldSpecBuilder) Disabled

func (*FieldSpecBuilder) Email

func (b *FieldSpecBuilder) Email() *FieldSpecBuilder

func (*FieldSpecBuilder) Format

func (*FieldSpecBuilder) FullWidth

func (b *FieldSpecBuilder) FullWidth() *FieldSpecBuilder

func (*FieldSpecBuilder) HelpText

func (b *FieldSpecBuilder) HelpText(h string) *FieldSpecBuilder

func (*FieldSpecBuilder) Label

func (*FieldSpecBuilder) Layout

func (*FieldSpecBuilder) Mask

func (*FieldSpecBuilder) Max

func (*FieldSpecBuilder) MaxLength

func (b *FieldSpecBuilder) MaxLength(n int) *FieldSpecBuilder

func (*FieldSpecBuilder) Min

func (*FieldSpecBuilder) MinLength

func (b *FieldSpecBuilder) MinLength(n int) *FieldSpecBuilder

func (*FieldSpecBuilder) Multiple

func (b *FieldSpecBuilder) Multiple(m bool) *FieldSpecBuilder

func (*FieldSpecBuilder) Options

func (b *FieldSpecBuilder) Options(opts ...Option) *FieldSpecBuilder

func (*FieldSpecBuilder) OptionsFromQuery

func (*FieldSpecBuilder) Placeholder

func (b *FieldSpecBuilder) Placeholder(p string) *FieldSpecBuilder

func (*FieldSpecBuilder) Regex

func (b *FieldSpecBuilder) Regex(pattern, message string) *FieldSpecBuilder

func (*FieldSpecBuilder) Required

func (b *FieldSpecBuilder) Required(r bool) *FieldSpecBuilder

func (*FieldSpecBuilder) Rows

func (*FieldSpecBuilder) Span

func (*FieldSpecBuilder) Step

func (*FieldSpecBuilder) URL

func (*FieldSpecBuilder) Validate

func (b *FieldSpecBuilder) Validate(rules ...FieldRule) *FieldSpecBuilder

func (*FieldSpecBuilder) Visible

type FieldType

type FieldType string

FieldType identifies the renderer used for a DynamicForm field.

const (
	FieldText        FieldType = "text"
	FieldEmail       FieldType = "email"
	FieldPassword    FieldType = "password"
	FieldNumber      FieldType = "number"
	FieldTextarea    FieldType = "textarea"
	FieldSelect      FieldType = "select"
	FieldMultiSelect FieldType = "multi-select"
	FieldCheckbox    FieldType = "checkbox"
	FieldSwitch      FieldType = "switch"
	FieldRadio       FieldType = "radio"
	FieldDate        FieldType = "date"
	FieldDateRange   FieldType = "date-range"
	FieldFile        FieldType = "file"
	FieldCombobox    FieldType = "combobox"
	FieldTagInput    FieldType = "tag-input"
	FieldSlider      FieldType = "slider"
	FieldColor       FieldType = "color"
	FieldHidden      FieldType = "hidden"
	FieldCustom      FieldType = "custom"
)

type FileUploadBuilder

type FileUploadBuilder struct {
	*Common[FileUploadBuilder]
	Props FileUploadProps
}

func FileUpload

func FileUpload(name string) *FileUploadBuilder

func (*FileUploadBuilder) Accept

func (*FileUploadBuilder) Build

func (*FileUploadBuilder) ClassName

func (b *FileUploadBuilder) ClassName(c string) *FileUploadBuilder

func (*FileUploadBuilder) Disabled

func (b *FileUploadBuilder) Disabled(d bool) *FileUploadBuilder

func (*FileUploadBuilder) Error

func (*FileUploadBuilder) Hint

func (*FileUploadBuilder) MaxFiles

func (b *FileUploadBuilder) MaxFiles(n int) *FileUploadBuilder

func (*FileUploadBuilder) MaxSize

func (b *FileUploadBuilder) MaxSize(s int) *FileUploadBuilder

func (*FileUploadBuilder) Multiple

func (b *FileUploadBuilder) Multiple(m bool) *FileUploadBuilder

func (*FileUploadBuilder) OnChange

func (b *FileUploadBuilder) OnChange(a *Action) *FileUploadBuilder

type FileUploadProps

type FileUploadProps struct {
	Name      string  `json:"name"`
	Accept    string  `json:"accept,omitempty"`
	Multiple  bool    `json:"multiple,omitempty"`
	MaxSize   int     `json:"maxSize,omitempty"` // bytes
	MaxFiles  int     `json:"maxFiles,omitempty"`
	Disabled  bool    `json:"disabled,omitempty"`
	OnChange  *Action `json:"onChange,omitempty"`
	Hint      string  `json:"hint,omitempty"`
	Error     string  `json:"error,omitempty"`
	ClassName string  `json:"className,omitempty"`
}

type FilterMode

type FilterMode string

FilterMode names filter strategy.

const (
	FilterClient FilterMode = "client"
	FilterServer FilterMode = "server"
)

type FilterType

type FilterType string

FilterType names the column filter UI.

const (
	FilterText        FilterType = "text"
	FilterNumberRange FilterType = "number-range"
	FilterDateRange   FilterType = "date-range"
	FilterSelect      FilterType = "select"
	FilterMultiSelect FilterType = "multi-select"
	FilterBoolean     FilterType = "boolean"
)

type FilteringConfig

type FilteringConfig struct {
	Mode    FilterMode     `json:"mode,omitempty"`
	Global  bool           `json:"global,omitempty"`
	PerCol  bool           `json:"perCol,omitempty"`
	Default map[string]any `json:"default,omitempty"`
}

FilteringConfig configures filter UI and behavior.

type FormLayout

type FormLayout string

FormLayout names the field arrangement strategy.

const (
	FormLayoutSingle    FormLayout = "single"
	FormLayoutTwoColumn FormLayout = "two-column"
	FormLayoutGrid      FormLayout = "grid"
)

type FormSection

type FormSection struct {
	ID          string   `json:"id"`
	Title       string   `json:"title,omitempty"`
	Description string   `json:"description,omitempty"`
	Fields      []string `json:"fields"` // names referencing FieldSpec.Name
	Collapsible bool     `json:"collapsible,omitempty"`
	DefaultOpen bool     `json:"defaultOpen,omitempty"`
}

FormSection groups fields under a heading for visual structure.

type FormValidationMode

type FormValidationMode string

FormValidationMode names when validation runs.

const (
	ValidateOnSubmit FormValidationMode = "onSubmit"
	ValidateOnChange FormValidationMode = "onChange"
	ValidateOnBlur   FormValidationMode = "onBlur"
)

type GridBuilder

type GridBuilder struct {
	*Common[GridBuilder]
	Props GridProps
}

func Grid

func Grid(children ...contract.GraphNode) *GridBuilder

Grid constructs a layout.grid builder.

func (*GridBuilder) Build

func (b *GridBuilder) Build() contract.GraphNode

func (*GridBuilder) ClassName

func (b *GridBuilder) ClassName(c string) *GridBuilder

func (*GridBuilder) ColGap

func (b *GridBuilder) ColGap(g Spacing) *GridBuilder

func (*GridBuilder) Cols

func (b *GridBuilder) Cols(n int) *GridBuilder

Cols sets a fixed column count across all breakpoints. Use ResponsiveCols directly for per-breakpoint counts.

func (*GridBuilder) Gap

func (b *GridBuilder) Gap(g Spacing) *GridBuilder

func (*GridBuilder) Padding

func (b *GridBuilder) Padding(p Spacing) *GridBuilder

func (*GridBuilder) Responsive

func (b *GridBuilder) Responsive(c ResponsiveCols) *GridBuilder

func (*GridBuilder) RowGap

func (b *GridBuilder) RowGap(g Spacing) *GridBuilder

type GridBulkAction

type GridBulkAction struct {
	ID      string       `json:"id"`
	Label   string       `json:"label"`
	Icon    string       `json:"icon,omitempty"`
	Variant ColorVariant `json:"variant,omitempty"`
	Action  *Action      `json:"action"`
}

GridBulkAction is one entry in the bulk-action toolbar (shown when selection > 0).

type GridColumn

type GridColumn struct {
	ID            string        `json:"id"`
	Field         string        `json:"field"`
	Header        string        `json:"header"`
	Type          ColumnType    `json:"type,omitempty"`
	Format        string        `json:"format,omitempty"`
	Width         string        `json:"width,omitempty"`
	MinWidth      string        `json:"minWidth,omitempty"`
	MaxWidth      string        `json:"maxWidth,omitempty"`
	Sortable      bool          `json:"sortable,omitempty"`
	Filterable    bool          `json:"filterable,omitempty"`
	Hideable      bool          `json:"hideable,omitempty"`
	Resizable     bool          `json:"resizable,omitempty"`
	Pinned        ColumnPin     `json:"pinned,omitempty"`
	Aggregation   Aggregation   `json:"aggregation,omitempty"`
	Align         Align         `json:"align,omitempty"`
	Truncate      bool          `json:"truncate,omitempty"`
	Cell          *CellRender   `json:"cell,omitempty"`
	FilterType    FilterType    `json:"filterType,omitempty"`
	FilterOptions *OptionSource `json:"filterOptions,omitempty"`
	Description   string        `json:"description,omitempty"`
	Hidden        bool          `json:"hidden,omitempty"`
}

GridColumn defines one column in a DataGrid.

type GridProps

type GridProps struct {
	Cols      ResponsiveCols `json:"cols,omitempty"`
	Gap       Spacing        `json:"gap,omitempty"`
	RowGap    Spacing        `json:"rowGap,omitempty"`
	ColGap    Spacing        `json:"colGap,omitempty"`
	Padding   Spacing        `json:"padding,omitempty"`
	ClassName string         `json:"className,omitempty"`
}

GridProps configures a CSS grid container. Cols accepts a fixed integer (use Cols(n)) or a responsive ResponsiveCols struct.

type GridRowAction

type GridRowAction struct {
	ID       string              `json:"id"`
	Label    string              `json:"label"`
	Icon     string              `json:"icon,omitempty"`
	Variant  ColorVariant        `json:"variant,omitempty"`
	Disabled *contract.Predicate `json:"disabled,omitempty"`
	Visible  *contract.Predicate `json:"visible,omitempty"`
	Action   *Action             `json:"action"`
}

GridRowAction is one entry in the per-row action menu.

type GroupingConfig

type GroupingConfig struct {
	By []string `json:"by,omitempty"` // column ids
}

GroupingConfig configures row grouping.

type HeadingBuilder

type HeadingBuilder struct {
	*Common[HeadingBuilder]
	Props HeadingProps
}

func Heading

func Heading(text string) *HeadingBuilder

func (*HeadingBuilder) Build

func (b *HeadingBuilder) Build() contract.GraphNode

func (*HeadingBuilder) ClassName

func (b *HeadingBuilder) ClassName(c string) *HeadingBuilder

func (*HeadingBuilder) Level

func (b *HeadingBuilder) Level(l int) *HeadingBuilder

func (*HeadingBuilder) Variant

func (b *HeadingBuilder) Variant(v TextVariant) *HeadingBuilder

type HeadingLevel

type HeadingLevel int

HeadingLevel is the semantic level of a heading element (1–6).

type HeadingProps

type HeadingProps struct {
	Text      string       `json:"text"`
	Level     HeadingLevel `json:"level,omitempty"`
	Variant   TextVariant  `json:"variant,omitempty"`
	ClassName string       `json:"className,omitempty"`
}

HeadingProps configures a semantic heading.

type IconBuilder

type IconBuilder struct {
	*Common[IconBuilder]
	Props IconProps
}

func Icon

func Icon(name string) *IconBuilder

func (*IconBuilder) Build

func (b *IconBuilder) Build() contract.GraphNode

func (*IconBuilder) ClassName

func (b *IconBuilder) ClassName(c string) *IconBuilder

func (*IconBuilder) Size

func (b *IconBuilder) Size(s int) *IconBuilder

func (*IconBuilder) StrokeWidth

func (b *IconBuilder) StrokeWidth(w int) *IconBuilder

type IconButtonBuilder

type IconButtonBuilder struct {
	*Common[IconButtonBuilder]
	Props IconButtonProps
}

func IconButton

func IconButton(icon string) *IconButtonBuilder

func (*IconButtonBuilder) AriaLabel

func (b *IconButtonBuilder) AriaLabel(l string) *IconButtonBuilder

func (*IconButtonBuilder) Build

func (*IconButtonBuilder) ClassName

func (b *IconButtonBuilder) ClassName(c string) *IconButtonBuilder

func (*IconButtonBuilder) Confirm

func (*IconButtonBuilder) Disabled

func (b *IconButtonBuilder) Disabled(d bool) *IconButtonBuilder

func (*IconButtonBuilder) Loading

func (b *IconButtonBuilder) Loading(l bool) *IconButtonBuilder

func (*IconButtonBuilder) OnClick

func (b *IconButtonBuilder) OnClick(a *Action) *IconButtonBuilder

func (*IconButtonBuilder) Size

func (*IconButtonBuilder) Tooltip

func (*IconButtonBuilder) Variant

type IconButtonProps

type IconButtonProps struct {
	Icon      string       `json:"icon"`
	Variant   ColorVariant `json:"variant,omitempty"`
	Size      Size         `json:"size,omitempty"`
	Tooltip   string       `json:"tooltip,omitempty"`
	AriaLabel string       `json:"ariaLabel,omitempty"`
	Loading   bool         `json:"loading,omitempty"`
	Disabled  bool         `json:"disabled,omitempty"`
	OnClick   *Action      `json:"onClick,omitempty"`
	Confirm   string       `json:"confirm,omitempty"`
	ClassName string       `json:"className,omitempty"`
}

IconButtonProps is a square icon-only button.

type IconProps

type IconProps struct {
	Name        string `json:"name"`
	Size        int    `json:"size,omitempty"`
	StrokeWidth int    `json:"strokeWidth,omitempty"`
	ClassName   string `json:"className,omitempty"`
}

IconProps configures a lucide icon.

type ImageBuilder

type ImageBuilder struct {
	*Common[ImageBuilder]
	Props ImageProps
}

func Image

func Image(src string) *ImageBuilder

func (*ImageBuilder) Alt

func (b *ImageBuilder) Alt(a string) *ImageBuilder

func (*ImageBuilder) AspectRatio

func (b *ImageBuilder) AspectRatio(a AspectRatio) *ImageBuilder

func (*ImageBuilder) Build

func (b *ImageBuilder) Build() contract.GraphNode

func (*ImageBuilder) ClassName

func (b *ImageBuilder) ClassName(c string) *ImageBuilder

func (*ImageBuilder) Height

func (b *ImageBuilder) Height(h string) *ImageBuilder

func (*ImageBuilder) ObjectFit

func (b *ImageBuilder) ObjectFit(o ObjectFit) *ImageBuilder

func (*ImageBuilder) Radius

func (b *ImageBuilder) Radius(r Radius) *ImageBuilder

func (*ImageBuilder) Width

func (b *ImageBuilder) Width(w string) *ImageBuilder

type ImageProps

type ImageProps struct {
	Src         string      `json:"src"`
	Alt         string      `json:"alt,omitempty"`
	AspectRatio AspectRatio `json:"aspectRatio,omitempty"`
	ObjectFit   ObjectFit   `json:"objectFit,omitempty"`
	Radius      Radius      `json:"radius,omitempty"`
	Width       string      `json:"width,omitempty"`
	Height      string      `json:"height,omitempty"`
	ClassName   string      `json:"className,omitempty"`
}

ImageProps configures an image element.

type InputBuilder

type InputBuilder struct {
	*Common[InputBuilder]
	Props InputProps
}

func Input

func Input(name string) *InputBuilder

func (*InputBuilder) Autocomplete

func (b *InputBuilder) Autocomplete(a string) *InputBuilder

func (*InputBuilder) Autofocus

func (b *InputBuilder) Autofocus(a bool) *InputBuilder

func (*InputBuilder) Build

func (b *InputBuilder) Build() contract.GraphNode

func (*InputBuilder) ClassName

func (b *InputBuilder) ClassName(c string) *InputBuilder

func (*InputBuilder) Default

func (b *InputBuilder) Default(v string) *InputBuilder

func (*InputBuilder) Disabled

func (b *InputBuilder) Disabled(d bool) *InputBuilder

func (*InputBuilder) Error

func (b *InputBuilder) Error(e string) *InputBuilder

func (*InputBuilder) Max

func (b *InputBuilder) Max(v float64) *InputBuilder

func (*InputBuilder) MaxLength

func (b *InputBuilder) MaxLength(n int) *InputBuilder

func (*InputBuilder) Min

func (b *InputBuilder) Min(v float64) *InputBuilder

func (*InputBuilder) MinLength

func (b *InputBuilder) MinLength(n int) *InputBuilder

func (*InputBuilder) OnChange

func (b *InputBuilder) OnChange(a *Action) *InputBuilder

func (*InputBuilder) OnSubmit

func (b *InputBuilder) OnSubmit(a *Action) *InputBuilder

func (*InputBuilder) Pattern

func (b *InputBuilder) Pattern(p string) *InputBuilder

func (*InputBuilder) Placeholder

func (b *InputBuilder) Placeholder(p string) *InputBuilder

func (*InputBuilder) Prefix

func (b *InputBuilder) Prefix(p string) *InputBuilder

func (*InputBuilder) PrefixIcon

func (b *InputBuilder) PrefixIcon(i string) *InputBuilder

func (*InputBuilder) ReadOnly

func (b *InputBuilder) ReadOnly(r bool) *InputBuilder

func (*InputBuilder) Required

func (b *InputBuilder) Required(r bool) *InputBuilder

func (*InputBuilder) Size

func (b *InputBuilder) Size(s Size) *InputBuilder

func (*InputBuilder) Step

func (b *InputBuilder) Step(v float64) *InputBuilder

func (*InputBuilder) Suffix

func (b *InputBuilder) Suffix(s string) *InputBuilder

func (*InputBuilder) SuffixIcon

func (b *InputBuilder) SuffixIcon(i string) *InputBuilder

func (*InputBuilder) Type

func (b *InputBuilder) Type(t InputType) *InputBuilder

func (*InputBuilder) Value

func (b *InputBuilder) Value(v string) *InputBuilder

type InputProps

type InputProps struct {
	Name         string    `json:"name"`
	Type         InputType `json:"type,omitempty"`
	Placeholder  string    `json:"placeholder,omitempty"`
	Value        string    `json:"value,omitempty"`
	Default      string    `json:"default,omitempty"`
	Disabled     bool      `json:"disabled,omitempty"`
	ReadOnly     bool      `json:"readOnly,omitempty"`
	Required     bool      `json:"required,omitempty"`
	Autofocus    bool      `json:"autofocus,omitempty"`
	Autocomplete string    `json:"autocomplete,omitempty"`
	Prefix       string    `json:"prefix,omitempty"`
	Suffix       string    `json:"suffix,omitempty"`
	PrefixIcon   string    `json:"prefixIcon,omitempty"`
	SuffixIcon   string    `json:"suffixIcon,omitempty"`
	MinLength    int       `json:"minLength,omitempty"`
	MaxLength    int       `json:"maxLength,omitempty"`
	Pattern      string    `json:"pattern,omitempty"`
	Min          *float64  `json:"min,omitempty"`
	Max          *float64  `json:"max,omitempty"`
	Step         *float64  `json:"step,omitempty"`
	OnChange     *Action   `json:"onChange,omitempty"`
	OnSubmit     *Action   `json:"onSubmit,omitempty"`
	Size         Size      `json:"size,omitempty"`
	Error        string    `json:"error,omitempty"`
	ClassName    string    `json:"className,omitempty"`
}

InputProps configures a text input.

type InputType

type InputType string

InputType is the underlying HTML input type.

const (
	InputText     InputType = "text"
	InputEmail    InputType = "email"
	InputPassword InputType = "password"
	InputNumber   InputType = "number"
	InputSearch   InputType = "search"
	InputTel      InputType = "tel"
	InputURL      InputType = "url"
	InputDate     InputType = "date"
	InputTime     InputType = "time"
)

type Justify

type Justify string

Justify maps to justify-* (flex main-axis alignment).

const (
	JustifyStart   Justify = "start"
	JustifyCenter  Justify = "center"
	JustifyEnd     Justify = "end"
	JustifyBetween Justify = "between"
	JustifyAround  Justify = "around"
	JustifyEvenly  Justify = "evenly"
)

type KanbanBuilder

type KanbanBuilder struct {
	*Common[KanbanBuilder]
	Props KanbanProps
}

func Kanban

func Kanban() *KanbanBuilder

func (*KanbanBuilder) Build

func (b *KanbanBuilder) Build() contract.GraphNode

func (*KanbanBuilder) CardIntent

func (b *KanbanBuilder) CardIntent(i string) *KanbanBuilder

func (*KanbanBuilder) ClassName

func (b *KanbanBuilder) ClassName(c string) *KanbanBuilder

func (*KanbanBuilder) Columns

func (b *KanbanBuilder) Columns(cols ...KanbanColumn) *KanbanBuilder

func (*KanbanBuilder) OnCardClick

func (b *KanbanBuilder) OnCardClick(a *Action) *KanbanBuilder

func (*KanbanBuilder) OnMove

func (b *KanbanBuilder) OnMove(a *Action) *KanbanBuilder

func (*KanbanBuilder) StatusField

func (b *KanbanBuilder) StatusField(f string) *KanbanBuilder

type KanbanColumn

type KanbanColumn struct {
	ID     string   `json:"id"`
	Title  string   `json:"title"`
	Accept []string `json:"accept,omitempty"` // status values this column accepts
	Color  string   `json:"color,omitempty"`  // muted | accent | destructive (shadcn only)
	Limit  int      `json:"limit,omitempty"`
}

type KanbanProps

type KanbanProps struct {
	Columns     []KanbanColumn `json:"columns"`
	StatusField string         `json:"statusField"`          // field on each card used to assign columns
	CardIntent  string         `json:"cardIntent,omitempty"` // intent that renders a card
	OnMove      *Action        `json:"onMove,omitempty"`     // dispatched on drop with { id, from, to }
	OnCardClick *Action        `json:"onCardClick,omitempty"`
	ClassName   string         `json:"className,omitempty"`
}

type KbdBuilder

type KbdBuilder struct {
	*Common[KbdBuilder]
	Props KbdProps
}

func Kbd

func Kbd(keys ...string) *KbdBuilder

func (*KbdBuilder) Build

func (b *KbdBuilder) Build() contract.GraphNode

func (*KbdBuilder) ClassName

func (b *KbdBuilder) ClassName(c string) *KbdBuilder

func (*KbdBuilder) Size

func (b *KbdBuilder) Size(s Size) *KbdBuilder

type KbdProps

type KbdProps struct {
	Keys      []string `json:"keys"`
	Size      Size     `json:"size,omitempty"`
	ClassName string   `json:"className,omitempty"`
}

KbdProps configures a keyboard-shortcut hint.

type LabelBuilder

type LabelBuilder struct {
	*Common[LabelBuilder]
	Props LabelProps
}

func Label

func Label(text string) *LabelBuilder

func (*LabelBuilder) Build

func (b *LabelBuilder) Build() contract.GraphNode

func (*LabelBuilder) ClassName

func (b *LabelBuilder) ClassName(c string) *LabelBuilder

func (*LabelBuilder) For

func (b *LabelBuilder) For(id string) *LabelBuilder

func (*LabelBuilder) Optional

func (b *LabelBuilder) Optional(o bool) *LabelBuilder

func (*LabelBuilder) Required

func (b *LabelBuilder) Required(r bool) *LabelBuilder

type LabelProps

type LabelProps struct {
	Text      string `json:"text"`
	For       string `json:"for,omitempty"`
	Required  bool   `json:"required,omitempty"`
	Optional  bool   `json:"optional,omitempty"` // render "(optional)" hint
	ClassName string `json:"className,omitempty"`
}

LabelProps configures a form-control label.

type LinkBuilder

type LinkBuilder struct {
	*Common[LinkBuilder]
	Props LinkProps
}
func Link(text, href string) *LinkBuilder

func (*LinkBuilder) Build

func (b *LinkBuilder) Build() contract.GraphNode

func (*LinkBuilder) ClassName

func (b *LinkBuilder) ClassName(c string) *LinkBuilder

func (*LinkBuilder) External

func (b *LinkBuilder) External(e bool) *LinkBuilder

func (*LinkBuilder) Icon

func (b *LinkBuilder) Icon(i string) *LinkBuilder

func (*LinkBuilder) Variant

func (b *LinkBuilder) Variant(v TextVariant) *LinkBuilder

type LinkProps

type LinkProps struct {
	Text      string      `json:"text"`
	Href      string      `json:"href"`
	External  bool        `json:"external,omitempty"`
	Variant   TextVariant `json:"variant,omitempty"`
	Icon      string      `json:"icon,omitempty"`
	ClassName string      `json:"className,omitempty"`
}

LinkProps configures a hyperlink.

type ListItemBuilder

type ListItemBuilder struct {
	*Common[ListItemBuilder]
	Props ListItemProps
}

func ListItem

func ListItem(title string) *ListItemBuilder

func (*ListItemBuilder) Avatar

func (b *ListItemBuilder) Avatar(src, fallback string) *ListItemBuilder

func (*ListItemBuilder) Build

func (b *ListItemBuilder) Build() contract.GraphNode

func (*ListItemBuilder) ClassName

func (b *ListItemBuilder) ClassName(c string) *ListItemBuilder

func (*ListItemBuilder) Description

func (b *ListItemBuilder) Description(d string) *ListItemBuilder

func (*ListItemBuilder) Disabled

func (b *ListItemBuilder) Disabled(d bool) *ListItemBuilder

func (*ListItemBuilder) Href

func (*ListItemBuilder) Icon

func (*ListItemBuilder) OnClick

func (b *ListItemBuilder) OnClick(a *Action) *ListItemBuilder

func (*ListItemBuilder) Selected

func (b *ListItemBuilder) Selected(s bool) *ListItemBuilder

func (*ListItemBuilder) Trailing

func (b *ListItemBuilder) Trailing(nodes ...contract.GraphNode) *ListItemBuilder

type ListItemProps

type ListItemProps struct {
	Title          string  `json:"title"`
	Description    string  `json:"description,omitempty"`
	Icon           string  `json:"icon,omitempty"`
	AvatarSrc      string  `json:"avatarSrc,omitempty"`
	AvatarFallback string  `json:"avatarFallback,omitempty"`
	Href           string  `json:"href,omitempty"`
	Selected       bool    `json:"selected,omitempty"`
	Disabled       bool    `json:"disabled,omitempty"`
	OnClick        *Action `json:"onClick,omitempty"`
	ClassName      string  `json:"className,omitempty"`
}

type LoadingStateBuilder

type LoadingStateBuilder struct {
	*Common[LoadingStateBuilder]
	Props LoadingStateProps
}

func LoadingState

func LoadingState() *LoadingStateBuilder

func (*LoadingStateBuilder) Build

func (*LoadingStateBuilder) ClassName

func (*LoadingStateBuilder) Label

type LoadingStateProps

type LoadingStateProps struct {
	Label     string `json:"label,omitempty"`
	ClassName string `json:"className,omitempty"`
}

type MagicLinkFormBuilder

type MagicLinkFormBuilder struct {
	*Common[MagicLinkFormBuilder]
	Props MagicLinkFormProps
}

func MagicLinkForm

func MagicLinkForm() *MagicLinkFormBuilder

func (*MagicLinkFormBuilder) BackToSignIn

func (b *MagicLinkFormBuilder) BackToSignIn(u string) *MagicLinkFormBuilder

func (*MagicLinkFormBuilder) Brand

func (*MagicLinkFormBuilder) Build

func (*MagicLinkFormBuilder) ClassName

func (*MagicLinkFormBuilder) OnSuccess

func (*MagicLinkFormBuilder) OpName

func (*MagicLinkFormBuilder) SuccessMessage

func (b *MagicLinkFormBuilder) SuccessMessage(m string) *MagicLinkFormBuilder

type MagicLinkFormProps

type MagicLinkFormProps struct {
	Op             string  `json:"op"`
	Brand          string  `json:"brand,omitempty"`
	SuccessMessage string  `json:"successMessage,omitempty"`
	BackToSignIn   string  `json:"backToSignIn,omitempty"`
	OnSuccess      *Action `json:"onSuccess,omitempty"`
	ClassName      string  `json:"className,omitempty"`
}

type MasterDetailConfig

type MasterDetailConfig struct {
	Intent string `json:"intent"` // intent rendered inside the expanded row
}

MasterDetailConfig enables expandable rows.

type MenuItem struct {
	Label     string       `json:"label,omitempty"`
	Icon      string       `json:"icon,omitempty"`
	Shortcut  []string     `json:"shortcut,omitempty"`
	Variant   ColorVariant `json:"variant,omitempty"`
	Disabled  bool         `json:"disabled,omitempty"`
	Separator bool         `json:"separator,omitempty"`
	Action    *Action      `json:"action,omitempty"`
	Items     []MenuItem   `json:"items,omitempty"`
}

MenuItem is a dropdown entry. Set Separator=true for a divider; set Items for a submenu.

type NotificationCenterBuilder

type NotificationCenterBuilder struct {
	*Common[NotificationCenterBuilder]
	Props NotificationCenterProps
}

func NotificationCenter

func NotificationCenter() *NotificationCenterBuilder

func (*NotificationCenterBuilder) BodyField

func (*NotificationCenterBuilder) Build

func (*NotificationCenterBuilder) ClassName

func (*NotificationCenterBuilder) HrefField

func (*NotificationCenterBuilder) IconField

func (*NotificationCenterBuilder) OnClick

func (*NotificationCenterBuilder) OnMarkAllRead

func (*NotificationCenterBuilder) OnMarkRead

func (*NotificationCenterBuilder) ReadField

func (*NotificationCenterBuilder) TimestampField

func (*NotificationCenterBuilder) TitleField

func (*NotificationCenterBuilder) UnreadOnlyDefault

func (b *NotificationCenterBuilder) UnreadOnlyDefault(s bool) *NotificationCenterBuilder

type NotificationCenterProps

type NotificationCenterProps struct {
	TitleField        string  `json:"titleField,omitempty"`
	BodyField         string  `json:"bodyField,omitempty"`
	TimestampField    string  `json:"timestampField,omitempty"`
	ReadField         string  `json:"readField,omitempty"`
	IconField         string  `json:"iconField,omitempty"`
	HrefField         string  `json:"hrefField,omitempty"`
	OnMarkRead        *Action `json:"onMarkRead,omitempty"`
	OnMarkAllRead     *Action `json:"onMarkAllRead,omitempty"`
	OnClick           *Action `json:"onClick,omitempty"`
	UnreadOnlyDefault bool    `json:"unreadOnlyDefault,omitempty"`
	ClassName         string  `json:"className,omitempty"`
}

type OAuthButtonsBuilder

type OAuthButtonsBuilder struct {
	*Common[OAuthButtonsBuilder]
	Props OAuthButtonsProps
}

func OAuthButtons

func OAuthButtons() *OAuthButtonsBuilder

func (*OAuthButtonsBuilder) Build

func (*OAuthButtonsBuilder) ClassName

func (*OAuthButtonsBuilder) ConfigSource

func (*OAuthButtonsBuilder) FullWidth

func (b *OAuthButtonsBuilder) FullWidth(w bool) *OAuthButtonsBuilder

func (*OAuthButtonsBuilder) Layout

func (*OAuthButtonsBuilder) Providers

func (*OAuthButtonsBuilder) RedirectURL

func (b *OAuthButtonsBuilder) RedirectURL(u string) *OAuthButtonsBuilder

func (*OAuthButtonsBuilder) Variant

type OAuthButtonsProps

type OAuthButtonsProps struct {
	Providers    []OAuthProvider       `json:"providers,omitempty"`
	ConfigSource *contract.DataBinding `json:"configSource,omitempty"` // dynamic providers
	Variant      ColorVariant          `json:"variant,omitempty"`
	FullWidth    bool                  `json:"fullWidth,omitempty"`
	Layout       string                `json:"layout,omitempty"` // "grid" | "stack"
	RedirectURL  string                `json:"redirectURL,omitempty"`
	ClassName    string                `json:"className,omitempty"`
}

type OAuthProvider

type OAuthProvider struct {
	ID    string `json:"id"`
	Label string `json:"label"`
	Icon  string `json:"icon,omitempty"`
	// AuthStartURL is the absolute URL the shell POSTs to begin the OAuth
	// flow. The endpoint responds with `{auth_url}` which the shell then
	// navigates to.
	AuthStartURL string `json:"authStartURL"`
}

type ObjectFit

type ObjectFit string

ObjectFit maps to Tailwind's object-* utilities.

const (
	ObjectCover   ObjectFit = "cover"
	ObjectContain ObjectFit = "contain"
	ObjectFill    ObjectFit = "fill"
	ObjectNone    ObjectFit = "none"
)

type Option

type Option struct {
	Label       string `json:"label"`
	Value       string `json:"value"`
	Description string `json:"description,omitempty"`
	Icon        string `json:"icon,omitempty"`
	Disabled    bool   `json:"disabled,omitempty"`
}

Option is a single choice in a radio/select/combobox group.

type OptionMapping

type OptionMapping struct {
	LabelKey       string `json:"labelKey,omitempty"` // default: "label" then "name"
	ValueKey       string `json:"valueKey,omitempty"` // default: "value" then "id"
	DescriptionKey string `json:"descriptionKey,omitempty"`
	IconKey        string `json:"iconKey,omitempty"`
	DisabledKey    string `json:"disabledKey,omitempty"`
}

OptionMapping describes how to extract Option fields from a generic record returned by a DataBinding (used by FieldType=select|combobox|radio).

type OptionSource

type OptionSource struct {
	Static []Option              `json:"static,omitempty"`
	Data   *contract.DataBinding `json:"data,omitempty"`
	Map    *OptionMapping        `json:"map,omitempty"`
}

OptionSource declares where a field's choices come from — either static list, dynamic query, or both (static rendered first).

type OrgProfileBuilder

type OrgProfileBuilder struct {
	*Common[OrgProfileBuilder]
	Props OrgProfileProps
}

func OrgProfile

func OrgProfile() *OrgProfileBuilder

func (*OrgProfileBuilder) AvailableRoles

func (b *OrgProfileBuilder) AvailableRoles(roles ...Option) *OrgProfileBuilder

func (*OrgProfileBuilder) Build

func (*OrgProfileBuilder) ClassName

func (b *OrgProfileBuilder) ClassName(c string) *OrgProfileBuilder

func (*OrgProfileBuilder) DeleteOrgOp

func (b *OrgProfileBuilder) DeleteOrgOp(op string) *OrgProfileBuilder

func (*OrgProfileBuilder) InviteOp

func (b *OrgProfileBuilder) InviteOp(op string) *OrgProfileBuilder

func (*OrgProfileBuilder) MembersSource

func (*OrgProfileBuilder) OrgSource

func (*OrgProfileBuilder) RemoveMemberOp

func (b *OrgProfileBuilder) RemoveMemberOp(op string) *OrgProfileBuilder

func (*OrgProfileBuilder) UpdateMemberRoleOp

func (b *OrgProfileBuilder) UpdateMemberRoleOp(op string) *OrgProfileBuilder

func (*OrgProfileBuilder) UpdateOp

func (b *OrgProfileBuilder) UpdateOp(op string) *OrgProfileBuilder

type OrgProfileProps

type OrgProfileProps struct {
	OrgSource          *contract.DataBinding `json:"orgSource,omitempty"`
	MembersSource      *contract.DataBinding `json:"membersSource,omitempty"`
	UpdateOp           string                `json:"updateOp,omitempty"`
	InviteOp           string                `json:"inviteOp,omitempty"`
	RemoveMemberOp     string                `json:"removeMemberOp,omitempty"`
	UpdateMemberRoleOp string                `json:"updateMemberRoleOp,omitempty"`
	DeleteOrgOp        string                `json:"deleteOrgOp,omitempty"`
	AvailableRoles     []Option              `json:"availableRoles,omitempty"`
	ClassName          string                `json:"className,omitempty"`
}

type OrgSwitcherBuilder

type OrgSwitcherBuilder struct {
	*Common[OrgSwitcherBuilder]
	Props OrgSwitcherProps
}

func OrgSwitcher

func OrgSwitcher() *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) Build

func (*OrgSwitcherBuilder) ClassName

func (b *OrgSwitcherBuilder) ClassName(c string) *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) CreateOrgURL

func (b *OrgSwitcherBuilder) CreateOrgURL(u string) *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) CurrentField

func (b *OrgSwitcherBuilder) CurrentField(f string) *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) ManageOrgURL

func (b *OrgSwitcherBuilder) ManageOrgURL(u string) *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) OnSwitch

func (b *OrgSwitcherBuilder) OnSwitch(a *Action) *OrgSwitcherBuilder

func (*OrgSwitcherBuilder) OrgsSource

func (*OrgSwitcherBuilder) ShowPersonal

func (b *OrgSwitcherBuilder) ShowPersonal(s bool) *OrgSwitcherBuilder

type OrgSwitcherProps

type OrgSwitcherProps struct {
	OrgsSource   *contract.DataBinding `json:"orgsSource,omitempty"`
	CurrentField string                `json:"currentField,omitempty"` // path in session to current org
	OnSwitch     *Action               `json:"onSwitch,omitempty"`
	CreateOrgURL string                `json:"createOrgURL,omitempty"`
	ManageOrgURL string                `json:"manageOrgURL,omitempty"`
	ShowPersonal bool                  `json:"showPersonal,omitempty"`
	ClassName    string                `json:"className,omitempty"`
}

type Orientation

type Orientation string

Orientation distinguishes horizontal/vertical for separators, splits, radio groups, accordions.

const (
	OrientationHorizontal Orientation = "horizontal"
	OrientationVertical   Orientation = "vertical"
)

type PageBuilder

type PageBuilder struct {
	*Common[PageBuilder]
	Props PageProps
}

func Page

func Page(title string) *PageBuilder

Page constructs a layout.page builder. The title argument fills node.title — Page("Members") is equivalent to Page("").Title("Members").

func (*PageBuilder) Actions

func (b *PageBuilder) Actions(nodes ...contract.GraphNode) *PageBuilder

Actions attaches CTAs to the page header's actions slot.

func (*PageBuilder) Breadcrumbs

func (b *PageBuilder) Breadcrumbs(crumbs ...PageCrumb) *PageBuilder

Breadcrumbs replaces the breadcrumb list wholesale.

func (*PageBuilder) Build

func (b *PageBuilder) Build() contract.GraphNode

func (*PageBuilder) ClassName

func (b *PageBuilder) ClassName(c string) *PageBuilder

func (*PageBuilder) ContainerWidth

func (b *PageBuilder) ContainerWidth(s ContainerSize) *PageBuilder

func (*PageBuilder) Crumb

func (b *PageBuilder) Crumb(label, href string) *PageBuilder

Crumb appends a breadcrumb entry.

func (*PageBuilder) Description

func (b *PageBuilder) Description(d string) *PageBuilder

func (*PageBuilder) NoChrome

func (b *PageBuilder) NoChrome(n bool) *PageBuilder

type PageCrumb

type PageCrumb struct {
	Label string `json:"label"`
	Href  string `json:"href,omitempty"`
	Icon  string `json:"icon,omitempty"`
}

PageCrumb is a single breadcrumb entry.

type PageMode

type PageMode string

PageMode names pagination strategy.

const (
	PageClient PageMode = "client"
	PageServer PageMode = "server"
)

type PageProps

type PageProps struct {
	Description    string        `json:"description,omitempty"`
	Breadcrumbs    []PageCrumb   `json:"breadcrumbs,omitempty"`
	ContainerWidth ContainerSize `json:"containerWidth,omitempty"`
	NoChrome       bool          `json:"noChrome,omitempty"`
	ClassName      string        `json:"className,omitempty"`
}

PageProps configures a top-level page shell with a header (title + description + breadcrumbs + actions) and a content area. The visible title lives on node.title (set via the title argument or Title()).

type PaginationBuilder

type PaginationBuilder struct {
	*Common[PaginationBuilder]
	Props PaginationProps
}

func Pagination

func Pagination() *PaginationBuilder

func (*PaginationBuilder) Build

func (*PaginationBuilder) ClassName

func (b *PaginationBuilder) ClassName(c string) *PaginationBuilder

func (*PaginationBuilder) OnPageChange

func (b *PaginationBuilder) OnPageChange(a *Action) *PaginationBuilder

func (*PaginationBuilder) OnPageSizeChange

func (b *PaginationBuilder) OnPageSizeChange(a *Action) *PaginationBuilder

func (*PaginationBuilder) Page

func (*PaginationBuilder) PageSize

func (b *PaginationBuilder) PageSize(s int) *PaginationBuilder

func (*PaginationBuilder) PageSizeOptions

func (b *PaginationBuilder) PageSizeOptions(opts ...int) *PaginationBuilder

func (*PaginationBuilder) ShowFirstLast

func (b *PaginationBuilder) ShowFirstLast(s bool) *PaginationBuilder

func (*PaginationBuilder) ShowPageSize

func (b *PaginationBuilder) ShowPageSize(s bool) *PaginationBuilder

func (*PaginationBuilder) SiblingCount

func (b *PaginationBuilder) SiblingCount(n int) *PaginationBuilder

func (*PaginationBuilder) Total

type PaginationConfig

type PaginationConfig struct {
	Mode            PageMode `json:"mode,omitempty"`
	PageSize        int      `json:"pageSize,omitempty"`
	PageSizeOptions []int    `json:"pageSizeOptions,omitempty"`
	InitialPage     int      `json:"initialPage,omitempty"`
}

PaginationConfig configures DataGrid pagination.

type PaginationConfigBuilder

type PaginationConfigBuilder struct {
	// contains filtered or unexported fields
}

PaginationConfigBuilder is a fluent builder for PaginationConfig.

func ClientPagination

func ClientPagination() *PaginationConfigBuilder

ClientPagination returns a config preset for client-driven pagination.

func ServerPagination

func ServerPagination() *PaginationConfigBuilder

ServerPagination returns a config preset for server-driven pagination.

func (*PaginationConfigBuilder) Build

func (*PaginationConfigBuilder) InitialPage

func (*PaginationConfigBuilder) PageSize

func (*PaginationConfigBuilder) PageSizeOptions

func (b *PaginationConfigBuilder) PageSizeOptions(opts ...int) *PaginationConfigBuilder

type PaginationProps

type PaginationProps struct {
	Page             int     `json:"page"`
	PageSize         int     `json:"pageSize"`
	Total            int     `json:"total,omitempty"`
	PageSizeOptions  []int   `json:"pageSizeOptions,omitempty"`
	SiblingCount     int     `json:"siblingCount,omitempty"`
	ShowFirstLast    bool    `json:"showFirstLast,omitempty"`
	ShowPageSize     bool    `json:"showPageSize,omitempty"`
	OnPageChange     *Action `json:"onPageChange,omitempty"`
	OnPageSizeChange *Action `json:"onPageSizeChange,omitempty"`
	ClassName        string  `json:"className,omitempty"`
}

type PaletteGroup

type PaletteGroup struct {
	Label string        `json:"label,omitempty"`
	Items []PaletteItem `json:"items"`
}

PaletteGroup groups palette items under a heading.

type PaletteItem

type PaletteItem struct {
	ID       string   `json:"id"`
	Label    string   `json:"label"`
	Icon     string   `json:"icon,omitempty"`
	Shortcut []string `json:"shortcut,omitempty"`
	Disabled bool     `json:"disabled,omitempty"`
	Action   *Action  `json:"action,omitempty"`
}

PaletteItem is a single entry in a command palette group.

type PasskeyPromptBuilder

type PasskeyPromptBuilder struct {
	*Common[PasskeyPromptBuilder]
	Props PasskeyPromptProps
}

func PasskeyPrompt

func PasskeyPrompt() *PasskeyPromptBuilder

func (*PasskeyPromptBuilder) Build

func (*PasskeyPromptBuilder) ClassName

func (*PasskeyPromptBuilder) Dismissible

func (b *PasskeyPromptBuilder) Dismissible(d bool) *PasskeyPromptBuilder

func (*PasskeyPromptBuilder) OnComplete

func (*PasskeyPromptBuilder) OnSkip

func (*PasskeyPromptBuilder) RegisterOp

func (*PasskeyPromptBuilder) SkipLabel

type PasskeyPromptProps

type PasskeyPromptProps struct {
	RegisterOp  string  `json:"registerOp"`
	OnComplete  *Action `json:"onComplete,omitempty"`
	OnSkip      *Action `json:"onSkip,omitempty"`
	SkipLabel   string  `json:"skipLabel,omitempty"`
	Dismissible bool    `json:"dismissible,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

type PinningConfig

type PinningConfig struct {
	Left  []string `json:"left,omitempty"`
	Right []string `json:"right,omitempty"`
}

PinningConfig configures initial column pinning.

type ProgressBuilder

type ProgressBuilder struct {
	*Common[ProgressBuilder]
	Props ProgressProps
}

func Progress

func Progress() *ProgressBuilder

func (*ProgressBuilder) Build

func (b *ProgressBuilder) Build() contract.GraphNode

func (*ProgressBuilder) ClassName

func (b *ProgressBuilder) ClassName(c string) *ProgressBuilder

func (*ProgressBuilder) Indeterminate

func (b *ProgressBuilder) Indeterminate(i bool) *ProgressBuilder

func (*ProgressBuilder) Label

func (b *ProgressBuilder) Label(l string) *ProgressBuilder

func (*ProgressBuilder) Max

func (*ProgressBuilder) ShowValue

func (b *ProgressBuilder) ShowValue(s bool) *ProgressBuilder

func (*ProgressBuilder) Value

func (*ProgressBuilder) Variant

type ProgressProps

type ProgressProps struct {
	Value         *float64     `json:"value,omitempty"`
	Max           float64      `json:"max,omitempty"`
	Indeterminate bool         `json:"indeterminate,omitempty"`
	Label         string       `json:"label,omitempty"`
	ShowValue     bool         `json:"showValue,omitempty"`
	Variant       ColorVariant `json:"variant,omitempty"`
	ClassName     string       `json:"className,omitempty"`
}

ProgressProps configures a determinate or indeterminate progress bar.

type RadioBuilder

type RadioBuilder struct {
	*Common[RadioBuilder]
	Props RadioProps
}

func Radio

func Radio(name string) *RadioBuilder

func (*RadioBuilder) Build

func (b *RadioBuilder) Build() contract.GraphNode

func (*RadioBuilder) ClassName

func (b *RadioBuilder) ClassName(c string) *RadioBuilder

func (*RadioBuilder) Default

func (b *RadioBuilder) Default(v string) *RadioBuilder

func (*RadioBuilder) Disabled

func (b *RadioBuilder) Disabled(d bool) *RadioBuilder

func (*RadioBuilder) Error

func (b *RadioBuilder) Error(e string) *RadioBuilder

func (*RadioBuilder) OnChange

func (b *RadioBuilder) OnChange(a *Action) *RadioBuilder

func (*RadioBuilder) Option

func (b *RadioBuilder) Option(label, value string) *RadioBuilder

func (*RadioBuilder) Options

func (b *RadioBuilder) Options(opts ...Option) *RadioBuilder

func (*RadioBuilder) Orientation

func (b *RadioBuilder) Orientation(o Orientation) *RadioBuilder

func (*RadioBuilder) Required

func (b *RadioBuilder) Required(r bool) *RadioBuilder

func (*RadioBuilder) Value

func (b *RadioBuilder) Value(v string) *RadioBuilder

type RadioProps

type RadioProps struct {
	Name        string      `json:"name"`
	Options     []Option    `json:"options"`
	Value       string      `json:"value,omitempty"`
	Default     string      `json:"default,omitempty"`
	Orientation Orientation `json:"orientation,omitempty"`
	Disabled    bool        `json:"disabled,omitempty"`
	Required    bool        `json:"required,omitempty"`
	OnChange    *Action     `json:"onChange,omitempty"`
	Error       string      `json:"error,omitempty"`
	ClassName   string      `json:"className,omitempty"`
}

RadioProps configures a radio group.

type Radius

type Radius string

Radius maps to Tailwind's rounded-* utilities.

const (
	RadiusNone Radius = "none"
	RadiusSm   Radius = "sm"
	RadiusMd   Radius = "md"
	RadiusLg   Radius = "lg"
	RadiusXl   Radius = "xl"
	RadiusFull Radius = "full"
)

type RatingBuilder

type RatingBuilder struct {
	*Common[RatingBuilder]
	Props RatingProps
}

func Rating

func Rating() *RatingBuilder

func (*RatingBuilder) Build

func (b *RatingBuilder) Build() contract.GraphNode

func (*RatingBuilder) ClassName

func (b *RatingBuilder) ClassName(c string) *RatingBuilder

func (*RatingBuilder) Default

func (b *RatingBuilder) Default(v float64) *RatingBuilder

func (*RatingBuilder) Max

func (b *RatingBuilder) Max(m int) *RatingBuilder

func (*RatingBuilder) Name

func (b *RatingBuilder) Name(n string) *RatingBuilder

func (*RatingBuilder) OnChange

func (b *RatingBuilder) OnChange(a *Action) *RatingBuilder

func (*RatingBuilder) Precision

func (b *RatingBuilder) Precision(p float64) *RatingBuilder

func (*RatingBuilder) ReadOnly

func (b *RatingBuilder) ReadOnly(r bool) *RatingBuilder

func (*RatingBuilder) Size

func (b *RatingBuilder) Size(s Size) *RatingBuilder

func (*RatingBuilder) Value

func (b *RatingBuilder) Value(v float64) *RatingBuilder

type RatingProps

type RatingProps struct {
	Name      string  `json:"name,omitempty"`
	Value     float64 `json:"value,omitempty"`
	Default   float64 `json:"default,omitempty"`
	Max       int     `json:"max,omitempty"`
	ReadOnly  bool    `json:"readOnly,omitempty"`
	Precision float64 `json:"precision,omitempty"` // 1 | 0.5 | 0.25
	Size      Size    `json:"size,omitempty"`
	OnChange  *Action `json:"onChange,omitempty"`
	ClassName string  `json:"className,omitempty"`
}

type ResetConfig

type ResetConfig struct {
	Label   string       `json:"label,omitempty"`
	Variant ColorVariant `json:"variant,omitempty"`
}

ResetConfig configures the reset button.

type ResponsiveCols

type ResponsiveCols struct {
	Base int `json:"base,omitempty"`
	Sm   int `json:"sm,omitempty"`
	Md   int `json:"md,omitempty"`
	Lg   int `json:"lg,omitempty"`
	Xl   int `json:"xl,omitempty"`
	X2xl int `json:"2xl,omitempty"`
}

ResponsiveCols is the grid column count. Allows either a fixed integer or a per-breakpoint object.

func Cols

func Cols(n int) ResponsiveCols

Cols returns a ResponsiveCols with the same column count across all breakpoints. Use the struct literal directly when you need responsive column counts.

type RowBuilder

type RowBuilder struct {
	*Common[RowBuilder]
	Props RowProps
}

RowBuilder is the typed builder for a layout.row node.

func Row

func Row(children ...contract.GraphNode) *RowBuilder

Row constructs a layout.row builder. Children passed here flow into the "children" slot.

func (*RowBuilder) Align

func (b *RowBuilder) Align(a Align) *RowBuilder

Align sets the cross-axis alignment.

func (*RowBuilder) Build

func (b *RowBuilder) Build() contract.GraphNode

Build assembles the GraphNode.

func (*RowBuilder) ClassName

func (b *RowBuilder) ClassName(c string) *RowBuilder

ClassName appends extra Tailwind classes (escape hatch).

func (*RowBuilder) Gap

func (b *RowBuilder) Gap(g Spacing) *RowBuilder

Gap sets the gap between children.

func (*RowBuilder) Justify

func (b *RowBuilder) Justify(j Justify) *RowBuilder

Justify sets the main-axis justification.

func (*RowBuilder) Padding

func (b *RowBuilder) Padding(p Spacing) *RowBuilder

Padding sets the padding around the row.

func (*RowBuilder) Wrap

func (b *RowBuilder) Wrap(w bool) *RowBuilder

Wrap enables flex wrapping onto new lines.

type RowProps

type RowProps struct {
	Gap       Spacing `json:"gap,omitempty"`
	Align     Align   `json:"align,omitempty"`
	Justify   Justify `json:"justify,omitempty"`
	Wrap      bool    `json:"wrap,omitempty"`
	Padding   Spacing `json:"padding,omitempty"`
	ClassName string  `json:"className,omitempty"`
}

RowProps configures a horizontal flex container. Children render side by side; wrap onto new lines when Wrap is true.

type SearchBarBuilder

type SearchBarBuilder struct {
	*Common[SearchBarBuilder]
	Props SearchBarProps
}
func SearchBar() *SearchBarBuilder

func (*SearchBarBuilder) Build

func (b *SearchBarBuilder) Build() contract.GraphNode

func (*SearchBarBuilder) ClassName

func (b *SearchBarBuilder) ClassName(c string) *SearchBarBuilder

func (*SearchBarBuilder) Clearable

func (b *SearchBarBuilder) Clearable(c bool) *SearchBarBuilder

func (*SearchBarBuilder) DebounceMs

func (b *SearchBarBuilder) DebounceMs(ms int) *SearchBarBuilder

func (*SearchBarBuilder) Default

func (b *SearchBarBuilder) Default(v string) *SearchBarBuilder

func (*SearchBarBuilder) Name

func (*SearchBarBuilder) OnChange

func (b *SearchBarBuilder) OnChange(a *Action) *SearchBarBuilder

func (*SearchBarBuilder) OnSubmit

func (b *SearchBarBuilder) OnSubmit(a *Action) *SearchBarBuilder

func (*SearchBarBuilder) Placeholder

func (b *SearchBarBuilder) Placeholder(p string) *SearchBarBuilder

func (*SearchBarBuilder) Value

type SearchBarProps

type SearchBarProps struct {
	Placeholder string  `json:"placeholder,omitempty"`
	Value       string  `json:"value,omitempty"`
	Default     string  `json:"default,omitempty"`
	Name        string  `json:"name,omitempty"`
	OnChange    *Action `json:"onChange,omitempty"`
	OnSubmit    *Action `json:"onSubmit,omitempty"`
	DebounceMs  int     `json:"debounceMs,omitempty"`
	Clearable   bool    `json:"clearable,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

type SectionBuilder

type SectionBuilder struct {
	*Common[SectionBuilder]
	Props SectionProps
}

func Section

func Section(children ...contract.GraphNode) *SectionBuilder

Section constructs a layout.section builder. Children flow into the "content" slot (sections always render a header before their content).

func (*SectionBuilder) Actions

func (b *SectionBuilder) Actions(nodes ...contract.GraphNode) *SectionBuilder

Actions attaches CTA nodes to the section header's actions slot.

func (*SectionBuilder) Build

func (b *SectionBuilder) Build() contract.GraphNode

func (*SectionBuilder) ClassName

func (b *SectionBuilder) ClassName(c string) *SectionBuilder

func (*SectionBuilder) Compact

func (b *SectionBuilder) Compact(c bool) *SectionBuilder

func (*SectionBuilder) Description

func (b *SectionBuilder) Description(d string) *SectionBuilder

type SectionProps

type SectionProps struct {
	Description string `json:"description,omitempty"`
	Compact     bool   `json:"compact,omitempty"`
	ClassName   string `json:"className,omitempty"`
}

SectionProps configures a semantic section with optional title block. The visible heading text lives on node.title (use the inherited Title() setter). The `actions` slot renders top-right of the section header.

type SelectBuilder

type SelectBuilder struct {
	*Common[SelectBuilder]
	Props SelectProps
}

func Select

func Select(name string) *SelectBuilder

func (*SelectBuilder) Build

func (b *SelectBuilder) Build() contract.GraphNode

func (*SelectBuilder) ClassName

func (b *SelectBuilder) ClassName(c string) *SelectBuilder

func (*SelectBuilder) Clearable

func (b *SelectBuilder) Clearable(c bool) *SelectBuilder

func (*SelectBuilder) Default

func (b *SelectBuilder) Default(v string) *SelectBuilder

func (*SelectBuilder) Disabled

func (b *SelectBuilder) Disabled(d bool) *SelectBuilder

func (*SelectBuilder) Error

func (b *SelectBuilder) Error(e string) *SelectBuilder

func (*SelectBuilder) OnChange

func (b *SelectBuilder) OnChange(a *Action) *SelectBuilder

func (*SelectBuilder) Option

func (b *SelectBuilder) Option(label, value string) *SelectBuilder

func (*SelectBuilder) Options

func (b *SelectBuilder) Options(opts ...Option) *SelectBuilder

func (*SelectBuilder) Placeholder

func (b *SelectBuilder) Placeholder(p string) *SelectBuilder

func (*SelectBuilder) Required

func (b *SelectBuilder) Required(r bool) *SelectBuilder

func (*SelectBuilder) Size

func (b *SelectBuilder) Size(s Size) *SelectBuilder

func (*SelectBuilder) Value

func (b *SelectBuilder) Value(v string) *SelectBuilder

type SelectProps

type SelectProps struct {
	Name        string   `json:"name"`
	Placeholder string   `json:"placeholder,omitempty"`
	Options     []Option `json:"options"`
	Value       string   `json:"value,omitempty"`
	Default     string   `json:"default,omitempty"`
	Disabled    bool     `json:"disabled,omitempty"`
	Required    bool     `json:"required,omitempty"`
	Size        Size     `json:"size,omitempty"`
	Clearable   bool     `json:"clearable,omitempty"`
	OnChange    *Action  `json:"onChange,omitempty"`
	Error       string   `json:"error,omitempty"`
	ClassName   string   `json:"className,omitempty"`
}

SelectProps configures a single-select dropdown.

type SelectionConfig

type SelectionConfig struct {
	Mode     SelectionMode `json:"mode"`
	OnChange *Action       `json:"onChange,omitempty"`
}

SelectionConfig configures row selection.

func SelectionMultiCfg

func SelectionMultiCfg() *SelectionConfig

SelectionMulti is a shorthand for { mode: multi }.

type SelectionMode

type SelectionMode string

SelectionMode names DataGrid selection behavior.

const (
	SelectionNone   SelectionMode = "none"
	SelectionSingle SelectionMode = "single"
	SelectionMulti  SelectionMode = "multi"
)

type SeparatorBuilder

type SeparatorBuilder struct {
	*Common[SeparatorBuilder]
	Props SeparatorProps
}

func Separator

func Separator() *SeparatorBuilder

func (*SeparatorBuilder) Build

func (b *SeparatorBuilder) Build() contract.GraphNode

func (*SeparatorBuilder) ClassName

func (b *SeparatorBuilder) ClassName(c string) *SeparatorBuilder

func (*SeparatorBuilder) Decorative

func (b *SeparatorBuilder) Decorative(d bool) *SeparatorBuilder

func (*SeparatorBuilder) Orientation

func (b *SeparatorBuilder) Orientation(o Orientation) *SeparatorBuilder

type SeparatorProps

type SeparatorProps struct {
	Orientation Orientation `json:"orientation,omitempty"`
	Decorative  bool        `json:"decorative,omitempty"`
	ClassName   string      `json:"className,omitempty"`
}

SeparatorProps configures a separator rule.

type SessionListBuilder

type SessionListBuilder struct {
	*Common[SessionListBuilder]
	Props SessionListProps
}

func SessionList

func SessionList() *SessionListBuilder

func (*SessionListBuilder) Build

func (*SessionListBuilder) ClassName

func (b *SessionListBuilder) ClassName(c string) *SessionListBuilder

func (*SessionListBuilder) CurrentSessionField

func (b *SessionListBuilder) CurrentSessionField(f string) *SessionListBuilder

func (*SessionListBuilder) RevokeAllOp

func (b *SessionListBuilder) RevokeAllOp(op string) *SessionListBuilder

func (*SessionListBuilder) RevokeOp

func (b *SessionListBuilder) RevokeOp(op string) *SessionListBuilder

func (*SessionListBuilder) ShowCurrent

func (b *SessionListBuilder) ShowCurrent(s bool) *SessionListBuilder

type SessionListProps

type SessionListProps struct {
	RevokeOp            string `json:"revokeOp,omitempty"`
	RevokeAllOp         string `json:"revokeAllOp,omitempty"`
	ShowCurrent         bool   `json:"showCurrent,omitempty"`
	CurrentSessionField string `json:"currentSessionField,omitempty"`
	ClassName           string `json:"className,omitempty"`
}

type Shadow

type Shadow string

Shadow maps to Tailwind's shadow-* utilities.

const (
	ShadowNone Shadow = "none"
	ShadowSm   Shadow = "sm"
	ShadowMd   Shadow = "md"
	ShadowLg   Shadow = "lg"
	ShadowXl   Shadow = "xl"
)

type SignInFormBuilder

type SignInFormBuilder struct {
	*Common[SignInFormBuilder]
	Props SignInFormProps
}

func SignInForm

func SignInForm() *SignInFormBuilder

func (*SignInFormBuilder) Brand

func (b *SignInFormBuilder) Brand(name string) *SignInFormBuilder

func (*SignInFormBuilder) BrandLogoURL

func (b *SignInFormBuilder) BrandLogoURL(u string) *SignInFormBuilder

func (*SignInFormBuilder) Build

func (*SignInFormBuilder) ClassName

func (b *SignInFormBuilder) ClassName(c string) *SignInFormBuilder

func (*SignInFormBuilder) ConfigContributor

func (b *SignInFormBuilder) ConfigContributor(c string) *SignInFormBuilder

func (*SignInFormBuilder) ForgotPasswordURL

func (b *SignInFormBuilder) ForgotPasswordURL(u string) *SignInFormBuilder

func (*SignInFormBuilder) OnSuccess

func (b *SignInFormBuilder) OnSuccess(a *Action) *SignInFormBuilder

func (*SignInFormBuilder) OpName

func (b *SignInFormBuilder) ShowMagicLink(s bool) *SignInFormBuilder

func (*SignInFormBuilder) ShowRememberMe

func (b *SignInFormBuilder) ShowRememberMe(s bool) *SignInFormBuilder
func (b *SignInFormBuilder) ShowSignUpLink(s bool) *SignInFormBuilder

func (*SignInFormBuilder) SignUpURL

func (b *SignInFormBuilder) SignUpURL(u string) *SignInFormBuilder

type SignInFormProps

type SignInFormProps struct {
	Op                string  `json:"op,omitempty"` // submit command (default: auth.login)
	ConfigContributor string  `json:"configContributor,omitempty"`
	ShowRememberMe    bool    `json:"showRememberMe,omitempty"`
	ShowMagicLink     bool    `json:"showMagicLink,omitempty"`
	ShowSignUpLink    bool    `json:"showSignUpLink,omitempty"`
	SignUpURL         string  `json:"signUpURL,omitempty"`
	ForgotPasswordURL string  `json:"forgotPasswordURL,omitempty"`
	Brand             string  `json:"brand,omitempty"`
	BrandLogoURL      string  `json:"brandLogoURL,omitempty"`
	OnSuccess         *Action `json:"onSuccess,omitempty"`
	ClassName         string  `json:"className,omitempty"`
}

type SignUpFormBuilder

type SignUpFormBuilder struct {
	*Common[SignUpFormBuilder]
	Props SignUpFormProps
}

func SignUpForm

func SignUpForm() *SignUpFormBuilder

func (*SignUpFormBuilder) Brand

func (b *SignUpFormBuilder) Brand(name string) *SignUpFormBuilder

func (*SignUpFormBuilder) Build

func (*SignUpFormBuilder) ClassName

func (b *SignUpFormBuilder) ClassName(c string) *SignUpFormBuilder

func (*SignUpFormBuilder) NameField

func (b *SignUpFormBuilder) NameField(n bool) *SignUpFormBuilder

func (*SignUpFormBuilder) OAuthProviders

func (b *SignUpFormBuilder) OAuthProviders(p ...string) *SignUpFormBuilder

func (*SignUpFormBuilder) OnSuccess

func (b *SignUpFormBuilder) OnSuccess(a *Action) *SignUpFormBuilder

func (*SignUpFormBuilder) OpName

func (*SignUpFormBuilder) PrivacyURL

func (b *SignUpFormBuilder) PrivacyURL(u string) *SignUpFormBuilder

func (*SignUpFormBuilder) ShowOAuth

func (b *SignUpFormBuilder) ShowOAuth(s bool) *SignUpFormBuilder

func (*SignUpFormBuilder) SignInURL

func (b *SignUpFormBuilder) SignInURL(u string) *SignUpFormBuilder

func (*SignUpFormBuilder) TermsURL

func (b *SignUpFormBuilder) TermsURL(u string) *SignUpFormBuilder

type SignUpFormProps

type SignUpFormProps struct {
	Op             string   `json:"op"`
	ShowOAuth      bool     `json:"showOAuth,omitempty"`
	OAuthProviders []string `json:"oauthProviders,omitempty"`
	NameField      bool     `json:"nameField,omitempty"`
	TermsURL       string   `json:"termsURL,omitempty"`
	PrivacyURL     string   `json:"privacyURL,omitempty"`
	SignInURL      string   `json:"signInURL,omitempty"`
	Brand          string   `json:"brand,omitempty"`
	OnSuccess      *Action  `json:"onSuccess,omitempty"`
	ClassName      string   `json:"className,omitempty"`
}

type Size

type Size string

Size is the shared sizing scale for buttons, badges, inputs, avatars.

const (
	SizeSm      Size = "sm"
	SizeDefault Size = "default"
	SizeLg      Size = "lg"
	SizeIcon    Size = "icon"
	SizeXs      Size = "xs"
	SizeXl      Size = "xl"
)

type SkeletonBuilder

type SkeletonBuilder struct {
	*Common[SkeletonBuilder]
	Props SkeletonProps
}

func Skeleton

func Skeleton() *SkeletonBuilder

func (*SkeletonBuilder) Build

func (b *SkeletonBuilder) Build() contract.GraphNode

func (*SkeletonBuilder) Circle

func (b *SkeletonBuilder) Circle(c bool) *SkeletonBuilder

func (*SkeletonBuilder) ClassName

func (b *SkeletonBuilder) ClassName(c string) *SkeletonBuilder

func (*SkeletonBuilder) Height

func (b *SkeletonBuilder) Height(h string) *SkeletonBuilder

func (*SkeletonBuilder) Radius

func (b *SkeletonBuilder) Radius(r Radius) *SkeletonBuilder

func (*SkeletonBuilder) Width

func (b *SkeletonBuilder) Width(w string) *SkeletonBuilder

type SkeletonProps

type SkeletonProps struct {
	Width     string `json:"width,omitempty"`
	Height    string `json:"height,omitempty"`
	Radius    Radius `json:"radius,omitempty"`
	Circle    bool   `json:"circle,omitempty"`
	ClassName string `json:"className,omitempty"`
}

SkeletonProps configures a loading placeholder.

type SliderBuilder

type SliderBuilder struct {
	*Common[SliderBuilder]
	Props SliderProps
}

func Slider

func Slider(name string) *SliderBuilder

func (*SliderBuilder) Build

func (b *SliderBuilder) Build() contract.GraphNode

func (*SliderBuilder) ClassName

func (b *SliderBuilder) ClassName(c string) *SliderBuilder

func (*SliderBuilder) Default

func (b *SliderBuilder) Default(v float64) *SliderBuilder

func (*SliderBuilder) Disabled

func (b *SliderBuilder) Disabled(d bool) *SliderBuilder

func (*SliderBuilder) Marks

func (b *SliderBuilder) Marks(m ...SliderMark) *SliderBuilder

func (*SliderBuilder) Max

func (b *SliderBuilder) Max(v float64) *SliderBuilder

func (*SliderBuilder) Min

func (b *SliderBuilder) Min(v float64) *SliderBuilder

func (*SliderBuilder) OnChange

func (b *SliderBuilder) OnChange(a *Action) *SliderBuilder

func (*SliderBuilder) Range

func (b *SliderBuilder) Range(r bool) *SliderBuilder

func (*SliderBuilder) RangeValue

func (b *SliderBuilder) RangeValue(v ...float64) *SliderBuilder

func (*SliderBuilder) ShowValue

func (b *SliderBuilder) ShowValue(s bool) *SliderBuilder

func (*SliderBuilder) Step

func (b *SliderBuilder) Step(v float64) *SliderBuilder

func (*SliderBuilder) Value

func (b *SliderBuilder) Value(v float64) *SliderBuilder

type SliderMark

type SliderMark struct {
	Value float64 `json:"value"`
	Label string  `json:"label,omitempty"`
}

SliderMark is an optional tick mark on the slider track.

type SliderProps

type SliderProps struct {
	Name       string       `json:"name"`
	Min        float64      `json:"min,omitempty"`
	Max        float64      `json:"max,omitempty"`
	Step       float64      `json:"step,omitempty"`
	Value      *float64     `json:"value,omitempty"`
	Default    *float64     `json:"default,omitempty"`
	Range      bool         `json:"range,omitempty"`
	RangeValue []float64    `json:"rangeValue,omitempty"`
	Marks      []SliderMark `json:"marks,omitempty"`
	ShowValue  bool         `json:"showValue,omitempty"`
	Disabled   bool         `json:"disabled,omitempty"`
	OnChange   *Action      `json:"onChange,omitempty"`
	ClassName  string       `json:"className,omitempty"`
}

SliderProps configures a numeric slider.

type SortDir

type SortDir string

SortDir names sort direction.

const (
	SortAsc  SortDir = "asc"
	SortDesc SortDir = "desc"
)

type SortMode

type SortMode string

SortMode names sorting strategy.

const (
	SortClient SortMode = "client"
	SortServer SortMode = "server"
)

type SortRule

type SortRule struct {
	Column    string  `json:"column"`
	Direction SortDir `json:"direction"`
}

SortRule is one column's initial sort state.

type SortingConfig

type SortingConfig struct {
	Mode    SortMode   `json:"mode,omitempty"`
	Initial []SortRule `json:"initial,omitempty"`
	Multi   bool       `json:"multi,omitempty"`
}

SortingConfig configures sort behavior.

type SpacerBuilder

type SpacerBuilder struct {
	*Common[SpacerBuilder]
	Props SpacerProps
}

func Spacer

func Spacer() *SpacerBuilder

func (*SpacerBuilder) Axis

func (b *SpacerBuilder) Axis(a string) *SpacerBuilder

func (*SpacerBuilder) Build

func (b *SpacerBuilder) Build() contract.GraphNode

func (*SpacerBuilder) ClassName

func (b *SpacerBuilder) ClassName(c string) *SpacerBuilder

func (*SpacerBuilder) Size

func (b *SpacerBuilder) Size(s Spacing) *SpacerBuilder

type SpacerProps

type SpacerProps struct {
	Size      Spacing `json:"size,omitempty"`
	Axis      string  `json:"axis,omitempty"` // "horizontal" | "vertical" | "both"
	ClassName string  `json:"className,omitempty"`
}

SpacerProps configures a pure-spacing node.

type Spacing

type Spacing string

Spacing maps to Tailwind's spacing scale (0, 0.5, 1, 1.5, ..., 24). Use the string form to avoid coupling Go callers to Tailwind's number alphabet — the React renderer interprets it as a Tailwind gap utility.

const (
	SpacingNone Spacing = "0"
	SpacingXs   Spacing = "1"
	SpacingSm   Spacing = "2"
	SpacingMd   Spacing = "4"
	SpacingLg   Spacing = "6"
	SpacingXl   Spacing = "8"
	Spacing2xl  Spacing = "10"
)

type SpinnerBuilder

type SpinnerBuilder struct {
	*Common[SpinnerBuilder]
	Props SpinnerProps
}

func Spinner

func Spinner() *SpinnerBuilder

func (*SpinnerBuilder) Build

func (b *SpinnerBuilder) Build() contract.GraphNode

func (*SpinnerBuilder) ClassName

func (b *SpinnerBuilder) ClassName(c string) *SpinnerBuilder

func (*SpinnerBuilder) Label

func (b *SpinnerBuilder) Label(l string) *SpinnerBuilder

func (*SpinnerBuilder) Size

func (b *SpinnerBuilder) Size(s Size) *SpinnerBuilder

func (*SpinnerBuilder) Variant

func (b *SpinnerBuilder) Variant(v TextVariant) *SpinnerBuilder

type SpinnerProps

type SpinnerProps struct {
	Size      Size        `json:"size,omitempty"`
	Label     string      `json:"label,omitempty"`
	Variant   TextVariant `json:"variant,omitempty"`
	ClassName string      `json:"className,omitempty"`
}

SpinnerProps configures a loading spinner.

type SplitBuilder

type SplitBuilder struct {
	*Common[SplitBuilder]
	Props SplitProps
}

func Split

func Split() *SplitBuilder

func (*SplitBuilder) Build

func (b *SplitBuilder) Build() contract.GraphNode

func (*SplitBuilder) ClassName

func (b *SplitBuilder) ClassName(c string) *SplitBuilder

func (*SplitBuilder) Collapsible

func (b *SplitBuilder) Collapsible(c bool) *SplitBuilder

func (*SplitBuilder) DefaultSize

func (b *SplitBuilder) DefaultSize(n int) *SplitBuilder

func (*SplitBuilder) Direction

func (b *SplitBuilder) Direction(d Direction) *SplitBuilder

func (*SplitBuilder) End

func (b *SplitBuilder) End(nodes ...contract.GraphNode) *SplitBuilder

End attaches the trailing pane content.

func (*SplitBuilder) MaxSize

func (b *SplitBuilder) MaxSize(n int) *SplitBuilder

func (*SplitBuilder) MinSize

func (b *SplitBuilder) MinSize(n int) *SplitBuilder

func (*SplitBuilder) Start

func (b *SplitBuilder) Start(nodes ...contract.GraphNode) *SplitBuilder

Start attaches the leading pane content.

type SplitProps

type SplitProps struct {
	Direction   Direction `json:"direction,omitempty"`
	DefaultSize int       `json:"defaultSize,omitempty"` // percent for the start pane
	MinSize     int       `json:"minSize,omitempty"`
	MaxSize     int       `json:"maxSize,omitempty"`
	Collapsible bool      `json:"collapsible,omitempty"`
	ClassName   string    `json:"className,omitempty"`
}

SplitProps configures a resizable two-pane layout. Children go into the "start" and "end" slots.

type StackBuilder

type StackBuilder struct {
	*Common[StackBuilder]
	Props StackProps
}

func Stack

func Stack(children ...contract.GraphNode) *StackBuilder

func (*StackBuilder) Build

func (b *StackBuilder) Build() contract.GraphNode

func (*StackBuilder) ClassName

func (b *StackBuilder) ClassName(c string) *StackBuilder

func (*StackBuilder) Direction

func (b *StackBuilder) Direction(d Direction) *StackBuilder

func (*StackBuilder) Divider

func (b *StackBuilder) Divider(d bool) *StackBuilder

func (*StackBuilder) Gap

func (b *StackBuilder) Gap(g Spacing) *StackBuilder

func (*StackBuilder) Padding

func (b *StackBuilder) Padding(p Spacing) *StackBuilder

type StackProps

type StackProps struct {
	Direction Direction `json:"direction,omitempty"`
	Gap       Spacing   `json:"gap,omitempty"`
	Divider   bool      `json:"divider,omitempty"`
	Padding   Spacing   `json:"padding,omitempty"`
	ClassName string    `json:"className,omitempty"`
}

StackProps configures a uniformly-spaced stack with an optional divider rendered between children.

type StatCardBuilder

type StatCardBuilder struct {
	*Common[StatCardBuilder]
	Props StatCardProps
}

func StatCard

func StatCard(label string) *StatCardBuilder

func (*StatCardBuilder) Build

func (b *StatCardBuilder) Build() contract.GraphNode

func (*StatCardBuilder) ClassName

func (b *StatCardBuilder) ClassName(c string) *StatCardBuilder

func (*StatCardBuilder) Delta

func (*StatCardBuilder) DeltaFormat

func (b *StatCardBuilder) DeltaFormat(f string) *StatCardBuilder

func (*StatCardBuilder) Description

func (b *StatCardBuilder) Description(d string) *StatCardBuilder

func (*StatCardBuilder) Icon

func (*StatCardBuilder) Loading

func (b *StatCardBuilder) Loading(l bool) *StatCardBuilder

func (*StatCardBuilder) PreviousValue

func (b *StatCardBuilder) PreviousValue(v string) *StatCardBuilder

func (*StatCardBuilder) Trend

func (b *StatCardBuilder) Trend(t Trend) *StatCardBuilder

func (*StatCardBuilder) Value

func (b *StatCardBuilder) Value(v string) *StatCardBuilder

type StatCardProps

type StatCardProps struct {
	Label         string  `json:"label"`
	Value         string  `json:"value"`
	PreviousValue string  `json:"previousValue,omitempty"`
	Delta         float64 `json:"delta,omitempty"`
	DeltaFormat   string  `json:"deltaFormat,omitempty"` // "percent" | "absolute"
	Icon          string  `json:"icon,omitempty"`
	Trend         Trend   `json:"trend,omitempty"`
	Description   string  `json:"description,omitempty"`
	Loading       bool    `json:"loading,omitempty"`
	ClassName     string  `json:"className,omitempty"`
}

StatCardProps configures a metric tile.

type StepperBuilder

type StepperBuilder struct {
	*Common[StepperBuilder]
	Props StepperProps
}

func Stepper

func Stepper() *StepperBuilder

func (*StepperBuilder) Build

func (b *StepperBuilder) Build() contract.GraphNode

func (*StepperBuilder) ClassName

func (b *StepperBuilder) ClassName(c string) *StepperBuilder

func (*StepperBuilder) Initial

func (b *StepperBuilder) Initial(id string) *StepperBuilder

func (*StepperBuilder) OnComplete

func (b *StepperBuilder) OnComplete(a *Action) *StepperBuilder

func (*StepperBuilder) OnNext

func (b *StepperBuilder) OnNext(a *Action) *StepperBuilder

func (*StepperBuilder) OnPrev

func (b *StepperBuilder) OnPrev(a *Action) *StepperBuilder

func (*StepperBuilder) Orientation

func (b *StepperBuilder) Orientation(o Orientation) *StepperBuilder

func (*StepperBuilder) Panel

func (b *StepperBuilder) Panel(stepID string, nodes ...contract.GraphNode) *StepperBuilder

Panel attaches the content for a specific step. Each step's panel goes into the slot whose name matches the step ID.

func (*StepperBuilder) Step

func (b *StepperBuilder) Step(id, title string) *StepperBuilder

func (*StepperBuilder) Steps

func (b *StepperBuilder) Steps(steps ...StepperStep) *StepperBuilder

type StepperProps

type StepperProps struct {
	Steps       []StepperStep `json:"steps"`
	Initial     string        `json:"initial,omitempty"`
	Orientation Orientation   `json:"orientation,omitempty"`
	OnNext      *Action       `json:"onNext,omitempty"`
	OnPrev      *Action       `json:"onPrev,omitempty"`
	OnComplete  *Action       `json:"onComplete,omitempty"`
	ClassName   string        `json:"className,omitempty"`
}

type StepperStep

type StepperStep struct {
	ID          string `json:"id"`
	Title       string `json:"title"`
	Description string `json:"description,omitempty"`
	Icon        string `json:"icon,omitempty"`
	Optional    bool   `json:"optional,omitempty"`
}

type SubmitConfig

type SubmitConfig struct {
	Label     string       `json:"label,omitempty"`
	Icon      string       `json:"icon,omitempty"`
	Variant   ColorVariant `json:"variant,omitempty"`
	FullWidth bool         `json:"fullWidth,omitempty"`
}

SubmitConfig configures the submit button.

type SwitchBuilder

type SwitchBuilder struct {
	*Common[SwitchBuilder]
	Props SwitchProps
}

func Switch

func Switch(name string) *SwitchBuilder

func (*SwitchBuilder) Build

func (b *SwitchBuilder) Build() contract.GraphNode

func (*SwitchBuilder) Checked

func (b *SwitchBuilder) Checked(c bool) *SwitchBuilder

func (*SwitchBuilder) ClassName

func (b *SwitchBuilder) ClassName(c string) *SwitchBuilder

func (*SwitchBuilder) Default

func (b *SwitchBuilder) Default(c bool) *SwitchBuilder

func (*SwitchBuilder) Description

func (b *SwitchBuilder) Description(d string) *SwitchBuilder

func (*SwitchBuilder) Disabled

func (b *SwitchBuilder) Disabled(d bool) *SwitchBuilder

func (*SwitchBuilder) Label

func (b *SwitchBuilder) Label(l string) *SwitchBuilder

func (*SwitchBuilder) OnChange

func (b *SwitchBuilder) OnChange(a *Action) *SwitchBuilder

type SwitchProps

type SwitchProps struct {
	Name        string  `json:"name"`
	Label       string  `json:"label,omitempty"`
	Description string  `json:"description,omitempty"`
	Checked     *bool   `json:"checked,omitempty"`
	Default     *bool   `json:"default,omitempty"`
	Disabled    bool    `json:"disabled,omitempty"`
	OnChange    *Action `json:"onChange,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

SwitchProps configures a switch toggle.

type TabItem

type TabItem struct {
	Value       string `json:"value"`
	Label       string `json:"label"`
	Icon        string `json:"icon,omitempty"`
	Description string `json:"description,omitempty"`
	Disabled    bool   `json:"disabled,omitempty"`
	Badge       string `json:"badge,omitempty"`
}

TabItem describes one tab. Children are rendered in the slot whose name matches the Value field.

type TabsBuilder

type TabsBuilder struct {
	*Common[TabsBuilder]
	Props TabsProps
}

func Tabs

func Tabs() *TabsBuilder

Tabs constructs a layout.tabs builder.

func (*TabsBuilder) AddItem

func (b *TabsBuilder) AddItem(item TabItem) *TabsBuilder

AddItem adds a fully-specified tab definition.

func (*TabsBuilder) Build

func (b *TabsBuilder) Build() contract.GraphNode

func (*TabsBuilder) ClassName

func (b *TabsBuilder) ClassName(c string) *TabsBuilder

func (*TabsBuilder) Default

func (b *TabsBuilder) Default(v string) *TabsBuilder

func (*TabsBuilder) Item

func (b *TabsBuilder) Item(value, label string) *TabsBuilder

Item adds a tab. Pass content via Panel(value, nodes...).

func (*TabsBuilder) Orientation

func (b *TabsBuilder) Orientation(o Orientation) *TabsBuilder

func (*TabsBuilder) Panel

func (b *TabsBuilder) Panel(value string, nodes ...contract.GraphNode) *TabsBuilder

Panel attaches nodes to the slot for a specific tab value.

func (*TabsBuilder) Variant

func (b *TabsBuilder) Variant(v string) *TabsBuilder

type TabsProps

type TabsProps struct {
	DefaultValue string      `json:"defaultValue,omitempty"`
	Orientation  Orientation `json:"orientation,omitempty"`
	Items        []TabItem   `json:"items"`
	Variant      string      `json:"variant,omitempty"` // "default" | "underline" | "pills"
	ClassName    string      `json:"className,omitempty"`
}

TabsProps configures a shadcn Tabs container.

type TagInputBuilder

type TagInputBuilder struct {
	*Common[TagInputBuilder]
	Props TagInputProps
}

func TagInput

func TagInput(name string) *TagInputBuilder

func (*TagInputBuilder) Build

func (b *TagInputBuilder) Build() contract.GraphNode

func (*TagInputBuilder) ClassName

func (b *TagInputBuilder) ClassName(c string) *TagInputBuilder

func (*TagInputBuilder) Default

func (b *TagInputBuilder) Default(v []string) *TagInputBuilder

func (*TagInputBuilder) Disabled

func (b *TagInputBuilder) Disabled(d bool) *TagInputBuilder

func (*TagInputBuilder) Error

func (b *TagInputBuilder) Error(e string) *TagInputBuilder

func (*TagInputBuilder) MaxTags

func (b *TagInputBuilder) MaxTags(n int) *TagInputBuilder

func (*TagInputBuilder) OnChange

func (b *TagInputBuilder) OnChange(a *Action) *TagInputBuilder

func (*TagInputBuilder) Placeholder

func (b *TagInputBuilder) Placeholder(p string) *TagInputBuilder

func (*TagInputBuilder) Validate

func (b *TagInputBuilder) Validate(p string) *TagInputBuilder

func (*TagInputBuilder) Value

func (b *TagInputBuilder) Value(v []string) *TagInputBuilder

type TagInputProps

type TagInputProps struct {
	Name        string   `json:"name"`
	Value       []string `json:"value,omitempty"`
	Default     []string `json:"default,omitempty"`
	Placeholder string   `json:"placeholder,omitempty"`
	MaxTags     int      `json:"maxTags,omitempty"`
	Validate    string   `json:"validate,omitempty"` // regex pattern
	Disabled    bool     `json:"disabled,omitempty"`
	OnChange    *Action  `json:"onChange,omitempty"`
	Error       string   `json:"error,omitempty"`
	ClassName   string   `json:"className,omitempty"`
}

type TextBuilder

type TextBuilder struct {
	*Common[TextBuilder]
	Props TextProps
}

func Text

func Text(text string) *TextBuilder

func (*TextBuilder) Build

func (b *TextBuilder) Build() contract.GraphNode

func (*TextBuilder) ClassName

func (b *TextBuilder) ClassName(c string) *TextBuilder

func (*TextBuilder) Italic

func (b *TextBuilder) Italic(i bool) *TextBuilder

func (*TextBuilder) Mono

func (b *TextBuilder) Mono(m bool) *TextBuilder

func (*TextBuilder) Size

func (b *TextBuilder) Size(s TextSize) *TextBuilder

func (*TextBuilder) Truncate

func (b *TextBuilder) Truncate(t bool) *TextBuilder

func (*TextBuilder) Underline

func (b *TextBuilder) Underline(u bool) *TextBuilder

func (*TextBuilder) Variant

func (b *TextBuilder) Variant(v TextVariant) *TextBuilder

func (*TextBuilder) Weight

func (b *TextBuilder) Weight(w string) *TextBuilder

type TextProps

type TextProps struct {
	Text      string      `json:"text"`
	Size      TextSize    `json:"size,omitempty"`
	Variant   TextVariant `json:"variant,omitempty"`
	Weight    string      `json:"weight,omitempty"` // "normal" | "medium" | "semibold" | "bold"
	Italic    bool        `json:"italic,omitempty"`
	Underline bool        `json:"underline,omitempty"`
	Truncate  bool        `json:"truncate,omitempty"`
	Mono      bool        `json:"mono,omitempty"`
	ClassName string      `json:"className,omitempty"`
}

TextProps configures inline text.

type TextSize

type TextSize string

TextSize is the typographic size for atom.text.

const (
	TextXs   TextSize = "xs"
	TextSm   TextSize = "sm"
	TextBase TextSize = "base"
	TextLg   TextSize = "lg"
	TextXl   TextSize = "xl"
)

type TextVariant

type TextVariant string

TextVariant is the semantic color tone for atom.text. Maps to shadcn foreground tokens.

const (
	TextVariantDefault     TextVariant = "default"
	TextVariantMuted       TextVariant = "muted"
	TextVariantDestructive TextVariant = "destructive"
	TextVariantPrimary     TextVariant = "primary"
	TextVariantSecondary   TextVariant = "secondary"
)

type TextareaBuilder

type TextareaBuilder struct {
	*Common[TextareaBuilder]
	Props TextareaProps
}

func Textarea

func Textarea(name string) *TextareaBuilder

func (*TextareaBuilder) Autosize

func (b *TextareaBuilder) Autosize(a bool) *TextareaBuilder

func (*TextareaBuilder) Build

func (b *TextareaBuilder) Build() contract.GraphNode

func (*TextareaBuilder) ClassName

func (b *TextareaBuilder) ClassName(c string) *TextareaBuilder

func (*TextareaBuilder) Default

func (b *TextareaBuilder) Default(v string) *TextareaBuilder

func (*TextareaBuilder) Disabled

func (b *TextareaBuilder) Disabled(d bool) *TextareaBuilder

func (*TextareaBuilder) Error

func (b *TextareaBuilder) Error(e string) *TextareaBuilder

func (*TextareaBuilder) MaxLength

func (b *TextareaBuilder) MaxLength(n int) *TextareaBuilder

func (*TextareaBuilder) MaxRows

func (b *TextareaBuilder) MaxRows(n int) *TextareaBuilder

func (*TextareaBuilder) MinLength

func (b *TextareaBuilder) MinLength(n int) *TextareaBuilder

func (*TextareaBuilder) OnChange

func (b *TextareaBuilder) OnChange(a *Action) *TextareaBuilder

func (*TextareaBuilder) Placeholder

func (b *TextareaBuilder) Placeholder(p string) *TextareaBuilder

func (*TextareaBuilder) ReadOnly

func (b *TextareaBuilder) ReadOnly(r bool) *TextareaBuilder

func (*TextareaBuilder) Required

func (b *TextareaBuilder) Required(r bool) *TextareaBuilder

func (*TextareaBuilder) Rows

func (b *TextareaBuilder) Rows(n int) *TextareaBuilder

func (*TextareaBuilder) Value

func (b *TextareaBuilder) Value(v string) *TextareaBuilder

type TextareaProps

type TextareaProps struct {
	Name        string  `json:"name"`
	Placeholder string  `json:"placeholder,omitempty"`
	Value       string  `json:"value,omitempty"`
	Default     string  `json:"default,omitempty"`
	Rows        int     `json:"rows,omitempty"`
	MaxRows     int     `json:"maxRows,omitempty"`
	Autosize    bool    `json:"autosize,omitempty"`
	Disabled    bool    `json:"disabled,omitempty"`
	ReadOnly    bool    `json:"readOnly,omitempty"`
	Required    bool    `json:"required,omitempty"`
	MinLength   int     `json:"minLength,omitempty"`
	MaxLength   int     `json:"maxLength,omitempty"`
	OnChange    *Action `json:"onChange,omitempty"`
	Error       string  `json:"error,omitempty"`
	ClassName   string  `json:"className,omitempty"`
}

TextareaProps configures a multi-line input.

type TimelineBuilder

type TimelineBuilder struct {
	*Common[TimelineBuilder]
	Props TimelineProps
}

func Timeline

func Timeline() *TimelineBuilder

func (*TimelineBuilder) Build

func (b *TimelineBuilder) Build() contract.GraphNode

func (*TimelineBuilder) ClassName

func (b *TimelineBuilder) ClassName(c string) *TimelineBuilder

func (*TimelineBuilder) DescriptionField

func (b *TimelineBuilder) DescriptionField(f string) *TimelineBuilder

func (*TimelineBuilder) GroupBy

func (b *TimelineBuilder) GroupBy(f string) *TimelineBuilder

func (*TimelineBuilder) IconField

func (b *TimelineBuilder) IconField(f string) *TimelineBuilder

func (*TimelineBuilder) RenderItem

func (b *TimelineBuilder) RenderItem(intent string) *TimelineBuilder

func (*TimelineBuilder) TimestampField

func (b *TimelineBuilder) TimestampField(f string) *TimelineBuilder

func (*TimelineBuilder) TitleField

func (b *TimelineBuilder) TitleField(f string) *TimelineBuilder

type TimelineProps

type TimelineProps struct {
	TitleField       string `json:"titleField,omitempty"`
	DescriptionField string `json:"descriptionField,omitempty"`
	TimestampField   string `json:"timestampField,omitempty"`
	IconField        string `json:"iconField,omitempty"`
	GroupBy          string `json:"groupBy,omitempty"`    // field name to group entries under
	RenderItem       string `json:"renderItem,omitempty"` // intent name to render each item
	ClassName        string `json:"className,omitempty"`
}

type ToastVariant

type ToastVariant string

ToastVariant is the visual tone of a toast.

const (
	ToastDefault     ToastVariant = "default"
	ToastDestructive ToastVariant = "destructive"
)

type ToolbarConfig

type ToolbarConfig struct {
	Search        bool   `json:"search,omitempty"`
	ColumnPicker  bool   `json:"columnPicker,omitempty"`
	DensityToggle bool   `json:"densityToggle,omitempty"`
	ExportButton  bool   `json:"exportButton,omitempty"`
	Refresh       bool   `json:"refresh,omitempty"`
	Title         string `json:"title,omitempty"`
}

ToolbarConfig controls the DataGrid toolbar contents.

type TooltipBuilder

type TooltipBuilder struct {
	*Common[TooltipBuilder]
	Props TooltipProps
}

func Tooltip

func Tooltip(content string) *TooltipBuilder

func (*TooltipBuilder) Build

func (b *TooltipBuilder) Build() contract.GraphNode

func (*TooltipBuilder) ClassName

func (b *TooltipBuilder) ClassName(c string) *TooltipBuilder

func (*TooltipBuilder) Delay

func (b *TooltipBuilder) Delay(ms int) *TooltipBuilder

func (*TooltipBuilder) Side

func (*TooltipBuilder) Trigger

func (b *TooltipBuilder) Trigger(node contract.GraphNode) *TooltipBuilder

Trigger sets the node that triggers the tooltip on hover/focus.

type TooltipProps

type TooltipProps struct {
	Content   string      `json:"content"`
	Side      TooltipSide `json:"side,omitempty"`
	DelayMs   int         `json:"delayMs,omitempty"`
	ClassName string      `json:"className,omitempty"`
}

TooltipProps wraps a trigger node with a hover tooltip. The trigger element lives in the "trigger" slot; pass it via Trigger(node).

type TooltipSide

type TooltipSide string

TooltipSide names the popover side.

const (
	TooltipTop    TooltipSide = "top"
	TooltipBottom TooltipSide = "bottom"
	TooltipLeft   TooltipSide = "left"
	TooltipRight  TooltipSide = "right"
)

type TreeViewBuilder

type TreeViewBuilder struct {
	*Common[TreeViewBuilder]
	Props TreeViewProps
}

func TreeView

func TreeView() *TreeViewBuilder

func (*TreeViewBuilder) Build

func (b *TreeViewBuilder) Build() contract.GraphNode

func (*TreeViewBuilder) ChildrenField

func (b *TreeViewBuilder) ChildrenField(f string) *TreeViewBuilder

func (*TreeViewBuilder) ClassName

func (b *TreeViewBuilder) ClassName(c string) *TreeViewBuilder

func (*TreeViewBuilder) DefaultExpand

func (b *TreeViewBuilder) DefaultExpand(n int) *TreeViewBuilder

func (*TreeViewBuilder) IconField

func (b *TreeViewBuilder) IconField(f string) *TreeViewBuilder

func (*TreeViewBuilder) LabelField

func (b *TreeViewBuilder) LabelField(f string) *TreeViewBuilder

func (*TreeViewBuilder) NodeIntent

func (b *TreeViewBuilder) NodeIntent(i string) *TreeViewBuilder

func (*TreeViewBuilder) OnSelect

func (b *TreeViewBuilder) OnSelect(a *Action) *TreeViewBuilder

type TreeViewProps

type TreeViewProps struct {
	ChildrenField string  `json:"childrenField,omitempty"`
	LabelField    string  `json:"labelField,omitempty"`
	IconField     string  `json:"iconField,omitempty"`
	NodeIntent    string  `json:"nodeIntent,omitempty"`    // intent to render each node
	DefaultExpand int     `json:"defaultExpand,omitempty"` // default expand depth (0 = root only)
	OnSelect      *Action `json:"onSelect,omitempty"`
	ClassName     string  `json:"className,omitempty"`
}

type Trend

type Trend string

Trend marks a stat's directional movement.

const (
	TrendUp   Trend = "up"
	TrendDown Trend = "down"
	TrendFlat Trend = "flat"
)

type TwoFactorSetupBuilder

type TwoFactorSetupBuilder struct {
	*Common[TwoFactorSetupBuilder]
	Props TwoFactorSetupProps
}

func TwoFactorSetup

func TwoFactorSetup() *TwoFactorSetupBuilder

func (*TwoFactorSetupBuilder) Build

func (*TwoFactorSetupBuilder) ClassName

func (*TwoFactorSetupBuilder) GenerateBackupOp

func (b *TwoFactorSetupBuilder) GenerateBackupOp(op string) *TwoFactorSetupBuilder

func (*TwoFactorSetupBuilder) GenerateSecretOp

func (b *TwoFactorSetupBuilder) GenerateSecretOp(op string) *TwoFactorSetupBuilder

func (*TwoFactorSetupBuilder) Method

func (*TwoFactorSetupBuilder) OnComplete

func (*TwoFactorSetupBuilder) VerifyOp

type TwoFactorSetupProps

type TwoFactorSetupProps struct {
	GenerateSecretOp string  `json:"generateSecretOp"`
	VerifyOp         string  `json:"verifyOp"`
	GenerateBackupOp string  `json:"generateBackupOp,omitempty"`
	Method           string  `json:"method,omitempty"` // "totp" | "sms"
	OnComplete       *Action `json:"onComplete,omitempty"`
	ClassName        string  `json:"className,omitempty"`
}

type UserButtonBuilder

type UserButtonBuilder struct {
	*Common[UserButtonBuilder]
	Props UserButtonProps
}

func UserButton

func UserButton() *UserButtonBuilder

func (*UserButtonBuilder) Build

func (*UserButtonBuilder) ClassName

func (b *UserButtonBuilder) ClassName(c string) *UserButtonBuilder

func (*UserButtonBuilder) MenuItem

func (b *UserButtonBuilder) MenuItem(item MenuItem) *UserButtonBuilder

func (*UserButtonBuilder) ProfileURL

func (b *UserButtonBuilder) ProfileURL(u string) *UserButtonBuilder

func (*UserButtonBuilder) SettingsURL

func (b *UserButtonBuilder) SettingsURL(u string) *UserButtonBuilder

func (*UserButtonBuilder) ShowEmail

func (b *UserButtonBuilder) ShowEmail(s bool) *UserButtonBuilder

func (*UserButtonBuilder) ShowName

func (b *UserButtonBuilder) ShowName(s bool) *UserButtonBuilder

func (*UserButtonBuilder) SignOutOp

func (b *UserButtonBuilder) SignOutOp(op string) *UserButtonBuilder

type UserButtonProps

type UserButtonProps struct {
	ShowName    bool       `json:"showName,omitempty"`
	ShowEmail   bool       `json:"showEmail,omitempty"`
	MenuItems   []MenuItem `json:"menuItems,omitempty"`
	SignOutOp   string     `json:"signOutOp,omitempty"`
	ProfileURL  string     `json:"profileURL,omitempty"`
	SettingsURL string     `json:"settingsURL,omitempty"`
	ClassName   string     `json:"className,omitempty"`
}

type VirtConfig

type VirtConfig struct {
	Enabled  bool `json:"enabled,omitempty"`
	Overscan int  `json:"overscan,omitempty"`
}

VirtConfig configures row virtualization.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL