kits

package
v0.1.8 Latest Latest
Warning

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

Go to latest
Published: May 21, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const ManifestFileName = "kit.yaml"

Variables

This section is empty.

Functions

func GetSystemKits

func GetSystemKits() *embed.FS

GetSystemKits returns the embedded filesystem containing system kits

func ManifestExists

func ManifestExists(dir string) bool

ManifestExists checks if a kit manifest exists in a directory

func SaveManifest

func SaveManifest(dir string, manifest *KitManifest) error

SaveManifest saves a kit manifest to a directory

Types

type BaseHelpers

type BaseHelpers struct{}

BaseHelpers provides common utility methods for all CSS helpers

func (*BaseHelpers) Add

func (h *BaseHelpers) Add(a, b int) int

Add adds two integers

func (*BaseHelpers) Dict

func (h *BaseHelpers) Dict(values ...interface{}) map[string]interface{}

Dict creates a map for passing multiple values to nested templates

func (*BaseHelpers) Until

func (h *BaseHelpers) Until(count int) []int

Until generates a slice of integers from 0 to count-1

type CSSHelpers

type CSSHelpers interface {
	// Framework information
	CSSCDN() string

	// Layout helpers
	ContainerClass() string
	SectionClass() string
	BoxClass() string
	ColumnClass() string
	ColumnsClass() string

	// Form helpers
	FieldClass() string
	LabelClass() string
	InputClass() string
	TextareaClass() string
	SelectClass() string
	CheckboxClass() string
	RadioClass() string
	ButtonClass(variant string) string
	ButtonGroupClass() string
	FormClass() string

	// Table helpers
	TableClass() string
	TheadClass() string
	TbodyClass() string
	ThClass() string
	TdClass() string
	TrClass() string
	TableContainerClass() string

	// Navigation helpers
	NavbarClass() string
	NavbarBrandClass() string
	NavbarMenuClass() string
	NavbarItemClass() string
	NavbarStartClass() string
	NavbarEndClass() string

	// Text/Typography helpers
	TitleClass(level int) string
	SubtitleClass() string
	TextClass(size string) string
	TextMutedClass() string
	TextPrimaryClass() string
	TextDangerClass() string
	TextSuccessClass() string
	TextWarningClass() string

	// Pagination helpers
	PaginationClass() string
	PaginationButtonClass(state string) string
	PaginationListClass() string
	PaginationItemClass() string

	// Card/Panel helpers
	CardClass() string
	CardHeaderClass() string
	CardBodyClass() string
	CardFooterClass() string

	// Modal/Dialog helpers
	ModalClass() string
	ModalBackgroundClass() string
	ModalContentClass() string
	ModalCloseClass() string

	// Alert/Notification helpers
	AlertClass(variant string) string
	NotificationClass(variant string) string

	// Badge/Tag helpers
	BadgeClass(variant string) string
	TagClass(variant string) string

	// Loading/Spinner helpers
	SpinnerClass() string
	LoadingClass() string

	// Grid helpers
	GridClass() string
	GridItemClass() string

	// Flex helpers
	FlexClass() string
	FlexItemClass() string

	// Spacing helpers
	MarginClass(size string) string
	PaddingClass(size string) string

	// Display helpers
	HiddenClass() string
	VisibleClass() string

	// Framework-specific checks
	NeedsWrapper() bool
	NeedsArticle() bool

	// Utility functions
	Dict(values ...interface{}) map[string]interface{}
	Until(count int) []int
	Add(a, b int) int
}

CSSHelpers provides CSS framework-specific helper functions for templates These methods abstract away framework-specific class names and structures

func LoadHelpersForFramework

func LoadHelpersForFramework(framework string) (CSSHelpers, error)

LoadHelpersForFramework loads CSS helpers for a specific framework This is a public function used by both kit loading and dynamic helper injection Only Tailwind and None are supported - Bulma and Pico have been removed for simplification

func NewNoneHelpers

func NewNoneHelpers() CSSHelpers

NewNoneHelpers creates a helper for plain HTML without any CSS framework

func NewTailwindHelpers

func NewTailwindHelpers() CSSHelpers

NewTailwindHelpers creates a new Tailwind CSS helper

type ErrHelperLoad

