feat: crushed it like I crushed your mom
239
Helpers copy.elm
|
@ -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
|
|
5
frontend/src/Blog/Helpers.elm
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module Blog.Helpers exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
hahaha =
|
||||||
|
[]
|
1
frontend/src/Blog/Types.elm
Normal file
|
@ -0,0 +1 @@
|
||||||
|
module Blog.Types exposing (..)
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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 ]
|
||||||
|
|
|
@ -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)"
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
|
@ -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 (..)
|
75
frontend/src/Pages/Hyperblog.elm
Normal 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"
|
BIN
frontend/static/navbar/arguments.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
frontend/static/navbar/community.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/static/navbar/contact.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
frontend/static/navbar/cucklist.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
frontend/static/navbar/discord-light.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
frontend/static/navbar/discord.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
frontend/static/navbar/donate.png
Normal file
After Width: | Height: | Size: 846 B |
BIN
frontend/static/navbar/gitlab-light.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
frontend/static/navbar/gitlab.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/static/navbar/home.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
frontend/static/navbar/hyperblog.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
frontend/static/navbar/hyperblog2.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
frontend/static/navbar/interviews.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
frontend/static/navbar/mastodon-light.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
frontend/static/navbar/mastodon.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
frontend/static/navbar/nutridex.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
frontend/static/navbar/services.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/static/navbar/twitter-light.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
frontend/static/navbar/twitter.png
Normal file
After Width: | Height: | Size: 1.9 KiB |