refactor: update hopp-ui to be independent (#2927)

Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
This commit is contained in:
Andrew Bastin
2023-02-24 13:20:12 +05:30
committed by GitHub
parent 82c6f6f6bc
commit cae1840506
165 changed files with 2134 additions and 2069 deletions

View File

@@ -90,7 +90,7 @@
"vue-pdf-embed": "^1.1.4",
"vue-router": "^4.0.16",
"vue-tippy": "6.0.0-alpha.58",
"vuedraggable": "^4.1.0",
"vuedraggable-es": "^4.1.1",
"wonka": "^4.0.15",
"workbox-window": "^6.5.4",
"yargs-parser": "^21.1.1"

View File

@@ -4,7 +4,7 @@
v-if="isLoadingInitialRoute"
class="flex flex-col items-center justify-center min-h-screen"
>
<SmartSpinner />
<HoppSmartSpinner />
</div>
<ErrorPage v-if="errorInfo !== null" :error="errorInfo" />
<RouterView v-else />

View File

@@ -26,8 +26,6 @@ declare module '@vue/runtime-core' {
AppShortcutsPrompt: typeof import('./components/app/ShortcutsPrompt.vue')['default']
AppSidenav: typeof import('./components/app/Sidenav.vue')['default']
AppSupport: typeof import('./components/app/Support.vue')['default']
ButtonPrimary: typeof import('./../../hoppscotch-ui/src/components/button/Primary.vue')['default']
ButtonSecondary: typeof import('./../../hoppscotch-ui/src/components/button/Secondary.vue')['default']
Collections: typeof import('./components/collections/index.vue')['default']
CollectionsAdd: typeof import('./components/collections/Add.vue')['default']
CollectionsAddFolder: typeof import('./components/collections/AddFolder.vue')['default']
@@ -75,6 +73,16 @@ declare module '@vue/runtime-core' {
History: typeof import('./components/history/index.vue')['default']
HistoryGraphqlCard: typeof import('./components/history/graphql/Card.vue')['default']
HistoryRestCard: typeof import('./components/history/rest/Card.vue')['default']
HoppButtonPrimary: typeof import('@hoppscotch/ui')['HoppButtonPrimary']
HoppButtonSecondary: typeof import('@hoppscotch/ui')['HoppButtonSecondary']
HoppSmartAnchor: typeof import('@hoppscotch/ui')['HoppSmartAnchor']
HoppSmartConfirmModal: typeof import('@hoppscotch/ui')['HoppSmartConfirmModal']
HoppSmartItem: typeof import('@hoppscotch/ui')['HoppSmartItem']
HoppSmartLink: typeof import('@hoppscotch/ui')['HoppSmartLink']
HoppSmartModal: typeof import('@hoppscotch/ui')['HoppSmartModal']
HoppSmartRadioGroup: typeof import('@hoppscotch/ui')['HoppSmartRadioGroup']
HoppSmartSlideOver: typeof import('@hoppscotch/ui')['HoppSmartSlideOver']
HoppSmartSpinner: typeof import('@hoppscotch/ui')['HoppSmartSpinner']
HttpAuthorization: typeof import('./components/http/Authorization.vue')['default']
HttpBody: typeof import('./components/http/Body.vue')['default']
HttpBodyParameters: typeof import('./components/http/BodyParameters.vue')['default']
@@ -97,15 +105,9 @@ declare module '@vue/runtime-core' {
HttpTestResultReport: typeof import('./components/http/TestResultReport.vue')['default']
HttpTests: typeof import('./components/http/Tests.vue')['default']
HttpURLEncodedParams: typeof import('./components/http/URLEncodedParams.vue')['default']
IconLucideArrowLeft: typeof import('~icons/lucide/arrow-left')['default']
IconLucideCheckCircle: typeof import('~icons/lucide/check-circle')['default']
IconLucideChevronRight: typeof import('~icons/lucide/chevron-right')['default']
IconLucideGlobe: typeof import('~icons/lucide/globe')['default']
IconLucideInbox: typeof import('~icons/lucide/inbox')['default']
IconLucideInfo: typeof import('~icons/lucide/info')['default']
IconLucideLayers: typeof import('~icons/lucide/layers')['default']
IconLucideLoader: typeof import('~icons/lucide/loader')['default']
IconLucideMinus: typeof import('~icons/lucide/minus')['default']
IconLucideSearch: typeof import('~icons/lucide/search')['default']
IconLucideUser: typeof import('~icons/lucide/user')['default']
IconLucideUsers: typeof import('~icons/lucide/users')['default']
@@ -128,32 +130,12 @@ declare module '@vue/runtime-core' {
RealtimeLogEntry: typeof import('./components/realtime/LogEntry.vue')['default']
RealtimeSubscription: typeof import('./components/realtime/Subscription.vue')['default']
SmartAccentModePicker: typeof import('./components/smart/AccentModePicker.vue')['default']
SmartAnchor: typeof import('./../../hoppscotch-ui/src/components/smart/Anchor.vue')['default']
SmartAutoComplete: typeof import('./../../hoppscotch-ui/src/components/smart/AutoComplete.vue')['default']
SmartChangeLanguage: typeof import('./components/smart/ChangeLanguage.vue')['default']
SmartCheckbox: typeof import('./../../hoppscotch-ui/src/components/smart/Checkbox.vue')['default']
SmartColorModePicker: typeof import('./components/smart/ColorModePicker.vue')['default']
SmartConfirmModal: typeof import('./../../hoppscotch-ui/src/components/smart/ConfirmModal.vue')['default']
SmartEnvInput: typeof import('./components/smart/EnvInput.vue')['default']
SmartExpand: typeof import('./../../hoppscotch-ui/src/components/smart/Expand.vue')['default']
SmartFileChip: typeof import('./../../hoppscotch-ui/src/components/smart/FileChip.vue')['default']
SmartFontSizePicker: typeof import('./components/smart/FontSizePicker.vue')['default']
SmartIntersection: typeof import('./../../hoppscotch-ui/src/components/smart/Intersection.vue')['default']
SmartItem: typeof import('./../../hoppscotch-ui/src/components/smart/Item.vue')['default']
SmartLink: typeof import('./../../hoppscotch-ui/src/components/smart/Link.vue')['default']
SmartModal: typeof import('./../../hoppscotch-ui/src/components/smart/Modal.vue')['default']
SmartProgressRing: typeof import('./../../hoppscotch-ui/src/components/smart/ProgressRing.vue')['default']
SmartRadio: typeof import('./../../hoppscotch-ui/src/components/smart/Radio.vue')['default']
SmartRadioGroup: typeof import('./../../hoppscotch-ui/src/components/smart/RadioGroup.vue')['default']
SmartSlideOver: typeof import('./../../hoppscotch-ui/src/components/smart/SlideOver.vue')['default']
SmartSpinner: typeof import('./../../hoppscotch-ui/src/components/smart/Spinner.vue')['default']
SmartTab: typeof import('./../../hoppscotch-ui/src/components/smart/Tab.vue')['default']
SmartTabs: typeof import('./../../hoppscotch-ui/src/components/smart/Tabs.vue')['default']
SmartToggle: typeof import('./../../hoppscotch-ui/src/components/smart/Toggle.vue')['default']
SmartTree: typeof import('./components/smart/Tree.vue')['default']
SmartTreeBranch: typeof import('./components/smart/TreeBranch.vue')['default']
SmartWindow: typeof import('./../../hoppscotch-ui/src/components/smart/Window.vue')['default']
SmartWindows: typeof import('./../../hoppscotch-ui/src/components/smart/Windows.vue')['default']
TabPrimary: typeof import('./components/tab/Primary.vue')['default']
TabSecondary: typeof import('./components/tab/Secondary.vue')['default']
Teams: typeof import('./components/teams/index.vue')['default']

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('app.developer_option')"
@@ -10,7 +10,7 @@
{{ t("app.developer_option_description") }}
</p>
<div class="flex flex-1">
<ButtonSecondary
<HoppButtonSecondary
outline
filled
:icon="copyIcon"
@@ -19,7 +19,7 @@
/>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -2,7 +2,7 @@
<div>
<div class="flex justify-between bg-primary">
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="EXPAND_NAVIGATION ? t('hide.sidebar') : t('show.sidebar')"
:icon="IconSidebar"
@@ -10,7 +10,7 @@
:class="{ '-rotate-180': !EXPAND_NAVIGATION }"
@click="EXPAND_NAVIGATION = !EXPAND_NAVIGATION"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="`${ZEN_MODE ? t('action.turn_off') : t('action.turn_on')} ${t(
'layout.zen_mode'
@@ -23,7 +23,7 @@
@click="ZEN_MODE = !ZEN_MODE"
/>
<tippy interactive trigger="click" theme="popover">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('settings.interceptor')"
:icon="IconShieldCheck"
@@ -40,7 +40,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconHelpCircle"
class="!rounded-none"
:label="`${t('app.help')}`"
@@ -55,7 +55,7 @@
@keyup.c="chat!.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="documentation"
:icon="IconBook"
:label="`${t('app.documentation')}`"
@@ -64,7 +64,7 @@
:shortcut="['D']"
@click="hide()"
/>
<SmartItem
<HoppSmartItem
ref="shortcuts"
:icon="IconZap"
:label="`${t('app.keyboard_shortcuts')}`"
@@ -76,7 +76,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="chat"
:icon="IconMessageCircle"
:label="`${t('app.chat_with_us')}`"
@@ -88,14 +88,14 @@
}
"
/>
<SmartItem
<HoppSmartItem
:icon="IconGift"
:label="`${t('app.whats_new')}`"
to="https://docs.hoppscotch.io/changelog"
blank
@click="hide()"
/>
<SmartItem
<HoppSmartItem
:icon="IconActivity"
:label="t('app.status')"
to="https://status.hoppscotch.io"
@@ -103,21 +103,21 @@
@click="hide()"
/>
<hr />
<SmartItem
<HoppSmartItem
:icon="IconGithub"
:label="`${t('app.github')}`"
to="https://github.com/hoppscotch/hoppscotch"
blank
@click="hide()"
/>
<SmartItem
<HoppSmartItem
:icon="IconTwitter"
:label="`${t('app.twitter')}`"
to="https://hoppscotch.io/twitter"
blank
@click="hide()"
/>
<SmartItem
<HoppSmartItem
:icon="IconUserPlus"
:label="`${t('app.invite')}`"
@click="
@@ -127,7 +127,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
:icon="IconLock"
:label="`${t('app.terms_and_privacy')}`"
to="https://docs.hoppscotch.io/privacy"
@@ -148,7 +148,7 @@
</div>
</template>
</tippy>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
'app.shortcuts'
@@ -156,14 +156,14 @@
:icon="IconZap"
@click="invokeAction('flyouts.keybinds.toggle')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="navigatorShare"
v-tippy="{ theme: 'tooltip' }"
:icon="IconShare2"
:title="t('request.share')"
@click="nativeShare()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="COLUMN_LAYOUT ? t('layout.row') : t('layout.column')"
:icon="IconColumns"
@@ -177,7 +177,7 @@
'rotate-180': SIDEBAR_ON_LEFT,
}"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="SIDEBAR ? t('hide.sidebar') : t('show.sidebar')"
:icon="IconSidebarOpen"
@@ -223,7 +223,7 @@ import { platform } from "~/platform"
import { TippyComponent } from "vue-tippy"
import { getPlatformSpecialKey as getSpecialKey } from "~/helpers/platformutils"
import { invokeAction } from "@helpers/actions"
import SmartItem from "@hoppscotch/ui/src/components/smart/Item.vue"
import { HoppSmartItem } from "@hoppscotch/ui"
const t = useI18n()
const showDeveloperOptions = ref(false)
@@ -274,7 +274,7 @@ const showDeveloperOptionModal = () => {
// Template refs
const tippyActions = ref<TippyComponent | null>(null)
const documentation = ref<typeof SmartItem>()
const shortcuts = ref<typeof SmartItem>()
const chat = ref<typeof SmartItem>()
const documentation = ref<typeof HoppSmartItem>()
const shortcuts = ref<typeof HoppSmartItem>()
const chat = ref<typeof HoppSmartItem>()
</script>

View File

@@ -10,7 +10,7 @@
paddingLeft: platform.ui?.appHeader?.paddingLeft?.value,
}"
>
<ButtonSecondary
<HoppButtonSecondary
class="tracking-wide !font-bold !text-secondaryDark hover:bg-primaryDark focus-visible:bg-primaryDark uppercase"
:label="t('app.name')"
to="/"
@@ -18,7 +18,7 @@
<AppGitHubStarButton class="mt-1.5 transition <sm:hidden" />
</div>
<div class="inline-flex items-center space-x-2">
<ButtonSecondary
<HoppButtonSecondary
v-if="showInstallButton"
v-tippy="{ theme: 'tooltip' }"
:title="t('header.install_pwa')"
@@ -26,14 +26,14 @@
class="rounded hover:bg-primaryDark focus-visible:bg-primaryDark"
@click="installPWA()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t('app.search')} <kbd>/</kbd>`"
:icon="IconSearch"
class="rounded hover:bg-primaryDark focus-visible:bg-primaryDark"
@click="invokeAction('modals.search.toggle')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${
mdAndLarger ? t('support.title') : t('app.options')
@@ -42,7 +42,7 @@
class="rounded hover:bg-primaryDark focus-visible:bg-primaryDark"
@click="invokeAction('modals.support.toggle')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="currentUser === null"
:icon="IconUploadCloud"
:label="t('header.save_workspace')"
@@ -50,13 +50,13 @@
class="hidden md:flex"
@click="invokeAction('modals.login.toggle')"
/>
<ButtonPrimary
<HoppButtonPrimary
v-if="currentUser === null"
:label="t('header.login')"
@click="invokeAction('modals.login.toggle')"
/>
<div v-else class="inline-flex items-center space-x-2">
<ButtonPrimary
<HoppButtonPrimary
v-tippy="{ theme: 'tooltip' }"
:title="t('team.invite_tooltip')"
:label="t('team.invite')"
@@ -127,7 +127,7 @@
</span>
</div>
<hr />
<SmartItem
<HoppSmartItem
ref="profile"
to="/profile"
:icon="IconUser"
@@ -135,7 +135,7 @@
:shortcut="['P']"
@click="hide()"
/>
<SmartItem
<HoppSmartItem
ref="settings"
to="/settings"
:icon="IconSettings"

View File

@@ -8,12 +8,15 @@
{{ t("settings.interceptor_description") }}
</p>
</div>
<SmartRadioGroup v-model="interceptorSelection" :radios="interceptors" />
<HoppSmartRadioGroup
v-model="interceptorSelection"
:radios="interceptors"
/>
<div
v-if="interceptorSelection == 'EXTENSIONS_ENABLED' && !extensionVersion"
class="flex space-x-2"
>
<ButtonSecondary
<HoppButtonSecondary
to="https://chrome.google.com/webstore/detail/hoppscotch-browser-extens/amknoiejhlmhancpahfcfcfhllgkpbld"
blank
:icon="IconChrome"
@@ -21,7 +24,7 @@
outline
class="!flex-1"
/>
<ButtonSecondary
<HoppButtonSecondary
to="https://addons.mozilla.org/en-US/firefox/addon/hoppscotch"
blank
:icon="IconFirefox"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('app.options')"
@@ -11,7 +11,7 @@
<h2 class="p-4 font-semibold font-bold text-secondaryDark">
{{ t("layout.name") }}
</h2>
<SmartItem
<HoppSmartItem
:icon="IconSidebar"
:label="EXPAND_NAVIGATION ? t('hide.sidebar') : t('show.sidebar')"
:description="t('layout.collapse_sidebar')"
@@ -19,7 +19,7 @@
active
@click="expandNavigation"
/>
<SmartItem
<HoppSmartItem
:icon="IconSidebarOpen"
:label="SIDEBAR ? t('hide.collection') : t('show.collection')"
:description="t('layout.collapse_collection')"
@@ -30,7 +30,7 @@
<h2 class="p-4 font-semibold font-bold text-secondaryDark">
{{ t("support.title") }}
</h2>
<SmartItem
<HoppSmartItem
:icon="IconBook"
:label="t('app.documentation')"
to="https://docs.hoppscotch.io"
@@ -40,7 +40,7 @@
blank
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconGift"
:label="t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
@@ -50,7 +50,7 @@
blank
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconActivity"
:label="t('app.status')"
to="https://status.hoppscotch.io"
@@ -60,7 +60,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconLock"
:label="`${t('app.terms_and_privacy')}`"
to="https://docs.hoppscotch.io/privacy"
@@ -73,7 +73,7 @@
<h2 class="p-4 font-semibold font-bold text-secondaryDark">
{{ t("settings.follow") }}
</h2>
<SmartItem
<HoppSmartItem
:icon="IconDiscord"
:label="t('app.discord')"
to="https://hoppscotch.io/discord"
@@ -83,7 +83,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconTwitter"
:label="t('app.twitter')"
to="https://hoppscotch.io/twitter"
@@ -93,7 +93,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconGithub"
:label="`${t('app.github')}`"
to="https://github.com/hoppscotch/hoppscotch"
@@ -103,7 +103,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconMessageCircle"
:label="t('app.chat_with_us')"
:description="t('support.chat')"
@@ -111,7 +111,7 @@
active
@click="chatWithUs()"
/>
<SmartItem
<HoppSmartItem
:icon="IconUserPlus"
:label="`${t('app.invite')}`"
:description="t('shortcut.miscellaneous.invite')"
@@ -119,7 +119,7 @@
active
@click="expandInvite()"
/>
<SmartItem
<HoppSmartItem
v-if="navigatorShare"
v-tippy="{ theme: 'tooltip' }"
:icon="IconShare2"
@@ -132,7 +132,7 @@
</div>
<AppShare :show="showShare" @hide-modal="showShare = false" />
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
styles="sm:max-w-lg"
full-width
@@ -68,7 +68,7 @@
</div>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('app.invite_your_friends')"
@@ -35,7 +35,7 @@
{{ t("app.invite_description") }}
</p>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartSlideOver :show="show" :title="t('app.shortcuts')" @close="close()">
<HoppSmartSlideOver :show="show" :title="t('app.shortcuts')" @close="close()">
<template #content>
<div
class="sticky top-0 z-10 flex flex-col flex-shrink-0 overflow-x-auto bg-primary"
@@ -76,7 +76,7 @@
</details>
</div>
</template>
</SmartSlideOver>
</HoppSmartSlideOver>
</template>
<script setup lang="ts">

View File

@@ -32,7 +32,7 @@
</div>
</div>
</div>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('app.documentation')}`"
to="https://docs.hoppscotch.io/features/response"
:icon="IconExternalLink"

View File

@@ -1,7 +1,7 @@
<template>
<aside class="flex justify-between h-full md:flex-col">
<nav class="flex flex-1 flex-nowrap md:flex-col md:flex-none bg-primary">
<SmartLink
<HoppSmartLink
v-for="(navigation, index) in primaryNavigation"
:key="`navigation-${index}`"
v-tippy="{
@@ -20,7 +20,7 @@
<span v-if="EXPAND_NAVIGATION" class="nav-title">
{{ t(navigation.title) }}
</span>
</SmartLink>
</HoppSmartLink>
</nav>
</aside>
</template>

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('support.title')"
@@ -8,7 +8,7 @@
>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
<HoppSmartItem
:icon="IconBook"
:label="t('app.documentation')"
to="https://docs.hoppscotch.io"
@@ -18,7 +18,7 @@
blank
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconZap"
:label="t('app.keyboard_shortcuts')"
:description="t('support.shortcuts')"
@@ -26,7 +26,7 @@
active
@click="showShortcuts()"
/>
<SmartItem
<HoppSmartItem
:icon="IconGift"
:label="t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
@@ -36,7 +36,7 @@
blank
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconMessageCircle"
:label="t('app.chat_with_us')"
:description="t('support.chat')"
@@ -44,7 +44,7 @@
active
@click="chatWithUs()"
/>
<SmartItem
<HoppSmartItem
:icon="IconGitHub"
:label="t('app.github')"
to="https://hoppscotch.io/github"
@@ -54,7 +54,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconDiscord"
:label="t('app.join_discord_community')"
to="https://hoppscotch.io/discord"
@@ -64,7 +64,7 @@
active
@click="hideModal()"
/>
<SmartItem
<HoppSmartItem
:icon="IconTwitter"
:label="t('app.twitter')"
to="https://hoppscotch.io/twitter"
@@ -76,7 +76,7 @@
/>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('collection.new')"
@@ -24,13 +24,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addNewCollection"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -38,7 +38,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('folder.new')"
@@ -24,13 +24,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addFolder"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -38,7 +38,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('request.new')"
@@ -22,13 +22,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addRequest"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -36,7 +36,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -29,14 +29,14 @@
</span>
</span>
<div v-if="!hasNoTeamAccess" class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="emit('add-request')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
@@ -51,7 +51,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -68,7 +68,7 @@
@keyup.x="exportAction?.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="t('request.new')"
@@ -80,7 +80,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="t('folder.new')"
@@ -92,7 +92,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
@@ -104,7 +104,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="exportAction"
:icon="IconDownload"
:label="t('export.title')"
@@ -117,7 +117,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('collection.edit')"
@@ -24,13 +24,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="saveCollection"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -38,7 +38,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('folder.edit')"
@@ -24,13 +24,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="editFolder"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -38,7 +38,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('modal.edit_request')"
@@ -24,13 +24,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="editRequest"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -38,7 +38,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('modal.collections')"
@@ -7,7 +7,7 @@
@close="hideModal"
>
<template #actions>
<ButtonSecondary
<HoppButtonSecondary
v-if="importerType !== null"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.go_back')"
@@ -101,7 +101,7 @@
</div>
</div>
</div>
<ButtonPrimary
<HoppButtonPrimary
:label="t('import.title')"
:disabled="enableImportButton"
:loading="importingMyCollections"
@@ -109,9 +109,9 @@
/>
</div>
<div v-else class="flex flex-col">
<SmartExpand>
<HoppSmartExpand>
<template #body>
<SmartItem
<HoppSmartItem
v-for="(importer, index) in importerModules"
:key="`importer-${index}`"
:icon="importer.icon"
@@ -119,10 +119,10 @@
@click="importerType = index"
/>
</template>
</SmartExpand>
</HoppSmartExpand>
<hr />
<div class="flex flex-col space-y-2">
<SmartItem
<HoppSmartItem
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="IconDownload"
@@ -141,7 +141,7 @@
"
class="flex"
>
<SmartItem
<HoppSmartItem
:disabled="
!currentUser
? true
@@ -158,7 +158,7 @@
</div>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -8,21 +8,21 @@
: 'top: var(--upper-primary-sticky-fold)'
"
>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconPlus"
:label="t('action.new')"
class="!rounded-none"
@click="emit('display-modal-add')"
/>
<span class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:icon="IconArchive"
@@ -210,7 +210,7 @@
<span class="pb-4 text-center">
{{ t("empty.collections") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('add.new')"
filled
outline
@@ -231,7 +231,7 @@
<span class="pb-4 text-center">
{{ t("empty.collection") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('add.new')"
filled
outline

View File

@@ -47,7 +47,7 @@
</span>
</span>
<div v-if="!hasNoTeamAccess" class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:icon="IconRotateCCW"
@@ -63,7 +63,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -78,7 +78,7 @@
@keyup.delete="deleteAction?.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
@@ -90,7 +90,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="duplicate"
:icon="IconCopy"
:label="t('action.duplicate')"
@@ -103,7 +103,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('collection.save_as')}`"
@@ -43,13 +43,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
:loading="modalLoadingState"
outline
@click="saveRequestAs"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -57,7 +57,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -8,7 +8,7 @@
: 'top: var(--upper-secondary-sticky-fold)'
"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="hasNoTeamAccess"
v-tippy="{ theme: 'tooltip' }"
disabled
@@ -17,7 +17,7 @@
:title="t('team.no_access')"
:label="t('action.new')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:icon="IconPlus"
:label="t('action.new')"
@@ -25,14 +25,14 @@
@click="emit('display-modal-add')"
/>
<span class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:disabled="
@@ -206,7 +206,7 @@
<span class="pb-4 text-center">
{{ t("empty.collections") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
v-if="hasNoTeamAccess"
v-tippy="{ theme: 'tooltip' }"
disabled
@@ -215,7 +215,7 @@
:title="t('team.no_access')"
:label="t('add.new')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="t('add.new')"
filled
@@ -237,7 +237,7 @@
<span class="pb-4 text-center">
{{ t("empty.collection") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
v-if="hasNoTeamAccess"
v-tippy="{ theme: 'tooltip' }"
disabled
@@ -246,7 +246,7 @@
:title="t('team.no_access')"
:label="t('add.new')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="t('add.new')"
filled

View File

@@ -1,6 +1,6 @@
<template>
<div class="flex flex-1">
<SmartIntersection
<HoppSmartIntersection
class="flex flex-col flex-1"
@intersecting="onTeamSelectIntersect"
>
@@ -16,13 +16,13 @@
:title="`${t('collection.select_team')}`"
class="bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="collectionsType.selectedTeam"
:icon="IconUsers"
:label="collectionsType.selectedTeam.name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('collection.select_team')}`"
class="flex-1 !justify-start pr-8 rounded-none"
@@ -39,11 +39,11 @@
v-if="isTeamListLoading && myTeams.length === 0"
class="flex flex-col items-center justify-center flex-1 p-2"
>
<SmartSpinner class="my-2" />
<HoppSmartSpinner class="my-2" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div v-else-if="myTeams.length > 0" class="flex flex-col">
<SmartItem
<HoppSmartItem
v-for="(team, index) in myTeams"
:key="`team-${index}`"
:label="team.name"
@@ -62,7 +62,7 @@
"
/>
<hr />
<SmartItem
<HoppSmartItem
:icon="IconPlus"
:label="t('team.create_new')"
@click="
@@ -86,7 +86,7 @@
<span class="pb-4 text-center">
{{ t("empty.teams") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('team.create_new')"
filled
outline
@@ -101,7 +101,7 @@
</div>
</template>
</tippy>
</SmartIntersection>
</HoppSmartIntersection>
</div>
</template>

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('collection.new')}`"
@@ -24,12 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
outline
@click="addNewCollection"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -37,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('folder.new')"
@@ -24,8 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary :label="t('action.save')" outline @click="addFolder" />
<ButtonSecondary
<HoppButtonPrimary
:label="t('action.save')"
outline
@click="addFolder"
/>
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -33,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('request.new')"
@@ -24,8 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary :label="t('action.save')" outline @click="addRequest" />
<ButtonSecondary
<HoppButtonPrimary
:label="t('action.save')"
outline
@click="addRequest"
/>
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -33,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -29,7 +29,7 @@
</span>
</span>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
@@ -40,7 +40,7 @@
})
"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
@@ -59,7 +59,7 @@
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -75,7 +75,7 @@
@keyup.delete="deleteAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="`${t('request.new')}`"
@@ -89,7 +89,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="`${t('folder.new')}`"
@@ -103,7 +103,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="`${t('action.edit')}`"
@@ -115,7 +115,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="`${t('action.delete')}`"
@@ -186,7 +186,7 @@
<span class="pb-4 text-center">
{{ t("empty.collection") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('add.new')"
filled
outline
@@ -199,7 +199,7 @@
</div>
</div>
</div>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_collection')}`"
@hide-modal="confirmRemove = false"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('collection.edit')}`"
@@ -24,12 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
outline
@click="saveCollection"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -37,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('folder.edit')}`"
@@ -24,12 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
outline
@click="editFolder"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -37,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts">

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('modal.edit_request')}`"
@@ -24,12 +24,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
outline
@click="saveRequest"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -37,7 +37,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts">

View File

@@ -29,14 +29,14 @@
</span>
</span>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="emit('add-request', { path: folderPath })"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
@@ -51,7 +51,7 @@
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -67,7 +67,7 @@
@keyup.delete="deleteAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="`${t('request.new')}`"
@@ -79,7 +79,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="`${t('folder.new')}`"
@@ -91,7 +91,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="`${t('action.edit')}`"
@@ -103,7 +103,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="`${t('action.delete')}`"
@@ -181,7 +181,7 @@
</div>
</div>
</div>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_folder')}`"
@hide-modal="confirmRemove = false"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('modal.collections')}`"
@@ -9,7 +9,7 @@
<template #actions>
<span>
<tippy interactive trigger="click" theme="popover">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -22,7 +22,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:icon="IconGithub"
:label="t('import.from_gist')"
@click="
@@ -42,7 +42,7 @@
: undefined
"
>
<SmartItem
<HoppSmartItem
:disabled="
!currentUser
? true
@@ -67,7 +67,7 @@
</template>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
<HoppSmartItem
:icon="IconFolderPlus"
:label="t('import.from_json')"
@click="openDialogChooseFileToImportFrom"
@@ -80,7 +80,7 @@
@change="importFromJSON"
/>
<hr />
<SmartItem
<HoppSmartItem
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="IconDownload"
@@ -89,7 +89,7 @@
/>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -28,7 +28,7 @@
</span>
</span>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:icon="IconRotateCCW"
@@ -44,7 +44,7 @@
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -59,7 +59,7 @@
@keyup.delete="deleteAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="`${t('action.edit')}`"
@@ -75,7 +75,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="duplicate"
:icon="IconCopy"
:label="`${t('action.duplicate')}`"
@@ -91,7 +91,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="`${t('action.delete')}`"
@@ -109,7 +109,7 @@
</span>
</div>
</div>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_request')}`"
@hide-modal="confirmRemove = false"

View File

@@ -16,21 +16,21 @@
<div
class="flex justify-between flex-1 flex-shrink-0 border-y bg-primary border-dividerLight"
>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconPlus"
:label="t('action.new')"
class="!rounded-none"
@click="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:title="t('modal.import_export')"
@@ -73,7 +73,7 @@
<span class="pb-4 text-center">
{{ t("empty.collections") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('add.new')"
filled
outline

View File

@@ -15,7 +15,7 @@
:disabled="collectionsType.type === 'team-collections'"
/>
</div>
<SmartTabs
<HoppSmartTabs
v-model="selectedCollectionTab"
render-inactive-tabs
:styles="`
@@ -27,7 +27,7 @@
}
`"
>
<SmartTab
<HoppSmartTab
:id="'my-collections'"
:label="`${t('collection.my_collections')}`"
>
@@ -53,8 +53,8 @@
@display-modal-add="displayModalAdd(true)"
@display-modal-import-export="displayModalImportExport(true)"
/>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'team-collections'"
:label="`${t('collection.team_collections')}`"
>
@@ -99,8 +99,8 @@
@display-modal-add="displayModalAdd(true)"
@display-modal-import-export="displayModalImportExport(true)"
/>
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
<CollectionsAdd
:show="showModalAdd"
:loading-state="modalLoadingState"
@@ -140,7 +140,7 @@
@submit="updateEditingRequest"
@hide-modal="displayModalEditRequest(false)"
/>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="showConfirmModal"
:title="confirmModalTitle"
:loading-state="modalLoadingState"

View File

@@ -1,19 +1,19 @@
<template>
<div>
<SmartTabs
<HoppSmartTabs
:id="'environments_tab'"
v-model="selectedEnvironmentTab"
render-inactive-tabs
>
<SmartTab
<HoppSmartTab
:id="'my-environments'"
:label="`${t('environment.my_environments')}`"
/>
<SmartTab
<HoppSmartTab
:id="'team-environments'"
:label="`${t('environment.team_environments')}`"
>
<SmartIntersection @intersecting="onTeamSelectIntersect">
<HoppSmartIntersection @intersecting="onTeamSelectIntersect">
<tippy
interactive
trigger="click"
@@ -26,13 +26,13 @@
:title="`${t('collection.select_team')}`"
class="bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="environmentType.selectedTeam"
:icon="IconUsers"
:label="environmentType.selectedTeam.name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('collection.select_team')}`"
class="flex-1 !justify-start pr-8 rounded-none"
@@ -45,7 +45,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(team, index) in myTeams"
:key="`team-${index}`"
:label="team.name"
@@ -68,9 +68,9 @@
</div>
</template>
</tippy>
</SmartIntersection>
</SmartTab>
</SmartTabs>
</HoppSmartIntersection>
</HoppSmartTab>
</HoppSmartTabs>
</div>
</template>

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('environment.title')}`"
@@ -14,7 +14,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -26,7 +26,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:icon="IconGithub"
:label="t('import.from_gist')"
@click="
@@ -46,7 +46,7 @@
: undefined
"
>
<SmartItem
<HoppSmartItem
:disabled="
!currentUser
? true
@@ -71,11 +71,11 @@
</template>
<template #body>
<div v-if="loading" class="flex flex-col items-center justify-center p-4">
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div v-else class="flex flex-col space-y-2">
<SmartItem
<HoppSmartItem
:icon="IconFolderPlus"
:label="t('import.from_json')"
@click="openDialogChooseFileToImportFrom"
@@ -88,7 +88,7 @@
@change="importFromJSON"
/>
<hr />
<SmartItem
<HoppSmartItem
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="IconDownload"
@@ -97,7 +97,7 @@
/>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -15,14 +15,14 @@
:title="`${t('environment.select')}`"
class="bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="
selectedEnv.type === 'MY_ENV' && selectedEnv.index !== undefined
"
:label="myEnvironments[selectedEnv.index].name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('environment.select')}`"
class="flex-1 !justify-start pr-8 rounded-none"
@@ -36,7 +36,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:label="`${t('environment.no_environment')}`"
:info-icon="
selectedEnvironmentIndex.type !== 'MY_ENV'
@@ -52,7 +52,7 @@
"
/>
<hr v-if="myEnvironments.length > 0" />
<SmartItem
<HoppSmartItem
v-for="(gen, index) in myEnvironments"
:key="`gen-${index}`"
:label="gen.name"
@@ -74,12 +74,12 @@
:title="`${t('environment.select')}`"
class="bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="selectedEnv.name"
:label="selectedEnv.name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('environment.select')}`"
class="flex-1 !justify-start pr-8 rounded-none"
@@ -92,7 +92,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:label="`${t('environment.no_environment')}`"
:info-icon="
selectedEnvironmentIndex.type !== 'TEAM_ENV'
@@ -111,7 +111,7 @@
v-if="loading"
class="flex flex-col items-center justify-center p-4"
>
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<hr v-if="teamEnvironmentList.length > 0" />
@@ -119,7 +119,7 @@
v-if="environmentType.selectedTeam !== undefined"
class="flex flex-col"
>
<SmartItem
<HoppSmartItem
v-for="(gen, index) in teamEnvironmentList"
:key="`gen-team-${index}`"
:label="gen.environment.name"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t(`environment.${action}`)"
@@ -28,13 +28,13 @@
{{ t("environment.variable_list") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="clearIcon"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconPlus"
:title="t('add.new')"
@@ -69,7 +69,7 @@
:name="'value' + index"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
id="variable"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
@@ -92,7 +92,7 @@
<span class="pb-4 text-center">
{{ t("empty.environments") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('add.new')}`"
filled
class="mb-4"
@@ -104,12 +104,12 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
outline
@click="saveEnvironment"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -117,7 +117,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -33,7 +33,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -53,7 +53,7 @@
"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="`${t('action.edit')}`"
@@ -65,7 +65,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="duplicate"
:icon="IconCopy"
:label="`${t('action.duplicate')}`"
@@ -77,7 +77,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
v-if="environmentIndex !== 'Global'"
ref="deleteAction"
:icon="IconTrash2"
@@ -94,7 +94,7 @@
</template>
</tippy>
</span>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_environment')}`"
@hide-modal="confirmRemove = false"
@@ -122,7 +122,7 @@ import {
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { TippyComponent } from "vue-tippy"
import SmartItem from "@hoppscotch/ui/src/components/smart/Item.vue"
import { HoppSmartItem } from "@hoppscotch/ui"
const t = useI18n()
const toast = useToast()
@@ -140,9 +140,9 @@ const confirmRemove = ref(false)
const tippyActions = ref<TippyComponent | null>(null)
const options = ref<TippyComponent | null>(null)
const edit = ref<typeof SmartItem>()
const duplicate = ref<typeof SmartItem>()
const deleteAction = ref<typeof SmartItem>()
const edit = ref<typeof HoppSmartItem>()
const duplicate = ref<typeof HoppSmartItem>()
const deleteAction = ref<typeof HoppSmartItem>()
const removeEnvironment = () => {
if (props.environmentIndex === null) return

View File

@@ -3,21 +3,21 @@
<div
class="sticky z-10 flex justify-between flex-1 flex-shrink-0 overflow-x-auto border-b top-upperPrimaryStickyFold border-dividerLight bg-primary"
>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconPlus"
:label="`${t('action.new')}`"
class="!rounded-none"
@click="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/environments"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconArchive"
:title="t('modal.import_export')"
@@ -45,7 +45,7 @@
<span class="pb-4 text-center">
{{ t("empty.environments") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('add.new')}`"
filled
outline

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t(`environment.${action}`)"
@@ -29,13 +29,13 @@
{{ t("environment.variable_list") }}
</label>
<div v-if="!isViewer" class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="clearIcon"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconPlus"
:title="t('add.new')"
@@ -73,7 +73,7 @@
:readonly="isViewer"
/>
<div v-if="!isViewer" class="flex">
<ButtonSecondary
<HoppButtonSecondary
id="variable"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
@@ -96,14 +96,14 @@
<span class="pb-4 text-center">
{{ t("empty.environments") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
v-if="isViewer"
disabled
:label="`${t('add.new')}`"
filled
class="mb-4"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('add.new')}`"
filled
@@ -116,13 +116,13 @@
</template>
<template v-if="!isViewer" #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.save')}`"
:loading="isLoading"
outline
@click="saveEnvironment"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -130,7 +130,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -26,7 +26,7 @@
theme="popover"
:on-shown="() => tippyActions!.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
@@ -42,7 +42,7 @@
@keyup.delete="deleteAction!.$el.click()"
@keyup.escape="options!.tippy().hide()"
>
<SmartItem
<HoppSmartItem
ref="edit"
:icon="IconEdit"
:label="`${t('action.edit')}`"
@@ -54,7 +54,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="duplicate"
:icon="IconCopy"
:label="`${t('action.duplicate')}`"
@@ -66,7 +66,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="`${t('action.delete')}`"
@@ -82,7 +82,7 @@
</template>
</tippy>
</span>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_environment')}`"
@hide-modal="confirmRemove = false"
@@ -108,7 +108,7 @@ import IconCopy from "~icons/lucide/copy"
import IconTrash2 from "~icons/lucide/trash-2"
import IconMoreVertical from "~icons/lucide/more-vertical"
import { TippyComponent } from "vue-tippy"
import SmartItem from "@hoppscotch/ui/src/components/smart/Item.vue"
import { HoppSmartItem } from "@hoppscotch/ui"
const t = useI18n()
const toast = useToast()
@@ -126,9 +126,9 @@ const confirmRemove = ref(false)
const tippyActions = ref<TippyComponent | null>(null)
const options = ref<TippyComponent | null>(null)
const edit = ref<typeof SmartItem>()
const duplicate = ref<typeof SmartItem>()
const deleteAction = ref<typeof SmartItem>()
const edit = ref<typeof HoppSmartItem>()
const duplicate = ref<typeof HoppSmartItem>()
const deleteAction = ref<typeof HoppSmartItem>()
const removeEnvironment = () => {
pipe(

View File

@@ -3,7 +3,7 @@
<div
class="sticky z-10 flex justify-between flex-1 flex-shrink-0 overflow-x-auto border-b top-upperSecondaryStickyFold border-dividerLight bg-primary"
>
<ButtonSecondary
<HoppButtonSecondary
v-if="team === undefined || team.myRole === 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
disabled
@@ -12,7 +12,7 @@
:title="t('team.no_access')"
:label="t('action.new')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:icon="IconPlus"
:label="`${t('action.new')}`"
@@ -20,21 +20,21 @@
@click="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/environments"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="team !== undefined && team.myRole === 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
disabled
:icon="IconArchive"
:title="t('modal.import_export')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
v-tippy="{ theme: 'tooltip' }"
:icon="IconArchive"
@@ -56,7 +56,7 @@
<span class="pb-4 text-center">
{{ t("empty.environments") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
v-if="team === undefined || team.myRole === 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
disabled
@@ -66,7 +66,7 @@
:title="t('team.no_access')"
:label="t('action.new')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:label="`${t('add.new')}`"
filled
@@ -87,7 +87,7 @@
/>
</div>
<div v-if="loading" class="flex flex-col items-center justify-center p-4">
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('auth.login_to_hoppscotch')}`"
@@ -8,25 +8,25 @@
>
<template #body>
<div v-if="mode === 'sign-in'" class="flex flex-col space-y-2">
<SmartItem
<HoppSmartItem
:loading="signingInWithGitHub"
:icon="IconGithub"
:label="`${t('auth.continue_with_github')}`"
@click="signInWithGithub"
/>
<SmartItem
<HoppSmartItem
:loading="signingInWithGoogle"
:icon="IconGoogle"
:label="`${t('auth.continue_with_google')}`"
@click="signInWithGoogle"
/>
<SmartItem
<HoppSmartItem
:loading="signingInWithMicrosoft"
:icon="IconMicrosoft"
:label="`${t('auth.continue_with_microsoft')}`"
@click="signInWithMicrosoft"
/>
<SmartItem
<HoppSmartItem
:icon="IconEmail"
:label="`${t('auth.continue_with_email')}`"
@click="mode = 'email'"
@@ -55,7 +55,7 @@
{{ t("auth.email") }}
</label>
</div>
<ButtonPrimary
<HoppButtonPrimary
:loading="signingInWithEmail"
type="submit"
:label="`${t('auth.send_magic_link')}`"
@@ -78,14 +78,14 @@
<template #footer>
<div v-if="mode === 'sign-in'" class="text-secondaryLight text-tiny">
By signing in, you are agreeing to our
<SmartAnchor
<HoppSmartAnchor
class="link"
to="https://docs.hoppscotch.io/terms"
blank
label="Terms of Service"
/>
and
<SmartAnchor
<HoppSmartAnchor
class="link"
to="https://docs.hoppscotch.io/privacy"
blank
@@ -93,7 +93,7 @@
/>
</div>
<div v-if="mode === 'email'">
<ButtonSecondary
<HoppButtonSecondary
:label="t('auth.all_sign_in_options')"
:icon="IconArrowLeft"
class="!p-0"
@@ -104,20 +104,20 @@
v-if="mode === 'email-sent'"
class="flex justify-between flex-1 text-secondaryLight"
>
<SmartAnchor
<HoppSmartAnchor
class="link"
:label="t('auth.re_enter_email')"
:icon="IconArrowLeft"
@click="mode = 'email'"
/>
<SmartAnchor
<HoppSmartAnchor
class="link"
:label="`${t('action.dismiss')}`"
@click="hideModal"
/>
</div>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts">

View File

@@ -1,6 +1,6 @@
<template>
<div class="flex" @click="OpenLogoutModal()">
<SmartItem
<HoppSmartItem
ref="logoutItem"
:icon="IconLogOut"
:label="`${t('auth.logout')}`"
@@ -8,7 +8,7 @@
:shortcut="shortcut"
@click="OpenLogoutModal()"
/>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmLogout"
:title="`${t('confirm.logout')}`"
@hide-modal="confirmLogout = false"

View File

@@ -14,7 +14,10 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary class="pr-8 ml-2 rounded-none" :label="authName" />
<HoppButtonSecondary
class="pr-8 ml-2 rounded-none"
:label="authName"
/>
</span>
<template #content="{ hide }">
<div
@@ -23,7 +26,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
label="None"
:icon="authName === 'None' ? IconCircleDot : IconCircle"
:active="authName === 'None'"
@@ -34,7 +37,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="Basic Auth"
:icon="authName === 'Basic Auth' ? IconCircleDot : IconCircle"
:active="authName === 'Basic Auth'"
@@ -45,7 +48,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="Bearer Token"
:icon="authName === 'Bearer' ? IconCircleDot : IconCircle"
:active="authName === 'Bearer'"
@@ -56,7 +59,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="OAuth 2.0"
:icon="authName === 'OAuth 2.0' ? IconCircleDot : IconCircle"
:active="authName === 'OAuth 2.0'"
@@ -67,7 +70,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="API key"
:icon="authName === 'API key' ? IconCircleDot : IconCircle"
:active="authName === 'API key'"
@@ -83,27 +86,27 @@
</tippy>
</span>
<div class="flex">
<!-- <SmartCheckbox
<!-- <HoppSmartCheckbox
:on="!URLExcludes.auth"
@change="setExclude('auth', !$event)"
>
{{ t("authorization.include_in_url") }}
</SmartCheckbox> -->
<SmartCheckbox
</HoppSmartCheckbox> -->
<HoppSmartCheckbox
:on="authActive"
class="px-2"
@change="authActive = !authActive"
>
{{ t("state.enabled") }}
</SmartCheckbox>
<ButtonSecondary
</HoppSmartCheckbox>
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/authorization"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@@ -124,7 +127,7 @@
<span class="pb-4 text-center">
{{ t("empty.authorization") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
outline
:label="t('app.documentation')"
to="https://docs.hoppscotch.io/features/authorization"
@@ -180,7 +183,7 @@
:on-shown="() => authTippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
:label="addTo || t('state.none')"
class="pr-8 ml-2 rounded-none"
/>
@@ -192,7 +195,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:icon="addTo === 'Headers' ? IconCircleDot : IconCircle"
:active="addTo === 'Headers'"
:label="'Headers'"
@@ -203,7 +206,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
:icon="
addTo === 'Query params' ? IconCircleDot : IconCircle
"
@@ -229,7 +232,7 @@
<div class="pb-2 text-secondaryLight">
{{ t("helpers.authorization") }}
</div>
<SmartAnchor
<HoppSmartAnchor
class="link"
:label="t('authorization.learn')"
:icon="IconExternalLink"

View File

@@ -14,7 +14,7 @@
:disabled="connected"
@keyup.enter="onConnectClick"
/>
<ButtonPrimary
<HoppButtonPrimary
id="get"
name="get"
:label="!connected ? t('action.connect') : t('action.disconnect')"

View File

@@ -1,11 +1,11 @@
<template>
<div class="flex flex-col flex-1 h-full">
<SmartTabs
<HoppSmartTabs
v-model="selectedOptionTab"
styles="sticky overflow-x-auto flex-shrink-0 bg-primary top-upperPrimaryStickyFold z-10"
render-inactive-tabs
>
<SmartTab
<HoppSmartTab
:id="'query'"
:label="`${t('tab.query')}`"
:indicator="gqlQueryString && gqlQueryString.length > 0 ? true : false"
@@ -17,7 +17,7 @@
{{ t("request.query") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', delay: [500, 20], allowHTML: true }"
:title="`${t(
'request.run'
@@ -27,7 +27,7 @@
class="rounded-none !text-accent !hover:text-accentDark"
@click="runQuery()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', delay: [500, 20], allowHTML: true }"
:title="`${t(
'request.save'
@@ -37,33 +37,33 @@
class="rounded-none"
@click="saveRequest"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/graphql"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearGQLQuery()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabledQuery }"
:icon="IconWrapText"
@click.prevent="linewrapEnabledQuery = !linewrapEnabledQuery"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.prettify')"
:icon="prettifyQueryIcon"
@click="prettifyQuery"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copyQueryIcon"
@@ -72,8 +72,8 @@
</div>
</div>
<div ref="queryEditor" class="flex flex-col flex-1"></div>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'variables'"
:label="`${t('tab.variables')}`"
:indicator="variableString && variableString.length > 0 ? true : false"
@@ -85,20 +85,20 @@
{{ t("request.variables") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/graphql"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearGQLVariables()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabledVariable }"
@@ -107,13 +107,13 @@
linewrapEnabledVariable = !linewrapEnabledVariable
"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.prettify')"
:icon="prettifyVariablesIcon"
@click="prettifyVariableString"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copyVariablesIcon"
@@ -122,8 +122,8 @@
</div>
</div>
<div ref="variableEditor" class="flex flex-col flex-1"></div>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'headers'"
:label="`${t('tab.headers')}`"
:info="activeGQLHeadersCount === 0 ? null : `${activeGQLHeadersCount}`"
@@ -135,34 +135,34 @@
{{ t("tab.headers") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/graphql"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.bulk_mode')"
:icon="IconEdit"
:class="{ '!text-accent': bulkMode }"
@click="bulkMode = !bulkMode"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('add.new')"
:icon="IconPlus"
@@ -192,7 +192,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{
theme: 'tooltip',
delay: [500, 20],
@@ -210,7 +210,7 @@
tabindex="-1"
/>
</span>
<SmartAutoComplete
<HoppSmartAutoComplete
:placeholder="`${t('count.header', { count: index + 1 })}`"
:source="commonHeaders"
:spellcheck="false"
@@ -250,7 +250,7 @@
"
/>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="
header.hasOwnProperty('active')
@@ -278,7 +278,7 @@
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
:icon="IconTrash"
@@ -302,7 +302,7 @@
<span class="pb-4 text-center">
{{ t("empty.headers") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('add.new')}`"
filled
:icon="IconPlus"
@@ -311,11 +311,11 @@
/>
</div>
</div>
</SmartTab>
<SmartTab :id="'authorization'" :label="`${t('tab.authorization')}`">
</HoppSmartTab>
<HoppSmartTab :id="'authorization'" :label="`${t('tab.authorization')}`">
<GraphqlAuthorization />
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
<CollectionsSaveRequest
mode="graphql"
:show="showSaveRequestModal"
@@ -354,7 +354,7 @@ import {
parseRawKeyValueEntriesE,
RawKeyValueEntry,
} from "@hoppscotch/data"
import draggable from "vuedraggable"
import draggable from "vuedraggable-es"
import { clone, cloneDeep, isEqual } from "lodash-es"
import { refAutoReset } from "@vueuse/core"
import { copyToClipboard } from "~/helpers/utils/clipboard"

View File

@@ -4,7 +4,7 @@
v-if="responseString === 'loading'"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div v-else-if="responseString" class="flex flex-col flex-1">
@@ -15,14 +15,14 @@
{{ t("response.title") }}
</label>
<div class="flex items-center">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
'action.download_file'
@@ -30,7 +30,7 @@
:icon="downloadResponseIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
'action.copy'

View File

@@ -1,21 +1,25 @@
<template>
<SmartTabs
<HoppSmartTabs
v-model="selectedNavigationTab"
styles="sticky overflow-x-auto flex-shrink-0 bg-primary z-10 top-0"
vertical
render-inactive-tabs
>
<SmartTab :id="'history'" :icon="IconClock" :label="`${t('tab.history')}`">
<HoppSmartTab
:id="'history'"
:icon="IconClock"
:label="`${t('tab.history')}`"
>
<History :page="'graphql'" @use-history="handleUseHistory" />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'collections'"
:icon="IconFolder"
:label="`${t('tab.collections')}`"
>
<CollectionsGraphql />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'docs'"
:icon="IconBookOpen"
:label="`${t('tab.documentation')}`"
@@ -51,7 +55,7 @@
class="flex flex-1 p-4 py-2 bg-transparent"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/quickstart/graphql"
blank
@@ -60,12 +64,12 @@
/>
</div>
</div>
<SmartTabs
<HoppSmartTabs
v-model="selectedGqlTab"
styles="border-t border-b border-dividerLight bg-primary sticky overflow-x-auto flex-shrink-0 z-10 top-sidebarPrimaryStickyFold"
render-inactive-tabs
>
<SmartTab
<HoppSmartTab
v-if="queryFields.length > 0"
:id="'queries'"
:label="`${t('tab.queries')}`"
@@ -78,8 +82,8 @@
:jump-type-callback="handleJumpToType"
class="p-4"
/>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
v-if="mutationFields.length > 0"
:id="'mutations'"
:label="`${t('graphql.mutations')}`"
@@ -92,8 +96,8 @@
:jump-type-callback="handleJumpToType"
class="p-4"
/>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
v-if="subscriptionFields.length > 0"
:id="'subscriptions'"
:label="`${t('graphql.subscriptions')}`"
@@ -106,8 +110,8 @@
:jump-type-callback="handleJumpToType"
class="p-4"
/>
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
v-if="graphqlTypes.length > 0"
:id="'types'"
:label="`${t('tab.types')}`"
@@ -122,11 +126,11 @@
:highlighted-fields="getGqlTypeHighlightedFields(type)"
:jump-type-callback="handleJumpToType"
/>
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
</div>
</SmartTab>
<SmartTab :id="'schema'" :icon="IconBox" :label="`${t('tab.schema')}`">
</HoppSmartTab>
<HoppSmartTab :id="'schema'" :icon="IconBox" :label="`${t('tab.schema')}`">
<div
v-if="schemaString"
class="sticky top-0 z-10 flex items-center justify-between flex-shrink-0 pl-4 overflow-x-auto border-b bg-primary border-dividerLight"
@@ -135,27 +139,27 @@
{{ t("graphql.schema") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/quickstart/graphql"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="downloadSchemaIcon"
@click="downloadSchema"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copySchemaIcon"
@@ -182,8 +186,8 @@
{{ t("empty.schema") }}
</span>
</div>
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
</template>
<script setup lang="ts">

View File

@@ -15,7 +15,7 @@
{{ entry.request.url }}
</span>
</span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconTrash"
color="red"
@@ -24,14 +24,14 @@
data-testid="delete_history_entry"
@click="emit('delete-entry')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="expand ? t('hide.more') : t('show.more')"
:icon="expand ? IconMinimize2 : IconMaximize2"
class="hidden group-hover:inline-flex"
@click="expand = !expand"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="!entry.star ? t('add.star') : t('remove.star')"
:icon="entry.star ? IconStarOff : IconStar"

View File

@@ -11,7 +11,7 @@
:placeholder="`${t('action.search')}`"
/>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/history"
blank
@@ -19,7 +19,7 @@
:icon="IconHelpCircle"
/>
<tippy interactive trigger="click" theme="popover">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.filter')"
:icon="IconFilter"
@@ -29,7 +29,7 @@
<div class="pb-2 pl-4 text-tiny text-secondaryLight">
{{ t("action.filter") }}
</div>
<SmartRadioGroup
<HoppSmartRadioGroup
v-model="filterSelection"
:radios="filters"
@update:model-value="hide()"
@@ -38,7 +38,7 @@
<div class="pb-2 pl-4 text-tiny text-secondaryLight">
{{ t("action.group_by") }}
</div>
<SmartRadioGroup
<HoppSmartRadioGroup
v-model="groupSelection"
:radios="groups"
@update:model-value="hide()"
@@ -46,7 +46,7 @@
</div>
</template>
</tippy>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
data-testid="clear_history"
:disabled="history.length === 0"
@@ -81,7 +81,7 @@
{{ filteredHistoryGroupIndex }}
</span>
</span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconTrash"
color="red"
@@ -128,7 +128,7 @@
<span class="mt-2 mb-4 text-center">
{{ t("state.nothing_found") }} "{{ filterText || filterSelection }}"
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.clear')"
outline
@click="
@@ -139,7 +139,7 @@
"
/>
</div>
<SmartConfirmModal
<HoppSmartConfirmModal
:show="confirmRemove"
:title="`${t('confirm.remove_history')}`"
@hide-modal="confirmRemove = false"

View File

@@ -26,7 +26,7 @@
{{ entry.request.endpoint }}
</span>
</span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconTrash"
color="red"
@@ -35,7 +35,7 @@
data-testid="delete_history_entry"
@click="emit('delete-entry')"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="!entry.star ? t('add.star') : t('remove.star')"
:class="{ 'group-hover:inline-flex hidden': !entry.star }"

View File

@@ -14,7 +14,10 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary class="pr-8 ml-2 rounded-none" :label="authName" />
<HoppButtonSecondary
class="pr-8 ml-2 rounded-none"
:label="authName"
/>
</span>
<template #content="{ hide }">
<div
@@ -23,7 +26,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
label="None"
:icon="authName === 'None' ? IconCircleDot : IconCircle"
:active="authName === 'None'"
@@ -34,7 +37,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="Basic Auth"
:icon="authName === 'Basic Auth' ? IconCircleDot : IconCircle"
:active="authName === 'Basic Auth'"
@@ -45,7 +48,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="Bearer Token"
:icon="authName === 'Bearer' ? IconCircleDot : IconCircle"
:active="authName === 'Bearer'"
@@ -56,7 +59,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="OAuth 2.0"
:icon="authName === 'OAuth 2.0' ? IconCircleDot : IconCircle"
:active="authName === 'OAuth 2.0'"
@@ -67,7 +70,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
label="API key"
:icon="authName === 'API key' ? IconCircleDot : IconCircle"
:active="authName === 'API key'"
@@ -83,26 +86,26 @@
</tippy>
</span>
<div class="flex">
<!-- <SmartCheckbox
<!-- <HoppSmartCheckbox
:on="!URLExcludes.auth"
@change="setExclude('auth', !$event)"
>
{{ $t("authorization.include_in_url") }}
</SmartCheckbox>-->
<SmartCheckbox
</HoppSmartCheckbox>-->
<HoppSmartCheckbox
:on="authActive"
class="px-2"
@change="authActive = !authActive"
>{{ t("state.enabled") }}</SmartCheckbox
>{{ t("state.enabled") }}</HoppSmartCheckbox
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/authorization"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@@ -121,7 +124,7 @@
:alt="`${t('empty.authorization')}`"
/>
<span class="pb-4 text-center">{{ t("empty.authorization") }}</span>
<ButtonSecondary
<HoppButtonSecondary
outline
:label="t('app.documentation')"
to="https://docs.hoppscotch.io/features/authorization"
@@ -177,7 +180,7 @@
:on-shown="() => authTippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
:label="addTo || t('state.none')"
class="pr-8 ml-2 rounded-none"
/>
@@ -189,7 +192,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:icon="addTo === 'Headers' ? IconCircleDot : IconCircle"
:active="addTo === 'Headers'"
:label="'Headers'"
@@ -200,7 +203,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
:icon="
addTo === 'Query params' ? IconCircleDot : IconCircle
"
@@ -226,7 +229,7 @@
<div class="pb-2 text-secondaryLight">
{{ t("helpers.authorization") }}
</div>
<SmartAnchor
<HoppSmartAnchor
class="link"
:label="t('authorization.learn')"
:icon="IconExternalLink"

View File

@@ -14,7 +14,7 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
:label="contentType || t('state.none')"
class="pr-8 ml-2 rounded-none"
/>
@@ -26,7 +26,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
:label="t('state.none')"
:info-icon="contentType === null ? IconDone : null"
:active-info-icon="contentType === null"
@@ -50,7 +50,7 @@
</span>
</div>
<div class="flex flex-col">
<SmartItem
<HoppSmartItem
v-for="(
contentTypeItem, contentTypeIndex
) in contentTypeItems.contentTypes"
@@ -72,7 +72,7 @@
</div>
</template>
</tippy>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="t('request.override_help')"
:label="
@@ -109,7 +109,7 @@
:alt="`${t('empty.body')}`"
/>
<span class="pb-4 text-center">{{ t("empty.body") }}</span>
<ButtonSecondary
<HoppButtonSecondary
outline
:label="`${t('app.documentation')}`"
to="https://docs.hoppscotch.io/features/body"

View File

@@ -7,20 +7,20 @@
{{ t("request.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/body"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('add.new')"
:icon="IconPlus"
@@ -44,7 +44,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{
theme: 'tooltip',
delay: [500, 20],
@@ -76,10 +76,10 @@
/>
<div v-if="entry.isFile" class="file-chips-container">
<div class="space-x-2 file-chips-wrapper">
<SmartFileChip
<HoppSmartFileChip
v-for="(file, fileIndex) in entry.value"
:key="`param-${index}-file-${fileIndex}`"
>{{ file.name }}</SmartFileChip
>{{ file.name }}</HoppSmartFileChip
>
</div>
</div>
@@ -110,7 +110,7 @@
</label>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="
entry.hasOwnProperty('active')
@@ -140,7 +140,7 @@
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
:icon="IconTrash"
@@ -163,7 +163,7 @@
:alt="`${t('empty.body')}`"
/>
<span class="pb-4 text-center">{{ t("empty.body") }}</span>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('add.new')}`"
filled
:icon="IconPlus"
@@ -188,7 +188,7 @@ import * as O from "fp-ts/Option"
import * as A from "fp-ts/Array"
import { FormDataKeyValue } from "@hoppscotch/data"
import { isEqual, clone } from "lodash-es"
import draggable from "vuedraggable"
import draggable from "vuedraggable-es"
import { pluckRef } from "@composables/ref"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('request.generate_code')}`"
@@ -18,7 +18,7 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
:label="
CodegenDefinitions.find((x) => x.name === codegenType).caption
"
@@ -43,7 +43,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="codegen in filteredCodegenDefinitions"
:key="codegen.name"
:label="codegen.caption"
@@ -89,20 +89,20 @@
{{ t("request.generated_code") }}
</label>
<div class="flex items-center">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="t('action.download_file')"
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="t('action.copy')"
:icon="copyIcon"
@@ -119,13 +119,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="`${t('action.copy')}`"
:icon="copyCodeIcon"
outline
@click="copyRequestCode"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.dismiss')}`"
outline
filled
@@ -133,7 +133,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -7,20 +7,20 @@
{{ t("request.header_list") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/headers"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="bulkMode"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -28,14 +28,14 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.bulk_mode')"
:icon="IconEdit"
:class="{ '!text-accent': bulkMode }"
@click="bulkMode = !bulkMode"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('add.new')"
:icon="IconPlus"
@@ -61,7 +61,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{
theme: 'tooltip',
delay: [500, 20],
@@ -79,7 +79,7 @@
tabindex="-1"
/>
</span>
<SmartAutoComplete
<HoppSmartAutoComplete
:placeholder="`${t('count.header', { count: index + 1 })}`"
:source="commonHeaders"
:spellcheck="false"
@@ -110,7 +110,7 @@
"
/>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="
header.hasOwnProperty('active')
@@ -138,7 +138,7 @@
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
:icon="IconTrash"
@@ -165,7 +165,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconLock"
class="opacity-25 cursor-auto text-secondaryLight bg-divider"
tabindex="-1"
@@ -182,19 +182,19 @@
readonly
/>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-if="header.source === 'auth'"
:icon="masking ? IconEye : IconEyeOff"
@click="toggleMask()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-else
:icon="IconArrowUpRight"
class="cursor-auto text-primary hover:text-primary"
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconArrowUpRight"
@click="changeTab(header.source)"
/>
@@ -213,7 +213,7 @@
:alt="`${t('empty.headers')}`"
/>
<span class="pb-4 text-center">{{ t("empty.headers") }}</span>
<ButtonSecondary
<HoppButtonSecondary
filled
:label="`${t('add.new')}`"
:icon="IconPlus"
@@ -253,7 +253,7 @@ import * as RA from "fp-ts/ReadonlyArray"
import * as E from "fp-ts/Either"
import * as O from "fp-ts/Option"
import * as A from "fp-ts/Array"
import draggable from "vuedraggable"
import draggable from "vuedraggable-es"
import { RequestOptionTabs } from "./RequestOptions.vue"
import { useCodemirror } from "@composables/codemirror"
import {

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="`${t('import.curl')}`"
@@ -13,26 +13,26 @@
cURL
</label>
<div class="flex items-center">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="t('action.download_file')"
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="t('action.copy')"
:icon="copyIcon"
@@ -51,13 +51,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
ref="importButton"
:label="`${t('import.title')}`"
outline
@click="handleImport"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@@ -65,7 +65,7 @@
/>
</span>
<span class="flex">
<ButtonSecondary
<HoppButtonSecondary
:icon="pasteIcon"
:label="`${t('action.paste')}`"
filled
@@ -74,7 +74,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -22,7 +22,7 @@
<SmartEnvInput v-model="scope" placeholder="Scope" />
</div>
<div class="p-2">
<ButtonSecondary
<HoppButtonSecondary
filled
:label="`${t('authorization.generate_token')}`"
@click="handleAccessTokenRequest()"

View File

@@ -7,20 +7,20 @@
{{ t("request.parameter_list") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/parameters"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="bulkMode"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -28,14 +28,14 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.bulk_mode')"
:icon="IconEdit"
:class="{ '!text-accent': bulkMode }"
@click="bulkMode = !bulkMode"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('add.new')"
:icon="IconPlus"
@@ -61,7 +61,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{
theme: 'tooltip',
delay: [500, 20],
@@ -104,7 +104,7 @@
"
/>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="
param.hasOwnProperty('active')
@@ -134,7 +134,7 @@
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
:icon="IconTrash"
@@ -157,7 +157,7 @@
:alt="`${t('empty.parameters')}`"
/>
<span class="pb-4 text-center">{{ t("empty.parameters") }}</span>
<ButtonSecondary
<HoppButtonSecondary
:label="`${t('add.new')}`"
:icon="IconPlus"
filled
@@ -192,7 +192,7 @@ import {
RawKeyValueEntry,
} from "@hoppscotch/data"
import { isEqual, cloneDeep } from "lodash-es"
import draggable from "vuedraggable"
import draggable from "vuedraggable-es"
import linter from "~/helpers/editor/linting/rawKeyValue"
import { useCodemirror } from "@composables/codemirror"
import { useColorMode } from "@composables/theming"

View File

@@ -7,20 +7,20 @@
{{ t("preRequest.javascript_code") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/pre-request-script"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@click="clearContent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
@@ -39,7 +39,7 @@
<div class="pb-2 text-secondaryLight">
{{ t("helpers.pre_request_script") }}
</div>
<SmartAnchor
<HoppSmartAnchor
:label="`${t('preRequest.learn')}`"
to="https://docs.hoppscotch.io/features/pre-request-script"
blank

View File

@@ -7,27 +7,27 @@
{{ t("request.raw_body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/body"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@click="clearContent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="
[
'application/json',
@@ -43,7 +43,7 @@
@click="prettifyRequestBody"
/>
<label for="payload">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('import.title')"
:icon="IconFilePlus"

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal
<HoppSmartModal
v-if="show"
dialog
:title="t('modal.confirm')"
@@ -13,28 +13,28 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
v-focus
:label="t('action.save')"
:loading="loading"
outline
@click="saveChange"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.dont_save')"
outline
filled
@click="discardChange"
/>
</span>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script setup lang="ts">

View File

@@ -30,7 +30,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(method, index) in methods"
:key="`method-${index}`"
:label="method"
@@ -58,7 +58,7 @@
</div>
</div>
<div class="flex mt-2 sm:mt-0">
<ButtonPrimary
<HoppButtonPrimary
id="send"
v-tippy="{ theme: 'tooltip', delay: [500, 20], allowHTML: true }"
:title="`${t('action.send')} <kbd>${getSpecialKey()}</kbd><kbd>↩</kbd>`"
@@ -73,7 +73,7 @@
theme="popover"
:on-shown="() => sendTippyActions.focus()"
>
<ButtonPrimary
<HoppButtonPrimary
v-tippy="{ theme: 'tooltip' }"
:title="t('app.options')"
:icon="IconChevronDown"
@@ -90,7 +90,7 @@
@keyup.delete="clearAll.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
ref="curl"
:label="`${t('import.curl')}`"
:icon="IconFileCode"
@@ -102,7 +102,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="show"
:label="`${t('show.code')}`"
:icon="IconCode2"
@@ -114,7 +114,7 @@
}
"
/>
<SmartItem
<HoppSmartItem
ref="clearAll"
:label="`${t('action.clear_all')}`"
:icon="IconRotateCCW"
@@ -131,7 +131,7 @@
</tippy>
</span>
<span class="flex ml-2 transition border rounded border-divider">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', delay: [500, 20], allowHTML: true }"
:title="`${t(
'request.save'
@@ -149,7 +149,7 @@
theme="popover"
:on-shown="() => saveTippyActions.focus()"
>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('app.options')"
:icon="IconChevronDown"
@@ -175,7 +175,7 @@
class="mb-2 input !bg-primaryContrast"
@keyup.enter="hide()"
/>
<SmartItem
<HoppSmartItem
ref="copyRequestAction"
:label="shareButtonText"
:icon="copyLinkIcon"
@@ -187,13 +187,13 @@
}
"
/>
<SmartItem
<HoppSmartItem
:icon="IconLink2"
:label="`${t('request.view_my_links')}`"
to="/profile"
/>
<hr />
<SmartItem
<HoppSmartItem
ref="saveRequestAction"
:label="`${t('request.save_as')}`"
:icon="IconFolderPlus"

View File

@@ -1,30 +1,30 @@
<template>
<SmartTabs
<HoppSmartTabs
v-model="selectedRealtimeTab"
styles="sticky overflow-x-auto flex-shrink-0 bg-primary top-upperMobilePrimaryStickyFold sm:top-upperPrimaryStickyFold z-10"
render-inactive-tabs
>
<SmartTab
<HoppSmartTab
:id="'params'"
:label="`${t('tab.parameters')}`"
:info="`${newActiveParamsCount$}`"
>
<HttpParameters />
</SmartTab>
<SmartTab :id="'bodyParams'" :label="`${t('tab.body')}`">
</HoppSmartTab>
<HoppSmartTab :id="'bodyParams'" :label="`${t('tab.body')}`">
<HttpBody @change-tab="changeTab" />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'headers'"
:label="`${t('tab.headers')}`"
:info="`${newActiveHeadersCount$}`"
>
<HttpHeaders @change-tab="changeTab" />
</SmartTab>
<SmartTab :id="'authorization'" :label="`${t('tab.authorization')}`">
</HoppSmartTab>
<HoppSmartTab :id="'authorization'" :label="`${t('tab.authorization')}`">
<HttpAuthorization />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'preRequestScript'"
:label="`${t('tab.pre_request_script')}`"
:indicator="
@@ -32,15 +32,15 @@
"
>
<HttpPreRequestScript />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'tests'"
:label="`${t('tab.tests')}`"
:indicator="testScript && testScript.length > 0 ? true : false"
>
<HttpTests />
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
</template>
<script setup lang="ts">

View File

@@ -8,7 +8,7 @@
v-if="response.type === 'loading'"
class="flex flex-col items-center justify-center"
>
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div

View File

@@ -1,28 +1,32 @@
<template>
<SmartTabs
<HoppSmartTabs
v-model="selectedNavigationTab"
styles="sticky overflow-x-auto flex-shrink-0 bg-primary z-10 top-0"
vertical
render-inactive-tabs
>
<SmartTab :id="'history'" :icon="IconClock" :label="`${t('tab.history')}`">
<HoppSmartTab
:id="'history'"
:icon="IconClock"
:label="`${t('tab.history')}`"
>
<History :page="'rest'" />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'collections'"
:icon="IconFolder"
:label="`${t('tab.collections')}`"
>
<Collections />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
:id="'env'"
:icon="IconLayers"
:label="`${t('environment.title')}`"
>
<Environments />
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
</template>
<script setup lang="ts">

View File

@@ -14,7 +14,7 @@
<label class="font-semibold truncate text-secondaryLight">
{{ t("test.report") }}
</label>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@@ -48,13 +48,13 @@
{{ t("environment.no_environment_description") }}
</p>
<p class="flex mt-3 space-x-2">
<ButtonSecondary
<HoppButtonSecondary
:label="t('environment.add_to_global')"
class="text-tiny !bg-primary"
filled
@click="addEnvToGlobal()"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('environment.create_new')"
class="text-tiny !bg-primary"
filled
@@ -186,7 +186,7 @@
<span class="pb-4 text-center">
{{ t("helpers.tests") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
outline
:label="`${t('action.learn_more')}`"
to="https://docs.hoppscotch.io/features/tests"

View File

@@ -1,6 +1,6 @@
<template>
<div class="flex items-center px-4 py-2">
<SmartProgressRing
<HoppSmartProgressRing
class="mr-2 text-red-500"
:radius="8"
:stroke="1.5"

View File

@@ -7,20 +7,20 @@
{{ t("test.javascript_code") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/tests"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@click="clearContent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
@@ -39,7 +39,7 @@
<div class="pb-2 text-secondaryLight">
{{ t("helpers.post_request_tests") }}
</div>
<SmartAnchor
<HoppSmartAnchor
:label="`${t('test.learn')}`"
to="https://docs.hoppscotch.io/features/tests"
blank

View File

@@ -7,20 +7,20 @@
{{ t("request.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/body"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear_all')"
:icon="IconTrash2"
@click="clearContent()"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="bulkMode"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -28,14 +28,14 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.bulk_mode')"
:icon="IconEdit"
:class="{ '!text-accent': bulkMode }"
@click="bulkMode = !bulkMode"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('add.new')"
:icon="IconPlus"
@@ -61,7 +61,7 @@
class="flex border-b divide-x divide-dividerLight border-dividerLight draggable-content group"
>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{
theme: 'tooltip',
delay: [500, 20],
@@ -104,7 +104,7 @@
"
/>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="
param.hasOwnProperty('active')
@@ -132,7 +132,7 @@
/>
</span>
<span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.remove')"
:icon="IconTrash"
@@ -156,7 +156,7 @@
<span class="pb-4 text-center">
{{ t("empty.body") }}
</span>
<ButtonSecondary
<HoppButtonSecondary
filled
:label="`${t('add.new')}`"
:icon="IconPlus"
@@ -191,7 +191,7 @@ import * as A from "fp-ts/Array"
import * as O from "fp-ts/Option"
import * as RA from "fp-ts/ReadonlyArray"
import * as E from "fp-ts/Either"
import draggable from "vuedraggable"
import draggable from "vuedraggable-es"
import { useCodemirror } from "@composables/codemirror"
import linter from "~/helpers/editor/linting/rawKeyValue"
import { useRESTRequestBody } from "~/newstore/RESTSession"

View File

@@ -7,7 +7,7 @@
{{ t("request.header_list") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="headers"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"

View File

@@ -15,7 +15,7 @@
<span class="truncate rounded-sm select-all">
{{ header.value }}
</span>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copyIcon"

View File

@@ -1,10 +1,10 @@
<template>
<SmartTabs
<HoppSmartTabs
v-if="response"
v-model="selectedLensTab"
styles="sticky overflow-x-auto flex-shrink-0 z-10 bg-primary top-lowerPrimaryStickyFold"
>
<SmartTab
<HoppSmartTab
v-for="(lens, index) in validLenses"
:id="lens.renderer"
:key="`lens-${index}`"
@@ -12,8 +12,8 @@
class="flex flex-col flex-1 w-full h-full"
>
<component :is="lensRendererFor(lens.renderer)" :response="response" />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
v-if="maybeHeaders"
id="headers"
:label="t('response.headers')"
@@ -21,8 +21,8 @@
class="flex flex-col flex-1"
>
<LensesHeadersRenderer :headers="maybeHeaders" />
</SmartTab>
<SmartTab
</HoppSmartTab>
<HoppSmartTab
id="results"
:label="t('test.results')"
:indicator="
@@ -38,8 +38,8 @@
class="flex flex-col flex-1"
>
<HttpTestResult />
</SmartTab>
</SmartTabs>
</HoppSmartTab>
</HoppSmartTabs>
</template>
<script setup lang="ts">

View File

@@ -7,7 +7,7 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -15,7 +15,7 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${
@@ -24,7 +24,7 @@
:icon="!previewEnabled ? IconEye : IconEyeOff"
@click.prevent="togglePreview"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
@@ -33,7 +33,7 @@
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(

View File

@@ -7,7 +7,7 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(

View File

@@ -10,7 +10,7 @@
{{ t("response.body") }}
</label>
<div class="flex items-center">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -18,7 +18,7 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.filter')"
@@ -26,7 +26,7 @@
:class="{ '!text-accent': toggleFilter }"
@click.prevent="toggleFilterState"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
@@ -35,7 +35,7 @@
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
@@ -76,7 +76,7 @@
<icon-lucide-info class="svg-icons mr-1.5" />
<span>{{ filterResponseError.error }}</span>
</div>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('app.wiki')"
@@ -121,7 +121,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(arrayMember, astIndex) in item.astParent.values"
:key="`ast-${astIndex}`"
:label="`${astIndex}`"
@@ -140,7 +140,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(objectMember, astIndex) in item.astParent.members"
:key="`ast-${astIndex}`"
:label="objectMember.key.value"
@@ -158,7 +158,7 @@
ref="tippyActions"
class="flex flex-col"
>
<SmartItem
<HoppSmartItem
label="{}"
@click="
() => {
@@ -173,7 +173,7 @@
ref="tippyActions"
class="flex flex-col"
>
<SmartItem
<HoppSmartItem
label="[]"
@click="
() => {

View File

@@ -7,7 +7,7 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(

View File

@@ -7,7 +7,7 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -15,7 +15,7 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
@@ -24,7 +24,7 @@
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(

View File

@@ -7,7 +7,7 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
@@ -15,7 +15,7 @@
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(
@@ -24,7 +24,7 @@
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="response.body"
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${t(

View File

@@ -15,7 +15,7 @@
{{ dateStamp }}
</div>
<div class="justify-center table-box">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.open_workspace')"
:to="`${shortcodeBaseURL}/r/${shortcode.id}`"
@@ -23,7 +23,7 @@
:icon="IconExternalLink"
class="px-3 text-accent hover:text-accent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
color="green"
@@ -31,7 +31,7 @@
class="px-3"
@click="copyShortcode(shortcode.id)"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.delete')"
:icon="IconTrash"

View File

@@ -8,7 +8,7 @@
</div>
<div class="relative py-4 overflow-x-auto">
<div v-if="loading" class="flex flex-col items-center justify-center">
<SmartSpinner class="mb-4" />
<HoppSmartSpinner class="mb-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div
@@ -56,14 +56,14 @@
:shortcode="shortcode"
@delete-shortcode="deleteShortcode"
/>
<SmartIntersection
<HoppSmartIntersection
v-if="hasMoreShortcodes && myShortcodes.length > 0"
@intersecting="loadMoreShortcodes()"
>
<div v-if="adapterLoading" class="flex flex-col items-center py-3">
<SmartSpinner />
<HoppSmartSpinner />
</div>
</SmartIntersection>
</HoppSmartIntersection>
</div>
</div>
<div

View File

@@ -6,14 +6,14 @@
<div class="my-1 mb-4 text-secondaryLight">
{{ t("settings.delete_account_description") }}
</div>
<ButtonSecondary
<HoppButtonSecondary
filled
outline
:label="t('settings.delete_account')"
type="submit"
@click="showDeleteAccountModal = true"
/>
<SmartModal
<HoppSmartModal
v-if="showDeleteAccountModal"
dialog
:title="t('settings.delete_account')"
@@ -21,7 +21,7 @@
>
<template #body>
<div v-if="loading" class="flex flex-col items-center justify-center">
<SmartSpinner class="mb-4" />
<HoppSmartSpinner class="mb-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div
@@ -73,7 +73,7 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('settings.delete_account')"
:loading="deletingUser"
filled
@@ -86,7 +86,7 @@
class="!bg-red-500 !hover:bg-red-600 !border-red-500 !hover:border-red-600"
@click="deleteUserAccount"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -94,7 +94,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</section>
</template>

View File

@@ -31,7 +31,7 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
:label="contentType || t('state.none').toLowerCase()"
class="pr-8 ml-2 rounded-none"
/>
@@ -43,7 +43,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(contentTypeItem, index) in validContentTypes"
:key="`contentTypeItem-${index}`"
:label="contentTypeItem"
@@ -63,7 +63,7 @@
</tippy>
</span>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip', delay: [500, 20], allowHTML: true }"
:title="`${t(
'request.run'
@@ -74,7 +74,7 @@
class="rounded-none !text-accent !hover:text-accentDark"
@click="sendMessage()"
/>
<SmartCheckbox
<HoppSmartCheckbox
v-tippy="{ theme: 'tooltip' }"
:on="clearInputOnSend"
class="px-2"
@@ -82,28 +82,28 @@
@change="clearInputOnSend = !clearInputOnSend"
>
{{ t("mqtt.clear_input") }}
</SmartCheckbox>
<ButtonSecondary
</HoppSmartCheckbox>
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/realtime"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.clear')"
:icon="IconTrash2"
@click="clearContent"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-if="contentType && contentType == 'JSON'"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.prettify')"
@@ -111,7 +111,7 @@
@click="prettifyRequestBody"
/>
<label for="payload">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('import.title')"
:icon="IconFilePlus"

View File

@@ -9,12 +9,12 @@
</label>
</span>
<div class="flex">
<SmartCheckbox
<HoppSmartCheckbox
:on="config.cleanSession"
class="px-2"
@change="config.cleanSession = !config.cleanSession"
>{{ t("mqtt.clean_session") }}
</SmartCheckbox>
</HoppSmartCheckbox>
</div>
</div>
<div class="flex flex-1 h-full border-dividerLight">
@@ -63,14 +63,14 @@
</label>
<tippy interactive trigger="click" theme="popover">
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
class="pr-8 ml-2 rounded-none"
:label="`${config.lwQos}`"
/>
</span>
<template #content="{ hide }">
<div class="flex flex-col" role="menu">
<SmartItem
<HoppSmartItem
v-for="item in QOS_VALUES"
:key="`qos-${item}`"
:label="`${item}`"
@@ -87,12 +87,12 @@
</template>
</tippy>
</div>
<SmartCheckbox
<HoppSmartCheckbox
:on="config.lwRetain"
class="py-2"
@change="config.lwRetain = !config.lwRetain"
>{{ t("mqtt.lw_retain") }}
</SmartCheckbox>
</HoppSmartCheckbox>
</div>
</div>
</div>

View File

@@ -8,27 +8,27 @@
{{ title }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.delete')"
:icon="IconTrash"
@click="emit('delete')"
/>
<ButtonSecondary
<HoppButtonSecondary
id="bottompage"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.scroll_to_top')"
:icon="IconArrowUp"
@click="scrollTo('top')"
/>
<ButtonSecondary
<HoppButtonSecondary
id="bottompage"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.scroll_to_bottom')"
:icon="IconArrowDown"
@click="scrollTo('bottom')"
/>
<ButtonSecondary
<HoppButtonSecondary
id="bottompage"
v-tippy="{ theme: 'tooltip' }"
:title="`${t('action.autoscroll')}: ${

View File

@@ -34,14 +34,14 @@
</div>
</div>
</div>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copyQueryIcon"
class="hidden group-hover:inline-flex"
@click="copyQuery(entry.payload)"
/>
<ButtonSecondary
<HoppButtonSecondary
:icon="IconChevronDown"
class="transform"
:class="{ 'rotate-180': !minimized }"
@@ -50,14 +50,14 @@
</div>
</div>
<div v-if="!minimized" class="overflow-hidden bg-primaryContrast">
<SmartTabs
<HoppSmartTabs
v-model="selectedTab"
styles="bg-primaryLight"
render-inactive-tabs
>
<SmartTab v-if="isJSON(entry.payload)" id="json" label="JSON" />
<SmartTab id="raw" label="Raw" />
</SmartTabs>
<HoppSmartTab v-if="isJSON(entry.payload)" id="json" label="JSON" />
<HoppSmartTab id="raw" label="Raw" />
</HoppSmartTabs>
<div
class="z-10 flex items-center justify-between pl-4 border-b border-dividerLight top-lowerSecondaryStickyFold"
>
@@ -65,20 +65,20 @@
{{ t("response.body") }}
</label>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('state.linewrap')"
:class="{ '!text-accent': linewrapEnabled }"
:icon="IconWrapText"
@click.prevent="linewrapEnabled = !linewrapEnabled"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="downloadIcon"
@click="downloadResponse"
/>
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.copy')"
:icon="copyIcon"
@@ -123,7 +123,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(arrayMember, astIndex) in item.astParent.values"
:key="`ast-${astIndex}`"
:label="`${astIndex}`"
@@ -142,7 +142,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(objectMember, astIndex) in item.astParent.members"
:key="`ast-${astIndex}`"
:label="objectMember.key.value"
@@ -160,7 +160,7 @@
ref="tippyActions"
class="flex flex-col focus:outline-none"
>
<SmartItem
<HoppSmartItem
label="{}"
@click="
() => {
@@ -175,7 +175,7 @@
ref="tippyActions"
class="flex flex-col focus:outline-none"
>
<SmartItem
<HoppSmartItem
label="[]"
@click="
() => {

View File

@@ -1,5 +1,5 @@
<template>
<SmartModal v-if="show" dialog :title="t('mqtt.new')" @close="hideModal">
<HoppSmartModal v-if="show" dialog :title="t('mqtt.new')" @close="hideModal">
<template #body>
<div class="flex justify-between mb-4">
<div
@@ -10,11 +10,11 @@
</label>
<tippy interactive trigger="click" theme="popover">
<span class="select-wrapper">
<ButtonSecondary class="pr-8" :label="`${QoS}`" />
<HoppButtonSecondary class="pr-8" :label="`${QoS}`" />
</span>
<template #content="{ hide }">
<div class="flex flex-col" role="menu">
<SmartItem
<HoppSmartItem
v-for="item in QOS_VALUES"
:key="`qos-${item}`"
:label="`${item}`"
@@ -68,13 +68,13 @@
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
<HoppButtonPrimary
:label="t('mqtt.subscribe')"
:loading="loadingState"
outline
@click="addNewSubscription"
/>
<ButtonSecondary
<HoppButtonSecondary
:label="t('action.cancel')"
outline
filled
@@ -82,7 +82,7 @@
/>
</span>
</template>
</SmartModal>
</HoppSmartModal>
</template>
<script lang="ts" setup>

View File

@@ -9,7 +9,7 @@
<!-- text-orange-500 -->
<!-- text-red-500 -->
<!-- text-pink-500 -->
<ButtonSecondary
<HoppButtonSecondary
v-for="(color, index) of accentColors"
:key="`color-${index}`"
v-tippy="{ theme: 'tooltip' }"

View File

@@ -7,7 +7,7 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('settings.choose_language')"
class="pr-8"
@@ -33,7 +33,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartLink
<HoppSmartLink
v-for="locale in filteredAppLanguages"
:key="`locale-${locale.code}`"
class="flex flex-1"
@@ -44,14 +44,14 @@
}
"
>
<SmartItem
<HoppSmartItem
:label="locale.name"
:active-info-icon="currentLocale.code === locale.code"
:info-icon="
currentLocale.code === locale.code ? IconDone : null
"
/>
</SmartLink>
</HoppSmartLink>
<div
v-if="
!(

View File

@@ -1,6 +1,6 @@
<template>
<div class="flex">
<ButtonSecondary
<HoppButtonSecondary
v-for="(color, index) of colors"
:key="`color-${index}`"
v-tippy="{ theme: 'tooltip' }"

View File

@@ -7,7 +7,7 @@
:on-shown="() => tippyActions.focus()"
>
<span class="select-wrapper">
<ButtonSecondary
<HoppButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('settings.change_font_size')"
class="pr-8"
@@ -25,7 +25,7 @@
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
<HoppSmartItem
v-for="(size, index) in fontSizes"
:key="`size-${index}`"
:label="`${getFontSizeName(size)}`"

View File

@@ -31,7 +31,7 @@
v-else-if="rootNodes.status === 'loading'"
class="flex flex-col items-center justify-center flex-1 p-4"
>
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div

View File

@@ -46,7 +46,7 @@
v-if="childNodes.status === 'loading'"
class="flex flex-col items-center justify-center flex-1 p-4"
>
<SmartSpinner class="my-4" />
<HoppSmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div

Some files were not shown because too many files have changed in this diff Show More