{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultilineStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Miso.UI.Breadcrumb
(
BreadcrumbProps (..)
, defaultBreadcrumbProps
, breadcrumb_
, breadcrumbLink_
, breadcrumbPage_
, breadcrumbSeparator_
, breadcrumbItem_
, breadcrumbSample
, breadcrumbCodeSample
, breadcrumbPropsApi
) where
import Miso
import qualified Miso.Html.Element as H
import qualified Miso.Html.Property as P
import Miso.UI.DropDownMenu
import Miso.UI.Icons
data BreadcrumbProps action
= BreadcrumbProps
{ forall action. BreadcrumbProps action -> [MisoString]
breadcrumbClasses :: [MisoString]
, forall action. BreadcrumbProps action -> [Attribute action]
breadcrumbAttrs :: [Attribute action]
}
defaultBreadcrumbProps :: BreadcrumbProps action
defaultBreadcrumbProps :: forall action. BreadcrumbProps action
defaultBreadcrumbProps
= BreadcrumbProps
{ breadcrumbClasses :: [MisoString]
breadcrumbClasses = []
, breadcrumbAttrs :: [Attribute action]
breadcrumbAttrs = []
}
breadcrumb_
:: BreadcrumbProps action
-> [View model action]
-> View model action
breadcrumb_ :: forall action model.
BreadcrumbProps action -> [View model action] -> View model action
breadcrumb_ BreadcrumbProps {[MisoString]
[Attribute action]
breadcrumbClasses :: forall action. BreadcrumbProps action -> [MisoString]
breadcrumbAttrs :: forall action. BreadcrumbProps action -> [Attribute action]
breadcrumbClasses :: [MisoString]
breadcrumbAttrs :: [Attribute action]
..} [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.ol_
( [MisoString] -> Attribute action
forall action. [MisoString] -> Attribute action
P.classes_
( [ MisoString
"text-muted-foreground"
, MisoString
"flex", MisoString
"flex-wrap", MisoString
"items-center"
, MisoString
"gap-1.5", MisoString
"text-sm", MisoString
"break-words", MisoString
"sm:gap-2.5"
] [MisoString] -> [MisoString] -> [MisoString]
forall a. [a] -> [a] -> [a]
++ [MisoString]
breadcrumbClasses
)
Attribute action -> [Attribute action] -> [Attribute action]
forall a. a -> [a] -> [a]
: [Attribute action]
breadcrumbAttrs
) [View model action]
kids
breadcrumbItem_
:: [Attribute action]
-> [View model action]
-> View model action
breadcrumbItem_ :: forall action model.
[Attribute action] -> [View model action] -> View model action
breadcrumbItem_ [Attribute action]
attrs [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ (MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"inline-flex items-center gap-1.5" Attribute action -> [Attribute action] -> [Attribute action]
forall a. a -> [a] -> [a]
: [Attribute action]
attrs) [View model action]
kids
breadcrumbLink_
:: MisoString
-> [View model action]
-> View model action
breadcrumbLink_ :: forall model action.
MisoString -> [View model action] -> View model action
breadcrumbLink_ MisoString
url [View model action]
kids = [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
breadcrumbItem_ []
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.a_
[ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"hover:text-foreground transition-colors"
, MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url
] [View model action]
kids
]
breadcrumbPage_
:: [View model action]
-> View model action
breadcrumbPage_ :: forall model action. [View model action] -> View model action
breadcrumbPage_ [View model action]
kids = [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
breadcrumbItem_ []
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.span_ [ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"text-foreground font-normal" ] [View model action]
kids
]
breadcrumbSeparator_ :: View model action
breadcrumbSeparator_ :: forall model action. View model action
breadcrumbSeparator_ =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ [] [ [Attribute action] -> View model action
forall action model. [Attribute action] -> View model action
chevronRightIcon [ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"size-3.5" ] ]
breadcrumbSample :: View model action
breadcrumbSample :: forall model action. View model action
breadcrumbSample =
BreadcrumbProps action -> [View model action] -> View model action
forall action model.
BreadcrumbProps action -> [View model action] -> View model action
breadcrumb_ BreadcrumbProps action
forall action. BreadcrumbProps action
defaultBreadcrumbProps
[ MisoString -> [View model action] -> View model action
forall model action.
MisoString -> [View model action] -> View model action
breadcrumbLink_ MisoString
"#" [ View model action
"Home" ]
, View model action
forall model action. View model action
breadcrumbSeparator_
, [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
breadcrumbItem_ []
[ DropdownMenuProps model action
-> [View model action] -> View model action
forall model action.
DropdownMenuProps model action
-> [View model action] -> View model action
dropdownMenu_ DropdownMenuProps (ZonkAny 0) action
forall model action. DropdownMenuProps model action
defaultDropdownMenuProps
{ dropdownMenuId = "demo-breadcrumb-menu"
, dropdownMenuTriggerClasses =
[ "flex", "size-9", "items-center", "justify-center"
, "h-4", "w-4", "hover:text-foreground", "cursor-pointer"
]
, dropdownMenuTrigger = [ dotsIcon [] ]
, dropdownMenuPopoverClasses = [ "p-1" ]
}
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
menuItem_ [] [ View model action
"Documentation" ]
, [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
menuItem_ [] [ View model action
"Themes" ]
, [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
menuItem_ [] [ View model action
"GitHub" ]
]
]
, View model action
forall model action. View model action
breadcrumbSeparator_
, MisoString -> [View model action] -> View model action
forall model action.
MisoString -> [View model action] -> View model action
breadcrumbLink_ MisoString
"#" [ View model action
"Components" ]
, View model action
forall model action. View model action
breadcrumbSeparator_
, [View model action] -> View model action
forall model action. [View model action] -> View model action
breadcrumbPage_ [ View model action
"Breadcrumb" ]
]
breadcrumbCodeSample :: View model action
breadcrumbCodeSample :: forall model action. View model action
breadcrumbCodeSample =
View model action
"""
-----------------------------------------------------------------------------
module MyBreadcrumb (breadcrumbSample) where
-----------------------------------------------------------------------------
import Miso
import qualified Miso.Html.Element as H
import qualified Miso.Html.Property as P
import Miso.UI.DropDownMenu
import Miso.UI.Icons
import Miso.UI.Breadcrumb
-----------------------------------------------------------------------------
breadcrumbSample :: View model action
breadcrumbSample =
breadcrumb_ defaultBreadcrumbProps
[ breadcrumbLink_ "#" [ "Home" ]
, breadcrumbSeparator_
, breadcrumbItem_ []
[ dropdownMenu_ defaultDropdownMenuProps
{ dropdownMenuId = "demo-breadcrumb-menu"
, dropdownMenuTriggerClasses =
[ "flex", "size-9", "items-center", "justify-center"
, "h-4", "w-4", "hover:text-foreground", "cursor-pointer"
]
, dropdownMenuTrigger = [ dotsIcon [] ]
, dropdownMenuPopoverClasses = [ "p-1" ]
}
[ menuItem_ [] [ "Documentation" ]
, menuItem_ [] [ "Themes" ]
, menuItem_ [] [ "GitHub" ]
]
]
, breadcrumbSeparator_
, breadcrumbLink_ "#" [ "Components" ]
, breadcrumbSeparator_
, breadcrumbPage_ [ "Breadcrumb" ]
]
"""
breadcrumbPropsApi :: View model action
breadcrumbPropsApi :: forall model action. View model action
breadcrumbPropsApi =
View model action
"""
-- | Props for 'breadcrumb_'
data BreadcrumbProps action
= BreadcrumbProps
{ breadcrumbClasses :: [MisoString]
-- ^ Extra classes appended to the @ol@
, breadcrumbAttrs :: [Attribute action]
}
-----------------------------------------------------------------------------
-- | Smart constructor
defaultBreadcrumbProps :: BreadcrumbProps action
defaultBreadcrumbProps
= BreadcrumbProps
{ breadcrumbClasses = []
, breadcrumbAttrs = []
}
"""