From 3f83441868503a55726365cbc28ffa1d054c44fc Mon Sep 17 00:00:00 2001 From: Mike Sawka Date: Tue, 27 Feb 2024 16:26:58 -0800 Subject: [PATCH] More UI Tweaks, Testing Variable Fonts for Sidebar/Tabs (#348) * MonoFontSize type, add label font, theme vars for sidebar * fix line-height for tabs * experiment with variable label font * lato font, fix open ai fonts, fix cmdinput font --- public/fonts/lato-bold.woff | Bin 0 -> 32372 bytes public/fonts/lato-regular.woff | Bin 0 -> 31792 bytes src/app/app.less | 7 ++ src/app/overrides.less | 16 +++ src/app/root.less | 14 ++- src/app/sidebar/sidebar.less | 4 + src/app/workspace/cmdinput/cmdinput.less | 1 + src/app/workspace/screen/tabs.less | 9 +- src/app/workspace/screen/tabs.tsx | 11 ++- src/index.ts | 4 +- src/models/model.ts | 2 +- src/plugins/openai/openai.less | 5 +- src/types/custom.d.ts | 7 ++ src/util/fontutil.ts | 118 +++++++++++++++++++++++ src/util/textmeasure.ts | 16 ++- src/util/util.ts | 96 ------------------ 16 files changed, 195 insertions(+), 115 deletions(-) create mode 100644 public/fonts/lato-bold.woff create mode 100644 public/fonts/lato-regular.woff create mode 100644 src/app/overrides.less create mode 100644 src/util/fontutil.ts diff --git a/public/fonts/lato-bold.woff b/public/fonts/lato-bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..84c1cf3038e263aad7206a2252e77ad02f108efa GIT binary patch literal 32372 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́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 literal 0 HcmV?d00001 diff --git a/public/fonts/lato-regular.woff b/public/fonts/lato-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f8b6d3ecb29c8c30f4ba3dd0ead221bb159f79da GIT binary patch literal 31792 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 literal 0 HcmV?d00001 diff --git a/src/app/app.less b/src/app/app.less index 416a9a007..3685a3005 100644 --- a/src/app/app.less +++ b/src/app/app.less @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 @import "./root.less"; +@import "./overrides.less"; html, body { @@ -153,6 +154,12 @@ svg.icon { background-color: var(--scrollbar-thumb-hover-color) !important; } +.no-highlight-scrollbar { + &::-webkit-scrollbar-thumb:hover { + background-color: var(--scrollbar-thumb-color) !important; + } +} + .hide-scrollbar { &::-webkit-scrollbar { display: none; diff --git a/src/app/overrides.less b/src/app/overrides.less new file mode 100644 index 000000000..5ea546b0f --- /dev/null +++ b/src/app/overrides.less @@ -0,0 +1,16 @@ +// Copyright 2024, Command Line Inc. +// SPDX-License-Identifier: Apache-2.0 + +:root { + // can put dev overrides for testing here + + --label-font-family: "Lato", sans-serif; + + --sidebar-font-size: 15px; + --sidebar-font-weight: normal; + --sidebar-highlight-font-weight: bold; + + --screentabs-font-size: 15px; + --screentabs-font-weight: normal; + --screentabs-selected-font-weight: bold; +} diff --git a/src/app/root.less b/src/app/root.less index b3b451746..597654275 100644 --- a/src/app/root.less +++ b/src/app/root.less @@ -16,9 +16,15 @@ --text-s1-font: "Martian Mono", sans-serif; --markdown-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + --label-font-family: "Martian Mono", sans-serif; - // magic - --screentabs-height: 38px; + --markdown-font-size: 14px; + + --screentabs-height: 38px; // magic + --screentabs-line-height: 21px; // magic + --screentabs-font-size: 12.5px; + --screentabs-font-weight: 300; + --screentabs-selected-font-weight: 300; // global colors --app-accent-color: rgb(88, 193, 66); @@ -139,6 +145,10 @@ --sidebar-settings-color: rgb(255, 255, 255); --sidebar-separator-color: var(--app-border-color); --sidebar-highlight-color: rgba(241, 246, 243, 0.08); + --sidebar-font-size: 12.5px; + --sidebar-line-height: 1.5; + --sidebar-font-weight: 300; + --sidebar-highlight-font-weight: 300; // line colors --line-sidebar-message-color: rgb(196, 160, 0); diff --git a/src/app/sidebar/sidebar.less b/src/app/sidebar/sidebar.less index 5f03a9905..feaf29baa 100644 --- a/src/app/sidebar/sidebar.less +++ b/src/app/sidebar/sidebar.less @@ -12,6 +12,9 @@ border-radius: var(--app-border-radius) 0 0 var(--app-border-radius); border-left: 1px solid var(--app-border-color); border-bottom: 1px solid var(--app-border-color); + font-size: var(--sidebar-font-size); + font-family: var(--label-font-family); + font-weight: var(--sidebar-font-weight); .title-bar-drag { -webkit-app-region: drag; @@ -149,6 +152,7 @@ .item { &.active { background-color: var(--sidebar-highlight-color); + font-weight: var(--sidebar-highlight-font-weight); } .index { font-size: 10px; diff --git a/src/app/workspace/cmdinput/cmdinput.less b/src/app/workspace/cmdinput/cmdinput.less index a39890610..934500c71 100644 --- a/src/app/workspace/cmdinput/cmdinput.less +++ b/src/app/workspace/cmdinput/cmdinput.less @@ -135,6 +135,7 @@ overflow-wrap: anywhere; border-color: transparent; border: none; + font-family: var(--termfontfamily); line-height: var(--termlineheight); font-size: var(--termfontsize); border-radius: 4px 4px 0 4px; // 0 is for shelltag diff --git a/src/app/workspace/screen/tabs.less b/src/app/workspace/screen/tabs.less index 9ad9ae62d..87c7e4cee 100644 --- a/src/app/workspace/screen/tabs.less +++ b/src/app/workspace/screen/tabs.less @@ -2,7 +2,10 @@ #main .screen-tabs .screen-tab { border-top: 1px solid transparent; - font-size: 12.5px; + font-size: var(--screentabs-font-size); + line-height: var(--screentabs-line-height); + font-family: var(--label-font-family); + font-weight: var(--screentabs-font-weight); &:not(:hover) .status-indicator { .status-indicator-visible; @@ -81,7 +84,8 @@ } } -.screen-tabs-container { +// #main for selectivity +#main .screen-tabs-container { display: flex; position: relative; overflow: hidden; @@ -159,6 +163,7 @@ &.is-active { border-top: none; opacity: 1; + font-weight: var(--screentabs-selected-font-weight); } &.is-archived { diff --git a/src/app/workspace/screen/tabs.tsx b/src/app/workspace/screen/tabs.tsx index 2c027a17d..6287a4403 100644 --- a/src/app/workspace/screen/tabs.tsx +++ b/src/app/workspace/screen/tabs.tsx @@ -185,7 +185,11 @@ class ScreenTabs extends React.Component< let activeScreenId = this.getActiveScreenId(); const sidebarCollapsed = GlobalModel.mainSidebarModel.getCollapsed(); return ( -
+
@@ -194,7 +198,10 @@ class ScreenTabs extends React.Component<
{/* Inner container ensures that hovering over the scrollbar doesn't trigger the hover effect on the tabs. This prevents weird flickering of the icons when the mouse is moved over the scrollbar. */} -
+
) { })(); } -function addToFontFaceSet(fontFaceSet: FontFaceSet, fontFace: FontFace) { - // any cast to work around typing issue - (fontFaceSet as any).add(fontFace); -} - -let isJetBrainsMonoLoaded = false; - -function loadJetBrainsMonoFont() { - if (isJetBrainsMonoLoaded) { - return; - } - isJetBrainsMonoLoaded = true; - let jbmFontNormal = new FontFace("JetBrains Mono", "url('public/fonts/jetbrains-mono-v13-latin-regular.woff2')", { - style: "normal", - weight: "400", - }); - const jbmFont200 = new FontFace("JetBrains Mono", "url('public/fonts/jetbrains-mono-v13-latin-200.woff2')", { - style: "normal", - weight: "200", - }); - const jbmFont700 = new FontFace("JetBrains Mono", "url('public/fonts/jetbrains-mono-v13-latin-700.woff2')", { - style: "normal", - weight: "700", - }); - addToFontFaceSet(document.fonts, jbmFontNormal); - addToFontFaceSet(document.fonts, jbmFont200); - addToFontFaceSet(document.fonts, jbmFont700); - jbmFontNormal.load(); - jbmFont200.load(); - jbmFont700.load(); -} - -let isHackFontLoaded = false; - -function loadHackFont() { - if (isHackFontLoaded) { - return; - } - isHackFontLoaded = true; - let hackRegular = new FontFace("Hack", "url('public/fonts/hack-regular.woff2')", { - style: "normal", - weight: "400", - }); - let hackBold = new FontFace("Hack", "url('public/fonts/hack-bold.woff2')", { - style: "normal", - weight: "700", - }); - let hackItalic = new FontFace("Hack", "url('public/fonts/hack-italic.woff2')", { - style: "italic", - weight: "400", - }); - let hackBoldItalic = new FontFace("Hack", "url('public/fonts/hack-bolditalic.woff2')", { - style: "italic", - weight: "700", - }); - addToFontFaceSet(document.fonts, hackRegular); - addToFontFaceSet(document.fonts, hackBold); - addToFontFaceSet(document.fonts, hackItalic); - addToFontFaceSet(document.fonts, hackBoldItalic); - hackRegular.load(); - hackBold.load(); - hackItalic.load(); - hackBoldItalic.load(); -} - -let isBaseFontsLoaded = false; - -function loadBaseFonts() { - if (isBaseFontsLoaded) { - return; - } - isBaseFontsLoaded = true; - let faFont = new FontFace("FontAwesome", "url(public/fonts/fontawesome-webfont-4.7.woff2)", { - style: "normal", - weight: "normal", - }); - let mmFont = new FontFace("Martian Mono", "url(public/fonts/MartianMono-VariableFont_wdth,wght.ttf)", { - style: "normal", - weight: "normal", - }); - addToFontFaceSet(document.fonts, faFont); - addToFontFaceSet(document.fonts, mmFont); - faFont.load(); - mmFont.load(); -} - -function loadFonts(termFont: string) { - loadBaseFonts(); - loadJetBrainsMonoFont(); - if (termFont == "Hack") { - loadHackFont(); - } - document.documentElement.style.setProperty("--termfontfamily", '"' + termFont + '"'); -} - const DOW_STRS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; function getTodayStr(): string { @@ -470,7 +375,6 @@ export { isModKeyPress, incObs, isBlank, - loadFonts, getTodayStr, getYesterdayStr, getDateStr,