From 7e686a8882c1f97ca7ae04edf1e3941688752891 Mon Sep 17 00:00:00 2001 From: Nivedin <53208152+nivedin@users.noreply.github.com> Date: Fri, 24 Feb 2023 23:20:02 +0530 Subject: [PATCH] feat: global workspace selector (#2922) Co-authored-by: Liyas Thomas --- .../hoppscotch-common/assets/scss/styles.scss | 3 +- packages/hoppscotch-common/locales/en.json | 11 +- .../hoppscotch-common/src/components.d.ts | 309 +++++++++--------- .../src/components/app/Footer.vue | 4 +- .../src/components/app/Header.vue | 262 ++++++++++++--- .../src/components/app/Navigation.vue | 33 ++ .../collections/TeamCollections.vue | 4 +- .../src/components/collections/TeamSelect.vue | 167 ---------- .../src/components/collections/index.vue | 235 ++++++------- .../components/environments/ChooseType.vue | 169 ---------- .../src/components/environments/index.vue | 93 +++++- .../components/environments/teams/index.vue | 2 +- .../src/components/history/index.vue | 95 +++--- .../src/components/http/CodegenModal.vue | 2 +- .../src/components/http/Sidebar.vue | 2 +- .../src/components/profile/Picture.vue | 6 +- .../src/components/smart/ChangeLanguage.vue | 2 +- .../src/components/tab/Primary.vue | 8 +- .../src/components/tab/Secondary.vue | 4 +- .../src/components/teams/MemberStack.vue | 94 ++++++ .../src/components/teams/Team.vue | 41 +-- .../src/components/workspace/Current.vue | 38 +++ .../src/components/workspace/Selector.vue | 164 ++++++++++ .../helpers/teams/TeamCollectionAdapter.ts | 3 + .../helpers/teams/TeamEnvironmentAdapter.ts | 23 +- .../src/helpers/teams/TeamListAdapter.ts | 7 + .../src/newstore/workspace.ts | 67 ++++ .../hoppscotch-common/src/pages/join-team.vue | 4 +- .../hoppscotch-common/src/pages/r/_id.vue | 4 +- .../src/components/button/Primary.vue | 29 +- .../src/components/button/Secondary.vue | 30 +- .../src/components/smart/FileChip.vue | 2 +- .../src/components/smart/Item.vue | 10 +- packages/hoppscotch-ui/vite.config.ts | 10 + packages/hoppscotch-ui/windi.config.ts | 1 + 35 files changed, 1130 insertions(+), 808 deletions(-) create mode 100644 packages/hoppscotch-common/src/components/app/Navigation.vue delete mode 100644 packages/hoppscotch-common/src/components/collections/TeamSelect.vue delete mode 100644 packages/hoppscotch-common/src/components/environments/ChooseType.vue create mode 100644 packages/hoppscotch-common/src/components/teams/MemberStack.vue create mode 100644 packages/hoppscotch-common/src/components/workspace/Current.vue create mode 100644 packages/hoppscotch-common/src/components/workspace/Selector.vue create mode 100644 packages/hoppscotch-common/src/newstore/workspace.ts diff --git a/packages/hoppscotch-common/assets/scss/styles.scss b/packages/hoppscotch-common/assets/scss/styles.scss index b38b0c9c7..a0d38f19c 100644 --- a/packages/hoppscotch-common/assets/scss/styles.scss +++ b/packages/hoppscotch-common/assets/scss/styles.scss @@ -323,9 +323,10 @@ pre.ace_editor { @apply after:justify-center; @apply after:pointer-events-none; @apply after:font-icon; - @apply after:text-secondaryLight; + @apply after:text-current; @apply after:right-3; @apply after:content-["\e313"]; + @apply after:text-lg; } .info-response { diff --git a/packages/hoppscotch-common/locales/en.json b/packages/hoppscotch-common/locales/en.json index 8653374a1..59f6f6157 100644 --- a/packages/hoppscotch-common/locales/en.json +++ b/packages/hoppscotch-common/locales/en.json @@ -19,6 +19,7 @@ "edit": "Edit", "filter": "Filter", "go_back": "Go back", + "go_forward": "Go forward", "group_by": "Group by", "label": "Label", "learn_more": "Learn more", @@ -394,9 +395,9 @@ }, "copy_link": "Copy link", "different_collection": "Cannot reorder requests from different collections", + "duplicated": "Request duplicated", "duration": "Duration", "enter_curl": "Enter cURL command", - "duplicated": "Request duplicated", "generate_code": "Generate code", "generated_code": "Generated code", "header_list": "Header List", @@ -636,6 +637,7 @@ "body": "Body", "collections": "Collections", "documentation": "Documentation", + "environments": "Environments", "headers": "Headers", "history": "History", "mqtt": "MQTT", @@ -684,6 +686,7 @@ "member_removed": "User removed", "member_role_updated": "User roles updated", "members": "Members", + "more_members": "+{count} more", "name_length_insufficient": "Team name should be at least 6 characters long", "name_updated": "Team name updated", "new": "New Team", @@ -725,5 +728,11 @@ "message": "Message", "protocols": "Protocols", "url": "URL" + }, + "workspace": { + "change": "Change workspace", + "personal": "My Workspace", + "team": "Team Workspace", + "title": "Workspaces" } } diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index e01606850..40471f3c5 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -1,162 +1,165 @@ // generated by unplugin-vue-components // We suggest you to commit this file into source control // Read more: https://github.com/vuejs/core/pull/3399 -import "@vue/runtime-core" +import '@vue/runtime-core' export {} -declare module "@vue/runtime-core" { +declare module '@vue/runtime-core' { export interface GlobalComponents { - AppActionHandler: typeof import("./components/app/ActionHandler.vue")["default"] - AppAnnouncement: typeof import("./components/app/Announcement.vue")["default"] - AppDeveloperOptions: typeof import("./components/app/DeveloperOptions.vue")["default"] - AppFooter: typeof import("./components/app/Footer.vue")["default"] - AppFuse: typeof import("./components/app/Fuse.vue")["default"] - AppGitHubStarButton: typeof import("./components/app/GitHubStarButton.vue")["default"] - AppHeader: typeof import("./components/app/Header.vue")["default"] - AppInterceptor: typeof import("./components/app/Interceptor.vue")["default"] - AppLogo: typeof import("./components/app/Logo.vue")["default"] - AppOptions: typeof import("./components/app/Options.vue")["default"] - AppPaneLayout: typeof import("./components/app/PaneLayout.vue")["default"] - AppPowerSearch: typeof import("./components/app/PowerSearch.vue")["default"] - AppPowerSearchEntry: typeof import("./components/app/PowerSearchEntry.vue")["default"] - AppShare: typeof import("./components/app/Share.vue")["default"] - AppShortcuts: typeof import("./components/app/Shortcuts.vue")["default"] - AppShortcutsEntry: typeof import("./components/app/ShortcutsEntry.vue")["default"] - AppShortcutsPrompt: typeof import("./components/app/ShortcutsPrompt.vue")["default"] - AppSidenav: typeof import("./components/app/Sidenav.vue")["default"] - AppSupport: typeof import("./components/app/Support.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"] - CollectionsAddRequest: typeof import("./components/collections/AddRequest.vue")["default"] - CollectionsCollection: typeof import("./components/collections/Collection.vue")["default"] - CollectionsEdit: typeof import("./components/collections/Edit.vue")["default"] - CollectionsEditFolder: typeof import("./components/collections/EditFolder.vue")["default"] - CollectionsEditRequest: typeof import("./components/collections/EditRequest.vue")["default"] - CollectionsGraphql: typeof import("./components/collections/graphql/index.vue")["default"] - CollectionsGraphqlAdd: typeof import("./components/collections/graphql/Add.vue")["default"] - CollectionsGraphqlAddFolder: typeof import("./components/collections/graphql/AddFolder.vue")["default"] - CollectionsGraphqlAddRequest: typeof import("./components/collections/graphql/AddRequest.vue")["default"] - CollectionsGraphqlCollection: typeof import("./components/collections/graphql/Collection.vue")["default"] - CollectionsGraphqlEdit: typeof import("./components/collections/graphql/Edit.vue")["default"] - CollectionsGraphqlEditFolder: typeof import("./components/collections/graphql/EditFolder.vue")["default"] - CollectionsGraphqlEditRequest: typeof import("./components/collections/graphql/EditRequest.vue")["default"] - CollectionsGraphqlFolder: typeof import("./components/collections/graphql/Folder.vue")["default"] - CollectionsGraphqlImportExport: typeof import("./components/collections/graphql/ImportExport.vue")["default"] - CollectionsGraphqlRequest: typeof import("./components/collections/graphql/Request.vue")["default"] - CollectionsImportExport: typeof import("./components/collections/ImportExport.vue")["default"] - CollectionsMyCollections: typeof import("./components/collections/MyCollections.vue")["default"] - CollectionsRequest: typeof import("./components/collections/Request.vue")["default"] - CollectionsSaveRequest: typeof import("./components/collections/SaveRequest.vue")["default"] - CollectionsTeamCollections: typeof import("./components/collections/TeamCollections.vue")["default"] - CollectionsTeamSelect: typeof import("./components/collections/TeamSelect.vue")["default"] - Environments: typeof import("./components/environments/index.vue")["default"] - EnvironmentsChooseType: typeof import("./components/environments/ChooseType.vue")["default"] - EnvironmentsImportExport: typeof import("./components/environments/ImportExport.vue")["default"] - EnvironmentsMy: typeof import("./components/environments/my/index.vue")["default"] - EnvironmentsMyDetails: typeof import("./components/environments/my/Details.vue")["default"] - EnvironmentsMyEnvironment: typeof import("./components/environments/my/Environment.vue")["default"] - EnvironmentsTeams: typeof import("./components/environments/teams/index.vue")["default"] - EnvironmentsTeamsDetails: typeof import("./components/environments/teams/Details.vue")["default"] - EnvironmentsTeamsEnvironment: typeof import("./components/environments/teams/Environment.vue")["default"] - FirebaseLogin: typeof import("./components/firebase/Login.vue")["default"] - FirebaseLogout: typeof import("./components/firebase/Logout.vue")["default"] - GraphqlAuthorization: typeof import("./components/graphql/Authorization.vue")["default"] - GraphqlField: typeof import("./components/graphql/Field.vue")["default"] - GraphqlRequest: typeof import("./components/graphql/Request.vue")["default"] - GraphqlRequestOptions: typeof import("./components/graphql/RequestOptions.vue")["default"] - GraphqlResponse: typeof import("./components/graphql/Response.vue")["default"] - GraphqlSidebar: typeof import("./components/graphql/Sidebar.vue")["default"] - GraphqlType: typeof import("./components/graphql/Type.vue")["default"] - GraphqlTypeLink: typeof import("./components/graphql/TypeLink.vue")["default"] - 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"] - HoppSmartExpand: typeof import("@hoppscotch/ui")["HoppSmartExpand"] - HoppSmartFileChip: typeof import("@hoppscotch/ui")["HoppSmartFileChip"] - HoppSmartIntersection: typeof import("@hoppscotch/ui")["HoppSmartIntersection"] - HoppSmartExpand: typeof import("@hoppscotch/ui")["HoppSmartExpand"] - HoppSmartFileChip: typeof import("@hoppscotch/ui")["HoppSmartFileChip"] - HoppSmartIntersection: typeof import("@hoppscotch/ui")["HoppSmartIntersection"] - 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"] - HoppSmartTab: typeof import("@hoppscotch/ui")["HoppSmartTab"] - HoppSmartTabs: typeof import("@hoppscotch/ui")["HoppSmartTabs"] - HoppSmartToggle: typeof import("@hoppscotch/ui")["HoppSmartToggle"] - HoppSmartWindow: typeof import("@hoppscotch/ui")["HoppSmartWindow"] - HoppSmartWindows: typeof import("@hoppscotch/ui")["HoppSmartWindows"] - HoppSmartTab: typeof import("@hoppscotch/ui")["HoppSmartTab"] - HoppSmartTabs: typeof import("@hoppscotch/ui")["HoppSmartTabs"] - HttpAuthorization: typeof import("./components/http/Authorization.vue")["default"] - HttpBody: typeof import("./components/http/Body.vue")["default"] - HttpBodyParameters: typeof import("./components/http/BodyParameters.vue")["default"] - HttpCodegenModal: typeof import("./components/http/CodegenModal.vue")["default"] - HttpHeaders: typeof import("./components/http/Headers.vue")["default"] - HttpImportCurl: typeof import("./components/http/ImportCurl.vue")["default"] - HttpOAuth2Authorization: typeof import("./components/http/OAuth2Authorization.vue")["default"] - HttpParameters: typeof import("./components/http/Parameters.vue")["default"] - HttpPreRequestScript: typeof import("./components/http/PreRequestScript.vue")["default"] - HttpRawBody: typeof import("./components/http/RawBody.vue")["default"] - HttpReqChangeConfirmModal: typeof import("./components/http/ReqChangeConfirmModal.vue")["default"] - HttpRequest: typeof import("./components/http/Request.vue")["default"] - HttpRequestOptions: typeof import("./components/http/RequestOptions.vue")["default"] - HttpResponse: typeof import("./components/http/Response.vue")["default"] - HttpResponseMeta: typeof import("./components/http/ResponseMeta.vue")["default"] - HttpSidebar: typeof import("./components/http/Sidebar.vue")["default"] - HttpTestResult: typeof import("./components/http/TestResult.vue")["default"] - HttpTestResultEntry: typeof import("./components/http/TestResultEntry.vue")["default"] - HttpTestResultEnv: typeof import("./components/http/TestResultEnv.vue")["default"] - HttpTestResultReport: typeof import("./components/http/TestResultReport.vue")["default"] - HttpTests: typeof import("./components/http/Tests.vue")["default"] - HttpURLEncodedParams: typeof import("./components/http/URLEncodedParams.vue")["default"] - IconLucideChevronRight: typeof import("~icons/lucide/chevron-right")["default"] - IconLucideInbox: typeof import("~icons/lucide/inbox")["default"] - IconLucideInfo: typeof import("~icons/lucide/info")["default"] - IconLucideSearch: typeof import("~icons/lucide/search")["default"] - IconLucideUser: typeof import("~icons/lucide/user")["default"] - IconLucideUsers: typeof import("~icons/lucide/users")["default"] - LensesHeadersRenderer: typeof import("./components/lenses/HeadersRenderer.vue")["default"] - LensesHeadersRendererEntry: typeof import("./components/lenses/HeadersRendererEntry.vue")["default"] - LensesRenderersHTMLLensRenderer: typeof import("./components/lenses/renderers/HTMLLensRenderer.vue")["default"] - LensesRenderersImageLensRenderer: typeof import("./components/lenses/renderers/ImageLensRenderer.vue")["default"] - LensesRenderersJSONLensRenderer: typeof import("./components/lenses/renderers/JSONLensRenderer.vue")["default"] - LensesRenderersPDFLensRenderer: typeof import("./components/lenses/renderers/PDFLensRenderer.vue")["default"] - LensesRenderersRawLensRenderer: typeof import("./components/lenses/renderers/RawLensRenderer.vue")["default"] - LensesRenderersXMLLensRenderer: typeof import("./components/lenses/renderers/XMLLensRenderer.vue")["default"] - LensesResponseBodyRenderer: typeof import("./components/lenses/ResponseBodyRenderer.vue")["default"] - ProfilePicture: typeof import("./components/profile/Picture.vue")["default"] - ProfileShortcode: typeof import("./components/profile/Shortcode.vue")["default"] - ProfileShortcodes: typeof import("./components/profile/Shortcodes.vue")["default"] - ProfileUserDelete: typeof import("./components/profile/UserDelete.vue")["default"] - RealtimeCommunication: typeof import("./components/realtime/Communication.vue")["default"] - RealtimeConnectionConfig: typeof import("./components/realtime/ConnectionConfig.vue")["default"] - RealtimeLog: typeof import("./components/realtime/Log.vue")["default"] - RealtimeLogEntry: typeof import("./components/realtime/LogEntry.vue")["default"] - RealtimeSubscription: typeof import("./components/realtime/Subscription.vue")["default"] - SmartAccentModePicker: typeof import("./components/smart/AccentModePicker.vue")["default"] - SmartChangeLanguage: typeof import("./components/smart/ChangeLanguage.vue")["default"] - SmartColorModePicker: typeof import("./components/smart/ColorModePicker.vue")["default"] - SmartEnvInput: typeof import("./components/smart/EnvInput.vue")["default"] - SmartFontSizePicker: typeof import("./components/smart/FontSizePicker.vue")["default"] - SmartTree: typeof import("./components/smart/Tree.vue")["default"] - SmartTreeBranch: typeof import("./components/smart/TreeBranch.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"] - TeamsAdd: typeof import("./components/teams/Add.vue")["default"] - TeamsEdit: typeof import("./components/teams/Edit.vue")["default"] - TeamsInvite: typeof import("./components/teams/Invite.vue")["default"] - TeamsModal: typeof import("./components/teams/Modal.vue")["default"] - TeamsTeam: typeof import("./components/teams/Team.vue")["default"] - Tippy: typeof import("vue-tippy")["Tippy"] + AppActionHandler: typeof import('./components/app/ActionHandler.vue')['default'] + AppAnnouncement: typeof import('./components/app/Announcement.vue')['default'] + AppDeveloperOptions: typeof import('./components/app/DeveloperOptions.vue')['default'] + AppFooter: typeof import('./components/app/Footer.vue')['default'] + AppFuse: typeof import('./components/app/Fuse.vue')['default'] + AppGitHubStarButton: typeof import('./components/app/GitHubStarButton.vue')['default'] + AppHeader: typeof import('./components/app/Header.vue')['default'] + AppInterceptor: typeof import('./components/app/Interceptor.vue')['default'] + AppLogo: typeof import('./components/app/Logo.vue')['default'] + AppNavigation: typeof import('./components/app/Navigation.vue')['default'] + AppOptions: typeof import('./components/app/Options.vue')['default'] + AppPaneLayout: typeof import('./components/app/PaneLayout.vue')['default'] + AppPowerSearch: typeof import('./components/app/PowerSearch.vue')['default'] + AppPowerSearchEntry: typeof import('./components/app/PowerSearchEntry.vue')['default'] + AppShare: typeof import('./components/app/Share.vue')['default'] + AppShortcuts: typeof import('./components/app/Shortcuts.vue')['default'] + AppShortcutsEntry: typeof import('./components/app/ShortcutsEntry.vue')['default'] + AppShortcutsPrompt: typeof import('./components/app/ShortcutsPrompt.vue')['default'] + AppSidenav: typeof import('./components/app/Sidenav.vue')['default'] + AppSupport: typeof import('./components/app/Support.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'] + CollectionsAddRequest: typeof import('./components/collections/AddRequest.vue')['default'] + CollectionsCollection: typeof import('./components/collections/Collection.vue')['default'] + CollectionsEdit: typeof import('./components/collections/Edit.vue')['default'] + CollectionsEditFolder: typeof import('./components/collections/EditFolder.vue')['default'] + CollectionsEditRequest: typeof import('./components/collections/EditRequest.vue')['default'] + CollectionsGraphql: typeof import('./components/collections/graphql/index.vue')['default'] + CollectionsGraphqlAdd: typeof import('./components/collections/graphql/Add.vue')['default'] + CollectionsGraphqlAddFolder: typeof import('./components/collections/graphql/AddFolder.vue')['default'] + CollectionsGraphqlAddRequest: typeof import('./components/collections/graphql/AddRequest.vue')['default'] + CollectionsGraphqlCollection: typeof import('./components/collections/graphql/Collection.vue')['default'] + CollectionsGraphqlEdit: typeof import('./components/collections/graphql/Edit.vue')['default'] + CollectionsGraphqlEditFolder: typeof import('./components/collections/graphql/EditFolder.vue')['default'] + CollectionsGraphqlEditRequest: typeof import('./components/collections/graphql/EditRequest.vue')['default'] + CollectionsGraphqlFolder: typeof import('./components/collections/graphql/Folder.vue')['default'] + CollectionsGraphqlImportExport: typeof import('./components/collections/graphql/ImportExport.vue')['default'] + CollectionsGraphqlRequest: typeof import('./components/collections/graphql/Request.vue')['default'] + CollectionsImportExport: typeof import('./components/collections/ImportExport.vue')['default'] + CollectionsMyCollections: typeof import('./components/collections/MyCollections.vue')['default'] + CollectionsRequest: typeof import('./components/collections/Request.vue')['default'] + CollectionsSaveRequest: typeof import('./components/collections/SaveRequest.vue')['default'] + CollectionsTeamCollections: typeof import('./components/collections/TeamCollections.vue')['default'] + Environments: typeof import('./components/environments/index.vue')['default'] + EnvironmentsImportExport: typeof import('./components/environments/ImportExport.vue')['default'] + EnvironmentsMy: typeof import('./components/environments/my/index.vue')['default'] + EnvironmentsMyDetails: typeof import('./components/environments/my/Details.vue')['default'] + EnvironmentsMyEnvironment: typeof import('./components/environments/my/Environment.vue')['default'] + EnvironmentsTeams: typeof import('./components/environments/teams/index.vue')['default'] + EnvironmentsTeamsDetails: typeof import('./components/environments/teams/Details.vue')['default'] + EnvironmentsTeamsEnvironment: typeof import('./components/environments/teams/Environment.vue')['default'] + FirebaseLogin: typeof import('./components/firebase/Login.vue')['default'] + FirebaseLogout: typeof import('./components/firebase/Logout.vue')['default'] + GraphqlAuthorization: typeof import('./components/graphql/Authorization.vue')['default'] + GraphqlField: typeof import('./components/graphql/Field.vue')['default'] + GraphqlRequest: typeof import('./components/graphql/Request.vue')['default'] + GraphqlRequestOptions: typeof import('./components/graphql/RequestOptions.vue')['default'] + GraphqlResponse: typeof import('./components/graphql/Response.vue')['default'] + GraphqlSidebar: typeof import('./components/graphql/Sidebar.vue')['default'] + GraphqlType: typeof import('./components/graphql/Type.vue')['default'] + GraphqlTypeLink: typeof import('./components/graphql/TypeLink.vue')['default'] + 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'] + HoppSmartAutoComplete: typeof import('@hoppscotch/ui')['HoppSmartAutoComplete'] + HoppSmartCheckbox: typeof import('@hoppscotch/ui')['HoppSmartCheckbox'] + HoppSmartConfirmModal: typeof import('@hoppscotch/ui')['HoppSmartConfirmModal'] + HoppSmartExpand: typeof import('@hoppscotch/ui')['HoppSmartExpand'] + HoppSmartFileChip: typeof import('@hoppscotch/ui')['HoppSmartFileChip'] + HoppSmartItem: typeof import('@hoppscotch/ui')['HoppSmartItem'] + HoppSmartLink: typeof import('@hoppscotch/ui')['HoppSmartLink'] + HoppSmartModal: typeof import('@hoppscotch/ui')['HoppSmartModal'] + HoppSmartProgressRing: typeof import('@hoppscotch/ui')['HoppSmartProgressRing'] + HoppSmartRadioGroup: typeof import('@hoppscotch/ui')['HoppSmartRadioGroup'] + HoppSmartSlideOver: typeof import('@hoppscotch/ui')['HoppSmartSlideOver'] + HoppSmartSpinner: typeof import('@hoppscotch/ui')['HoppSmartSpinner'] + HoppSmartTab: typeof import('@hoppscotch/ui')['HoppSmartTab'] + HoppSmartTabs: typeof import('@hoppscotch/ui')['HoppSmartTabs'] + HttpAuthorization: typeof import('./components/http/Authorization.vue')['default'] + HttpBody: typeof import('./components/http/Body.vue')['default'] + HttpBodyParameters: typeof import('./components/http/BodyParameters.vue')['default'] + HttpCodegenModal: typeof import('./components/http/CodegenModal.vue')['default'] + HttpHeaders: typeof import('./components/http/Headers.vue')['default'] + HttpImportCurl: typeof import('./components/http/ImportCurl.vue')['default'] + HttpOAuth2Authorization: typeof import('./components/http/OAuth2Authorization.vue')['default'] + HttpParameters: typeof import('./components/http/Parameters.vue')['default'] + HttpPreRequestScript: typeof import('./components/http/PreRequestScript.vue')['default'] + HttpRawBody: typeof import('./components/http/RawBody.vue')['default'] + HttpReqChangeConfirmModal: typeof import('./components/http/ReqChangeConfirmModal.vue')['default'] + HttpRequest: typeof import('./components/http/Request.vue')['default'] + HttpRequestOptions: typeof import('./components/http/RequestOptions.vue')['default'] + HttpResponse: typeof import('./components/http/Response.vue')['default'] + HttpResponseMeta: typeof import('./components/http/ResponseMeta.vue')['default'] + HttpSidebar: typeof import('./components/http/Sidebar.vue')['default'] + HttpTestResult: typeof import('./components/http/TestResult.vue')['default'] + HttpTestResultEntry: typeof import('./components/http/TestResultEntry.vue')['default'] + HttpTestResultEnv: typeof import('./components/http/TestResultEnv.vue')['default'] + 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'] + IconLucideHelpCircle: typeof import('~icons/lucide/help-circle')['default'] + IconLucideInbox: typeof import('~icons/lucide/inbox')['default'] + IconLucideInfo: typeof import('~icons/lucide/info')['default'] + IconLucideLayers: typeof import('~icons/lucide/layers')['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'] + LensesHeadersRenderer: typeof import('./components/lenses/HeadersRenderer.vue')['default'] + LensesHeadersRendererEntry: typeof import('./components/lenses/HeadersRendererEntry.vue')['default'] + LensesRenderersHTMLLensRenderer: typeof import('./components/lenses/renderers/HTMLLensRenderer.vue')['default'] + LensesRenderersImageLensRenderer: typeof import('./components/lenses/renderers/ImageLensRenderer.vue')['default'] + LensesRenderersJSONLensRenderer: typeof import('./components/lenses/renderers/JSONLensRenderer.vue')['default'] + LensesRenderersPDFLensRenderer: typeof import('./components/lenses/renderers/PDFLensRenderer.vue')['default'] + LensesRenderersRawLensRenderer: typeof import('./components/lenses/renderers/RawLensRenderer.vue')['default'] + LensesRenderersXMLLensRenderer: typeof import('./components/lenses/renderers/XMLLensRenderer.vue')['default'] + LensesResponseBodyRenderer: typeof import('./components/lenses/ResponseBodyRenderer.vue')['default'] + ProfilePicture: typeof import('./components/profile/Picture.vue')['default'] + ProfileShortcode: typeof import('./components/profile/Shortcode.vue')['default'] + ProfileShortcodes: typeof import('./components/profile/Shortcodes.vue')['default'] + ProfileUserDelete: typeof import('./components/profile/UserDelete.vue')['default'] + RealtimeCommunication: typeof import('./components/realtime/Communication.vue')['default'] + RealtimeConnectionConfig: typeof import('./components/realtime/ConnectionConfig.vue')['default'] + RealtimeLog: typeof import('./components/realtime/Log.vue')['default'] + RealtimeLogEntry: typeof import('./components/realtime/LogEntry.vue')['default'] + RealtimeSubscription: typeof import('./components/realtime/Subscription.vue')['default'] + SmartAccentModePicker: typeof import('./components/smart/AccentModePicker.vue')['default'] + SmartChangeLanguage: typeof import('./components/smart/ChangeLanguage.vue')['default'] + SmartColorModePicker: typeof import('./components/smart/ColorModePicker.vue')['default'] + SmartEnvInput: typeof import('./components/smart/EnvInput.vue')['default'] + SmartFontSizePicker: typeof import('./components/smart/FontSizePicker.vue')['default'] + SmartTree: typeof import('./components/smart/Tree.vue')['default'] + SmartTreeBranch: typeof import('./components/smart/TreeBranch.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'] + TeamsAdd: typeof import('./components/teams/Add.vue')['default'] + TeamsEdit: typeof import('./components/teams/Edit.vue')['default'] + TeamsInvite: typeof import('./components/teams/Invite.vue')['default'] + TeamsMemberStack: typeof import('./components/teams/MemberStack.vue')['default'] + TeamsModal: typeof import('./components/teams/Modal.vue')['default'] + TeamsTeam: typeof import('./components/teams/Team.vue')['default'] + Tippy: typeof import('vue-tippy')['Tippy'] + WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default'] + WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default'] } + } diff --git a/packages/hoppscotch-common/src/components/app/Footer.vue b/packages/hoppscotch-common/src/components/app/Footer.vue index a6731e11d..d79cc79fe 100644 --- a/packages/hoppscotch-common/src/components/app/Footer.vue +++ b/packages/hoppscotch-common/src/components/app/Footer.vue @@ -41,7 +41,7 @@ :on-shown="() => tippyActions!.focus()" > @@ -206,7 +206,6 @@ import IconShare2 from "~icons/lucide/share-2" import IconColumns from "~icons/lucide/columns" import IconSidebarOpen from "~icons/lucide/sidebar-open" import IconShieldCheck from "~icons/lucide/shield-check" -import IconHelpCircle from "~icons/lucide/help-circle" import IconBook from "~icons/lucide/book" import IconMessageCircle from "~icons/lucide/message-circle" import IconGift from "~icons/lucide/gift" @@ -215,6 +214,7 @@ import IconGithub from "~icons/lucide/github" import IconTwitter from "~icons/lucide/twitter" import IconUserPlus from "~icons/lucide/user-plus" import IconLock from "~icons/lucide/lock" +import IconLifeBuoy from "~icons/lucide/life-buoy" import { showChat } from "@modules/crisp" import { useSetting } from "@composables/settings" import { useI18n } from "@composables/i18n" diff --git a/packages/hoppscotch-common/src/components/app/Header.vue b/packages/hoppscotch-common/src/components/app/Header.vue index 539d994c3..c1c9bbb28 100644 --- a/packages/hoppscotch-common/src/components/app/Header.vue +++ b/packages/hoppscotch-common/src/components/app/Header.vue @@ -4,7 +4,7 @@ class="flex items-center justify-between flex-1 flex-shrink-0 px-2 py-2 space-x-2 overflow-x-auto overflow-y-hidden" >
- +
-
+
+ +
+ + + {{ t("app.search") }} + + / +
+ - - - +
+