feat: so very close

This commit is contained in:
Nick 2024-12-27 23:24:35 -06:00
parent 185d922ffb
commit 071c823c41
20 changed files with 293 additions and 570 deletions

View file

@ -26,7 +26,7 @@ import Element.Font as F
detailSpacing : Attribute msg detailSpacing : Attribute msg
detailSpacing = detailSpacing =
spacing 3 spacing 5
detailFormat : (List (Attribute msg) -> List (Element msg) -> Element msg) -> List (Element msg) -> Element msg detailFormat : (List (Attribute msg) -> List (Element msg) -> Element msg) -> List (Element msg) -> Element msg
@ -123,24 +123,29 @@ detailBodyMaker colour item =
listMaker : (a -> Element msg) -> List a -> Element msg listMaker : (a -> Element msg) -> List a -> Element msg
listMaker makeItem itemInfo = listMaker makeItem itemInfo =
column detailFormat column <|
[ spacing 5
, width fill
]
<|
List.map2 (\x y -> makeItem x) List.map2 (\x y -> makeItem x)
itemInfo itemInfo
(List.range 1 (List.length itemInfo)) (List.range 1 (List.length itemInfo))
listItem : String -> Attribute msg -> Element msg listMaker2 : (a -> Int -> Element msg) -> List a -> Element msg
listItem item colour = listMaker2 makeItem itemInfo =
detailFormat column <|
List.map2
(\x y -> makeItem x y)
itemInfo
(List.range 1 (List.length itemInfo))
listItem : ThemeColor -> String -> Element msg
listItem colour item =
el el
[ paragraphFontSize [ paragraphFontSize
, F.bold , F.bold
, alignLeft , alignLeft
, width fill , width fill
, colour , F.color (getThemeColor colour)
] ]
<| <|
paragraph [ F.regular ] paragraph [ F.regular ]

View file

