feat: v1 finally done?

This commit is contained in:
Nick 2025-01-02 02:33:57 -06:00
parent 9f8d9c3146
commit 07b9330264
245 changed files with 3140 additions and 2197 deletions

View file

@ -1,35 +1,25 @@
module Pages.Blog exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Data.ImageFolders as M exposing (ImageFolder(..), imagePathMaker)
import Config.Helpers.Articles.Article exposing (extractFirstWords)
import Config.Helpers.Cards.Inner.Helpers
import Config.Helpers.Articles.Markdown exposing (renderDeviceMarkdownNoToc)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
, detailTitleMaker
)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters
exposing
( formatName
, wordCount
)
import Config.Helpers.Format
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (blogHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Markdown
exposing
( renderDeviceMarkdown
, renderDeviceMarkdownNoToc
)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
@ -47,21 +37,39 @@ import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet)
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils)
import Config.Pages.Blog.Records.Shenangians exposing (articleShenanigans)
import Config.Pages.Blog.Records.SweetDeception exposing (articleSweetDeception)
import Config.Pages.Blog.Types exposing (..)
import Config.Style.Colour.Helpers as T exposing (..)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Style.Colour.Helpers as T exposing (ThemeColor(..))
import Config.Style.Fonts
exposing
( defaultFontSize
, paragraphSpacing
)
import Config.Style.Icons.Icons exposing (construction)
import Config.Style.Images exposing (imageSquareMaker)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, alignTop
, column
, el
, none
, paddingEach
, px
, row
, text
, width
)
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Route.Path as Path
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.BigFatSurprise exposing (articleBigFatSurprise)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Everettvegans exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.EverettVegans exposing (articleEverettVegans)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -53,6 +58,8 @@ init () =
(Effect.sendCmd resetViewport)
)
-- UPDATE
@ -104,12 +111,7 @@ articleList device =
)
<|
List.concat
[ -- List.map (headerMaker device)
-- [
-- servicesHeader
-- ]
-- ,
List.map
[ List.map
(\article ->
cardMaker device (C.BlogArticle article) (contentList article [])
)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Huntergatherers exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -54,6 +59,7 @@ init () =
)
-- UPDATE
@ -105,12 +111,7 @@ articleList device =
)
<|
List.concat
[ -- List.map (headerMaker device)
-- [
-- servicesHeader
-- ]
-- ,
List.map
[ List.map
(\article ->
cardMaker device (C.BlogArticle article) (contentList article [])
)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Meatapologetics exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.MeatApologetics exposing (articleMeatApologetics)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Nagragoodrich exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -54,6 +59,7 @@ init () =
)
-- UPDATE

View file

@ -3,7 +3,7 @@ module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.PlantBasedMeta exposing (articlePlantBasedMeta)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Quacksmashing exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.QuackSmashing exposing (articleQuackSmashing)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Sapiendiet exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Seedoils exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,7 +3,7 @@ module Pages.Blog.Shenanigans exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.Shenangians exposing (articleShenanigans)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -117,7 +122,3 @@ articleList device =
)
[ articleShenanigans ]
]

View file

@ -3,7 +3,7 @@ module Pages.Blog.Sweetdeception exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -13,11 +13,16 @@ import Config.Helpers.Response
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SweetDeception exposing (articleSweetDeception)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, Element
, column
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -1,55 +1,61 @@
module Pages.Contact exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers
import Config.Data.ImageFolders as M
exposing
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
, numberedListItem
)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Records
exposing
( contactHeader
, nutriDexHeader
)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (contactHeader)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat
exposing
( chunkMaker
, divider
, titleMaker
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Contact.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions
import Config.Pages.Contact.Records
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
( contactCriticism
, contactInquiry
)
import Config.Pages.Contact.Types exposing (Contact)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Images exposing (imageSquareMaker)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, column
, el
, none
, paddingEach
, row
, text
)
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)

View file

