feat: lots of work

This commit is contained in:
Nick 2024-12-12 01:36:31 -06:00
parent d0617b7a90
commit 49dabb8496
17 changed files with 903 additions and 69 deletions

0
frontend/src/Config/Data/Language.elm Normal file → Executable file
View file

View file

@ -0,0 +1,210 @@
module Config.Helpers.ArticleFormat exposing (..)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.CardFormat exposing (..)
import Config.Helpers.Format exposing (..)
import Config.Helpers.ToolTip exposing (..)
import Config.Pages.Headers.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Font as F
import Html
import Html.Attributes as H exposing (style)
bodyFormat : List (Attribute msg)
bodyFormat =
[ spacing 10
, paddingEach
{ top = 10
, bottom = 0
, left = 0
, right = 0
}
]
chunkMaker : List String -> Element msg
chunkMaker items =
column [ alignLeft, spacing 10 ] <|
List.map
(\item ->
paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, F.alignLeft
, width fill
]
[ text item ]
)
items
titleMaker : String -> Element msg
titleMaker title =
el
[ paragraphSpacing
, paragraphFontSize
, F.bold
, F.center
, width fill
, F.color colourTheme.textLightOrange
, F.size 18
, paddingEach
{ top = 10
, bottom = 10
, left = 0
, right = 0
}
]
<|
text title
highlightedBlockMaker : String -> List String -> Element msg
highlightedBlockMaker title items =
column
[ paddingEach
{ top = 15
, bottom = 15
, left = 20
, right = 20
}
, B.color colourTheme.backgroundLightGrey
, D.rounded 10
, width fill
, spacing 8
]
[ paragraph
[ F.bold
, F.size 18
]
[ text title ]
, column
[]
<|
List.indexedMap
(\index item ->
row
[ spacing 10
, width fill
]
[ column
[ width <| px 30
, alignTop
]
[ el [ alignRight, F.size 18 ] <| text " " ]
, column
[ spacing 10
, width fill
, alignRight
]
[ paragraph
[ width fill
, F.size 16
, F.alignLeft
]
[ row
[ alignLeft ]
[ paragraph [ alignLeft ]
[ text item
]
]
]
]
]
)
items
]
textEntry : String -> Element msg
textEntry item =
el
[ alignLeft ]
<|
paragraph [] [ text item ]
bulletPointMaker : List String -> Element msg
bulletPointMaker items =
column [ spacing 10 ] <|
List.indexedMap
(\index item ->
row
[ spacing 10
, width fill
]
[ column
[ width <| px 30
, alignTop
]
[ el [ alignRight, F.size 18 ] <| text " " ]
, column
[ spacing 10
, width fill
, alignRight
]
[ paragraph
[ width fill
, F.size 16
, F.alignLeft
]
[ row
[ alignLeft ]
[ paragraph [ alignLeft ]
[ text item
]
]
]
]
]
)
items
numberMaker : List String -> Element msg
numberMaker items =
column [ spacing 10 ] <|
List.indexedMap
(\index item ->
row
[ spacing 10
, width fill
]
[ column
[ width <| px 30
, alignTop
]
[ el [ alignRight ] <| text (String.fromInt (index + 1) ++ ". ") ]
, column
[ spacing 10
, width fill
, alignRight
]
[ paragraph
[ width fill
, F.size 16
, F.alignLeft
]
[ row
[ alignLeft ]
[ paragraph [ alignLeft ]
[ text item
]
]
]
]
]
)
items

View file

@ -18,8 +18,53 @@ servicesDebateAnalysis =
, serviceRate = "$80/hr"
, serviceDescription =
[ { point = "Have your own debates analyzed for constructive feedback." }
, { point = "Receive advice to improve as a debater." }
, { point = "Participate in mock debates, staged debates, and other exercises." }
, { point = "Receive advice to improve your debate and public speaking skills." }
, { point = "Gain valuable insights that help you become a stronger reasoner." }
, { point = "Gain comfort with debate and verbal confrontation." }
]
, serviceArticle =
{ articleTitles =
{ title1 = "Benefits"
, title2 = "Requirements"
, title3 = ""
, title4 = ""
, title5 = ""
, title6 = ""
, title7 = ""
, title8 = ""
, title9 = ""
, title10 = ""
}
, articleParagraph =
[ "The Debate Analysis services offers personalized feedback to help you improve your debate skills. I work with clients by reviewing their pre-recorded debates, providing detailed critiques, and offering practical advice tailored to their style. Through this process, you'll gain valuable insights into areas of improvement, from your argument structure to your delivery and confidence."
]
, articleListEntries =
{ list1 =
[ "Have your own debates analyzed for constructive feedback. This allows you to receive targeted guidance on how to improve your debating technique and strategy."
, "Receive advice to improve as a debater. This service provides personalized recommendations to help you develop and refine your debating abilities."
, "Gain comfort with debate and verbal confrontation. The service aims to help you become more confident and adept at handling the challenges of public debate."
]
, list2 =
[ "Your debate recording must be submitted at least three days prior to the session."
, "Your debate recording must not exceed one hour in length unless otherwise agreed to."
, "Your debate recording must be in either video or audio format, as text debates are ineligible."
]
, list3 =
[]
, list4 =
[]
, list5 =
[]
, list6 =
[]
, list7 =
[]
, list8 =
[]
, list9 =
[]
, list10 =
[]
}
}
}

