package components import "fmt" // FormFieldData represents common form field data type FormFieldData struct { Name string Label string Description string Required bool } // TextFieldData represents text input field data type TextFieldData struct { FormFieldData Value string Placeholder string } // NumberFieldData represents number input field data type NumberFieldData struct { FormFieldData Value float64 Step string Min *float64 Max *float64 } // CheckboxFieldData represents checkbox field data type CheckboxFieldData struct { FormFieldData Checked bool } // SelectFieldData represents select field data type SelectFieldData struct { FormFieldData Value string Options []SelectOption } type SelectOption struct { Value string Label string } // DurationFieldData represents duration input field data type DurationFieldData struct { FormFieldData Value string Placeholder string } // DurationInputFieldData represents duration input with number + unit dropdown type DurationInputFieldData struct { FormFieldData Seconds int // The duration value in seconds } // TextField renders a Bootstrap text input field templ TextField(data TextFieldData) {
if data.Description != "" {
{ data.Description }
}
} // NumberField renders a Bootstrap number input field templ NumberField(data NumberFieldData) {
if data.Description != "" {
{ data.Description }
}
} // CheckboxField renders a Bootstrap checkbox field templ CheckboxField(data CheckboxFieldData) {
if data.Description != "" {
{ data.Description }
}
} // SelectField renders a Bootstrap select field templ SelectField(data SelectFieldData) {
if data.Description != "" {
{ data.Description }
}
} // DurationField renders a Bootstrap duration input field templ DurationField(data DurationFieldData) {
if data.Description != "" {
{ data.Description }
}
} // DurationInputField renders a Bootstrap duration input with number + unit dropdown templ DurationInputField(data DurationInputFieldData) {
if data.Description != "" {
{ data.Description }
}
} // Helper functions for duration conversion (used by DurationInputField) func convertSecondsToUnit(seconds int) string { if seconds == 0 { return "minutes" } // Try days first if seconds%(24*3600) == 0 && seconds >= 24*3600 { return "days" } // Try hours if seconds%3600 == 0 && seconds >= 3600 { return "hours" } // Default to minutes return "minutes" } func convertSecondsToValue(seconds int, unit string) float64 { if seconds == 0 { return 0 } switch unit { case "days": return float64(seconds / (24 * 3600)) case "hours": return float64(seconds / 3600) case "minutes": return float64(seconds / 60) default: return float64(seconds / 60) // Default to minutes } }