module Pages.Services exposing (Model, Msg, page) import Config.Colour as T exposing (..) import Config.Format as O exposing (..) import Config.Identity as I exposing (..) import Effect exposing (Effect) import Element exposing (..) import Element.Font as F import Html.Attributes as H exposing (style) import Layouts import Page exposing (Page) import Route exposing (Route) import Shared import View exposing (View) 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 = { title = servicesName , attributes = [] , element = servicesContainer } servicesContainer : Element msg servicesContainer = topLevelContainer servicesList servicesList : Element msg servicesList = column pageList services type alias MakeRowInput = { logoImage : String , logoDescription : String , servicesLink : String , servicesTitle : String , servicesRate : String , servicesDescription : String } makeRow : MakeRowInput -> Element msg makeRow makeRowInput = let servicesImageFormat : List (Attribute msg) servicesImageFormat = [ width <| px 100 , alignTop ] in row [ imageSpacer ] [ image servicesImageFormat { src = makeRowInput.logoImage , description = makeRowInput.logoDescription } , column paragraphColumnFormat [ row [ spacing 8 ] [ newTabLink highlightedTitleFormat { url = makeRowInput.servicesLink , label = transitionHighlightedLinkHover <| text makeRowInput.servicesTitle } , paragraph [ F.color colourTheme.nonHighlightedText ] [ text makeRowInput.servicesRate ] ] , paragraph paragraphFormat [ text makeRowInput.servicesDescription ] ] ] services : List (Element msg) services = List.map makeRow [ { logoImage = "services/debate.png" , 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." } , { logoImage = "services/analysis.png" , 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." } , { logoImage = "services/nutrition.png" , logoDescription = "nutrition logo" , servicesLink = "https://the-nutrivore.social/" , servicesTitle = "NUTRITION SCIENCE" , servicesRate = "$40/hr" , 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." } , { logoImage = "services/nixos.png" , logoDescription = "nixos logo" , 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." } ]