View file

@ -0,0 +1,67 @@
module Config.Pages.Services.Services.DebateCoaching exposing (..)
import Config.Helpers.Converters exposing (formatName)
import Config.Pages.Services.Types exposing (..)
import Route.Path as Path
servicesDebateCoaching : Service
servicesDebateCoaching =
let
name : String
name =
"Debate Coaching"
in
{ serviceImage = formatName name
, serviceLink = Path.toString Path.Services_Coaching
, serviceName = name
, serviceRate = "$60/hr"
, serviceDescription =
[ { point = "Participate in a structured course with five one-hour modules." }
, { point = "Learn critical thinking, debate strategy, formal logic, and more" }
, { point = "Receive personalized and generalizable advice." }
, { point = "Improve debate understanding and performance." }
]
, serviceArticle =
{ articleTitles =
{ title1 = "What You Get"
, title2 = "What We Need"
, title3 = "Module 1"
, title4 = "Module 2"
, title5 = "Module 3"
, title6 = "Module 4"
, title7 = "Module 5"
, title8 = ""
, title9 = ""
, title10 = ""
}
, articleParagraph =
[ "This service is designed to help you "
]
, articleListEntries =
{ list1 =
[ "A five-module course covering critical thinking, debate strategy, and propositional logic, designed to strengthen your debating skills."
, "Personalized feedback and guidance to boost your strategic thinking, verbal comfort, and overall debate effectiveness."
, "Optional mock debates and staged confrontations, helping you gain experience and confidence in real-world debates."
]
, list2 =
[""]
, list3 =
["Learn about the most common logical fallacies.", ""]
, list4 =
[]
, list5 =
[]
, list6 =
[]
, list7 =
[]
, list8 =
[]
, list9 =
[]
, list10 =
[]
}
}
}

View file

@ -1,25 +0,0 @@
module Config.Pages.Services.Services.DebateTutoring exposing (..)
import Config.Helpers.Converters exposing (formatName)
import Config.Pages.Services.Types exposing (..)
import Route.Path as Path
servicesDebateTutoring : Service
servicesDebateTutoring =
let
name : String
name =
"Debate Coaching"
in
{ serviceImage = formatName name
, serviceLink = Path.toString Path.Services_Coaching
, serviceName = name
, serviceRate = "$60/hr"
, serviceDescription =
[ { point = "Participate in a structured course with five one-hour modules." }
, { point = "Learn critical thinking, debate strategy, formal logic, and more" }
, { point = "Receive personalized and generalizable advice." }
, { point = "Improve debate understanding and performance." }
]
}

View file

@ -1,10 +1,11 @@
module Config.Pages.Services.Services.ElmBuilds exposing (..)
import Element exposing (..)
import Config.Pages.Services.Types exposing (..)
import Config.Helpers.Converters exposing (formatName)
import Config.Pages.Services.Types exposing (..)
import Element exposing (..)
import Route.Path as Path
servicesElmBuilds : Service
servicesElmBuilds =
let
@ -22,4 +23,44 @@ servicesElmBuilds =
, { point = "Help with integration and server integration." }
, { point = "Receive unlimited revisions before finalization." }
]
, serviceArticle =
{ articleTitles =
{ title1 = "What You Get"
, title2 = "What We Need"
, title3 = ""
, title4 = ""
, title5 = ""
, title6 = ""
, title7 = ""
, title8 = ""
, title9 = ""
, title10 = ""
}
, articleParagraph =
[]
, articleListEntries =
{ list1 =
[ ""
]
, list2 =
[ ""
]
, list3 =
[]
, list4 =
[]
, list5 =
[]
, list6 =
[]
, list7 =
[]
, list8 =
[]
, list9 =
[]
, list10 =
[]
}
}
}

View file

