feat: crushed it like I crushed your mom

This commit is contained in:
Nick 2024-11-26 21:17:31 -06:00
parent 27b69e5d33
commit 7d22f82b12
30 changed files with 500 additions and 288 deletions

View file

@ -1,239 +0,0 @@
module Debate.Helpers%20copy exposing (..)module Debate.Helpers exposing (..)
import Config.Colour as T exposing (..)
import Config.Format as O exposing (..)
import Debate.Types exposing (..)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B exposing (..)
import Element.Border as D exposing (..)
import Element.Events as V exposing (..)
import Element.Font as F exposing (..)
import Html exposing (div, hr)
import Html.Attributes as H exposing (style, title, wrap)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared
import View exposing (View)
argumentMaker : Argument -> Element msg
argumentMaker argument =
let
argRows : List (Element msg)
argRows =
let
argumentFormatting : List (Attribute msg)
argumentFormatting =
[ centerX, F.center, spacing 3 ]
in
List.indexedMap
(\index argumentEntry ->
column (paragraphFormat ++ [ spacing 3, paddingEach { top = 0, right = 0, bottom = 0, left = 0 }, E.width <| px 550, centerX ])
(List.indexedMap
(\premiseIndex premiseWithNotation ->
column argumentFormatting
[ paragraph paragraphHightlightedBoldText
[ text ("P" ++ String.fromInt (premiseIndex + 1) ++ ")")
, text premiseWithNotation.premise
|> el [ F.color colourTheme.nonHighlightedText, F.regular, paddingEach { top = 0, right = 0, bottom = 0, left = 5 } ]
]
, paragraph argumentFormatting
[ text ("(" ++ premiseWithNotation.notation ++ ")")
|> el [ F.color colourTheme.highlightText, F.bold ]
]
]
)
argumentEntry.premises
++ [ column argumentFormatting
[ paragraph paragraphHightlightedBoldText
[ text "C)"
, text argumentEntry.conclusion
|> el [ F.color colourTheme.nonHighlightedText, F.regular, paddingEach { top = 0, right = 0, bottom = 0, left = 5 } ]
]
, paragraph argumentFormatting
[ text ("(" ++ argumentEntry.conclusionNotation ++ ")")
|> el [ F.color colourTheme.highlightText, F.bold ]
]
]
]
)
)
argument.argumentFormalization
maybeReductioField : Element msg
maybeReductioField =
case argument.propositionReductio of
"" ->
none
reductio ->
row []
[ column
[ E.alignTop, E.alignLeft ]
[ paragraph (paragraphBoldFormat ++ [ F.size 18, E.width <| px 100 ])
[ el [ tooltip below (myTooltip "This is the position from which the reductio ad absurdum is derived.") ] (text "Reductio:") |> el [ F.color colourTheme.highlightText ]
]
]
, column [ E.width fill, E.alignLeft ]
[ paragraph []
[ text reductio |> el [ F.color colourTheme.nonHighlightedText, F.regular, F.size 16 ]
]
]
]
in
column
[ paragraphWidth, E.alignLeft, spacing 8, paddingEach { top = 0, right = 0, bottom = 0, left = 0 } ]
[ paragraph
(paragraphBoldFormat
++ [ F.size 20
, F.color colourTheme.backgroundColour
, B.color colourTheme.highlightText
, paddingEach { top = 6, bottom = 2, left = 12, right = 12 }
, D.width 1
, D.rounded 20
, alignBottom
, F.center
, transitionStyle
, mouseOver
[ B.color colourTheme.highlightTextHover
, F.color colourTheme.nonHighlightedText
, D.color colourTheme.highlightTextHover
]
]
)
[ text argument.argumentTitle
--create expandable text for this in the future
]
, row [ paddingEach { top = 10, right = 0, bottom = 0, left = 0 } ]
[ column
[ E.alignTop, E.alignLeft ]
[ paragraph (paragraphBoldFormat ++ [ F.size 18, E.width <| px 100 ])
[ el [ tooltip below (myTooltip "A proposition is a declarative statement that can be evaluated as either true or false, and which serves as the basis for debate.") ] (text "Proposition:") |> el [ F.color colourTheme.highlightText ] ]
]
, column
[ E.width fill, E.alignLeft ]
[ paragraph (paragraphBoldFormat ++ [ F.size 18 ]) [ text argument.propositionTitle |> el [ F.color colourTheme.nonHighlightedText, F.regular, F.size 16 ] ] ]
]
, maybeReductioField
, row [ E.alignTop ]
[ column
[ E.alignTop, E.alignLeft ]
[ paragraph (paragraphBoldFormat ++ [ F.size 18, E.width <| px 100 ])
[ el [ tooltip below (myTooltip "The following information provides additional context and insight into the reasoning behind the argument") ] (text "Summary:") |> el [ F.color colourTheme.highlightText ]
]
]
, column
[ E.width fill, E.alignLeft ]
[ paragraph (paragraphBoldFormat ++ [ F.size 18 ]) [ text argument.propositionSummary |> el [ F.color colourTheme.nonHighlightedText, F.regular, F.size 16 ] ] ]
]
, wrappedRow (paragraphBoldFormat ++ [ E.alignLeft, E.width fill, paddingEach { top = 10, right = 0, bottom = 10, left = 0 } ])
[ E.table
[ spacing 0
, D.rounded 10
, D.width 2
, D.color colourTheme.nonHighlightedDarkText
, clip
]
{ data = argument.definitionTable
, columns =
[ { header =
el
[ F.bold
, D.widthEach { bottom = 1, top = 1, left = 1, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
]
(text "Definiendum" |> el [ F.color colourTheme.highlightText ])
, width = fill |> maximum 50
, view =
\definition ->
row
[ F.color colourTheme.highlightText
, F.bold
, D.widthEach { bottom = 1, top = 0, left = 1, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
, E.height fill
]
[ row [ centerX ]
[ paragraph [] [ text definition.definiendum ]
]
]
}
, { header =
el
[ F.bold
, D.widthEach { bottom = 1, top = 1, left = 0, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
]
(text "Definiens" |> el [ F.color colourTheme.highlightText ])
, width = fill
, view =
\definition ->
paragraph
[ F.color colourTheme.nonHighlightedText
, F.regular
, D.widthEach { bottom = 1, top = 0, left = 0, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
, E.height fill
]
[ row []
[ paragraph [] [ text definition.definiens ]
]
]
}
]
}
]
, column [ centerX ]
(argRows
++ [ column [ paragraphWidth, paddingEach { top = 10, right = 0, bottom = 0, left = 0 } ]
[ row [ centerX, E.width fill ]
[ column [ E.alignRight ]
[ newTabLink
(paragraphBoldFormat
++ [ F.size 18
, F.color colourTheme.backgroundColour
, B.color colourTheme.highlightText
, paddingEach { top = 6, bottom = 2, left = 12, right = 12 }
, D.width 1
, D.rounded 20
, E.width <| px 105
, F.center
, E.alignRight
, transitionStyle
, mouseOver
[ B.color colourTheme.highlightTextHover
, F.color colourTheme.nonHighlightedText
, D.color colourTheme.highlightTextHover
]
]
)
{ url = argument.proofLink
, label = text "Proof Tree"
}
]
]
]
-- , basicDivider
]
)
]
basicDivider : Element msg
basicDivider =
el
[ E.width fill
, centerX
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
, D.color (rgb255 200 200 200)
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
]
none

View file

@ -0,0 +1,5 @@
module Blog.Helpers exposing (..)
hahaha =
[]

View file

@ -0,0 +1 @@
module Blog.Types exposing (..)

View file

@ -23,7 +23,6 @@ pageList =
[ spacing 30 [ spacing 30
, centerX , centerX
, centerY , centerY
, alignTop
, paddingEach { top = 30, bottom = 30, left = 30, right = 30 } , paddingEach { top = 30, bottom = 30, left = 30, right = 30 }
] ]
@ -70,13 +69,9 @@ spartanFont =
F.typeface "League Spartan" F.typeface "League Spartan"
navBarLinkFormat : List (Attr () msg) navBarLinkFormat : List (Attr () msg)
navBarLinkFormat = navBarLinkFormat =
[ F.size 15 [ F.size 17
, centerX
-- , F.bold
] ]
@ -197,3 +192,15 @@ tooltip usher tooltip_ =
tooltip_ tooltip_
] ]
none none
basicDivider : Element msg
basicDivider =
el
[ E.width fill
, centerX
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
, D.color (rgb255 200 200 200)
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
]
none

View file

@ -17,7 +17,7 @@ type alias PageInput =
pageNames : PageInput pageNames : PageInput
pageNames = pageNames =
{ pageHome = "The Nutrivore" { pageHome = "upRoot Health"
, pagePlatforms = "Platforms" , pagePlatforms = "Platforms"
, pageServices = "Services" , pageServices = "Services"
, pageDodgers = "Dodgers" , pageDodgers = "Dodgers"

View file

@ -227,17 +227,17 @@ cuckMaker cuck =
{ src = "cucks/" ++ cuck.cuckImage ++ "/" ++ cuck.cuckImage ++ ".png" { src = "cucks/" ++ cuck.cuckImage ++ "/" ++ cuck.cuckImage ++ ".png"
, description = cuck.cuckName , description = cuck.cuckName
} }
, E.image -- , E.image
[ D.rounded 100 -- [ D.rounded 100
, clip -- , clip
, moveUp 107 -- , moveUp 107
, moveRight 7 -- , moveRight 7
, E.width <| px 125 -- , E.width <| px 125
, E.height <| px 125 -- , E.height <| px 125
] -- ]
{ src = "cucks/clownborder.png" -- { src = "cucks/clownborder.png"
, description = cuck.cuckName -- , description = cuck.cuckName
} -- }
] ]
, column , column
[ E.width <| px 600 ] [ E.width <| px 600 ]

View file

@ -7,11 +7,11 @@ argumentAgriculturalPredation : Argument
argumentAgriculturalPredation = argumentAgriculturalPredation =
{ argumentTitle = "Argument for Animal Agirculture as Predation" { argumentTitle = "Argument for Animal Agirculture as Predation"
, propositionTitle = "Animal agriculture counts as predation." , propositionTitle = "Animal agriculture counts as predation."
, propositionReductio = "10" , propositionReductio = ""
, propositionSummary = "Summary" , propositionSummary = "Summary"
, proofLink = "https://www.umsu.de/trees/#(~6x~6y~6z(Px~4Qxyz~1(Rxyz~2Sxyz)~1Wxyz)),(Qahl),(Rahl~2Sahl),(Wahl)%7C=(Pa)" , proofLink = "https://www.umsu.de/trees/#(~6x~6y~6z(Px~4Qxyz~1(Rxyz~2Sxyz)~1Wxyz)),(Qahl),(Rahl~2Sahl),(Wahl)%7C=(Pa)"
, argumentCertainty = 1 , argumentCertainty = 10
, argumentImage = "" , argumentImage = ""
, definitionTable = , definitionTable =
[ { definiendum = "P(x)" [ { definiendum = "P(x)"

View file

@ -4,8 +4,9 @@ import Config.Colour as T exposing (..)
import Config.Format as O exposing (..) import Config.Format as O exposing (..)
import Config.Identity as I exposing (..) import Config.Identity as I exposing (..)
import Effect exposing (Effect) import Effect exposing (Effect)
import Element exposing (..) import Element as E exposing (..)
import Element.Background as B import Element.Background as B exposing (..)
import Element.Border as D exposing (..)
import Element.Font as F import Element.Font as F
import Element.Region exposing (description) import Element.Region exposing (description)
import Html exposing (Html) import Html exposing (Html)
@ -77,51 +78,413 @@ view { toContentMsg, model, content } =
{ title = content.title { title = content.title
, attributes = [ F.family [ spartanFont ] ] , attributes = [ F.family [ spartanFont ] ]
, element = , element =
let
localhostUrl =
"http://localhost:1234/"
in
row row
[ width fill [ E.width fill
, height fill , height fill
, B.color colourTheme.backgroundColour , B.color colourTheme.cardBackground
] ]
[ column [ column
[ width <| px 200 [ htmlAttribute (H.style "position" "fixed")
, alignLeft
, alignTop
, paddingEach { top = 20, bottom = 0, left = 10, right = 0 }
, htmlAttribute (H.style "position" "fixed")
, htmlAttribute (H.style "left" "0") , htmlAttribute (H.style "left" "0")
, htmlAttribute (H.style "top" "0") , htmlAttribute (H.style "top" "0")
, htmlAttribute (H.style "height" "100vh") , htmlAttribute (H.style "height" "100vh")
, htmlAttribute (H.style "z-index" "10") -- Ensure navbar stays on top , htmlAttribute (H.style "z-index" "10") -- Ensure navbar stays on top
, htmlAttribute (H.style "transform-style" "preserve-3d") , htmlAttribute (H.style "transform-style" "preserve-3d")
, D.widthEach { top = 0, bottom = 0, left = 0, right = 3 }
, D.color colourTheme.highlightTextHover
] ]
[ column [ column
[ spacing 10 [ alignLeft
, centerX
, height fill , height fill
, F.color colourTheme.nonHighlightedText , F.color colourTheme.nonHighlightedText
] ]
[ image [ spacing 2, width <| px 80, centerX ] { src = "navbar/nutrivorelogo.png", description = "" } [ column
, link nonHighlightedTitleFormat { url = localhostUrl ++ pageNames.pageHome, label = transitionNonHighlightedLinkHover <| text "THE NUTRIVORE" } [ centerX
, link navBarLinkFormat { url = localhostUrl ++ "platforms", label = transitionNonHighlightedLinkHoverWithMove <| text "PLATFORMS" } , E.width <| px 200
, link navBarLinkFormat { url = localhostUrl ++ "services", label = transitionNonHighlightedLinkHoverWithMove <| text "SERVICES" } ]
, link navBarLinkFormat { url = localhostUrl ++ "arguments", label = transitionNonHighlightedLinkHoverWithMove <| text "ARGUMENTS" } [ row
, link navBarLinkFormat { url = localhostUrl ++ "blog", label = transitionNonHighlightedLinkHoverWithMove <| text "BLOG" } (nonHighlightedTitleFormat
, link navBarLinkFormat { url = localhostUrl ++ "nutridex", label = transitionNonHighlightedLinkHoverWithMove <| text "NUTRI-DEX" } ++ [ centerX
, link navBarLinkFormat { url = localhostUrl ++ "support", label = transitionNonHighlightedLinkHoverWithMove <| text "SUPPORT" } , spacing 10
, link navBarLinkFormat { url = localhostUrl ++ "interviews", label = transitionNonHighlightedLinkHoverWithMove <| text "INTERVIEWS" } , padding 20
, link navBarLinkFormat { url = localhostUrl ++ "contact", label = transitionNonHighlightedLinkHoverWithMove <| text "CONTACT" } ]
, link navBarLinkFormat { url = localhostUrl ++ "dodgers", label = transitionNonHighlightedLinkHoverWithMove <| text "DODGERS" } )
[ E.image
[ spacing 2
, E.width <| px 80
, centerX
]
{ src = "navbar/nutrivorelogo.png"
, description = ""
}
, column []
[ link [ centerX ]
{ url = localhostUrl ++ pageNames.pageHome
, label = text "upRoot"
}
, link [ centerX ]
{ url = localhostUrl ++ pageNames.pageHome
, label = text "Health"
}
]
]
, el
[ E.width <| px 140
, alignTop
, centerX
, D.widthEach
{ bottom = 1
, top = 0
, left = 0
, right = 0
}
, D.color colourTheme.nonHighlightedDarkText
]
none
]
, column
[ padding 20, alignTop, alignLeft ]
[ column
[ F.bold
, F.color colourTheme.nonHighlightedText
, F.size 17
, spacing 8
]
[ homeButton
, servicesButton
, hyperbolgButton
, argumentsButton
, cucklistButton
, communityButton
, nutridexButton
, donateButton
, interviewButton
, contactButton
]
]
]
, row
[ alignBottom
, E.width fill
, E.height <| px 100
]
[ row
[ centerX
, centerY
, E.width fill
, E.height fill
, spacing 10
, paddingEach { top = 40, bottom = 10, left = 20, right = 20 }
]
[ E.image
[ E.width <| px 30
, alignBottom
, centerX
]
{ src = "navbar/gitlab-light.png"
, description = ""
}
, E.image
[ E.width <| px 30
, alignBottom
, centerX
]
{ src = "navbar/twitter-light.png"
, description = ""
}
, E.image
[ E.width <| px 30
, alignBottom
, centerX
]
{ src = "navbar/mastodon-light.png"
, description = ""
}
, E.image
[ E.width <| px 33
, alignBottom
, centerX
]
{ src = "navbar/discord-light.png"
, description = ""
}
]
] ]
] ]
, el , el
[ width fill [ E.width fill
, height fill , height fill
, paddingEach { top = 0, right = 0, bottom = 0, left = 200 } , paddingEach
{ top = 0
, right = 0
, bottom = 0
, left = 200
}
] ]
content.element content.element
] ]
} }
localhostUrl =
"http://localhost:1234/"
linkFormat =
el
[ mouseOver [ F.color colourTheme.highlightText ]
, htmlAttribute <| style "transition" "all 0.1s ease-in-out"
]
iconDistance =
E.width <| px 36
homeButton : Element msg
homeButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/home.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "home"
, label = linkFormat <| text "HOME"
}
]
]
servicesButton : Element msg
servicesButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/services.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "services"
, label = linkFormat <| text "SERVICES"
}
]
]
hyperbolgButton : Element msg
hyperbolgButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/hyperblog2.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "hyperblog"
, label = linkFormat <| text "HYPERBLOG"
}
]
]
argumentsButton : Element msg
argumentsButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/arguments.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "arguments"
, label = linkFormat <| text "ARGUMENTS"
}
]
]
cucklistButton : Element msg
cucklistButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/cucklist.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "cucklist"
, label = linkFormat <| text "CUCKLIST"
}
]
]
communityButton : Element msg
communityButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/community.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "community"
, label = linkFormat <| text "COMMUNITY"
}
]
]
nutridexButton : Element msg
nutridexButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/nutridex.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "nutridex"
, label = linkFormat <| text "NUTRIDEX"
}
]
]
donateButton : Element msg
donateButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/donate.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "donate"
, label = linkFormat <| text "DONATE"
}
]
]
interviewButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/interviews.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "interviews"
, label = linkFormat <| text "INTERVIEWS"
}
]
]
contactButton : Element msg
contactButton =
row
[]
[ column [ iconDistance ]
[ E.image
[ alignLeft
, alignBottom
, E.width <| px 30
]
{ src = "navbar/contact.png"
, description = ""
}
]
, column
[ alignBottom ]
[ link
[]
{ url = localhostUrl ++ "contact"
, label = linkFormat <| text "CONTACT"
}
]
]

View file

@ -1,4 +1,4 @@
module Pages.Dodgers exposing (Model, Msg, page) module Pages.CuckList exposing (Model, Msg, page)
import Config.Colour as T exposing (..) import Config.Colour as T exposing (..)
import Config.Format as O exposing (..) import Config.Format as O exposing (..)

View file

@ -0,0 +1,75 @@
module Pages.Hyperblog exposing (Model, Msg, page)
import Blog.Helpers exposing (..)
import Config.Colour as T exposing (..)
import Config.Format as O exposing (..)
import Config.Identity as I exposing (..)
import Effect exposing (Effect)
import Element exposing (..)
import Element.Font as F
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import View exposing (View)
page : Shared.Model -> Route () -> Page Model Msg
page shared route =
Page.new
{ init = init
, update = update
, subscriptions = subscriptions
, view = view
}
-- INIT
type alias Model =
{}
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.none
)
-- UPDATE
type Msg
= NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
case msg of
NoOp ->
( model
, Effect.none
)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Model -> View Msg
view model =
View.fromString "Pages.Blog"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB