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 Polyfill.SmoothScrolling (smoothScrollPolyfill)
12import React.Basic (JSX)
13import React.Basic.DOM as R
14import React.Basic.Hooks (ReactComponent, component, element, useRef, useState, (/\))
15import React.Basic.Hooks as React
16import SVG.Icon (appendIcon, applyflippedIcon, bindIcon, mapIcon)
17import Theme.Provider (mkThemeProvider)
18import Theme.Styles (makeStyles)
19import Theme.Types (CSSTheme)
21mkContainer ∷ Effect (ReactComponent { theme ∷ CSSTheme, kids ∷ Array JSX })
23 themeProvider <- mkThemeProvider
24 containerContent <- mkContainerContent
25 component "Container" \{ theme, kids } -> React.do
27 $ element themeProvider
30 [ element containerContent { kids }
34mkContainerContent ∷ Effect (ReactComponent { kids ∷ Array JSX })
35mkContainerContent = do
38 makeStyles \(theme ∷ CSSTheme) ->
39 -- { "@global": cssSafer { "*": { outline: "1px solid red" } }
41 --"@global": -- { "*": { outline: "1px solid red" } }
43 { fontFamily: theme.textFontFamily
44 , color: theme.textColour
46 , transition: "0.2s ease-in-out"
48 "'landing landing landing'"
49 <> "'header header header' "
50 <> "'nav content content'"
51 -- , "footer footer footer"
52 , gridTemplateColumns: "max-content auto"
59 , backgroundColor: theme.backgroundColour
61 , icon: cssSafer { fill: "theme.textColour" }
63 landingPage <- mkLandingPage
66 sidebarLink <- mkSidebarLink
67 editor <- mkCompileEditor
68 component "ContainerContent" \{ kids } -> React.do
70 collapsed /\ modifyCollapsed <- useState true
71 editorRef <- useRef Nullable.null
74 { className: classes.container
76 [ element landingPage {}
81 [ element sidebarLink { name: "Learn", icon: element appendIcon {}, collapsed }
82 , element sidebarLink { name: "Try", icon: element bindIcon {}, collapsed }
83 , element sidebarLink { name: "Share", icon: element applyflippedIcon {}, collapsed }
84 , element sidebarLink { name: "Jobs", icon: element mapIcon {}, collapsed }
88 , R.div { className: classes.content, children: [ element editor { initialCode } ] <> kids }
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