type ErrHelperLoad struct {
	Kit string
	Err error
}

ErrHelperLoad is returned when loading kit helpers fails

func (ErrHelperLoad) Error

func (e ErrHelperLoad) Error() string

func (ErrHelperLoad) Unwrap

func (e ErrHelperLoad) Unwrap() error

type ErrInvalidManifest

type ErrInvalidManifest struct {
	Field  string
	Reason string
	Index  *int // Optional index for array fields
}

ErrInvalidManifest is returned when a kit manifest is invalid

func (ErrInvalidManifest) Error

func (e ErrInvalidManifest) Error() string

type ErrKitNotFound

type ErrKitNotFound struct {
	Name string
}

ErrKitNotFound is returned when a kit cannot be found

func (ErrKitNotFound) Error

func (e ErrKitNotFound) Error() string

type ErrManifestParse

type ErrManifestParse struct {
	Path string
	Err  error
}

ErrManifestParse is returned when parsing a manifest fails

func (ErrManifestParse) Error

func (e ErrManifestParse) Error() string

func (ErrManifestParse) Unwrap

func (e ErrManifestParse) Unwrap() error

type Kit

type Kit interface {
	// Name returns the kit name
	Name() string

	// Version returns the kit version
	Version() string

	// GetHelpers returns the CSS helper interface for this kit
	GetHelpers() CSSHelpers
}

Kit represents a design system that provides CSS/styling for components

type KitInfo

type KitInfo struct {
	// Manifest data
	Manifest KitManifest

	// Runtime data
	Source  KitSource  // Where this kit was loaded from
	Path    string     // Absolute path to kit directory
	Helpers CSSHelpers // CSS helper implementation
}

KitInfo represents a loaded kit with its metadata and helpers

func (*KitInfo) GetHelpers

func (k *KitInfo) GetHelpers() CSSHelpers

func (*KitInfo) Name

func (k *KitInfo) Name() string

Implement Kit interface for KitInfo

func (*KitInfo) SetHelpersForFramework

func (k *KitInfo) SetHelpersForFramework(framework string) error

SetHelpersForFramework sets CSS helpers based on framework name Used for CSS-agnostic kits that need helpers loaded dynamically

func (*KitInfo) Version

func (k *KitInfo) Version() string

type KitLoader

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

KitLoader handles loading kits from various sources

func DefaultLoader

func DefaultLoader() *KitLoader

DefaultLoader creates a kit loader with embedded system kits

func NewLoader

func NewLoader(embedFS *embed.FS) *KitLoader

NewLoader creates a new kit loader with default paths

func (*KitLoader) AddSearchPath

func (l *KitLoader) AddSearchPath(path string)

AddSearchPath adds a custom search path

func (*KitLoader) ClearCache

func (l *KitLoader) ClearCache()

ClearCache clears the kit cache

func (*KitLoader) GetSearchPaths

func (l *KitLoader) GetSearchPaths() []string

GetSearchPaths returns the current search paths

func (*KitLoader) List

func (l *KitLoader) List(opts *KitSearchOptions) ([]*KitInfo, error)

List returns all available kits, optionally filtered

func (*KitLoader) ListComponents

func (l *KitLoader) ListComponents(kitName string) ([]string, error)

ListComponents returns all component names available in a kit

func (*KitLoader) Load

func (l *KitLoader) Load(name string) (*KitInfo, error)

Load loads a kit by name from the first matching source

func (*KitLoader) LoadKitComponent

func (l *KitLoader) LoadKitComponent(kitName, componentName string) ([]byte, error)

LoadKitComponent loads a component template from a kit following cascade priority Cascade: Project (.lvt/kits/) → User (~/.config/lvt/kits/) → System (embedded)

func (*KitLoader) LoadKitTemplate

func (l *KitLoader) LoadKitTemplate(kitName, templatePath string) ([]byte, error)

LoadKitTemplate loads a generator template from a kit following cascade priority Cascade: Project (.lvt/kits/) → User (~/.config/lvt/kits/) → System (embedded) templatePath should be relative, e.g., "resource/handler.go.tmpl"

func (*KitLoader) ReadEmbeddedDir

func (l *KitLoader) ReadEmbeddedDir(path string) ([]os.DirEntry, error)

