chore: move templui utils into ui folder

This commit is contained in:
juancwu 2026-04-06 18:22:58 +00:00
commit a3f4661456
44 changed files with 50 additions and 55 deletions

View file

@ -4,7 +4,7 @@ package accordion
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/alert
package alert
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Variant string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/aspect-ratio
package aspectratio
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Ratio string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/avatar
package avatar
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/badge
package badge
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Variant string

View file

@ -4,7 +4,7 @@ package breadcrumb
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -3,7 +3,7 @@
package button
import (
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strings"
)

View file

@ -4,7 +4,7 @@ package calendar
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
"time"
)

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/card
package card
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -5,7 +5,7 @@ package carousel
import (
"fmt"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/charts
package chart
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Variant string

View file

@ -4,7 +4,7 @@ package checkbox
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/code
package code
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/collapsible
package collapsible
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -5,7 +5,7 @@ package copybutton
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -8,7 +8,7 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/card"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/popover"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"time"
)

View file

@ -5,7 +5,7 @@ package dialog
import (
"context"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type contextKey string

View file

@ -5,7 +5,7 @@ package dropdown
import (
"context"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/popover"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Placement = popover.Placement

View file

@ -4,7 +4,7 @@ package form
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/label"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type MessageVariant string

View file

@ -5,7 +5,7 @@ package input
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Type string

View file

@ -3,7 +3,7 @@
package inputotp
import (
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/label
package label
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -5,7 +5,7 @@ package pagination
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -3,7 +3,7 @@
package popover
import (
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -4,7 +4,7 @@ package progress
import (
"fmt"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Size string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/radio
package radio
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -5,7 +5,7 @@ package rating
import (
"fmt"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -9,7 +9,7 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/input"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/popover"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/separator
package separator
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Orientation string
type Decoration string

View file

@ -5,7 +5,7 @@ package sheet
import (
"context"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/dialog"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type contextKey string

View file

@ -3,7 +3,7 @@
package sidebar
import "context"
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
import "git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
import "git.juancwu.dev/juancwu/budgit/internal/ui/components/sheet"

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/skeleton
package skeleton
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -4,7 +4,7 @@ package slider
import (
"fmt"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/switch
package switchcomp
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -2,7 +2,7 @@
// 📚 Documentation: https://templui.io/docs/components/table
package table
import "git.juancwu.dev/juancwu/budgit/internal/utils"
import "git.juancwu.dev/juancwu/budgit/internal/ui/utils"
type Props struct {
ID string

View file

@ -4,7 +4,7 @@ package tabs
import (
"context"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -5,7 +5,7 @@ package tagsinput
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/badge"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/input"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Props struct {

View file

@ -3,7 +3,7 @@
package textarea
import (
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -8,7 +8,7 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/card"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/popover"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
"time"
)

View file

@ -5,7 +5,7 @@ package toast
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
"strconv"
)

View file

@ -4,7 +4,7 @@ package tooltip
import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/popover"
"git.juancwu.dev/juancwu/budgit/internal/utils"
"git.juancwu.dev/juancwu/budgit/internal/ui/utils"
)
type Position string

View file

@ -0,0 +1,74 @@
// templui util templui.go - version: v0.101.0 installed by templui v0.101.0
package utils
import (
"fmt"
"time"
"crypto/rand"
"github.com/a-h/templ"
twmerge "github.com/Oudwins/tailwind-merge-go"
)
// TwMerge combines Tailwind classes and resolves conflicts.
// Example: "bg-red-500 hover:bg-blue-500", "bg-green-500" → "hover:bg-blue-500 bg-green-500"
func TwMerge(classes ...string) string {
return twmerge.Merge(classes...)
}
// TwIf returns value if condition is true, otherwise an empty value of type T.
// Example: true, "bg-red-500" → "bg-red-500"
func If[T comparable](condition bool, value T) T {
var empty T
if condition {
return value
}
return empty
}
// TwIfElse returns trueValue if condition is true, otherwise falseValue.
// Example: true, "bg-red-500", "bg-gray-300" → "bg-red-500"
func IfElse[T any](condition bool, trueValue T, falseValue T) T {
if condition {
return trueValue
}
return falseValue
}
// MergeAttributes combines multiple Attributes into one.
// Example: MergeAttributes(attr1, attr2) → combined attributes
func MergeAttributes(attrs ...templ.Attributes) templ.Attributes {
merged := templ.Attributes{}
for _, attr := range attrs {
for k, v := range attr {
merged[k] = v
}
}
return merged
}
// RandomID generates a random ID string.
// Example: RandomID() → "id-1a2b3c"
func RandomID() string {
return fmt.Sprintf("id-%s", rand.Text())
}
// ScriptVersion is a timestamp generated at app start for cache busting.
// Used in Script() templates to append ?v=<timestamp> to script URLs.
var ScriptVersion = fmt.Sprintf("%d", time.Now().Unix())
// ScriptURL generates cache-busted script URLs.
// Override this to use custom cache busting (CDN, content hashing, etc.)
//
// Example override in your app:
//
// func init() {
// utils.ScriptURL = func(path string) string {
// return myAssetManifest.GetURL(path)
// }
// }
var ScriptURL = func(path string) string {
return path + "?v=" + ScriptVersion
}