{-# OPTIONS_GHC -Wno-term-variable-capture #-}

module Dashi.Style where

import Clay hiding (style)
import Dashi.Components.ActionBar (ActionBar)
import Dashi.Components.Avatar (Avatar, AvatarItem)
import Dashi.Components.Breadcrumbs (Breadcrumbs)
import Dashi.Components.Button (Button)
import Dashi.Components.Checkbox (Checkbox, CheckboxGroup)
import Dashi.Components.Form (FormField)
import Dashi.Components.Heading (Heading)
import Dashi.Components.Icon (Icon)
import Dashi.Components.Link (Link)
import Dashi.Components.Message (Message)
import Dashi.Components.Pagination (Pagination)
import Dashi.Components.Plot (Plot)
import Dashi.Components.ProgressBar (ProgressBar)
import Dashi.Components.Radio (Radio, RadioGroup)
import Dashi.Components.Range (Range)
import Dashi.Components.Select (Select)
import Dashi.Components.Switch (Switch)
import Dashi.Components.Tabs (Tabs)
import Dashi.Components.TextField (TextField)
import Dashi.Components.Widget qualified as Widget
import Dashi.Layout.Page (Page)
import Dashi.Style.Root qualified as Root
import Prelude

style :: forall value model action. (value ~ (), model ~ (), action ~ ()) => Css
style :: forall value model action.
(value ~ (), model ~ (), action ~ ()) =>
Css
style = do
    Css
Root.style

    forall w model action. Widget w model action => Css
Widget.style @(Page model action) @model @action

    forall w model action. Widget w model action => Css
Widget.style @(ActionBar model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Breadcrumbs model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Button model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Checkbox model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(CheckboxGroup value model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(FormField value model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Link model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Pagination action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Radio model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(RadioGroup value model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Range action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Select value model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Switch model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(Tabs value model action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @(TextField action) @model @action
    forall w model action. Widget w model action => Css
Widget.style @Avatar @model @action
    forall w model action. Widget w model action => Css
Widget.style @AvatarItem @model @action
    forall w model action. Widget w model action => Css
Widget.style @Heading
    forall w model action. Widget w model action => Css
Widget.style @Icon
    forall w model action. Widget w model action => Css
Widget.style @Message
    forall w model action. Widget w model action => Css
Widget.style @(Plot Double) @model @action
    forall w model action. Widget w model action => Css
Widget.style @ProgressBar @model @action