ReadEmbeddedDir reads a directory from the embedded filesystem

func (*KitLoader) ReadEmbeddedFile

func (l *KitLoader) ReadEmbeddedFile(path string) ([]byte, error)

ReadEmbeddedFile reads a file from the embedded filesystem

type KitManifest

type KitManifest struct {
	Name         string       `yaml:"name"`
	Version      string       `yaml:"version"`
	CSSFramework string       `yaml:"css_framework"` // CSS framework used by this kit (tailwind, bulma, pico, none)
	Description  string       `yaml:"description"`
	Framework    string       `yaml:"framework,omitempty"` // Optional: for legacy CSS-specific kits
	Author       string       `yaml:"author,omitempty"`
	License      string       `yaml:"license,omitempty"`
	CDN          string       `yaml:"cdn,omitempty"`        // CDN link for CSS framework
	CustomCSS    string       `yaml:"custom_css,omitempty"` // Path to custom CSS file
	Tags         []string     `yaml:"tags,omitempty"`
	Components   []string     `yaml:"components,omitempty"` // List of component template names
	Templates    KitTemplates `yaml:"templates,omitempty"`  // Generator templates included
}

KitManifest represents the kit.yaml file structure

func LoadManifest

func LoadManifest(dir string) (*KitManifest, error)

LoadManifest loads a kit manifest from a directory

func (*KitManifest) MatchesQuery

func (m *KitManifest) MatchesQuery(query string) bool

MatchesQuery checks if the kit matches a search query

func (*KitManifest) Validate

func (m *KitManifest) Validate() error

Validate checks if the kit manifest is valid

type KitSearchOptions

type KitSearchOptions struct {
	Source KitSource // Filter by source (empty = all)
	Query  string    // Search query for name/description/tags
}

KitSearchOptions defines options for searching/filtering kits

type KitSource

type KitSource string

KitSource represents where a kit was loaded from

const (
	SourceSystem    KitSource = "system"    // Built-in, embedded in lvt binary
	SourceLocal     KitSource = "local"     // User's custom kits
	SourceCommunity KitSource = "community" // From registry (future)
)

type KitTemplates

type KitTemplates struct {
	Resource bool `yaml:"resource"` // Resource generator templates
	View     bool `yaml:"view"`     // View generator templates
	App      bool `yaml:"app"`      // App generator templates
}

KitTemplates defines which generator templates are included in a kit

type NoneHelpers

type NoneHelpers struct {
	BaseHelpers
}

NoneHelpers implements CSSHelpers for no CSS framework (plain HTML)

func (*NoneHelpers) AlertClass

func (h *NoneHelpers) AlertClass(variant string) string

Alert/Notification helpers

func (*NoneHelpers) BadgeClass

func (h *NoneHelpers) BadgeClass(variant string) string

Badge/Tag helpers

func (*NoneHelpers) BoxClass

func (h *NoneHelpers) BoxClass() string

func (*NoneHelpers) ButtonClass

func (h *NoneHelpers) ButtonClass(variant string) string

func (*NoneHelpers) ButtonGroupClass

func (h *NoneHelpers) ButtonGroupClass() string

func (*NoneHelpers) CSSCDN

func (h *NoneHelpers) CSSCDN() string

Framework information

func (*NoneHelpers) CardBodyClass

func (h *NoneHelpers) CardBodyClass() string

func (*NoneHelpers) CardClass

func (h *NoneHelpers) CardClass() string

Card/Panel helpers

func (*NoneHelpers) CardFooterClass

func (h *NoneHelpers) CardFooterClass() string

func (*NoneHelpers) CardHeaderClass

func (h *NoneHelpers) CardHeaderClass() string

func (*NoneHelpers) CheckboxClass

func (h *NoneHelpers) CheckboxClass() string

func (*NoneHelpers) ColumnClass

func (h *NoneHelpers) ColumnClass() string

func (*NoneHelpers) ColumnsClass

func (h *NoneHelpers) ColumnsClass() string

func (*NoneHelpers) ContainerClass

func (h *NoneHelpers) ContainerClass() string

Layout helpers

func (*NoneHelpers) FieldClass

func (h *NoneHelpers) FieldClass() string

Form helpers

func (*NoneHelpers) FlexClass

