diff --git a/packages/hoppscotch-common/assets/icons/github.svg b/packages/hoppscotch-common/assets/icons/github.svg deleted file mode 100644 index 67c833827..000000000 --- a/packages/hoppscotch-common/assets/icons/github.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - 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 f28b644c1..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", @@ -117,12 +118,16 @@ }, "collection": { "created": "Collection created", + "different_parent": "Cannot reorder collection with different parent", "edit": "Edit Collection", "invalid_name": "Please provide a name for the collection", + "invalid_root_move": "Collection already in the root", + "moved": "Moved Successfully", "my_collections": "My Collections", "name": "My New Collection", "name_length_insufficient": "Collection name should be at least 3 characters long", "new": "New Collection", + "order_changed": "Collection Order Updated", "renamed": "Collection renamed", "request_in_use": "Request in use", "save_as": "Save as", @@ -389,16 +394,19 @@ "text": "Text" }, "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", "invalid_name": "Please provide a name for the request", "method": "Method", + "moved": "Request moved", "name": "Request name", "new": "New Request", + "order_changed": "Request Order Updated", "override": "Override", "override_help": "Set Content-Type in Headers", "overriden": "Overridden", @@ -629,6 +637,7 @@ "body": "Body", "collections": "Collections", "documentation": "Documentation", + "environments": "Environments", "headers": "Headers", "history": "History", "mqtt": "MQTT", @@ -655,6 +664,7 @@ "exit_disabled": "Only owner cannot exit the team", "invalid_email_format": "Email format is invalid", "invalid_id": "Invalid team ID. Contact your team owner.", + "invalid_coll_id": "Invalid collection ID", "invalid_invite_link": "Invalid invite link", "invalid_invite_link_description": "The link you followed is invalid. Contact your team owner.", "invalid_member_permission": "Please provide a valid permission to the team member", @@ -676,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", @@ -683,10 +694,13 @@ "new_name": "My New Team", "no_access": "You do not have edit access to these collections", "no_invite_found": "Invitation not found. Contact your team owner.", + "no_request_found": "Request not found.", "not_found": "Team not found. Contact your team owner.", "not_valid_viewer": "You are not a valid viewer. Contact your team owner.", + "parent_coll_move": "Cannot move collection to a child collection", "pending_invites": "Pending invites", "permissions": "Permissions", + "same_target_destination": "Same target and destination", "saved": "Team saved", "select_a_team": "Select a team", "title": "Teams", @@ -714,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 e0268dcf4..970a9ec0b 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -16,6 +16,7 @@ declare module '@vue/runtime-core' { 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'] @@ -26,8 +27,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'] @@ -52,9 +51,7 @@ declare module '@vue/runtime-core' { 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'] @@ -75,6 +72,24 @@ 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'] + 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'] + HoppSmartToggle: typeof import('@hoppscotch/ui')['HoppSmartToggle'] 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,6 +112,18 @@ 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'] + 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'] @@ -116,41 +143,24 @@ 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'] 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..53ab0a975 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") }} + + / +
+ - - - +
+