@ -1,9 +1,10 @@
module Config.Pages.Services.Services.NixBuilds exposing (..)
import Config.Pages.Services.Types exposing (..)
import Config.Helpers.Converters exposing (formatName)
import Config.Pages.Services.Types exposing (..)
import Route.Path as Path
servicesNixBuilds : Service
servicesNixBuilds =
let
@ -21,4 +22,44 @@ servicesNixBuilds =
, { point = "Assistance with the Nix programming language." }
, { point = "Receive unlimited revisions before finalization." }
]
, serviceArticle =
{ articleTitles =
{ title1 = "What You Get"
, title2 = "What We Need"
, title3 = ""
, title4 = ""
, title5 = ""
, title6 = ""
, title7 = ""
, title8 = ""
, title9 = ""
, title10 = ""
}
, articleParagraph =
[]
, articleListEntries =
{ list1 =
[ ""
]
, list2 =
[ ""
]
, list3 =
[]
, list4 =
[]
, list5 =
[]
, list6 =
[]
, list7 =
[]
, list8 =
[]
, list9 =
[]
, list10 =
[]
}
}
}

View file

@ -22,4 +22,44 @@ servicesNutritionScience =
, { point = "Gain access to nutrition science interpretation cheat-sheets." }
, { point = "Simplify and streamline the research appraisal process." }
]
, serviceArticle =
{ articleTitles =
{ title1 = "What You Get"
, title2 = "What We Need"
, title3 = ""
, title4 = ""
, title5 = ""
, title6 = ""
, title7 = ""
, title8 = ""
, title9 = ""
, title10 = ""
}
, articleParagraph =
[]
, articleListEntries =
{ list1 =
[ ""
]
, list2 =
[ ""
]
, list3 =
[]
, list4 =
[]
, list5 =
[]
, list6 =
[]
, list7 =
[]
, list8 =
[]
, list9 =
[]
, list10 =
[]
}
}
}

View file

@ -1,5 +1,7 @@
module Config.Pages.Services.Types exposing (..)
import Element as E exposing (..)
type alias Service =
{ serviceImage : String
@ -7,6 +9,57 @@ type alias Service =
, serviceName : String
, serviceRate : String
, serviceDescription : List Description
, serviceArticle : Article
}
type alias Article =
{ articleParagraph : List String
, articleTitles : Title
, articleListEntries : ArticleList
}
type alias Title =
{ title1 : String
, title2 : String
, title3 : String
, title4 : String
, title5 : String
, title6 : String
, title7 : String
, title8 : String
, title9 : String
, title10 : String
}
type alias ArticleList =
{ list1 : List String
, list2 : List String
, list3 : List String
, list4 : List String
, list5 : List String
, list6 : List String
, list7 : List String
, list8 : List String
, list9 : List String
, list10 : List String
}
type alias Bulletpoint =
{ entry : String
}
type alias Numbered =
{ entry : String
}
type alias Highlighted =
{ entry : String
}

View file

@ -549,6 +549,13 @@ nutriDex inner =
{ svgAttributes =
[ SvgAttr.viewBox "0 0 269 254"
, SvgAttr.fill "currentColor"
-- , SvgAttr.width "100%"
-- , SvgAttr.height "100%"
, SvgAttr.viewBox "0 0 269 254"
, SvgAttr.version "1.1"
, SvgAttr.xmlSpace "preserve"
, SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"
]
, svg =
[ Svg.g
@ -559,7 +566,9 @@ nutriDex inner =
]
[ path
[ SvgAttr.d "M2438.06,573.79L2421.04,607.88"
, SvgAttr.fill "currentColor"
, SvgAttr.stroke "currentColor"
, SvgAttr.fill "none"
, SvgAttr.style "stroke-width:26.21px;"
]
[]
]
@ -568,7 +577,9 @@ nutriDex inner =
]
[ path
[ SvgAttr.d "M2384.94,593.791L2428.07,593.791"
, SvgAttr.fill "currentColor"
, SvgAttr.fill "none"
, SvgAttr.stroke "currentColor"
, SvgAttr.style "stroke-width:15.37px;"
]
[]
]
@ -577,7 +588,9 @@ nutriDex inner =
]
[ path
[ SvgAttr.d "M2439.01,851.153L2458.28,851.153"
, SvgAttr.fill "currentColor"
, SvgAttr.fill "none"
, SvgAttr.stroke "currentColor"
, SvgAttr.style "stroke-width:10.94px;"
]
[]
]
@ -595,7 +608,9 @@ nutriDex inner =
]
[ path
[ SvgAttr.d "M2344.65,603.881L2362.65,634.203L2338.66,673.941L2384.94,673.941"
, SvgAttr.fill "currentColor"
, SvgAttr.fill "none"
, SvgAttr.stroke "currentColor"
, SvgAttr.style "stroke-width:15.37px;"
]
[]
]
@ -604,8 +619,9 @@ nutriDex inner =
]
[ path
[ SvgAttr.d "M2423.66,877.745L2456.6,877.745"
, SvgAttr.style "none"
, SvgAttr.fill "currentColor"
, SvgAttr.fill "none"
, SvgAttr.stroke "currentColor"
, SvgAttr.style "stroke-width:10.94px;"
]
[]
]