func (h *NoneHelpers) FlexClass() string

Flex helpers

func (*NoneHelpers) FlexItemClass

func (h *NoneHelpers) FlexItemClass() string

func (*NoneHelpers) FormClass

func (h *NoneHelpers) FormClass() string

func (*NoneHelpers) GridClass

func (h *NoneHelpers) GridClass() string

Grid helpers

func (*NoneHelpers) GridItemClass

func (h *NoneHelpers) GridItemClass() string

func (*NoneHelpers) HiddenClass

func (h *NoneHelpers) HiddenClass() string

Display helpers

func (*NoneHelpers) InputClass

func (h *NoneHelpers) InputClass() string

func (*NoneHelpers) LabelClass

func (h *NoneHelpers) LabelClass() string

func (*NoneHelpers) LoadingClass

func (h *NoneHelpers) LoadingClass() string

func (*NoneHelpers) MarginClass

func (h *NoneHelpers) MarginClass(size string) string

Spacing helpers

func (*NoneHelpers) ModalBackgroundClass

func (h *NoneHelpers) ModalBackgroundClass() string

func (*NoneHelpers) ModalClass

func (h *NoneHelpers) ModalClass() string

Modal/Dialog helpers

func (*NoneHelpers) ModalCloseClass

func (h *NoneHelpers) ModalCloseClass() string

func (*NoneHelpers) ModalContentClass

func (h *NoneHelpers) ModalContentClass() string

func (*NoneHelpers) NavbarBrandClass

func (h *NoneHelpers) NavbarBrandClass() string

func (*NoneHelpers) NavbarClass

func (h *NoneHelpers) NavbarClass() string

Navigation helpers

func (*NoneHelpers) NavbarEndClass

func (h *NoneHelpers) NavbarEndClass() string

func (*NoneHelpers) NavbarItemClass

func (h *NoneHelpers) NavbarItemClass() string

func (*NoneHelpers) NavbarMenuClass

func (h *NoneHelpers) NavbarMenuClass() string

func (*NoneHelpers) NavbarStartClass

func (h *NoneHelpers) NavbarStartClass() string

func (*NoneHelpers) NeedsArticle

func (h *NoneHelpers) NeedsArticle() bool

func (*NoneHelpers) NeedsWrapper

func (h *NoneHelpers) NeedsWrapper() bool

Framework-specific checks

func (*NoneHelpers) NotificationClass

func (h *NoneHelpers) NotificationClass(variant string) string

func (*NoneHelpers) PaddingClass

func (h *NoneHelpers) PaddingClass(size string) string

func (*NoneHelpers) PaginationButtonClass

func (h *NoneHelpers) PaginationButtonClass(state string) string

func (*NoneHelpers) PaginationClass

func (h *NoneHelpers) PaginationClass() string

Pagination helpers

func (*NoneHelpers) PaginationItemClass

func (h *NoneHelpers) PaginationItemClass() string

func (*NoneHelpers) PaginationListClass

func (h *NoneHelpers) PaginationListClass() string

func (*NoneHelpers) RadioClass

func (h *NoneHelpers) RadioClass() string

func (*NoneHelpers) SectionClass

func (h *NoneHelpers) SectionClass() string

func (*NoneHelpers) SelectClass

func (h *NoneHelpers) SelectClass() string

func (*NoneHelpers) SpinnerClass

func (h *NoneHelpers) SpinnerClass() string

Loading/Spinner helpers

func (*NoneHelpers) SubtitleClass

func (h *NoneHelpers) SubtitleClass() string

func (*NoneHelpers) TableClass

func (h *NoneHelpers) TableClass() string

Table helpers

func (*NoneHelpers) TableContainerClass

func (h *NoneHelpers) TableContainerClass() string

func (*NoneHelpers) TagClass

func (h *NoneHelpers) TagClass(variant string) string

func (*NoneHelpers) TbodyClass

func (h *NoneHelpers) TbodyClass() string

func (*NoneHelpers) TdClass

func (h *NoneHelpers) TdClass() string

func (*NoneHelpers) TextClass

func (h *NoneHelpers) TextClass(size string) string

func (*NoneHelpers) TextDangerClass

func (h *NoneHelpers) TextDangerClass() string

