diff --git a/assets/scss/styles.scss b/assets/scss/styles.scss index 858f34b03..8f0360a29 100644 --- a/assets/scss/styles.scss +++ b/assets/scss/styles.scss @@ -89,7 +89,6 @@ a { @apply text-current; @apply no-underline; @apply outline-none; - @apply rounded-lg; @apply focus-visible:(ring ring-inset ring-accent); @apply transition; @@ -149,7 +148,7 @@ a { .tippy-content > div { @apply flex flex-col; - @apply max-h-64; + @apply max-h-48; @apply items-stretch; @apply overflow-y-auto; } @@ -170,7 +169,7 @@ hr { @apply px-4 py-2; @apply bg-primary; @apply truncate; - @apply rounded-lg; + @apply rounded; @apply font-semibold font-mono; @apply text-xs; @apply border border-divider; @@ -226,7 +225,7 @@ input[type="checkbox"] { &::before { @apply border border-secondary; - @apply rounded-lg; + @apply rounded; @apply inline-flex; @apply items-center; @apply justify-center; diff --git a/components/app/Extensions.vue b/components/app/Extensions.vue deleted file mode 100644 index 0e734a71b..000000000 --- a/components/app/Extensions.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - diff --git a/components/app/Footer.vue b/components/app/Footer.vue new file mode 100644 index 000000000..026a4d989 --- /dev/null +++ b/components/app/Footer.vue @@ -0,0 +1,110 @@ + + + diff --git a/components/app/Header.vue b/components/app/Header.vue index c8220be63..c86a59f87 100644 --- a/components/app/Header.vue +++ b/components/app/Header.vue @@ -1,7 +1,7 @@ @@ -119,7 +71,6 @@ import intializePwa from "~/helpers/pwa" import { currentUser$ } from "~/helpers/fb/auth" import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence" -import { getPlatformSpecialKey } from "~/helpers/platformutils" export default { data() { @@ -129,9 +80,6 @@ export default { // prompt. showInstallPrompt: null, showLogin: false, - showExtensions: false, - showShortcuts: false, - navigatorShare: navigator.share, } }, subscriptions() { @@ -161,22 +109,5 @@ export default { }) } }, - methods: { - nativeShare() { - if (navigator.share) { - navigator - .share({ - title: "Hoppscotch", - text: "Hoppscotch • Open source API development ecosystem - Helps you create requests faster, saving precious time on development.", - url: "https://hoppscotch.io", - }) - .then(() => {}) - .catch(console.error) - } else { - // fallback - } - }, - getSpecialKey: getPlatformSpecialKey, - }, } diff --git a/components/app/Shortcuts.vue b/components/app/Shortcuts.vue index 7f2bf276a..0f5999045 100644 --- a/components/app/Shortcuts.vue +++ b/components/app/Shortcuts.vue @@ -18,7 +18,7 @@ :key="`shortcut-${index}-key-${keyIndex}`" class=" border border-divider - rounded-lg + rounded font-bold m-1 text-xs diff --git a/components/button/Primary.vue b/components/button/Primary.vue index b8c90b2eb..31b62e437 100644 --- a/components/button/Primary.vue +++ b/components/button/Primary.vue @@ -17,7 +17,7 @@ ? `text-${color}-800 bg-${color}-200 hover:text-${color}-900 hover:bg-${color}-300 focus:text-${color}-900 focus:bg-${color}-300` : `text-white bg-accent hover:bg-accentDark focus:bg-accentDark`, label ? 'px-4' : 'px-2', - rounded ? 'rounded-full' : 'rounded-lg', + rounded ? 'rounded-full' : 'rounded', { 'opacity-50 cursor-not-allowed': disabled }, { 'pointer-events-none': loading }, { 'px-6 py-4 text-lg': large }, @@ -53,9 +53,9 @@ class="svg-icons" /> {{ label }} -
+
@@ -132,21 +132,19 @@ export default { type: Boolean, default: false, }, - shortcuts: { + shortcut: { type: Array, default: () => [], }, }, data() { return { - SHORTCUTS_INDICATOR_ENABLED: null, + SHORTCUT_INDICATOR: null, } }, subscriptions() { return { - SHORTCUTS_INDICATOR_ENABLED: getSettingSubject( - "SHORTCUTS_INDICATOR_ENABLED" - ), + SHORTCUT_INDICATOR: getSettingSubject("SHORTCUT_INDICATOR"), } }, } diff --git a/components/button/Secondary.vue b/components/button/Secondary.vue index 43a488681..a97981aa1 100644 --- a/components/button/Secondary.vue +++ b/components/button/Secondary.vue @@ -15,9 +15,9 @@ :class="[ color ? `text-${color}-400 hover:text-${color}-600 focus:text-${color}-600` - : 'text-secondary hover:text-secondaryDark focus:text-secondaryDark', + : 'text-secondary hover:text-secondaryDark hover:bg-primaryDark focus:text-secondaryDark', label ? 'px-3' : 'px-2', - rounded ? 'rounded-full' : 'rounded-lg', + rounded ? 'rounded-full' : 'rounded', { 'opacity-50 cursor-not-allowed': disabled }, { 'flex-row-reverse': reverse }, { @@ -41,9 +41,9 @@ class="svg-icons" /> {{ label }} -
+
diff --git a/components/http/Request.vue b/components/http/Request.vue index 33c2c473d..d62da1968 100644 --- a/components/http/Request.vue +++ b/components/http/Request.vue @@ -16,7 +16,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l cursor-pointer flex font-mono @@ -75,7 +75,7 @@ id="send" class="rounded-none" :label="!loading ? $t('send') : $t('cancel')" - :shortcuts="[getSpecialKey(), 'G']" + :shortcut="[getSpecialKey(), 'G']" outline @click.native="!loading ? newSendRequest() : cancelRequest()" /> @@ -125,7 +125,7 @@ diff --git a/components/http/TestResult.vue b/components/http/TestResult.vue index 6d7512c68..56a571882 100644 --- a/components/http/TestResult.vue +++ b/components/http/TestResult.vue @@ -1,8 +1,22 @@ @@ -45,7 +51,7 @@ import { HoppTestResult } from "~/helpers/types/HoppTestResult" export default defineComponent({ props: { results: { - type: Array as PropType, + type: Object as PropType, default: null, }, }, diff --git a/components/http/Tests.vue b/components/http/Tests.vue index 3f32d0e2e..e8bf69f6e 100644 --- a/components/http/Tests.vue +++ b/components/http/Tests.vue @@ -36,9 +36,6 @@ }" complete-mode="test" /> -
-    {{ testResults }}
-    
@@ -60,22 +57,7 @@ @click.native="clearContent()" />
-
- -
-
- -
+
diff --git a/components/landing/Hero.vue b/components/landing/Hero.vue index 7f366e25e..0fc9ced8f 100644 --- a/components/landing/Hero.vue +++ b/components/landing/Hero.vue @@ -38,7 +38,7 @@ svg="github" large rounded - :shortcuts="['30k Stars']" + :shortcut="['30k Stars']" />
diff --git a/components/profile/Picture.vue b/components/profile/Picture.vue index 0a781a2b0..0d101a8a7 100644 --- a/components/profile/Picture.vue +++ b/components/profile/Picture.vue @@ -14,7 +14,7 @@ :alt="alt" loading="lazy" /> -
+
diff --git a/components/realtime/Mqtt.vue b/components/realtime/Mqtt.vue index 2fcd3bf5b..bec27de52 100644 --- a/components/realtime/Mqtt.vue +++ b/components/realtime/Mqtt.vue @@ -14,7 +14,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l font-mono text-secondaryDark w-full diff --git a/components/realtime/Socketio.vue b/components/realtime/Socketio.vue index e307c469a..87c40d4b9 100644 --- a/components/realtime/Socketio.vue +++ b/components/realtime/Socketio.vue @@ -15,7 +15,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l font-mono text-secondaryDark w-full diff --git a/components/realtime/Sse.vue b/components/realtime/Sse.vue index 60924e82a..a7272e691 100644 --- a/components/realtime/Sse.vue +++ b/components/realtime/Sse.vue @@ -12,7 +12,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l font-mono text-secondaryDark w-full diff --git a/components/realtime/Websocket.vue b/components/realtime/Websocket.vue index ca4f964c3..ae4385149 100644 --- a/components/realtime/Websocket.vue +++ b/components/realtime/Websocket.vue @@ -11,7 +11,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l font-mono text-secondaryDark w-full diff --git a/components/smart/DeletableChip.vue b/components/smart/DeletableChip.vue index 6ac4a29b7..a04b41bd9 100644 --- a/components/smart/DeletableChip.vue +++ b/components/smart/DeletableChip.vue @@ -14,7 +14,7 @@ @apply inline-flex; @apply items-center; @apply justify-center; - @apply rounded-lg; + @apply rounded; @apply m-1; @apply pl-4; @apply bg-primaryDark; diff --git a/components/smart/Item.vue b/components/smart/Item.vue index 9a4ce3597..e3712be79 100644 --- a/components/smart/Item.vue +++ b/components/smart/Item.vue @@ -4,7 +4,7 @@ :exact="exact" :blank="blank" class=" - rounded-lg + rounded font-semibold text-xs py-2 diff --git a/components/smart/Modal.vue b/components/smart/Modal.vue index d57677c1c..e02f5c52c 100644 --- a/components/smart/Modal.vue +++ b/components/smart/Modal.vue @@ -22,7 +22,7 @@
- + -
-
- - -
-
- -
-
+
@@ -69,38 +39,24 @@ import { performMigrations } from "~/helpers/migrations" import { initUserInfo } from "~/helpers/teams/BackendUserInfo" import { registerApolloAuthUpdate } from "~/helpers/apollo" import { initializeFirebase } from "~/helpers/fb" -import { - defaultSettings, - getSettingSubject, - applySetting, - toggleSetting, -} from "~/newstore/settings" +import { getSettingSubject } from "~/newstore/settings" import { logPageView } from "~/helpers/fb/analytics" -import type { KeysMatching } from "~/types/ts-utils" - -type SettingsType = typeof defaultSettings export default defineComponent({ components: { Splitpanes, Pane }, data() { return { LEFT_SIDEBAR: null, - RIGHT_SIDEBAR: null, ZEN_MODE: null, } }, subscriptions() { return { LEFT_SIDEBAR: getSettingSubject("LEFT_SIDEBAR"), - RIGHT_SIDEBAR: getSettingSubject("RIGHT_SIDEBAR"), ZEN_MODE: getSettingSubject("ZEN_MODE"), } }, watch: { - ZEN_MODE(ZEN_MODE) { - this.applySetting("LEFT_SIDEBAR", !ZEN_MODE) - this.applySetting("RIGHT_SIDEBAR", !ZEN_MODE) - }, $route(to) { logPageView(to.fullPath) }, @@ -159,13 +115,5 @@ export default defineComponent({ beforeDestroy() { document.removeEventListener("keydown", this._keyListener) }, - methods: { - toggleSetting>(key: K) { - toggleSetting(key) - }, - applySetting(key: K, value: SettingsType[K]) { - applySetting(key, value) - }, - }, }) diff --git a/layouts/empty.vue b/layouts/empty.vue new file mode 100644 index 000000000..5d3ae9c40 --- /dev/null +++ b/layouts/empty.vue @@ -0,0 +1,3 @@ + diff --git a/middleware/README.md b/middleware/README.md index 01595ded7..7439fd95c 100644 --- a/middleware/README.md +++ b/middleware/README.md @@ -1,7 +1,5 @@ # MIDDLEWARE -**This directory is not required, you can delete it if you don't want to use it.** - This directory contains your application middleware. Middleware let you define custom functions that can be run before rendering either a page or a group of pages. diff --git a/newstore/settings.ts b/newstore/settings.ts index 7888f1e12..14c34d81a 100644 --- a/newstore/settings.ts +++ b/newstore/settings.ts @@ -44,7 +44,7 @@ export type SettingsType = { THEME_COLOR: HoppAccentColor BG_COLOR: HoppBgColor TELEMETRY_ENABLED: boolean - SHORTCUTS_INDICATOR_ENABLED: boolean + SHORTCUT_INDICATOR: boolean LEFT_SIDEBAR: boolean RIGHT_SIDEBAR: boolean ZEN_MODE: boolean @@ -70,7 +70,7 @@ export const defaultSettings: SettingsType = { THEME_COLOR: "green", BG_COLOR: "system", TELEMETRY_ENABLED: true, - SHORTCUTS_INDICATOR_ENABLED: false, + SHORTCUT_INDICATOR: false, LEFT_SIDEBAR: true, RIGHT_SIDEBAR: true, ZEN_MODE: false, diff --git a/pages/enter.vue b/pages/enter.vue index ee2646fa1..72acfc889 100644 --- a/pages/enter.vue +++ b/pages/enter.vue @@ -1,8 +1,12 @@ @@ -13,6 +17,7 @@ import { isSignInWithEmailLink, signInWithEmailLink } from "~/helpers/fb/auth" import { getLocalConfig, removeLocalConfig } from "~/newstore/localpersistence" export default Vue.extend({ + layout: "empty", data() { return { signingInWithEmail: false, diff --git a/pages/graphql.vue b/pages/graphql.vue index bfb6cba71..e4263299a 100644 --- a/pages/graphql.vue +++ b/pages/graphql.vue @@ -15,7 +15,7 @@ class=" bg-primaryLight border border-divider - rounded-l-lg + rounded-l font-mono text-secondaryDark w-full diff --git a/pages/settings.vue b/pages/settings.vue index cb9c50f1d..367b828f4 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -173,13 +173,11 @@
{{ $t("shortcuts_indicator") }} - {{ - SHORTCUTS_INDICATOR_ENABLED ? $t("enabled") : $t("disabled") - }} + {{ SHORTCUT_INDICATOR ? $t("enabled") : $t("disabled") }}
@@ -229,6 +227,26 @@ {{ $t("extension_ver_not_reported") }}
+
+ + + + + + +
import { defineComponent } from "@nuxtjs/composition-api" -import { hasExtensionInstalled } from "../helpers/strategies/ExtensionStrategy" +import { + hasExtensionInstalled, + hasChromeExtensionInstalled, + hasFirefoxExtensionInstalled, +} from "~/helpers/strategies/ExtensionStrategy" import { applySetting, toggleSetting, @@ -345,7 +367,7 @@ export default defineComponent({ SYNC_ENVIRONMENTS: useSetting("syncEnvironments"), SYNC_HISTORY: useSetting("syncHistory"), TELEMETRY_ENABLED: useSetting("TELEMETRY_ENABLED"), - SHORTCUTS_INDICATOR_ENABLED: useSetting("SHORTCUTS_INDICATOR_ENABLED"), + SHORTCUT_INDICATOR: useSetting("SHORTCUT_INDICATOR"), LEFT_SIDEBAR: useSetting("LEFT_SIDEBAR"), ZEN_MODE: useSetting("ZEN_MODE"), currentUser: useReadonlyStream(currentUser$, currentUser$.value), @@ -357,6 +379,9 @@ export default defineComponent({ ? window.__POSTWOMAN_EXTENSION_HOOK__.getVersion() : null, + hasChromeExtInstalled: hasChromeExtensionInstalled(), + hasFirefoxExtInstalled: hasFirefoxExtensionInstalled(), + clearIcon: "clear_all", showLogin: false,