1module Container.Component where
5import CSS.Safer (cssSafer)
6import CompileEditor.Component (mkCompileEditor)
7import Container.Header (mkHeader)
8import Container.Landing (mkLandingPage)
9import Container.Sidebar (mkSidebar, mkSidebarLink)
10import Data.Nullable as Nullable
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, children ∷ Array JSX })
24 themeProvider <- mkThemeProvider
25 containerContent <- mkContainerContent
26 component "Container" \{ theme, children } -> React.do
28 $ element themeProvider
31 [ element containerContent { children }
35mkContainerContent ∷ Effect (ReactComponent { children ∷ Array JSX })
36mkContainerContent = do
39 makeStyles \(theme ∷ CSSTheme) ->
40 -- { "@global": cssSafer { "*": { outline: "1px solid red" } }
43 { backgroundColor: theme.backgroundColour
44 , fontFamily: theme.textFontFamily
45 , color: theme.textColour
47 , transition: "0.2s ease-in-out"
49 "'landing landing landing'"
50 <> "'header header header' "
51 <> "'nav content content'"
52 -- , "footer footer footer"
53 -- , gridTemplateColumns: "max-content auto"
62 , icon: cssSafer { fill: "theme.textColour" }
64 landingPage <- mkLandingPage
67 sidebarLink <- mkSidebarLink
68 editor <- mkCompileEditor
69 component "ContainerContent" \{ children } -> React.do
71 collapsed /\ modifyCollapsed <- useState true
72 editorRef <- useRef Nullable.null
75 { className: classes.container
77 [ element landingPage {}
82 [ element sidebarLink { name: "Learn", icon: element appendIcon {}, collapsed }
83 , element sidebarLink { name: "Try", icon: element bindIcon {}, collapsed }
84 , element sidebarLink { name: "Share", icon: element applyflippedIcon {}, collapsed }
85 , element sidebarLink { name: "Jobs", icon: element mapIcon {}, collapsed }
89 , R.div { className: classes.content, children: [element editor {}] <> children }
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