diff --git a/frontend/src/Config/Helpers/Articles/Article.elm b/frontend/src/Config/Helpers/Articles/Article.elm new file mode 100644 index 0000000..986fd4c --- /dev/null +++ b/frontend/src/Config/Helpers/Articles/Article.elm @@ -0,0 +1,145 @@ +module Config.Helpers.Articles.Article exposing (..) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Types exposing (References) +import Config.Helpers.CardFormat + exposing + ( cardContentSpacing + , cardFormatter + , cardMaker + , cardSubTitleMaker + , cardTitleMaker + , desktopCardMaker + , desktopImageBoxSize + , desktopImageSize + , fieldSpacer + , mobileCardMaker + , mobileImageBoxSize + , mobileImageSize + , topLevelBox + ) +import Config.Helpers.Format exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Markdown exposing (..) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.StrengthBar + exposing + ( barMaker + , barPadding + ) +import Config.Helpers.ToolTip exposing (..) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blog.Types exposing (BlogArticle) +import Config.Pages.Contact.Types exposing (..) +import Config.Pages.Interviews.Types exposing (..) +import Config.Pages.Products.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) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (..) +import View exposing (View) + + +articleMaker : BlogArticle -> Element msg +articleMaker article = + column + topLevelBox + [ cardMaker + [ cardTitleMaker (String.toUpper article.articleName) + , cardFormatter + [ cardContentSpacing + [ column + fieldSpacer + [ cardSubTitleMaker + [ articleImage article.articleImage + , renderDeviceMarkdown article.articleBody + , case article.hasReferences of + True -> + articleReferences article + + False -> + none + ] + ] + ] + ] + ] + ] + + +articleReferences : BlogArticle -> Element msg +articleReferences article = + el + [ width fill + , height fill + ] + <| + column [ width fill, F.size 15, spacing 10 ] <| + List.map2 (\x y -> makeReference x y) + article.articleReferences + (List.range 1 (List.length article.articleReferences)) + + +makeReference : References -> Int -> Element msg +makeReference references index = + el + [ F.regular + , F.alignLeft + ] + <| + paragraph [] + [ newTabLink + [ F.bold + , F.color colourTheme.textLightOrange + , hoverFontDarkOrange + , transitionStyleFast + ] + { url = references.link, label = text (String.fromInt index ++ ". ") } + , text (references.author ++ ", ") + , text (references.title ++ ", ") + , text (references.journal ++ ", ") + , text references.year + ] + + +extractFirstWords : String -> String +extractFirstWords text = + let + words = + text + |> String.split " " + |> List.filter (not << String.isEmpty) + + truncatedWords = + List.take 80 words + + wasTextTruncated = + List.length words > 80 + + result = + String.join " " truncatedWords + in + if wasTextTruncated then + result ++ "..." + + else + result diff --git a/frontend/src/Config/Helpers/Articles/Types.elm b/frontend/src/Config/Helpers/Articles/Types.elm new file mode 100755 index 0000000..133b79c --- /dev/null +++ b/frontend/src/Config/Helpers/Articles/Types.elm @@ -0,0 +1,10 @@ +module Config.Helpers.Articles.Types exposing (..) + + +type alias References = + { author : String + , title : String + , link : String + , year : String + , journal : String + } diff --git a/frontend/src/Config/Helpers/CardFormat.elm b/frontend/src/Config/Helpers/CardFormat.elm index afdbaf3..d129540 100755 --- a/frontend/src/Config/Helpers/CardFormat.elm +++ b/frontend/src/Config/Helpers/CardFormat.elm @@ -37,12 +37,7 @@ topLevelBox = , E.height fill , E.alignTop , E.alignRight - , paddingEach - { top = 10 - , bottom = 10 - , left = 10 - , right = 10 - } + , padding 10 ] @@ -64,12 +59,7 @@ cardFormatter = , E.width fill , centerX , B.color colourTheme.backgroundDarkGrey - , paddingEach - { top = 10 - , bottom = 10 - , left = 10 - , right = 10 - } + , padding 10 , D.roundEach { topLeft = 0 , topRight = 0 @@ -178,6 +168,18 @@ cardImageMaker size1 size2 image urlLink = || urlLink == Path.toString Path.Blog_Quacksmashing || urlLink + == Path.toString Path.Blog_Bigfatsurprise + || urlLink + == Path.toString Path.Blog_Everettvegans + || urlLink + == Path.toString Path.Blog_Meatapologetics + || urlLink + == Path.toString Path.Blog_Plantbasedmeta + || urlLink + == Path.toString Path.Blog_Shenanigans + || urlLink + == Path.toString Path.Blog_Sweetdeception + || urlLink == Path.toString Path.Interviews || urlLink == Path.toString Path.Nutridex diff --git a/frontend/src/Config/Helpers/Format.elm b/frontend/src/Config/Helpers/Format.elm index 0e44bd0..e1342e8 100755 --- a/frontend/src/Config/Helpers/Format.elm +++ b/frontend/src/Config/Helpers/Format.elm @@ -2,6 +2,7 @@ module Config.Helpers.Format exposing (..) import Config.Style.Colour exposing (..) import Element exposing (..) +import Element.Border as D import Element.Font as F @@ -15,19 +16,19 @@ paragraphSpacing = spacing 3 -headerFontSizeBig : Int +headerFontSizeBig : Attr decorative msg headerFontSizeBig = - 23 + F.size 23 -headerFontSizeMedium : Int +headerFontSizeMedium : Attr decorative msg headerFontSizeMedium = - 20 + F.size 20 -headerFontSizeSmall : Int +headerFontSizeSmall : Attr decorative msg headerFontSizeSmall = - 18 + F.size 18 renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg @@ -39,3 +40,29 @@ renderCodeLine colors elements = [ F.monospace ] ] elements + + +divider : Element msg +divider = + el + [ width fill + , height fill + , spacing 20 + , centerX + , width (fill |> maximum 600) + , D.widthEach + { bottom = 1 + , top = 0 + , left = 0 + , right = 0 + } + , D.color colourTheme.textLightOrange + , paddingEach + { top = 20 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + <| + none diff --git a/frontend/src/Config/Helpers/Header.elm b/frontend/src/Config/Helpers/Headers/Header.elm similarity index 80% rename from frontend/src/Config/Helpers/Header.elm rename to frontend/src/Config/Helpers/Headers/Header.elm index f396f2e..261f386 100755 --- a/frontend/src/Config/Helpers/Header.elm +++ b/frontend/src/Config/Helpers/Headers/Header.elm @@ -1,9 +1,7 @@ -module Config.Helpers.Header exposing - ( Header - , headerMaker - ) +module Config.Helpers.Headers.Header exposing (headerMaker) import Config.Helpers.CardFormat exposing (..) +import Config.Helpers.Headers.Types exposing (Header) import Element as E exposing ( Element @@ -30,9 +28,3 @@ headerMaker header = ] ] ] - - -type alias Header = - { headerTitle : String - , headerBody : String - } diff --git a/frontend/src/Config/Helpers/Headers/Types.elm b/frontend/src/Config/Helpers/Headers/Types.elm new file mode 100644 index 0000000..96e06d6 --- /dev/null +++ b/frontend/src/Config/Helpers/Headers/Types.elm @@ -0,0 +1,7 @@ +module Config.Helpers.Headers.Types exposing (..) + + +type alias Header = + { headerTitle : String + , headerBody : String + } diff --git a/frontend/src/Config/Helpers/Markdown.elm b/frontend/src/Config/Helpers/Markdown.elm index e4a5de9..5274c6f 100755 --- a/frontend/src/Config/Helpers/Markdown.elm +++ b/frontend/src/Config/Helpers/Markdown.elm @@ -4,7 +4,8 @@ import Browser import Config.Helpers.Converters exposing (toTitleCase) import Config.Helpers.Format exposing - ( headerFontSizeBig + ( divider + , headerFontSizeBig , headerFontSizeMedium , headerFontSizeSmall , paragraphFontSize @@ -76,7 +77,9 @@ renderMarkdown markdown = |> Markdown.Parser.parse of Ok okAst -> - case Markdown.Renderer.render elmUiRenderer okAst of + case + Markdown.Renderer.render elmUiRenderer okAst + of Ok rendered -> Ok ( buildToc okAst, rendered ) @@ -87,6 +90,45 @@ renderMarkdown markdown = Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") +renderDeviceMarkdownNoToc : String -> Element msg +renderDeviceMarkdownNoToc markdown = + case renderMarkdownNoToc markdown of + Ok ( _, renderedMarkdown ) -> + -- Pattern match to get just the List (Element msg) + column + [ width fill + , centerX + , spacing 10 + ] + renderedMarkdown + + Err error -> + E.text error + + +renderMarkdownNoToc : + String + -> Result String ( TableOfContents, List (Element msg) ) -- Keep original return type +renderMarkdownNoToc markdown = + case + markdown + |> Markdown.Parser.parse + of + Ok okAst -> + case + Markdown.Renderer.render elmUiRenderer okAst + of + Ok rendered -> + Ok ( buildToc okAst, rendered ) + + -- Keep building TOC but don't use it + Err errors -> + Err errors + + Err error -> + Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") + + tocView : TableOfContents -> Element msg tocView toc = column @@ -154,23 +196,7 @@ tocView toc = } ] <| - row - [ centerX - , D.widthEach - { bottom = 1 - , top = 0 - , left = 0 - , right = 0 - } - , D.color colourTheme.textLightOrange - , paddingEach - { top = 10 - , bottom = 0 - , left = 0 - , right = 0 - } - ] - [] + divider , el [] <| @@ -451,42 +477,18 @@ codeBlock details = heading : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg heading { level, rawText, children } = - column [ width fill ] - [ el - [ width fill - , height fill - , spacing 20 - , paddingEach - { top = 10 - , bottom = 20 - , left = 100 - , right = 100 - } - ] - <| - row - [ centerX - , D.widthEach - { bottom = 1 - , top = 0 - , left = 0 - , right = 0 - } - , D.color colourTheme.textLightOrange - ] - [] + column [ width fill, spacing 20 ] + [ divider , E.paragraph - [ F.size - (case level of - Block.H1 -> - headerFontSizeBig + [ case level of + Block.H1 -> + headerFontSizeBig - Block.H2 -> - headerFontSizeMedium + Block.H2 -> + headerFontSizeMedium - _ -> - headerFontSizeSmall - ) + _ -> + headerFontSizeSmall , F.bold , F.center , width fill diff --git a/frontend/src/Config/Helpers/References.elm b/frontend/src/Config/Helpers/References.elm deleted file mode 100755 index c2c86a6..0000000 --- a/frontend/src/Config/Helpers/References.elm +++ /dev/null @@ -1,46 +0,0 @@ -module Config.Helpers.References exposing (..) - -import Config.Style.Colour exposing (colourTheme) -import Config.Style.Transitions - exposing - ( hoverFontDarkOrange - , transitionStyleFast - ) -import Element as E exposing (..) -import Element.Font as F - exposing - ( alignLeft - , color - , regular - ) - - -makeReference : References -> Int -> Element msg -makeReference references index = - paragraph - [ F.regular - , F.alignLeft - ] - [ row [] - [ newTabLink - [ F.bold - , F.color colourTheme.textLightOrange - , hoverFontDarkOrange - , transitionStyleFast - ] - { url = references.link, label = text (String.fromInt index ++ ". ") } - , text (references.author ++ ", ") - , text (references.title ++ ", ") - , text (references.journal ++ ", ") - , text references.year - ] - ] - - -type alias References = - { author : String - , title : String - , link : String - , year : String - , journal : String - } diff --git a/frontend/src/Config/Helpers/ArticleFormat.elm b/frontend/src/Config/Helpers/ServiceFormat.elm similarity index 97% rename from frontend/src/Config/Helpers/ArticleFormat.elm rename to frontend/src/Config/Helpers/ServiceFormat.elm index db640a9..214d487 100755 --- a/frontend/src/Config/Helpers/ArticleFormat.elm +++ b/frontend/src/Config/Helpers/ServiceFormat.elm @@ -1,9 +1,10 @@ -module Config.Helpers.ArticleFormat exposing (..) +module Config.Helpers.ServiceFormat exposing (..) import Config.Data.Identity exposing (pageNames) import Config.Helpers.Format exposing - ( paragraphFontSize + ( headerFontSizeBig + , paragraphFontSize , paragraphSpacing ) import Config.Style.Colour exposing (colourTheme) @@ -17,6 +18,7 @@ import Element as E exposing (..) import Element.Background as B import Element.Border as D import Element.Font as F +import Config.Helpers.Format exposing (headerFontSizeMedium) bodyFormat : List (Attribute msg) @@ -49,12 +51,11 @@ titleMaker : String -> Element msg titleMaker title = el [ paragraphSpacing - , paragraphFontSize + , headerFontSizeMedium , F.bold , F.center , width fill , F.color colourTheme.textLightOrange - , F.size 18 , paddingEach { top = 10 , bottom = 10 diff --git a/frontend/src/Config/Pages/Blog/Records/BigFatSurprise.elm b/frontend/src/Config/Pages/Blog/Records/BigFatSurprise.elm index 5b89347..afdb15e 100755 --- a/frontend/src/Config/Pages/Blog/Records/BigFatSurprise.elm +++ b/frontend/src/Config/Pages/Blog/Records/BigFatSurprise.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleBigFatSurprise : BlogArticle articleBigFatSurprise = { articleName = "The Big Fat Surprise: A Critical Review" - , articleDescription = "" , articleLink = Path.toString Path.Blog_Bigfatsurprise , articleAuthor = "Seth Yoder" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "bigfatsurprise" , articlePublished = "Aug 10, 2014" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/EverettVegans.elm b/frontend/src/Config/Pages/Blog/Records/EverettVegans.elm index d5f856f..c6ed8c2 100755 --- a/frontend/src/Config/Pages/Blog/Records/EverettVegans.elm +++ b/frontend/src/Config/Pages/Blog/Records/EverettVegans.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleEverettVegans : BlogArticle articleEverettVegans = { articleName = "A Case Study of Joseph Everett's Reading Comprehension" - , articleDescription = "This article systematically debunks a number of ludicrous claims about veganism made by the borderline illiterate ancestral diet proponent, Joseph Everett. These claims were the primary focus of a YouTube video he released on his channel, tackling everything from nutritional status on a vegan diet to a bizarre tirade about laboratory cats that were fed shitty diets. Apparently, Joseph's capacity for abject retardation is matched only by his video editing skills." , articleLink = Path.toString Path.Blog_Everettvegans , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "everettvegans" , articlePublished = "May 1, 2023" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/HunterGatherers.elm b/frontend/src/Config/Pages/Blog/Records/HunterGatherers.elm index 8cb01ca..8d13a15 100755 --- a/frontend/src/Config/Pages/Blog/Records/HunterGatherers.elm +++ b/frontend/src/Config/Pages/Blog/Records/HunterGatherers.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleHunterGatherers : BlogArticle articleHunterGatherers = { articleName = "Should Modern Humans Eat Like Hunter-Gatherers?" - , articleDescription = "This article presents a philosophical critique of the belief that a diet consisting solely of natural or ancestral foods is the best way for modern humans to achieve optimal health. I argue that even if a hunter-gatherer diet may be superior to a Western diet, it is still not necessarily the healthiest choice due to factors like the potential risks of ancestral foods and the ability to improve food quality through scientific manipulation." , articleLink = Path.toString Path.Blog_Huntergatherers , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "huntergatherers" , articlePublished = "May 14, 2021" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/MeatApologetics.elm b/frontend/src/Config/Pages/Blog/Records/MeatApologetics.elm index 424c3b3..ba73fae 100755 --- a/frontend/src/Config/Pages/Blog/Records/MeatApologetics.elm +++ b/frontend/src/Config/Pages/Blog/Records/MeatApologetics.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleMeatApologetics : BlogArticle articleMeatApologetics = { articleName = "A Systematic Appraisal of Pro-meat Apologetics" - , articleDescription = "This article systematically deconstructs the first section of a well-known scientific paper about animal foods, exposing numerous logical fallacies in the paper's arguments against nutritional research. By meticulously analyzing the text's claims about meat consumption and health risks, the critique reveals multiple methodological errors, including misleading citations, inconsistent reasoning, and speculative arguments that fail to challenge existing scientific evidence about the potential health impacts of meat consumption." , articleLink = Path.toString Path.Blog_Meatapologetics , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "meatapologetics" , articlePublished = "Apr 13, 2022" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/NagraGoodrich.elm b/frontend/src/Config/Pages/Blog/Records/NagraGoodrich.elm index 34390be..1490f92 100755 --- a/frontend/src/Config/Pages/Blog/Records/NagraGoodrich.elm +++ b/frontend/src/Config/Pages/Blog/Records/NagraGoodrich.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleNagraGoodrich : BlogArticle articleNagraGoodrich = { articleName = "Grading Tucker Goodrich: A Lesson in Debate Etiquette" - , articleDescription = "This article catalogs the results of Nagra's and my debate preparation. Our hard work paid off in the sweetest way possible. Matt was able to expose an enormous number of dodges, strawman arguments, and outright contradictions from Tucker. It exceeded all of our expectations and truly highlighted the weaknesses of Tucker's arguments. The number of self-defeating points Tucker attempted to defend in order to stay ahead in the debate was remarkable— a true treat." , articleLink = Path.toString Path.Blog_Nagragoodrich , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True , articleImage = "nagragoodrich" , articlePublished = "May 12, 2022" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/PlantBasedMeta.elm b/frontend/src/Config/Pages/Blog/Records/PlantBasedMeta.elm index ac26e65..9a9aaf8 100755 --- a/frontend/src/Config/Pages/Blog/Records/PlantBasedMeta.elm +++ b/frontend/src/Config/Pages/Blog/Records/PlantBasedMeta.elm @@ -7,10 +7,11 @@ import Route.Path as Path articlePlantBasedMeta : BlogArticle articlePlantBasedMeta = { articleName = "Plant-Based Diets (An Independent Meta-Analysis)" - , articleDescription = "" , articleLink = Path.toString Path.Blog_Plantbasedmeta , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True , articleImage = "plantbasedmeta" , articlePublished = "Feb 5, 2021" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/QuackSmashing.elm b/frontend/src/Config/Pages/Blog/Records/QuackSmashing.elm index 3dc3050..4148773 100755 --- a/frontend/src/Config/Pages/Blog/Records/QuackSmashing.elm +++ b/frontend/src/Config/Pages/Blog/Records/QuackSmashing.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleQuackSmashing : BlogArticle articleQuackSmashing = { articleName = "The Hitchhiker's Guide to Quack-Smashing" - , articleDescription = "This article explores the prevalence of quackery on social media, focusing on how to identify and confront it. The article categorizes quacks and delves into their behaviours and motivations. It emphasizes that quackery often stems from flawed epistemic frameworks rather than ignorance of scientific facts. The article suggests a method for addressing quackery by questioning the underlying reasoning behind a quack’s beliefs, forcing them to confront the deficiencies in their reasoning." , articleLink = Path.toString Path.Blog_Quacksmashing , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "quacksmashing" , articlePublished = "Dec 24, 2022" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/SapienDiet.elm b/frontend/src/Config/Pages/Blog/Records/SapienDiet.elm index 4e9050e..132ade0 100755 --- a/frontend/src/Config/Pages/Blog/Records/SapienDiet.elm +++ b/frontend/src/Config/Pages/Blog/Records/SapienDiet.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleSapienDiet : BlogArticle articleSapienDiet = { articleName = "The Sapien Diet: Peak Human or Food Lies?" - , articleDescription = "This article tackles many of the dubious claims made by ancestral diet advocate, Brian Sanders, during his popular 2020 talk, \"Despite what you've been told COWS CAN SAVE THE WORLD\". In this talk, Brian makes a number of baseless claims related to health, nutrition, argiculture, environmental science, and ethical philsophy. Make no mistake— virtually every listener was likely rendered slightly dumber for each word they heard leave Brian's mouth during his 26 minute presentation." , articleLink = Path.toString Path.Blog_Sapiendiet , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "sapiendiet" , articlePublished = "Aug 24, 2022" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/SeedOils.elm b/frontend/src/Config/Pages/Blog/Records/SeedOils.elm index 5b91095..e73b42b 100755 --- a/frontend/src/Config/Pages/Blog/Records/SeedOils.elm +++ b/frontend/src/Config/Pages/Blog/Records/SeedOils.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleSeedOils : BlogArticle articleSeedOils = { articleName = "A Comprehensive Rebuttal to Seed Oil Sophistry" - , articleDescription = "This article argues that vegetable oils, often criticized in recent years, are not harmful and may even offer health benefits, such as preventing heart disease and type 2 diabetes. It challenges claims based on mechanistic or ecological research, which lack strong evidence linking vegetable oils to chronic diseases. Instead, the article supports their inclusion in a balanced diet, cautioning against overconsumption, and debunking myths based on speculative studies." , articleLink = Path.toString Path.Blog_Seedoils , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "seedoils" , articlePublished = "Oct 31, 2021" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/Shenangians.elm b/frontend/src/Config/Pages/Blog/Records/Shenangians.elm index 74bba51..2bee395 100755 --- a/frontend/src/Config/Pages/Blog/Records/Shenangians.elm +++ b/frontend/src/Config/Pages/Blog/Records/Shenangians.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleShenanigans : BlogArticle articleShenanigans = { articleName = "Cuckery 101: Cate Shanahan's Masterclass in Debate Dodging" - , articleDescription = "" , articleLink = Path.toString Path.Blog_Shenanigans , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True , articleImage = "shenanigans" , articlePublished = "Jun 6, 2024" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/SweetDeception.elm b/frontend/src/Config/Pages/Blog/Records/SweetDeception.elm index 01feba1..50715bb 100755 --- a/frontend/src/Config/Pages/Blog/Records/SweetDeception.elm +++ b/frontend/src/Config/Pages/Blog/Records/SweetDeception.elm @@ -7,10 +7,11 @@ import Route.Path as Path articleSweetDeception : BlogArticle articleSweetDeception = { articleName = "Sweet Deception: Debunking Meme Diabetes Diets" - , articleDescription = "" , articleLink = Path.toString Path.Blog_Sweetdeception , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "sweetdeception" , articlePublished = "Apr 16, 2024" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Records/Template.elm b/frontend/src/Config/Pages/Blog/Records/Template.elm index 98475dd..4fd25b9 100755 --- a/frontend/src/Config/Pages/Blog/Records/Template.elm +++ b/frontend/src/Config/Pages/Blog/Records/Template.elm @@ -7,10 +7,11 @@ import Route.Path as Path article : BlogArticle article = { articleName = "" - , articleDescription = "" , articleLink = Path.toString Path.Blog_ , articleAuthor = "Nick Hiebert" , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True , articleImage = "" , articlePublished = "" , articleBody = """ diff --git a/frontend/src/Config/Pages/Blog/Types.elm b/frontend/src/Config/Pages/Blog/Types.elm index 8568433..7a384b4 100755 --- a/frontend/src/Config/Pages/Blog/Types.elm +++ b/frontend/src/Config/Pages/Blog/Types.elm @@ -1,6 +1,6 @@ module Config.Pages.Blog.Types exposing (..) -import Config.Helpers.References exposing (..) +import Config.Helpers.Articles.Types exposing (..) type alias BlogArticle = @@ -10,7 +10,8 @@ type alias BlogArticle = , articleLink : String , articleAuthor : String , isNewTabLink : Bool + , hasReferences : Bool + , hasTableOfContents : Bool , articlePublished : String - , articleDescription : String , articleReferences : List References } diff --git a/frontend/src/Config/Pages/Debate/Arguments/List.elm b/frontend/src/Config/Pages/Debate/Arguments/List.elm index 14e5839..1fc9ba6 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/List.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/List.elm @@ -33,6 +33,7 @@ import Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (argumen import Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (argumentHealthySeedOils) import Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy) import Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (argumentImmortalityReductio) +import Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (argumentLuigiTerrorist) import Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (argumentMalondialdehyde) import Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators) import Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (argumentOmega3Omega6Ratio) @@ -52,6 +53,7 @@ import Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (argument import Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (argumentUnhealthySaturatedFat) import Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentList : List Argument @@ -75,6 +77,7 @@ argumentList = , argumentMalondialdehyde , argumentOmega3Omega6Ratio , argumentPlantBasedCVDReversal + , argumentLuigiTerrorist , argumentPolyphenolReductio , argumentSodiumCVD , argumentTMAOCausality @@ -106,8 +109,3 @@ argumentList = , argumentFlatEarthDebunk , argumentTruncatedMeta ] - - -argumentListNumber : Int -argumentListNumber = - List.length argumentList diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm index b072b53..dddf589 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm @@ -1,19 +1,20 @@ module Config.Pages.Debate.Arguments.Records.Abortion exposing (..) -import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (..) argumentAbortion : Argument argumentAbortion = - { argumentTitle = "Argument Against Sentient Abortions" + { argumentTitle = toTitleCase "Argument Against Sentient Abortions" , propositionTitle = "One's whims are not a sufficient justification for the termination of sentient human life." , propositionReductio = "" , propositionSummary = "Consenting to becoming pregnant, or at least implicitly accepting the risks of pregnancy by engaging in reckless sex, should disqualify one from having the opportunity to a abort a sentient fetus if the pregnancy doesn't pose a significant health risk to the mother." , proofLink = "https://www.umsu.de/trees/#(P~2Q~5R),(P),(Q),((R~1F~1~3H)~5M),(F),(~3H),(M~5~3W)%7C=(~3W)" , argumentCertainty = 6 , argumentImage = "abortion" - , argumentHashtags = [PoliticsAbortion, PhilosophySentience, PhilosophyEthics] + , argumentHashtags = [ PoliticsAbortion, PhilosophySentience, PhilosophyEthics ] , definitionTable = [ { definiendum = "P" , definiens = "one consents to becoming pregnant" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm index 2a44505..491c994 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.Agnosticism exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAgnosticism : Argument argumentAgnosticism = - { argumentTitle = "Agnosticism Consistency Checker" + { argumentTitle = toTitleCase "Agnosticism Consistency Checker" , propositionTitle = "An interlocutor (who cannot unpack what evidence would lead them to change their doxastic attitude on a proposition) should temporarily withhold the belief that the proposition at hand is true." , propositionReductio = "" , propositionSummary = "Listen, if one doesn't know what would change their mind on a topic, about which they form strong opinions, then it's not clear why they'd even hold said opinions strongly in the first place. Given this, it would make more sense just to suspend your judgement in the meantime and form no opinions on the subject." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm index 112aa77..9f42d67 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAgriculturalPredation : Argument argumentAgriculturalPredation = - { argumentTitle = "Argument for Animal Agirculture as Predation" + { argumentTitle = toTitleCase "Argument for Animal Agirculture as Predation" , propositionTitle = "Animal agriculture counts as predation." , propositionReductio = "" , propositionSummary = "Some vegans suggest that killing odd order predators is wrong because predation is permissible. However, if animal agriculture also counts as predation, it's analytically entailed that animal agriculture is permissible as well." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm index 5da1505..3db3ba6 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm @@ -1,16 +1,16 @@ module Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAnabolicKeto : Argument argumentAnabolicKeto = - { argumentTitle = "Anabolic Opportunity Cost on Keto" + { argumentTitle = toTitleCase "Anabolic Opportunity Cost on Keto" , propositionTitle = "Ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets." , propositionReductio = "" , propositionSummary = "A higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets, reducing the amount available for hypertrophy. This likely costs anabolic potential on ketogenic diets compared to non-ketogenic diets." , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P),(Q~5R)|=(R)" - , argumentCertainty = 5 , argumentImage = "anabolicketo" , argumentHashtags = [] diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm index ee15f9d..35afd79 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.AnimalRights exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAnimalRights : Argument argumentAnimalRights = - { argumentTitle = "Argument for Animal Rights" + { argumentTitle = toTitleCase "Argument for Animal Rights" , propositionTitle = "We should not exploit animals to any greater degree than we would tolerate for humans." , propositionReductio = "" , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. As such, if one wants to deny that animals should be given these trait-adjusted rights, they'll have to name a trait that accounts for the differential normative evaluation. Typically this is done by rejecting P3 and saying something retarded." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm index fed3474..af5bc1d 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAntagonisticPleiotropy : Argument argumentAntagonisticPleiotropy = - { argumentTitle = "Argument Against Ancestral Diets" + { argumentTitle = toTitleCase "Argument Against Ancestral Diets" , propositionTitle = "Ancestral diets have inherent disadvantages over novel diets" , propositionReductio = "" , propositionSummary = "Humans have more genetic adaptations to ancestral foods than novel foods, which makes the long-term negative consequences of antagonistic pleiotropy a greater concern for ancestral foods." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm index b4d92d2..8ed2a6c 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAntiRewilding : Argument argumentAntiRewilding = - { argumentTitle = "Argument Against Rewilding" + { argumentTitle = toTitleCase "Argument Against Rewilding" , propositionTitle = "Rewilding sentient animals is immoral." , propositionReductio = "" , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be bred into wild circumstances where they're faced with the full brutality of the natural world, and by extension I think non-human animals have this right too." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm index 00d869c..df8f5a7 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentAntiVandalism : Argument argumentAntiVandalism = - { argumentTitle = "Argument Against Zoo Vandalism" + { argumentTitle = toTitleCase "Argument Against Zoo Vandalism" , propositionTitle = "Vandalizing zoos increases the probability of harming the animals they keep." , propositionReductio = "" , propositionSummary = "The more we pressure institutions that hold innocent animals captive to direct their funds to endeavours or projects unrelated to animal care, the less money those institutions are going to have to devote to animal care." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm index 1e28510..87d5d32 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentApoBCVD : Argument argumentApoBCVD = - { argumentTitle = "Argument for Atherogenic ApoB" + { argumentTitle = toTitleCase "Argument for Atherogenic ApoB" , propositionTitle = "ApoB-containing lipoproteins dose-dependently cause atherosclerosis." , propositionReductio = "" , propositionSummary = "ApoB-containing lipoproteins consistently and proportionately associate with increased plaque volume after controlling for relevant confounders, which satisfies the conditions outlined for an exposure to cause atherosclerosis." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm index 8358a9b..486c2a2 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Pages.Debate.Arguments.Types exposing (..) argumentBoobyTrapPagers : Argument argumentBoobyTrapPagers = - { argumentTitle = "Argument Against Israeli Pagers as Booby-Traps" + { argumentTitle = toTitleCase "Argument Against Israeli Pagers as Booby-Traps" , propositionTitle = "The Israeli pagers were not booby-traps." , propositionReductio = "" , propositionSummary = "Based on the definitions found in the IHL Databases, it's unlikely that the Israeli pager bombs qualify as booby-traps. However, there is sufficient ambiguity in the language that I'm not convinced it's necessarily an analytical truth." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm index fc4503a..ec63b96 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentCarbsObesity : Argument argumentCarbsObesity = - { argumentTitle = "Argument Against the Obesogenic Carbohydrates" + { argumentTitle = toTitleCase "Argument Against the Obesogenic Carbohydrates" , propositionTitle = "Carbohydrates do not uniquely cause fat accumulation or obesity." , propositionReductio = "" , propositionSummary = "There are a number of predictions made from the hypothesis that carbohydrates uniquely cause obesity. One of those predictions is that obesity would track with carbohydrate intake, but it doesn't" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm index 4d58c84..293ab2f 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentColonizingNature : Argument argumentColonizingNature = - { argumentTitle = "Argument for Colonizing Nature" + { argumentTitle = toTitleCase "Argument for Colonizing Nature" , propositionTitle = "We are justified in displacing nature into non-existence" , propositionReductio = "" , propositionSummary = "Summary" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm index b0c6d60..1df1c65 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.CropDeaths exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentCropDeaths : Argument argumentCropDeaths = - { argumentTitle = "Cropland vs Wildland Argument" + { argumentTitle = toTitleCase "Cropland vs Wildland Argument" , propositionTitle = "Proposition" , propositionReductio = "" , propositionSummary = "We can't claim to know that cropland kills more animals than wildland, because if we did know this, there would be evidence for it, and there isn't any such evidence." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm index fe694ec..e0b191c 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentDairyCowRape : Argument argumentDairyCowRape = - { argumentTitle = "Argument for Animal Sex Counting as Rape" + { argumentTitle = toTitleCase "Argument for Animal Sex Counting as Rape" , propositionTitle = "An animal mating with another animal qualifies as rape." , propositionReductio = "" , propositionSummary = "It's not clear that non-human animal procreation isn't an example of rape if we take sexual interaction in the absence of informed consent to be rape. So, it seems to follow that a bull mating with a cow is rape, for example." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm index cfcd6a8..9283b6f 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentDietaryCholesterol : Argument argumentDietaryCholesterol = - { argumentTitle = "Argument for Atherogenic Dietary Cholesterol" + { argumentTitle = toTitleCase "Argument for Atherogenic Dietary Cholesterol" , propositionTitle = "Consuming high amounts of dietary cholesterol increases heart disease risk." , propositionReductio = "" , propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Dietary cholesterol is one such exposure." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm index a9981cc..1c29fa7 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm @@ -2,11 +2,12 @@ module Config.Pages.Debate.Arguments.Records.Dummy exposing (..) import Config.Data.Hashtags.Types exposing (Hashtags(..)) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentDummy : Argument argumentDummy = - { argumentTitle = "" + { argumentTitle = toTitleCase "" , propositionTitle = "" , propositionReductio = "" , propositionSummary = "" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm index 8d918a6..d152213 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentEfilismPatrolSquad : Argument argumentEfilismPatrolSquad = - { argumentTitle = "The Eternal Intergalactic Sentience Patrol Squad" + { argumentTitle = toTitleCase "The Eternal Intergalactic Sentience Patrol Squad" , propositionTitle = "Efilists are committed to pragmatic natalism." , propositionReductio = "Efilists fundamentally believe that sentient life is inherently characterized by suffering and that the most ethical action is to prevent the creation of any new sentient beings, ultimately aiming to completely eliminate all conscious life in the universe to end suffering permanently." , propositionSummary = "If efilists follow their own logic to its ultimate conclusion, they would paradoxically be committed to a form of pragmatic natalism - the very opposite of their core philosophical stance." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm index 2d85bad..1c85e77 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentEpidemiologyCausality : Argument argumentEpidemiologyCausality = - { argumentTitle = "Argument for Nutritional Epidemiology" + { argumentTitle = toTitleCase "Argument for Nutritional Epidemiology" , propositionTitle = "Nutritional epidemiology generally provides good causal estimates." , propositionReductio = "" , propositionSummary = "It's just straightforwardly the case that nutritional epidemiology has outstanding translation rates with randomized controlled trials, or at least these is overwhelmingly consistent compatibility in the results. If randomized controlled trials are the standard against which other research methods are to be evaluated, it's not clear why nutritional epidemiology wouldn't be trustworthy in the aggregate." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm index 73ca206..c47c229 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentEthicalSlurs : Argument argumentEthicalSlurs = - { argumentTitle = "Argument for Using the Term Retard" + { argumentTitle = toTitleCase "Argument for Using the Term Retard" , propositionTitle = "It is generally permissible to use the term retard with an altered non-bigoted meaning." , propositionReductio = "" , propositionSummary = "The only historical examples of bigoted terms, such as slurs, becoming non-harmful to the demographics toward which they were historically targeted involve literally changing the usage of the term to something non-bigoted. I don’t see any historical precedent for a methodology that has been as successful in achieving this goal as altering the term's usage. Such as using the term \"nigga\" to mean \"friend\", for example." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm index 08d2dde..f811a65 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.FineTuning exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentFineTuning : Argument argumentFineTuning = - { argumentTitle = "Fine Tuning Debunk" + { argumentTitle = toTitleCase "Fine Tuning Debunk" , propositionTitle = "Fine tuning is an infinitely regressive explanation for God" , propositionReductio = "" , propositionSummary = "It's not clear why God's constitution wouldn't count as finely tuned, and to the extent that it does count as finely-tuned, it's by extension unclear why fine-tuning wouldn't be an infinitely regressive argument for God's existence." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm index b079d83..68441fa 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentFlatEarthDebunk : Argument argumentFlatEarthDebunk = - { argumentTitle = "Flat Earth Internal Critique" + { argumentTitle = toTitleCase "Flat Earth Internal Critique" , propositionTitle = "The stars in the sky will not be perceived as rotating clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane." , propositionReductio = "" , propositionSummary = "The argument is structured to demonstrate that, within the context of a flat Earth model, if the stars are perceived as rotating counter-clockwise from the center, they cannot also be perceived as rotating clockwise from any point on the Earth." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm index d80b56e..0736867 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentFructoseNAFLD : Argument argumentFructoseNAFLD = - { argumentTitle = "Argument Against Lipogenic Fructose" + { argumentTitle = toTitleCase "Argument Against Lipogenic Fructose" , propositionTitle = "Fructose doesn't seem to uniquely cause fatty liver disease." , propositionReductio = "" , propositionSummary = "Experimental investigations into fructose overfeeding have consistently failed to produce a fatty liver phenotype in humans. This suggests that fructose, contrary to popular belief in some domains, does not uniquely cause fatty liver disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm index 2311176..7ff2671 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm @@ -1,10 +1,11 @@ module Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthPromotingFoods : Argument argumentHealthPromotingFoods = - { argumentTitle = "Argument for Food's Inherent Health Value" + { argumentTitle = toTitleCase "Argument for Food's Inherent Health Value" , propositionTitle = "All foods are definitionally health-promoting." , propositionReductio = "" , propositionSummary = "Given that food is, by its very definition, material that provides essential nutrients and energy to sustain bodily functions and growth, it follows that anything classified as food must be inherently health-promoting by its very nature." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm index 75ff39a..2ec5ffa 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthSeeker : Argument argumentHealthSeeker = - { argumentTitle = "Ancestral Health Consistency Checker" + { argumentTitle = toTitleCase "Ancestral Health Consistency Checker" , propositionTitle = "If someone (who favours consuming ancestral foods to the exclusion of novel foods because they value reducing disease risk) is not in favour of consuming a novel food (that reduces disease risk when replacing an ancestral food), then that person would be acting against their values." , propositionReductio = "" , propositionSummary = "If someone values consuming ancestral foods over novel foods because they have the overall value of reducing disease risk, but a novel food reduces disease risk when replacing an ancestral food, they would be acting against their values by rejecting the novel food." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm index e6a1e52..e0dfd4b 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyChocolate : Argument argumentHealthyChocolate = - { argumentTitle = "Argument for Healthy Chocolate" + { argumentTitle = toTitleCase "Argument for Healthy Chocolate" , propositionTitle = "Chocolate does not cause atherosclerosis." , propositionReductio = "" , propositionSummary = "Despite chocolate containing high amounts of saturated fat, populations that consume more chocolate do not exhibit higher rates of atherosclerosis, suggesting that chocolate does not have the same effect on heart disease risk as most other saturated fat sources." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm index d662e9a..e959155 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyDairy : Argument argumentHealthyDairy = - { argumentTitle = "Argument for Healthy Dairy Products" + { argumentTitle = toTitleCase "Argument for Healthy Dairy Products" , propositionTitle = "Non-churned, non-homogenized dairy do not cause atherosclerosis." , propositionReductio = "" , propositionSummary = "The diet-heart hypothesis would predict that populations consuming more dairy foods should have higher rates of the disease. However, even when you account for factors that could plausibly influence the results, non-churned, non-homogenized dairy have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease and colorectal cancer." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm index b01d787..835ff92 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyFattyFish : Argument argumentHealthyFattyFish = - { argumentTitle = "Argument for Overwhelmingly Healthy Fatty Fish" + { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fatty Fish" , propositionTitle = "Fatty fish is overwhelmingly healthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, fatty fish have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm index 8a4374f..c529a1c 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyFibre : Argument argumentHealthyFibre = - { argumentTitle = "Argument for Overwhelmingly Healthy Fibre" + { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fibre" , propositionTitle = "Fibre, whether whole or refined, is overwhelmingly healthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, both refined and whole fibre have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm index 122c773..7778617 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyFood exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyFood : Argument argumentHealthyFood = - { argumentTitle = "Argument For Healthy Food Substitution" + { argumentTitle = toTitleCase "Argument For Healthy Food Substitution" , propositionTitle = "Pepsi is healthy compared to leafy greens when trapped on a desert island." , propositionReductio = "" , propositionSummary = "A food is considered healthier than another in a specific context if it increases the time before illness or disease sets in when replacing the other food. On a desert island, since Pepsi can extend the time before starvation compared to leafy greens, it is considered healthier than leafy greens in that context." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm index 37d08a9..b7c0faf 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthyPlantFoods : Argument argumentHealthyPlantFoods = - { argumentTitle = "Argument for Overwhelmingly Healthy Plant Foods" + { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Plant Foods" , propositionTitle = "Whole plant foods are overwhelmingly healthy." , propositionReductio = "" , propositionSummary = "Since whole plant foods consistently consistently associate with reduced risk of illness and death, it is reasonable to conclude that whole plant foods are overwhelmingly healthy." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm index aa3e032..af698a0 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthySeedOils : Argument argumentHealthySeedOils = - { argumentTitle = "Argument for Overwhelmingly Healthy Seed Oils" + { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Seed Oils" , propositionTitle = "Non-hydrogenated vegetable oils are overwhelmingly healthy." , propositionReductio = "" , propositionSummary = "Even when you account for known factors, or model a reasonable accounting of unknown factors, that could plausibly influence the results (such as with adjustment models in prospective cohort studies or randomization in controlled trials), non-hydrogenated vegetable oils have been shown to consistently reduce the risk of morbidity and mortality in both prospective cohort studies and randomized controlled trials, strongly suggesting that they directly contribute to better health outcomes." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm index 0154556..b55cd39 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.HealthySoy exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentHealthySoy : Argument argumentHealthySoy = - { argumentTitle = "Argument for Healthy Soy Products" + { argumentTitle = toTitleCase "Argument for Healthy Soy Products" , propositionTitle = "Soy products are overwhelmingly healthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, non-hydrogenated soy products have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm index 5b794f8..be59cf8 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentImmortalityReductio : Argument argumentImmortalityReductio = - { argumentTitle = "Appeal to Nature Immortality Reductio" + { argumentTitle = toTitleCase "Appeal to Nature Immortality Reductio" , propositionTitle = "Senescence does not result in death." , propositionReductio = "People who appeal to nature in this fashion assert that death cannot result from natural biological processes. Usually this is asserted in order to avoid accepting that LDL is causative of atherosclerosis." , propositionSummary = "If one commits to this variation of the appeal to nature fallacy, it's unclear why they wouldn't be subsequently committed to affirm that humans are immortal, like Connor fucking MacLeod." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm new file mode 100644 index 0000000..10c9a46 --- /dev/null +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm @@ -0,0 +1,44 @@ +module Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (..) + +import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) + + +argumentLuigiTerrorist : Argument +argumentLuigiTerrorist = + { argumentTitle = toTitleCase "Argumnent for Luigi Mangione Being a Terrorist" + , propositionTitle = "Luigi Mangione is a domestic terrorist" + , propositionReductio = "" + , propositionSummary = "According to the FBI's definition of a \" domestic terrorist \", it is quite clear that Luigi Mangione qualifies, based on his actions. It just seems like an analytic truth." + , proofLink = "https://www.umsu.de/trees/#~6x(Px~4Qx),Qm|=Pm" + , argumentCertainty = 10 + , argumentImage = "luigiterrorist" + , argumentHashtags = [] + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) commits violent, criminal acts to further ideological goals stemming from domestic influence" + } + , { definiendum = "Q(x)" + , definiens = "(x) is a domestic terrorist" + } + , { definiendum = "x" + , definiens = "an individual" + } + , { definiendum = "m" + , definiens = "Luigi Mangione" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "An individual is a domestic terrorist if, and only if, the individual commits violent, criminal acts to further ideological goals stemming from domestic influences." + , notation = "∀x(Px↔Qx)" + } + , { premise = "Luigi Mangione committed violent, criminal acts to further ideological goals stemming from domestic influence." + , notation = "Qm" + } + ] + , conclusion = "Therefore, Luigi Mangione is a domestic terrorist." + , conclusionNotation = "Pm" + } + ] + } diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm index 9a80c1f..834d0b9 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentMalondialdehyde : Argument argumentMalondialdehyde = - { argumentTitle = "Atherogenic Omega-3 Reductio" + { argumentTitle = toTitleCase "Atherogenic Omega-3 Reductio" , propositionTitle = "Omega-3s are atherogenic." , propositionReductio = "Certain anti-seed oil proponents assert that seed oils cause atherosclerosis via omega-6-derived malondialdehyde, and that this is the only cause of atherosclerosis. However, they often also assert that omega-3 fatty acids are anti-atherogenic, despite the fact that omega-3s actually produce more malondialdehyde than omega-6s." , propositionSummary = "If one takes the view that in order for a substance to increase the risk of atherosclerosis, it must facilitate the oxidative modification of LDL particles via malondialdehyde production, and one also affirms that omega-3s are anti-atherogenic, then this would imply that all fatty acids that produce malondialdehyde, including omega-3s, must also be atherogenic, which contradicts the their belief that omega-3s are heart-healthy." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm index fc3ff4b..02572f5 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentOddOrderPredators : Argument argumentOddOrderPredators = - { argumentTitle = "Argument for Culling Odd Order Predators" + { argumentTitle = toTitleCase "Argument for Culling Odd Order Predators" , propositionTitle = "It is permissible to prevent predation with lethal force to the same degree we would tolerate for humans." , propositionReductio = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be exposed to circumstances where they're hunted for food, and I think it is permissible to use lethal force to save the lives of the hunted, all else equal. By extension I think non-human animals have this right too." , propositionSummary = "Summary" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm index c9cee15..18e1247 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm @@ -1,10 +1,11 @@ module Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentOmega3Omega6Ratio : Argument argumentOmega3Omega6Ratio = - { argumentTitle = "Argument Against the Omega-6/Omega-3 Ratio" + { argumentTitle = toTitleCase "Argument Against the Omega-6/Omega-3 Ratio" , propositionTitle = "The omega-6/omega-3 ratio is unlikely to matter for health." , propositionReductio = "" , propositionSummary = "More often than not, the associated risks of a high omega-6/omega-3 ratio are better explained by omega-3 alone. In multivariable analyses, the ratio looks like it matters, but in univariable anaylses, low omega-3 is almost always driving the risk via lowering the denominator." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm index d79e96e..d803d4c 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentOstroveganism : Argument argumentOstroveganism = - { argumentTitle = "Argument for Vegan Bivalves" + { argumentTitle = toTitleCase "Argument for Vegan Bivalves" , propositionTitle = "Bivalves are not likely to be sentient." , propositionReductio = "" , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. However, I do not believe that non-sentient human bodies, such as brainless or brain-dead human bodies, have such human rights. By extension, I don't believe that non-human animals that lack brains possess these rights either." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm index 6a18779..dd73b66 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentPlantBasedCVDReversal : Argument argumentPlantBasedCVDReversal = - { argumentTitle = "Argument Against Plant-Based CVD Reversal" + { argumentTitle = toTitleCase "Argument Against Plant-Based CVD Reversal" , propositionTitle = "Plant-based diets do not appear to clinically reverse atherosclerosis." , propositionReductio = "" , propositionSummary = "To date, there is not a single case of supposed heart disease reversal from a plant-based diet that is actually compatible with established definitions of heart disease reversal in the literature." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm index 09aa301..56009b0 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentPollinationReductio : Argument argumentPollinationReductio = - { argumentTitle = "Vegan Anti-Pollination Reductio" + { argumentTitle = toTitleCase "Vegan Anti-Pollination Reductio" , propositionTitle = "Apples are not vegan" , propositionReductio = "Some vegans hold to a deontic principle that any form of animal exploitation is wrong, and the products of exploitation are to be boycotted and designated non-vegan." , propositionSummary = "If one accepts that no animal exploitation is permissible, they're committed to some truly hilarious positions, such as apples not being vegan because we exploit the natural behaviour of bees to pollinate our apple trees." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm index 1ea86c0..d808f82 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentPolyphenolReductio : Argument argumentPolyphenolReductio = - { argumentTitle = "Anti-Polyphenol Reductio" + { argumentTitle = toTitleCase "Anti-Polyphenol Reductio" , propositionTitle = "Anti-polyphenol, ancestral diet advocates are committed to favouring GMOs." , propositionReductio = "Some carnivore diet proponents suggest that phytochemical compounds, such as polyphenols, are actually harmful to human beings." , propositionSummary = "If one is committed to the notions that polyphenols in plants are bad for humans, and that grass-fed red meat is the healthiest available type of red meat, then they're pragmatically committed to being pro-GMO to lower the grass-derived polyphenol content of grass-fed beef." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm index 414f4f8..eccb301 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentScratcherPioneers : Argument argumentScratcherPioneers = - { argumentTitle = "Tattoo Pioneers were Scratchers" + { argumentTitle = toTitleCase "Tattoo Pioneers were Scratchers" , propositionTitle = "The original trailblazers of modern tattooing were scratchers." , propositionReductio = "Some tattoo artists condemn scratchers and their associated culture due to poor observation of sanitation standards and lack of mentorship and also simultaneously hold the original trailblazers of the tattoo industry in high esteem." , propositionSummary = "If what qualifies a given tattoo artist as a scratcher is poor observation of sanitation standards and lack of mentorship, then it's just straightforwardly entailed that the original trailblazers of the tattoo industry were scratchers." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm index ca571b7..e579e01 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm @@ -1,10 +1,11 @@ module Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentSodiumCVD : Argument argumentSodiumCVD = - { argumentTitle = "Argument for Atherogenic Sodium" + { argumentTitle = toTitleCase "Argument for Atherogenic Sodium" , propositionTitle = "Higher intakes of sodium increases cardiovascular disease risk." , propositionReductio = "" , propositionSummary = "In all of the strongest analysis on the relationship between sodium intake and cardiovascular disease risk, there is a linear and proportional relationship. Particularly when the strongest measurement methods are used, such as multiple 24-hour urinary collections." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm index 5a4f599..1ad64f5 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentTMAOCausality : Argument argumentTMAOCausality = - { argumentTitle = "Argument Against TMAO Being Causal in CVD" + { argumentTitle = toTitleCase "Argument Against TMAO Being Causal in CVD" , propositionReductio = "" , propositionTitle = "TMAO is not likely to be causative of heart disease." , propositionSummary = "In the strongest research we have on the relationship between TMAO and heart disease risk, such as with Mendelian randomization and genome-wide associational studies, there is no persuasive causal link between TMAO in the blood and heart disease risk." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm index 986b67d..489325a 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.Template exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argument : Argument argument = - { argumentTitle = "" + { argumentTitle = toTitleCase "" , propositionTitle = "" , propositionReductio = "" , propositionSummary = "" diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm index f87ba97..374998a 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.TransPeople exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentTransPeople : Argument argumentTransPeople = - { argumentTitle = "Argument For Trans Identity" + { argumentTitle = toTitleCase "Argument For Trans Identity" , propositionTitle = "A trans person of the male sex is a woman and a trans person with female sex is a man." , propositionReductio = "" , propositionSummary = "Virtually 100% of the debate surrounding trans identity is merely a trivial semantic disagreement about what constitutes a man or a woman. Below is a formal argument for characterization of a man and a women that maximally satisfies both parties and minimizes absurdities." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm index db54b39..4e6ac5a 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentTruncatedMeta : Argument argumentTruncatedMeta = - { argumentTitle = "Argument For Truncated Meta-Analysis" + { argumentTitle = toTitleCase "Argument For Truncated Meta-Analysis" , propositionTitle = "Meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies." , propositionReductio = "" , propositionSummary = "Some people argue that omission of studies from meta-analysis is bad form because the more point estimates, the better. However, I argue that there are circumstances where including more studies can actually lower the quality of causal estimates." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm index 56d71a6..d47c732 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentUnhealthyCoconutOil : Argument argumentUnhealthyCoconutOil = - { argumentTitle = "Argument For Atherogenic Coconut Oil" + { argumentTitle = toTitleCase "Argument For Atherogenic Coconut Oil" , propositionTitle = "There is not a reason to believe that coconut oil is any better for heart health than other saturated fat sources that increase LDL-C." , propositionReductio = "" , propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Coconut oil is one such exposure." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm index b6505c2..f40eb79 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentUnhealthyProcessedMeat : Argument argumentUnhealthyProcessedMeat = - { argumentTitle = "Argument for Unhealthy Processed Meat" + { argumentTitle = toTitleCase "Argument for Unhealthy Processed Meat" , propositionTitle = "Processed meat is overwhelmingly unhealthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, processed meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm index dbdb61d..cd28d08 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentUnhealthyRedMeat : Argument argumentUnhealthyRedMeat = - { argumentTitle = "Argument for Unhealthy Red Meat" + { argumentTitle = toTitleCase "Argument for Unhealthy Red Meat" , propositionTitle = "Red meat and processed meat are overwhelmingly unhealthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, unprocessed red meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm index 6255fb7..a9242ba 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentUnhealthySaturatedFat : Argument argumentUnhealthySaturatedFat = - { argumentTitle = "Argument Against Saturated Fat" + { argumentTitle = toTitleCase "Argument Against Saturated Fat" , propositionTitle = "Most sources of saturated fat are overwhelmingly unhealthy." , propositionReductio = "" , propositionSummary = "Even when you account for factors that could plausibly influence the results, most animal-derived saturated fats have been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to heart disease and non-alcoholic fatty liver disease." diff --git a/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm b/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm index a1d0f3d..d9db395 100755 --- a/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm +++ b/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm @@ -1,11 +1,12 @@ module Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) argumentVeganSocietyReductio : Argument argumentVeganSocietyReductio = - { argumentTitle = "Vegan Society Definition Reductio" + { argumentTitle = toTitleCase "Vegan Society Definition Reductio" , propositionTitle = "It is vegan to eat Groot." , propositionReductio = "Those who hold to the Vegan Society's definition of veganism index the object of moral value to belonging to the animal kingdom." , propositionSummary = "If one holds to the position that exploiting a being is wrong so long as that being is an animal, then it is straightforwardly entailed that exploiting creatures like Groot would be an action compatible with veganism." diff --git a/frontend/src/Config/Pages/Debate/Gibberish/List.elm b/frontend/src/Config/Pages/Debate/Gibberish/List.elm index 86b16ac..4995aa5 100755 --- a/frontend/src/Config/Pages/Debate/Gibberish/List.elm +++ b/frontend/src/Config/Pages/Debate/Gibberish/List.elm @@ -10,12 +10,14 @@ import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberis import Config.Pages.Debate.Gibberish.Types exposing (..) -gibberishListNumber : Int -gibberishListNumber = - List.length Config.Pages.Debate.Gibberish.Records.Epistemology.epistemologyGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.Metaphysics.metaphysicsGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.Normativity.normativityGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.Ontology.ontologyGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.PhilOfLanguage.philOfLanguageGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.PhilOfMind.philOfMindGibberish.gibberishTerms - + List.length Config.Pages.Debate.Gibberish.Records.Theology.theologyGibberish.gibberishTerms +gibberishList : List Terms +gibberishList = + List.concat + [ epistemologyGibberish.gibberishTerms + , metaphysicsGibberish.gibberishTerms + , normativityGibberish.gibberishTerms + , ontologyGibberish.gibberishTerms + , philOfLanguageGibberish.gibberishTerms + , philOfMindGibberish.gibberishTerms + , theologyGibberish.gibberishTerms + ] diff --git a/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm b/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm index 9d98261..02ebc8e 100755 --- a/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm +++ b/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm @@ -17,7 +17,7 @@ metaphysicsGibberish = , gibberishTerms = [ { term = "Correspondence Theory of Truth" , strength = 10 - , explanation = SpecificExplanation "While I do take there to be a world outside my perception, and I do believe that the correspondence between my perceptions and the world outside of my perceptions would be a good way to infer the relative truth value of a proposition, this doesn't seem a definition of truth that is in any way actionable. This, to me, makes the correspondence theory of truth to be practically useless." + , explanation = SpecificExplanation "While I do take there to be a world outside my perception, and I do believe that the correspondence between my perceptions and the world outside of my perceptions would be a good way to infer the relative truth value of a proposition, this doesn't seem to be in any way actionable or useful, as humans don't have access to the means of verifying truth under this model. This, to me, makes the correspondence theory of truth to be practically useless." } , { term = "Metaphysical Essence" , strength = 5 diff --git a/frontend/src/Config/Pages/Products/Types.elm b/frontend/src/Config/Pages/Products/Types.elm index 4e612d5..bac33c0 100755 --- a/frontend/src/Config/Pages/Products/Types.elm +++ b/frontend/src/Config/Pages/Products/Types.elm @@ -1,6 +1,6 @@ module Config.Pages.Products.Types exposing (..) -import Config.Helpers.References exposing (..) +import Config.Helpers.Articles.Types exposing (References) type alias NutriDex = diff --git a/frontend/src/Pages/Blog.elm b/frontend/src/Pages/Blog.elm index 9c3c179..e921cbe 100755 --- a/frontend/src/Pages/Blog.elm +++ b/frontend/src/Pages/Blog.elm @@ -1,6 +1,7 @@ module Pages.Blog exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (extractFirstWords) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -24,10 +25,17 @@ import Config.Helpers.Converters ) import Config.Helpers.Format exposing - ( paragraphFontSize + ( headerFontSizeSmall + , paragraphFontSize , paragraphSpacing ) -import Config.Helpers.Header exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Markdown + exposing + ( renderDeviceMarkdown + , renderDeviceMarkdownNoToc + ) import Config.Helpers.Response exposing ( pageList @@ -263,7 +271,7 @@ articleMaker article = , right = 0 } ] - [ text article.articleDescription ] + [ renderDeviceMarkdownNoToc (extractFirstWords article.articleBody) ] ] ] ) @@ -273,16 +281,16 @@ articleMaker article = infoRow : String -> String -> Element msg infoRow label value = row [ width fill ] - [ el [ width <| px 85 ] <| - paragraph + [ el [ width <| px 88 ] <| + el [ F.color colourTheme.textLightOrange , paragraphSpacing - , paragraphFontSize , F.bold - , F.size 18 + , headerFontSizeSmall , E.width fill ] - [ text label ] + <| + text label , el [ width fill ] <| paragraph [ F.color colourTheme.textLightGrey @@ -296,8 +304,18 @@ infoRow label value = articleRows : BlogArticle -> List (Element msg) articleRows article = - [ infoRow "Author:" article.articleAuthor - , infoRow "Published:" article.articlePublished + let + referenceCount = + List.length article.articleReferences + in + [ infoRow "Published:" article.articlePublished + , infoRow "Author:" article.articleAuthor , infoRow "Duration:" (String.fromInt (wordCount article.articleBody // 225) ++ " minutes") , infoRow "Words:" (String.fromInt (wordCount article.articleBody)) ] + ++ (if referenceCount > 2 then + [ infoRow "Sources:" (String.fromInt referenceCount) ] + + else + [] + ) diff --git a/frontend/src/Pages/Blog/Bigfatsurprise.elm b/frontend/src/Pages/Blog/Bigfatsurprise.elm index ab00f0c..8eaed92 100755 --- a/frontend/src/Pages/Blog/Bigfatsurprise.elm +++ b/frontend/src/Pages/Blog/Bigfatsurprise.elm @@ -1,6 +1,7 @@ module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,16 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.BigFatSurprise exposing (articleBigFatSurprise) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +62,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +126,3 @@ articleList device = ) [ articleBigFatSurprise ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleBigFatSurprise.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleBigFatSurprise.articleImage - , renderDeviceMarkdown articleBigFatSurprise.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Everettvegans.elm b/frontend/src/Pages/Blog/Everettvegans.elm index e1b84e4..1e6f42a 100755 --- a/frontend/src/Pages/Blog/Everettvegans.elm +++ b/frontend/src/Pages/Blog/Everettvegans.elm @@ -1,6 +1,7 @@ module Pages.Blog.Everettvegans exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,16 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.EverettVegans exposing (articleEverettVegans) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +62,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +126,3 @@ articleList device = ) [ articleEverettVegans ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleEverettVegans.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleEverettVegans.articleImage - , renderDeviceMarkdown articleEverettVegans.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Huntergatherers.elm b/frontend/src/Pages/Blog/Huntergatherers.elm index 5d9cfe4..a444aea 100755 --- a/frontend/src/Pages/Blog/Huntergatherers.elm +++ b/frontend/src/Pages/Blog/Huntergatherers.elm @@ -1,6 +1,7 @@ module Pages.Blog.Huntergatherers exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,16 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +62,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +126,3 @@ articleList device = ) [ articleHunterGatherers ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleHunterGatherers.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleHunterGatherers.articleImage - , renderDeviceMarkdown articleHunterGatherers.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Meatapologetics.elm b/frontend/src/Pages/Blog/Meatapologetics.elm index 2b2145f..154293d 100755 --- a/frontend/src/Pages/Blog/Meatapologetics.elm +++ b/frontend/src/Pages/Blog/Meatapologetics.elm @@ -1,6 +1,7 @@ module Pages.Blog.Meatapologetics exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.MeatApologetics exposing (articleMeatApologetics) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +127,3 @@ articleList device = ) [ articleMeatApologetics ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleMeatApologetics.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleMeatApologetics.articleImage - , renderDeviceMarkdown articleMeatApologetics.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Nagragoodrich.elm b/frontend/src/Pages/Blog/Nagragoodrich.elm index 8c2e5d0..0642dc1 100755 --- a/frontend/src/Pages/Blog/Nagragoodrich.elm +++ b/frontend/src/Pages/Blog/Nagragoodrich.elm @@ -1,6 +1,7 @@ module Pages.Blog.Nagragoodrich exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,43 +127,3 @@ articleList device = ) [ articleNagraGoodrich ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleNagraGoodrich.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleNagraGoodrich.articleImage - , renderDeviceMarkdown articleNagraGoodrich.articleBody - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Plantbasedmeta.elm b/frontend/src/Pages/Blog/Plantbasedmeta.elm index 6346ad3..b5d2931 100755 --- a/frontend/src/Pages/Blog/Plantbasedmeta.elm +++ b/frontend/src/Pages/Blog/Plantbasedmeta.elm @@ -1,6 +1,7 @@ module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.PlantBasedMeta exposing (articlePlantBasedMeta) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,43 +127,3 @@ articleList device = ) [ articlePlantBasedMeta ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articlePlantBasedMeta.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articlePlantBasedMeta.articleImage - , renderDeviceMarkdown articlePlantBasedMeta.articleBody - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Quacksmashing.elm b/frontend/src/Pages/Blog/Quacksmashing.elm index 33e7dad..175e473 100755 --- a/frontend/src/Pages/Blog/Quacksmashing.elm +++ b/frontend/src/Pages/Blog/Quacksmashing.elm @@ -1,6 +1,7 @@ module Pages.Blog.Quacksmashing exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.QuackSmashing exposing (articleQuackSmashing) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +127,3 @@ articleList device = ) [ articleQuackSmashing ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleQuackSmashing.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleQuackSmashing.articleImage - , renderDeviceMarkdown articleQuackSmashing.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Sapiendiet.elm b/frontend/src/Pages/Blog/Sapiendiet.elm index c75594d..f415f86 100755 --- a/frontend/src/Pages/Blog/Sapiendiet.elm +++ b/frontend/src/Pages/Blog/Sapiendiet.elm @@ -1,6 +1,7 @@ module Pages.Blog.Sapiendiet exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +127,3 @@ articleList device = ) [ articleSapienDiet ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleSapienDiet.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleSapienDiet.articleImage - , renderDeviceMarkdown articleSapienDiet.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Seedoils.elm b/frontend/src/Pages/Blog/Seedoils.elm index 3832ad1..6702854 100755 --- a/frontend/src/Pages/Blog/Seedoils.elm +++ b/frontend/src/Pages/Blog/Seedoils.elm @@ -1,6 +1,7 @@ module Pages.Blog.Seedoils exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +127,3 @@ articleList device = ) [ articleSeedOils ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleSeedOils.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleSeedOils.articleImage - , renderDeviceMarkdown articleSeedOils.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Shenanigans.elm b/frontend/src/Pages/Blog/Shenanigans.elm index 5f064af..38cd34a 100755 --- a/frontend/src/Pages/Blog/Shenanigans.elm +++ b/frontend/src/Pages/Blog/Shenanigans.elm @@ -1,6 +1,7 @@ module Pages.Blog.Shenanigans exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.Shenangians exposing (articleShenanigans) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,43 +127,3 @@ articleList device = ) [ articleShenanigans ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleShenanigans.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleShenanigans.articleImage - , renderDeviceMarkdown articleShenanigans.articleBody - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Blog/Sweetdeception.elm b/frontend/src/Pages/Blog/Sweetdeception.elm index 21f4090..d7ca138 100755 --- a/frontend/src/Pages/Blog/Sweetdeception.elm +++ b/frontend/src/Pages/Blog/Sweetdeception.elm @@ -1,6 +1,7 @@ module Pages.Blog.Sweetdeception exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (articleMaker) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -17,45 +18,17 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) -import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) -import Config.Helpers.Markdown exposing (..) -import Config.Helpers.References exposing (makeReference) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar - exposing - ( barMaker - , barPadding - ) -import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Blog.Records.SweetDeception exposing (articleSweetDeception) -import Config.Pages.Blog.Types exposing (BlogArticle) -import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.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) import Layouts import Page exposing (Page) import Route exposing (Route) @@ -90,7 +63,9 @@ type alias Model = init : () -> ( Model, Effect Msg ) init () = ( {} - , Effect.none + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) ) @@ -152,44 +127,3 @@ articleList device = ) [ articleSweetDeception ] ] - - -articleMaker : BlogArticle -> Element msg -articleMaker article = - column - topLevelBox - [ cardMaker - [ cardTitleMaker (String.toUpper articleSweetDeception.articleName) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ articleImage articleSweetDeception.articleImage - , renderDeviceMarkdown articleSweetDeception.articleBody - , articleReferences article - ] - ] - ] - ] - ] - ] - - -articleReferences : BlogArticle -> Element msg -articleReferences article = - column - [ width fill - , height fill - , paddingEach - { top = 10 - , right = 0 - , bottom = 0 - , left = 0 - } - ] - [ column [ width fill, F.size 15, spacing 10 ] <| - List.map2 (\x y -> makeReference x y) - article.articleReferences - (List.range 1 (List.length article.articleReferences)) - ] diff --git a/frontend/src/Pages/Contact.elm b/frontend/src/Pages/Contact.elm index 8943ad7..e50191a 100755 --- a/frontend/src/Pages/Contact.elm +++ b/frontend/src/Pages/Contact.elm @@ -18,26 +18,21 @@ import Config.Helpers.CardFormat , topLevelBox ) import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) -import Config.Helpers.StrengthBar +import Config.Helpers.ServiceFormat exposing - ( barMaker - , barPadding + ( chunkMaker + , titleMaker ) import Config.Helpers.ToolTip exposing (..) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Contact.Types exposing (..) -import Config.Pages.Interviews.Types exposing (..) -import Config.Pages.Products.Types exposing (..) import Config.Style.Colour exposing (colourTheme) import Config.Style.Transitions exposing @@ -185,48 +180,16 @@ instructionBody = , right = 0 } ] - [ paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + [ chunkMaker [ text "The following terms may seem unreasonable to some, but after years on a large platform, I've learned the importance of filtering the criticisms I receive. Most feedback I receive is just vague gesturing and lacks substance, making some sort of quality filter essential. Thank you for your patience and understanding." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "Please keep in mind that any failure to comply with the following terms and conditions will forfeit your access to my time and attention. I ask that you respect my time and read these terms carefully. You are the one requesting an audience with me, and my time is mine to donate as I see fit. If you wish to submit your criticisms, you must do so on my terms, following the rules and conditions that streamline the process for me." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ F.center - , width fill - , paddingEach - { top = 10 - , bottom = 10 - , left = 0 - , right = 0 - } - ] - ) - [ el - [ F.color colourTheme.textLightOrange - , F.size 18 - ] - <| - text "Terms and Conditions" + , column + [ centerX + , width fill + ] + [ divider + , titleMaker (String.toUpper "Terms and Conditions") ] , column [ spacing 10 ] <| List.indexedMap @@ -255,38 +218,11 @@ instructionBody = ] ) termsAndConditions - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ F.center - , width fill - , paddingEach - { top = 10 - , bottom = 10 - , left = 0 - , right = 0 - } - ] - ) - [ el - [ F.color colourTheme.textLightOrange - , F.size 18 - ] - <| - text "Additional Clarifications" + , column [ centerX, width fill ] + [ divider + , titleMaker (String.toUpper "Additional Clarifications") ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "• " , text "You are only allowed to post one criticism at a time in the " , newTabLink [] @@ -295,35 +231,11 @@ instructionBody = } , text " channel. You may post an additional criticism only after the previous one has been addressed and resolved to my satisfaction. This policy aims to reduce spamming, rambling, and Gish galloping, and to encourage linear discourse." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "• ", text "You may or may not be asked to voice chat about your criticism. While your willingness to engage in voice chat is a necessary condition for submitting your criticism, it does not guarantee that a voice chat will be requested. If your initial criticism is clear and I agree with it, then no voice chat will be required." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "• ", text "You may or may not be asked to have your criticism formalized. While your willingness to have your criticism formalized is a necessary condition for submitting your criticism, it does not guarantee that a formalization will be requested. If your initial criticism is clear and I agree with it, then no formalization will be required." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "• " , text "If I find it necessary to access a text-based channel (for simple clarifying questions, for example), then either I or a moderator will open a new thread in the " , newTabLink [] @@ -332,15 +244,7 @@ instructionBody = } , text " channel. There we can then engage in a text-based discussion and/or ping other users if needed." ] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft - , width fill - ] - ) + , chunkMaker [ text "• ", text "I will only request that your criticism be formalized if I do not understand it and we have exhausted all other reasonable means of clarification. If formalization is requested, you will not need to do it yourself, as I recognize that not everyone understands formal logic. If formalization is requested and I am unavailable to assist you, you may ping the @Logic role, and another user may help you." ] ] diff --git a/frontend/src/Pages/Debate.elm b/frontend/src/Pages/Debate.elm index 81414b0..1fdb2e3 100755 --- a/frontend/src/Pages/Debate.elm +++ b/frontend/src/Pages/Debate.elm @@ -29,24 +29,23 @@ import Config.Helpers.CardFormat import Config.Helpers.Converters exposing (formatName) import Config.Helpers.Format exposing - ( paragraphFontSize + ( headerFontSizeSmall + , paragraphFontSize , paragraphSpacing ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) +import Config.Helpers.ServiceFormat exposing (chunkMaker) import Config.Helpers.Viewport exposing (resetViewport) -import Config.Pages.Debate.Arguments.List exposing (argumentListNumber) -import Config.Pages.Debate.Cuckery.List exposing (cuckListNumber) -import Config.Pages.Debate.Gibberish.List exposing (gibberishListNumber) +import Config.Pages.Debate.Arguments.List exposing (argumentList) +import Config.Pages.Debate.Cuckery.List exposing (cuckList) +import Config.Pages.Debate.Gibberish.List exposing (gibberishList) import Config.Pages.Debate.Types exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Style.Colour as T exposing (colourTheme) import Config.Style.Glow exposing @@ -219,7 +218,7 @@ mobileDebateMaker debate = [ mobileCardMaker mobileImageBoxSize mobileImageSize (debateImage debate) debate.debateLink , column [ width fill ] - [] + [ descriptionMaker debate ] ] ] ] @@ -247,13 +246,12 @@ descriptionMaker debate = , centerX , spacing 3 ] - [ row [] + [ row [ spacing 5 ] [ paragraph [ F.color colourTheme.textLightOrange , paragraphSpacing - , paragraphFontSize , F.bold - , F.size 18 + , headerFontSizeSmall , E.width fill ] [ if debate.debateTitle == "Arguments" then @@ -267,27 +265,18 @@ descriptionMaker debate = else text "" - , text (String.fromInt debate.debateCount) - |> el - [ F.color colourTheme.textLightGrey - , F.regular - , F.size 16 - ] ] + , text (String.fromInt debate.debateCount) + |> el + [ F.color colourTheme.textLightGrey + , F.regular + , F.size 16 + ] ] - , row [ width fill ] - [ paragraph - [ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , spacing 3 - , F.regular - , F.alignLeft - , F.size 16 - ] + , el [ width fill ] <| + chunkMaker [ text debate.debateDescription ] - ] ] @@ -299,7 +288,7 @@ debateArguments = in { debateTitle = name , debateLink = Path.toString Path.Debate_Arguments - , debateCount = argumentListNumber + , debateCount = List.length argumentList , debateImage = formatName name , isNewTabLink = False , debateDescription = "This page features arguments that I hold to be sound, though with varying degrees of confidence. I'm open to hearing all challenges, as I am ready to engage with any substantive critiques and defend any argument listed. I have additionally included a confidence meter with each argument to give readers a clearer understanding of how strongly I hold to the argument." @@ -314,7 +303,7 @@ debateCuckList = in { debateTitle = name , debateLink = Path.toString Path.Debate_Cucklist - , debateCount = cuckListNumber + , debateCount = List.length cuckList , debateImage = formatName name , isNewTabLink = False , debateDescription = "This page features a list of complete fucking morons who wrote cheques with their mouths that their asses ultimately couldn't cash. Each person included in this list has dodged debating me in some way, shape, or form. Whether it's simply ignoring invitations, or outright refusing to engage, or agreeing to debate and then subsequently withdrawing. All such instances are catalogued here." @@ -329,7 +318,7 @@ debateGibberish = in { debateTitle = name , debateLink = Path.toString Path.Debate_Gibberish - , debateCount = gibberishListNumber + , debateCount = List.length gibberishList , debateImage = formatName name , isNewTabLink = False , debateDescription = "This page is specifically for terms and ostensible concepts that I don't have a good reason to believe are understandable from at least one viewpoint. If the clarification of a philosophical term is unsatisfying or unsuccessful, and my interlocutor has exhausted all means of rendering the concept to me, the term ends up here until someone explains to me what the fuck it even means." diff --git a/frontend/src/Pages/Debate/Arguments.elm b/frontend/src/Pages/Debate/Arguments.elm index 42c0aff..f3265b3 100755 --- a/frontend/src/Pages/Debate/Arguments.elm +++ b/frontend/src/Pages/Debate/Arguments.elm @@ -21,11 +21,8 @@ import Config.Helpers.Format ( paragraphFontSize , paragraphSpacing ) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -41,9 +38,9 @@ import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Debate.Arguments.List exposing ( argumentList - , argumentListNumber ) import Config.Pages.Debate.Arguments.Types exposing (..) +import Config.Helpers.Converters exposing (toTitleCase) import Config.Style.Colour exposing (colourTheme) import Config.Style.Glow exposing @@ -693,7 +690,7 @@ formalizationMaker argument padding = [ F.color colourTheme.textLightOrange , F.bold , spacing 3 - , F.size 17 + , paragraphFontSize ] [ text (if entryIndex < List.length argumentEntry.premises then diff --git a/frontend/src/Pages/Debate/Cucklist.elm b/frontend/src/Pages/Debate/Cucklist.elm index 1fabbc6..99156b0 100755 --- a/frontend/src/Pages/Debate/Cucklist.elm +++ b/frontend/src/Pages/Debate/Cucklist.elm @@ -22,6 +22,8 @@ import Config.Helpers.Format ( paragraphFontSize , paragraphSpacing ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -34,11 +36,6 @@ import Config.Pages.Debate.Cuckery.List , cuckListNumber ) import Config.Pages.Debate.Cuckery.Types exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Style.Colour exposing (colourTheme) import Config.Style.Transitions exposing diff --git a/frontend/src/Pages/Debate/Gibberish.elm b/frontend/src/Pages/Debate/Gibberish.elm index 96d5127..d171637 100755 --- a/frontend/src/Pages/Debate/Gibberish.elm +++ b/frontend/src/Pages/Debate/Gibberish.elm @@ -21,6 +21,8 @@ import Config.Helpers.Format ( paragraphFontSize , paragraphSpacing ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -34,7 +36,8 @@ import Config.Helpers.StrengthBar import Config.Helpers.ToolTip exposing (tooltip) import Config.Helpers.Viewport exposing (resetViewport) import Config.Pages.Debate.Arguments.Types exposing (..) -import Config.Pages.Debate.Gibberish.List exposing (gibberishListNumber) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Gibberish.List exposing (gibberishList) import Config.Pages.Debate.Gibberish.Records.Epistemology exposing (epistemologyGibberish) import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish) import Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish) @@ -43,12 +46,6 @@ import Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLang import Config.Pages.Debate.Gibberish.Records.PhilOfMind exposing (philOfMindGibberish) import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish) import Config.Pages.Debate.Gibberish.Types exposing (..) -import Config.Helpers.Header exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Style.Colour exposing (colourTheme) import Effect exposing (Effect) import Element as E exposing (..) diff --git a/frontend/src/Pages/Donate.elm b/frontend/src/Pages/Donate.elm index 25e4ccb..e026140 100755 --- a/frontend/src/Pages/Donate.elm +++ b/frontend/src/Pages/Donate.elm @@ -18,9 +18,12 @@ import Config.Helpers.CardFormat ) import Config.Helpers.Format exposing - ( paragraphFontSize + ( headerFontSizeSmall + , paragraphFontSize , paragraphSpacing ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -42,12 +45,6 @@ import Config.Pages.Donate.Records.PayPal exposing (donatePayPal) import Config.Pages.Donate.Records.Stripe exposing (donateStripe) import Config.Pages.Donate.Records.YouTube exposing (donateYouTube) import Config.Pages.Donate.Types exposing (..) -import Config.Helpers.Header exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Style.Colour as T exposing (..) import Effect exposing (Effect) import Element as E exposing (..) @@ -152,13 +149,13 @@ donateList device = [ donateHeader ] , (case ( device.class, device.orientation ) of ( Phone, Portrait ) -> - List.map donateMakerMobile + List.map (\donate -> donateMakerMobile donate device) ( Tablet, Portrait ) -> - List.map donateMakerMobile + List.map (\donate -> donateMakerMobile donate device) _ -> - List.map donateMaker + List.map (\donate -> donateMaker donate device) ) [ donateLiberaPay , donateStripe @@ -182,20 +179,20 @@ donateHeader = } -donateMaker : Donate -> Element msg -donateMaker donate = +donateMaker : Donate -> Device -> Element msg +donateMaker donate device = row topLevelBox - [ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) (donateLink donate) + [ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) donate.donateLink , cardMaker - [ cardTitleMaker (donateTitle donate) + [ cardTitleMaker donate.donateName , cardFormatter [ cardContentSpacing [ column fieldSpacer [ feeMaker donate , preferenceMaker donate - , tableMaker donate + , tableMaker donate device , proTitleMaker donate , proMaker donate , conTitleMaker donate @@ -207,13 +204,13 @@ donateMaker donate = ] -donateMakerMobile : Donate -> Element msg -donateMakerMobile donate = +donateMakerMobile : Donate -> Device -> Element msg +donateMakerMobile donate device = row topLevelBox [ column [] [] , cardMaker - [ cardTitleMaker (donateTitle donate) + [ cardTitleMaker donate.donateName , cardFormatter [ cardContentSpacing [ column @@ -222,14 +219,14 @@ donateMakerMobile donate = [ mobileCardMaker mobileImageBoxSize mobileImageSize (donateImage donate) - (donateLink donate) + donate.donateLink , column [ width fill ] [ feeMaker donate , preferenceMaker donate ] ] - , tableMakerMobile donate + , tableMaker donate device , proTitleMaker donate , proMaker donate , conTitleMaker donate @@ -253,16 +250,6 @@ donateImage donate = } -donateTitle : Donate -> String -donateTitle donate = - donate.donateName - - -donateLink : Donate -> String -donateLink donate = - donate.donateLink - - donateWidth = width <| px 45 @@ -270,64 +257,64 @@ donateWidth = feeMaker : Donate -> Element msg feeMaker donate = row - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ F.size 18 - , E.width fill - ] - ) + [ F.color colourTheme.textLightOrange + , paragraphSpacing + , F.bold + , headerFontSizeSmall + , E.width fill + , spacing 5 + ] [ column [ alignTop - , donateWidth ] [ text "Fees:" ] - , column + , el [ E.width fill , alignLeft ] - [ paragraph [ F.regular ] - [ el [ F.color colourTheme.textLightOrange ] <| - text donate.donateFees + <| + el + [ F.regular + , paragraphFontSize + , F.color colourTheme.textLightGrey ] - ] + <| + text donate.donateFees ] proTitleMaker : Donate -> Element msg proTitleMaker donate = row - [ F.color colourTheme.textLightGrey + [ F.color colourTheme.textLightOrange , paragraphSpacing - , paragraphFontSize + , headerFontSizeSmall , F.bold ] - [ column + [ el [ alignTop , width <| px 80 ] - [ text "Pros:" - ] + <| + text "Pros:" ] conTitleMaker : Donate -> Element msg conTitleMaker donate = row - [ F.color colourTheme.textLightGrey + [ F.color colourTheme.textLightOrange , paragraphSpacing - , paragraphFontSize + , headerFontSizeSmall , F.bold ] - [ column + [ el [ alignTop , width <| px 80 ] - [ text "Cons:" - ] + <| + text "Cons:" ] @@ -352,16 +339,14 @@ proMaker donate = makePro : Pros -> Element msg makePro pro = column - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - , alignLeft - ] - ++ [ spacing 8 - , width fill - ] - ) + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , paragraphFontSize + , F.bold + , alignLeft + , spacing 8 + , width fill + ] [ paragraph [ F.regular ] [ text ("‣ " ++ pro.pro) ] ] @@ -388,18 +373,17 @@ conMaker donate = makeCon : Cons -> Element msg makeCon con = column - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - , alignLeft - ] - ++ [ spacing 8 - , width fill - ] - ) - [ paragraph [ F.regular ] - [ text ("‣ " ++ con.con) ] + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , paragraphFontSize + , F.bold + , alignLeft + , spacing 8 + , width fill + ] + [ paragraph [ F.regular ] <| + [ text ("‣ " ++ con.con) + ] ] @@ -414,16 +398,13 @@ preferenceMaker donate = , E.alignLeft ] [ paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ F.size 18 - , alignLeft - , E.width fill - ] - ) + [ 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." @@ -435,6 +416,7 @@ preferenceMaker donate = , bottom = 0 , left = 0 } + , F.color colourTheme.textLightOrange ] <| text "Preference:" @@ -486,24 +468,18 @@ getPreferenceTooltip num = "Preference is out of bounds." -tableMaker : Donate -> Element msg -tableMaker donate = +tableMaker : Donate -> Device -> Element msg +tableMaker donate device = column [ centerX , E.width fill ] - [ wrappedRow - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ E.alignLeft - , E.width fill - , htmlAttribute <| H.style "position" "relative" - ] - ) - [ E.table + [ el + [ E.alignLeft + , E.width fill + ] + <| + E.table [ spacing 0 , D.rounded 10 , D.width 2 @@ -513,70 +489,55 @@ tableMaker donate = { data = donate.donateFeatures , columns = List.map createColumn - [ { label = "Zero Fees" - , getter = .free - } - , { label = "Subscriptions" - , getter = .subscriptions - } - , { label = "User Friendly" - , getter = .userFriendly - } - , { label = "Anonymous" - , getter = .anonymous - } - , { label = "Rewards" - , getter = .rewardTiers - } - ] + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + mobileLabels + + ( Tablet, Portrait ) -> + mobileLabels + + _ -> + desktopLabels + ) } - ] ] -tableMakerMobile : Donate -> Element msg -tableMakerMobile donate = - column - [ centerX - , E.width fill - ] - [ wrappedRow - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ E.alignLeft - , E.width fill - , htmlAttribute <| H.style "position" "relative" - ] - ) - [ E.table - [ spacing 0 - , D.rounded 10 - , D.width 2 - , D.color colourTheme.textDarkGrey - , clip - ] - { data = donate.donateFeatures - , columns = - List.map createColumn - [ { label = "Free" - , getter = .free - } - , { label = "Subs" - , getter = .subscriptions - } - , { label = "Easy" - , getter = .userFriendly - } - , { label = "Safe" - , getter = .anonymous - } - ] - } - ] - ] +desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b } +desktopLabels = + [ { label = "Zero Fees" + , getter = .free + } + , { label = "Subscriptions" + , getter = .subscriptions + } + , { label = "User Friendly" + , getter = .userFriendly + } + , { label = "Anonymous" + , getter = .anonymous + } + , { label = "Rewards" + , getter = .rewardTiers + } + ] + + +mobileLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b } -> b } +mobileLabels = + [ { label = "Free" + , getter = .free + } + , { label = "Subs" + , getter = .subscriptions + } + , { label = "Easy" + , getter = .userFriendly + } + , { label = "Safe" + , getter = .anonymous + } + ] createColumn : { label : String, getter : Features -> Maybe Bool } -> Column Features msg diff --git a/frontend/src/Pages/Home_.elm b/frontend/src/Pages/Home_.elm index ae7bc47..85866f4 100755 --- a/frontend/src/Pages/Home_.elm +++ b/frontend/src/Pages/Home_.elm @@ -6,11 +6,8 @@ import Config.Helpers.Format ( paragraphFontSize , paragraphSpacing ) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageListCenter @@ -175,7 +172,7 @@ homePage image = ] ++ [ centerX ] ) - [ text "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." ] + [ text "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic and semantic analysis, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." ] ] ] diff --git a/frontend/src/Pages/Interviews.elm b/frontend/src/Pages/Interviews.elm index 6db8933..19c477c 100755 --- a/frontend/src/Pages/Interviews.elm +++ b/frontend/src/Pages/Interviews.elm @@ -22,6 +22,8 @@ import Config.Helpers.Format ( paragraphFontSize , paragraphSpacing ) +import Config.Helpers.Headers.Header exposing (..) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -34,12 +36,6 @@ import Config.Helpers.StrengthBar ) import Config.Helpers.ToolTip exposing (tooltip) import Config.Helpers.Viewport exposing (resetViewport) -import Config.Helpers.Header exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Pages.Interviews.Records.DrShawnBakerPodcast exposing (drShawnBakerPodcast) import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious) import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery) @@ -195,15 +191,14 @@ interviewMaker : Interview -> Element msg interviewMaker interview = row topLevelBox - [ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) (interviewSocial interview) + [ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) interview.interviewSocial , cardMaker - [ cardTitleMaker (interviewTitle interview) + [ cardTitleMaker interview.interviewName , cardFormatter [ cardContentSpacing [ column fieldSpacer - [ socialMaker interview - , appearanceTitle interview + [ appearanceTitle interview , appearanceMaker interview ] ] @@ -218,13 +213,13 @@ interviewMakerMobile interview = topLevelBox [ column [] [] , cardMaker - [ cardTitleMaker (interviewTitle interview) + [ cardTitleMaker interview.interviewName , cardFormatter [ cardContentSpacing [ column fieldSpacer [ row [ spacing 10 ] - [ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) (interviewSocial interview) + [ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) interview.interviewSocial , socialMaker interview ] , appearanceTitle interview @@ -243,16 +238,6 @@ interviewImage interview = } -interviewTitle : Interview -> String -interviewTitle interview = - interview.interviewName - - -interviewSocial : Interview -> String -interviewSocial interview = - interview.interviewSocial - - socialMaker : Interview -> Element msg socialMaker interview = paragraph @@ -498,7 +483,7 @@ subjectMaker appearanceEntry = subjectList : Appearance -> Element msg subjectList appearanceEntry = - paragraph + column [ spacing 8 , width fill , paddingEach @@ -516,7 +501,7 @@ subjectList appearanceEntry = makeSubject : Subjects -> Element msg makeSubject subjects = - paragraph + el [ E.width fill , alignLeft , paddingEach @@ -526,6 +511,10 @@ makeSubject subjects = , left = 8 } ] - [ paragraph [ F.regular ] - [ text ("‣ " ++ subjects.subject) ] - ] + <| + el + [ F.regular + , paragraphFontSize + ] + <| + text ("‣ " ++ subjects.subject) diff --git a/frontend/src/Pages/NotFound_.elm b/frontend/src/Pages/NotFound_.elm index 3ff33ab..87e0ca9 100755 --- a/frontend/src/Pages/NotFound_.elm +++ b/frontend/src/Pages/NotFound_.elm @@ -16,17 +16,14 @@ import Config.Helpers.CardFormat , mobileImageSize , topLevelBox ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , pageListCenter , topLevelContainer ) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Effect exposing (Effect) import Element as E exposing (..) import Layouts @@ -138,6 +135,8 @@ notFoundList device = none ] + + -- import Config.Data.Identity exposing (pageNames) -- import Config.Helpers.CardFormat -- exposing @@ -183,8 +182,6 @@ notFoundList device = -- import Route.Path -- import Shared -- import View exposing (View) - - -- page : Shared.Model -> Route () -> Page Model Msg -- page shared route = -- Page.new @@ -194,77 +191,44 @@ notFoundList device = -- , view = view shared -- } -- |> Page.withLayout toLayout - - -- toLayout : Model -> Layouts.Layout Msg -- toLayout model = -- Layouts.Navbar {} - - - -- -- INIT - - -- type alias Model = -- { markdown : String } - - -- init : () -> ( Model, Effect Msg ) -- init () = -- ( { markdown = """ - -- markdown goes here! - -- """ } -- , Effect.none -- ) - - - -- -- UPDATE - - -- type Msg -- = NoOp -- | UpdateMarkdown String - - -- update : Msg -> Model -> ( Model, Effect Msg ) -- update msg model = -- case msg of -- NoOp -> -- ( model, Effect.none ) - -- UpdateMarkdown newMarkdown -> -- ( { model | markdown = newMarkdown }, Effect.none ) - - - -- -- SUBSCRIPTIONS - - -- subscriptions : Model -> Sub Msg -- subscriptions model = -- Sub.none - - - -- -- VIEW - - -- view : Shared.Model -> Model -> View Msg -- view shared model = -- { title = pageNames.pageNotFound -- , attributes = [] -- , element = notFoundContainer shared.device model -- } - - -- notFoundContainer : Device -> Model -> Element Msg -- notFoundContainer device model = -- topLevelContainer (notFoundList device model) - - -- notFoundList : Device -> Model -> Element Msg -- notFoundList device model = -- column pageListCenter @@ -277,12 +241,9 @@ notFoundList device = -- , E.centerX -- ] -- renderedMarkdown - -- Err error -> -- E.text error -- ] - - -- renderMarkdown : String -> Result String (List (Element Msg)) -- renderMarkdown markdown = -- markdown diff --git a/frontend/src/Pages/Nutridex.elm b/frontend/src/Pages/Nutridex.elm index b5f2fee..a365d8b 100755 --- a/frontend/src/Pages/Nutridex.elm +++ b/frontend/src/Pages/Nutridex.elm @@ -1,6 +1,8 @@ module Pages.Nutridex exposing (Model, Msg, page) import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (makeReference) +import Config.Helpers.Articles.Types exposing (References) import Config.Helpers.CardFormat exposing ( cardContentSpacing @@ -19,11 +21,12 @@ import Config.Helpers.CardFormat ) import Config.Helpers.Format exposing - ( paragraphFontSize + ( divider + , paragraphFontSize , paragraphSpacing ) -import Config.Helpers.Header exposing (..) -import Config.Helpers.References exposing (..) +import Config.Helpers.Headers.Header exposing (..) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -146,50 +149,39 @@ nutriDexList device = List.concat [ (case ( device.class, device.orientation ) of ( Phone, Portrait ) -> - List.map nutriDexMakerMobile + List.map (\nutridex -> nutriDexMaker nutridex device) ( Tablet, Portrait ) -> - List.map nutriDexMakerMobile + List.map (\nutridex -> nutriDexMaker nutridex device) _ -> - List.map nutriDexMaker + List.map (\nutridex -> nutriDexMaker nutridex device) ) [ productNutriDex ] ] -nutriDexHeader : Header -nutriDexHeader = - let - name = - "NutriDex" - in - { headerTitle = String.toUpper name - , headerBody = "fasdklfjasdlk;fjasdl;fjasdfl;kasjdfl;askdja;lsdkjas;ldfj" - } - - -nutriDexMaker : NutriDex -> Element msg -nutriDexMaker nutridex = +nutriDexMaker : NutriDex -> Device -> Element msg +nutriDexMaker nutridex device = row topLevelBox [ cardMaker - [ cardTitleMaker (nutriDexTitle nutridex) + [ cardTitleMaker (String.toUpper nutridex.nutriDexTitle) , cardFormatter [ cardContentSpacing [ column fieldSpacer [ cardSubTitleMaker - [ featureList nutridex - , nutriDexBodyMaker - , nutriDexAdjustments + [ featureList nutridex device + , nutriDexBodyMaker device + , nutriDexAdjustments device , column [ spacing 10 ] [ nutriDexVitamins , nutriDexFattyAcids , nutriDexMinerals , nutriDexAminoAcids ] - , nutriDexReferences nutridex + , nutriDexReferences nutridex device ] ] ] @@ -198,40 +190,6 @@ nutriDexMaker nutridex = ] -nutriDexMakerMobile : NutriDex -> Element msg -nutriDexMakerMobile nutridex = - row - topLevelBox - [ cardMaker - [ cardTitleMaker (nutriDexTitle nutridex) - , cardFormatter - [ cardContentSpacing - [ column - fieldSpacer - [ cardSubTitleMaker - [ featureListMobile nutridex - , nutriDexBodyMaker - , nutriDexAdjustments - , column [ spacing 10 ] - [ nutriDexVitamins - , nutriDexFattyAcids - , nutriDexMinerals - , nutriDexAminoAcids - ] - , nutriDexReferences nutridex - ] - ] - ] - ] - ] - ] - - -nutriDexTitle : NutriDex -> String -nutriDexTitle nutridex = - String.toUpper nutridex.nutriDexTitle - - makeFeature : Features -> Element msg makeFeature features = column @@ -271,8 +229,8 @@ price = } -featureList : NutriDex -> Element msg -featureList nutridex = +featureList : NutriDex -> Device -> Element msg +featureList nutridex device = column [ spacing 8 , width fill @@ -284,17 +242,48 @@ featureList nutridex = , right = 0 } ] - [ row - [ spacing 20 - , width fill - , height fill - ] + [ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + column + [ spacing 20 + , centerX + ] + + ( Tablet, Portrait ) -> + column + [ spacing 20 + , centerX + ] + + _ -> + row + [ spacing 20 + , width fill + , height fill + ] + ) [ column - [ spacing 20 - ] + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [ spacing 20, centerX ] + + ( Tablet, Portrait ) -> + [ spacing 20, centerX ] + + _ -> + [ spacing 20 ] + ) [ row [ centerX - , E.width <| px 250 + , case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + E.width <| px 150 + + ( Tablet, Portrait ) -> + E.width <| px 150 + + _ -> + E.width <| px 250 ] [ html nutriDexLogo ] @@ -347,93 +336,10 @@ featureList nutridex = ] -featureListMobile : NutriDex -> Element msg -featureListMobile nutridex = - column - [ spacing 8 - , width fill - , height fill - , paddingEach - { top = 10 - , bottom = 0 - , left = 0 - , right = 0 - } - ] - [ column - [ spacing 20 - , centerX - ] - [ row - [ centerX - , E.width <| px 150 - ] - [ html nutriDexLogo - ] - , row - [ D.width 5 - , D.rounded 25 - , centerX - , D.color colourTheme.backgroundLightGrey - , B.color colourTheme.backgroundLightGrey - ] - [ row - [ B.color colourTheme.textDarkOrange - , D.rounded 30 - , F.size 25 - , F.bold - , paddingEach - { top = 10 - , right = 25 - , bottom = 10 - , left = 25 - } - ] - [ price - ] - ] - , column - [ centerX ] - [ column - [ F.size 18 - , F.bold - , F.color colourTheme.textLightOrange - ] - [ newTabLink [] - { url = "https://drive.google.com/file/d/1sk7VgjuL2rEqQdnBRdZjr2_Ab9vwrbmo/view?usp=sharing" - , label = - paragraph - [ centerX - , centerY - ] - [ text "Free Cost Efficiency Score!" ] - } - ] - ] - ] - , column [ width fill, F.size 12, spacing 3 ] <| - List.map2 (\x y -> makeFeature x) - nutridex.nutriDexFeatures - (List.range 1 (List.length nutridex.nutriDexFeatures)) - ] - - nutriDexTitleMaker : String -> Element msg nutriDexTitleMaker title = - column - [ width fill - , height fill - , spacing 20 - , paddingEach { top = 0, bottom = 0, left = 100, right = 100 } - ] - [ row - [ width fill - , centerX - , D.widthEach { bottom = 1, top = 0, left = 0, right = 0 } - , D.color colourTheme.textLightOrange - , paddingEach { top = 40, bottom = 0, left = 0, right = 0 } - ] - [] + column [ centerX, width fill ] + [ divider , paragraph ([ F.color colourTheme.textLightGrey , paragraphSpacing @@ -465,8 +371,8 @@ linkFormat = ] -nutriDexBodyMaker : Element msg -nutriDexBodyMaker = +nutriDexBodyMaker : Device -> Element msg +nutriDexBodyMaker device = column [ width fill , height fill @@ -557,22 +463,21 @@ referenceFormat = ] -nutriDexAdjustments : Element msg -nutriDexAdjustments = +nutriDexAdjustments : Device -> Element msg +nutriDexAdjustments device = column [ width fill , height fill , spacing 20 ] [ nutriDexTitleMaker "Nutrient Density Score Adjustments" - , row [] - [ paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - ] - ++ [ F.alignLeft, width fill ] - ) + , el [] <| + paragraph + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , paragraphFontSize + , F.alignLeft + ] [ text "• " , text "No adjustments are made to vitamin B1, vitamin B2, vitamin B3, manganese, phosphorus, and potassium, due to their DRIs only representing total daily intake, or due to the nutrient having close to 100% bioavailability. " , row [ F.regular, F.size 12 ] @@ -612,25 +517,22 @@ nutriDexAdjustments = } ] ] - ] ] nutridexSubTitleMaker : String -> Element msg nutridexSubTitleMaker title = - paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ F.alignLeft - , width fill - , F.size 18 - , F.color colourTheme.textLightOrange - ] - ) - [ text title ] + el + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , paragraphFontSize + , F.bold + , width fill + , F.size 18 + , F.color colourTheme.textLightOrange + ] + <| + text title nutriDexVitamins : Element msg @@ -1062,7 +964,7 @@ nutriDexAminoAcids = , left = 0 } ] - [ nutridexSubTitleMaker "Amino Acids" + [ nutridexSubTitleMaker (String.toUpper "Amino Acids") ] , row [] [ paragraph @@ -1104,73 +1006,15 @@ nutriDexAminoAcids = ] -nutriDexReferenceTitleMaker : Element msg -nutriDexReferenceTitleMaker = - column - [ width fill - , height fill - , spacing 20 - ] - [ row - [ width fill - , centerX - , D.widthEach { bottom = 1, top = 0, left = 0, right = 0 } - , D.color colourTheme.textLightOrange - , paddingEach { top = 40, bottom = 0, left = 0, right = 0 } - ] - [] - , paragraph - ([ F.color colourTheme.textLightGrey - , paragraphSpacing - , paragraphFontSize - , F.bold - ] - ++ [ centerX - , F.size 25 - , F.color colourTheme.textLightOrange - , paddingEach - { top = 10 - , right = 0 - , bottom = 10 - , left = 0 - } - ] - ) - [ text "References" ] - ] - - -nutriDexReferences : NutriDex -> Element msg -nutriDexReferences nutridex = +nutriDexReferences : NutriDex -> Device -> Element msg +nutriDexReferences nutridex device = column [ width fill , height fill ] - [ nutriDexTitleMaker "Reference" + [ nutriDexTitleMaker "BIBLIOGRAPHY" , column [ width fill, F.size 15, spacing 10 ] <| List.map2 (\x y -> makeReference x y) nutridex.nutriDexReference (List.range 1 (List.length nutridex.nutriDexReference)) ] - - -makeReference : References -> Int -> Element msg -makeReference references index = - paragraph - [ F.regular - , F.alignLeft - ] - [ row [] - [ newTabLink - [ F.bold - , F.color colourTheme.textLightOrange - , hoverFontDarkOrange - , transitionStyleFast - ] - { url = references.link, label = text (String.fromInt index ++ ". ") } - , text references.author - , text references.title - , text references.journal - , text references.year - ] - ] diff --git a/frontend/src/Pages/Services.elm b/frontend/src/Pages/Services.elm index ba5b63d..801cfba 100755 --- a/frontend/src/Pages/Services.elm +++ b/frontend/src/Pages/Services.elm @@ -19,10 +19,12 @@ import Config.Helpers.CardFormat ) import Config.Helpers.Format exposing - ( paragraphFontSize + ( headerFontSizeSmall + , paragraphFontSize , paragraphSpacing ) -import Config.Helpers.Header exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList @@ -221,7 +223,7 @@ serviceWidth = rateMaker : Service msg -> Element msg rateMaker service = row - ([ F.color colourTheme.textLightGrey + ([ F.color colourTheme.textLightOrange , paragraphSpacing , paragraphFontSize , F.bold @@ -240,10 +242,13 @@ rateMaker service = [ E.width fill , alignLeft ] - [ paragraph [ F.regular ] - [ el [ F.color colourTheme.textLightOrange ] <| - E.text service.serviceRate + [ el + [ F.regular + , paragraphFontSize + , F.color colourTheme.textLightGrey ] + <| + E.text service.serviceRate ] ] @@ -251,9 +256,9 @@ rateMaker service = descriptionMaker : Service msg -> Element msg descriptionMaker service = row - [ F.color colourTheme.textLightGrey + [ F.color colourTheme.textLightOrange , paragraphSpacing - , paragraphFontSize + , headerFontSizeSmall , F.bold ] [ column diff --git a/frontend/src/Pages/Services/Analysis.elm b/frontend/src/Pages/Services/Analysis.elm index 9248581..e57b055 100755 --- a/frontend/src/Pages/Services/Analysis.elm +++ b/frontend/src/Pages/Services/Analysis.elm @@ -1,14 +1,10 @@ module Pages.Services.Analysis exposing (Model, Msg, page) -import Config.Helpers.ArticleFormat exposing (..) import Config.Helpers.CardFormat exposing (..) import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing (pageList, topLevelContainer) +import Config.Helpers.ServiceFormat exposing (..) import Config.Helpers.ToolTip exposing (..) import Config.Pages.Services.Records.DebateAnalysis exposing (..) import Config.Style.Colour exposing (colourTheme) diff --git a/frontend/src/Pages/Services/Coaching.elm b/frontend/src/Pages/Services/Coaching.elm index e5c474e..53c2b27 100755 --- a/frontend/src/Pages/Services/Coaching.elm +++ b/frontend/src/Pages/Services/Coaching.elm @@ -1,19 +1,16 @@ module Pages.Services.Coaching exposing (Model, Msg, page) -import Config.Helpers.ArticleFormat exposing (..) import Config.Helpers.CardFormat exposing (..) import Config.Helpers.Format exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) +import Config.Helpers.ServiceFormat exposing (..) import Config.Helpers.ToolTip exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching) import Config.Style.Colour exposing (colourTheme) import Config.Style.Transitions diff --git a/frontend/src/Pages/Services/Elm.elm b/frontend/src/Pages/Services/Elm.elm index 4c7b0ee..09f2553 100755 --- a/frontend/src/Pages/Services/Elm.elm +++ b/frontend/src/Pages/Services/Elm.elm @@ -1,19 +1,16 @@ module Pages.Services.Elm exposing (Model, Msg, page) -import Config.Helpers.ArticleFormat exposing (..) import Config.Helpers.CardFormat exposing (..) import Config.Helpers.Format exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) +import Config.Helpers.ServiceFormat exposing (..) import Config.Helpers.ToolTip exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds) import Config.Style.Colour exposing (..) import Config.Style.Transitions diff --git a/frontend/src/Pages/Services/Nix.elm b/frontend/src/Pages/Services/Nix.elm index 677e72b..03d0573 100755 --- a/frontend/src/Pages/Services/Nix.elm +++ b/frontend/src/Pages/Services/Nix.elm @@ -1,19 +1,16 @@ module Pages.Services.Nix exposing (Model, Msg, page) -import Config.Helpers.ArticleFormat exposing (..) import Config.Helpers.CardFormat exposing (..) import Config.Helpers.Format exposing (..) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) +import Config.Helpers.ServiceFormat exposing (..) import Config.Helpers.ToolTip exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) import Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds) import Config.Style.Colour exposing (..) import Config.Style.Transitions diff --git a/frontend/src/Pages/Services/Nutrition.elm b/frontend/src/Pages/Services/Nutrition.elm index 22336b8..29e25ec 100755 --- a/frontend/src/Pages/Services/Nutrition.elm +++ b/frontend/src/Pages/Services/Nutrition.elm @@ -1,18 +1,15 @@ module Pages.Services.Nutrition exposing (Model, Msg, page) -import Config.Helpers.ArticleFormat exposing (..) import Config.Helpers.CardFormat exposing (..) import Config.Helpers.Format exposing (..) -import Config.Helpers.Header - exposing - ( Header - , headerMaker - ) +import Config.Helpers.Headers.Header exposing (headerMaker) +import Config.Helpers.Headers.Types exposing (Header) import Config.Helpers.Response exposing ( pageList , topLevelContainer ) +import Config.Helpers.ServiceFormat exposing (..) import Config.Helpers.ToolTip exposing (..) import Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience) import Config.Style.Colour exposing (colourTheme) diff --git a/frontend/static/arguments/luigiterrorist.png b/frontend/static/arguments/luigiterrorist.png new file mode 100644 index 0000000..905f0a3 Binary files /dev/null and b/frontend/static/arguments/luigiterrorist.png differ diff --git a/frontend/static/services/customelmsites.png b/frontend/static/services/customelmsites.png index f118c27..192ee82 100755 Binary files a/frontend/static/services/customelmsites.png and b/frontend/static/services/customelmsites.png differ diff --git a/frontend/static/services/customnixconfigs.png b/frontend/static/services/customnixconfigs.png index ff09f17..b4a90e4 100755 Binary files a/frontend/static/services/customnixconfigs.png and b/frontend/static/services/customnixconfigs.png differ diff --git a/frontend/static/services/debateanalysis.png b/frontend/static/services/debateanalysis.png index b216e8a..7cef2d6 100755 Binary files a/frontend/static/services/debateanalysis.png and b/frontend/static/services/debateanalysis.png differ diff --git a/frontend/static/services/debatecoaching.png b/frontend/static/services/debatecoaching.png old mode 100755 new mode 100644 index 2f5a571..13300ba Binary files a/frontend/static/services/debatecoaching.png and b/frontend/static/services/debatecoaching.png differ diff --git a/frontend/static/services/nutritionscience.png b/frontend/static/services/nutritionscience.png index 512fa3e..5f774d9 100755 Binary files a/frontend/static/services/nutritionscience.png and b/frontend/static/services/nutritionscience.png differ