module Web.View.FederatedPolicyOverlays.Index where
import Web.Types
import Generated.Types
import IHP.Prelude
import IHP.ViewPrelude
import Web.Routes ()
data IndexView = IndexView
{ overlays :: ![FederatedPolicyOverlay]
, hubs :: ![Hub]
}
instance View IndexView where
html IndexView { .. } = [hsx|
Federated Policy Overlays
{renderOverlaysList overlays}
|]
renderOverlaysList :: [FederatedPolicyOverlay] -> Html
renderOverlaysList [] = [hsx|No policy overlays yet.
|]
renderOverlaysList overlays = [hsx|
| Title |
Status |
Enforced From |
Created |
|
{forEach overlays renderOverlayRow}
|]
renderOverlayRow :: FederatedPolicyOverlay -> Html
renderOverlayRow o = [hsx|
| {o.title} |
" text-xs px-2 py-0.5 rounded font-medium"}>
{o.status}
|
{maybe "–" show o.enforcedFrom} |
{show o.createdAt} |
View
|
|]
statusBadge :: Text -> Text
statusBadge s = case s of
"draft" -> "bg-gray-100 text-gray-600"
"active" -> "bg-green-100 text-green-700"
"retired" -> "bg-red-100 text-red-600"
_ -> "bg-gray-100 text-gray-600"