@ -15,6 +15,7 @@ import Config.Helpers.Format
) )
import Config.Helpers.ImageFolders as M exposing (..) import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Response exposing (contentContainer) import Config.Helpers.Response exposing (contentContainer)
import Config.Helpers.ServiceFormat exposing (divider)
import Config.Pages.Debate.Arguments.Records.Template exposing (argument) import Config.Pages.Debate.Arguments.Records.Template exposing (argument)
import Config.Style.Colour.Helpers exposing (colourTheme) import Config.Style.Colour.Helpers exposing (colourTheme)
import Config.Style.Glow import Config.Style.Glow
@ -36,7 +37,6 @@ import Element.Font as F
import Html.Attributes as H import Html.Attributes as H
import Route.Path as Path exposing (..) import Route.Path as Path exposing (..)
import Shared import Shared
import Config.Helpers.ServiceFormat exposing (divider)
cardMaker : Device -> Cardable msg -> List (Element msg) -> Element msg cardMaker : Device -> Cardable msg -> List (Element msg) -> Element msg
@ -84,7 +84,7 @@ cardMaker device cardable contents =
cardTitleMaker : String -> Maybe String -> Element msg cardTitleMaker : String -> Maybe String -> Element msg
cardTitleMaker title maybeUrl = cardTitleMaker title maybeUrl =
el el
([ headerFontSizeMedium ([ headerFontSizeBig
, F.bold , F.bold
, F.color colourTheme.textLightGrey , F.color colourTheme.textLightGrey
, width fill , width fill

View file

@ -34,7 +34,7 @@ import Route.Path as Path exposing (..)
import Shared exposing (..) import Shared exposing (..)
headerMaker : Headerable -> Element msg headerMaker : Headerable msg -> Element msg
headerMaker headerable = headerMaker headerable =
let let
headerTitleMaker : String -> Element msg headerTitleMaker : String -> Element msg
@ -48,7 +48,7 @@ headerMaker headerable =
<| <|
paragraph [] [ text title ] paragraph [] [ text title ]
headerHelper : String -> String -> Element msg headerHelper : String -> List (Element msg) -> Element msg
headerHelper title body = headerHelper title body =
el el
[ width (fill |> minimum 100) [ width (fill |> minimum 100)
@ -92,7 +92,7 @@ headerMaker headerable =
, F.center , F.center
] ]
<| <|
[ text body ] body
] ]
in in
case headerable of case headerable of

View file

@ -1,113 +1,114 @@
module Config.Helpers.Headers.Records exposing (..) module Config.Helpers.Headers.Records exposing (..)
import Config.Helpers.Headers.Types exposing (..) import Config.Helpers.Headers.Types exposing (..)
import Element as E exposing (text)
argumentHeader : Header argumentHeader : Header msg
argumentHeader = argumentHeader =
let let
name = name =
"Arguments" "Arguments"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
blogHeader = blogHeader =
let let
name = name =
"Blog" "Blog"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
cuckListHeader = cuckListHeader =
let let
name = name =
"Cucklist" "Cucklist"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
debateHeader = debateHeader =
let let
name = name =
"Debate" "Debate"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
donateHeader = donateHeader =
let let
name = name =
"Donate" "Donate"
in in
{ headerTitle = String.toUpper name { 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!" , headerBody = [ text "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 : Header msg
gibberishHeader = gibberishHeader =
let let
name = name =
"Gibberish" "Gibberish"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
servicesHeader = servicesHeader =
let let
name = name =
"Services" "Services"
in in
{ headerTitle = String.toUpper name { 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." , headerBody = [ text "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 : Header msg
interviewHeader = interviewHeader =
let let
name = name =
"Interviews" "Interviews"
in in
{ headerTitle = String.toUpper name { headerTitle = String.toUpper name
, headerBody = "This page showcases various podcasts and shows I've been on. If youd like to have me as a guest on your podcast, feel free to reach outId love to share my perspectives with your audience!" , headerBody = [ text "This page showcases various podcasts and shows I've been on. If youd like to have me as a guest on your podcast, feel free to reach out!" ]
} }
nutriDexHeader : Header nutriDexHeader : Header msg
nutriDexHeader = nutriDexHeader =
let let
name = name =
"The NutriDex" "The NutriDex"
in in
{ headerTitle = String.toUpper name { headerTitle = String.toUpper name
, headerBody = "" , headerBody = [ text "" ]
} }
contactHeader : Header contactHeader : Header msg
contactHeader = contactHeader =
let let
name = name =
"Contact" "Contact"
in in
{ headerTitle = String.toUpper name { headerTitle = String.toUpper name
, headerBody = "" , headerBody = [ text "" ]
} }

View file

@ -1,20 +1,22 @@
module Config.Helpers.Headers.Types exposing (..) module Config.Helpers.Headers.Types exposing (..)
import Element exposing (Element)
type Headerable
= Arguments Header
| BlogPage Header
| CuckList Header
| Debate Header
| Donate Header
| Gibberish Header
| Services Header
| Interviews Header
| NutriDex Header
| Contact Header
type alias Header = type Headerable msg
= Arguments (Header msg)
| BlogPage (Header msg)
| CuckList (Header msg)
| Debate (Header msg)
| Donate (Header msg)
| Gibberish (Header msg)
| Services (Header msg)
| Interviews (Header msg)
| NutriDex (Header msg)
| Contact (Header msg)
type alias Header msg =
{ headerTitle : String { headerTitle : String
, headerBody : String , headerBody : List (Element msg)
} }

View file

@ -1,6 +1,7 @@
module Config.Helpers.ServiceFormat exposing (..) module Config.Helpers.ServiceFormat exposing (..)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (detailSpacing)
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( headerFontSizeBig ( headerFontSizeBig
@ -38,7 +39,7 @@ chunkMaker : List (Element msg) -> Element msg
chunkMaker elements = chunkMaker elements =
paragraph paragraph
[ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , detailSpacing
, paragraphFontSize , paragraphFontSize
, F.alignLeft , F.alignLeft
, width fill , width fill

View file

@ -11,8 +11,6 @@ articleNagraGoodrich =
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = False , hasReferences = False
, hasTableOfContents = True , hasTableOfContents = True
, articleImage = "nagragoodrich" , articleImage = "nagragoodrich"
, articlePublished = "May 12, 2022" , articlePublished = "May 12, 2022"

View file

@ -46,124 +46,6 @@ syntaxTheme =
} }
-- Color attribute functions for main theme
textLightGrey : E.Attr decorative msg
textLightGrey =
F.color colourTheme.textLightGrey
textDarkGrey : E.Attr decorative msg
textDarkGrey =
F.color colourTheme.textDarkGrey
textLightOrange : E.Attr decorative msg
textLightOrange =
F.color colourTheme.textLightOrange
textDarkOrange : E.Attr decorative msg
textDarkOrange =
F.color colourTheme.textDarkOrange
textDeepDarkOrange : E.Attr decorative msg
textDeepDarkOrange =
F.color colourTheme.textDeepDarkOrange
backgroundLightGrey : E.Attr decorative msg
backgroundLightGrey =
F.color colourTheme.backgroundLightGrey
backgroundDarkGrey : E.Attr decorative msg
backgroundDarkGrey =
F.color colourTheme.backgroundDarkGrey
backgroundDeepDarkGrey : E.Attr decorative msg
backgroundDeepDarkGrey =
F.color colourTheme.backgroundDeepDarkGrey
backgroundSpreadsheet : E.Attr decorative msg
backgroundSpreadsheet =
F.color colourTheme.backgroundSpreadsheet
backgroundSpreadsheetDark : E.Attr decorative msg
backgroundSpreadsheetDark =
F.color colourTheme.backgroundSpreadsheetDark
shadow : E.Attr decorative msg
shadow =
F.color colourTheme.shadow
barGreen : E.Attr decorative msg
barGreen =
F.color colourTheme.barGreen
barRed : E.Attr decorative msg
barRed =
F.color colourTheme.barRed
debugColour : E.Attr decorative msg
debugColour =
F.color colourTheme.debugColour
transparent : E.Attr decorative msg
transparent =
F.color colourTheme.transparent
-- Color attribute functions for syntax theme
syntaxPunctuation : E.Attr decorative msg
syntaxPunctuation =
F.color syntaxTheme.punctuation
syntaxKey : E.Attr decorative msg
syntaxKey =
F.color syntaxTheme.key
syntaxString : E.Attr decorative msg
syntaxString =
F.color syntaxTheme.string
syntaxKeyword : E.Attr decorative msg
syntaxKeyword =
F.color syntaxTheme.keyword
syntaxOperator : E.Attr decorative msg
syntaxOperator =
F.color syntaxTheme.operator
syntaxBackground : E.Attr decorative msg
syntaxBackground =
F.color syntaxTheme.background
syntaxText : E.Attr decorative msg
syntaxText =
F.color syntaxTheme.text
type ThemeColor type ThemeColor
= TextLightGrey = TextLightGrey
| TextDarkGrey | TextDarkGrey

View file

@ -1,7 +1,7 @@
module Config.Style.Images exposing (..) module Config.Style.Images exposing (..)
import Config.Helpers.ImageFolders exposing (..) import Config.Helpers.ImageFolders exposing (..)
import Config.Style.Colour.Helpers exposing (colourTheme) import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme, getThemeColor)
import Element as E exposing (..) import Element as E exposing (..)
import Element.Background as B exposing (color) import Element.Background as B exposing (color)
import Element.Border as D import Element.Border as D
@ -15,9 +15,15 @@ import Element.Border as D
imageSquareMaker : Device -> String -> Bool -> String -> Element msg imageSquareMaker : Device -> String -> Bool -> String -> Element msg
imageSquareMaker device imagePath isLeft size = imageSquareMaker device imagePath isLeft size =
E.image E.image
[ D.rounded 10 [ D.rounded (roundingScaler size)
, clip , clip
, E.width <| imageSizer size , E.width <| imageSizer size
, E.height <| imageSizer size
, if imagePath == imagePathMaker Donate "cardano" then
B.color (rgb255 4 20 108)
else
B.color (getThemeColor BackgroundLightGrey)
] ]
{ src = imagePath { src = imagePath
, description = "" , description = ""
@ -27,20 +33,43 @@ imageSquareMaker device imagePath isLeft size =
imageSizer : String -> Length imageSizer : String -> Length
imageSizer size = imageSizer size =
case size of case size of
"Fatty" ->
px 80
"Big" ->
px 60
"Medium" ->
px 45
"Fill" -> "Fill" ->
fill fill
"Test" -> "Fatty" ->
px 145 px 128
"Big" ->
px 65
"Small" ->
px 28
_ -> _ ->
px 28 px 20
roundingScaler : String -> Int
roundingScaler size =
case size of
"Fill" ->
32
"Fatty" ->
32
-- 128px
"Big" ->
10
-- 65px
"Small" ->
10
-- 28px
_ ->
10
-- 20px default

View file

@ -195,7 +195,6 @@ articleMaker device article =
el el
[ alignLeft [ alignLeft
, alignTop , alignTop
, width fill
, paddingEach , paddingEach
{ top = 0 { top = 0
, right = 10 , right = 10
@ -204,20 +203,22 @@ articleMaker device article =
} }
] ]
<| <|
imageSquareMaker device (imagePathMaker M.BlogArticle article.articleImage) True size imageSquareMaker device (imagePathMaker M.BlogCard article.articleImage) True size
in in
detailFormat column detailFormat column
[ case ( device.class, device.orientation ) of [ detailFormat row
( Phone, Portrait ) -> [ case ( device.class, device.orientation ) of
none ( Phone, Portrait ) ->
none
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
none none
_ -> _ ->
image "Fill" image "Fatty"
, detailFormat column , detailFormat column
(articleRows article) (articleRows article ++ [])
]
, el [] <| , el [] <|
detailBodyMaker TextLightGrey (renderDeviceMarkdownNoToc (extractFirstWords article.articleBody)) detailBodyMaker TextLightGrey (renderDeviceMarkdownNoToc (extractFirstWords article.articleBody))
] ]
@ -253,14 +254,11 @@ articleRows article =
(wordCount article.articleBody) (wordCount article.articleBody)
) )
) )
] , infoRow "Sources"
++ (if referenceCount >= 2 then (if referenceCount >= 2 then
[ infoRow "Sources" text (String.fromInt referenceCount)
(text
(String.fromInt referenceCount)
)
]
else else
[] text "N/A"
) )
]

View file

@ -1,6 +1,7 @@
module Pages.Contact exposing (Model, Msg, page) module Pages.Contact exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (numberedListItem)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..) import Config.Helpers.Format exposing (..)
@ -21,7 +22,7 @@ import Config.Helpers.ServiceFormat
import Config.Helpers.ToolTip exposing (..) import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Contact.Types exposing (..) import Config.Pages.Contact.Types exposing (..)
import Config.Style.Colour.Helpers exposing (colourTheme) import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Transitions import Config.Style.Transitions
exposing exposing
( hoverFontDarkOrange ( hoverFontDarkOrange
@ -137,19 +138,19 @@ contactList device =
[ none ] [ none ]
, List.map , List.map
(\contact -> (\contact ->
cardMaker device (C.Contact contact) (contentList contact) cardMaker device (C.Contact contact) (contentList device contact)
) )
[ contactTitle ] [ contactTitle ]
] ]
contentList : Contact -> List (Element msg) contentList : Device -> Contact -> List (Element msg)
contentList contact = contentList device contact =
[ instructionBody ] [ instructionBody device ]
instructionBody : Element msg instructionBody : Device -> Element msg
instructionBody = instructionBody device =
column column
[ spacing 10 [ spacing 10
, paddingEach , paddingEach
@ -181,7 +182,7 @@ instructionBody =
[ width <| px 15 [ width <| px 15
, alignTop , alignTop
] ]
[ el [ alignRight ] <| text (String.fromInt (index + 1) ++ ". ") ] [ numberedListItem TextLightGrey (index + 1) ]
, column , column
[ spacing 10 [ spacing 10
, width fill , width fill
@ -196,7 +197,7 @@ instructionBody =
] ]
] ]
) )
termsAndConditions (termsAndConditions device)
, column [ centerX, width fill ] , column [ centerX, width fill ]
[ divider [ divider
, titleMaker (String.toUpper "Additional Clarifications") , titleMaker (String.toUpper "Additional Clarifications")
@ -246,8 +247,21 @@ rounding =
D.rounded 10 D.rounded 10
termsAndConditions : List (List (Element msg)) termsAndConditions : Device -> List (List (Element msg))
termsAndConditions = termsAndConditions device =
let
backGroundCase : Attr decorative msg
backGroundCase =
case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
( Tablet, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
_ ->
B.color colourTheme.backgroundLightGrey
in
[ [ row [] [ [ row []
[ paragraph [ alignLeft ] [ paragraph [ alignLeft ]
[ text "You will register an account with " [ text "You will register an account with "
@ -306,7 +320,7 @@ termsAndConditions =
, left = 20 , left = 20
, right = 20 , right = 20
} }
, B.color colourTheme.backgroundLightGrey , backGroundCase
, rounding , rounding
, width fill , width fill
, spacing 8 , spacing 8
@ -352,7 +366,7 @@ termsAndConditions =
, left = 20 , left = 20
, right = 20 , right = 20
} }
, B.color colourTheme.backgroundLightGrey , backGroundCase
, rounding , rounding
, width fill , width fill
, spacing 8 , spacing 8

View file

@ -11,6 +11,7 @@ import Config.Data.Identity
exposing exposing
( pageNames ( pageNames
) )
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyLink, detailBodyMaker, detailFormat, detailSpacing, detailTitleMaker)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Converters exposing (formatName) import Config.Helpers.Converters exposing (formatName)
@ -35,7 +36,7 @@ import Config.Pages.Debate.Arguments.List exposing (argumentList)
import Config.Pages.Debate.Cuckery.List exposing (cuckList) import Config.Pages.Debate.Cuckery.List exposing (cuckList)
import Config.Pages.Debate.Gibberish.List exposing (gibberishList) import Config.Pages.Debate.Gibberish.List exposing (gibberishList)
import Config.Pages.Debate.Types exposing (..) import Config.Pages.Debate.Types exposing (..)
import Config.Style.Colour.Helpers as T exposing (colourTheme) import Config.Style.Colour.Helpers as T exposing (ThemeColor(..), colourTheme)
import Config.Style.Glow import Config.Style.Glow
exposing exposing
( glowDeepDarkGrey ( glowDeepDarkGrey
@ -181,46 +182,45 @@ descriptionMaker device debate =
<| <|
imageSquareMaker device (imagePathMaker M.Debate debate.debateImage) True size imageSquareMaker device (imagePathMaker M.Debate debate.debateImage) True size
in in
chunkMaker detailFormat row
[ image "Fatty" [ case ( device.class, device.orientation ) of
, el [] <| ( Phone, Portrait ) ->
inferenceMaker debate none
, el [ width fill, height (px 0) ] none
, el ( Tablet, Portrait ) ->
[ F.color colourTheme.textLightGrey ] none
(text debate.debateDescription)
_ ->
image "Fatty"
, detailFormat column
[ inferenceMaker debate
, detailBodyMaker TextLightGrey
(text debate.debateDescription)
]
] ]
inferenceMaker : Debate -> Element msg inferenceMaker : Debate -> Element msg
inferenceMaker debate = inferenceMaker debate =
row [ spacing 5 ] detailFormat row
[ el [ detailTitleMaker TextLightOrange
[ F.color colourTheme.textLightOrange (case debate.debateTitle of
, paragraphSpacing "Arguments" ->
, F.bold "Inferences:"
, headerFontSizeSmall
]
<|
if debate.debateTitle == "Arguments" then
text "Inferences: "
else if debate.debateTitle == "Cucklist" then "Cucklist" ->
text "Cucks: " "Cucks:"
else if debate.debateTitle == "Gibberish" then "Gibberish" ->
text "Gibberations: " "Gibberations:"
else _ ->
text "" ""
, el )
[ F.color colourTheme.textLightGrey , detailBodyMaker TextLightGrey
, F.regular (text
, paragraphFontSize
]
<|
text
(String.fromInt debate.debateCount) (String.fromInt debate.debateCount)
)
] ]

View file

@ -44,8 +44,6 @@ import Config.Style.Colour.Helpers
exposing exposing
( ThemeColor(..) ( ThemeColor(..)
, colourTheme , colourTheme
, textLightGrey
, textLightOrange
) )
import Config.Style.Glow import Config.Style.Glow
exposing exposing
@ -211,7 +209,7 @@ contentList device argument =
none none
_ -> _ ->
image "Fatty" image "Big"
, el ([ height fill ] ++ bodyFormat TextLightGrey) <| text argument.propositionSummary , el ([ height fill ] ++ bodyFormat TextLightGrey) <| text argument.propositionSummary
] ]
, detailFormat row , detailFormat row

View file

@ -29,7 +29,11 @@ import Config.Pages.Debate.Cuckery.List
, cuckListNumber , cuckListNumber
) )
import Config.Pages.Debate.Cuckery.Types exposing (..) import Config.Pages.Debate.Cuckery.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme, textLightGrey) import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Images exposing (imageSquareMaker) import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions import Config.Style.Transitions
exposing exposing
@ -165,13 +169,13 @@ contentList device cuck =
[ detailFormat row [ detailFormat row
[ case ( device.class, device.orientation ) of [ case ( device.class, device.orientation ) of
( Phone, Portrait ) -> ( Phone, Portrait ) ->
image "Smallish" none
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
image "Smallish" none
_ -> _ ->
image "Test" image "Fatty"
, detailFormat column , detailFormat column
[ socialMaker cuck [ socialMaker cuck
, dodgeTitle cuck , dodgeTitle cuck

View file

@ -179,7 +179,15 @@ contentList device gibberish =
, paragraphFontSize , paragraphFontSize
, width fill , width fill
] ]
[ image "Big" [ case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
none
( Tablet, Portrait ) ->
none
_ ->
image "Big"
, text gibberish.gibberishDescription , text gibberish.gibberishDescription
] ]
, gibberishMakerBody gibberish , gibberishMakerBody gibberish

View file

@ -1,6 +1,7 @@
module Pages.Donate exposing (Model, Msg, page) module Pages.Donate exposing (Model, Msg, page)
import Config.Data.Identity as I exposing (..) import Config.Data.Identity as I exposing (..)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyMaker, detailFormat, detailFormatEl, detailTitleMaker, listItem, listMaker)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format import Config.Helpers.Format
@ -169,194 +170,55 @@ contentList device donate =
<| <|
imageSquareMaker device (imagePathMaker M.Donate donate.donateImage) True size imageSquareMaker device (imagePathMaker M.Donate donate.donateImage) True size
in in
[ row [ width fill ] [ detailFormat row
[ image "Small" [ image "Fatty"
, column [ width fill ] , detailFormat column
[ feeMaker donate [ feeMaker donate
, preferenceMaker donate , preferenceMaker donate
, tableMaker donate device
] ]
] ]
, tableMaker donate device , proConMaker donate
, proTitleMaker donate
, proMaker donate
, conTitleMaker donate
, conMaker donate
] ]
donateWidth =
width <| px 45
feeMaker : Donate -> Element msg feeMaker : Donate -> Element msg
feeMaker donate = feeMaker donate =
row detailFormat row
[ F.color colourTheme.textLightOrange [ detailTitleMaker TextLightOrange "Fees:"
, paragraphSpacing , detailBodyMaker TextLightGrey (text donate.donateFees)
, F.bold
, headerFontSizeSmall
, E.width fill
, spacing 5
]
[ column
[ alignTop
]
[ text "Fees:"
]
, el
[ E.width fill
, alignLeft
]
<|
el
[ F.regular
, paragraphFontSize
, F.color colourTheme.textLightGrey
]
<|
text donate.donateFees
] ]
proTitleMaker : Donate -> Element msg proConMaker : Donate -> Element msg
proTitleMaker donate = proConMaker donate =
row detailFormat column
[ F.color colourTheme.textLightOrange [ detailTitleMaker TextLightOrange "Pros:"
, paragraphSpacing , listMaker makePro donate.donatePros
, headerFontSizeSmall , detailTitleMaker TextLightOrange "Cons:"
, F.bold , listMaker makeCon donate.donateCons
] ]
[ el
[ alignTop
, width <| px 80
]
<|
text "Pros:"
]
conTitleMaker : Donate -> Element msg
conTitleMaker donate =
row
[ F.color colourTheme.textLightOrange
, paragraphSpacing
, headerFontSizeSmall
, F.bold
]
[ el
[ alignTop
, width <| px 80
]
<|
text "Cons:"
]
proMaker : Donate -> Element msg
proMaker donate =
column
[ spacing 8
, width fill
, paddingEach
{ top = 0
, right = 0
, bottom = 0
, left = 35
}
]
<|
List.map2 (\x y -> makePro x)
donate.donatePros
(List.range 1 (List.length donate.donatePros))
makePro : Pros -> Element msg makePro : Pros -> Element msg
makePro pro = makePro pro =
column listItem TextLightGrey pro.pro
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, F.bold
, alignLeft
, spacing 8
, width fill
]
[ paragraph [ F.regular ]
[ text (" " ++ pro.pro) ]
]
conMaker : Donate -> Element msg
conMaker donate =
column
[ spacing 8
, width fill
, paddingEach
{ top = 0
, right = 0
, bottom = 0
, left = 35
}
]
<|
List.map2 (\x y -> makeCon x)
donate.donateCons
(List.range 1 (List.length donate.donateCons))
makeCon : Cons -> Element msg makeCon : Cons -> Element msg
makeCon con = makeCon con =
column listItem TextLightGrey con.con
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, F.bold
, alignLeft
, spacing 8
, width fill
]
[ paragraph [ F.regular ] <|
[ text (" " ++ con.con)
]
]
preferenceMaker : Donate -> Element msg preferenceMaker : Donate -> Element msg
preferenceMaker donate = preferenceMaker donate =
row detailFormat row
[ width fill [ el
, height fill [ tooltip
] "This represents how strongly I prefer a given platform relative to other platforms."
[ column
[ E.alignTop
, E.alignLeft
]
[ paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, F.bold
, headerFontSizeSmall
, alignLeft
, E.width fill
]
[ el
[ tooltip
"This represents how strongly I prefer a given platform relative to other platforms."
]
(el
[ paddingEach
{ top = 0
, right = 10
, bottom = 0
, left = 0
}
, F.color colourTheme.textLightOrange
]
<|
text "Preference:"
)
]
] ]
<|
detailTitleMaker TextLightOrange "Preference:"
, barPadding , barPadding
[ barMaker getPreferenceTooltip donate.donatePreference ] [ barMaker getPreferenceTooltip donate.donatePreference ]
] ]
@ -404,48 +266,44 @@ getPreferenceTooltip num =
tableMaker : Donate -> Device -> Element msg tableMaker : Donate -> Device -> Element msg
tableMaker donate device = tableMaker donate device =
column el
[ centerX [ E.alignLeft
, E.width fill , E.width fill
, centerX
] ]
[ el <|
[ E.alignLeft E.table
, E.width fill ([ spacing 0
] , D.rounded 10
<| , D.width 2
E.table , D.color colourTheme.textDarkGrey
([ spacing 0 , clip
, D.rounded 10 ]
, D.width 2 ++ (case ( device.class, device.orientation ) of
, D.color colourTheme.textDarkGrey ( Phone, Portrait ) ->
, clip [ B.color colourTheme.backgroundSpreadsheet ]
]
++ (case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ]
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ] [ B.color colourTheme.backgroundSpreadsheet ]
_ -> _ ->
[] []
) )
) )
{ data = donate.donateFeatures { data = donate.donateFeatures
, columns = , columns =
List.map createColumn List.map createColumn
(case ( device.class, device.orientation ) of (case ( device.class, device.orientation ) of
( Phone, Portrait ) -> ( Phone, Portrait ) ->
mobileLabels mobileLabels
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
mobileLabels mobileLabels
_ -> _ ->
desktopLabels desktopLabels
) )
} }
]
desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b } desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b }
@ -497,7 +355,7 @@ createColumn { label, getter } =
, right = 0 , right = 0
} }
, D.color colourTheme.textDarkGrey , D.color colourTheme.textDarkGrey
, padding 8 , padding 5
, E.width fill , E.width fill
, F.center , F.center
] ]
@ -516,10 +374,13 @@ createColumn { label, getter } =
, right = 0 , right = 0
} }
, D.color colourTheme.textDarkGrey , D.color colourTheme.textDarkGrey
, padding 8 , padding 5
, E.height fill , E.height fill
] ]
[ row [ centerX ] [ row
[ centerX
, centerY
]
[ paragraph [] [ paragraph []
[ E.image [ E.image
[ E.width <| px 30 [ E.width <| px 30

View file

@ -184,13 +184,13 @@ contentList device interview =
imageMaker = imageMaker =
case ( device.class, device.orientation ) of case ( device.class, device.orientation ) of
( Phone, Portrait ) -> ( Phone, Portrait ) ->
image "Smallish" none
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
image "Smallish" none
_ -> _ ->
image "Test" image "Fatty"
in in
[ row [ row
[ paddingEach [ paddingEach
@ -214,10 +214,8 @@ contentList device interview =
appearanceMaker : Interview -> Element msg appearanceMaker : Interview -> Element msg
appearanceMaker interview = appearanceMaker interview =
column [ spacing 10, width fill ] <| detailFormat column
List.map2 (\x y -> makeAppearance x y) [ listMaker2 makeAppearance interview.interviewAppearances ]
interview.interviewAppearances
(List.range 1 (List.length interview.interviewAppearances))
makeAppearance : Appearance -> Int -> Element msg makeAppearance : Appearance -> Int -> Element msg
@ -229,7 +227,6 @@ makeAppearance appearanceEntry index =
, experienceMaker appearanceEntry , experienceMaker appearanceEntry
, dateMaker appearanceEntry , dateMaker appearanceEntry
, subjectMaker appearanceEntry , subjectMaker appearanceEntry
, subjectList appearanceEntry
] ]
] ]
@ -245,37 +242,39 @@ episodeMaker appearanceEntry =
experienceMaker : Appearance -> Element msg experienceMaker : Appearance -> Element msg
experienceMaker appearanceEntry = experienceMaker appearanceEntry =
row detailFormat row
[ width fill [ el
, height fill [ tooltip
, spacing 5 "This represents my confidence in the soundness of the argument."
]
[ column
[ E.alignTop
, E.alignLeft
]
[ paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, headerFontSizeSmall
, F.bold
]
[ el
[ tooltip
"This represents how pleasant it was to interact with the host(s)."
]
(el
[]
<|
text "Pleasantness:"
)
]
] ]
<|
detailTitleMaker TextLightGrey "Pleasantness:"
, barPadding , barPadding
[ barMaker getExperienceTooltip appearanceEntry.appearanceExperience ] [ barMaker getExperienceTooltip appearanceEntry.appearanceExperience ]
] ]
dateMaker : Appearance -> Element msg
dateMaker appearanceEntry =
detailFormat row
[ detailTitleMaker TextLightGrey "Published:"
, detailBodyMaker TextLightGrey (text appearanceEntry.appearanceYear)
]
subjectMaker : Appearance -> Element msg
subjectMaker appearanceEntry =
detailFormat column
[ detailFormatEl <| detailTitleMaker TextLightGrey "Subjects: "
, detailFormat column [ listMaker makeSubject appearanceEntry.appearanceSubjects ]
]
makeSubject : Subjects -> Element msg
makeSubject subjects =
listItem TextLightGrey subjects.subject
getExperienceTooltip : Int -> String getExperienceTooltip : Int -> String
getExperienceTooltip num = getExperienceTooltip num =
case num of case num of
@ -314,80 +313,3 @@ getExperienceTooltip num =
_ -> _ ->
"Behavior level out of expected range." "Behavior level out of expected range."
dateMaker : Appearance -> Element msg
dateMaker appearanceEntry =
row
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, headerFontSizeSmall
, F.bold
]
[ el
[ alignTop
]
<|
text
"Published:"
, el
[ alignTop
, width fill
]
<|
paragraph
[ F.regular
, paragraphFontSize
]
[ text appearanceEntry.appearanceYear
]
]
subjectMaker : Appearance -> Element msg
subjectMaker appearanceEntry =
paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, headerFontSizeSmall
, F.bold
]
[ column
[ alignTop
]
[ text "Subjects: "
]
]
subjectList : Appearance -> Element msg
subjectList appearanceEntry =
column
[ spacing 5
, width fill
, paddingEach
{ top = 0
, right = 0
, bottom = 0
, left = 10
}
]
<|
List.map2 (\x y -> makeSubject x)
appearanceEntry.appearanceSubjects
(List.range 1 (List.length appearanceEntry.appearanceSubjects))
makeSubject : Subjects -> Element msg
makeSubject subjects =
el
[ E.width fill
, alignLeft
]
<|
paragraph
[ F.regular
, paragraphFontSize
]
[ text (" " ++ subjects.subject) ]

View file

@ -178,7 +178,7 @@ contentList device service =
none none
_ -> _ ->
image "Test" image "Fatty"
, detailFormat column , detailFormat column
[ rateMaker service [ rateMaker service
, descriptionMaker , descriptionMaker
@ -209,5 +209,5 @@ offeringMaker service =
makeDescription : Description -> Element msg makeDescription : Description -> Element msg
makeDescription description = makeDescription description =
listItem listItem
TextLightGrey
description.point description.point
textLightGrey

BIN
frontend/static/donate/cardano.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Before After
Before After

BIN
frontend/static/services/customnixconfigs.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 524 KiB

Before After
Before After