@@ -1,29 +1,33 @@
11module Route.Index exposing (ActionData, Data, Model, Msg, route)
22
33import BackendTask exposing (BackendTask)
4+import Effect
45import Element exposing (..)
56import Element.Background as Background
67import Element.Border as Border
8+import Element.Events as Events
79import Element.Font as Font
810import FatalError exposing (FatalError)
911import Head
1012import Head.Seo as Seo
13+import Html
1114import Html.Attributes exposing (style)
15+import Html.Events exposing (onClick)
1216import Pages.Url
1317import PagesMsg exposing (PagesMsg)
1418import Route
15−import RouteBuilder exposing (App, StatelessRoute)
19+import RouteBuilder exposing (App, StatefulRoute, StatelessRoute)
1620import Shared
1721import UrlPath
1822import View exposing (View)
1923
2024
2125type alias Model =
22− {}
26+ { teamExpanded : Bool }
2327
2428
25−type alias Msg =
26− ()
29+type Msg
30+ = ExpandTeam
2731
2832
2933type alias RouteParams =
@@ -31,28 +35,37 @@ type alias RouteParams =
3135
3236
3337type alias Data =
34− { message : String
35− }
38+ {}
3639
3740
3841type alias ActionData =
3942 {}
4043
4144
42−route : StatelessRoute RouteParams Data ActionData
45+route : StatefulRoute RouteParams Data ActionData Model Msg
4346route =
4447 RouteBuilder.single
4548 { head = head
4649 , data = data
4750 }
48− |> RouteBuilder.buildNoState { view = view }
51+ |> RouteBuilder.buildWithLocalState
52+ { view = view
53+ , init = \_ _ -> ( { teamExpanded = False }, Effect.None )
54+ , update = \_ _ msg model -> ( update msg model, Effect.None )
55+ , subscriptions = \_ _ _ _ -> Sub.none
56+ }
57+
58+
59+update : Msg -> Model -> Model
60+update msg model =
61+ case msg of
62+ ExpandTeam ->
63+ { model | teamExpanded = True }
4964
5065
5166data : BackendTask FatalError Data
5267data =
5368 BackendTask.succeed Data
54− |> BackendTask.andMap
55− (BackendTask.succeed "Hello!")
5669
5770
5871head :
@@ -78,9 +91,10 @@ head app =
7891view :
7992 App Data ActionData RouteParams
8093 -> Shared.Model
94+ -> Model
8195 -> View (PagesMsg Msg)
82−view app shared =
83− { title = "elm-pages is running"
96+view app shared model =
97+ { title = "Horeca Productions"
8498 , body =
8599 column [ width fill ]
86100 [ column [ width fill, Background.color (rgb255 53 30 30), spacing 88 ]
@@ -144,7 +158,7 @@ view app shared =
144158 , el
145159 [ Background.color (rgb255 210 197 178)
146160 , width fill
147− , behindContent (image [ height (px 605), alignRight, moveRight 46, moveDown 74 ] { src = "/oil.png", description = "oil" })
161+ , behindContent (image [ height (px 605), alignRight, moveDown 74 ] { src = "/oil.png", description = "oil" })
148162 ]
149163 (paragraph
150164 [ ubuntu
@@ -155,6 +169,47 @@ view app shared =
155169 [ text "история бренда" ]
156170 )
157171 , el [ Background.color (rgb255 210 197 178), width fill, paddingXY 135 95, Font.size 24 ] (paragraph [ raleway, Font.color darkColor ] [ text "Мы — Horeca Productions, команда, рожденная общей мечтой. Мы верили: рестораны могут покорять сердца не только кухней, но атмосферой, стилем, онлайн-присутствием. Энтузиасты, верящие в силу красивой идеи и продвижения, мы создаём вдохновляющие стратегии, завораживающий дизайн. Наша цель — сделать ваш ресторан звездой." ])
172+ , el [ width fill, Background.image "/bg.png" ]
173+ (el [ paddingXY 105 95, width fill ]
174+ (column [ width fill, Background.color (rgb255 196 185 151), width fill ]
175+ ([ el [ paddingXY 105 125 ] (image [ height (px 100) ] { src = "/team.png", description = "team" })
176+ , row [ paddingEach { top = 0, left = 115, right = 115, bottom = 95 }, spaceEvenly, width fill ]
177+ [ row [ spacing 30 ]
178+ [ image [ height (px 240), width (px 160) ] { src = "/alim.jpg", description = "Alim" }
179+ , column [ width (px 260), height (px 240) ]
180+ [ paragraph [ alignTop, Font.size 32 ] [ text "Алим Лаипанов" ]
181+ , paragraph [ alignBottom, Font.size 18 ] [ text "Копирайтер, администратор телеграм-канала. Создание текстов для рекламы, ведение и продвижение контента в Телеграм-канале." ]
182+ ]
183+ ]
184+ , row [ spacing 30 ]
185+ [ image [ height (px 240), width (px 160) ] { src = "/ilia.jpg", description = "Alim" }
186+ , column [ width (px 260), height (px 240) ]
187+ [ paragraph [ alignTop, Font.size 32 ] [ text "Илья Костюченко" ]
188+ , paragraph [ alignBottom, Font.size 18 ] [ text "Ведущий технический специалист. Разработка и поддержка технической инфраструктуры компании." ]
189+ ]
190+ ]
191+ ]
192+ ]
193+ ++ (case model.teamExpanded of
194+ False ->
195+ [ el [ Events.onClick <| PagesMsg.fromMsg ExpandTeam, pointer, Font.color redColor, ubuntu, paddingEach { top = 0, left = 115, right = 115, bottom = 95 } ] (text "подробнее")
196+ ]
197+
198+ True ->
199+ [ row [ paddingEach { top = 0, left = 115, right = 115, bottom = 95 }, spaceEvenly, width fill ]
200+ [ row [ spacing 30 ]
201+ [ image [ height (px 240), width (px 160) ] { src = "/yasha.jpg", description = "Alim" }
202+ , column [ width (px 260), height (px 240) ]
203+ [ paragraph [ alignTop, Font.size 32 ] [ text "Яш Вархдхан Сингх" ]
204+ , paragraph [ alignBottom, Font.size 18 ] [ text "Гид гастротуризма. Проведение гастрономических туров, презентация культурных и гастрономических аспектов." ]
205+ ]
206+ ]
207+ ]
208+ ]
209+ )
210+ )
211+ )
212+ )
158213 , el [ width fill, Background.color (rgb255 210 197 178) ] (image [ centerX, height (px 613) ] { src = "/fork.png", description = "fork" })
159214 ]
160215 }
@@ -170,6 +225,11 @@ lightColor =
170225 rgb255 210 197 178
171226
172227
228+redColor : Color
229+redColor =
230+ rgb255 120 2 4
231+
232+
173233darkColor : Color
174234darkColor =
175235 rgb255 53 30 30