-----------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultilineStrings  #-}
{-# LANGUAGE RecordWildCards   #-}
-----------------------------------------------------------------------------
module Miso.UI.Breadcrumb
  ( -- ** Props
    BreadcrumbProps (..)
  , defaultBreadcrumbProps
    -- ** Views
  , breadcrumb_
  , breadcrumbLink_
  , breadcrumbPage_
  , breadcrumbSeparator_
  , breadcrumbItem_
    -- ** Samples
  , 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
-----------------------------------------------------------------------------
-- | Props for 'breadcrumb_'
data BreadcrumbProps action
  = BreadcrumbProps
  { forall action. BreadcrumbProps action -> [MisoString]
breadcrumbClasses :: [MisoString]
    -- ^ Extra classes appended to the @ol@
  , forall action. BreadcrumbProps action -> [Attribute action]
breadcrumbAttrs :: [Attribute action]
  }
-----------------------------------------------------------------------------
-- | Smart constructor
defaultBreadcrumbProps :: BreadcrumbProps action
defaultBreadcrumbProps :: forall action. BreadcrumbProps action
defaultBreadcrumbProps
  = BreadcrumbProps
  { breadcrumbClasses :: [MisoString]
breadcrumbClasses = []
  , breadcrumbAttrs :: [Attribute action]
breadcrumbAttrs = []
  }
-----------------------------------------------------------------------------
-- | <https://basecoatui.com/components/breadcrumb/ Breadcrumb>.
-- Children are 'breadcrumbItem_' \/ 'breadcrumbSeparator_' views.
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
-----------------------------------------------------------------------------
-- | Link to an ancestor page
breadcrumbLink_
  :: MisoString
  -- ^ href
  -> [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
  ]
-----------------------------------------------------------------------------
-- | The current page (last crumb)
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 = []
    }
  """
-----------------------------------------------------------------------------