packages feed

miso-css-0.0.1: src/Miso/Css/Style/AncestorConstraint.hs

module Miso.Css.Style.AncestorConstraint where

import Miso.Css.Prelude ( KnownSymbol, Proxy )
import Miso.Css.Segment
import Miso.Css.Sibling ( AddSiblingBr, SiblingBranch )


data AncestorConstraint (p :: [Seg]) where
  CssOrphan :: Proxy ms -> AncestorConstraint '[ '( ms, '[], '[], '[] )]
  AddRoot ::
    AncestorConstraint ac -> AncestorConstraint (AddSubSeg R ac)
  AddSiblingBranch ::
    SiblingBranch sgs ->
    AncestorConstraint ac ->
    AncestorConstraint (AddSiblingBr sgs ac)
  NextAncestor :: -- CSS star
    Proxy ms ->
    AncestorConstraint ac ->
    AncestorConstraint ('( ms, '[], '[], '[]) : ac)
  AddSubSegConstraint ::
    KnownSymbol a =>
    Proxy c -> Proxy a -> AncestorConstraint ac -> AncestorConstraint (AddSubSeg (c a) ac)