website/frontend/src/Pages/Services.elm

168 lines
5 KiB
Elm
Raw Normal View History

2024-11-11 03:57:54 -06:00
module Pages.Services exposing (Model, Msg, page)
2024-11-11 00:43:03 -06:00
import Config.Identity as ID exposing (..)
import Config.Theme as T exposing (..)
2024-11-11 03:57:54 -06:00
import Effect exposing (Effect)
2024-11-11 00:43:03 -06:00
import Element exposing (..)
import Element.Font as F
2024-11-11 03:57:54 -06:00
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared
2024-11-11 00:43:03 -06:00
import View exposing (View)
2024-11-11 03:57:54 -06:00
page : Shared.Model -> Route () -> Page Model Msg
page shared route =
Page.new
{ init = init
, update = update
, subscriptions = subscriptions
, view = view
}
|> Page.withLayout toLayout
toLayout : Model -> Layouts.Layout Msg
toLayout model =
Layouts.Navbar {}
-- INIT
type alias Model =
{}
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.none
)
-- UPDATE
type Msg
= NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
case msg of
NoOp ->
( model
, Effect.none
)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Model -> View Msg
view model =
2024-11-11 00:43:03 -06:00
{ title = servicesName
2024-11-11 03:57:54 -06:00
, attributes = []
2024-11-11 00:43:03 -06:00
, element = servicesContainer
}
servicesContainer : Element msg
servicesContainer =
topLevelContainer servicesList
servicesList : Element msg
servicesList =
column
2024-11-11 18:57:51 -06:00
pageList
2024-11-11 00:43:03 -06:00
services
2024-11-11 03:57:54 -06:00
type alias MakeRowInput =
{ logoImage : String
, logoDescription : String
, servicesLink : String
, servicesTitle : String
, servicesRate : String
, servicesDescription : String
}
makeRow : MakeRowInput -> Element msg
makeRow makeRowInput =
2024-11-11 00:43:03 -06:00
let
servicesImageFormat : List (Attribute msg)
servicesImageFormat =
[ width <| px 100
, alignTop
]
in
2024-11-11 03:57:54 -06:00
row [ imageSpacer ]
[ image servicesImageFormat
{ src = makeRowInput.logoImage
, description = makeRowInput.logoDescription
}
, column paragraphColumnFormat
[ row [ spacing 8 ]
2024-11-11 18:57:51 -06:00
[ newTabLink highlightedTitleFormat
2024-11-11 03:57:54 -06:00
{ url = makeRowInput.servicesLink
, label =
2024-11-11 18:57:51 -06:00
transitionHighlightedLinkHover <|
2024-11-11 03:57:54 -06:00
text makeRowInput.servicesTitle
}
, paragraph [ F.color colourTheme.nonHighlightedText ] [ text makeRowInput.servicesRate ]
2024-11-11 00:43:03 -06:00
]
2024-11-11 03:57:54 -06:00
, paragraph paragraphFormat [ text makeRowInput.servicesDescription ]
2024-11-11 00:43:03 -06:00
]
]
2024-11-11 03:57:54 -06:00
services : List (Element msg)
services =
List.map makeRow
2024-11-11 04:07:33 -06:00
[ { logoImage = "services/debate.png"
2024-11-11 03:57:54 -06:00
, logoDescription = "debate logo"
, servicesLink = "https://the-nutrivore.social/"
, servicesTitle = "DEBATE COACHING"
, servicesRate = "$60/hr"
, servicesDescription = "Participate in a structured course consisting of five one-hour modules, covering critical thinking, debate strategy, propositional logic, and more. Throughout the course you will receive both personalized and generalizable advice on how to improve your debate performance."
}
2024-11-11 04:07:33 -06:00
, { logoImage = "services/analysis.png"
2024-11-11 03:57:54 -06:00
, logoDescription = "analysis logo"
, servicesLink = "https://the-nutrivore.social/"
, servicesTitle = "DEBATE ANALYSIS"
, servicesRate = "$80/hr"
, servicesDescription = "Participate in focused one-hour sessions wherein your own recorded debates are analyzed for constructive feedback and advice to help you improve as a debater. You may also participate in mock debates, staged debates, and other exercises to help you get more comfortable with debate and verbal confrontation."
}
2024-11-11 04:07:33 -06:00
, { logoImage = "services/nutrition.png"
2024-11-11 03:57:54 -06:00
, logoDescription = "nutrition logo"
, servicesLink = "https://the-nutrivore.social/"
, servicesTitle = "NUTRITION SCIENCE"
, servicesRate = "$40/hr"
2024-11-11 18:57:51 -06:00
, servicesDescription = "Participate in a one-hour Q&A session specifically to inquire about nutrition science. Ask questions about research design, methodology, epistemology, and study interpretation. Also, by participating you will also gain access to nutrition science interpretation cheat-sheets that will streamline and simplify the research appraisal process."
2024-11-11 03:57:54 -06:00
}
2024-11-11 04:07:33 -06:00
, { logoImage = "services/nixos.png"
2024-11-11 18:57:51 -06:00
, logoDescription = "nixos logo"
2024-11-11 03:57:54 -06:00
, servicesLink = "https://the-nutrivore.social/"
, servicesTitle = "CUSTOM NIX BUILDS"
, servicesRate = "$40/hr"
, servicesDescription = "NixOS has become popular in my community, with many people choosing to explore it over Windows, MacOS, and other Linux distributions. Naturally, as a consequence of this, I receive numerous requests for help regarding the Nix programming language and NixOS system configuration. So, to fast-track newcomers and to make my life a little bit easier for both of us, I'm offering to build custom NixOS configurations for interested clients."
}
]