@@ -3,12 +3,13 @@ module Link = ReactRouter.Link
33let link = "no-underline block hover:cursor-pointer hover:text-fire-30 mb-px"
44let activeLink = "font-medium text-fire-30 border-b border-fire"
55
6- let linkOrActiveLink = (~target , ~route ) => target === route ? activeLink : link
6+ let linkOrActiveLink = (~target : Path . t , ~route : Path . t ) => target === route ? activeLink : link
77
8- let linkOrActiveLinkSubroute = (~target , ~route ) =>
9- String .startsWith (route , target ) ? activeLink : link
8+ let linkOrActiveLinkSubroute = (~target : Path . t , ~route : Path . t ) =>
9+ String .startsWith (( route :> string ), ( target :> string ) ) ? activeLink : link
1010
11- let isActiveLink = (~includes : string , ~excludes : option <string >= ?, ~route : string ) => {
11+ let isActiveLink = (~includes : string , ~excludes : option <string >= ?, ~route : Path .t ) => {
12+ let route = (route :> string )
1213 // includes means we want the lnk to be active if it contains the expected text
1314 let includes = route -> String .includes (includes )
1415 // excludes allows us to not have links be active even if they do have the includes text
@@ -19,30 +20,32 @@ let isActiveLink = (~includes: string, ~excludes: option<string>=?, ~route: stri
1920 includes && ! excludes ? activeLink : link
2021}
2122
22- let isDocRoute = (~route ) =>
23+ let isDocRoute = (~route : Path .t ) => {
24+ let route = (route :> string )
2325 route -> String .includes ("/docs/" ) || route -> String .includes ("/syntax-lookup" )
26+ }
2427
25- let isDocRouteActive = (~route ) => isDocRoute (~route ) ? activeLink : link
28+ let isDocRouteActive = (~route : Path . t ) => isDocRoute (~route ) ? activeLink : link
2629
2730module MobileNav = {
2831 @react.component
29- let make = (~route : string ) => {
32+ let make = (~route : Path . t ) => {
3033 let base = "font-normal mx-4 py-5 text-gray-40 border-b border-gray-80"
3134 let extLink = "block hover:cursor-pointer hover:text-white text-gray-60"
3235 <div className = "border-gray-80 border-tn" >
3336 <ul >
3437 <li className = base >
35- <Link to = # "try" className = {linkOrActiveLink (~target = "/ try" , ~route )}>
38+ <Link to = # "try" className = {linkOrActiveLink (~target = # " try" , ~route )}>
3639 {React .string ("Playground" )}
3740 </Link >
3841 </li >
3942 <li className = base >
40- <Link to = #blog className = {linkOrActiveLinkSubroute (~target = "/ blog" , ~route )}>
43+ <Link to = #blog className = {linkOrActiveLinkSubroute (~target = # blog , ~route )}>
4144 {React .string ("Blog" )}
4245 </Link >
4346 </li >
4447 <li className = base >
45- <Link to = #community className = {linkOrActiveLink (~target = "/ community" , ~route )}>
48+ <Link to = #community className = {linkOrActiveLink (~target = # community , ~route )}>
4649 {React .string ("Community" )}
4750 </Link >
4851 </li >
@@ -102,29 +105,25 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
102105 <div
103106 className = "flex items-center xs:justify-between w-full bg-gray-90 sm:h-auto sm:relative" >
104107 <div className = "flex ml-10 space-x-5 w-full text-gray-40 max-w-104" >
105- <Link
106- to = # "docs/manual/introduction"
107- className = {isDocRouteActive (~route = (route :> string ))}>
108+ <Link to = # "docs/manual/introduction" className = {isDocRouteActive (~route )}>
108109 {React .string ("Docs" )}
109110 </Link >
110111
111112 <Link
112113 to = # "try"
113- className = {"hidden xs:block " ++
114- linkOrActiveLink (~target = "/try" , ~route = (route :> string ))}>
114+ className = {"hidden xs:block " ++ linkOrActiveLink (~target = # "try" , ~route )}>
115115 {React .string ("Playground" )}
116116 </Link >
117- // <Link
118- // to=#"blog"
119- // className={"hidden xs:block " ++ linkOrActiveLinkSubroute(~target="/blog", ~~route=(route))}>
120- // {React.string("Blog")}
121- // </Link>
122- // <Link
123- // to=#"community/overview"
124- // // className={"hidden xs:block " ++ linkOrActiveLink(~target="/community", ~route)}
125- // >
126- // {React.string("Community")}
127- // </Link>
117+ <Link
118+ to = #blog
119+ className = {"hidden xs:block " ++ linkOrActiveLinkSubroute (~target = #blog , ~route )}>
120+ {React .string ("Blog" )}
121+ </Link >
122+ <Link
123+ to = # "community/overview"
124+ className = {"hidden xs:block " ++ linkOrActiveLink (~target = #community , ~route )}>
125+ {React .string ("Community" )}
126+ </Link >
128127 </div >
129128 <div className = "md:flex flex items-center text-gray-60" >
130129 <Search />
@@ -163,36 +162,35 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
163162 className = {(
164163 isOverlayOpen ? "flex" : "hidden"
165164 ) ++ " top-16 sm:hidden flex-col fixed top-0 left-0 h-full w-full z-50 sm:w-9/12 bg-gray-100 sm:h-auto sm:flex sm:relative sm:flex-row sm:justify-between" }>
166- // <MobileNav route />
165+ <MobileNav route />
167166 </div >
168167 </nav >
169168 // This is a subnav for documentation pages
170- // {isDocRoute(~route)
171- // ? <nav
172- // id="docs-subnav"
173- // className="bg-white z-50 px-4 w-full h-12 shadow text-gray-60 text-12 md:text-14 transition duration-300 ease-out group-[.nav-disappear]:-translate-y-32 md:group-[.nav-disappear]:-translate-y-0">
174- // <div className="flex gap-6 lg:gap-10 items-center h-full w-full max-w-1280 m-auto">
175- // <Link
176- // to=Url(`/docs/manual/introduction`)
177- // className={isActiveLink(~includes="/docs/manual/", ~excludes="/api", ~route)}>
178- // {React.string("Language Manual")}
179- // </Link>
180- // <Link to=Url(`/docs/manual/api`) className={isActiveLink(~includes="/api", ~route)}>
181- // {React.string("API")}
182- // </Link>
183- // <Link
184- // to=Url("/syntax-lookup")
185- // className={isActiveLink(~includes="/syntax-lookup", ~route)}>
186- // {React.string("Syntax Lookup")}
187- // </Link>
188- // <Link
189- // to=Url(`/docs/react/introduction`)
190- // className={isActiveLink(~includes="/docs/react/", ~route)}>
191- // {React.string("React")}
192- // </Link>
193- // </div>
194- // </nav>
195- // : React.null}
169+ {isDocRoute (~route )
170+ ? <nav
171+ id = "docs-subnav"
172+ className = "bg-white z-50 px-4 w-full h-12 shadow text-gray-60 text-12 md:text-14 transition duration-300 ease-out group-[.nav-disappear]:-translate-y-32 md:group-[.nav-disappear]:-translate-y-0" >
173+ <div className = "flex gap-6 lg:gap-10 items-center h-full w-full max-w-1280 m-auto" >
174+ <Link
175+ to = # "docs/manual/introduction"
176+ className = {isActiveLink (~includes = "/docs/manual/" , ~excludes = "/api" , ~route )}>
177+ {React .string ("Language Manual" )}
178+ </Link >
179+ <Link to = # "docs/manual/api" className = {isActiveLink (~includes = "/api" , ~route )}>
180+ {React .string ("API" )}
181+ </Link >
182+ <Link
183+ to = # "syntax-lookup" className = {isActiveLink (~includes = "/syntax-lookup" , ~route )}>
184+ {React .string ("Syntax Lookup" )}
185+ </Link >
186+ <Link
187+ to = # "docs/react/introduction"
188+ className = {isActiveLink (~includes = "/docs/react/" , ~route )}>
189+ {React .string ("React" )}
190+ </Link >
191+ </div >
192+ </nav >
193+ : React .null }
196194 </header >
197195 </>
198196}
0 commit comments