mirror of
https://gitlab.com/upRootNutrition/website.git
synced 2025-08-10 04:14:38 -05:00
feat: v1 close
This commit is contained in:
parent
f9af0e1941
commit
d55f729540
40 changed files with 561 additions and 496 deletions
|
@ -2,10 +2,10 @@ module Config.Helpers.Articles.Article exposing (..)
|
|||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Types exposing (References)
|
||||
import Config.Helpers.Cardables.Helpers exposing (cardMaker)
|
||||
import Config.Helpers.Cardables.Types as C
|
||||
import Config.Helpers.Cards.Helpers exposing (cardMaker)
|
||||
import Config.Helpers.Cards.Types as C
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Headers.Header exposing (..)
|
||||
import Config.Helpers.Headers.Helpers exposing (..)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.Response
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
module Config.Helpers.Cardables.Helpers exposing (..)
|
||||
module Config.Helpers.Cards.Helpers exposing (..)
|
||||
|
||||
import Config.Data.Identity
|
||||
exposing
|
||||
( pageNames
|
||||
)
|
||||
import Config.Helpers.Cardables.Types as C exposing (..)
|
||||
import Config.Helpers.Cards.Types as C exposing (..)
|
||||
import Config.Helpers.Converters exposing (formatName)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
|
@ -12,6 +12,7 @@ import Config.Helpers.Format
|
|||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Response exposing (contentContainer)
|
||||
import Config.Pages.Debate.Arguments.Records.Template exposing (argument)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Glow
|
||||
|
@ -38,6 +39,45 @@ import Shared
|
|||
cardMaker : Device -> Cardable msg -> List (Element msg) -> Element msg
|
||||
cardMaker device cardable contents =
|
||||
let
|
||||
hasLink : Bool
|
||||
hasLink =
|
||||
case cardable of
|
||||
C.Contact _ ->
|
||||
False
|
||||
|
||||
C.Cuck c ->
|
||||
True
|
||||
|
||||
C.BlogArticle _ ->
|
||||
False
|
||||
|
||||
C.BlogCard _ ->
|
||||
True
|
||||
|
||||
C.Argument _ ->
|
||||
True
|
||||
|
||||
C.Gibberish _ ->
|
||||
True
|
||||
|
||||
C.Service _ ->
|
||||
True
|
||||
|
||||
C.Debate _ ->
|
||||
True
|
||||
|
||||
C.Donate _ ->
|
||||
True
|
||||
|
||||
C.Interview _ ->
|
||||
False
|
||||
|
||||
C.NutriDex _ ->
|
||||
False
|
||||
|
||||
C.ServicePage _ ->
|
||||
False
|
||||
|
||||
cardTitleMaker : String -> Element msg
|
||||
cardTitleMaker title =
|
||||
el
|
||||
|
@ -109,36 +149,40 @@ cardMaker device cardable contents =
|
|||
cardInner : String -> List (Element msg) -> Element msg
|
||||
cardInner title elements =
|
||||
column
|
||||
[ width fill ]
|
||||
[ width fill
|
||||
]
|
||||
[ cardTitleMaker title
|
||||
, cardStuff <|
|
||||
row
|
||||
[ width fill ]
|
||||
[ width fill
|
||||
, height fill
|
||||
]
|
||||
elements
|
||||
]
|
||||
|
||||
cardOuter : Element msg -> Element msg
|
||||
cardOuter elements =
|
||||
el
|
||||
[ width (fill |> minimum 100)
|
||||
, width (fill |> maximum 875)
|
||||
, padding 10
|
||||
, centerX
|
||||
]
|
||||
<|
|
||||
contentContainer <|
|
||||
el
|
||||
[ E.width fill
|
||||
, D.width 5
|
||||
, D.color colourTheme.backgroundDarkGrey
|
||||
, D.rounded 32
|
||||
, glowDeepDarkGrey
|
||||
, mouseOver
|
||||
[ D.color colourTheme.textDarkOrange
|
||||
, B.color colourTheme.textDarkOrange
|
||||
, glowDeepDarkOrange
|
||||
]
|
||||
, transitionStyleSlow
|
||||
]
|
||||
([ E.width fill
|
||||
, D.width 5
|
||||
, D.color colourTheme.backgroundDarkGrey
|
||||
, D.rounded 32
|
||||
, glowDeepDarkGrey
|
||||
]
|
||||
++ (if hasLink then
|
||||
[ mouseOver
|
||||
[ D.color colourTheme.textDarkOrange
|
||||
, B.color colourTheme.textDarkOrange
|
||||
, glowDeepDarkOrange
|
||||
]
|
||||
, transitionStyleSlow
|
||||
]
|
||||
|
||||
else
|
||||
[]
|
||||
)
|
||||
)
|
||||
elements
|
||||
|
||||
cardWithImageWithLink : Bool -> String -> String -> String -> List (Element msg) -> Element msg
|
||||
|
@ -193,19 +237,21 @@ cardMaker device cardable contents =
|
|||
in
|
||||
case cardable of
|
||||
C.Contact contact ->
|
||||
el [] <| cardTitleMaker contact.contactName
|
||||
cardWithNoImage
|
||||
(String.toUpper contact.contactName)
|
||||
contents
|
||||
|
||||
C.Cuck cuck ->
|
||||
cardWithImageWithLink
|
||||
cuck.isNewTabLink
|
||||
cuck.cuckName
|
||||
("/cucks/" ++ cuck.cuckImage ++ ".png")
|
||||
("/cucks/" ++ cuck.cuckImage ++ "/" ++ cuck.cuckImage ++ ".png")
|
||||
cuck.cuckSocial
|
||||
contents
|
||||
|
||||
C.BlogArticle blogArticle ->
|
||||
cardWithNoImage
|
||||
blogArticle.articleName
|
||||
(String.toUpper blogArticle.articleName)
|
||||
contents
|
||||
|
||||
C.BlogCard blogArticle ->
|
||||
|
@ -217,10 +263,9 @@ cardMaker device cardable contents =
|
|||
contents
|
||||
|
||||
C.Argument argument ->
|
||||
cardWithImageWithLink
|
||||
cardWithNoImageWithLink
|
||||
argument.isNewTabLink
|
||||
argument.argumentTitle
|
||||
("/arguments/" ++ argument.argumentImage ++ ".png")
|
||||
argument.proofLink
|
||||
contents
|
||||
|
||||
|
@ -264,7 +309,12 @@ cardMaker device cardable contents =
|
|||
|
||||
C.NutriDex nutriDex ->
|
||||
cardWithNoImage
|
||||
nutriDex.nutriDexTitle
|
||||
(String.toUpper nutriDex.nutriDexTitle)
|
||||
contents
|
||||
|
||||
C.ServicePage service ->
|
||||
cardWithNoImage
|
||||
(String.toUpper service.serviceName)
|
||||
contents
|
||||
|
||||
|
||||
|
@ -280,8 +330,7 @@ cardContentMaker content =
|
|||
cardStuff : Element msg -> Element msg
|
||||
cardStuff content =
|
||||
el
|
||||
[ E.height fill
|
||||
, E.width fill
|
||||
[ E.width fill
|
||||
, centerX
|
||||
, B.color colourTheme.backgroundDarkGrey
|
||||
, padding 10
|
||||
|
@ -303,5 +352,6 @@ cardStuff content =
|
|||
}
|
||||
, spacing 8
|
||||
, width fill
|
||||
, height fill
|
||||
]
|
||||
content
|
|
@ -1,4 +1,4 @@
|
|||
module Config.Helpers.Cardables.Types exposing (..)
|
||||
module Config.Helpers.Cards.Types exposing (..)
|
||||
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (Contact)
|
||||
|
@ -24,3 +24,4 @@ type Cardable msg
|
|||
| Donate Donate
|
||||
| Interview Interview
|
||||
| NutriDex NutriDex
|
||||
| ServicePage (Service msg)
|
|
@ -47,7 +47,6 @@ divider =
|
|||
el
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
, centerX
|
||||
, width (fill |> maximum 600)
|
||||
, D.widthEach
|
||||
|
@ -58,7 +57,7 @@ divider =
|
|||
}
|
||||
, D.color colourTheme.textLightOrange
|
||||
, paddingEach
|
||||
{ top = 20
|
||||
{ top = 10
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
module Config.Helpers.Headers.Header exposing (..)
|
||||
|
||||
import Config.Helpers.Cardables.Helpers exposing (cardMaker)
|
||||
import Config.Helpers.Cardables.Types as C
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Pages.Contact.Types exposing (Contact)
|
||||
import Element as E
|
||||
exposing
|
||||
( Device
|
||||
, Element
|
||||
, column
|
||||
, row
|
||||
, text
|
||||
)
|
||||
import Shared exposing (..)
|
||||
|
||||
|
||||
|
||||
-- headerMaker : Device -> Header -> Element msg
|
||||
-- headerMaker device header =
|
||||
-- cardMaker device header.headerTitle (contentList header) { description = "", src = "" } ""
|
||||
|
||||
|
||||
contentList : Header -> List (Element msg)
|
||||
contentList header =
|
||||
[ text header.headerBody ]
|
||||
|
||||
|
||||
servicesHeader : Header
|
||||
servicesHeader =
|
||||
let
|
||||
name =
|
||||
"Services"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "Bundle any of the services below to receive a $10 discount per hour. For example, two Debate Analysis sessions would cost $140 total, instead of $80/hr. All prices are in CAD."
|
||||
}
|
152
frontend/src/Config/Helpers/Headers/Helpers.elm
Executable file
152
frontend/src/Config/Helpers/Headers/Helpers.elm
Executable file
|
@ -0,0 +1,152 @@
|
|||
module Config.Helpers.Headers.Helpers exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (formatName)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( divider
|
||||
, headerFontSizeBig
|
||||
, headerFontSizeMedium
|
||||
, headerFontSizeSmall
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Types as C exposing (..)
|
||||
import Config.Helpers.Response exposing (contentContainer)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Glow
|
||||
exposing
|
||||
( glowDeepDarkGrey
|
||||
, glowDeepDarkOrange
|
||||
)
|
||||
import Config.Style.Icons.Icons exposing (construction)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverCircleButtonDarkOrange
|
||||
, transitionStyleMedium
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html.Attributes as H
|
||||
import Route.Path as Path exposing (..)
|
||||
import Shared exposing (..)
|
||||
|
||||
|
||||
headerMaker : Headerable -> Element msg
|
||||
headerMaker headerable =
|
||||
let
|
||||
headerTitleMaker : String -> Element msg
|
||||
headerTitleMaker title =
|
||||
el
|
||||
[ headerFontSizeBig
|
||||
, F.bold
|
||||
, width fill
|
||||
, F.center
|
||||
]
|
||||
<|
|
||||
paragraph [] [ text title ]
|
||||
|
||||
headerHelper : String -> String -> Element msg
|
||||
headerHelper title body =
|
||||
el
|
||||
[ width (fill |> minimum 100)
|
||||
, width (fill |> maximum 725)
|
||||
, padding 10
|
||||
, centerX
|
||||
]
|
||||
<|
|
||||
column
|
||||
[ width fill
|
||||
]
|
||||
[ headerTitleMaker title
|
||||
, divider
|
||||
, el
|
||||
[ E.height fill
|
||||
, E.width fill
|
||||
, centerX
|
||||
, spacing 8
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
<|
|
||||
el
|
||||
[ paddingEach
|
||||
{ top = 0
|
||||
, bottom = 0
|
||||
, left = 15
|
||||
, right = 15
|
||||
}
|
||||
, spacing 8
|
||||
, width fill
|
||||
]
|
||||
<|
|
||||
paragraph
|
||||
[ width fill
|
||||
, headerFontSizeSmall
|
||||
, F.center
|
||||
]
|
||||
<|
|
||||
[ text body ]
|
||||
]
|
||||
in
|
||||
case headerable of
|
||||
C.Arguments argument ->
|
||||
headerHelper argument.headerTitle argument.headerBody
|
||||
|
||||
C.BlogPage blog ->
|
||||
headerHelper blog.headerTitle blog.headerBody
|
||||
|
||||
C.CuckList cuck ->
|
||||
headerHelper cuck.headerTitle cuck.headerBody
|
||||
|
||||
C.Debate debate ->
|
||||
headerHelper debate.headerTitle debate.headerBody
|
||||
|
||||
C.Donate donate ->
|
||||
headerHelper donate.headerTitle donate.headerBody
|
||||
|
||||
C.Gibberish gibberish ->
|
||||
headerHelper gibberish.headerTitle gibberish.headerBody
|
||||
|
||||
C.Services service ->
|
||||
headerHelper service.headerTitle service.headerBody
|
||||
|
||||
C.Interviews interview ->
|
||||
headerHelper interview.headerTitle interview.headerBody
|
||||
|
||||
|
||||
cardContentMaker : List (Element msg) -> Element msg
|
||||
cardContentMaker content =
|
||||
column
|
||||
[ spacing 8
|
||||
, width fill
|
||||
]
|
||||
content
|
||||
|
||||
|
||||
cardStuff : Element msg -> Element msg
|
||||
cardStuff content =
|
||||
el
|
||||
[ E.height fill
|
||||
, E.width fill
|
||||
, centerX
|
||||
, spacing 8
|
||||
]
|
||||
<|
|
||||
el
|
||||
[ paddingEach
|
||||
{ top = 0
|
||||
, bottom = 0
|
||||
, left = 15
|
||||
, right = 15
|
||||
}
|
||||
, spacing 8
|
||||
, width fill
|
||||
]
|
||||
content
|
91
frontend/src/Config/Helpers/Headers/Records.elm
Normal file
91
frontend/src/Config/Helpers/Headers/Records.elm
Normal file
|
@ -0,0 +1,91 @@
|
|||
module Config.Helpers.Headers.Records exposing (..)
|
||||
|
||||
import Config.Helpers.Headers.Types exposing (..)
|
||||
|
||||
|
||||
argumentHeader : Header
|
||||
argumentHeader =
|
||||
let
|
||||
name =
|
||||
"Arguments"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "This page features arguments that I hold to be sound. I'm open to hearing all challenges, as I am ready to engage with and defend any argument listed."
|
||||
}
|
||||
|
||||
|
||||
blogHeader : Header
|
||||
blogHeader =
|
||||
let
|
||||
name =
|
||||
"Blog"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "This page features blog articles written by me, along with contributions from guest authors, covering topics primarily related to nutrition science, health science, and article."
|
||||
}
|
||||
|
||||
|
||||
cuckListHeader : Header
|
||||
cuckListHeader =
|
||||
let
|
||||
name =
|
||||
"Cucklist"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "This page features a list of morons who wrote cheques with their mouths that their asses couldn't cash. Each person included in this list has dodged debating me."
|
||||
}
|
||||
|
||||
|
||||
debateHeader : Header
|
||||
debateHeader =
|
||||
let
|
||||
name =
|
||||
"Debate"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "Here you will find links to various pages relevant to debate, such as formal arguments, a list of debate-dodging cucks, and an inventory of nonsensical terminology."
|
||||
}
|
||||
|
||||
|
||||
donateHeader : Header
|
||||
donateHeader =
|
||||
let
|
||||
name =
|
||||
"Donate"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "My site, research, and content all cost time and money to run. If you find my contributions valuable, please consider supporting my work on any of the platforms listed below!"
|
||||
}
|
||||
|
||||
|
||||
gibberishHeader : Header
|
||||
gibberishHeader =
|
||||
let
|
||||
name =
|
||||
"Gibberish"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "This page is specifically for terms and ostensible concepts that I think are either nonsensical or so practically useless that its intelligiblity is irrelevant."
|
||||
}
|
||||
|
||||
|
||||
servicesHeader : Header
|
||||
servicesHeader =
|
||||
let
|
||||
name =
|
||||
"Services"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "Bundle any of the services below to receive a $10 discount per hour. For example, two Debate Analysis sessions would cost $140 total, instead of $80/hr. All prices are in CAD."
|
||||
}
|
||||
|
||||
|
||||
interviewHeader : Header
|
||||
interviewHeader =
|
||||
let
|
||||
name =
|
||||
"Interviews"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "This page showcases various podcasts and shows I've been on. If you’d like to have me as a guest on your podcast, feel free to reach out—I’d love to share my perspectives with your audience!"
|
||||
}
|
|
@ -1,6 +1,17 @@
|
|||
module Config.Helpers.Headers.Types exposing (..)
|
||||
|
||||
|
||||
type Headerable
|
||||
= Arguments Header
|
||||
| BlogPage Header
|
||||
| CuckList Header
|
||||
| Debate Header
|
||||
| Donate Header
|
||||
| Gibberish Header
|
||||
| Services Header
|
||||
| Interviews Header
|
||||
|
||||
|
||||
type alias Header =
|
||||
{ headerTitle : String
|
||||
, headerBody : String
|
||||
|
|
|
@ -38,3 +38,13 @@ pageListFormat =
|
|||
, height fill
|
||||
, scrollbarY
|
||||
]
|
||||
|
||||
|
||||
contentContainer : Element msg -> Element msg
|
||||
contentContainer =
|
||||
el
|
||||
[ width (fill |> minimum 100)
|
||||
, width (fill |> maximum 875)
|
||||
, padding 10
|
||||
, centerX
|
||||
]
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
module Config.Pages.Contact.Types exposing (..)
|
||||
|
||||
|
||||
type alias Contact =
|
||||
{ contactName : String
|
||||
, contactImage : String
|
||||
, contactLink : String
|
||||
, isNewTabLink : Bool
|
||||
, contactLinkLabel : String
|
||||
, contactEntry : List Method
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,4 +10,8 @@ type alias Method =
|
|||
{ contactInstructions : String
|
||||
}
|
||||
|
||||
|
||||
|
||||
contactTitle : Contact
|
||||
contactTitle =
|
||||
{ contactName = "Contact"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue