1module Container.Component where
4import CSS.Safer (cssSafer)
5import CompileEditor.Component (mkCompileEditor)
6import Container.Header (mkHeader)
7import Container.Landing (mkLandingPage)
8import Container.Sidebar (mkSidebar, mkSidebarLink)
9import Data.Nullable as Nullable
11import Milkis.Impl.Window (windowFetch)
12import Polyfill.SmoothScrolling (smoothScrollPolyfill)
13import React.Basic (JSX)
14import React.Basic.DOM as R
15import React.Basic.Hooks (ReactComponent, component, element, useRef, useState, (/\))
16import React.Basic.Hooks as React
17import SVG.Icon (appendIcon, applyflippedIcon, bindIcon, mapIcon)
18import Theme.Provider (mkThemeProvider)
19import Theme.Styles (makeStyles)
20import Theme.Types (CSSTheme)
22mkContainer ∷ Effect (ReactComponent { theme ∷ CSSTheme, kids ∷ Array JSX })
24 themeProvider <- mkThemeProvider
25 containerContent <- mkContainerContent
26 component "Container" \{ theme, kids } -> React.do
28 $ element themeProvider
31 [ element containerContent { kids }
35mkContainerContent ∷ Effect (ReactComponent { kids ∷ Array JSX })
36mkContainerContent = do
39 makeStyles \(theme ∷ CSSTheme) ->
40 -- { "@global": cssSafer { "*": { outline: "1px solid red" } }
42 --"@global": -- { "*": { outline: "1px solid red" } }
44 { fontFamily: theme.textFontFamily
45 , color: theme.textColour
47 , flexDirection: "column"
53 { backgroundColor: theme.backgroundColour
55 , minHeight: "calc(100vh - 40px)"
56 , paddingLeft: "100px"
59 , icon: cssSafer { fill: "theme.textColour" }
61 landingPage <- mkLandingPage
64 sidebarLink <- mkSidebarLink
65 editor <- mkCompileEditor windowFetch
66 component "ContainerContent" \{ kids } -> React.do
68 collapsed /\ modifyCollapsed <- useState true
69 editorRef <- useRef Nullable.null
72 { className: classes.container
74 [ element landingPage {}
79 [ element sidebarLink { name: "Learn", icon: element appendIcon {}, collapsed }
80 , element sidebarLink { name: "Try", icon: element bindIcon {}, collapsed }
81 , element sidebarLink { name: "Share", icon: element applyflippedIcon {}, collapsed }
82 , element sidebarLink { name: "Jobs", icon: element mapIcon {}, collapsed }
86 { className: classes.content
87 , children: [ element editor { initialCode, height: "50vh" } ] <> kids
99main = log "Let's do this!""""
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list