module LinkedIn.UI.Components.JobsUnifiedTopCard where import Prelude import Control.Alt ((<|>)) import Control.Monad.Error.Class (throwError) import Data.Foldable (class Foldable, foldMap, foldlDefault, foldrDefault) import Data.Generic.Rep (class Generic) import Data.Lens (Lens', Prism', Traversal', lens', prism', traversed, view) import Data.Lens.Record (prop) import Data.List.Types (List, NonEmptyList) import Data.Maybe (Maybe(..)) import Data.Show.Generic (genericShow) import Data.Traversable (class Traversable, sequence, traverseDefault) import Data.Tuple (Tuple(..)) import LinkedIn.CanBeQueried (class CanBeQueried, subQueryNEL, subQueryList, subQueryOne) import LinkedIn.QueryRunner (QueryError(..), queryList, queryOne, querySelf, queryText) import LinkedIn.Queryable (class Queryable, toNode) import Type.Proxy (Proxy(..)) import Web.DOM.Node as N type JobsUnifiedTopCardElementObject a = { header :: a, primaryDescription :: TopCardPrimaryDescription a, insights :: List (TopCardInsight a), actions :: List (TopCardAction a) } newtype JobsUnifiedTopCardElement a = JobsUnifiedTopCardElement (JobsUnifiedTopCardElementObject a) type TopCardPrimaryDescriptionObject a = { link :: a, text :: a, tvmText :: List a } newtype TopCardPrimaryDescription a = TopCardPrimaryDescription (TopCardPrimaryDescriptionObject a) type TopCardInsightObject a = { icon :: a, content :: TopCardInsightContent a } newtype TopCardInsight a = TopCardInsight (TopCardInsightObject a) data TopCardInsightContent a = TopCardInsightContentSingle a | TopCardInsightContentSecondary {primary :: a, secondary :: NonEmptyList (TopCardSecondaryInsight a)} | TopCardInsightContentButton a data TopCardSecondaryInsight a = TopCardSecondaryInsightNested a | TopCardSecondaryInsightPlain a -- External application :