@ -1,43 +1,72 @@
module Pages.Contact.Criticism exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyMaker, detailFormat, numberedListItem)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
, detailHeader
, detailTitleMaker
, divider
, numberedListItem
)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Records exposing (contactHeader, nutriDexHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat
exposing
( divider
, titleMaker
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Contact.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Pages.Contact.Records exposing (contactCriticism)
import Config.Pages.Contact.Types exposing (Contact)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Fonts exposing (defaultFontSize)
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 as E
exposing
( Attr
, Attribute
, Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignRight
, alignTop
, centerX
, column
, el
, fill
, newTabLink
, paddingEach
, paragraph
, px
, row
, spacing
, text
, width
)
import Element.Background as B exposing (color)
import Element.Border as D exposing (rounded)
import Element.Font as F
exposing
( alignLeft
, color
)
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -154,13 +183,12 @@ instructionBody device =
[ detailBodyMaker TextLightGrey (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.") ]
, detailFormat paragraph
[ detailBodyMaker TextLightGrey (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.") ]
, column
, el
[ centerX
, width fill
]
[ divider
, titleMaker (String.toUpper "Terms and Conditions")
]
<|
detailHeader (String.toUpper "Terms and Conditions")
, column [ spacing 10 ] <|
List.indexedMap
(\index term ->
@ -173,25 +201,23 @@ instructionBody device =
, alignTop
]
[ numberedListItem TextLightGrey (index + 1) ]
, column
, el
[ spacing 10
, width fill
, alignRight
]
[ paragraph
<|
paragraph
[ width fill
, paragraphFontSize
, defaultFontSize
, F.alignLeft
]
term
]
]
)
(termsAndConditions device)
, column [ centerX, width fill ]
[ divider
, titleMaker (String.toUpper "Additional Clarifications")
]
, el [ centerX, width fill ] <|
detailHeader (String.toUpper "Additional Clarifications")
, detailFormat paragraph
[ detailBodyMaker TextLightGrey (text " ")
, detailBodyMaker TextLightGrey (text "You are only allowed to post one criticism at a time in the ")

View file

@ -1,43 +1,45 @@
module Pages.Contact.Inquiry exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyLink, detailBodyMaker, detailFormat, numberedListItem)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyLink
, detailBodyMaker
, detailFormat
)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Records exposing (contactHeader, nutriDexHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat
exposing
( divider
, titleMaker
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Contact.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Transitions
import Config.Pages.Contact.Records exposing (contactInquiry)
import Config.Pages.Contact.Types exposing (Contact)
import Config.Style.Colour.Helpers
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
( ThemeColor(..)
, colourTheme
)
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.Attributes as H exposing (style)
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, column
, link
, paddingEach
, paragraph
, spacing
, text
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -162,5 +164,3 @@ instructionBody device =
, detailFormat paragraph
[ detailBodyMaker TextLightGrey (text "If you wish to submit a Discord ban appeal, you may do using the provided email address. Please include your user ID and a detailed statement detailing why you believe that you, or someone else, should be unbanned.") ]
]

View file

@ -11,54 +11,61 @@ import Config.Data.Identity
exposing
( pageNames
)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyLink, detailBodyMaker, detailFormat, detailSpacing, detailTitleMaker)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Converters exposing (formatName)
import Config.Helpers.Format
import Config.Data.ImageFolders as M
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyLink
, detailBodyMaker
, detailFormat
, detailSpacing
, detailTitleMaker
)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters exposing (formatName)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (debateHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R 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 (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.Style.Colour.Helpers as T exposing (ThemeColor(..), colourTheme)
import Config.Style.Glow
import Config.Pages.Debate.Types exposing (Debate)
import Config.Style.Colour.Helpers as T
exposing
( glowDeepDarkGrey
, glowDeepDarkOrange
( ThemeColor(..)
, colourTheme
)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions
exposing
( 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 exposing (label)
import Html.Attributes as H
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, column
, el
, none
, paddingEach
, row
, text
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Route.Path as Path
import Shared exposing (..)
import Shared exposing (Model)
import Task
import View exposing (View)

View file

@ -1,69 +1,115 @@
module Pages.Debate.Arguments exposing (Model, Msg, page)
import Browser.Events as Events
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers
import Config.Data.ImageFolders as M
exposing
( argumentButton
, bodyFormat
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Cards.Inner.StrengthBar exposing (barMaker)
import Config.Helpers.Cards.Inner.Text
exposing
( bodyFormat
, detailBodyLink
, detailBodyMaker
, detailFormat
, detailSpacing
, detailTitleMaker
, generalButton
, getHoverColours
)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Helpers.Format
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (argumentHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Headerable(..))
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Arguments.List
exposing
( argumentList
)
import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (Argument)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
, getThemeColor
)
import Config.Style.Glow
import Config.Style.Icons.Icons
exposing
( glowDeepDarkGrey
, glowDeepDarkOrange
( code
, copyLink
, thumbsDown
)
import Config.Style.Icons.Types as TySvg
exposing
( InnerPart
, OuterPart
)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions exposing (transitionStyleSlow)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element as E
exposing
( Attribute
, Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, alignRight
, alignTop
, centerX
, centerY
, clip
, column
, el
, fill
, focused
, height
, htmlAttribute
, maximum
, none
, paddingEach
, paddingXY
, paragraph
, rgba
, row
, spacing
, text
, width
)
import Element.Background as B exposing (color)
import Element.Border as D
exposing
( color
, rounded
, shadow
)
import Element.Font as F
import Html exposing (div, hr)
import Html.Attributes as H exposing (style, title, wrap)
exposing
( bold
, center
, color
)
import Element.Input as Input
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Ports
import Process
import Route exposing (Route)
import Route.Path as Path
import Shared
import Svg.Attributes as SvgAttr
import Task
import View exposing (View)
@ -88,12 +134,12 @@ toLayout model =
type alias Model =
{}
{ hasBeenCopied : List Bool }
init : () -> ( Model, Effect Msg )
init () =
( {}
( { hasBeenCopied = List.repeat 51 False }
, Effect.batch
[ Effect.map
(\_ -> NoOp)
@ -108,12 +154,45 @@ init () =
type Msg
= NoOp
= CopyText String Int
| ResetCopyState Int
| NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
let
urlLinkClickUpdate : Int -> Model
urlLinkClickUpdate index =
{ model
| hasBeenCopied =
List.take index model.hasBeenCopied
++ (case List.head (List.drop index model.hasBeenCopied) of
Just isCLicked ->
[ not isCLicked ]
Nothing ->
[]
-- shouldn't happen
)
++ List.drop (index + 1) model.hasBeenCopied
}
in
case msg of
CopyText text index ->
( urlLinkClickUpdate index
, Effect.batch
[ Effect.sendCmd (Ports.copyToClipboard text)
, Effect.sendCmd (Process.sleep 700 |> Task.perform (\_ -> ResetCopyState index))
]
)
ResetCopyState index ->
( urlLinkClickUpdate index
-- wrong lol
, Effect.none
)
NoOp ->
( model
, Effect.none
@ -137,17 +216,17 @@ view : Shared.Model -> Model -> View Msg
view shared model =
{ title = "debate (" ++ pageNames.pageArguments ++ ")"
, attributes = []
, element = debateContainer shared
, element = debateContainer shared model
}
debateContainer : Shared.Model -> Element msg
debateContainer shared =
topLevelContainer (debateList shared)
debateContainer : Shared.Model -> Model -> Element Msg
debateContainer shared model =
topLevelContainer (debateList shared model)
debateList : Shared.Model -> Element msg
debateList shared =
debateList : Shared.Model -> Model -> Element Msg
debateList shared model =
column
(case ( shared.device.class, shared.device.orientation ) of
_ ->
@ -156,16 +235,20 @@ debateList shared =
<|
List.concat
[ [ headerMaker (R.Arguments argumentHeader) ]
, List.map
(\argument ->
cardMaker shared.device (C.Argument argument) (contentList shared argument)
, List.map3
(\argument dummy index ->
cardMaker shared.device
(C.Argument argument)
(contentList shared model dummy index argument)
)
argumentList
model.hasBeenCopied
(List.range 0 (List.length argumentList))
]
contentList : Shared.Model -> Argument -> List (Element msg)
contentList shared argument =
contentList : Shared.Model -> Model -> Bool -> Int -> Argument -> List (Element Msg)
contentList shared model isLinkClicked index argument =
let
image : String -> Element msg
image size =
@ -223,18 +306,67 @@ contentList shared argument =
, formalizationMaker shared.device argument
, el [ alignRight ] <|
row [ width fill, spacing 20 ]
[ argumentButton (Path.toString Path.Contact_Criticism) "Reject Premise"
, argumentButton argument.proofLink "Proof Tree"
[ generalButton shared (Path.toString Path.Contact_Criticism) thumbsDown
, generalButton shared argument.proofLink code
, copyButton shared model isLinkClicked index argument
]
]
copyButton : Shared.Model -> Model -> Bool -> Int -> Argument -> Element Msg
copyButton shared model isLinkClicked index argument =
Input.button
[ focused
[ D.color (rgba 0 0 0 0)
, D.shadow { blur = 0, color = rgba 0 0 0 0, offset = ( 0, 0 ), size = 0 }
]
]
{ onPress = Just (CopyText ("https://uprootnutrition.com" ++ Path.toString Path.Debate_Arguments ++ "#" ++ argument.argumentImage) index)
, label =
el
(if isLinkClicked then
[ transitionStyleSlow
, tooltip "Copied!" False
, case ( shared.device.class, shared.device.orientation ) of
( Phone, Portrait ) ->
B.color (getThemeColor BackgroundDarkGrey)
( Tablet, Portrait ) ->
B.color (getThemeColor BackgroundDarkGrey)
_ ->
B.color (getThemeColor BackgroundDeepDarkGrey)
, paddingXY 7 7
, D.rounded 10
, F.color (getThemeColor TextLightOrange)
]
else
[ transitionStyleSlow
, B.color (getThemeColor Transparent)
, paddingXY 7 7
, D.rounded 10
, F.color (getThemeColor TextLightOrange)
]
++ getHoverColours TextLightOrange
)
<|
copyLink
{ elementAttributes =
[]
, sharedModel = shared
, svgAttributes = [ SvgAttr.width "20" ]
}
}
strengthMaker : Shared.Model -> Element msg
strengthMaker shared =
el
(if not shared.isNavbarExpanded then
[ tooltip
"This represents my confidence in the soundness of the argument."
"This represents how pleasant the host was to engage with."
True
]
else
@ -303,15 +435,15 @@ tableMaker device argument =
E.table
([ D.rounded 10
, D.width 2
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, clip
]
++ (case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ]
[ B.color (getThemeColor BackgroundSpreadsheet) ]
( Tablet, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ]
[ B.color (getThemeColor BackgroundSpreadsheet) ]
_ ->
[]
@ -328,7 +460,7 @@ tableMaker device argument =
, left = 1
, right = 1
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, cellPadding
, E.width fill
]
@ -346,7 +478,7 @@ tableMaker device argument =
, left = 1
, right = 1
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, cellPadding
, E.height fill
]
@ -366,7 +498,7 @@ tableMaker device argument =
, left = 0
, right = 1
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, cellPadding
, E.width fill
]
@ -382,7 +514,7 @@ tableMaker device argument =
, left = 0
, right = 1
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, cellPadding
, E.height fill
]

View file

@ -1,38 +1,55 @@
module Pages.Debate.Cucklist exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyMaker, detailFormat, detailSpacing, detailTitleLink, detailTitleMaker, numberedListItem)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Converters exposing (formatSocial)
import Config.Helpers.Format
import Config.Data.ImageFolders as M
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
, smallTextFontSize
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
, detailSpacing
, detailTitleLink
, detailTitleMaker
, getHoverColours
, numberedListItem
)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters exposing (formatSocial)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (cuckListHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Headerable(..))
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ToolTip exposing (tooltipImage)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Cuckery.List
import Config.Pages.Debate.Cuckery.List exposing (cuckList)
import Config.Pages.Debate.Cuckery.Types
exposing
( cuckList
, cuckListNumber
( Cuck
, Dodge
, DodgeDescription(..)
, DodgeFallacies(..)
, DoxasticState(..)
, Evaluation(..)
)
import Config.Pages.Debate.Cuckery.Types exposing (..)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
, getThemeColor
)
import Config.Style.Fonts exposing (smallTextFontSize)
import Config.Style.Icons.Icons exposing (copyLink)
import Config.Style.Icons.Types as TySvg
exposing
( InnerPart
, OuterPart
)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions
@ -42,15 +59,50 @@ import Config.Style.Transitions
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignRight
, alignTop
, column
, el
, fill
, focused
, htmlAttribute
, newTabLink
, none
, paddingEach
, paddingXY
, paragraph
, px
, rgba
, row
, spacing
, text
, width
)
import Element.Background as B exposing (color)
import Element.Border as D
import Element.Font as F
import Html.Attributes as H
exposing
( color
, rounded
, shadow
)
import Element.Font as F exposing (color)
import Element.Input as Input
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Ports
import Process
import Route exposing (Route)
import Route.Path as Path
import Shared
import Svg.Attributes as SvgAttr
import Task
import View exposing (View)
@ -75,15 +127,18 @@ toLayout model =
type alias Model =
{}
{ hasBeenCopied : List Bool }
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
( { hasBeenCopied = List.repeat 51 False }
, Effect.batch
[ Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
, Effect.none
]
)
@ -92,12 +147,44 @@ init () =
type Msg
= NoOp
= CopyText String Int
| ResetCopyState Int
| NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
let
urlLinkClickUpdate : Int -> Model
urlLinkClickUpdate index =
{ model
| hasBeenCopied =
List.take index model.hasBeenCopied
++ (case List.head (List.drop index model.hasBeenCopied) of
Just isCLicked ->
[ not isCLicked ]
Nothing ->
-- shouldn't happen
[]
)
++ List.drop (index + 1) model.hasBeenCopied
}
in
case msg of
CopyText text index ->
( urlLinkClickUpdate index
, Effect.batch
[ Effect.sendCmd (Ports.copyToClipboard text)
, Effect.sendCmd (Process.sleep 700 |> Task.perform (\_ -> ResetCopyState index))
]
)
ResetCopyState index ->
( urlLinkClickUpdate index
, Effect.none
)
NoOp ->
( model
, Effect.none
@ -121,35 +208,37 @@ view : Shared.Model -> Model -> View Msg
view shared model =
{ title = "debate (" ++ pageNames.pageCucks ++ ")"
, attributes = []
, element = cucksContainer shared.device
, element = cucksContainer shared model
}
cucksContainer : Device -> Element msg
cucksContainer device =
topLevelContainer (cucksList device)
cucksContainer : Shared.Model -> Model -> Element Msg
cucksContainer shared model =
topLevelContainer (cucksList shared model)
cucksList : Device -> Element msg
cucksList device =
cucksList : Shared.Model -> Model -> Element Msg
cucksList shared model =
column
(case ( device.class, device.orientation ) of
(case ( shared.device.class, shared.device.orientation ) of
_ ->
pageList device
pageList shared.device
)
<|
List.concat
[ [ headerMaker (R.CuckList cuckListHeader) ]
, List.map
(\cuck ->
cardMaker device (C.Cuck cuck) (contentList device cuck)
, List.map3
(\cuck dummy index ->
cardMaker shared.device (C.Cuck cuck) (contentList shared model dummy index cuck)
)
cuckList
model.hasBeenCopied
(List.range 0 (List.length cuckList))
]
contentList : Device -> Cuck -> List (Element msg)
contentList device cuck =
contentList : Shared.Model -> Model -> Bool -> Int -> Cuck -> List (Element Msg)
contentList shared model isLinkClicked index cuck =
let
image : String -> Element msg
image size =
@ -164,10 +253,10 @@ contentList device cuck =
}
]
<|
imageSquareMaker device (imagePathMaker M.Cuck cuck.cuckImage) True size
imageSquareMaker shared.device (imagePathMaker M.Cuck cuck.cuckImage) True size
in
[ detailFormat row
[ case ( device.class, device.orientation ) of
[ case ( shared.device.class, shared.device.orientation ) of
( Phone, Portrait ) ->
none
@ -179,12 +268,60 @@ contentList device cuck =
, detailFormat column
[ socialMaker cuck
, dodgeTitle cuck
, dodgeMaker device cuck
, dodgeMaker shared.device cuck
, el [ alignRight ] <| copyButton shared model isLinkClicked index cuck
]
]
]
copyButton : Shared.Model -> Model -> Bool -> Int -> Cuck -> Element Msg
copyButton shared model isLinkClicked index cuck =
Input.button
[ focused
[ D.color (rgba 0 0 0 0)
, D.shadow { blur = 0, color = rgba 0 0 0 0, offset = ( 0, 0 ), size = 0 }
]
]
{ onPress = Just (CopyText ("https://uprootnutrition.com" ++ Path.toString Path.Debate_Cucklist ++ "#" ++ cuck.cuckImage) index)
, label =
el
(if isLinkClicked then
[ transitionStyleSlow
, tooltip "Copied!" False
, case ( shared.device.class, shared.device.orientation ) of
( Phone, Portrait ) ->
B.color (getThemeColor BackgroundDarkGrey)
( Tablet, Portrait ) ->
B.color (getThemeColor BackgroundDarkGrey)
_ ->
B.color (getThemeColor BackgroundDeepDarkGrey)
, paddingXY 7 7
, D.rounded 10
, F.color (getThemeColor TextLightOrange)
]
else
[ transitionStyleSlow
, B.color (getThemeColor Transparent)
, paddingXY 7 7
, D.rounded 10
, F.color (getThemeColor TextLightOrange)
]
++ getHoverColours TextLightOrange
)
<|
copyLink
{ elementAttributes =
[]
, sharedModel = shared
, svgAttributes = [ SvgAttr.width "20" ]
}
}
dodgeMaker : Device -> Cuck -> Element msg
dodgeMaker device cuck =
column
@ -282,7 +419,7 @@ circumstance cuck dodge =
EmptyHanded ->
"Engaged in written debate and ran away when pressed for specifics"
)
, el [ F.color colourTheme.textLightGrey ] <|
, el [ F.color (getThemeColor TextLightGrey) ] <|
text "."
-- , receipts cuck dodge
@ -308,14 +445,14 @@ receipts cuck dodge =
(\index2 link ->
paragraph
[ alignTop
, F.color colourTheme.textLightOrange
, F.color (getThemeColor TextLightOrange)
]
[ el
[ transitionStyleSlow
, hoverFontDarkOrange
]
(text (String.fromInt (index2 + 1)))
, text ", " |> el [ F.color colourTheme.textLightGrey ]
, text ", " |> el [ F.color (getThemeColor TextLightGrey) ]
]
)
dodge.dodgeReceipts
@ -439,6 +576,7 @@ reductioMaker device dodge =
MechanisticMasturbation ->
displayFallacy "Mechanistic Masturbation"
Vaguemongering ->
displayFallacy "Vaguemongering"

View file

@ -1,33 +1,26 @@
module Pages.Debate.Gibberish exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Helpers.Format
import Config.Data.ImageFolders as M exposing (ImageFolder(..), imagePathMaker)
import Config.Helpers.Cards.Inner.StrengthBar
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
( barMaker
, barPadding
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (gibberishHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat exposing (chunkMaker)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (Argument)
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)
@ -36,16 +29,53 @@ import Config.Pages.Debate.Gibberish.Records.Ontology exposing (ontologyGibberis
import Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLanguageGibberish)
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.Style.Colour.Helpers exposing (colourTheme)
import Config.Pages.Debate.Gibberish.Types
exposing
( Explanation(..)
, Gibberish
, Terms
)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, getThemeColor
)
import Config.Style.Fonts
exposing
( defaultFontSize
, paragraphSpacing
)
import Config.Style.Images exposing (imageSquareMaker)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignTop
, centerX
, column
, el
, fill
, height
, none
, paddingEach
, paragraph
, row
, spacing
, text
, width
)
import Element.Font as F
exposing
( alignLeft
, bold
, center
, color
, regular
)
import Layouts
import List.Extra as L exposing (..)
import Page exposing (Page)
import Route exposing (Route)
import Shared
@ -162,7 +192,7 @@ contentList shared gibberish =
image : String -> Element msg
image size =
el
[ alignLeft
[ E.alignLeft
, paddingEach
{ top = 0
, right = 10
@ -174,9 +204,9 @@ contentList shared gibberish =
imageSquareMaker shared.device (imagePathMaker M.Gibberish gibberish.gibberishImage) True size
in
[ paragraph
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, paragraphSpacing
, paragraphFontSize
, defaultFontSize
, width fill
]
[ case ( shared.device.class, shared.device.orientation ) of
@ -211,9 +241,9 @@ gibberishMakerBody shared gibberish =
, width fill
]
[ paragraph
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, paragraphSpacing
, headerFontSizeSmall
, defaultFontSize
, F.center
]
[ domainList shared gibberish
@ -250,9 +280,9 @@ descriptionMaker gibberish =
, centerX
]
[ paragraph
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, paragraphSpacing
, paragraphFontSize
, defaultFontSize
, spacing 3
, F.regular
, F.alignLeft
@ -265,18 +295,18 @@ descriptionMaker gibberish =
makeTerms : (Terms -> Element msg) -> Int -> Terms -> Element msg
makeTerms bar index terms =
column
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, paragraphSpacing
, paragraphFontSize
, defaultFontSize
, F.bold
, E.alignLeft
, spacing 8
, E.width fill
]
[ row
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, F.regular
, headerFontSizeSmall
, defaultFontSize
, F.bold
, F.alignLeft
, E.width fill
@ -301,7 +331,7 @@ makeTerms bar index terms =
]
[ paragraph
[]
[ el [ F.color colourTheme.textLightOrange ] <|
[ el [ F.color (getThemeColor TextLightOrange) ] <|
text <|
"\""
++ String.toLower terms.term
@ -309,9 +339,9 @@ makeTerms bar index terms =
]
, bar terms
, paragraph
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, F.regular
, paragraphFontSize
, defaultFontSize
, F.alignLeft
]
[ text
@ -339,9 +369,9 @@ intelligibilityBar shared terms =
, E.alignLeft
]
[ paragraph
[ F.color colourTheme.textLightGrey
[ F.color (getThemeColor TextLightGrey)
, F.bold
, headerFontSizeSmall
, defaultFontSize
, paragraphSpacing
, E.alignLeft
, E.width fill
@ -350,6 +380,7 @@ intelligibilityBar shared terms =
(if not shared.isNavbarExpanded then
[ tooltip
tooltipMessage
True
]
else

View file

@ -1,31 +1,38 @@
module Pages.Donate exposing (Model, Msg, page)
import Config.Data.Identity as I exposing (..)
import Config.Helpers.Cards.Inner.Helpers exposing (detailBodyMaker, detailFormat, detailFormatEl, detailTitleMaker, listItem, listMaker)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format
-- import Html.Attributes as H
import Config.Data.Identity exposing (pageNames)
import Config.Data.ImageFolders as M
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Inner.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
, detailTitleMaker
, listItem
, listMaker
)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (donateHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Donate.Records.Cardano exposing (donateCardano)
import Config.Pages.Donate.Records.KoFi exposing (donateKoFi)
import Config.Pages.Donate.Records.LiberaPay exposing (donateLiberaPay)
@ -34,19 +41,59 @@ import Config.Pages.Donate.Records.Patreon exposing (donatePatreon)
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.Style.Colour.Helpers as T exposing (..)
import Config.Pages.Donate.Types
exposing
( Cons
, Donate
, Features
, Pros
)
import Config.Style.Colour.Helpers as T
exposing
( ThemeColor(..)
, getThemeColor
)
import Config.Style.Images exposing (imageSquareMaker)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element as E
exposing
( Column
, Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, alignTop
, centerX
, centerY
, clip
, column
, el
, fill
, padding
, paddingEach
, paragraph
, px
, row
, spacing
, text
)
import Element.Background as B exposing (color)
import Element.Border as D
exposing
( color
, widthEach
)
import Element.Font as F
import Html.Attributes as H
exposing
( bold
, center
, color
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import Task
import View exposing (View)
@ -217,6 +264,7 @@ preferenceMaker shared donate =
(if not shared.isNavbarExpanded then
[ tooltip
"This represents how strongly I prefer a given platform relative to other platforms."
True
]
else
@ -283,15 +331,15 @@ tableMaker donate device =
([ spacing 0
, D.rounded 10
, D.width 2
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, clip
]
++ (case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ]
[ B.color (getThemeColor BackgroundSpreadsheet) ]
( Tablet, Portrait ) ->
[ B.color colourTheme.backgroundSpreadsheet ]
[ B.color (getThemeColor BackgroundSpreadsheet) ]
_ ->
[]
@ -361,18 +409,18 @@ createColumn { label, getter } =
, left = 1
, right = 0
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, padding 5
, E.width fill
, F.center
]
(text label)
|> el [ F.color colourTheme.textLightOrange ]
|> el [ F.color (getThemeColor TextLightOrange) ]
, width = fill
, view =
\feature ->
row
[ F.color colourTheme.textLightOrange
[ F.color (getThemeColor TextLightOrange)
, F.bold
, D.widthEach
{ bottom = 1
@ -380,7 +428,7 @@ createColumn { label, getter } =
, left = 1
, right = 0
}
, D.color colourTheme.textDarkGrey
, D.color (getThemeColor TextDarkGrey)
, padding 5
, E.height fill
]

View file

@ -1,12 +1,7 @@
module Pages.Home_ exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (bodyFormat, detailBodyLink, detailBodyMaker)
import Config.Helpers.Format
exposing
( paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Cards.Inner.Text exposing (detailBodyLink)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
@ -14,7 +9,16 @@ import Config.Helpers.Response
, topLevelContainer
)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Fonts
exposing
( defaultFontSize
, paragraphSpacing
)
import Config.Style.Glow exposing (glowDeepDarkGrey)
import Config.Style.Icons.Icons
exposing
@ -24,17 +28,33 @@ import Config.Style.Icons.Icons
)
import Config.Style.Transitions exposing (transitionStyleMedium)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, centerY
, column
, el
, html
, maximum
, minimum
, newTabLink
, paddingEach
, paragraph
, px
, text
)
import Element.Background as B exposing (color)
import Element.Border as D exposing (rounded)
import Element.Font as F exposing (color)
import Html exposing (Html)
import Html.Attributes as H
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Svg.Attributes as SvgAttr exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -185,7 +205,7 @@ homePage device image =
paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, defaultFontSize
, centerX
]
[ text "upRootNutrition is an "

View file

@ -1,33 +1,45 @@
module Pages.Interviews exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Converters exposing (formatSocial)
import Config.Helpers.Format
import Config.Data.ImageFolders as M
exposing
( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Inner.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyLink
, detailBodyMaker
, detailFormat
, detailFormatEl
, detailSpacing
, detailTitleLinkWide
, detailTitleMaker
, listCounter
, listItem
, listMaker
, listMaker2
, socialMaker
)
import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Converters exposing (formatSocial)
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (interviewHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Cuckery.List exposing (cuckListNumber)
import Config.Pages.Debate.Cuckery.List exposing (cuckList)
import Config.Pages.Interviews.Records.DrShawnBakerPodcast exposing (drShawnBakerPodcast)
import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious)
import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery)
@ -37,25 +49,42 @@ import Config.Pages.Interviews.Records.MarkBellsPowerProject exposing (markBells
import Config.Pages.Interviews.Records.MuscleMemoirsPodcast exposing (muscleMemoirsPodcast)
import Config.Pages.Interviews.Records.SigmaNutritionRadio exposing (sigmaNutritionRadio)
import Config.Pages.Interviews.Records.StrenuousLifePodcast exposing (strenuousLifePodcast)
import Config.Pages.Interviews.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions
import Config.Pages.Interviews.Types
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
( Appearance
, Interview
, Subjects
)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Images exposing (imageSquareMaker)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, alignTop
, column
, el
, fill
, newTabLink
, none
, paddingEach
, row
, text
, width
)
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared
import Shared exposing (Model)
import View exposing (View)
@ -238,6 +267,7 @@ experienceMaker shared appearanceEntry =
(if not shared.isNavbarExpanded then
[ tooltip
"This represents my confidence in the soundness of the argument."
True
]
else

View file

@ -1,23 +1,26 @@
module Pages.NotFound_ exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, pageListCenter
( pageListCenter
, topLevelContainer
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, column
, none
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Route.Path
import Shared
import Shared exposing (Model)
import View exposing (View)

View file

@ -3,58 +3,85 @@ 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.Cards.Inner.Helpers exposing (detailBodyMaker, detailFormat, detailTitleMaker)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Inner.Text
exposing
( headerFontSizeBig
, headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
, smallTextFontSize
( detailBodyMaker
, detailFormat
, detailHeader
, detailTitleMaker
, divider
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (nutriDexHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.Price exposing (buyButton)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat exposing (divider)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Products.Records.NutriDex exposing (productNutriDex)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme)
import Config.Style.Glow exposing (glowDeepDarkGrey)
import Config.Pages.Products.Types exposing (Features, NutriDex)
import Config.Style.Colour.Helpers
exposing
( ThemeColor(..)
, colourTheme
)
import Config.Style.Fonts
exposing
( defaultFontSize
, headerFontSizeBig
, paragraphSpacing
, smallTextFontSize
)
import Config.Style.Icons.Icons exposing (nutriDexLogo)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, hoverPageButtonDeepDarkOrange
, transitionStyleFast
, transitionStyleMedium
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Events as V
import Element as E
exposing
( Attr
, Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, alignTop
, centerX
, centerY
, column
, el
, fill
, height
, html
, mouseOver
, newTabLink
, none
, paddingEach
, paddingXY
, paragraph
, px
, row
, spacing
, text
, width
)
import Element.Font as F
import Html.Attributes as H
exposing
( bold
, center
, color
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -259,7 +286,7 @@ featureList nutridex device =
, column
[ centerX ]
[ column
[ headerFontSizeSmall
[ defaultFontSize
, F.bold
, F.color colourTheme.textLightOrange
]
@ -283,37 +310,11 @@ featureList nutridex device =
]
nutriDexTitleMaker : String -> Element msg
nutriDexTitleMaker title =
column
[ centerX
, width fill
]
[ divider
, paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, F.bold
, centerX
, F.center
, headerFontSizeBig
, F.color colourTheme.textLightOrange
, paddingEach
{ top = 20
, right = 0
, bottom = 0
, left = 0
}
]
[ text (String.toUpper title) ]
]
linkFormat : List (Attr () msg)
linkFormat =
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, defaultFontSize
, F.color colourTheme.textLightOrange
, mouseOver
[ F.color colourTheme.textDarkOrange
@ -325,7 +326,7 @@ linkFormat =
nutriDexBodyMaker : Device -> Element msg
nutriDexBodyMaker device =
column [ spacing 20 ]
[ nutriDexTitleMaker "Backstory"
[ detailHeader "Backstory"
, detailFormat paragraph
[ detailBodyMaker TextLightGrey (text "In May 2019, after losing my job, I sought a way to optimize my diet for nutrient density (ND) while keeping costs low. I initially found a resource called ")
, newTabLink linkFormat
@ -369,7 +370,7 @@ nutriDexBodyMaker device =
referenceFormat : List (Attr () msg)
referenceFormat =
[ paragraphFontSize
[ defaultFontSize
, F.color colourTheme.textLightOrange
, alignTop
, hoverFontDarkOrange
@ -384,7 +385,7 @@ nutriDexAdjustments device =
, height fill
, spacing 20
]
[ nutriDexTitleMaker "Nutrient Density Score Adjustments"
[ detailHeader "Nutrient Density Score Adjustments"
, detailFormat paragraph
[ detailBodyMaker TextLightGrey (text " ")
, detailBodyMaker TextLightGrey (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. ")
@ -686,7 +687,7 @@ nutriDexReferences nutridex device =
[ width fill
, height fill
]
[ nutriDexTitleMaker "BIBLIOGRAPHY"
[ detailHeader "BIBLIOGRAPHY"
, column
[ width fill
, F.size 15

View file

@ -2,7 +2,12 @@ module Pages.Services exposing (Model, Msg, page)
import Browser
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Cards.Inner.Helpers
import Config.Data.ImageFolders as M
exposing
( ImageFolder(..)
, imagePathMaker
)
import Config.Helpers.Cards.Inner.Text
exposing
( detailBodyMaker
, detailFormat
@ -11,44 +16,53 @@ import Config.Helpers.Cards.Inner.Helpers
, listMaker
)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format
exposing
( headerFontSizeMedium
, headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Helpers exposing (headerMaker)
import Config.Helpers.Headers.Records exposing (servicesHeader)
import Config.Helpers.Headers.Types as R exposing (..)
import Config.Helpers.ImageFolders as M exposing (..)
import Config.Helpers.Headers.Types as R exposing (Header)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat exposing (divider)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Services.Records.DebateAnalysis exposing (..)
import Config.Pages.Services.Records.DebateCoaching exposing (..)
import Config.Pages.Services.Records.ElmBuilds exposing (..)
import Config.Pages.Services.Records.NixBuilds exposing (..)
import Config.Pages.Services.Records.NutritionScience exposing (..)
import Config.Pages.Services.Types exposing (..)
import Config.Style.Colour.Helpers as T exposing (..)
import Config.Style.Glow exposing (glowDeepDarkGrey, glowDeepDarkOrange)
import Config.Pages.Services.Records.DebateAnalysis exposing (servicesDebateAnalysis)
import Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching)
import Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds)
import Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds)
import Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience)
import Config.Pages.Services.Types
exposing
( Description
, Service
)
import Config.Style.Colour.Helpers as T
exposing
( ThemeColor(..)
, getThemeColor
)
import Config.Style.Images exposing (imageSquareMaker)
import Config.Style.Transitions exposing (transitionStyleMedium)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, alignLeft
, column
, el
, fill
, none
, paddingEach
, row
, text
, width
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import Shared exposing (Model)
import View exposing (View)
@ -152,7 +166,7 @@ servicesList device =
]
contentList : Device -> Service msg -> List (Element msg)
contentList : Device -> Service -> List (Element msg)
contentList device service =
let
image : String -> Element msg
@ -188,7 +202,7 @@ contentList device service =
]
rateMaker : Service msg -> Element msg
rateMaker : Service -> Element msg
rateMaker service =
detailFormat row
[ detailTitleMaker TextLightOrange "Rate:"
@ -201,7 +215,7 @@ descriptionMaker =
detailTitleMaker TextLightOrange "Offerings:"
offeringMaker : Service msg -> Element msg
offeringMaker : Service -> Element msg
offeringMaker service =
listMaker makeDescription service.serviceDescription

View file

@ -1,31 +1,31 @@
module Pages.Services.Analysis exposing (Model, Msg, page)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C exposing (..)
import Config.Helpers.Format exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Price exposing (buyButton)
import Config.Helpers.Response exposing (pageList, topLevelContainer)
import Config.Helpers.ServiceFormat exposing (..)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Services.Records.DebateAnalysis exposing (..)
import Config.Pages.Services.Records.DebateAnalysis exposing (servicesDebateAnalysis)
import Config.Style.Colour.Helpers 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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, column
, el
, paddingXY
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
@ -137,7 +137,6 @@ analysisList device =
]
debateAnalysis : BlogArticle
debateAnalysis =
{ articleName = String.toUpper "Debate Analysis"

View file

@ -1,36 +1,31 @@
module Pages.Services.Coaching exposing (Model, Msg, page)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Price exposing (buyButton)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat exposing (..)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching)
import Config.Style.Colour.Helpers 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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, column
, el
, paddingXY
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
@ -141,6 +136,7 @@ coachingList device =
[ debateCoaching ]
]
debateCoaching : BlogArticle
debateCoaching =
{ articleName = String.toUpper "Debate Tutoring"

View file

@ -1,35 +1,45 @@
module Pages.Services.Elm exposing (Model, Msg, page)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Inner.Text exposing (renderCodeLine)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
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.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds)
import Config.Style.Colour.Helpers exposing (..)
import Config.Style.Transitions
import Config.Style.Colour.Helpers
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
( ThemeColor(..)
, getThemeColor
, syntaxTheme
)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, column
, el
, fill
, paddingEach
, paddingXY
, spacing
, text
, width
)
import Element.Background as B exposing (color)
import Element.Border as D exposing (rounded)
import Element.Font as F exposing (color)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
@ -146,8 +156,7 @@ elmBuilds =
, articleImage = ""
, articlePublished = ""
, articleBody = """
The site that you're currently viewing this on was written by me in the Elm programming language. In the process of programming this website, I realized that I could create reasonably high quality work with Elm, so I'm offering it as a service at a fee that reflects my skill level.
If you're in the market for a new frontend for your website, please inquire at [nick@upRootNutrition.com](mailto:).
The site that you're currently viewing this on was written by me in the Elm programming language, and I'm offering frontend development as a service at a fee that reflects my skill level. If you're in the market for a new frontend for your website, please inquire at [nick@upRootNutrition.com](mailto:).
Below is an example of a helper function that I wrote for this site. This particular function extracts the first 80 words from all of my articles' markdown strings, and displays them as blurbs, followed by an ellipsis, in my article cards using my markdown parser.
@ -194,13 +203,13 @@ elmCodeRenderer device =
}
, case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
B.color (getThemeColor BackgroundDarkGrey)
( Tablet, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
B.color (getThemeColor BackgroundDarkGrey)
_ ->
B.color colourTheme.backgroundLightGrey
B.color (getThemeColor BackgroundLightGrey)
, D.rounded 10
, width fill
, spacing 8

View file

@ -1,36 +1,47 @@
module Pages.Services.Nix exposing (Model, Msg, page)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Inner.Text exposing (renderCodeLine)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
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.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds)
import Config.Style.Colour.Helpers exposing (..)
import Config.Style.Colour.Types exposing (..)
import Config.Style.Transitions
import Config.Style.Colour.Helpers
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
( ThemeColor(..)
, getThemeColor
, syntaxTheme
)
import Config.Style.Colour.Types exposing (SyntaxColors)
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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, column
, el
, fill
, paddingEach
, paddingXY
, paragraph
, spacing
, text
, width
)
import Element.Background as B exposing (color)
import Element.Border as D exposing (rounded)
import Element.Font as F exposing (color)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
@ -206,13 +217,13 @@ nixCodeRenderer device =
}
, case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
B.color (getThemeColor BackgroundDarkGrey)
( Tablet, Portrait ) ->
B.color colourTheme.backgroundDarkGrey
B.color (getThemeColor BackgroundDarkGrey)
_ ->
B.color colourTheme.backgroundLightGrey
B.color (getThemeColor BackgroundLightGrey)
, D.rounded 10
, width fill
, spacing 8

View file

@ -1,36 +1,31 @@
module Pages.Services.Nutrition exposing (Model, Msg, page)
import Config.Helpers.Articles.Article exposing (contentList)
import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton)
import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker)
import Config.Helpers.Cards.Outer.Types as C
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Helpers exposing (..)
import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..))
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Price exposing (buyButton)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.ServiceFormat exposing (..)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience)
import Config.Style.Colour.Helpers 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 Element as E
exposing
( Device
, DeviceClass(..)
, Element
, Orientation(..)
, centerX
, column
, el
, paddingXY
)
import Layouts
import Page exposing (Page)
import Route exposing (Route)