func (*NoneHelpers) TextMutedClass

func (h *NoneHelpers) TextMutedClass() string

func (*NoneHelpers) TextPrimaryClass

func (h *NoneHelpers) TextPrimaryClass() string

func (*NoneHelpers) TextSuccessClass

func (h *NoneHelpers) TextSuccessClass() string

func (*NoneHelpers) TextWarningClass

func (h *NoneHelpers) TextWarningClass() string

func (*NoneHelpers) TextareaClass

func (h *NoneHelpers) TextareaClass() string

func (*NoneHelpers) ThClass

func (h *NoneHelpers) ThClass() string

func (*NoneHelpers) TheadClass

func (h *NoneHelpers) TheadClass() string

func (*NoneHelpers) TitleClass

func (h *NoneHelpers) TitleClass(level int) string

Text/Typography helpers

func (*NoneHelpers) TrClass

func (h *NoneHelpers) TrClass() string

func (*NoneHelpers) VisibleClass

func (h *NoneHelpers) VisibleClass() string

type TailwindHelpers

type TailwindHelpers struct {
	BaseHelpers
}

TailwindHelpers implements CSSHelpers for Tailwind CSS

func (*TailwindHelpers) AlertClass

func (h *TailwindHelpers) AlertClass(variant string) string

Alert/Notification helpers

func (*TailwindHelpers) BadgeClass

func (h *TailwindHelpers) BadgeClass(variant string) string

Badge/Tag helpers

func (*TailwindHelpers) BoxClass

func (h *TailwindHelpers) BoxClass() string

func (*TailwindHelpers) ButtonClass

func (h *TailwindHelpers) ButtonClass(variant string) string

func (*TailwindHelpers) ButtonGroupClass

func (h *TailwindHelpers) ButtonGroupClass() string

func (*TailwindHelpers) CSSCDN

func (h *TailwindHelpers) CSSCDN() string

Framework information

func (*TailwindHelpers) CardBodyClass

func (h *TailwindHelpers) CardBodyClass() string

func (*TailwindHelpers) CardClass

func (h *TailwindHelpers) CardClass() string

Card/Panel helpers

func (*TailwindHelpers) CardFooterClass

func (h *TailwindHelpers) CardFooterClass() string

func (*TailwindHelpers) CardHeaderClass

func (h *TailwindHelpers) CardHeaderClass() string

func (*TailwindHelpers) CheckboxClass

func (h *TailwindHelpers) CheckboxClass() string

func (*TailwindHelpers) ColumnClass

func (h *TailwindHelpers) ColumnClass() string

func (*TailwindHelpers) ColumnsClass

func (h *TailwindHelpers) ColumnsClass() string

func (*TailwindHelpers) ContainerClass

func (h *TailwindHelpers) ContainerClass() string

Layout helpers

func (*TailwindHelpers) FieldClass

func (h *TailwindHelpers) FieldClass() string

Form helpers

func (*TailwindHelpers) FlexClass

func (h *TailwindHelpers) FlexClass() string

Flex helpers

func (*TailwindHelpers) FlexItemClass

func (h *TailwindHelpers) FlexItemClass() string

func (*TailwindHelpers) FormClass

func (h *TailwindHelpers) FormClass() string

func (*TailwindHelpers) GridClass

func (h *TailwindHelpers) GridClass() string

Grid helpers

func (*TailwindHelpers) GridItemClass

func (h *TailwindHelpers) GridItemClass() string

func (*TailwindHelpers) HiddenClass

func (h *TailwindHelpers) HiddenClass() string

Display helpers

func (*TailwindHelpers) InputClass

func (h *TailwindHelpers) InputClass() string

func (*TailwindHelpers) LabelClass

func (h *TailwindHelpers) LabelClass() string

func (*TailwindHelpers) LoadingClass

func (h *TailwindHelpers) LoadingClass() string

func (*TailwindHelpers) MarginClass

func (h *TailwindHelpers) MarginClass(size string) string

Spacing helpers

func (*TailwindHelpers) ModalBackgroundClass

func (h *TailwindHelpers) ModalBackgroundClass() string

func (*TailwindHelpers) ModalClass

func (h *TailwindHelpers) ModalClass() string

