+}
diff --git a/pkg/components/dropdown_menu.templ b/pkg/components/dropdown_menu.templ
new file mode 100644
index 0000000..d4b37f9
--- /dev/null
+++ b/pkg/components/dropdown_menu.templ
@@ -0,0 +1,134 @@
+package components
+
+import (
+ "fmt"
+)
+
+// DropdownMenuItem represents an item in the dropdown menu
+type DropdownMenuItem struct {
+ Label string
+ Value string
+ Href string
+ Target string
+}
+
+// DropdownMenuProps defines the properties for the DropdownMenu component
+type DropdownMenuProps struct {
+ Items []DropdownMenuItem
+ Label string
+ Class string
+ Position string // "left" or "right", defaults to right if not specified
+}
+
+// DropdownMenu renders a dropdown menu component.
+//
+// It provides a button that, when clicked, displays a list of options.
+// The menu can be positioned to the left or right of the button.
+// It supports both button and link items, with optional target attribute for links.
+//
+// Props:
+// - Items: Slice of DropdownMenuItem, defining the content of the dropdown
+// - Label: Text to display on the dropdown button
+// - Class: Additional CSS classes to apply to the root element
+// - Position: "left" or "right", determines the horizontal position of the dropdown
+//
+// DropdownMenuItem fields:
+// - Label: Text to display for the item
+// - Value: Value associated with the item (for button items)
+// - Href: URL for link items
+// - Target: Target attribute for link items (e.g., "_blank" for new tab)
+//
+// Usage:
+//
+// @components.DropdownMenu(components.DropdownMenuProps{
+// Label: "Options",
+// Position: "right",
+// Items: []components.DropdownMenuItem{
+// {Label: "Option 1", Value: "opt1"},
+// {Label: "Option 2", Value: "opt2"},
+// {Label: "External Link", Href: "https://example.com", Target: "_blank"},
+// },
+// })
+//
+// The component uses Alpine.js for interactivity and Tailwind CSS for styling.
+// It includes dark mode support and responsive positioning.
+templ DropdownMenu(props DropdownMenuProps) {
+
+
+
+
+ for _, item := range props.Items {
+ if item.Href != "" {
+ { item.Label }
+ } else {
+
+ }
+ }
+
+
+
+}
diff --git a/pkg/components/dropdown_menu_templ.go b/pkg/components/dropdown_menu_templ.go
new file mode 100644
index 0000000..857a07c
--- /dev/null
+++ b/pkg/components/dropdown_menu_templ.go
@@ -0,0 +1,214 @@
+// Code generated by templ - DO NOT EDIT.
+
+// templ: version: v0.2.778
+package components
+
+//lint:file-ignore SA4006 This context is only used if a nested component is present.
+
+import "github.com/a-h/templ"
+import templruntime "github.com/a-h/templ/runtime"
+
+import (
+ "fmt"
+)
+
+// DropdownMenuItem represents an item in the dropdown menu
+type DropdownMenuItem struct {
+ Label string
+ Value string
+ Href string
+ Target string
+}
+
+// DropdownMenuProps defines the properties for the DropdownMenu component
+type DropdownMenuProps struct {
+ Items []DropdownMenuItem
+ Label string
+ Class string
+ Position string // "left" or "right", defaults to right if not specified
+}
+
+// DropdownMenu renders a dropdown menu component.
+//
+// It provides a button that, when clicked, displays a list of options.
+// The menu can be positioned to the left or right of the button.
+// It supports both button and link items, with optional target attribute for links.
+//
+// Props:
+// - Items: Slice of DropdownMenuItem, defining the content of the dropdown
+// - Label: Text to display on the dropdown button
+// - Class: Additional CSS classes to apply to the root element
+// - Position: "left" or "right", determines the horizontal position of the dropdown
+//
+// DropdownMenuItem fields:
+// - Label: Text to display for the item
+// - Value: Value associated with the item (for button items)
+// - Href: URL for link items
+// - Target: Target attribute for link items (e.g., "_blank" for new tab)
+//
+// Usage:
+//
+// @components.DropdownMenu(components.DropdownMenuProps{
+// Label: "Options",
+// Position: "right",
+// Items: []components.DropdownMenuItem{
+// {Label: "Option 1", Value: "opt1"},
+// {Label: "Option 2", Value: "opt2"},
+// {Label: "External Link", Href: "https://example.com", Target: "_blank"},
+// },
+// })
+//
+// The component uses Alpine.js for interactivity and Tailwind CSS for styling.
+// It includes dark mode support and responsive positioning.
+func DropdownMenu(props DropdownMenuProps) templ.Component {
+ return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
+ templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
+ if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
+ return templ_7745c5c3_CtxErr
+ }
+ templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
+ if !templ_7745c5c3_IsBuffer {
+ defer func() {
+ templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err == nil {
+ templ_7745c5c3_Err = templ_7745c5c3_BufErr
+ }
+ }()
+ }
+ ctx = templ.InitializeContext(ctx)
+ templ_7745c5c3_Var1 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var1 == nil {
+ templ_7745c5c3_Var1 = templ.NopComponent
+ }
+ ctx = templ.ClearChildren(ctx)
+ var templ_7745c5c3_Var2 = []any{"relative inline-block text-left", props.Class}
+ templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...)
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("