Icon.purs 1.06 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
module Gargantext.Components.Bootstrap.Icon (icon) where

import Gargantext.Prelude

import Data.Foldable (intercalate)
import Gargantext.Utils.Reactix as R2
import Reactix as R
import Reactix.DOM.HTML as H

type Props =
  ( name  :: String
  | Options
  )

type Options =
  ( className :: String
  )

options :: Record Options
options =
  { className : ""
  }

-- | Structural Component for a simple Glyphicon element
-- |
-- | https://forkaweso.me/Fork-Awesome/icons/
icon :: forall r. R2.OptLeaf Options Props r
icon = R2.optLeaf component options

componentName :: String
componentName = "b-icon"

bootstrapName :: String
bootstrapName = "fa"

component :: R.Component Props
component = R.hooksComponent componentName cpt where
  cpt props _ = do
    -- Computed
    className <- pure $ intercalate " "
      -- provided custom className
      [ props.className
      -- BEM classNames
      , componentName
      -- Bootstrap specific classNames
      , bootstrapName
      , bootstrapName <> "-" <> props.name
      ]
    -- Render
    pure $

      H.i
      { className }
      []