Modal/Dialog helpers

func (*TailwindHelpers) ModalCloseClass

func (h *TailwindHelpers) ModalCloseClass() string

func (*TailwindHelpers) ModalContentClass

func (h *TailwindHelpers) ModalContentClass() string

func (*TailwindHelpers) NavbarBrandClass

func (h *TailwindHelpers) NavbarBrandClass() string

func (*TailwindHelpers) NavbarClass

func (h *TailwindHelpers) NavbarClass() string

Navigation helpers

func (*TailwindHelpers) NavbarEndClass

func (h *TailwindHelpers) NavbarEndClass() string

func (*TailwindHelpers) NavbarItemClass

func (h *TailwindHelpers) NavbarItemClass() string

func (*TailwindHelpers) NavbarMenuClass

func (h *TailwindHelpers) NavbarMenuClass() string

func (*TailwindHelpers) NavbarStartClass

func (h *TailwindHelpers) NavbarStartClass() string

func (*TailwindHelpers) NeedsArticle

func (h *TailwindHelpers) NeedsArticle() bool

func (*TailwindHelpers) NeedsWrapper

func (h *TailwindHelpers) NeedsWrapper() bool

Framework-specific checks

func (*TailwindHelpers) NotificationClass

func (h *TailwindHelpers) NotificationClass(variant string) string

func (*TailwindHelpers) PaddingClass

func (h *TailwindHelpers) PaddingClass(size string) string

func (*TailwindHelpers) PaginationButtonClass

func (h *TailwindHelpers) PaginationButtonClass(state string) string

func (*TailwindHelpers) PaginationClass

func (h *TailwindHelpers) PaginationClass() string

Pagination helpers

func (*TailwindHelpers) PaginationItemClass

func (h *TailwindHelpers) PaginationItemClass() string

func (*TailwindHelpers) PaginationListClass

func (h *TailwindHelpers) PaginationListClass() string

func (*TailwindHelpers) RadioClass

func (h *TailwindHelpers) RadioClass() string

func (*TailwindHelpers) SectionClass

func (h *TailwindHelpers) SectionClass() string

func (*TailwindHelpers) SelectClass

func (h *TailwindHelpers) SelectClass() string

func (*TailwindHelpers) SpinnerClass

func (h *TailwindHelpers) SpinnerClass() string

Loading/Spinner helpers

func (*TailwindHelpers) SubtitleClass

func (h *TailwindHelpers) SubtitleClass() string

func (*TailwindHelpers) TableClass

func (h *TailwindHelpers) TableClass() string

Table helpers

func (*TailwindHelpers) TableContainerClass

func (h *TailwindHelpers) TableContainerClass() string

func (*TailwindHelpers) TagClass

func (h *TailwindHelpers) TagClass(variant string) string

func (*TailwindHelpers) TbodyClass

func (h *TailwindHelpers) TbodyClass() string

func (*TailwindHelpers) TdClass

func (h *TailwindHelpers) TdClass() string

func (*TailwindHelpers) TextClass

func (h *TailwindHelpers) TextClass(size string) string

func (*TailwindHelpers) TextDangerClass

func (h *TailwindHelpers) TextDangerClass() string

func (*TailwindHelpers) TextMutedClass

func (h *TailwindHelpers) TextMutedClass() string

func (*TailwindHelpers) TextPrimaryClass

func (h *TailwindHelpers) TextPrimaryClass() string

func (*TailwindHelpers) TextSuccessClass

func (h *TailwindHelpers) TextSuccessClass() string

func (*TailwindHelpers) TextWarningClass

func (h *TailwindHelpers) TextWarningClass() string

func (*TailwindHelpers) TextareaClass

func (h *TailwindHelpers) TextareaClass() string

func (*TailwindHelpers) ThClass

func (h *TailwindHelpers) ThClass() string

func (*TailwindHelpers) TheadClass

func (h *TailwindHelpers) TheadClass() string

func (*TailwindHelpers) TitleClass

func (h *TailwindHelpers) TitleClass(level int) string

Text/Typography helpers

func (*TailwindHelpers) TrClass

func (h *TailwindHelpers) TrClass() string

func (*TailwindHelpers) VisibleClass

func (h *TailwindHelpers) VisibleClass() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL