module IHP.IDE.ToolServer.Layout where import IHP.ViewPrelude import IHP.IDE.ToolServer.Types import IHP.IDE.ToolServer.Routes () import qualified IHP.Version as Version import IHP.IDE.ToolServer.Helper.View toolServerLayout :: Html -> Html toolServerLayout inner = [hsx| IHP IDE
{inner}
|] where (AvailableApps appNames) = fromFrozenContext @AvailableApps apps = forEach appNames appNavItem schema = navItem "SCHEMA" schemaIcon (pathTo TablesAction) (isSchemaEditorController) data_ = navItem "DATA" dataIcon (pathTo ShowDatabaseAction) (isActiveController @DataController) repl = navItem "REPL" terminalIcon "#" False codegen = navItem "CODEGEN" copyIcon (pathTo GeneratorsAction) (isActiveController @CodeGenController) logs = navItem "LOGS" serverIcon (pathTo AppLogsAction) (isActiveController @LogsController) lint = navItem "LINT" flagIcon "#" False docu = navItem "DOCS" docsIcon "https://ihp.digitallyinduced.com/Guide/" False isSchemaEditorController = ( isActiveController @SchemaController || isActiveController @TablesController || isActiveController @ColumnsController || isActiveController @EnumsController || isActiveController @EnumValuesController || isActiveController @MigrationsController ) help :: Html help = [hsx| {helpIcon} |] getPro :: Html getPro = [hsx| Upgrade to
IHP Pro
|] ihpEditionTitle = case Version.ihpEdition of Version.Basic -> [hsx|IHP|] Version.Pro -> [hsx|IHP Pro|] Version.Business -> [hsx|IHP
Business|] Version.Enterprise -> [hsx|IHP
Enterprise|] appNavItem :: Text -> Html appNavItem "Web" = navItem "APP" startIcon (appUrl <> "/") False appNavItem name = navItem (toUpper name) startIcon (appUrl <> "/" <> (toLower name) <> "/") False navItem :: Text -> Html -> Text -> Bool -> Html navItem label icon action active = [hsx| {icon} {label} |] where isExternal = "https://" `isPrefixOf` action || "http://" `isPrefixOf` action target :: Maybe Text target = if isExternal then "_blank" else Nothing appUrl :: (?context :: ControllerContext) => Text appUrl = let (AppUrl url) = fromFrozenContext @AppUrl in url -- | https://github.com/encharm/Font-Awesome-SVG-PNG/blob/master/white/svg/terminal.svg terminalIcon = preEscapedToHtml [plain||] -- | https://github.com/encharm/Font-Awesome-SVG-PNG/blob/master/white/svg/copy.svg copyIcon = preEscapedToHtml [plain||] -- | https://github.com/encharm/Font-Awesome-SVG-PNG/blob/master/white/svg/server.svg serverIcon = preEscapedToHtml [plain||] -- | https://github.com/encharm/Font-Awesome-SVG-PNG/blob/master/white/svg/flag.svg flagIcon = preEscapedToHtml [plain||] -- | https://github.com/encharm/Font-Awesome-SVG-PNG/blob/master/white/svg/cogs.svg cogsIcon = preEscapedToHtml [plain||] -- | https://github.com/Rush/Font-Awesome-SVG-PNG/blob/master/black/svg/question-circle.svg helpIcon = preEscapedToHtml [plain||] isBasicEdition = Version.ihpEdition == Version.Basic