Compare commits

...

870 Commits

Author SHA1 Message Date
mirarifhasan
f5a654b27a test: added test coverage for infra-config 2024-03-07 11:40:49 +05:30
mirarifhasan
c2c5cf25b1 test: fix failed test cases 2024-03-07 11:40:49 +05:30
mirarifhasan
f92c70e1ff feat: remove InfraConfigEnumForClient enum and add exclude const variable 2024-03-07 11:40:49 +05:30
mirarifhasan
f0adc5b2e4 chore: rebased and resolve conflicts 2024-03-07 11:40:49 +05:30
mirarifhasan
fdcf55552a fix: add return statement 2024-03-07 11:40:49 +05:30
mirarifhasan
b0b7df0a3e feat: removed unnecessary checks 2024-03-07 11:40:49 +05:30
mirarifhasan
01fd27f81a feat: infra config key check added instead of count check 2024-03-07 11:40:49 +05:30
mirarifhasan
2d7fb8e23a fix: pnpm issue 2024-03-07 11:40:49 +05:30
mirarifhasan
600e0eea76 fix: checks added for infraConfig table containing missing value or not 2024-03-07 11:40:49 +05:30
mirarifhasan
9e9907b4be feat: feedback implemented 2024-03-07 11:40:49 +05:30
Mir Arif Hasan
2ba79a043b fix: url regex update 2024-03-07 11:40:49 +05:30
Mir Arif Hasan
1be466efcd fix: code scanning issue 2024-03-07 11:40:49 +05:30
Mir Arif Hasan
0c13ca7dca feat: update configService in strategy file 2024-03-07 11:40:49 +05:30
Mir Arif Hasan
b6b6acd2fa fix: validate url function 2024-03-07 11:40:49 +05:30
Mir Arif Hasan
9c00d6238e feat: sso callback url and scope added in infra-config 2024-03-07 11:40:49 +05:30
Joel Jacob Stephen
919579b1da feat(sh-admin): introducing data analytics and newsletter configurations (#3845)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
Co-authored-by: nivedin <nivedinp@gmail.com>
2024-03-06 20:06:48 +05:30
Nivedin
4798d7bbbd refactor: remove restore tab popup and its functionalities (#3867) 2024-03-05 18:14:41 +05:30
Balu Babu
a0c6b22641 feat: full text search for TeamCollections and TeamRequests (#3857)
Co-authored-by: mirarifhasan <arif.ishan05@gmail.com>
2024-03-05 18:05:58 +05:30
James George
de8929ab18 feat(common): support simultaneous imports of collections and environment files (#3719) 2024-03-05 17:49:01 +05:30
Andrew Bastin
55a94bdccc chore: merge hoppscotch/release/2023.12.6 into hoppscotch/release/2024.3.0 2024-02-27 13:35:20 +05:30
Andrew Bastin
faab1d20fd chore: bump version to 2023.12.6 2024-02-26 22:31:58 +05:30
Anwarul Islam
bd406616ec fix: collection level authorization inheritance issue (#3852) 2024-02-23 19:39:55 +05:30
Andrew Bastin
6827e97ec5 refactor: possible links in email templates do not highlight (#3851) 2024-02-23 01:05:20 +05:30
amk-dev
10d2048975 fix: use x-www-form-urlencoded for token exchange requests 2024-02-22 00:43:50 +05:30
Nivedin
291f18591e fix: perfomance in safari (#3848) 2024-02-22 00:41:30 +05:30
James George
342532c9b1 fix(common): prevent exceptions with open shared requests in new tab action (#3835) 2024-02-22 00:36:45 +05:30
Balu Babu
cf039c482a feat: SH instance analytics data collection (#3838) 2024-02-22 00:35:12 +05:30
Mir Arif Hasan
ded2725116 feat: admin user management (backend) (#3786) 2024-02-21 21:35:08 +05:30
Balu Babu
9c6754c70f feat: inital setup info route (#3847) 2024-02-21 21:15:47 +05:30
James George
4bd54b12cd fix(persistence-service): add fallbacks for environments related schemas (#3832) 2024-02-15 23:38:56 +05:30
Andrew Bastin
ed6e9b6954 chore: bump version to 2023.12.5 2024-02-15 21:47:58 +05:30
James George
dfdd44b4ed fix(persistence-service): update global environment variables schema (#3829) 2024-02-15 21:40:31 +05:30
Akash K
fc34871dae fix: accessing undefined property variables (#3831) 2024-02-15 21:32:50 +05:30
Nivedin
45b532747e fix: environment tooltip update bug (#3819) 2024-02-13 17:42:02 +05:30
Akash K
de4635df23 chore: add workspace type property in request run analytics event (#3820)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2024-02-13 17:38:11 +05:30
Nivedin
41bad1f3dc fix: secret environment flow bugs (#3817) 2024-02-10 20:22:10 +05:30
Andrew Bastin
ecca3d2032 chore: correct linting errors 2024-02-09 14:42:12 +05:30
Muhammed Ajmal M
47226be6d0 feat: persist line wrap setting (#3647)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-02-09 14:05:09 +05:30
Andrew Bastin
6a0e73fdec chore: bump versions 2024-02-08 22:41:59 +05:30
Andrew Bastin
672ee69b2c chore: correct linting errors 2024-02-08 22:33:03 +05:30
Joel Jacob Stephen
b359650d96 refactor: updated teams nomenclature in admin dashboard to workspaces (#3770) 2024-02-08 22:17:42 +05:30
James George
c0fae79678 fix(sh-admin): persist active selection in the sidebar (#3812) 2024-02-08 22:16:33 +05:30
James George
5bcc38e36b feat: support secret environment variables in CLI (#3815) 2024-02-08 22:08:18 +05:30
Nivedin
00862eb192 feat: secret variables in environments (#3779)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-02-08 21:58:42 +05:30
Akash K
16803acb26 chore: Oauth temporary ux improvements (#3792) 2024-02-06 20:35:29 +05:30
Nivedin
3911c9cd1f refactor: update share request flow (#3805) 2024-02-05 23:50:15 +05:30
Florian Metz
0028f6e878 feat(js-sandbox): expose atob & btoa functions for Node.js (#3724)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-02-05 23:12:55 +05:30
Anwarul Islam
0ba33ec187 fix: request endpoint heading (#3804) 2024-02-05 23:08:16 +05:30
James George
3482743782 chore(cli): emit bundle in ESM format (#3777) 2024-02-05 22:55:05 +05:30
James George
d7cdeb796a chore(common): analytics on spotlight (#3727)
Co-authored-by: amk-dev <akash.k.mohan98@gmail.com>
2024-02-02 15:32:06 +05:30
Joel Jacob Stephen
3d6adcc39d refactor: consolidated admin dashboard improvements (#3790)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-02-02 15:17:25 +05:30
Andrew Bastin
aab76f1358 chore: bump version to 2023.12.3 2024-01-30 20:27:25 +05:30
Anwarul Islam
a28a576c41 feat: team environment search and switch (#3700)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-01-30 19:49:04 +05:30
Liyas Thomas
0d0ad7a2f8 chore: added micro interactions (#3783)
Co-authored-by: Dmitry <mukovkin@yandex.ru>
2024-01-30 18:42:42 +05:30
Balu Babu
1df9de44b7 chore: upgraded prisma version to v5.8.0 (#3787) 2024-01-30 18:16:28 +05:30
Muhammed Ajmal M
4cba03e53f feat(js-sandbox): add pw.env.unset method (#3677)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-01-23 22:31:27 +05:30
Nivedin
9e1466a877 fix: bugs in shared request (#3704) 2024-01-23 22:24:18 +05:30
Anwarul Islam
b81ccb4ee3 fix: tab on current input field to focus the next input field (#3754) 2024-01-23 22:21:23 +05:30
Nivedin
27d0a7c437 refactor: persist running requests while switching tabs (#3742) 2024-01-23 22:13:57 +05:30
Nivedin
aca96dd5f2 refactor: add option to disable context menu (#3717) 2024-01-23 22:05:05 +05:30
Anwarul Islam
c0dbcc901f fix: documentation is not being generated on GQL (#3730)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2024-01-23 22:00:41 +05:30
Joel Jacob Stephen
ba52c8cc37 refactor: improvements to the dashboard sidebar (#3709)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-01-23 21:55:42 +05:30
Dmitry
d1f6f40ef8 fix: perform logout if the silent refresh attempt fails (#3705)
Co-authored-by: Dmitry Mukovkin <d.mukovkin@cft.ru>
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2024-01-23 21:53:59 +05:30
Akash K
99f5070f71 fix: unwanted double slashes when importing from openapi (#3745) 2024-01-23 21:49:34 +05:30
Andrew Bastin
cd371fc9d4 chore: bump versions to 2023.12.2 2024-01-03 16:58:51 +05:30
Jordi Been
59fef248c0 build: update node alpine version (#3660) 2024-01-03 16:49:51 +05:30
Andrew Bastin
286fcd2bb0 chore: bump selfhost-desktop version to 23.12.1-1 2023-12-24 13:45:41 +05:30
Andrew Bastin
b2d98f7b66 chore: remove windi from selfhost-desktop 2023-12-24 13:21:12 +05:30
James George
c6c220091a feat(common): support importing environments individually (#3691) 2023-12-24 12:12:02 +05:30
Andrew Bastin
8f503479b6 chore: bump package version to 2023.12.1 2023-12-22 20:49:21 +05:30
Mir Arif Hasan
54d8378ccf fix: improve smtp email validation and fix enableAndDisableSSO mutation (#3689)
Co-authored-by: Balu Babu <balub997@gmail.com>
2023-12-22 20:37:15 +05:30
James George
0df194f9c5 fix(cli): environment resolution in the single-entry export format (#3687) 2023-12-22 19:21:33 +05:30
Liyas Thomas
ddf7eb6ad6 chore: minor ui improvements 2023-12-20 18:30:16 +05:30
Nivedin
7db7b9b068 fix: fallback section for embeds if invalid link (#3673) 2023-12-19 18:37:44 +05:30
James George
3d25ef48d1 fix(persistence-service): update schemas found to differ in runtime (#3671) 2023-12-19 18:34:27 +05:30
Mir Arif Hasan
4f138beb8a chore: db migration missing message (#3672) 2023-12-19 18:42:00 +06:00
James George
3d7a76bced chore(common): Gist export flow updates (#3665) 2023-12-19 17:37:35 +05:30
Nivedin
74359ea74e fix: auth-header not inheriting properties (#3668) 2023-12-19 17:04:24 +05:30
Mir Arif Hasan
a694d3f7eb hotfix: added validation on infra config update (#3667)
* feat: added validation on infra config update

* chore: removed async keyword

* fix: feedback
2023-12-19 17:15:46 +06:00
Nivedin
58a9514b67 fix: gql history schema error (#3662) 2023-12-19 16:39:32 +05:30
Akash K
a75bfa9d9e fix: actions not working when sidebar is hidden (#3669) 2023-12-19 16:13:59 +05:30
Andrew Bastin
7374a35b41 fix: broken ui due to accidentally moved postcss config 2023-12-19 12:40:07 +05:30
Andrew Bastin
5ad8f6c2ce chore: move window.open to platform io to handle desktop app 2023-12-19 11:26:37 +05:30
Andrew Bastin
f28298afe7 chore: update desktop app version 2023-12-18 23:43:40 +05:30
Andrew Bastin
56c6e8c643 chore: add devtools for production desktop app builds 2023-12-18 23:43:40 +05:30
Andrew Bastin
1b36de4fa3 fix: handle backspace navigating back on desktop app 2023-12-18 23:43:40 +05:30
Andrew Bastin
2f773bec79 fix: drag not working on windows 2023-12-18 23:43:40 +05:30
Andrew Bastin
d3e04c59cc chore: update tailwind stuff on selfhost-desktop 2023-12-18 23:43:40 +05:30
James George
5179cf59a4 fix(common): ensure the add-environment modal value field is empty when opened via the inspector (#3664) 2023-12-18 20:39:23 +05:30
Andrew Bastin
fad31a47ee chore: bump versions of all relevant packages 2023-12-16 22:27:41 +05:30
James George
72c71ddbd4 chore: remove expand widget from the GQL collections import/export modal (#3661) 2023-12-16 17:06:51 +05:30
Nivedin
a0f5ebee39 fix: embeds system theme (#3659)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-16 17:01:23 +05:30
Anwarul Islam
f93558324f chore: move hoppscotch-ui package out of the monorepo (#3620)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-12-16 16:58:10 +05:30
Liyas Thomas
d80e6c01c8 chore: i18n 2023-12-16 12:29:44 +05:30
Liyas Thomas
06f0f1c91b fix: broken docs link 2023-12-16 10:36:54 +05:30
Joel Jacob Stephen
9b870f876a chore: banner cleanup (#3658) 2023-12-15 17:59:33 +05:30
Joel Jacob Stephen
cf8b5975ac refactor: improvements made to how banners are to be dismissed (#3656) 2023-12-15 17:08:57 +05:30
Nivedin
93082c3816 refactor: embeds preview theme (#3657) 2023-12-15 17:08:02 +05:30
James George
d66537ac34 fix(common): GraphQL query syntax highlighting (#3653)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-12-15 14:37:01 +05:30
Nivedin
fc4c15e52d fix: auth-headers in collection bug (#3652)
* fix: fallback for importers and fix spelling

* chore: update i18n strings
2023-12-15 02:49:35 +05:30
Liyas Thomas
b521604b66 fix: collection properties styles 2023-12-14 18:00:46 +05:30
James George
9bc81a6d67 feat(cli): support collection level authorization and headers (#3636) 2023-12-14 12:43:22 +05:30
Joel Jacob Stephen
c47e2e7767 fix: notify that the user is not an admin when trying to login with a non admin account in admin dashboard (#3651) 2023-12-14 12:36:05 +05:30
Akash K
5209c0a8ca feat: dynamically load enabled auth providers (#3646) 2023-12-13 23:38:21 +05:30
Nivedin
47e009267b feat: collection level headers and authorization (#3505)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-12-13 22:43:18 +05:30
Joel Jacob Stephen
f3edd001d7 feat: introducing server configurations in admin dashboard (#3628)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-13 22:34:59 +05:30
Akash K
a8cc569786 feat: import environments from insomnia (#3625)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-13 19:15:39 +05:30
Liyas Thomas
3ae49ca483 fix: codemirror tooltip margin 2023-12-13 12:13:34 +05:30
Liyas Thomas
37e6497e88 fix: z-index 2023-12-13 11:02:56 +05:30
Liyas Thomas
b522ae9e05 fix: shortcut key size 2023-12-13 10:17:22 +05:30
Liyas Thomas
62b11fcec8 fix: z-index on toast 2023-12-13 09:22:58 +05:30
Liyas Thomas
51ebb57623 fix: z-index 2023-12-13 08:45:30 +05:30
Liyas Thomas
ff5c2ba51c chore: minor ui improvements to modal 2023-12-12 23:32:42 +05:30
Mir Arif Hasan
6abc0e6071 HBE-326 feature: server configuration through GraphQL API (#3591)
* feat: restart cmd added in aio service

* feat: nestjs config package added

* test: fix all broken test case

* feat: infra config module add with get-update-reset functionality

* test: fix test case failure

* feat: update infra configs mutation added

* feat: utilise ConfigService in util functions

* chore: remove saml stuff

* feat: removed saml stuffs

* fix: config service precedence

* fix: mailer module init with right env value

* feat: added mutations and query

* feat: add query infra-configs

* fix: mailer module init issue

* chore: smtp url validation added

* fix: all sso disabling is handled

* fix: pnpm i without db connection

* fix: allowedAuthProviders and enableAndDisableSSO

* fix: validateSMTPUrl check

* feat: get api added for fetch provider list

* feat: feedback resolve

* chore: update code comments

* fix: uppercase issue of VITE_ALLOWED_AUTH_PROVIDERS

* chore: update lockfile

* fix: add validation checks for MAILER_ADDRESS_FROM

* test: fix test case

* chore: feedback resolve

* chore: renamed an enum

* chore: app shutdown way changed

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-12-12 16:42:58 +06:00
Andrew Bastin
957641fb0f chore: move dioc out of monorepo 2023-12-12 15:39:10 +05:30
Liyas Thomas
a55f214102 fix: use base url instead of hardcoded url (#3635) 2023-12-12 15:06:28 +05:30
Liyas Thomas
ebf90207e5 chore: improve placeholder component styles (#3638)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-12 15:02:42 +05:30
Liyas Thomas
4ac8a117ef chore: add protocol logos to realtime page (#3637) 2023-12-12 14:25:56 +05:30
Muhammed Ajmal M
c1bc430ee6 fix: overflowing modal fix on small screens (#3643)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-12-12 14:21:19 +05:30
James George
9201aa7d7d fix(common): ensure banner colors are displayed correctly (#3630) 2023-12-12 13:55:18 +05:30
Liyas Thomas
87395a4553 fix: minor ui issues 2023-12-07 17:12:33 +05:30
Andrew Bastin
6063c633ee chore: pin vue workspace-wide to 3.3.9 2023-12-07 17:04:17 +05:30
Akash K
7481feb366 feat: introduce platform defs for adding additional spotlight searchers (#3631) 2023-12-07 16:28:02 +05:30
James George
bdfa14fa54 refactor(scripting-revamp): migrate js-sandbox to web worker/Node vm based implementation (#3619) 2023-12-07 16:10:42 +05:30
Andrew Bastin
0a61ec2bfe fix: useI18n type breaking 2023-12-07 15:17:41 +05:30
Nivedin
2bf0106aa2 feat: embeds (#3627)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-12-07 15:03:49 +05:30
Akash K
ab7c29d228 refactor: revamp the importers & exporters systems to be reused (#3425)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-06 21:24:29 +05:30
Joel Jacob Stephen
d9c75ed79e feat: introducing shared requests to admin dashboard (#3537)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-06 00:21:28 +05:30
Anwarul Islam
6fa722df7b chore: hoppscotch-ui improvements (#3497)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-12-06 00:08:44 +05:30
Balu Babu
18864bfecf feat: addition of data field into User and Team Collections (#3614)
* feat: added new columns into the TeamCollections and UserCollections models

* feat: completed addition of new data field in TeamCollection

* feat: completed addition of new data field in UserCollections

* chore: updated all tests in team-collection module

* chore: added tests for updateTeamCollection method in team-collection module

* chore: refactored all existing testcases in user-collection to reflect new changes

* chore: added new testcases for updateUserCollection method in user-collection module

* chore: made data field optional in team and user collections

* chore: fixed edgecases for data being null

* chore: resolved issue with team-request testcases

* chore: completed changes requested in PR review

* chore: changed target to prod in hoppscotch-old-backend service
2023-12-05 20:12:37 +05:30
Akash K
95754cb2b4 chore: bump deps for hoppscotch-common and hoppscotch-selfhost-web (#3575) 2023-12-05 17:33:25 +05:30
Gaurav K P
ed2a461dc5 feat(common): display status text from the API response if available (#3466)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-04 23:31:49 +05:30
Muhammed Ajmal M
8d5a456dbd fix(common): parentheses and single quotes support to curl imports (#3509) 2023-12-04 23:03:22 +05:30
Nivedin
2528bbb92f feat: shared request (#3486)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-04 22:51:18 +05:30
Liyas Thomas
259cd48dbb feat: init boring avatars (#3615) 2023-12-04 13:20:26 +05:30
Joel Jacob Stephen
b43531f200 feat: add ability to make banners dismissible + new info and warning color schemes added based on themes (#3586)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-12-04 00:57:37 +05:30
Muhammed Ajmal M
26da3e18a9 fix(common): prevented truncating parameters (#3502) 2023-12-04 00:49:45 +05:30
Rajdip Bhattacharya
bb4b640e58 feat: convert json to interfaces (#3566)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: nivedin <nivedinp@gmail.com>
2023-12-03 23:14:26 +05:30
Liyas Thomas
1cc845e17d fix: minor ui improvements (#3603) 2023-11-29 22:45:40 +05:30
James George
60bfb6fe2c refactor: move persistence logic into a dedicated service (#3493) 2023-11-29 22:40:26 +05:30
Joel Jacob Stephen
144d14ab5b fix: email validation failure in cases when email entered is correct when trying to create a team in admin dashboard (#3588)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-29 21:49:49 +05:30
Anwarul Islam
8f1ca6e282 feat: platform definition added for additional settings components (#3503) 2023-11-29 21:42:51 +05:30
Dante Calderon
a93758c6b7 chore: Remove whitespace in env variables 2023-11-22 19:40:32 +05:30
James George
1829c088cc feat: support for subpath based access in SH apps (#3449)
Co-authored-by: Balu Babu <balub997@gmail.com>
2023-11-22 19:35:35 +05:30
Akash K
ee1425d0dd fix: XML body disappearing with invalid XML (#3567)
fix: catch xmlformatter errors
2023-11-20 15:02:07 +05:30
Joel Jacob Stephen
24ae090916 refactor: allow banner service to hold multiple banners and display the banner with the highest score (#3556) 2023-11-17 20:31:34 +05:30
Nivedin
a3aa9b68fc refactor: interceptor error display in graphql response (#3553) 2023-11-17 17:03:53 +05:30
Joel Jacob Stephen
50f475334e fix: enlarged hoppscotch logo on dashboard login screen (#3559)
fix: resize the dashboard login icon
2023-11-16 22:51:08 +05:30
Andrew Bastin
7b18526f24 chore: merge hoppscotch/main into hoppscotch/release/2023.12.0 2023-11-16 13:51:12 +05:30
Andrew Bastin
23afc201a1 chore: bump version to release/2023.8.4 2023-11-14 21:26:16 +05:30
Andrew Bastin
b1982d74a6 fix: make schema more lenient while parsing public data structures 2023-11-14 21:24:25 +05:30
Andrew Bastin
e93a37c711 fix: add i18n entries for oauth errors 2023-11-14 17:44:37 +05:30
Nivedin
8d7509cdea fix: interceptor error from extension issue (#3548) 2023-11-14 17:17:23 +05:30
Akash K
e24d0ce605 fix: oauth 2.0 authentication type is breaking (#3531) 2023-11-14 00:12:04 +05:30
Balu Babu
f5d2e4f11f feat: introducing shortcode into admin module (#3504)
* feat: added query in infra to fetch all shortcodes

* feat: added mutation in admin to delete shortcode

* chore: added new tests for methods in shortcode module

* chore: removed .vscode file

* chore: added a new ShortcodeCreator type to output of fetchAllShortcodes query

* chore: shortcodeCreator type is now nullable

* chore: added type defs to fetchAllShortcodes method in admin module

* docs: update code comments

* chore: changed target to prod in hoppscotch-old-backend

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-11-10 14:28:02 +05:30
Andrew Bastin
de725337d6 fix: window drag taking precedence on windows 2023-11-08 20:07:13 +05:30
Andrew Bastin
9d1d369f37 fix: performance issues due to mouse on header detection 2023-11-08 18:47:40 +05:30
Andrew Bastin
2bd925d441 chore: correct version of selfhost-desktop 2023-11-08 17:18:12 +05:30
Liyas Thomas
bb8dc6f7eb chore: updated brand assets (#3500)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-11-08 15:47:35 +05:30
Anwarul Islam
be3e5ba7e7 fix: graphql query deprecation issue (#3506) 2023-11-08 14:51:39 +05:30
Andrew Bastin
663134839f feat: let platforms disable we are using cookies prompt 2023-11-07 20:49:07 +05:30
Andrew Bastin
736f83a70c fix: header inspector cookie inspection will not trigger if current interceptor supports cookies 2023-11-07 20:36:34 +05:30
Andrew Bastin
05d2175f43 fix: selfhost-desktop not running gql-codegen 2023-11-07 20:24:22 +05:30
Balu Babu
4caf0053cd feat: introduction of shared-requests (#3476)
* feat: added new property to existing shortcode model in prisma schema

* chore: created shared-requests module

* chore: created shared-request model

* chore: complete sharedRequest query

* chore: completed mutation to create a SharedRequest

* chore: completed subscription to create a SharedRequest

* chore: completed query to fetch all user created shared-requests

* chore: completed mutation to delete a SharedRequest

* chore: completed subscription to delete a SharedRequest

* chore: removed unused dependncues in share-requests module

* chore: added shared-requests into user deletion spec

* test: added all testcases for shared-request module

* test: modified all relevant tests in shortcode module

* chore: added deprecated label to all queries,mutations and subscriptions in the shortcode module

* chore: resolved all comments raised in review

* feat: added ability to update and listen to updates of shared-requests

* chore: added updatedOn field to shortcode model

* chore: fixed issue with updateSharedRequest method

* chore: fixed incorrect value getting updated

* chore: added all test-cases for updateSharedRequest method

* chore: created migration for shared-requests

* chore: moved shared-requests into shortcode module

* chore: added missing import in shortcode tests

* chore: changed properties to embedProperties in shortcode model

* feat: generated migrations file for new schema changes to Shortcodes table

* chore: changed target of old-backend service in docker-compose file

* chore: fixed issue with updatedOn field in shortcodes model

* chore: removed unused dependencies

* fix: handle invalid input for shortcode properties

* Revert "fix: handle invalid input for shortcode properties"

This reverts commit 4dcb0afb18.

* chore: changed updateShortcode method name to updateEmbedProperties

* chore: changed target of hoppscotch-old-backend service to prod

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-11-07 17:57:51 +05:30
Andrew Bastin
97bd808431 chore: set versions with a bump version 2023-11-07 16:04:02 +05:30
Andrew Bastin
a13c2fd4c1 chore: pin @codemirror/language to 6.9.0 2023-11-07 15:57:19 +05:30
Andrew Bastin
16044b5840 feat: desktop app
Co-authored-by: Vivek R <123vivekr@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-11-07 14:20:03 +05:30
Andrew Bastin
93ce86f32d chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-11-06 18:56:01 +05:30
Andrew Bastin
4ebf850cb6 chore: bump version to 2023.8.3 2023-11-06 17:39:31 +05:30
Balu Babu
76af7d5e10 fix: mailer template issue (#3475) 2023-11-06 17:25:36 +05:30
Joel Jacob Stephen
507fe69efe feat: new banner service and added ability to bind additional services from other platforms (#3474)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-06 11:41:19 +05:30
Joel Jacob Stephen
23e3739718 feat: introducing a new smart table hoppscotch ui component (#3178)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-11-06 11:31:55 +05:30
Nicolas Merget
5428a73811 fix: add optional chaining for teamMembers to handle undefined team (#3484)
Co-authored-by: James George <jamesgeorge998001@gmail.com>
2023-11-06 11:25:39 +05:30
Anwarul Islam
4a154e6569 chore: fix spelling mistake on type import (#3487) 2023-11-06 11:25:03 +05:30
Liyas Thomas
0aa5825d8b fix: cleanup ui and improve consistency in input elements (#3494) 2023-11-06 10:56:15 +05:30
Andrew Bastin
bdb63e99d5 fix: pin @lezer/highlight to 1.1.4 to prevent page breaks 2023-11-03 23:30:46 +05:30
Andrew Bastin
6daa043a1b chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-11-03 10:12:54 +05:30
James George
8175ec640a chore(data): bump dependencies (#3473) 2023-11-02 23:53:52 +05:30
James George
b5307e4a89 chore(common): implement enforced pre-commit type checks for FE service files (#3472) 2023-11-02 23:37:27 +05:30
Akash K
19294802be fix: graphql page crashing and broken syntax highlighting (#3488) 2023-11-02 23:10:37 +05:30
Andrew Bastin
cbe3e14b47 refactor: versioning and migration mechanism for public data structures (#3457)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-02 18:54:16 +05:30
Joel Jacob Stephen
9dcbc4a126 refactor: updated dashboard gql queries and components to use the new infra type of the updated schema (#3455) 2023-11-01 23:40:19 +05:30
Gaurav K P
01df1663ad fix(common): handle false negatives in url validation (#3465) 2023-11-01 22:23:33 +05:30
Anwarul Islam
a215860782 feat: replacing windicss by tailwindcss in hoppscotch-ui (#3076)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Joel Jacob Stephen <70131076+JoelJacobStephen@users.noreply.github.com>
Co-authored-by: nivedin <nivedinp@gmail.com>
2023-11-01 20:55:08 +05:30
Nivedin
abd5288da8 refactor: move sentry to platform (#3451) 2023-11-01 18:17:55 +05:30
Michel Tomas
a89bc473f6 fix(self-hosted/web): add "useCredentials: true" to Vite PWA options (#3460) 2023-11-01 09:46:20 +05:30
Mir Arif Hasan
59b5a50a97 HBE-296 feat: introducing 'infra' type and splitting model properties between 'admin' and 'infra' (#3445)
* feat: infra type added in admin module

* feat: infra-resolver added in admin module

* feat: feedback resolved

* feat: deprecated tag added in some admin ResolveFields

* build: update pnpm-lock file

* feat: add field in infra type

* feat: admin extends user partially

* feat: admin extends user with omitting some fields

* chore: remove unused imports

* build: conflict resolve in pnpm lock file
2023-10-30 17:03:43 +06:00
Andrew Bastin
57cb59027b chore: bump codemirror dependencies 2023-10-19 13:37:07 +05:30
Andrew Bastin
d1c9c3583f chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-10-19 09:34:49 +05:30
James George
2462492c86 chore(cli): bump dependencies (#3441)
* chore: bump CLI dependencies

* chore: update package.json

Bump version and specify minimum Node.js version
2023-10-16 18:23:22 +05:30
Joel Jacob Stephen
7a9f0c8756 refactor: improvements to the auth implementation in admin dashboard (#3444)
* refactor: abstract axios queries to a separate helper file

* chore: delete unnecessary file

* chore: remove unnecessary console logs

* refactor: updated urls for api and authquery helpers

* refactor: updated auth implementation

* refactor: use default axios instance

* chore: improve code readability

* refactor: separate instances for rest and gql calls

* refactor: removed async await from functions that do not need them

* refactor: removed probable login and probable user from the auth system

* refactor: better error handling in login component

* chore: deleted unnecessary files and restructured some files

* feat: new errors file with typed error message formats

* refactor: removed unwanted usage of async await

* refactor: optimizing the usage and return of promises in auth flow

* refactor: convey boolean return type in a better way

* chore: apply suggestions

* refactor: handle case when mailcatcher is not active

---------

Co-authored-by: nivedin <nivedinp@gmail.com>
Co-authored-by: James George <jamesgeorge998001@gmail.com>
2023-10-16 18:14:02 +05:30
Balu Babu
46caf9b198 refactor: removed all instances of rejectOnNotFound in prisma queries (#3377)
* chore: removed rejectOnNotFound property from prisma query in team-enviroment method

* chore: fixed issues with test cases in team-environment module

* chore: changed target of hoppscotch-old-backend service back to prod
2023-10-16 14:04:03 +05:30
Mir Arif Hasan
f5db54484c HBE-266 Update NestJS packages (#3389)
* build: update npm nest packages

* build: removed depricated apollo-server-plugin package

* build: pnpm-lock file added

* build: swc integrated

* Revert "build: swc integrated"

This reverts commit 803a01f38f210dfbcd603665893d29af565c8908.

* feat: upgrade graphql* packages version

* feat: upgrade point release

* feat: update pnpm-lock file
2023-10-16 12:23:55 +05:30
Mir Arif Hasan
8deb6471b9 HBE-270 Test-Case timestamp issue fix in backend (#3415)
test: timestamp issue fix in user-history
2023-10-16 12:11:15 +05:30
Liyas Thomas
73b3ff8e41 feat: improve import-export UI (#3452)
* chore: uniform styles across components

* chore: removed absolute wrapper divs

* feat: add import button when graphql collections are empty

* chore: add icon for button

---------

Co-authored-by: nivedin <nivedinp@gmail.com>
2023-10-13 17:57:14 +05:30
James George
016a18d3b2 fix(common): use tab service within helpers (#3448) 2023-10-12 13:15:45 +05:30
Anwarul Islam
ba31cdabea feat: tab service added (#3367) 2023-10-11 18:21:07 +05:30
Nivedin
51510566bc refactor: add import buttons in empty state for collections & environments (#3438) 2023-10-11 11:08:51 +05:30
Anwarul Islam
cabee0ecc8 fix: memory leak issue on TeamInvite modal (#3440)
* fix: memory leak issue

* feat: added rerun ability

* chore: lint fix
2023-10-11 07:59:12 +05:30
Anwarul Islam
2c2b39a236 feat: no permission warning added for users except owner while deleting team (#3328)
* feat: no permission warning added
* chore: changed to function reference
2023-10-09 19:31:48 +05:30
Liyas Thomas
78450c9316 fix: tooltip position in editor instance (#3374) 2023-10-09 11:37:52 +05:30
Joel Jacob Stephen
b18fd90b64 fix: blank screen in admin dashboard on authentication problems (#3385)
* fix: dashboard logs out user when cookie expires or is unauthorized

* fix: handles the 401 error thrown when trying to refresh tokens

* chore: updated wrong logic when returning state in refresh token function

* feat: introduced auth exchange to urql client to check for errors on each backend call

* fix: prevent multiple window reloads

---------

Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-10-09 10:08:35 +05:30
Andrew Bastin
0188a8d7db chore: bump version 2023-10-06 22:04:57 +05:30
Joel Jacob Stephen
6c63a8dc28 refactor: updated i18n implementation in the admin dashboard (#3395)
* feat: introduced new unplugin i18n and removed the old vite i18n package

* refactor: updated vite config to support the new plugin

* refactor: removed irrelevant logic from the i18n module
2023-10-06 17:36:19 +05:30
Rakibul Yeasin
17d6ae15a5 fix: Cannot set custom method #3406 (#3408)
* fix: #3406

* chore: remove console log

* fix: an unknown keyboard event issue

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-10-06 11:57:26 +05:30
Andrew Bastin
40f72278a9 fix: team collection resetting on unmount within app lifecycle (#3396)
* fix: team collection resetting on unmount within app lifecycle

* chore: linting

* refactor: eliminate redundancy

* chore: update comment about the watcher purpose

---------

Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-10-06 11:34:44 +05:30
5idereal
f717704731 chore(i18n): update tw.json (#3409) 2023-10-06 11:27:24 +05:30
Joel Jacob Stephen
185c225297 feat: introduces ability to export single environment variables and allow CLI to accept the export format used by the app (#3380)
* feat: add ability to export a single environment

* refactor: export environment without id

* feat: introducing zod for checking json format for environment variables

* refactor: new zod specific type for HoppEnvPair

* feat: add ability to export single environment in team environment

* refactor: moved zod as a dependency to devDependency

* refactor: separated repeating logic to helper file

* refactor: removed unnecessary to string operation

* chore: rearranged smart item placement

* refactor: introduced error type when a bulk environment export is used in cli

* refactor: removed unnecssary type exports and updated logic and variable names across most files

* refactor: better logic for type shapes

* chore: bump hoppscotch-cli package version

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-10-06 11:21:54 +05:30
James George
2694731c36 chore: remove stale type definitions (#3368) 2023-10-05 14:49:04 +05:30
James George
ae89af9978 feat: alert the user on empty collection/environment exports (#3416) 2023-10-05 14:38:38 +05:30
James George
87d617012f fix: environment variables usage in meta tags (#3418) 2023-10-05 13:51:42 +05:30
Liyas Thomas
2420b3fa42 chore: move deps in the root of monorepo into devDependencies (#3375)
chore: move deps in the root of monorepo into devDependencies
2023-09-28 22:25:22 +05:30
Anwarul Islam
175a991ec4 fix: gql teamID not being passed (#3392)
* chore: bump dependencies for path.charCodeAt issue
* fix: gql teamID is not passed issue
2023-09-28 22:04:02 +05:30
SamJakob
0301649aff chore: make devcontainer copy .env.example (#3318) 2023-09-28 21:58:17 +05:30
Joel Jacob Stephen
544b045300 fix: authorisation headers not being sent along with subscriptions when using graphql (#3354)
* fix: send auth headers to the payload

* refactor: alert user that headers are sent to connection_init

* refactor: send headers only when headers are populated

* chore: cleanup code
2023-09-28 21:57:07 +05:30
Andrew Bastin
65884293be chore: introduce docker buildx for multi-platform build 2023-09-18 21:16:23 +05:30
Andrew Bastin
3cb4861bac chore: pin netlify-cli version on ui deploy script 2023-09-18 20:51:42 +05:30
Andrew Bastin
7beed30815 chore: update ci to build for arm64 as well 2023-09-18 20:43:22 +05:30
Andrew Bastin
bb380f3751 chore: bump version to 2023.8.1 2023-09-18 20:18:23 +05:30
Andrew Bastin
33a7580e46 fix: support modal popping up on typing shift based commands on input 2023-09-18 20:10:17 +05:30
Liyas Thomas
ffb2b5c30a chore: improve button border radius 2023-09-18 19:51:22 +05:30
James George
7c238fa854 chore(cli): update error message (#3363) 2023-09-18 19:19:51 +05:30
Andrew Bastin
185b575e5b refactor: minor performance improvements on teams related operations 2023-09-18 18:50:57 +05:30
Andrew Bastin
bcc1147f81 fix: clear regression and extension recovers response for error status codes 2023-09-18 18:26:17 +05:30
Anwarul Islam
f5b130024e fix: missing baseurl on import openapi (#3323)
* fix: missing baseurl on import openapi

* fix: url parser for openapi v3

* chore: revert to baseURL for cases where doc servers is present but url is null

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-09-18 14:42:04 +05:30
Liyas Thomas
bb5c333bae fix: remove scrollbar from smart env input component on firefox (#3362) 2023-09-18 13:20:53 +05:30
Nivedin
3684d25848 fix: sticky searchbar hidden in codemirror (#3351)
* fix: sticky search bar in codemirror

* chore: use tailwind classes

* chore: improve consistency across editor instances

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-09-18 12:45:14 +05:30
Anwarul Islam
8b0ba3a45e feat: differentiation for successful invites and failed invites (#3325)
feat: invites result splitted
2023-09-18 11:48:38 +05:30
Liyas Thomas
e847fb7b77 chore: clean up i18n (#3350) 2023-09-18 11:26:31 +05:30
Nivedin
5c78ae4dee fix: dirty tab count incorrect when closing tabs (#3359)
* fix: dirty tab count incorrect when closing tabs

* refactor: make the calculation more expressive

---------

Co-authored-by: amk-dev <akash.k.mohan98@gmail.com>
2023-09-18 11:20:26 +05:30
Nivedin
53ec605963 fix: duplicate tab reference bug (#3356) 2023-09-18 11:15:18 +05:30
Yuri Grand
75193a7aa8 i18n: translate locales to russian (#3312)
chore: translate locales to russian
2023-09-13 12:53:10 +05:30
tyo
b269c239d9 chore(i18n): update translation for Indonesian (#3284) 2023-09-13 12:48:46 +05:30
Liyas Thomas
72b4a1fc4e fix: typo in "twitter link" and "invite to hoppscotch" action (#3346) 2023-09-13 11:55:58 +05:30
DNT
d2d1674d31 i18n: update vi.json (#3241) 2023-09-13 11:52:37 +05:30
Joel Jacob Stephen
a6b57777e3 refactor: remove font sizes from the app (#3341)
* refactor: remove font size from settings

* refactor: remove font size from themes

* refactor: remove font size from spotlight

* refactor: remove default font size

* chore: clean up

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-09-13 11:45:38 +05:30
Joel Jacob Stephen
65ef4db86f refactor: remove zen mode from the app (#3337)
* refactor: remove zen mode from settings

* refactor: remove zen mode from footer and options
2023-09-12 14:10:38 +05:30
Nivedin
7201147b55 fix: context-menu position fixed while scrolling (#3340) 2023-09-12 12:43:10 +05:30
Anwarul Islam
dd143c95a9 fix: unusual behavior while scrolling through spotlight entries (#3324)
* fix: spotlight scroll issue

* fix: entry hidden issue

* chore: back to loop mode
2023-09-12 12:42:44 +05:30
James George
005581ee7d fix: broken link to REST API Testing docs (#3333)
fix: broken link to REST API Testing docs
2023-09-12 12:32:10 +05:30
Joel Jacob Stephen
1431ecc6d7 refactor: keyboard shortcuts now supports different keyboard layouts including Dvorak (#3332)
* refactor: support mulitple keyboard layouts such as dvorak

* chore: replace redundant variable usage
2023-09-08 22:02:39 +05:30
Liyas Thomas
f34d896095 docs: updated screenshots and features list (#3310) 2023-09-05 12:06:47 +05:30
Andrew Bastin
e95ebb9226 chore: add release tag ci pipeline to push to docker hub 2023-08-31 15:49:32 +05:30
Andrew Bastin
57365eeae0 chore: bump version to 2023.8.0 2023-08-31 13:55:36 +05:30
Joel Jacob Stephen
b22bd97818 style: updated font size and truncation on fields in the invited users table in admin dashboard (#3300)
style: updated font size and fixed truncation issue on invited table
2023-08-28 23:27:55 +05:30
Anwarul Islam
b953b32ff4 fix: spotlight actions on graphql (#3299)
* fix: spotlight actions for graphql

* fix: environment actions

* fix: gql rename request

* fix: graphql spotlight actions

* fix: tab shortcuts not working properly

* fix: only show download and copy response when there is a response

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-28 20:40:01 +05:30
Liyas Thomas
0eacd6763b chore: improved command labels and icons (#3295)
* chore: improved command labels and icons

* chore: fix tests

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-28 18:15:00 +05:30
Anwarul Islam
8499ac7fec fix: graphql operation highlight on focus changed (#3297) 2023-08-28 17:55:42 +05:30
Nivedin
4adac4af38 fix: inspections bugs (#3277)
* fix: environment add bug in inspection

* chore: add 127.0.0.1 in url inspection

* chore: update browserextension inspection help url

* fix: team env not showing bug in selector

* chore: rework inspector systems to be reactive

* chore: handling tab changes gracefully

* refactor: move out url interceptor from the platform

* chore: add view function in inspector service to get views into the list

* fix: interceptors not kicking in on initial load

* fix: don't show no internet connection error unless browser deems so

* chore: fix tests

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-28 17:43:46 +05:30
Akash K
fd162e242c fix: issues with codegen (#3293)
* fix: fix issues with httpsnippet upgrade

* chore: fix HttpSnippet import
2023-08-28 15:57:44 +05:30
Andrew Bastin
3e83828722 chore: correct spelling for footer custom entries 2023-08-26 04:43:34 +05:30
Andrew Bastin
f7dc36e3f1 fix: correct typo 'additionalFooterMenuItems' 2023-08-26 03:09:11 +05:30
Andrew Bastin
a7566dfd86 feat: move crisp out of common (#3287)
* feat: move crisp out of common

* fix: update static spotlight searcher

* chore: fix typo
2023-08-26 03:00:58 +05:30
Mir Arif Hasan
d4d7a20fbd HBE-258 hotfix: skip parameter in findMany in shortcode module (#3294)
fix: skip parameter in findMany
2023-08-26 01:35:51 +05:30
Andrew Bastin
dfb281bcf7 chore: update prod.Dockerfile to add step for the backend container to not copy .env in 2023-08-25 21:03:00 +05:30
Andrew Bastin
c62482e81f fix: login component in app not respecting allowed auth provider ids 2023-08-25 19:13:03 +05:30
Anwarul Islam
886847ab7b fix: corrections for spotlight searchers (#3275) 2023-08-25 01:44:29 +05:30
Nivedin
a268cab11e fix: context menu bugs (#3279) 2023-08-25 00:27:03 +05:30
Nivedin
e9509b9fa1 fix: tab right click rename bug (#3286) 2023-08-25 00:20:08 +05:30
Liyas Thomas
8db452089c fix: icons inside tooltip (#3283) 2023-08-24 23:55:22 +05:30
Andrew Bastin
a1764023f3 fix: sh-admin not properly loading in env variables 2023-08-24 20:41:46 +05:30
Andrew Bastin
b08b63dc73 feat: cleaner save context handling for graphql (#3282)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-24 19:07:17 +05:30
Nivedin
a9a4ebf595 fix: autocomplete bug (#3285)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-24 18:46:58 +05:30
Andrew Bastin
a8e279db28 fix: codegen breaking 2023-08-24 15:03:50 +05:30
Andrew Bastin
d09a3e9237 fix: import-meta-env crashes while using dev mode 2023-08-24 09:43:52 +05:30
Andrew Bastin
efa40cf6ea feat: container registry friendly docker images and all-in-one container (#3193)
Co-authored-by: Balu Babu <balub997@gmail.com>
2023-08-24 00:01:28 +05:30
Akash K
1a3d9f18ab fix: issues in displaying the suggestions menu on EnvInput (#3280) 2023-08-23 21:18:48 +05:30
Akash K
653ccd3240 fix: vertical scroll not working on codemirror instance when lines are not wrapped (#3276)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-23 18:14:12 +05:30
Anwarul Islam
c0806cfd07 chore: removed unnecessary dependencies from hoppscotch-ui (#3077) 2023-08-23 18:13:19 +05:30
Liyas Thomas
008eb6b77b chore: minor ui improvements (#3274) 2023-08-22 22:22:43 +05:30
Joel Jacob Stephen
ac60843183 refactor: autofocus can be disabled in smart input hopp ui component (#3273)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-22 20:10:41 +05:30
Anwarul Islam
3c3fb1e4a9 fix: minor spotlight related issues (#3271)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-22 17:58:32 +05:30
Anwarul Islam
88212e8cfe feat: gql revamp (#2644)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-22 17:43:43 +05:30
Andrew Bastin
191fa376d2 chore: remove go to docs search entry and update i18n 2023-08-22 01:09:48 +05:30
Andrew Bastin
6efae3a395 fix: crash when closing tab (fixes HFE-146) 2023-08-22 01:07:16 +05:30
Andrew Bastin
cb8678f07f fix: codegen modal breaking, downgrade back to 2.0 2023-08-22 00:49:13 +05:30
Andrew Bastin
b32b0f9bcb fix: modals inputs not working properly 2023-08-22 00:17:03 +05:30
Anwarul Islam
5a91fb53b2 feat: expanded search capabilities of spotlight (#3255)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-21 20:03:51 +05:30
Liyas Thomas
b0b6edc58e fix: search input autofocus (#3265) 2023-08-21 14:58:44 +05:30
Akash K
8c57d81718 chore: bump dependencies (#3258)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-21 09:06:30 +05:30
Andrew Bastin
10bb68a538 refactor: move from network strategies to generic interceptor service (#3242) 2023-08-21 07:50:35 +05:30
Anwarul Islam
d4d1e27ba9 feat: smart-tree component added to hoppscotch-ui (#3210) 2023-08-20 20:48:32 +05:30
Liyas Thomas
d5c887f311 fix: placeholder size and text overflow on tab head (#3261) 2023-08-18 21:32:10 +05:30
Akash K
ce7adf6da3 feat: load allowed login methods from .env (#3264)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-18 21:23:56 +05:30
Andrew Bastin
c626fb9241 feat: spotlight collection searcher (#3262)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-18 20:56:45 +05:30
Nivedin
f21ed30e10 feat: inspections (#3213)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-18 01:37:21 +05:30
Anwarul Islam
b55970cc7a spotlight: settings based actions added (#3244)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-17 22:04:58 +05:30
Joel Jacob Stephen
74ad2e43a4 feat: ability to conditionally enable auth providers in dashboard (#3225) 2023-08-17 21:53:34 +05:30
Liyas Thomas
2d6282cf8b refactor: polish environment selector (#3260) 2023-08-17 16:46:45 +05:30
Liyas Thomas
e255c46455 feat: environment quick peek (#3119) 2023-08-15 19:30:37 +05:30
Andrew Bastin
15c2c7bb5b feat: divider for the additional platform login items 2023-08-15 16:15:03 +05:30
Andrew Bastin
71bcd22444 feat: allow platforms to define additional entries in the login dialog 2023-08-14 22:18:37 +05:30
Joel Jacob Stephen
2d104160f2 refactor: revoke team invitation in admin dashboard (#3232) 2023-08-14 17:37:05 +05:30
Anwarul Islam
f7c1825de5 spotlight: navigation searcher added (#3245)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-08-12 22:21:45 +05:30
Mir Arif Hasan
2c1fd5d711 feat: prefix VITE_ added in conditional auth provider env variable (#3246) (HBE-248) 2023-08-08 14:16:13 +05:30
Nivedin
085fbb2a9b feat: tippy menu for history and tab (#3220)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-08 13:23:11 +05:30
Andrew Bastin
05f2d8817b chore: merge hoppscotch/main into release/2023.8.0 2023-08-08 12:18:01 +05:30
Joel Jacob Stephen
81fbb22c51 feat: introducing a new smart input hoppscotch ui component (#3089)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-08-05 23:45:02 +05:30
Liyas Thomas
01cf59c663 fix: disable line wrapping in EnvInput component (#3230) 2023-08-05 23:43:02 +05:30
Liyas Thomas
5c8ebaff3e refactor: fonts are now bundled with packages (#3227) 2023-08-05 23:42:31 +05:30
Andrew Bastin
0e70c28324 feat: dynamically select which auth providers for your instance of hoppscotch (be implementation) 2023-08-03 20:12:54 +05:30
Ankit Sridhar
88f6a4ae26 [feat] : Allow admins to revoke a team invite (HBE-230) (#3162)
feat: added functionality for admin to revoke team invite
2023-08-03 14:08:32 +05:30
Anwarul Islam
610538ca02 chore: type and ux improvement for SmartTree (#3126) 2023-08-02 20:54:02 +05:30
Nivedin
8970ff5c68 feat: context menu (#3180)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-08-02 20:52:16 +05:30
Liyas Thomas
d1a564d5b8 fix: elastic overscroll on safari (#3221) 2023-08-02 20:47:54 +05:30
Anwarul Islam
8bb1d19c07 fix: firefox browser scrollbar issue (#3201) 2023-08-01 13:20:17 +05:30
Liyas Thomas
c1efa381f0 feat: svg badge asset (#3196) 2023-07-25 20:45:22 +05:30
Andrew Bastin
29171d1b6f fix: generate-ui failing to build 2023-07-18 22:27:37 +05:30
Andrew Bastin
e869d49e16 chore: run tests on and against release branches 2023-07-18 21:46:38 +05:30
Andrew Bastin
6496bea846 chore: bump version to 2023.4.8 2023-07-18 21:46:36 +05:30
NicklasWallgren
39842559b5 fix: reduce the memory consumption during build to prevent OOM (#3148)
Co-authored-by: Nicklas Wallgren <nicklas.wallgren@folksam.se>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-07-18 00:08:06 +05:30
Anwarul Islam
51efb35aa6 fix: keybinding modifier issue (#3163) 2023-07-17 23:56:08 +05:30
NicklasWallgren
9402bb9285 fix: add healthcheck for db and remove unwanted volumes (#3150) 2023-07-17 21:22:56 +05:30
Liyas Thomas
5a516f7242 docs: fixed shortcut keys for spotlight and shortcuts menu (#3192) 2023-07-17 19:27:49 +05:30
Liyas Thomas
3b217d78e7 fix: deps mismatch for vite-plugin-pages-sitemap (#3191) 2023-07-17 19:26:43 +05:30
Liyas Thomas
8e153b38dc redesigned search button (#3187) 2023-07-17 14:40:14 +05:30
Akash K
6f38bfb148 chore: update generateSitemap usage (#3182) 2023-07-17 14:39:32 +05:30
Balu Babu
82b6e08d68 fix: fixed issue in team-environment test cases (#3189) 2023-07-17 12:33:11 +05:30
Liyas Thomas
31fd6567b7 fix: text overflow on spotlight search results (#3181) 2023-07-17 12:32:45 +05:30
Anwarul Islam
25177bd635 fix: update vite-plugin-dts version which fixes build issue on docker/alpine (#3179) 2023-07-17 12:32:25 +05:30
5idereal
6928eb7992 feat(lang): update tw translation (#3170) 2023-07-14 11:36:08 +05:30
Andrew Bastin
8300f9a0a2 chore: merge release/2023.4.8 into release/2023.8.0 2023-07-13 12:10:14 +05:30
Mir Arif Hasan
525ba77739 refactor: team invitation module in pseudo fp-ts (#3175) 2023-07-13 11:58:03 +05:30
Balu Babu
6bc748a267 refactor: introduce team-environments into self-host refactored to pseudo-fp format (#3177) 2023-07-13 11:52:19 +05:30
Andrew Bastin
5230d2d3b8 feat: revamped spotlight (#3171)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-07-11 23:02:33 +05:30
Nivedin
c3531c9d8b feat: auto-complete recent history entries in URL bar (#3141)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-07-11 20:03:42 +05:30
Andrew Bastin
b29c04c28d fix: email not being checked case insensitive on team invitation acceptance (#3174) 2023-07-11 20:03:08 +05:30
Liyas Thomas
b2af353941 chore: new filled star icon to toggle favorite history entry (#3164) 2023-07-06 13:30:38 +05:30
Andrew Bastin
9dbce74f5e chore: bump version to 2023.4.7 2023-06-27 15:43:03 +05:30
Liyas Thomas
db1cf5cc08 fix: explicitly added background color 2023-06-27 15:43:03 +05:30
Liyas Thomas
09360abf81 fix: text overflow on details summary label (#3160)
Co-authored-by: Nivedin <nivedinp@gmail.com>
2023-06-27 15:42:58 +05:30
Andrew Bastin
355bd62b8d feat: introduce more events into the analytics pipeline (#3156) 2023-06-27 15:37:25 +05:30
James Butler
5650de1183 fix: self-host unable to use Azure oauth (#3138) 2023-06-27 15:37:25 +05:30
Akash K
2ee8614b93 fix: use --location param for url when parsing curl (#3152) 2023-06-27 15:37:25 +05:30
Ankit Sridhar
5632334c9a fix: remove existing team invitation for an invitee when adding invitee to team by admin (HBE-229) (#3157) 2023-06-27 15:37:25 +05:30
Anwarul Islam
780dd8a713 fix: graphql authorization headers (#3136) 2023-06-27 15:37:25 +05:30
Nivedin
7db3c6d290 fix: unified bg color in collection tree (#3155) 2023-06-27 15:37:25 +05:30
Omer Baflah
c765270dfe fix: correct typos (#3153) 2023-06-27 15:37:25 +05:30
Webysther Sperandio
03f667c21d feat: custom location on admin redirect to base (#3103) 2023-06-27 15:37:25 +05:30
Balázs Úr
f79f3078dc chore(i18n): updated hungarian translation (#3151) 2023-06-27 15:37:25 +05:30
Nivedin
6e29a2f6d4 fix: shortcode resolution screen is stuck on invalid shortcodes (#3142)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-06-27 15:37:25 +05:30
Balu Babu
6304fd50c3 fix: fixed issue with team-invitations and new user accounts (#3137) 2023-06-27 15:37:25 +05:30
Andrew Bastin
2ec29c47ad chore: merge release/2023.4.7 into main 2023-06-27 14:17:26 +05:30
Andrew Bastin
399a238bf4 chore: bump version to 2023.4.7 2023-06-27 14:15:12 +05:30
Liyas Thomas
b20ab72298 fix: explicitly added background color 2023-06-26 19:57:43 +05:30
Liyas Thomas
f723e6496a fix: text overflow on details summary label (#3160)
Co-authored-by: Nivedin <nivedinp@gmail.com>
2023-06-26 18:30:25 +05:30
Andrew Bastin
8c0aff8863 feat: introduce more events into the analytics pipeline (#3156) 2023-06-24 10:18:35 +05:30
James Butler
64c5077506 fix: self-host unable to use Azure oauth (#3138) 2023-06-22 23:43:05 +05:30
Akash K
2afc87847d fix: use --location param for url when parsing curl (#3152) 2023-06-22 23:40:09 +05:30
Ankit Sridhar
878ec833ce fix: remove existing team invitation for an invitee when adding invitee to team by admin (HBE-229) (#3157) 2023-06-22 23:38:02 +05:30
Anwarul Islam
039de8015f fix: graphql authorization headers (#3136) 2023-06-22 23:32:23 +05:30
Nivedin
f67b366b90 fix: unified bg color in collection tree (#3155) 2023-06-22 00:38:28 +05:30
Andrew Bastin
6f35574d68 refactor: move hoppscotch-common tests to vitest (#3154) 2023-06-22 00:36:25 +05:30
Omer Baflah
77e8a36ab0 fix: correct typos (#3153) 2023-06-22 00:35:57 +05:30
Webysther Sperandio
d7cc9f5dbc feat: custom location on admin redirect to base (#3103) 2023-06-21 00:13:40 +05:30
Anwarul Islam
fc3e3aeaec feat: placeholder component in hoppscotch-ui (#3123)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-06-21 00:09:16 +05:30
Balázs Úr
4ba135f3b9 chore(i18n): updated hungarian translation (#3151) 2023-06-20 14:28:53 +05:30
Nivedin
24894e05dc fix: shortcode resolution screen is stuck on invalid shortcodes (#3142)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-06-19 14:04:07 +05:30
Andrew Bastin
e2b668bee2 chore(ci): add manual workflow dispatch for hoppscotch-ui deploy script 2023-06-19 12:33:52 +05:30
Andrew Bastin
f112c46bb4 chore(ci): re-introduce hoppscotch-ui deploy script 2023-06-19 11:51:14 +05:30
Joel Jacob Stephen
331d482b22 feat: introducing i18n support to admin dashboard (#3051) 2023-06-16 09:47:00 +05:30
Andrew Bastin
b07243f131 chore: merge main@2023.4.6 into release/2023.8.0 2023-06-16 09:45:05 +05:30
Balu Babu
84b0c30d64 fix: fixed issue with team-invitations and new user accounts (#3137) 2023-06-15 17:15:06 +05:30
Andrew Bastin
e3dd9e99a1 chore: bump version to 2023.4.6 2023-06-12 10:43:44 +05:30
Hoai-Thu Vuong
e3091cb6db chore(i18n): fix typo in translation of clear_all (#3133) 2023-06-12 10:31:58 +05:30
Akash K
270f796683 fix: fix url getting overridden when query params are present (#3130) 2023-06-09 21:53:55 +05:30
Anwarul Islam
24c6bce02d fix: failed to execute 'observe' on 'IntersectionObserver' (#3122) 2023-06-09 09:40:09 +05:30
Anwarul Islam
2db567589f fix: collection request name edit issue (#3115)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Nivedin <nivedinp@gmail.com>
2023-06-09 09:36:41 +05:30
Liyas Thomas
1fe83ebdc8 chore: updated i18n strings (#3106) 2023-06-07 23:59:04 +05:30
islamzeki
8320d4f222 chore(i18n): update tr.json 2023-06-07 23:56:49 +05:30
Liyas Thomas
e76c1bc64c fix: stack order of tab inside environment selector (#3108) 2023-06-07 23:47:24 +05:30
Nivedin
1f3f8464ea fix: team environment lost when route changes (#3113)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-06-07 23:46:09 +05:30
Andrew Bastin
81a7e23a12 feat: introduce dioc into hoppscotch-common 2023-06-07 15:20:49 +05:30
Liyas Thomas
e75391cdf1 chore: updated icon with correct size (#3105) 2023-06-04 23:46:47 -04:00
Andrew Bastin
a213c0c26c chore: bump version to 2023.4.5 2023-06-04 23:41:01 -04:00
Andrew Bastin
15424903ed fix: stop logging DATABASE_URL in logs 2023-06-04 23:33:32 -04:00
Andrew Bastin
1cce117b0a chore: bump version to 2023.4.4 2023-06-02 11:06:51 -04:00
Liyas Thomas
abc7b4b6f3 chore: improve mobile responsiveness on environment selector (#3100) 2023-06-02 10:56:18 -04:00
Ankit Sridhar
05e32ef9e4 fix: update team invitation link to domain specified in .env [HBE-202] (#3096) 2023-05-31 10:36:34 -04:00
Nivedin
f0a1fc319c fix: sync popup firing multiple times (#3063) 2023-05-30 23:36:37 -04:00
Allen Zhang
385cabc6aa fix: update package.json script (#3083) 2023-05-30 17:50:47 -04:00
Liyas Thomas
397b26a9f3 chore: environment selector with new ux (#3052)
Co-authored-by: Nivedin <nivedinp@gmail.com>
2023-05-30 17:47:37 -04:00
Nivedin
9a40058329 fix: set team environment from test (#3059) 2023-05-30 17:38:28 -04:00
Akash K
7ec2380ed5 chore: update wss url to ws in .env.example (#3081) 2023-05-29 20:23:02 -04:00
安正超
3d4825305d chore(i18n): Update zh-CN translations (#3068) 2023-05-29 20:19:43 -04:00
Nivedin
26e564288b feat: prettify XML response (#3079) 2023-05-29 20:18:19 -04:00
Sawako
385a587cfd feat(locales): fix and update es (spanish) locale (#3086) 2023-05-29 20:15:39 -04:00
Liyas Thomas
215df02783 chore: make style sheets consistent (#3074) 2023-05-29 20:12:58 -04:00
Liyas Thomas
7c7ed68b20 fix: 403 forbidden error when trying to load profile picture (#3045)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Nivedin <53208152+nivedin@users.noreply.github.com>
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
fix: pane layout broken when wrap line is off (#3027)
Fix issue with disappearing tab when opening request tabs with long text in body/script (#3030)
2023-05-24 16:23:44 -04:00
Anwarul Islam
c910a0314a feat: rename request by double clicking its name on tabs (#3057)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-05-24 16:18:19 -04:00
Liyas Thomas
ddaec1b9ac feat: add support to audio and video API responses (#3044) 2023-05-24 16:16:14 -04:00
Anwarul Islam
9dbdef9286 fix: dead key issue in mac (#3058) 2023-05-23 16:41:37 -04:00
Bart Kerkvliet
e77eef1532 Fix typo, rename cuttentTime to currentTime (#3053) 2023-05-23 16:38:01 -04:00
Liyas Thomas
1fe0b8861d fix: don't cut off the part that's already been typed (#3054) 2023-05-23 16:36:02 -04:00
Andrew Bastin
aeb9172144 fix: analytics logging behavior being incorrect (#3064) 2023-05-23 16:34:28 -04:00
Mir Arif Hasan
1b413e2f47 fix: timing dependency on test case (#3070) 2023-05-23 16:32:39 -04:00
Andrew Bastin
d6c8400116 chore: bump version to 2023.4.3 2023-05-11 17:05:28 +05:30
Andrew Bastin
4a0205e622 fix: environment section being broken 2023-05-11 16:34:57 +05:30
Andrew Bastin
c2520006ac chore: bump version to 2023.4.2 2023-05-11 14:09:38 +05:30
Nivedin
99817fd8bd fix: reset envs when user switches workspaces (#3039)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-05-11 14:09:38 +05:30
Anwarul Islam
3f35fedd9d fix: tab system breaks when a new tab is created while waiting for response in another tab (#3031) 2023-05-11 14:09:38 +05:30
Akash K
b7c2d13992 fix: invalid environment index can break the app (#3041) 2023-05-11 14:09:38 +05:30
Akash K
a6426587fb chore: add onCodemirrorInstanceMount hook to platform (#3043) 2023-05-11 14:09:38 +05:30
Anwarul Islam
5f68356278 feat: scroll to show the new active tab header (#3013)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-05-11 14:09:38 +05:30
Mir Arif Hasan
08f61e7408 fix: magic link URL (#3028) 2023-05-11 14:09:38 +05:30
Mir Arif Hasan
9beda15f00 fix: returning response from authCookieHandler (#3025) 2023-05-11 14:09:38 +05:30
Anwarul Islam
09d1663f81 feat: picture component moved to hoppscotch-ui (#3032) 2023-05-11 14:09:38 +05:30
Anwarul Islam
f43b6e7cff Fix issue with disappearing tab when opening request tabs with long text in body/script (#3030)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-05-11 14:09:38 +05:30
Akash K
6581eb4fd1 fix: update the hoppscotch-sh-admin magic link route to match hoppscotch-app (#3029) 2023-05-11 14:09:38 +05:30
Nivedin
caedfe5c1e fix: pane layout broken when wrap line is off (#3027)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-05-11 14:09:38 +05:30
Liyas Thomas
f6a234aaf9 docs: updated screenshots (#3046) 2023-05-10 19:17:47 +05:30
Andrew Bastin
8450fb6596 chore: release 2023.4.1 2023-04-23 16:44:51 +05:30
Anwarul Islam
41fa3b5a8c fix: wrong tab selected after navigating from different route (#3012) 2023-04-23 16:06:11 +05:30
Nivedin
522de45a62 fix: request name not updating in the save request modal (#3010) 2023-04-23 15:47:06 +05:30
Anwarul Islam
4acc4b2dda fix: language switching issue to en from slug (#3006)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-04-22 16:22:30 +05:30
Liyas Thomas
c1f4855daf fix: non-prettified output on large JSON objects (#3008) 2023-04-21 21:09:25 +05:30
Nivedin
3506e96cfd fix: selected env changed while sidebar collapsed (#3002) 2023-04-21 20:27:04 +05:30
Liyas Thomas
b42a94ed77 chore: use auto-imported icons (#2998) 2023-04-21 20:20:22 +05:30
Liyas Thomas
80da790a3c chore: improve tabs scrollbar & unsaved request indicator (#3003) 2023-04-21 20:08:43 +05:30
Liyas Thomas
d6c706d0f9 fix: unwanted transitions caused pane layout shift (#2988) 2023-04-21 19:55:59 +05:30
Liyas Thomas
bd09a6ac45 i18n: updated locales to reflect latest strings (#2989) 2023-04-19 13:56:15 +05:30
Liyas Thomas
4ada31b20e docs: added border to screenshots (#2987) 2023-04-18 23:14:52 +05:30
Liyas Thomas
5d8b55e96b docs: fixed broken documentation links (#2997) 2023-04-18 23:14:06 +05:30
Liyas Thomas
eab4893aa2 docs: updated screenshots (#2984) 2023-04-13 22:50:53 +05:30
Balu Babu
4806499040 fix: fixed incorrect GOOGLE_SCOPE env value in .env.example file (#2983) 2023-04-13 16:21:37 +05:30
Andrew Bastin
1b1c02ceaa chore: update README 2023-04-11 18:31:48 +05:30
Andrew Bastin
a8f0a8a253 chore: remove hoppscotch-web from self-hosted 2023-04-11 18:31:08 +05:30
Andrew Bastin
b68115d3b2 refactor: change user collections min title length to 1 2023-04-11 15:40:26 +05:30
Akash K
c353d60ddc refactor: refactor collection to not use mapper (#80) 2023-04-11 15:09:32 +05:30
Andrew Bastin
5d1337f15d chore: merge central/staging into self-hosted/main 2023-04-11 14:37:45 +05:30
Akash K
eeee8af806 chore: changes to support id based syncing for collections (#2977) 2023-04-11 14:30:01 +05:30
Andrew Bastin
61b9aca746 chore: update ci actions 2023-04-10 13:14:47 +05:30
Joel Jacob Stephen
c4358b91a2 fix: changed vite icon to hoppscotch icon and changed title in admin dashboard (#82) 2023-04-10 13:07:59 +05:30
Balu Babu
4ce9e67460 chore: added global lint and test commands to backend package (#81)
* chore: added global lint and test commands to backend package

* chore: removed lint command from root scope execution
2023-04-10 12:25:45 +05:30
Andrew Bastin
8e25598a78 chore: update CODEOWNERS file 2023-04-10 11:22:39 +05:30
Andrew Bastin
e88e6a7bcd chore: run vite and gql-codegen in parallel on selfhost-web dev mode 2023-04-09 22:52:02 +05:30
Andrew Bastin
971dfc4c14 chore: update CODEOWNERS to add selfhost-web and sh-admin 2023-04-09 22:32:59 +05:30
Andrew Bastin
9d9bf84c3f chore: set sh-admin and selfhost-web version to 2023.4.0 2023-04-09 22:29:23 +05:30
Andrew Bastin
f7e170865d chore: merge hoppscotch/staging into self-hosted/main 2023-04-09 21:58:58 +05:30
Andrew Bastin
134441a6e7 chore: update CODEOWNERS 2023-04-09 21:54:51 +05:30
Andrew Bastin
80a5d21576 chore: set web and common versions to 2023.4.0 and remove workspace package version specifiers 2023-04-09 21:42:25 +05:30
Akash K
45c84beb81 fix: environments being duplicated (#77) 2023-04-09 14:50:12 +05:30
Andrew Bastin
4a4ee19ba9 chore: merge hoppscotch/staging into self-hosted/main 2023-04-09 14:32:34 +05:30
Akash K
f1a812dae2 refactor: add optional ids to environments (#2974) 2023-04-09 14:30:42 +05:30
Joel Jacob Stephen
a4781d5882 refactor: load terms and privacy policy from env variables in dashboard login page (#79) 2023-04-08 16:51:48 +05:30
Nivedin
0dba28c388 chore: admin-dashboard team page UI polish (#75) 2023-04-08 16:48:33 +05:30
Joel Jacob Stephen
67f7e6a6d2 fix: dashboard auth redirection and magic link login issues (#76)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-04-08 15:22:39 +05:30
Balu Babu
7668be50ae chore: added orderBy field to query to fetch childCollectionList 2023-04-08 05:56:08 +05:30
Ankit Sridhar
100664f77e fix: refactor related to checklist observation (#73)
* refactor: removed unused files, dependencies and added valid callback URL

* chore: update env example

* test: fixed issue with subscription on deleteUserCollection in UserCollection module

* test: fixed time related issue with auth service methods

* chore: removed unused dependencies in auth.service file

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
Co-authored-by: Balu Babu <balub997@gmail.com>
2023-04-07 22:22:41 +05:30
Joel Jacob Stephen
e54f837b83 fix: admin dashboard bugs (#74) 2023-04-07 03:23:55 +05:30
Akash K
a33337ae0c fix: handle user/not_found response from backend (#72) 2023-04-07 03:19:18 +05:30
Andrew Bastin
13aa456c3c chore: merge hoppscotch/staging into self-hosted/main 2023-04-07 03:16:27 +05:30
Anwarul Islam
65a194a6d2 fix: shortcode data do not fetch or render (#2972) 2023-04-07 03:11:07 +05:30
Anwarul Islam
55e3dd3c18 fix: reset save context issue on delete collection or folder of team (#2971) 2023-04-07 03:06:30 +05:30
Nivedin
b88f496f4e fix: team environment bug when logout (#2970) 2023-04-07 03:00:30 +05:30
Mir Arif Hasan
696cf8490b refactor: removing unused import, commented codes, improved cursor query (#69)
* chore: refactor code in some modules

* refactor: getTeamsOfUser functino

* chore: remove unused import

* chore: revert some changes
2023-04-06 19:54:10 +05:30
Mir Arif Hasan
ffc08227dd fix: all unit test cases for backend modules (HBE-171) (#51)
* fix: if-condition for getCollectionOfRequest func

* fix: all test cases for team request module

* fix: user collection test case

* fix: team module test case

* refactor: updated test description for last implemented changes in admin and removed commented code

---------

Co-authored-by: ankitsridhar16 <ankit.sridhar16@gmail.com>
2023-04-06 19:53:04 +05:30
Mir Arif Hasan
6cb3a2de43 feat: removed unused dockerfile (#71)
* feat: removed unused dockerfile

* chore: update env example

* chore: env example update
2023-04-06 19:04:44 +05:30
Akash K
47543e46f2 chore: disable export as secret gist in selfhosted (#68) 2023-04-06 15:39:31 +05:30
Andrew Bastin
abd7b4f0f4 chore: merge hoppscotch/staging into self-hosted/main 2023-04-06 15:25:36 +05:30
Anwarul Islam
8caf9f110b feat: added scrollbar for tabs (#2969) 2023-04-06 15:20:16 +05:30
Akash K
1370b53726 chore: enable/disable features in platforms (#2968) 2023-04-06 15:06:33 +05:30
Balu Babu
2435436580 chore: changes origins to view whitelisted origins in backend (#70) 2023-04-06 14:04:04 +05:30
Balu Babu
22aa8ee334 hotfix: magiclink dynamic email redirection url (#67)
* chore: modified magiclink /signin function to work with origin

* chore: modified testcases for signInMagicLink to reflect new changes

* chore: removed prisma migration file

* chore: removed admin module dulicate from guards folder

* chore: implemented ENUMs for origins in signin method

* chore: added VITE_ADMIN_URL to .env.example file
2023-04-06 12:11:01 +06:00
Ankit Sridhar
6d688ed2bc refactor: removing unused env variables from env example (#66) 2023-04-05 21:53:27 +05:30
Andrew Bastin
46e204165d chore: merge hoppscotch/staging into self-hosted/main 2023-04-05 21:49:59 +05:30
Nivedin
8590a9a110 fix: reordering last request bug and its UX (#2967)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-04-05 21:35:14 +05:30
Anwarul Islam
62058d5dfe fix: tabhead and scrolling issue (#2966)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-04-05 21:26:42 +05:30
Andrew Bastin
9bfb965e63 chore: merge hoppscotch/staging into self-hosted/main 2023-04-05 16:37:44 +05:30
Nivedin
1d397af674 fix: move collection and request to bottom of list (#2964) 2023-04-05 15:38:57 +05:30
Nivedin
141a468808 chore: update header UI (#2965) 2023-04-05 15:30:47 +05:30
Andrew Bastin
47bfef958b chore: merge hoppscotch/staging into self-hosted/main 2023-04-04 21:12:21 +05:30
Akash K
a24d724e2b chore: load terms of service & privacy policy links from env variables (#2963) 2023-04-04 20:59:31 +05:30
Anwarul Islam
dd72eacd21 fix: no page rendering issue after navigating from rest page (#2962) 2023-04-04 20:48:32 +05:30
Joel Jacob Stephen
e27dc1f7a2 refactor: polishing of admin dashboard teams module (#64)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-04-04 13:48:02 +05:30
Akash K
ea847d7d32 chore: remove unwanted logs & use new gql generation for selfhosted-web (#65) 2023-04-04 04:18:29 +05:30
Andrew Bastin
87be0ef073 chore: merge hoppscotch/staging into self-hosted/main 2023-04-04 04:11:58 +05:30
Akash K
c3c3fc6720 chore: use IDs instead of Strings in graphql queries (#2961) 2023-04-04 04:10:32 +05:30
Ankit Sridhar
8bdb9a657f feat: self host packaging (HBE-166) (#41)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-04-04 03:17:18 +05:30
Andrew Bastin
71e1ada641 chore: merge hoppscotch/staging into self-hosted/main 2023-04-04 02:17:29 +05:30
Akash K
37a3b72025 chore: move analytics to platform (#2960) 2023-04-04 02:15:20 +05:30
Akash K
c49573db65 fix: serialize user sessions properly (#62)
* fix: cast prisma user object to user object

* chore: improved consistency

* chore: cast function renamed

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-04-03 09:47:40 +05:30
Akash K
97c3e6089d feat: implement tabs syncing to selfhost-web (#63) 2023-04-01 18:46:54 +05:30
Akash K
8586ced3cc feat: implement user history syncing for selfhost (#60) 2023-04-01 18:24:58 +05:30
Akash K
2b44ede92b feat: implement user settings syncing for selfhost (#59) 2023-04-01 17:42:11 +05:30
Akash K
86a12e2d28 feat: implement collections syncing for selfhosted (#42) 2023-04-01 17:22:42 +05:30
Andrew Bastin
9d7509b4dd chore: merge hoppscotch/staging into self-hosted/main 2023-03-31 01:07:56 +05:30
Anwarul Islam
defece95fc feat: rest revamp (#2918)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Nivedin <53208152+nivedin@users.noreply.github.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-03-31 00:45:42 +05:30
Andrew Bastin
7b78d99ac4 chore: merge hoppscotch/staging into self-hosted/main 2023-03-30 15:14:59 +05:30
Akash K
dbb45e7253 chore: add removeDuplicateEntry dispatcher to history store (#2955) 2023-03-30 15:13:25 +05:30
Akash K
7286d3b94f feat: add reqType to userHistoryDeletedMany subscription (#61) 2023-03-30 12:17:00 +05:30
Akash K
cc802b1e9f chore: move history firebase things to hoppscotch-web (#2954) 2023-03-30 00:09:08 +05:30
Akash K
a66a2f5645 chore: move settings firebase things to platform (#2953) 2023-03-29 23:59:28 +05:30
Nivedin
885c0dc500 fix: sh-admin dashboard bugs and UI polish (#56) 2023-03-29 23:49:34 +05:30
Andrew Bastin
b826b53cee chore: merge hoppscotch/staging into self-hosted/main 2023-03-29 21:03:52 +05:30
Balu Babu
ea93162056 refactor: modifed return types of mutation/subscriptions in UserCollections (#57)
* refactor: modifed userCollectionRemoved subscription to return custom return type

* chore: created new return type for export to JSON mutation in UserCollection

* refactor: added reqType to exportUserCollectionsToJSON query

* chore: remove duplicate enum in user-collection.model.ts file
2023-03-29 15:50:48 +05:30
Akash K
39afeab5f8 refactor: make editFolder, editCollection take Partial collection as parameter (#2952) 2023-03-29 12:00:20 +05:30
Nivedin
b6950332ad refactor: sh admin login polish (#58) 2023-03-28 23:33:50 +05:30
Mir Arif Hasan
ccdce37f88 fix: enum type fixes in SDL (HBE-183) (#55)
* fix: added reqType typed in sdl

* fix: updateUserSession type
2023-03-28 17:46:41 +06:00
Ankit Sridhar
9d6a7f709c feat: introducing get team info by id in admin module as a query (HBE-182) (#54)
* feat: introducing get team info by id in admin module as a query

* chore: adding resolve field for admin

* chore: remove nullable false

* refactor: rename getTeamInfo to teamInfo

* refactor: make myRole nullable
2023-03-28 15:35:38 +05:30
Mir Arif Hasan
96a4125f15 feat: rate-limit annotation added in admin resolver (#53) 2023-03-24 15:21:46 +05:30
Ankit Sridhar
b16e90c10d fix: check for admin users when removing user as admin (HBE-180) (#52)
* fix: check if admin users are there in infra when removing user as an admin

* fix: corrected the logic for length check

* chore: update error message

* chore: add new error message
2023-03-24 15:21:23 +05:30
Joel Jacob Stephen
5164315243 fix: modified graphql files in dashboard users and teams module to match resolver changes (#50)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-03-22 18:19:37 +05:30
Balu Babu
3df0492275 refactor: removing Redis from pubsub in sh-backend (HBE-178) (#49)
* chore: removed production env check and redis as pubsub provider in pubsub module

* chore: removed pnpm-lock.yaml file from backend

* chore: removed migrations folder from prisma

* chore: removed RedisPubSub from pubsub service file and changed signature of asyncIterator method
2023-03-21 16:46:54 +05:30
Mir Arif Hasan
fa8ca0569d feat: introducing rate-limiting on queries, mutations and most of the REST endpoints (HBE-111) (#46)
* feat: rate-limiting guard added and configured in app module

* feat: rate-limit annotation added in controllers and resolvers (query, mutation, not subscription)

* docs: added comments
2023-03-21 16:45:50 +05:30
Ankit Sridhar
f78354a377 feat: Introducing Admin Module to Backend (HBE-83) (#21)
* feat: introducing admin module, resolvers and service files as a module

* feat: adding admin module in the app module

* feat: introducing admin guard and decorator for allowing admin operations

* feat: invited user model

* chore: added user invitation mail description to mailer service

* chore: added admin and user related error

* feat: added invited users as a new model in prisma

* chore: added admin related topics to pubsub

* chore: added service method to fetch all users from user table

* chore: added user deletion base implementation

* Revert "chore: added user deletion base implementation"

This reverts commit d1615ad83db2bae946e2d366a903d2f95051dabb.

* feat: adding team related operations to admin

* chore: adding admin related service methods to teams module service

* chore: adding admin related service methods to team coll invitations requests envs

* chore: added more module error messages

* chore: added admin check service method

* chore: added find individual user by UID in admin

* HBE-106 feat: introduced code to handle first time admin login setup (#23)

* test: wrote test cases for verifyAdmin route service method

* chore: added comments to verifyAdmin service method

* chore: deleted the prisma migration file

* chore: added find admin users

* feat: added user deletion into admin module

* chore: admin user related errors

* chore: fixed registry pattern in the shortcodes and teams to handle user deletion

* chore: add subscription topic for user deletion

* chore: updated user type in data handler

* feat: implement and fix user deletion

* feat: added make user admin mutation

* chore: added unit tests for admin specific service methods in admin module

* chore: added invitation not found error

* chore: added admin specific operation test cases in specific modules

* chore: added tests related to user deletion and admin related operation in user module

* chore: updated to error constant when invitations not found

* chore: fix rebase overwritten methods

* feat: implement remove user as admin

* chore: add new line

* feat: introducing basic metrics into the self-hosted admin module (HBE-104) (#43)

* feat: introducing admin module, resolvers and service files as a module

* feat: adding admin module in the app module

* feat: introducing admin guard and decorator for allowing admin operations

* feat: invited user model

* chore: added user invitation mail description to mailer service

* chore: added admin and user related error

* feat: added invited users as a new model in prisma

* chore: added admin related topics to pubsub

* chore: added service method to fetch all users from user table

* chore: added user deletion base implementation

* Revert "chore: added user deletion base implementation"

This reverts commit d1615ad83db2bae946e2d366a903d2f95051dabb.

* feat: adding team related operations to admin

* chore: adding admin related service methods to teams module service

* chore: adding admin related service methods to team coll invitations requests envs

* chore: added more module error messages

* chore: added admin check service method

* chore: added find individual user by UID in admin

* HBE-106 feat: introduced code to handle first time admin login setup (#23)

* test: wrote test cases for verifyAdmin route service method

* chore: added comments to verifyAdmin service method

* chore: deleted the prisma migration file

* chore: added find admin users

* feat: added user deletion into admin module

* chore: admin user related errors

* chore: fixed registry pattern in the shortcodes and teams to handle user deletion

* chore: add subscription topic for user deletion

* chore: updated user type in data handler

* feat: implement and fix user deletion

* feat: added make user admin mutation

* chore: added unit tests for admin specific service methods in admin module

* chore: added invitation not found error

* chore: added admin specific operation test cases in specific modules

* chore: added tests related to user deletion and admin related operation in user module

* chore: updated to error constant when invitations not found

* chore: fix rebase overwritten methods

* feat: implement remove user as admin

* chore: add new line

* chore: created new GQL return type for admin module

* chore: created resolver and service method for method to fetch org metrics

* chore: removed all entities relevant to seperate query for fetching admin metrics

* chore: created all resolvers for metrics

* feat: completed adding field resolves to query org metrics

* test: wrote tests for all metrics related methods in admin module

* test: added test cases for get count functions in multiple modules

* chore: removed prisma migration folder

* Delete backend-schema.gql

* chore: resolved merge conflicts in team test file

---------

Co-authored-by: ankitsridhar16 <ankit.sridhar16@gmail.com>

* refactor: update mailer service to stop using postmark (#38)

* refactor: update mailer service to stop using postmark

* chore: remove postmark as a dep and move out postmark code

* chore: remove postmark variables from .env.example

* chore: add formal errors for mailer initialization errors

* chore: add and update jsdoc comments in mailer service methods

* chore: added user invitation mail description to mailer service

* chore: updated with review changes requested for admin module

* feat: adding admin resolver to gql schema

* feat: adding input args for admin resolvers

* chore: invited user renamed

* chore: updated mailer service to be compatible with new mailer

* chore: updated team service with review changes

* chore: updated team collection service with review changes

* chore: updated team environments service with review changes

* chore: updated team requests service with review changes

* chore: updated user service with review changes

* refactor: invited user model

* chore: review changes implemented

* chore: implemented the review changes for admin, user and teams module

* chore: removed error handling and implemented review changes

* refactor: naming change for IsAdmin

---------

Co-authored-by: Balu Babu <balub997@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-03-21 16:42:30 +05:30
Anwarul Islam
8b1d8e6a90 feat: introducing team (HBE-86) (#36) 2023-03-21 16:05:01 +05:30
Andrew Bastin
2244fb0523 chore: add numberScalarMode for schema gen as well 2023-03-20 22:01:06 +05:30
Joel Jacob Stephen
c611b39f52 feat: introducing metrics to admin dashboard homepage (#47) 2023-03-20 19:26:03 +05:30
Joel Jacob Stephen
73a0255ae8 refactor: polish UI of admin dashboard users module (#48)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-03-20 19:18:03 +05:30
Andrew Bastin
e978541bf1 refactor: update mailer service to stop using postmark (#38)
* refactor: update mailer service to stop using postmark

* chore: remove postmark as a dep and move out postmark code

* chore: remove postmark variables from .env.example

* chore: add formal errors for mailer initialization errors

* chore: add and update jsdoc comments in mailer service methods
2023-03-15 14:02:55 +05:30
Andrew Bastin
ae77c60c53 chore: merge hoppscotch/staging into self-hosted/main 2023-03-15 11:32:08 +05:30
Balu Babu
b0d9a934d9 hotfix: fixing type errors in backend graphql layer (HBE-174) (#45)
* chore: added the nest graphql fix for making it use Int over Float

* chore: changed the type of cursor to Int in PaginationArgs

* chore: fixed description mismatch in rootUserCreation functions in UserCollection module

* chore: removed unused title type in UserRequest input-args

* fix: added ID scaler in user-request input type

* fix: added ID scaler in team-invitation and user-history

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-03-15 11:20:45 +05:30
Andrew Bastin
1583c86c78 chore: add dotenv as dev dependency to fix staging issues 2023-03-14 22:32:28 +05:30
Balu Babu
a779ba5c0e hotfix: adding dynamic redirection in self-host auth system (HBE-173) (#40)
* chore: completed base auth implementation with redirectUrl

* chore: completed base auth fix with redirect_uri

* chore: added whitelist based redirection

* chore: added a env variable for session secret in main.ts

* chore: removed migrations folder from prisma directory
2023-03-14 19:19:22 +05:30
Balu Babu
be46ed2686 refactor: adding JSON import/export functions to UserCollections module (HBE-169) (#37)
* feat: created exportUserCollectionsToJSON mutation for UserCollection module

* chore: added comments to export functions

* chore: added type and user ownership checking to creation methods

* chore: replaced request property with spread request object instead

* chore: completed all changes requested in inital review of PR

* chore: explicitly exporting request title in export function

* chore: explicitly exporting request title in export function

* chore: added codegen folder to gitignore

* chore: removed gql-code gen file from repo
2023-03-14 18:31:47 +05:30
Andrew Bastin
e5002b4ef3 chore: merge hoppscotch/staging into self-hosted/main 2023-03-14 14:18:11 +05:30
Akash K
1372681b87 refactor: store changes for collections (#2947) 2023-03-14 14:16:45 +05:30
Nivedin
2179ce6fff fix: reordering bugs and UX fixes (#2948) 2023-03-14 14:01:47 +05:30
Balu Babu
28dbaf317e chore: added the correct GQL return type to userRequestMoved subscription (#44) 2023-03-14 11:49:27 +05:30
Joel Jacob Stephen
753db25e4c refactor: remove of light mode from admin dashboard + added README, .env.example (#33) 2023-03-13 18:57:29 +05:30
Andrew Bastin
65719b560b feat: introduce gql schema sdl generation to the backend (#35)
* feat: introduce gql schema sdl generation to the backend

* chore: update gql-codegen consumers to get schema from generated sdl

* chore: hoppscotch-backend generates gql sdl on postinstall

* fix: add back missed part of generate-gql-sdl script

* chore: updated generate sdl script to hardcode whitelisted domains

* chore: add prisma generate on postinstall script

---------

Co-authored-by: ankitsridhar16 <ankit.sridhar16@gmail.com>
2023-03-13 18:52:50 +05:30
Andrew Bastin
44402ac6e1 chore: merge hoppscotch/hoppscotch/staging into hoppscotch/self-hosted/main 2023-03-13 17:12:16 +05:30
Akash K
7e1b26c6a9 chore: move collections sync system to platform (#2940) 2023-03-13 17:08:05 +05:30
Mir Arif Hasan
8550c92e37 feat: subscription return response updated for moveUserRequest (#39)
* feat: subscription return response updated for moveUserRequest

* feat: update test cases
2023-03-13 16:15:51 +05:30
Mir Arif Hasan
7d3b2c064a refactor: Refactoring of Team Request with Reordering (HBE-151) (#20)
* feat: createdOn, updatedOn added in team-request schema and updateTeamReq resolver refactored

* feat: resolver name changed for updateTeamRequest

* refactor: searchForTeamRequest resolver

* refactor: some functions refactored

* refactor: team-request service and subscriptions

* refactor: update GqlRequestTeamMemberGuard

* feat: team request reordering add

* feat: handle exception on update Team Request

* chore: change some return statement

* fix: change field name of MoveTeamRequestArgs

* feat: publish message update for reorder team req

* test: fix all the exists cases

* fix: add return statement

* test: add few functions test cases

* feat: made backward compatible

* fix: team-member guard for retrive user

* fix: few bugs

* chore: destructured parameters in service methods

* test: fix test cases

* feat: updateLookUpRequestOrder resolver added

* test: fix test cases

* chore: improved code consistency

* fix: feedback changes

* fix: main changes
2023-03-09 20:59:39 +06:00
Balu Babu
2a715d5348 refactor: refactoring Team-Collections with reordering in self-host (HBE-150) (#34)
* chore: removed firebase module as a dependency from team-collection module

* chore: modified team-collection resolver file to use input-args types

* chore: modified getTeamOfCollection service method and resolver

* chore: modified getParentOfCollection service method in team-collection module

* chore: modified getChildrenOfCollection service method in team-collection module

* chore: added new fields to TeamCollection model in prisma schema file

* chore: modified getCollection service method and resolver in team-collection module

* chore: modified createCollection service method and resolver in team-collection module

* chore: created cast helper function to resolve issue with creation mutation in team-collection

* chore: modified teamCollectionRemoved subscription return types

* chore: removed return types from subscriptions in team-collection module

* chore: removed all instances of getTeamCollections service method in team-collection module

* feat: added mutation to handle moving collections and supporting subscriptions

* feat: added mutation to re-ordering team-collection order

* chore: added teacher comments to both collection modules

* test: added test cases for getTeamOfCollection service method

* test: added test cases for getParentOfCollection service method

* test: added test cases for getChildrenOfCollection service method

* test: added test cases for getTeamRootCollections service method

* test: added test cases for getCollection service method

* test: added test cases for createCollection service method

* chore: renamed renameCollection to renameUserCollection in UserCollection module

* test: added test cases for renameCollection service method

* test: added test cases for deleteCollection service method

* test: added test cases for moveCollection service method

* test: added test cases for updateCollectionOrder service method

* chore: added import and export to JSON mutations to team-collection module

* chore: created replaceCollectionsWithJSON mutation in team-collection module

* chore: moved the mutation and service method of importCollectionFromFirestore to the end of file

* chore: added helper comments to all import,export functions

* chore: exportCollectionsToJSON service method orders collections and requests in ascending order

* chore: added test cases for importCollectionsFromJSON service method

* chore: added ToDo to write test cases for exportCollectionsToJSON

* chore: removed prisma migration folder

* chore: completed all changes requested in inital PR review

* chore: completed all changes requested in second  PR review

* chore: completed all changes requested in third PR review
2023-03-09 19:37:40 +05:30
Anwarul Islam
9b76d62753 feat: introducing Auth for admin dashboard (HBE-138) (#32) 2023-03-09 10:59:40 +05:30
Akash K
80898407c3 feat: implement environments for selfhosted (#30) 2023-03-08 16:47:29 +05:30
Andrew Bastin
40208a13e0 chore: merge central/staging into main. 2023-03-07 16:13:59 +05:30
Akash K
ae9b7183b5 refactor: optional variables to createEnvironment and fixing the order of initializing GqlClient (#2944) 2023-03-07 16:12:11 +05:30
Joel Jacob Stephen
90569192b7 feat: implementation of users module of the admin dashboard (#29)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-03-03 19:26:34 +05:30
Mir Arif Hasan
223150550f feat: user request module with re-ordering (HBE-78) (#11)
* feat: added user-request schema in prisma

* feat: basic mutation and queries implementation

* fix: enum registration in graphql

* feat: user resolver added for user requests

* chore: refactor codes

* feat: transaction added in request reordering operation

* feat: pubsub added in user request

* refactor: user request service

* chore: feedback added

* chore: code improvement

* fix: bug fix

* feat: request type update in schema and JSDoc added

* test: fetchUserRequests and fetchUserRequest unit test added

* chore: refactor two functions

* test: unit test added for more functions

* chore: code readability improved

* test: added unit test for reorderRequests function

* feat: subscriptions added

* fix: User reference to AuthUser

* fix: User to AuthUser in test file

* chore: update dto file extensions

* feat: relation added in schema level

* chore: add function for db to model type casting

* feat: filter with title and collectionID add in userRequest resolver

* feat: resolvers added for userCollection in request module, and move inputTypes in a single file

* test: test file updated

* docs: description updated

* feat: createdOn, updatedOn added in user request schema

* chore: (delete in future) user collection module add for testing purpose

* feat: separate resolvers for create, update, delete user request based on req type

* feat: used paginationArgs from common types

* fix: shift InputTypes to ArgsTypes

* docs: update docs

* feat: avoid destructuring

* test: fix test cases for create and update

* docs: update JS doc

* feat: separate object variables for moveRequest function

* test: fix test case for moveRequest function

* feat: saperate parameters for fetchUserRequest

* test: fix test cases for fetchUserRequests

* feat: update some query names and made review changes

* test: fix test cases

* feat: remove filtering with title

* test: fix text cases for fetchUserRequests func

* feat: update subscription key

* feat: edge case handled for user request creation

* test: fix test case

* fix: user field resolver

* fix: fetch user req issue

* fix: update with type check

* test: fix test cases

* feat: type checked on move request

* test: add test case for typeValidity check func

* fix: edge condition added in if statement

* fix: error message

* chore: removed user collection from this branch

* fix: typos
2023-03-03 16:51:49 +06:00
Balu Babu
80c6f600db hotfix: refresh token cookie migration (HBE-167) (#31)
* chore: removed signed cookies from refresh token strategy

* chore: removed signed cookies from refresh RTCookie decorator
2023-03-03 15:52:26 +05:30
Balu Babu
a938be3712 feat: Introducing user-collections into self-host (HBE-98) (#18)
* feat: team module added

* feat: teamEnvironment module added

* feat: teamCollection module added

* feat: team request module added

* feat: team invitation module added

* feat: selfhost auth frontend (#15)

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>

* feat: bringing shortcodes from central to selfhost

* chore: added review changes in resolver

* chore: commented out subscriptions

* chore: bump backend prettier version

* feat: created new user-collections module with base files

* feat: added new models for user-collection and user-request tables in schema.prisma file

* feat: mutations to create user-collections complete

* feat: added user field resolver for userCollections

* feat: added parent field resolver for userCollections

* feat: added child field resolver with pagination for userCollections

* feat: added query to fetch root user-collections with pagination for userCollections

* feat: added query to fetch user-collections for userCollections

* feat: added mutation to rename user-collections

* feat: added mutation to delete user-collections

* feat: added mutation to delete user-collections

* refactor: changed the way we fetch root and child user-collection counts for other operations

* feat: added mutation to move user-collections between root and other child collections

* refactor: abstracted orderIndex update logic into helpert function

* chore: mutation to update order root user-collections complete

* feat: user-collections order can be updated when moving it to the end of list

* feat: user-collections order update feature complete

* feat: subscriptions for user-collection module complete

* chore: removed all console.logs from user-collection.service file

* test: added tests for all field resolvers for user-collection module

* test: test cases for getUserCollection is complete

* test: test cases for getUserRootCollections is complete

* test: test cases for createUserCollection is complete

* test: test cases for renameCollection is complete

* test: test cases for moveUserCollection is complete

* test: test cases for updateUserCollectionOrder is complete

* chore: added createdOn and updatedOn fields to userCollections and userRequests schema

* chore: created function to check if title are of valid size

* refactor: simplified user-collection creation code

* chore: made changed requested in initial PR review

* chore: added requestType enum to user-collections

* refactor: created two seperate queries to fetch root REST or GQL queries

* chore: created seperate mutations and queries for REST and GQL root/child collections

* chore: migrated all input args classess into a single file

* chore: modified createUserCollection service method to work with different creation inputs args type

* chore: rewrote all test cases for user-collections service methods with new CollType

* fix: added updated and deleted subscription changes

* fix: made all the changes requested in the initial PR review

* fix: made all the changes requested in the second PR review

* chore: removed migrations from prisma directory

* fix: made all the changes requested in the third PR review

* chore: added collection type checking to updateUserCollectionOrder service method

* chore: refactored all test cases to reflect new additions to service methods

* chore: fixed issues with pnpm-lock

* chore: removed migrations from prisma directory

* chore: hopefully fixed pnpm-lock issues

* chore: removed console logs in auth controller

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
Co-authored-by: Akash K <57758277+amk-dev@users.noreply.github.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: ankitsridhar16 <ankit.sridhar16@gmail.com>
2023-03-03 15:03:05 +05:30
Andrew Bastin
31c6b0664f chore: merge hoppscotch/hoppscotch/staging into main 2023-03-02 18:55:55 +05:30
Akash K
3fa4052538 chore: move environments firebase things to hoppscotch-web (#2939) 2023-03-02 18:50:13 +05:30
Ankit Sridhar
1780f3858d fix : User history fix for returning most recently executed 50 user history REST/GraphQL items (HBE-165) (#27)
* chore: updated fetchUserHistory operation to return recently executed 50 entries

* chore: updated history to use PaginationArgs for operation

* chore: updated GraphQL resolver name
2023-03-02 14:56:50 +05:30
Liyas Thomas
f2de0dc673 chore: minor ui improvements 2023-02-28 16:25:46 +05:30
Mir Arif Hasan
5eb85fd99c fix: cleaning deprecated resolvers on Team Module (HBE-157) (#25)
* fix: retrive user object from gql-team-member-guard

* feat: removed addTeamMemberByEmail resolver
2023-02-28 14:22:00 +06:00
Joel Jacob Stephen
3f59597864 feat: introducing self hosted admin dashboard package (#12)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-02-28 13:13:27 +05:30
Balu Babu
2ba05a46ee HBE-164 refactor: subscriptions auth cookie fix (#26)
* chore: added error handling to cookie extraction logic for subscriptions

* chore: removed migration file from prisma directory
2023-02-27 19:32:33 +05:30
Ankit Sridhar
292ed87201 fix: added updated and deleted subscription changes (#24) 2023-02-27 19:03:48 +05:30
Nivedin
7e686a8882 feat: global workspace selector (#2922)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-02-24 23:20:02 +05:30
Nivedin
4ca6e9ec3a feat: added reordering and moving for collection (#2916) 2023-02-24 19:09:07 +05:30
Liyas Thomas
bd5f95b1c5 chore: replace material-icons with lucide-icons 2023-02-24 18:41:36 +05:30
Liyas Thomas
167dfc3847 chore: add fonts to ui package [skip ci] 2023-02-24 18:28:39 +05:30
Andrew Bastin
dcd441f15e fix: link not rendering and UI storybook build issues 2023-02-24 15:51:10 +05:30
Andrew Bastin
90c8fbeee4 fix: issues with ui histoire building and modal not having close button 2023-02-24 14:35:42 +05:30
Andrew Bastin
cae1840506 refactor: update hopp-ui to be independent (#2927)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-02-24 13:20:12 +05:30
Balu Babu
1860057a25 HBE-147 refactor: Introduce shortcodes into self-host refactored to pseudo-fp format (#22)
* refactor: refactor all queries,mutations and subscriptions for shortcode module

* test: rewrote test cases for shortcodes

* chore: modified shortcode error code

* chore: created helper function to do shortcode type conversion in service file

* chore: simplifed logic to fetch user shortcodes with cursor pagination

* chore: removed migrations file

* chore: removed unused imports in shortcodes module

* chore: modified generateUniqueShortCodeID function

* chore: modified generateUniqueShortCodeID function

* chore: changed jwtService to use verify instead of decode

* docs: added teacher comments to all shortcodes service methods

* chore: removed stale test cases from shortcode modules
2023-02-22 17:40:53 +05:30
Jesvin Jose
82c6f6f6bc fix: response time for requests via extension has incorrect value (#2921)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-02-17 19:14:50 +05:30
Andrew Bastin
2545262fc2 chore: improve DispatchingStore typings for dispatch streams 2023-02-17 16:04:29 +05:30
Mir Arif Hasan
24dd535d9e HBE-155 Common input-args for Pagination (#19)
* feat: common input-args added

* chore: move common input-types.args.ts into types folder

* fix: add gql InputType annotation

* docs: update field description
2023-02-16 11:58:07 +06:00
Andrew Bastin
b27fe871c4 refactor: improve type checking for DispatchingStore dispatch payloads 2023-02-14 14:17:00 +05:30
Andrew Bastin
cb5fff0310 fix: graphql collections not syncing on login 2023-02-14 10:29:43 +05:30
Mir Arif Hasan
b60d45ba76 HBE 145 - fixes cookie parse issue (#17)
* feat: handled cookie parsing

* chore: enum added

* chore: enum name updated
2023-02-10 12:39:04 +06:00
Andrew Bastin
7336a3d9c7 chore: bump backend prettier version 2023-02-09 18:05:41 +05:30
ankitsridhar16
c7829201e1 chore: commented out subscriptions 2023-02-09 17:31:54 +05:30
ankitsridhar16
63b6c76f51 chore: added review changes in resolver 2023-02-09 17:31:54 +05:30
ankitsridhar16
056a5df4e1 feat: bringing shortcodes from central to selfhost 2023-02-09 17:31:54 +05:30
Akash K
757d1add5b feat: selfhost auth frontend (#15)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-02-09 01:12:44 +05:30
Andrew Bastin
3cf3feb2ae chore: updated dockerfile to install deps less 2023-02-08 22:50:37 +05:30
Mir Arif Hasan
46579900cd feat: team invitation module added 2023-02-08 20:21:51 +06:00
Mir Arif Hasan
2d4a5a30f7 test: instance create error commenting mockFB 2023-02-08 20:21:51 +06:00
Mir Arif Hasan
2ed5a045de feat: team request module added 2023-02-08 20:21:51 +06:00
Mir Arif Hasan
4b42496273 feat: teamCollection module added 2023-02-08 20:21:51 +06:00
Mir Arif Hasan
c5d8a446ae feat: teamEnvironment module added 2023-02-08 20:21:51 +06:00
Mir Arif Hasan
9bee62ada9 feat: team module added 2023-02-08 20:21:51 +06:00
Liyas Thomas
d15caba4a6 chore: improve ui responsiveness 2023-02-08 18:57:52 +05:30
Liyas Thomas
536c8128dd docs: update package description [skip ci] 2023-02-08 18:50:32 +05:30
Andrew Bastin
420359066e Merge remote-tracking branch 'central/main' 2023-02-08 18:43:40 +05:30
Andrew Bastin
99918ee0c0 chore: prettier version bump and related fixes 2023-02-08 18:35:27 +05:30
Balu Babu
480e9ea3ec Merge pull request #13 from hoppscotch/hotfix/subscriptions
Hotfix: fix subscription cookie issue
2023-02-08 16:46:49 +05:30
Balu Babu
2ee4029e04 chore: removed migrations in prisma 2023-02-08 15:50:02 +05:30
Balu Babu
edd186bdfe chore: changed const names in subscriptionContextCookieParser 2023-02-08 15:48:40 +05:30
Liyas Thomas
864d40d934 chore: improved theme colors 2023-02-08 15:13:24 +05:30
Balu Babu
856752db21 chore: added env_file property to SH-backend docker-compose file 2023-02-08 14:41:05 +05:30
Balu Babu
7fde6db9d1 refactor: changed onConnect function in subscriptionHandler to decode cookies for subscriptions 2023-02-08 14:36:01 +05:30
Balu Babu
0aac046a0e refactor: changed context to contain just req,res and connection objects for GraphQLModule 2023-02-08 14:27:24 +05:30
Balu Babu
1ad11adb94 chore: remved signed flag from cookie setter in auth/helper.ts 2023-02-08 14:25:05 +05:30
Balu Babu
505adea0ef chore: changed jwt stratergy to use cookies instead of signedCookies 2023-02-08 14:24:16 +05:30
Balu Babu
9c64721bf0 refactor: refactored gql-user-decorator to work for subscriptions 2023-02-08 14:23:27 +05:30
Balu Babu
965fdad8b1 refactor: refactored gql-auth-guard to work for websocket based subscriptions 2023-02-08 14:20:51 +05:30
Balu Babu
a6d6589811 chore: removed SIGNED_COOKIE_SECRET from cookieParser in main.ts and .env.example files 2023-02-08 14:18:39 +05:30
Jesvin Jose
a227af05d9 feat: active tab no longer resets after request (#2917)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Closes https://github.com/hoppscotch/hoppscotch/issues/2080
2023-02-08 10:29:18 +05:30
amk-dev
3b7a16c439 Merge remote-tracking branch 'hoppscotch/hoppscotch/main' 2023-02-07 19:49:35 +05:30
Andrew Bastin
ce0898956d chore: reintroduce updated auth mechanism 2023-02-07 19:21:06 +05:30
Jesvin Jose
cd72851289 refactor: cli updates (#2907)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-02-07 17:47:54 +05:30
Balu Babu
6711d752e2 Merge pull request #9 from hoppscotch/feat/user-authentication
feat: introduce custom user authentication module
2023-02-02 19:09:47 +05:30
Balu Babu
65472bed54 test: fixed date issue in user-history test 2023-02-02 19:09:26 +05:30
Balu Babu
a188ad68ed Merge branch 'main' into feat/user-authentication 2023-02-02 18:54:45 +05:30
Andrew Bastin
bb01afeb99 fix: jest crashing out on tests 2023-02-02 13:39:54 +05:30
Balu Babu
a1be3a3e77 chore: added nestjs version into auth module 2023-02-01 19:19:39 +05:30
Balu Babu
b5e7877912 chore: moved auth utility functions to auth/helper.ts from src/utils.ts 2023-02-01 18:47:11 +05:30
Balu Babu
587e7118c9 chore: added versioning to auth rest module 2023-02-01 18:36:03 +05:30
Balu Babu
8c5ffb88a3 fix: changed user type to AuthUser in user-settings resolver 2023-02-01 18:24:18 +05:30
Balu Babu
2a00f41ef8 test: refactored all test cases with new user type change 2023-02-01 17:52:33 +05:30
Nivedin
f676f94278 fix: graphql save request emit payload (#2913) 2023-02-01 15:20:13 +05:30
Balu Babu
4ca762344c chore: captialized DTO names 2023-02-01 14:58:31 +05:30
Balu Babu
5c5ab5bad5 fix: changed all refrences to passwordlessVerification to verificationTokens in auth module 2023-02-01 11:58:15 +05:30
Liyas Thomas
cd6e40f01c chore: uniform ui in rest and graphql collections 2023-01-31 22:39:24 +05:30
Nivedin
59a8a22e8a fix: search on collections > empty state ui (#2912)
fix: collection search filter ui
2023-01-31 22:33:10 +05:30
Nivedin
2910164d5a feat : smart tree component (#2865)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-01-31 17:15:03 +05:30
Balu Babu
3afc89db6b fix: fixed all issues raised in initial PR review 2023-01-30 18:55:53 +05:30
Andrew Bastin
bfc45993f8 Merge remote-tracking branch 'central/main' 2023-01-30 18:06:19 +05:30
Liyas Thomas
b95e2b365a fix: broken environment highlight color 2023-01-30 10:01:33 +05:30
Balu Babu
a8d50223aa refactor: changed auth module to work with signed cookies 2023-01-30 06:31:10 +05:30
Liyas Thomas
73e788b513 chore: fix broken RouterLink component 2023-01-28 09:49:14 +05:30
Petro S
15d135c11b chore: fixed i18n grammatical errors (#2908) 2023-01-28 08:44:31 +05:30
Anwarul Islam
0fcda0be1a refactor: hoppscotch ui (#2887)
* feat: hopp ui initialized

* feat: button components added

* feat: windi css integration

* chore: package removed from hopp ui

* feat: storybook added

* feat: move all smart components hoppscotch-ui

* fix: import issue from components/smart

* fix: env input component import

* feat: add hoppui to windicss config

* fix: remove storybook

* feat: move components from hoppscotch-ui

* feat: storybook added

* feat: storybook progress

* feat: themeing storybook

* feat: add stories

* chore: package updated

* chore: stories added

* feat: stories added

* feat: stories added

* feat: icons resolved

* feat: i18n composable resolved

* feat: histoire added

* chore: resolved prettier issue

* feat: radio story added

* feat: story added for all components

* feat: new components added to stories

* fix: resolved issues

* feat: readme.md added

* feat: context/provider added

* chore: removed app component registry

* chore: remove importing of all components in hopp-ui to allow code splitting

* chore: fix vite config errors

* chore: jsdoc added

* chore: any replaced with smart-item

* chore: i18n added to ui components

* chore: clean up - removed a duplicate button

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-01-28 08:27:00 +05:30
Balu Babu
1bbcd638b8 chore: converted hardcoded whitelisted domains in GQL module to use env variables 2023-01-27 13:42:28 +05:30
Balu Babu
fe73750d66 fix: fixed the user type error in auth.service file 2023-01-27 13:38:36 +05:30
Balu Babu
ca4c576f78 chore: resolved all merge conflicts 2023-01-24 19:35:40 +05:30
Ankit Sridhar
648637a1a1 Merge pull request #8 from hoppscotch/feat/user-session
feat: introducing current session of rest and gql (backend)
2023-01-24 17:09:30 +05:30
Mir Arif Hasan
91adf379da chore: removed redundant comment 2023-01-24 17:27:40 +06:00
Mir Arif Hasan
08ca57cba2 feat: user session resolver added for sessions updates 2023-01-24 17:19:24 +06:00
Mir Arif Hasan
e6fcb1272a Merge branch 'main' into feat/user-session 2023-01-24 15:40:19 +06:00
Mir Arif Hasan
60a5acdb9d fix: typo 2023-01-24 15:28:27 +06:00
Mir Arif Hasan
2221261ec2 fix: typo 2023-01-24 15:27:03 +06:00
Mir Arif Hasan
6627514e88 chore: pulled from main 2023-01-24 15:24:11 +06:00
Mir Arif Hasan
d7b02da719 test: more test case added for user module 2023-01-24 15:12:30 +06:00
Mir Arif Hasan
ebbe015bbc feat: db schema update from string to json column type 2023-01-24 15:10:54 +06:00
Balu Babu
e03a92f8d8 Merge pull request #7 from hoppscotch/feat/user-history
feat: introduce user history in self hosted
2023-01-24 13:05:43 +05:30
ankitsridhar16
7d98c1b355 Merge remote-tracking branch 'origin/main' into feat/user-history
# Conflicts:
#	packages/hoppscotch-backend/prisma/schema.prisma
2023-01-24 13:04:19 +05:30
ankitsridhar16
e78040a376 refactor: removed migrations 2023-01-24 13:00:34 +05:30
ankitsridhar16
97eedb568c refactor: added fetchUserHistoryByID method and added changes for spread 2023-01-24 12:53:44 +05:30
Balu Babu
161f1db40e Merge pull request #5 from hoppscotch/feat/user-settings
feat: introducing user-settings in self-hosted (backend)
2023-01-24 12:30:50 +05:30
Mir Arif Hasan
b50b97a4d1 chore: removed seed cmd form package.json 2023-01-24 12:50:31 +06:00
Mir Arif Hasan
e8e176ed40 fix: removed seed scripts 2023-01-24 12:49:22 +06:00
Mir Arif Hasan
bc82e9c7fa feat: user settings create subscription added and fixed typos 2023-01-24 07:26:47 +06:00
Balu Babu
73ace77305 refactor: changed the test cases to reflect change to UserHistory schema 2023-01-24 02:02:17 +05:30
Balu Babu
4023dcf09d chore: changed the return data to use spread operator 2023-01-24 00:40:14 +05:30
ankitsridhar16
ebf236b387 chore: added changes to creating a history in resolvers and service method 2023-01-23 22:51:37 +05:30
Mir Arif Hasan
e40d77420c chore: comment text updated 2023-01-23 21:54:19 +06:00
Mir Arif Hasan
27b9f57d7a test: pubsub test case added on user settings create 2023-01-23 21:51:46 +06:00
Mir Arif Hasan
3cd9639f34 test: feedback updated on test script 2023-01-23 21:32:00 +06:00
ankitsridhar16
a5a14f6c76 chore: applied review changes for resolvers 2023-01-23 20:21:44 +05:30
Mir Arif Hasan
bfac3f8ad0 feat: db column update from settings to properties 2023-01-23 20:25:48 +06:00
Mir Arif Hasan
dcadbac4d5 docs: update mutation description 2023-01-23 16:33:48 +06:00
ankitsridhar16
626d703d77 refactor: updated test cases to split subscription 2023-01-23 15:23:53 +05:30
ankitsridhar16
25b7ef3d2e refactor: updated pubsub publishing to leverage new topic defs and rewrote map logic 2023-01-23 15:23:02 +05:30
ankitsridhar16
d812e6ab96 refactor: user history resolver changes 2023-01-23 15:06:01 +05:30
ankitsridhar16
74e4a77ce6 chore: added topics for user history subscriptions 2023-01-23 15:04:05 +05:30
ankitsridhar16
863e1ee113 fix: fixed merge related conflicting data 2023-01-23 15:03:03 +05:30
Mir Arif Hasan
33e4a15830 feat: used new pubsub method to publish 2023-01-23 15:28:55 +06:00
Mir Arif Hasan
bf09786423 feat: used new pubsub method and resolve conflicts 2023-01-23 15:11:52 +06:00
ankitsridhar16
f7070dd3f7 Merge remote-tracking branch 'origin/main' into feat/user-history
# Conflicts:
#	packages/hoppscotch-backend/prisma/schema.prisma
#	packages/hoppscotch-backend/src/app.module.ts
2023-01-23 13:22:12 +05:30
ankitsridhar16
523c650c9d chore: updated primsa type for executed on 2023-01-23 13:13:19 +05:30
Ankit Sridhar
469d408b09 Merge pull request #10 from hoppscotch/refactor/subscriptionHandler
HBE-85 - Refactor SubscriptionHandler
2023-01-23 11:55:14 +05:30
ankitsridhar16
cb1b13bdb4 chore: updated filename to topicDefs 2023-01-23 11:49:41 +05:30
ankitsridhar16
480a34c0f7 fix: updated resolver pubsub topic name 2023-01-23 09:54:20 +05:30
Balu Babu
93479320ee chore: added teacher comments to all service methods 2023-01-23 06:04:23 +05:30
Balu Babu
b2acd5511c chore: user displayName and photoURL property updates itself when found with SSO providers 2023-01-23 05:31:03 +05:30
Balu Babu
96ed2f2119 test: wrote tests for auth service file 2023-01-23 05:07:59 +05:30
ankitsridhar16
606e0120ee chore: removed the logic for primitiveTypes as it is unused 2023-01-20 16:13:35 +05:30
ankitsridhar16
6da85fd286 chore: updated types to def and changed deleted many as a new indexed type 2023-01-20 16:12:45 +05:30
ankitsridhar16
298b960ef7 chore: removed comment 2023-01-20 15:18:04 +05:30
Balu Babu
ee3fbabece chore: updated .env.example file with new data 2023-01-20 15:00:54 +05:30
ankitsridhar16
0bed5cd99a chore: removed subscription handler related files 2023-01-20 14:57:47 +05:30
ankitsridhar16
bc55af27a7 chore: updated user environment to use PubSub instead of SubscriptionHandler 2023-01-20 14:56:28 +05:30
ankitsridhar16
a0006f73ac chore: added message types to PubSub Service 2023-01-20 14:55:26 +05:30
Balu Babu
f79070fe60 test: wrote tests for user service file 2023-01-20 11:56:33 +05:30
Balu Babu
b238f3d060 fix: fixed magic-link account creation bug 2023-01-20 07:59:52 +05:30
Balu Babu
a6ad86bd59 chore: replaced hardcoded values with env variables in app.module.ts, main.ts and utils.ts 2023-01-20 07:56:19 +05:30
Balu Babu
60e2ef7cda Merge pull request #3 from hoppscotch/feat/user-environments
feat: introduce user environments in self hosted
2023-01-20 05:01:41 +05:30
Balu Babu
cde0ba11fa fix: changed the return type of delete many subscription to number from user-environment type 2023-01-20 04:55:35 +05:30
Balu Babu
da9fcd1087 refactor: changed the return type of deleteUserEnvironments method to number from void 2023-01-20 04:36:30 +05:30
Balu Babu
8929b37dbe fix: changed return type of deleteUserEnvironment mutation to boolean in user-environments resolver 2023-01-20 04:26:05 +05:30
Balu Babu
509604833e chore: cleaned unwanted imports in auth module 2023-01-20 00:04:01 +05:30
Mir Arif Hasan
08ac9680d7 fix: keeping timestamp without timezone 2023-01-19 17:11:32 +06:00
ankitsridhar16
ca5404a93b chore: updated ts config with review changes 2023-01-19 16:25:36 +05:30
ankitsridhar16
f6f4547af3 chore: introduced string to json from user-settings and moved types 2023-01-19 16:24:31 +05:30
ankitsridhar16
669f8b0431 chore: made review changes for resolvers and introduced stringToJson from user-settings 2023-01-19 16:22:49 +05:30
ankitsridhar16
86aa0251ab chore: made review changes 2023-01-19 16:21:05 +05:30
ankitsridhar16
2252048d2e chore: updated module type name 2023-01-19 16:20:12 +05:30
Balu Babu
53571a7d72 refactor: logout route now just returning 200 status code not redirecting to app_domain 2023-01-19 15:13:55 +05:30
ankitsridhar16
0a469f4ccf chore: introduced subscription handler and fixed requested review changes 2023-01-19 12:57:59 +05:30
ankitsridhar16
d10ed664bf chore: updated test cases with requested changes to handle publishing seperately 2023-01-19 12:56:41 +05:30
ankitsridhar16
4aad8d36a9 chore: updated comment for Subscription Type and updated JSDoc for publish 2023-01-19 12:53:40 +05:30
ankitsridhar16
3e9295f313 chore: added review changes for updating mutations and naming for descriptions 2023-01-19 12:50:20 +05:30
ankitsridhar16
6aa66e99b5 chore: added review changes for description 2023-01-19 12:48:25 +05:30
Balu Babu
c38ad89cd7 chore: made the required changes in auth and user modules to accommodate changes made in user schema 2023-01-19 05:53:23 +05:30
Balu Babu
8fdcc5dd50 chore: changed the names of properties for User in prisma and user.model 2023-01-19 05:19:47 +05:30
Balu Babu
364381f017 chore: changed the schema of database to only store timestamp without timezone info 2023-01-19 05:13:21 +05:30
Balu Babu
9433aa503b chore: removed duplicate me query in user module 2023-01-19 04:57:43 +05:30
Balu Babu
82dee95cd0 chore: added types to createProviderAccount ,ethod in auth.service file 2023-01-19 04:55:51 +05:30
Balu Babu
813db4a985 feat: added route to log users out 2023-01-19 04:34:35 +05:30
Balu Babu
c63bc28ca0 feat: microsoft SSO auth completed 2023-01-19 04:15:43 +05:30
ankitsridhar16
29e74a2c9e feat: added subscription handler as a provider for user environment module 2023-01-19 01:36:31 +05:30
ankitsridhar16
80fdc6005b chore: added comments to certain fields 2023-01-19 01:35:21 +05:30
ankitsridhar16
9e25aa1f9f feat: introducing new subscription handler interface and user defined/primitive types 2023-01-19 01:34:11 +05:30
ankitsridhar16
f58d5d28cf chore: added error messages and updated existing error messages 2023-01-19 01:31:38 +05:30
Balu Babu
81cb0d43d7 fix: added scope for github strategy in auth module 2023-01-18 22:34:15 +05:30
Andrew Bastin
9d7052c626 chore: add CODEOWNERS 2023-01-13 21:53:37 -05:00
Balu Babu
4edd0e0ab7 chore: added new github auth environment variables into .env.example 2023-01-13 02:50:52 +05:30
Balu Babu
a3d60d393b chore: removed rouge file called typescript from repo 2023-01-13 02:48:16 +05:30
Balu Babu
311ab67ebe feat: github login added 2023-01-13 02:11:42 +05:30
Balu Babu
1f581e7b51 chore: added logic to create and add google accoun to pre-existing user accounts 2023-01-13 01:48:25 +05:30
Balu Babu
5fe934110e fix: fixed the timestamp comparison login in verifyPasswordlessTokens route 2023-01-13 01:46:34 +05:30
Balu Babu
f4df8873be feat: google sso auth added 2023-01-13 00:52:29 +05:30
Balu Babu
6f4c5d7195 chore: created .env.example file to store env variables 2023-01-12 23:19:38 +05:30
Balu Babu
06f1c2fba2 refactor: refactored a few types around users and passwordless tokens in auth module 2023-01-12 21:31:25 +05:30
Balu Babu
36b32a1813 feat: /refresh route complete along with refresh token rotation 2023-01-11 19:29:33 +05:30
Balu Babu
d3a43cb65f chore: created and added new errors in jwt.strategy.ts file 2023-01-11 18:41:06 +05:30
Balu Babu
d98e7b9416 refactor: created utlility functions for setting cookies and handling redirects 2023-01-10 17:00:39 +05:30
Balu Babu
fc284fd0a2 feat: magic-link auth complete 2023-01-10 16:06:42 +05:30
Masaki Tagawa
5841d2eb66 chore(i18n): update i18n translations 2023-01-09 20:53:12 +05:30
Balu Babu
0c154be04e chore: manually committing auth module to remoter 2023-01-09 19:02:14 +05:30
Balu Babu
90bc0483ae fix: fixed improper imports in auth module 2023-01-09 18:56:40 +05:30
Balu Babu
32765b2d34 chore: created the route to initate magic link auth 2023-01-09 17:43:45 +05:30
Balu Babu
d9e80ebef9 feat: modified the prisma.schema file to add new tables for auth 2023-01-09 12:15:21 +05:30
Balu Babu
445102226e chore: created auth module and installed relevant base dependencies 2023-01-09 12:10:06 +05:30
Balu Babu
a6ce882511 feat: created the mailer module with postmark 2023-01-09 12:00:03 +05:30
Mir Arif Hasan
9d20c4c4a9 chore: updated variable names and comments 2023-01-05 15:52:43 +06:00
Mir Arif Hasan
e2d8ea0a70 refactor: error message updated 2023-01-05 15:38:18 +06:00
Mir Arif Hasan
b33d003ba5 feat: error message updated 2023-01-05 15:21:09 +06:00
tzhangm
ee07a90b5e chore: update i18n translations 2023-01-05 13:27:17 +05:30
Mir Arif Hasan
55f79507fe chore: updated seed file 2023-01-05 13:22:19 +06:00
5idereal
70d2f1e3d9 chore: update i18n translations (#2892) 2023-01-03 12:51:33 +05:30
Liyas Thomas
acafc072db chore: minor ui improvements 2022-12-29 11:10:16 +05:30
Anwarul Islam
51e40581b0 fix: login modal not visible in small screen 2022-12-26 01:40:55 +06:00
Mir Arif Hasan
a372cf0178 chore: addd seed for user-settings 2022-12-23 21:50:39 +06:00
Mir Arif Hasan
d863aa7aa6 chore: postinstall update in package.json 2022-12-23 13:14:57 +06:00
Mir Arif Hasan
b31e54b3e5 feat: user-settings schema update and relative service file modified 2022-12-23 13:13:21 +06:00
Mir Arif Hasan
9b5734f2ff refactor: user-settings module 2022-12-23 12:28:22 +06:00
Mir Arif Hasan
6b59b9988c docs: developer guide text updated 2022-12-22 22:25:16 +06:00
Mir Arif Hasan
f9de546d14 feat: more property added in userInputDto and key updated 2022-12-22 18:56:18 +06:00
Mir Arif Hasan
9e304b947b test: added user update unit tests 2022-12-22 18:47:42 +06:00
Mir Arif Hasan
c11a219c62 fix: typo of pubsub message 2022-12-22 18:41:35 +06:00
Mir Arif Hasan
3cc22575cb feat: user update and subscribers added 2022-12-22 17:35:44 +06:00
Mir Arif Hasan
c42b6e2fdb feat: added fields for user-session of rest and gql 2022-12-22 12:46:03 +06:00
Andrew Bastin
1e5dd1cc53 chore: introduce platform object for platform specific code 2022-12-21 19:21:52 -05:00
Mir Arif Hasan
877532559e Merge branch 'main' into feat/user-settings 2022-12-21 13:25:42 +06:00
ankitsridhar16
cd4750fcce fix: added missing return for star/unstar service method 2022-12-21 11:45:19 +05:30
ankitsridhar16
fc2be71e1f Merge remote-tracking branch 'origin/main' into feat/user-environments
# Conflicts:
#	packages/hoppscotch-backend/jest.setup.js
#	packages/hoppscotch-backend/package.json
2022-12-21 10:30:21 +05:30
ankitsridhar16
0c9aa2f681 chore: added error messages for a user history 2022-12-20 21:08:23 +05:30
ankitsridhar16
1883be95d5 chore: updated resolvers for user-history 2022-12-20 21:06:49 +05:30
ankitsridhar16
f7dadda52a chore: added service files for user history and unit tests 2022-12-20 21:05:58 +05:30
Mir Arif Hasan
2a8fd24504 chore: removed redundent import statement 2022-12-20 16:36:45 +06:00
ankitsridhar16
71c70a1b36 Merge remote-tracking branch 'origin/main' into feat/user-history 2022-12-20 15:52:54 +05:30
Mir Arif Hasan
c34379d936 Merge pull request #6 from hoppscotch/chore/jest-testing
feat: add moduleNameMapper in package.json
2022-12-20 16:21:34 +06:00
Mir Arif Hasan
2dde29c628 feat: add moduleNameMapper in package.json 2022-12-20 16:09:54 +06:00
ankitsridhar16
818e71d49c Merge remote-tracking branch 'origin/main' into feat/user-history 2022-12-20 14:58:15 +05:30
Ankit Sridhar
6bbeb5ef87 Merge pull request #4 from hoppscotch/chore/jest-setup
feat: added jest and jest-fp-ts setup
2022-12-20 14:56:20 +05:30
ankitsridhar16
7ebed70316 fix: fixes nest restart issue 2022-12-20 14:52:54 +05:30
ankitsridhar16
130237fc87 feat: added jest and jest-fp-ts setup 2022-12-20 14:41:50 +05:30
ankitsridhar16
a28774c2c4 feat: added user-history resolvers, service files and module 2022-12-20 14:35:25 +05:30
ankitsridhar16
b9ade5d2a3 feat: added user-history module to app module 2022-12-20 14:31:01 +05:30
ankitsridhar16
b677aa1715 feat: added user history model 2022-12-20 14:30:14 +05:30
Mir Arif Hasan
7a036883e8 test: added user-settings test cases for service file 2022-12-20 15:00:13 +06:00
ankitsridhar16
e665df21da feat: added resolvers for user model and history 2022-12-20 14:29:31 +05:30
ankitsridhar16
d066b9c913 feat: added prisma schema for user history 2022-12-20 14:28:15 +05:30
Mir Arif Hasan
b4290c24b3 fix: invalid user handled on createUserSettings 2022-12-20 14:51:58 +06:00
Mir Arif Hasan
b66656ad84 fix: prisma service import 2022-12-19 23:58:23 +06:00
Mir Arif Hasan
5c032e84be fix: null value checked on user_settings.properties 2022-12-19 23:56:50 +06:00
Mir Arif Hasan
83437ae4ba feat: added fetchUserSettings for 2022-12-19 18:42:13 +06:00
Mir Arif Hasan
24434cc61a feat: added subscriber for update user settings 2022-12-19 18:18:34 +06:00
Mir Arif Hasan
53dc40e8c7 feat: added mutation for update user settings 2022-12-19 18:12:49 +06:00
Mir Arif Hasan
4affb2bc5b feat: added user-settings schema and user-settings module 2022-12-19 17:38:46 +06:00
Liyas Thomas
3d7b057026 chore: updated i18n translation, minor ux improvements 2022-12-17 09:57:57 +05:30
Anwarul Islam
d36ab337d7 feat: ability to delete user account and data (#2863)
* feat: add gql mutation

* feat: added delete account section in profile page

* feat: separate shortcodes section to a component

* feat: delete user modal

* feat: delete user account

* feat: navigate to homepage after delete

* chore: improve ui

* fix: delete user mutation

* chore: minor ui improvements

* chore: correct grammar in certain i18n strings

* feat: delection section separated to component

* feat: separate user delete section into component

* feat: defer fetch my teams

* feat: disable delete account button on loading state

* Update Shortcodes.vue

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-12-17 09:31:39 +05:30
ankitsridhar16
c87690f378 chore: update resolvers and service files 2022-12-15 23:31:12 +05:30
ankitsridhar16
9fb9fd4568 chore: added test files for user environment service 2022-12-15 23:29:51 +05:30
ankitsridhar16
6bd4fd91ff chore: updated user resolver with updated service methods 2022-12-15 23:25:21 +05:30
ankitsridhar16
164c2463f5 chore: added error messages for user environment related errors 2022-12-15 23:24:09 +05:30
ankitsridhar16
73532e41c5 chore: added jest and jest related setup files to support jest fp-ts 2022-12-15 23:23:13 +05:30
ankitsridhar16
3392b1a1ca chore: minor changes to Dockerfilefor prisma service 2022-12-15 23:21:57 +05:30
ankitsridhar16
08cc7114ac chore: minor changes to Dockerfile 2022-12-15 23:21:21 +05:30
Liyas Thomas
012f9b5314 feat: prettify xml request body - fixed #2878 2022-12-15 17:06:18 +05:30
Liyas Thomas
ba6069324f chore: minor ui improvements 2022-12-14 19:29:04 +05:30
Liyas Thomas
0d26d4cdbd ci: updated workflow comments 2022-12-14 19:10:52 +05:30
Liyas Thomas
4b920feffa ci: maximize build space 2022-12-14 16:33:33 +05:30
ankitsridhar16
8e038f6944 feat: added user environments to app module 2022-12-13 16:10:58 +05:30
ankitsridhar16
ce94255a9e feat: added user environment user environments resolvers, service files 2022-12-13 13:27:51 +05:30
ankitsridhar16
b4b63f86d9 feat: added user environment prisma schema 2022-12-13 13:14:13 +05:30
Andrew Bastin
830373efb3 chore: reintroduce sitemap generation (#2874) 2022-12-10 21:10:45 -05:00
Akash K
c3f18671ec fix: cannot write to body when a request is loaded from history (#2873)
* fix: cannot write body when a request is loaded from history

* fix: import `toRaw()` from vue

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-12-09 20:39:36 +05:30
Ankit Sridhar
2901fb0d72 Merge pull request #2 from hoppscotch/chore/backend-integration
chore: backend integration for existing modules and docker fix
2022-12-09 11:59:49 +05:30
Balu Babu
c5466edf71 chore: cleaned up hopp-backend package and modified docker and docker-compose files 2022-12-08 22:19:14 +05:30
ankitsridhar16
bfc5bfe973 chore: added user model in prisma schema 2022-12-08 20:26:22 +05:30
ankitsridhar16
4da11955f1 style: prettier fix for pubsub 2022-12-07 23:17:56 +05:30
ankitsridhar16
d4c775a537 chore: added existing utils from old backend repo 2022-12-07 23:14:49 +05:30
ankitsridhar16
ef95a8a305 chore: added fp-ts and gql complexity plugin 2022-12-07 23:13:13 +05:30
ankitsridhar16
a173d2c808 chore: imported existing user module files from old repo 2022-12-07 23:11:52 +05:30
ankitsridhar16
ee002df110 chore: added gql decorator and complexity plugin 2022-12-07 23:09:15 +05:30
ankitsridhar16
06ef17048a chore: added prisma module 2022-12-07 20:52:31 +05:30
Balu Babu
9487348ba8 Merge branch 'chore/backend-integration' of https://github.com/hoppscotch/self-hosted into chore/backend-integration 2022-12-07 20:33:08 +05:30
Balu Babu
757060b11f chore: removed comments from pubsub module 2022-12-07 20:31:54 +05:30
ankitsridhar16
ab1f8437ea chore: added existing auth guard and user model 2022-12-07 20:30:02 +05:30
Balu Babu
d7afd31572 chore: created pubsub module and added relevant dependencies for it 2022-12-07 20:28:46 +05:30
Balu Babu
cd3178224a Merge branch 'chore/backend-integration' of https://github.com/hoppscotch/self-hosted into chore/backend-integration 2022-12-07 20:19:40 +05:30
Balu Babu
9193a1a5d6 chore: fixed docker-compose issue with package/hopp-backend 2022-12-07 20:13:42 +05:30
Liyas Thomas
0d33758ba4 ci: introduce staging deployment actions 2022-12-07 12:11:06 +05:30
Akash K
e7e8c397ef fix: circular watcher dependencies on invite.vue causing infinite loop (#2871) 2022-12-06 15:59:38 -05:00
Andrew Bastin
0f3e36a447 chore: get functioning server running 2022-12-06 15:00:51 -05:00
ankitsridhar16
333dbba393 chore: added docker files for bringing the container up 2022-12-06 13:18:02 +05:30
Liyas Thomas
b04b12c7a0 fix: broken links 2022-12-06 12:09:20 +05:30
Ankit Sridhar
1dc804a2b9 Merge pull request #1 from hoppscotch/feat/create-hoppscotch-backend-package
feat: added hoppscotch-backend as a package
2022-12-05 12:50:50 +05:30
ankitsridhar16
75219d457a feat: added hoppscotch-backend as a package 2022-12-05 12:36:11 +05:30
Liyas Thomas
a1d69b3210 chore: minor ui improvements 2022-12-03 13:01:47 +05:30
Liyas Thomas
dcbc2f1145 ci: use latest workflow versions 2022-12-03 00:51:49 +05:30
Andrew Bastin
36903b338a fix: broken Dockerfile and final start command 2022-12-02 13:34:46 -05:00
Andrew Bastin
9d8d6832af chore: fix broken ci 2022-12-02 11:01:53 -05:00
Andrew Bastin
3d004f2322 chore: split app to commons and web (squash commit) 2022-12-02 03:05:35 -05:00
Liyas Thomas
fb827e3586 Create deploy-preview-netlify.yml 2022-12-02 03:02:56 -05:00
Liyas Thomas
ccca183e08 chore: minor ui improvements 2022-12-01 17:47:39 +05:30
Liyas Thomas
237455ab21 chore: minor ui improvements 2022-11-29 13:50:58 +05:30
Liyas Thomas
6141073137 chore: minor ui improvements 2022-11-27 23:19:19 +05:30
Liyas Thomas
740691417f chore: updated translation 2022-11-27 03:52:15 +05:30
Anwarul Islam
2ed709796a MQTT Revamp (#2381)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-11-27 02:43:24 +05:30
Akash K
75c0350584 fix: delete not working properly on request body (#2861) 2022-11-24 22:00:43 -05:00
Liyas Thomas
17d72b9922 fix: typo 2022-11-17 09:58:52 +05:30
Liyas Thomas
1796fae3d1 chore: updated tech stack list 2022-11-16 09:45:55 +05:30
Akash K
1ecd22204d chore: remove unwanted debug info (#2851) 2022-11-09 17:37:05 -05:00
Akash K
356fe4591f fix: fix cursor going out of bounds when filtering response (#2850) 2022-11-09 17:23:28 -05:00
Andrew Bastin
0230942a3d chore: introduce devcontainer support 2022-11-08 15:51:26 -05:00
Andrew Bastin
325793eebc fix: onLoggedIn called when id token is not yet resolved for auth users 2022-11-07 22:36:12 -05:00
Nivedin
39d1256f68 refactor: move global environment selector to top (#2848)
* refactor: moved global env to top

* fix: change to my collection and env when logedout

* fix: merge fix

* refactor: change v-show to v-if

* chore: minor type change

* chore: pass variable name to edit

* chore: improve logic

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-11-03 10:13:06 +05:30
Andrew Bastin
fd2472d34b chore: add vue-tsc dep and introduce lint:ts script for prelim ts fixes 2022-11-02 13:08:25 -04:00
Andrew Bastin
5e8fbc6552 chore: fix some type errors in '/r' route 2022-11-02 11:03:08 -04:00
Liyas Thomas
3084a40729 fix: set focus to newly added environment key field 2022-11-02 18:11:13 +05:30
Francisco Emanuel de Sales Pereira
0069f51ea4 feat: added inline environment variable edit button (#2813)
* refactor: changes v-if render to v-show on Environments tabs

* feat: adds selectText prop to EnvInput

* feat: adds editing variable name to env Details modal

* feat: adds actions to invoke edit env modals

* feat: adds edit action to tooltip env

* refactor: adds destructuring assignment on action handlers for edit env modals

* refactor: fix comment on environment modals action

* chore: minor ui improvements

* refactor: change text selecion prop on EnvInput to something more meaningful

* refactor: removes comment on HoppEnvironment extension

* refactor: renames isTextSelected EnvInput prop to selectTextOnMount

* refactor: remove type definition of automatic inferrable variables

* refactor: edit environment call to only allow accepted types

* feat: introduce type safe action arguments

* fix: revert v-show to v-if

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-11-02 17:55:22 +05:30
Liyas Thomas
696c612489 fix: broken tippy focus event 2022-11-02 15:05:57 +05:30
Liyas Thomas
4a5a4077af chore: improvements to tooltips and popovers 2022-11-02 14:42:00 +05:30
Liyas Thomas
28bcb899e7 chore: improve ui consistency 2022-11-01 19:05:13 +05:30
Liyas Thomas
4062a7089a perf: temporarily disable dependabot 2022-11-01 09:40:14 +05:30
Akash K
ad86221c7d fix: linting erroring out on graphql queries (#2846) 2022-10-31 18:45:53 -04:00
Akash K
53938248de fix: errors on opening json outline (#2847) 2022-10-31 18:28:31 -04:00
Liyas Thomas
c018b639ad chore: minor ui improvements 2022-11-01 00:42:35 +05:30
Liyas Thomas
eb2145c7da fix: updated prop name 2022-10-30 17:50:17 +05:30
Liyas Thomas
2f4c39d310 feat: filter and group history entries 2022-10-30 17:05:32 +05:30
biondizzle
79ada82223 feat: use environment variable to specify proxyscotch access token (#2791) 2022-10-29 18:16:40 -04:00
Liyas Thomas
c67463fb3b chore: updated translations
commit 2adcfe9804ede1fea584db24e0a27dc1b5e034e3
Author: Archontis Kostis <arxontisk02@gmail.com>
Date:   Sat Oct 29 22:04:01 2022 +0300

    chore: updated translation (#2837)

commit 56b8a5cb38
Author: 5idereal <nelson22768384@gmail.com>
Date:   Sat Oct 29 11:58:25 2022 +0800

    chore: updated translation (#2835)
2022-10-30 00:45:37 +05:30
Akash K
d162471555 chore: add polyfill for replaceAll (#2836) 2022-10-28 20:29:07 -04:00
Nivedin
c99797bcef fix: import hopp collection (#2824) 2022-10-27 22:29:46 -04:00
Nivedin
9739cdbbaa fix: codemirror field overflow (#2827)
* fix: codemirror editor overflow

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-27 08:12:23 +05:30
Akash K
7f6db561f5 fix: fix missing analytics (#2826)
fix: typo in environment variable name
2022-10-26 18:50:03 +05:30
Akash K
9eac00b303 fix: useCodemirror getting non strings as value (#2810) 2022-10-22 12:36:07 +05:30
Oliver Zhou (毓杰)
b61df04c1b fix: socket.io v3/v4 incomming message issue (#2811) 2022-10-22 12:31:31 +05:30
Liyas Thomas
b587e21c90 chore: updated translations
commit 1673c36cec5ac0e949bdf85c8e780f02ae25c06d
Author: Roberth González <63687573+rxb3rth@users.noreply.github.com>
Date:   Thu Oct 20 15:45:00 2022 +0200

    chore(i18n): updated translations (#2788)

commit af70ae2c43558cf7f658cf8bfcca35475e7786c7
Author: Fiqri Dwi <79080077+fiqridwi@users.noreply.github.com>
Date:   Thu Oct 20 18:41:53 2022 +0700

    chore: updated translations (#2805)
2022-10-20 19:47:57 +05:30
Liyas Thomas
02d66ee9fd chore: minor ui improvements 2022-10-20 19:47:17 +05:30
Akash K
a950e08ef1 chore: add temporary debug info for code mirror (#2806)
chore: temp debug info
2022-10-20 17:17:54 +05:30
Liyas Thomas
6e7d28db7b fix: overflow on log entries - closed #2738 2022-10-15 09:57:49 +05:30
Andrew Bastin
a0ea00d0a3 fix: form-data requests on proxy failing 2022-10-14 15:39:28 +05:30
Liyas Thomas
beb5606862 chore: updated translations
commit b8350ae25d85ec71be6a8ca2580fbeeebd73c5f6
Author: Andrii Bodnar <29282228+andrii-bodnar@users.noreply.github.com>
Date:   Fri Oct 14 06:47:18 2022 +0300

    chore: updated translations (#2781)

commit 04dd400871
Author: Daniel Krásný <53856821+DanielKrasny@users.noreply.github.com>
Date:   Wed Oct 12 14:26:02 2022 +0200

    chore: remove translations of brand names (#2777)
2022-10-14 09:21:20 +05:30
Anwarul Islam
44f11f93a4 fix: realtime connect/disconnect issue (#2768)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-13 17:33:46 +05:30
Hau Nguyen
7b61f267dd chore: migration vite import.meta.glob (#2778) 2022-10-12 15:14:43 +05:30
Akash K
971238cedb chore: serialize when logging errors (#2775) 2022-10-12 02:19:27 +05:30
Akash K
4d19b9249b fix: fix auth/graphql errors causing errors on logout (#2772) 2022-10-11 14:06:22 +05:30
Liyas Thomas
4046b91609 fix: resolved #2771 2022-10-11 10:35:14 +05:30
Nivedin
e6652109c5 fix: team environments import (#2770)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-10 20:15:01 +05:30
Liyas Thomas
e9cfc066a5 fix: resolved #2758 2022-10-10 14:50:53 +05:30
Liyas Thomas
9ce078c1d3 chore: updated translations 2022-10-09 21:22:36 +05:30
Liyas Thomas
2bcc1675e8 chore: updated translations
commit 2756922cc0
Author: islamzeki <islamzeki@users.noreply.github.com>
Date:   Sun Oct 9 18:31:47 2022 +0300

    Update tr.json (#2750)

commit fb13fae385
Author: Cheese <seojeee@gmail.com>
Date:   Mon Oct 10 00:28:34 2022 +0900

    add and fix translations in ko.json (#2752)

commit c28ffd604d
Author: Akhmad Thoriq <51510460+itstor@users.noreply.github.com>
Date:   Sun Oct 9 22:27:15 2022 +0700

    fix wrong translation and typo in Indonesia language (#2757)

commit fe18aa1310
Author: Fiki Maulana <fikimaul@gmail.com>
Date:   Wed Oct 5 21:40:19 2022 +0700

    translate and fix some Indonesia language (#2739)

commit 9f8a2c0cd3
Author: Dhravya Shah <dhravyashah@gmail.com>
Date:   Tue Oct 4 12:19:12 2022 +0530

    i18n: add Hindi to locales (#2734)
2022-10-09 21:04:57 +05:30
Liyas Thomas
a87c2347c9 chore: minor ui improvements 2022-10-09 20:55:22 +05:30
Liyas Thomas
8f2810db30 ci: use latest workflow version - superseded #2754 2022-10-09 16:44:44 +05:30
Andrew Bastin
528d0b0429 fix: history component crashing on special characters (fixes #2743) 2022-10-07 23:00:32 +05:30
Andrew Bastin
f759014315 fix: broken pr evaluation scripts 2022-10-07 22:20:05 +05:30
Nivedin
a568610c28 feat: team environments (#2512)
Co-authored-by: amk-dev <akash.k.mohan98@gmail.com>
Co-authored-by: liyasthomas <liyascthomas@gmail.com>
Co-authored-by: islamzeki <islamzeki@users.noreply.github.com>
Co-authored-by: Jesvin Jose <aitchnyu@users.noreply.github.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 22:05:39 +05:30
Damanpreet Singh
c35a85db12 fix: allow posting empty key files in multipart/form-data (#2664) 2022-10-07 02:29:15 +05:30
Andrew Bastin
fcd61436c8 chore: fix issues with broken ci scripts 2022-10-07 01:51:32 +05:30
Andrew Bastin
0798063213 chore: fix broken docker ci builds 2022-10-07 01:42:39 +05:30
jerbob92
80de63323d build: use GraphQL URL from env in gql-codegen (#2749)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 01:17:25 +05:30
jerbob92
7d0219b11d chore: allow configuration of shortcode base (#2748) 2022-10-07 00:50:48 +05:30
Akash K
d42434ddc0 feat: use email as fallback for display name (#2746)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 00:45:34 +05:30
Liyas Thomas
cbf6d23c24 chore: minor improvements 2022-10-06 21:21:24 +05:30
Akash K
568c05b4b0 fix: fix type error when generating profile picture initials (#2742)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-06 17:56:30 +05:30
Akash K
59ee4babeb fix: fix ref access when using v-for on Invite.vue (#2744)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-06 16:06:14 +05:30
Liyas Thomas
604ef4d004 fix: resolved #2740 2022-10-05 21:24:15 +05:30
1506 changed files with 140381 additions and 37203 deletions

View File

@@ -0,0 +1,9 @@
{
"name": "Hoppscotch",
"image": "mcr.microsoft.com/devcontainers/typescript-node:18",
"forwardPorts": [3000],
"features": {
"ghcr.io/NicoVIII/devcontainer-features/pnpm:1": {}
},
"postCreateCommand": "cp .env.example .env && pnpm i"
}

View File

@@ -1,104 +1,2 @@
Dockerfile
.vscode
.github
# Created by .ignore support plugin (hsz.mobi)
# Firebase
.firebase
### Node template
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# Nuxt generate
dist
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE / Editor
.idea
# Service worker
sw.*
# Mac OSX
.DS_Store
# Vim swap files
*.swp
# Build data
.hoppscotch
# File explorer
.directory
node_modules
**/*/node_modules

64
.env.example Normal file
View File

@@ -0,0 +1,64 @@
#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch
# Auth Tokens Config
JWT_SECRET="secret1233"
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY= 3
REFRESH_TOKEN_VALIDITY="604800000" # Default validity is 7 days (604800000 ms) in ms
ACCESS_TOKEN_VALIDITY="86400000" # Default validity is 1 day (86400000 ms) in ms
SESSION_SECRET='add some secret here'
# Hoppscotch App Domain Config
REDIRECT_URL="http://localhost:3000"
WHITELISTED_ORIGINS="http://localhost:3170,http://localhost:3000,http://localhost:3100"
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL
# Google Auth Config
GOOGLE_CLIENT_ID="************************************************"
GOOGLE_CLIENT_SECRET="************************************************"
GOOGLE_CALLBACK_URL="http://localhost:3170/v1/auth/google/callback"
GOOGLE_SCOPE="email,profile"
# Github Auth Config
GITHUB_CLIENT_ID="************************************************"
GITHUB_CLIENT_SECRET="************************************************"
GITHUB_CALLBACK_URL="http://localhost:3170/v1/auth/github/callback"
GITHUB_SCOPE="user:email"
# Microsoft Auth Config
MICROSOFT_CLIENT_ID="************************************************"
MICROSOFT_CLIENT_SECRET="************************************************"
MICROSOFT_CALLBACK_URL="http://localhost:3170/v1/auth/microsoft/callback"
MICROSOFT_SCOPE="user.read"
MICROSOFT_TENANT="common"
# Mailer config
MAILER_SMTP_URL="smtps://user@domain.com:pass@smtp.domain.com"
MAILER_ADDRESS_FROM='"From Name Here" <from@example.com>'
# Rate Limit Config
RATE_LIMIT_TTL=60 # In seconds
RATE_LIMIT_MAX=100 # Max requests per IP
#-----------------------Frontend Config------------------------------#
# Base URLs
VITE_BASE_URL=http://localhost:3000
VITE_SHORTCODE_BASE_URL=http://localhost:3000
VITE_ADMIN_URL=http://localhost:3100
# Backend URLs
VITE_BACKEND_GQL_URL=http://localhost:3170/graphql
VITE_BACKEND_WS_URL=ws://localhost:3170/graphql
VITE_BACKEND_API_URL=http://localhost:3170/v1
# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy
# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false

View File

@@ -5,6 +5,6 @@ updates:
schedule:
interval: weekly
time: '00:00'
open-pull-requests-limit: 10
open-pull-requests-limit: 0
reviewers:
- liyasthomas

View File

@@ -1,72 +1,63 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
name: "CodeQL analysis"
on:
push:
branches: [ main ]
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
branches: [main]
schedule:
- cron: '39 7 * * 2'
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
- cron: '30 1 * * 0'
jobs:
analyze:
name: Analyze
# CodeQL runs on ubuntu-latest, windows-latest, and macos-latest
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
# required for all workflows
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
# only required for workflows in private repositories
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
# Run extended queries including queries using machine learning
queries: security-extended
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
# Run extended queries including queries using machine learning
queries: security-extended
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below).
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
# ✏️ If the Autobuild fails above, remove it and uncomment the following
# three lines and modify them (or add more) to build your code if your
# project uses a compiled language
#- run: |
# make bootstrap
# make release
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@@ -1,48 +0,0 @@
name: Deploy to Netlify
on:
push:
branches: [main]
jobs:
build:
name: Push build files to Netlify
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
with:
version: 7
run_install: true
- name: Setup Environment
run: mv packages/hoppscotch-app/.env.example packages/hoppscotch-app/.env
- name: Build Site
env:
VITE_SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
VITE_SENTRY_ENVIRONMENT: production
VITE_SENTRY_RELEASE_TAG: ${{ github.sha }}
run: pnpm run generate
# Deploy the production site with netlify-cli
- name: Deploy to Netlify (production)
run: npx netlify-cli deploy --dir=packages/hoppscotch-app/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_PRODUCTION_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- name: Create Sentry Release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
with:
environment: production
ignore_missing: true
ignore_empty: true
version: ${{ github.sha }}

View File

@@ -1,18 +0,0 @@
name: Deploy to Live Channel
on:
push:
branches:
- main
jobs:
deploy_live_website:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_POSTWOMAN_API }}'
channelId: live
projectId: postwoman-api

View File

@@ -1,58 +0,0 @@
name: Deploy to Staging Netlify
on:
push:
# TODO: Migrate to staging branch only
branches: [main]
jobs:
build:
name: Push build files to Netlify
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
with:
version: 7
run_install: true
- name: Build Site
env:
VITE_GA_ID: ${{ secrets.STAGING_GA_ID }}
VITE_GTM_ID: ${{ secrets.STAGING_GTM_ID }}
VITE_API_KEY: ${{ secrets.STAGING_FB_API_KEY }}
VITE_AUTH_DOMAIN: ${{ secrets.STAGING_FB_AUTH_DOMAIN }}
VITE_DATABASE_URL: ${{ secrets.STAGING_FB_DATABASE_URL }}
VITE_PROJECT_ID: ${{ secrets.STAGING_FB_PROJECT_ID }}
VITE_STORAGE_BUCKET: ${{ secrets.STAGING_FB_STORAGE_BUCKET }}
VITE_MESSAGING_SENDER_ID: ${{ secrets.STAGING_FB_MESSAGING_SENDER_ID }}
VITE_APP_ID: ${{ secrets.STAGING_FB_APP_ID }}
VITE_BASE_URL: ${{ secrets.STAGING_BASE_URL }}
VITE_BACKEND_GQL_URL: ${{ secrets.STAGING_BACKEND_GQL_URL }}
VITE_BACKEND_WS_URL: ${{ secrets.STAGING_BACKEND_WS_URL }}
VITE_SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
VITE_SENTRY_RELEASE_TAG: ${{ github.sha }}
VITE_SENTRY_ENVIRONMENT: staging
run: pnpm run generate
# Deploy the staging site with netlify-cli
- name: Deploy to Netlify (staging)
run: npx netlify-cli deploy --dir=packages/hoppscotch-app/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_STAGING_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- name: Create Sentry Release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
with:
environment: staging
ignore_missing: true
ignore_empty: true
version: ${{ github.sha }}

View File

@@ -1,46 +0,0 @@
name: Publish Docker image
on:
push:
branches: [main]
release:
types: [published]
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: hoppscotch/hoppscotch
flavor: |
latest=true
prefix=
suffix=
- name: Build and push Docker image
uses: docker/build-push-action@v3
with:
context: .
push: true
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@@ -0,0 +1,84 @@
name: "Push containers to Docker Hub on release"
on:
push:
tags:
- '*.*.*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: cp .env.example .env
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push the backend container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: backend
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push the frontend container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: app
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push the admin dashboard container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: sh_admin
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push the AIO container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: aio
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref_name }}

View File

@@ -2,12 +2,13 @@ name: Node.js CI
on:
push:
branches: [main]
branches: [main, staging, "release/**"]
pull_request:
branches: [main]
branches: [main, staging, "release/**"]
jobs:
build:
test:
name: Test
runs-on: ubuntu-latest
strategy:
@@ -15,17 +16,23 @@ jobs:
node-version: ["lts/*"]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: mv .env.example .env
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
with:
version: 7
version: 8
run_install: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
node-version: ${{ matrix.node }}
cache: pnpm
- name: Run tests
run: pnpm test

42
.github/workflows/ui.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: Deploy to Netlify (ui)
on:
push:
branches: [main]
# run this workflow only if an update is made to the ui package
paths:
- "packages/hoppscotch-ui/**"
workflow_dispatch:
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: mv .env.example .env
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
with:
version: 8
run_install: true
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Build site
run: pnpm run generate-ui
# Deploy the ui site with netlify-cli
- name: Deploy to Netlify (ui)
run: npx netlify-cli@15.11.0 deploy --dir=packages/hoppscotch-ui/.histoire/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_UI_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}

11
.gitignore vendored
View File

@@ -81,10 +81,7 @@ web_modules/
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
.env.*
# parcel-bundler cache (https://parceljs.org/)
.cache
@@ -168,3 +165,9 @@ tests/*/videos
# Local Netlify folder
.netlify
# PNPM
.pnpm-store
# GQL SDL generated for the frontends
gql-gen/

View File

@@ -1,3 +1,8 @@
module.exports = {
semi: false
semi: false,
trailingComma: "es5",
singleQuote: false,
printWidth: 80,
useTabs: false,
tabWidth: 2
}

View File

@@ -1,13 +0,0 @@
{
"recommendations": [
"antfu.iconify",
"vue.volar",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig",
"csstools.postcss",
],
"unwantedRecommendations": [
"octref.vetur"
]
}

30
CODEOWNERS Normal file
View File

@@ -0,0 +1,30 @@
# CODEOWNERS is prioritized from bottom to top
# If none of the below matched
* @AndrewBastin @liyasthomas
# Packages
/packages/codemirror-lang-graphql/ @AndrewBastin
/packages/hoppscotch-cli/ @AndrewBastin
/packages/hoppscotch-common/ @amk-dev @AndrewBastin
/packages/hoppscotch-data/ @AndrewBastin
/packages/hoppscotch-js-sandbox/ @AndrewBastin
/packages/hoppscotch-ui/ @anwarulislam
/packages/hoppscotch-web/ @amk-dev
/packages/hoppscotch-selfhost-web/ @amk-dev
/packages/hoppscotch-sh-admin/ @JoelJacobStephen
/packages/hoppscotch-backend/ @ankitsridhar16 @balub
# Sections within Hoppscotch Common
/packages/hoppscotch-common/src/components @anwarulislam
/packages/hoppscotch-common/src/components/collections @nivedin @amk-dev
/packages/hoppscotch-common/src/components/environments @nivedin @amk-dev
/packages/hoppscotch-common/src/composables @amk-dev
/packages/hoppscotch-common/src/modules @AndrewBastin @amk-dev
/packages/hoppscotch-common/src/pages @AndrewBastin @amk-dev
/packages/hoppscotch-common/src/newstore @AndrewBastin @amk-dev
README.md @liyasthomas
# The lockfile has no owner
pnpm-lock.yaml

View File

@@ -6,8 +6,8 @@ We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
@@ -22,17 +22,17 @@ community include:
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
@@ -82,15 +82,15 @@ behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
@@ -106,23 +106,27 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -1,29 +0,0 @@
FROM node:lts-alpine
LABEL maintainer="Hoppscotch (support@hoppscotch.io)"
# Add git as the prebuild target requires it to parse version information
RUN apk add --no-cache --virtual .gyp \
python3 \
make \
g++
# Create app directory
WORKDIR /app
ADD . /app/
COPY . .
RUN npm install -g pnpm
RUN pnpm i --unsafe-perm=true
ENV HOST 0.0.0.0
EXPOSE 3000
RUN mv packages/hoppscotch-app/.env.example packages/hoppscotch-app/.env
RUN pnpm run generate
CMD ["pnpm", "run", "start"]

228
README.md
View File

@@ -2,23 +2,18 @@
<a href="https://hoppscotch.io">
<img
src="https://avatars.githubusercontent.com/u/56705483"
alt="Hoppscotch Logo"
alt="Hoppscotch"
height="64"
/>
</a>
<br />
<p>
<h3>
<b>
Hoppscotch
</b>
</h3>
</p>
<p>
<h3>
<b>
Open source API development ecosystem
Hoppscotch
</b>
</p>
</h3>
<b>
Open Source API Development Ecosystem
</b>
<p>
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](CODE_OF_CONDUCT.md) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fhoppscotch.io&logo=hoppscotch)](https://hoppscotch.io) [![Tests](https://github.com/hoppscotch/hoppscotch/actions/workflows/tests.yml/badge.svg)](https://github.com/hoppscotch/hoppscotch/actions) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fhoppscotch.io%2F)](https://twitter.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
@@ -34,23 +29,18 @@
</p>
<br />
<p>
<a href="https://hoppscotch.io/#gh-light-mode-only" target="_blank">
<img
src="./packages/hoppscotch-app/public/images/banner-light.png"
alt="Hoppscotch"
width="100%"
/>
</a>
<a href="https://hoppscotch.io/#gh-dark-mode-only" target="_blank">
<img
src="./packages/hoppscotch-app/public/images/banner-dark.png"
alt="Hoppscotch"
width="100%"
/>
<a href="https://hoppscotch.io">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./packages/hoppscotch-common/public/images/banner-dark.png">
<source media="(prefers-color-scheme: light)" srcset="./packages/hoppscotch-common/public/images/banner-light.png">
<img alt="Hoppscotch" src="./packages/hoppscotch-common/public/images/banner-dark.png">
</picture>
</a>
</p>
</div>
_We highly recommend you take a look at the [**Hoppscotch Documentation**](https://docs.hoppscotch.io) to learn more about the app._
#### **Support**
[![Chat on Discord](https://img.shields.io/badge/chat-Discord-7289DA?logo=discord)](https://hoppscotch.io/discord) [![Chat on Telegram](https://img.shields.io/badge/chat-Telegram-2CA5E0?logo=telegram)](https://hoppscotch.io/telegram) [![Discuss on GitHub](https://img.shields.io/badge/discussions-GitHub-333333?logo=github)](https://github.com/hoppscotch/hoppscotch/discussions)
@@ -59,9 +49,9 @@
❤️ **Lightweight:** Crafted with minimalistic UI design.
⚡️ **Fast:** Send requests and get/copy responses in real-time.
⚡️ **Fast:** Send requests and get responses in real time.
**HTTP Methods**
🗄️ **HTTP Methods:** Request methods define the type of action you are requesting to be performed.
- `GET` - Requests retrieve resource information
- `POST` - The server creates a new entry in a database
@@ -74,17 +64,15 @@
- `TRACE` - Performs a message loop-back test along the path to the target resource
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
🌈 **Make it yours:** Customizable combinations for background, foreground, and accent colors — [customize now](https://hoppscotch.io/settings).
🌈 **Theming:** Customizable combinations for background, foreground, and accent colors — [customize now](https://hoppscotch.io/settings).
**Theming**
- Choose a theme: System (default), Light, Dark, and Black
- Choose accent color: Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red, and Pink
- Choose a theme: System preference, Light, Dark, and Black
- Choose accent colors: Green, Teal, Blue, Indigo, Purple, Yellow, Orange, Red, and Pink
- Distraction-free Zen mode
_Customized themes are synced with cloud / local session_
_Customized themes are synced with your cloud/local session._
🔥 **PWA:** Install as a [PWA](https://web.dev/what-are-pwas/) on your device.
🔥 **PWA:** Install as a [Progressive Web App](https://web.dev/progressive-web-apps) on your device.
- Instant loading with Service Workers
- Offline support
@@ -107,7 +95,7 @@ _Customized themes are synced with cloud / local session_
📡 **Server-Sent Events:** Receive a stream of updates from a server over an HTTP connection without resorting to polling.
🌩 **Socket.IO:** Send and Receive data with SocketIO server.
🌩 **Socket.IO:** Send and Receive data with the SocketIO server.
🦟 **MQTT:** Subscribe and Publish to topics of an MQTT Broker.
@@ -127,7 +115,7 @@ _Customized themes are synced with cloud / local session_
- OAuth 2.0
- OIDC Access Token/PKCE
📢 **Headers:** Describes the format the body of your request is being sent as.
📢 **Headers:** Describes the format the body of your request is being sent in.
📫 **Parameters:** Use request parameters to set varying parts in simulated requests.
@@ -137,14 +125,14 @@ _Customized themes are synced with cloud / local session_
- FormData, JSON, and many more
- Toggle between key-value and RAW input parameter list
👋 **Response:** Contains the status line, headers, and the message/response body.
📮 **Response:** Contains the status line, headers, and the message/response body.
- Copy response to clipboard
- Download response as a file
- Copy the response to the clipboard
- Download the response as a file
- View response headers
- View raw and preview of HTML, image, JSON, XML responses
- View raw and preview HTML, image, JSON, and XML responses
**History:** Request entries are synced with cloud / local session storage to restore with a single click.
**History:** Request entries are synced with your cloud/local session storage.
📁 **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
@@ -152,7 +140,32 @@ _Customized themes are synced with cloud / local session_
- Nested folders
- Export and import as a file or GitHub gist
_Collections are synced with cloud / local session storage_
_Collections are synced with your cloud/local session storage._
📜 **Pre-Request Scripts:** Snippets of code associated with a request that is executed before the request is sent.
- Set environment variables
- Include timestamp in the request headers
- Send a random alphanumeric string in the URL parameters
- Any JavaScript functions
👨‍👩‍👧‍👦 **Teams:** Helps you collaborate across your teams to design, develop, and test APIs faster.
- Create unlimited teams
- Create unlimited shared collections
- Create unlimited team members
- Role-based access control
- Cloud sync
- Multiple devices
👥 **Workspaces:** Organize your personal and team collections environments into workspaces. Easily switch between workspaces to manage multiple projects.
- Create unlimited workspaces
- Switch between personal and team workspaces
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/documentation/features/shortcuts)**
🌐 **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
@@ -161,60 +174,31 @@ _Collections are synced with cloud / local session storage_
- Access APIs served in non-HTTPS (`http://`) endpoints
- Use your Proxy URL
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/privacy)**_
📜 **Pre-Request Scripts β:** Snippets of code associated with a request that is executed before the request is sent.
- Set environment variables
- Include timestamp in the request headers
- Send a random alphanumeric string in the URL parameters
- Any JavaScript functions
📄 **API Documentation:** Create and share dynamic API documentation easily, quickly.
1. Add your requests to Collections and Folders
2. Export Collections and easily share your APIs with the rest of your team
3. Import Collections and Generate Documentation on-the-go
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/features/shortcuts)**
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/support/privacy)**._
🌎 **i18n:** Experience the app in your language.
Help us to translate Hoppscotch. Please read [`TRANSLATIONS`](TRANSLATIONS.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md), and the process for submitting pull requests to us.
Help us to translate Hoppscotch. Please read [`TRANSLATIONS`](TRANSLATIONS.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md) and the process for submitting pull requests to us.
📦 **Add-ons:** Official add-ons for hoppscotch.
☁️ **Auth + Sync:** Sign in and sync your data in real-time across all your devices.
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch
- **[CLI β](https://github.com/hoppscotch/hopp-cli)** - A CLI solution for Hoppscotch
- **[Browser Extensions](https://github.com/hoppscotch/hoppscotch-extension)** - Browser extensions that simplifies access to Hoppscotch
[![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_16x16.png) **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) &nbsp;|&nbsp; [![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_16x16.png) **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
> **Extensions fixes `CORS` issues.**
- **[Hopp-Doc-Gen](https://github.com/hoppscotch/hopp-doc-gen)** - An API doc generator CLI for Hoppscotch
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
☁️ **Auth + Sync:** Sign in and sync your data in real-time.
**Sign in with**
**Sign in with:**
- GitHub
- Google
- Microsoft
- Email
- SSO (Single Sign-On)[^EE]
**Synchronize your data**
**🔄 Synchronize your data:** Handoff to continue tasks on your other devices.
- Workspaces
- History
- Collections
- Environments
- Settings
**Post-Request Tests β:** Write tests associated with a request that is executed after the request's response.
**Post-Request Tests:** Write tests associated with a request that is executed after the request's response.
- Check the status code as an integer
- Filter response headers
@@ -222,7 +206,7 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
- Set environment variables
- Write JavaScript code
🌱 **Environments** : Environment variables allow you to store and reuse values in your requests and scripts.
🌱 **Environments:** Environment variables allow you to store and reuse values in your requests and scripts.
- Unlimited environments and variables
- Initialize through the pre-request script
@@ -241,22 +225,31 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
</details>
👨‍👩‍👧‍👦 **Teams β:** Helps you collaborate across your team to design, develop, and test APIs faster.
- Unlimited teams
- Unlimited shared collections
- Unlimited team members
- Role-based access control
- Cloud sync
- Multiple devices
🚚 **Bulk Edit:** Edit key-value pairs in bulk.
- Entries are separated by newline
- Keys and values are separated by `:`
- Prepend `#` to any row you want to add but keep disabled
**For more features, please read our [documentation](https://docs.hoppscotch.io).**
🎛️ **Admin dashboard:** Manage your team and invite members.
- Insights
- Manage users
- Manage teams
📦 **Add-ons:** Official add-ons for hoppscotch.
- **[Hoppscotch CLI](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-cli)** - Command-line interface for Hoppscotch.
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch.
- **[Browser Extensions](https://github.com/hoppscotch/hoppscotch-extension)** - Browser extensions that enhance your Hoppscotch experience.
[![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_16x16.png) **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) &nbsp;|&nbsp; [![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_16x16.png) **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
> **Extensions fix `CORS` issues.**
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
**For a complete list of features, please read our [documentation](https://docs.hoppscotch.io).**
## **Demo**
@@ -268,56 +261,9 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
2. Click "Send" to simulate the request
3. View the response
## **Built with**
- [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML)
- [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS), [SCSS](https://sass-lang.com), [Windi CSS](https://windicss.org)
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- [TypeScript](https://www.typescriptlang.org)
- [Vue](https://vuejs.org)
- [Nuxt](https://nuxtjs.org)
## **Developing**
0. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/.env.example) file found in `packages/hoppscotch-app` with your own keys and rename it to `.env`.
_Sample keys only work with the [production build](https://hoppscotch.io)._
### Browser-based development environment
- [GitHub codespace](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace)
- [Gitpod](https://gitpod.io/#https://github.com/hoppscotch/hoppscotch)
### Local development environment
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
2. Install pnpm using npm by running `npm install -g pnpm`.
3. Install dependencies by running `pnpm install` within the directory that you cloned (probably `hoppscotch`).
4. Start the development server with `pnpm run dev`.
5. Open the development site by going to [`http://localhost:3000`](http://localhost:3000) in your browser.
### Docker compose
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
2. Run `docker-compose up` within the directory that you cloned (probably `hoppscotch`).
3. Open the development site by going to [`http://localhost:3000`](http://localhost:3000) in your browser.
## **Docker**
**Official container** &nbsp; [![hoppscotch/hoppscotch](https://img.shields.io/docker/pulls/hoppscotch/hoppscotch?style=social)](https://hub.docker.com/r/hoppscotch/hoppscotch)
```bash
docker run --rm --name hoppscotch -p 3000:3000 hoppscotch/hoppscotch:latest
```
## **Releasing**
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
2. Install pnpm using npm by running `npm install -g pnpm`.
3. Install dependencies by running `pnpm install` within the directory that you cloned (probably `hoppscotch`).
4. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/.env.example) file found in `packages/hoppscotch-app` with your own keys and rename it to `.env`.
5. Build the release files with `pnpm run generate`.
6. Find the built project in `packages/hoppscotch-app/dist`. Host these files on any [static hosting servers](https://www.pluralsight.com/blog/software-development/where-to-host-your-jamstack-site).
Follow our [self-hosting documentation](https://docs.hoppscotch.io/documentation/self-host/getting-started) to get started with the development environment.
## **Contributing**
@@ -335,7 +281,7 @@ See the [`CHANGELOG`](CHANGELOG.md) file for details.
## **Authors**
This project exists thanks to all the people who contribute — [contribute](CONTRIBUTING.md).
This project owes its existence to the collective efforts of all those who contribute — [contribute now](CONTRIBUTING.md).
<div align="center">
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
@@ -347,4 +293,6 @@ This project exists thanks to all the people who contribute — [contribute](CON
## **License**
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [`LICENSE`](LICENSE) file for details.
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) see the [`LICENSE`](LICENSE) file for details.
[^EE]: Enterprise edition feature. [Learn more](https://docs.hoppscotch.io/documentation/self-host/getting-started).

View File

@@ -2,8 +2,9 @@
This document outlines security procedures and general policies for the Hoppscotch project.
1. [Reporting a security vulnerability](#reporting-a-security-vulnerability)
3. [Incident response process](#incident-response-process)
- [Security Policy](#security-policy)
- [Reporting a security vulnerability](#reporting-a-security-vulnerability)
- [Incident response process](#incident-response-process)
## Reporting a security vulnerability

View File

@@ -9,26 +9,24 @@ Before you start working on a new language, please look through the [open pull r
if there is no existing translation, you can create a new one by following these steps:
1. **[Fork the repository](https://github.com/hoppscotch/hoppscotch/fork).**
2. **Checkout the `i18n` branch for latest translations.**
3. **Create a new branch for your translation with base branch `i18n`.**
4. **Create target language file in the [`locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-app/locales) directory.**
5. **Copy the contents of the source file [`locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/locales/en.json) to the target language file.**
2. **Checkout the `main` branch for latest translations.**
3. **Create a new branch for your translation with base branch `main`.**
4. **Create target language file in the [`/packages/hoppscotch-common/locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-common/locales) directory.**
5. **Copy the contents of the source file [`/packages/hoppscotch-common/locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/locales/en.json) to the target language file.**
6. **Translate the strings in the target language file.**
7. **Add your language entry to [`languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/languages.json).**
8. **Save & commit changes.**
7. **Add your language entry to [`/packages/hoppscotch-common/languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/languages.json).**
8. **Save and commit changes.**
9. **Send a pull request.**
_You may send a pull request before all steps above are complete: e.g., you may want to ask for help with translations, or getting tests to pass. However, your pull request will not be merged until all steps above are complete._
`i18n` branch will be merged into `main` branch once every week.
Completing an initial translation of the whole site is a fairly large task. One way to break that task up is to work with other translators through pull requests on your fork. You can also [add collaborators to your fork](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository) if you'd like to invite other translators to commit directly to your fork and share responsibility for merging pull requests.
## Updating a translation
### Corrections
If you notice spelling or grammar errors, typos, or opportunities for better phrasing, open a pull request with your suggested fix. If you see a problem that you aren't sure of or don't have time to fix, open an issue.
If you notice spelling or grammar errors, typos, or opportunities for better phrasing, open a pull request with your suggested fix. If you see a problem that you aren't sure of or don't have time to fix, [open an issue](https://github.com/hoppscotch/hoppscotch/issues/new/choose).
### Broken links

View File

@@ -0,0 +1,19 @@
:3000 {
try_files {path} /
root * /site/selfhost-web
file_server
}
:3100 {
try_files {path} /
root * /site/sh-admin-multiport-setup
file_server
}
:3170 {
reverse_proxy localhost:8080
}
:80 {
respond 404
}

View File

@@ -0,0 +1,37 @@
:3000 {
respond 404
}
:3100 {
respond 404
}
:3170 {
reverse_proxy localhost:8080
}
:80 {
# Serve the `selfhost-web` SPA by default
root * /site/selfhost-web
file_server
handle_path /admin* {
root * /site/sh-admin-subpath-access
file_server
# Ensures any non-existent file in the server is routed to the SPA
try_files {path} /
}
# Handle requests under `/backend*` path
handle_path /backend* {
reverse_proxy localhost:8080
}
# Catch-all route for unknown paths, serves `selfhost-web` SPA
handle {
root * /site/selfhost-web
file_server
try_files {path} /
}
}

73
aio_run.mjs Normal file
View File

@@ -0,0 +1,73 @@
#!/usr/local/bin/node
// @ts-check
import { execSync, spawn } from "child_process"
import fs from "fs"
import process from "process"
function runChildProcessWithPrefix(command, args, prefix) {
const childProcess = spawn(command, args);
childProcess.stdout.on('data', (data) => {
const output = data.toString().trim().split('\n');
output.forEach((line) => {
console.log(`${prefix} | ${line}`);
});
});
childProcess.stderr.on('data', (data) => {
const error = data.toString().trim().split('\n');
error.forEach((line) => {
console.error(`${prefix} | ${line}`);
});
});
childProcess.on('close', (code) => {
console.log(`${prefix} Child process exited with code ${code}`);
});
childProcess.on('error', (stuff) => {
console.log("error")
console.log(stuff)
})
return childProcess
}
const envFileContent = Object.entries(process.env)
.filter(([env]) => env.startsWith("VITE_"))
.map(([env, val]) => `${env}=${
(val.startsWith("\"") && val.endsWith("\""))
? val
: `"${val}"`
}`)
.join("\n")
fs.writeFileSync("build.env", envFileContent)
execSync(`npx import-meta-env -x build.env -e build.env -p "/site/**/*"`)
fs.rmSync("build.env")
const caddyFileName = process.env.ENABLE_SUBPATH_BASED_ACCESS === 'true' ? 'aio-subpath-access.Caddyfile' : 'aio-multiport-setup.Caddyfile'
const caddyProcess = runChildProcessWithPrefix("caddy", ["run", "--config", `/etc/caddy/${caddyFileName}`, "--adapter", "caddyfile"], "App/Admin Dashboard Caddy")
const backendProcess = runChildProcessWithPrefix("pnpm", ["run", "start:prod"], "Backend Server")
caddyProcess.on("exit", (code) => {
console.log(`Exiting process because Caddy Server exited with code ${code}`)
process.exit(code)
})
backendProcess.on("exit", (code) => {
console.log(`Exiting process because Backend Server exited with code ${code}`)
process.exit(code)
})
process.on('SIGINT', () => {
console.log("SIGINT received, exiting...")
caddyProcess.kill("SIGINT")
backendProcess.kill("SIGINT")
process.exit(0)
})

View File

@@ -1,23 +1,155 @@
# To make it easier to self-host, we have a preset docker compose config that also
# has a container with a Postgres instance running.
# You can tweak around this file to match your instances
version: "3.7"
services:
web:
# This service runs the backend app in the port 3170
hoppscotch-backend:
container_name: hoppscotch-backend
build:
dockerfile: prod.Dockerfile
context: .
target: backend
env_file:
- ./.env
restart: always
environment:
# Edit the below line to match your PostgresDB URL if you have an outside DB (make sure to update the .env file as well)
- DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch?connect_timeout=300
- PORT=8080
volumes:
- "./.hoppscotch:/app/.hoppscotch"
- "./assets:/app/assets"
- "./directives:/app/directives"
- "./layouts:/app/layouts"
- "./middleware:/app/middleware"
- "./pages:/app/pages"
- "./plugins:/app/plugins"
- "./static:/app/static"
- "./store:/app/store"
- "./components:/app/components"
- "./helpers:/app/helpers"
# Uncomment the line below when modifying code. Only applicable when using the "dev" target.
# - ./packages/hoppscotch-backend/:/usr/src/app
- /usr/src/app/node_modules/
depends_on:
hoppscotch-db:
condition: service_healthy
ports:
- "3180:80"
- "3170:3170"
# The main hoppscotch app. This will be hosted at port 3000
# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for
# the SH admin dashboard server at packages/hoppscotch-selfhost-web/Caddyfile
hoppscotch-app:
container_name: hoppscotch-app
build:
dockerfile: prod.Dockerfile
context: .
target: app
env_file:
- ./.env
depends_on:
- hoppscotch-backend
ports:
- "3080:80"
- "3000:3000"
# The Self Host dashboard for managing the app. This will be hosted at port 3100
# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for
# the SH admin dashboard server at packages/hoppscotch-sh-admin/Caddyfile
hoppscotch-sh-admin:
container_name: hoppscotch-sh-admin
build:
dockerfile: prod.Dockerfile
context: .
target: sh_admin
env_file:
- ./.env
depends_on:
- hoppscotch-backend
ports:
- "3280:80"
- "3100:3100"
# The service that spins up all 3 services at once in one container
hoppscotch-aio:
container_name: hoppscotch-aio
restart: unless-stopped
build:
dockerfile: prod.Dockerfile
context: .
target: aio
env_file:
- ./.env
depends_on:
hoppscotch-db:
condition: service_healthy
ports:
- "3000:3000"
- "3100:3100"
- "3170:3170"
- "3080:80"
# The preset DB service, you can delete/comment the below lines if
# you are using an external postgres instance
# This will be exposed at port 5432
hoppscotch-db:
image: postgres:15
ports:
- "5432:5432"
user: postgres
environment:
HOST: 0.0.0.0
command: "pnpm run dev"
# The default user defined by the docker image
POSTGRES_USER: postgres
# NOTE: Please UPDATE THIS PASSWORD!
POSTGRES_PASSWORD: testpass
POSTGRES_DB: hoppscotch
healthcheck:
test:
[
"CMD-SHELL",
"sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'"
]
interval: 5s
timeout: 5s
retries: 10
# All the services listed below are deprececated
hoppscotch-old-backend:
container_name: hoppscotch-old-backend
build:
dockerfile: packages/hoppscotch-backend/Dockerfile
context: .
target: dev
env_file:
- ./.env
restart: always
environment:
# Edit the below line to match your PostgresDB URL if you have an outside DB (make sure to update the .env file as well)
- DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch?connect_timeout=300
- PORT=3000
volumes:
# Uncomment the line below when modifying code. Only applicable when using the "dev" target.
- ./packages/hoppscotch-backend/:/usr/src/app
- /usr/src/app/node_modules/
depends_on:
hoppscotch-db:
condition: service_healthy
ports:
- "3170:3000"
hoppscotch-old-app:
container_name: hoppscotch-old-app
build:
dockerfile: packages/hoppscotch-selfhost-web/Dockerfile
context: .
env_file:
- ./.env
depends_on:
- hoppscotch-old-backend
ports:
- "3000:8080"
hoppscotch-old-sh-admin:
container_name: hoppscotch-old-sh-admin
build:
dockerfile: packages/hoppscotch-sh-admin/Dockerfile
context: .
env_file:
- ./.env
depends_on:
- hoppscotch-old-backend
ports:
- "3100:8080"

View File

@@ -5,9 +5,9 @@
},
"hosting": {
"predeploy": [
"cd packages/hoppscotch-app && mv .env.example .env && cd ../.. && npm install -g pnpm && pnpm i && pnpm run generate"
"mv .env.example .env && npm install -g pnpm && pnpm i && pnpm run generate"
],
"public": "packages/hoppscotch-app/dist",
"public": "packages/hoppscotch-web/dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{

14
healthcheck.sh Normal file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
curlCheck() {
if ! curl -s --head "$1" | head -n 1 | grep -q "HTTP/1.[01] [23].."; then
echo "URL request failed!"
exit 1
else
echo "URL request succeeded!"
fi
}
curlCheck "http://localhost:3000"
curlCheck "http://localhost:3100"
curlCheck "http://localhost:3170/ping"

View File

@@ -4,13 +4,13 @@
[build]
base = "/"
publish = "packages/hoppscotch-app/dist"
publish = "packages/hoppscotch-web/dist"
command = "npx pnpm i --store=node_modules/.pnpm-store && npx pnpm run generate"
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-Frame-Options = "SAMEORIGIN"
X-XSS-Protection = "1; mode=block"
[[redirects]]

View File

@@ -9,25 +9,39 @@
"preinstall": "npx only-allow pnpm",
"prepare": "husky install",
"dev": "pnpm -r do-dev",
"gen-gql": "cross-env GQL_SCHEMA_EMIT_LOCATION='../../../gql-gen/backend-schema.gql' pnpm -r generate-gql-sdl",
"generate": "pnpm -r do-build-prod",
"start": "http-server packages/hoppscotch-app/dist -p 3000",
"start": "http-server packages/hoppscotch-selfhost-web/dist -p 3000",
"lint": "pnpm -r do-lint",
"typecheck": "pnpm -r do-typecheck",
"lintfix": "pnpm -r do-lintfix",
"pre-commit": "pnpm -r do-lint && pnpm -r do-typecheck",
"test": "pnpm -r do-test"
"test": "pnpm -r do-test",
"generate-ui": "pnpm -r do-build-ui"
},
"workspaces": [
"./packages/*"
],
"dependencies": {
"husky": "^7.0.4",
"lint-staged": "^12.3.8"
},
"devDependencies": {
"@commitlint/cli": "^16.2.3",
"@commitlint/config-conventional": "^16.2.1",
"@types/node": "^17.0.24",
"http-server": "^14.1.1"
"@hoppscotch/ui": "^0.1.0",
"@types/node": "17.0.27",
"cross-env": "^7.0.3",
"http-server": "^14.1.1",
"husky": "^7.0.4",
"lint-staged": "12.4.0"
},
"pnpm": {
"overrides": {
"vue": "3.3.9"
},
"packageExtensions": {
"httpsnippet@^3.0.1": {
"peerDependencies": {
"ajv": "6.12.3"
}
}
}
}
}

View File

@@ -17,16 +17,16 @@
"types": "dist/index.d.ts",
"sideEffects": false,
"dependencies": {
"@codemirror/language": "^6.2.0",
"@lezer/highlight": "^1.0.0",
"@lezer/lr": "^1.2.0"
"@codemirror/language": "6.9.3",
"@lezer/highlight": "1.2.0",
"@lezer/lr": "^1.3.14"
},
"devDependencies": {
"@lezer/generator": "^1.1.0",
"@lezer/generator": "^1.5.1",
"mocha": "^9.2.2",
"rollup": "^2.70.2",
"rollup-plugin-dts": "^4.2.1",
"rollup-plugin-ts": "^2.0.7",
"typescript": "^4.6.3"
"rollup": "^3.29.3",
"rollup-plugin-dts": "^6.0.2",
"rollup-plugin-ts": "^3.4.5",
"typescript": "^5.2.2"
}
}

View File

@@ -1,27 +0,0 @@
# Google Analytics ID
VITE_GA_ID=UA-61422507-4
# Google Tag Manager ID
VITE_GTM_ID=GTM-NMKVBMV
# Firebase config
VITE_API_KEY=AIzaSyCMsFreESs58-hRxTtiqQrIcimh4i1wbsM
VITE_AUTH_DOMAIN=postwoman-api.firebaseapp.com
VITE_DATABASE_URL=https://postwoman-api.firebaseio.com
VITE_PROJECT_ID=postwoman-api
VITE_STORAGE_BUCKET=postwoman-api.appspot.com
VITE_MESSAGING_SENDER_ID=421993993223
VITE_APP_ID=1:421993993223:web:ec0baa8ee8c02ffa1fc6a2
VITE_MEASUREMENT_ID=G-BBJ3R80PJT
# Base URL
VITE_BASE_URL=https://hoppscotch.io
# Backend URLs
VITE_BACKEND_GQL_URL=https://api.hoppscotch.io/graphql
VITE_BACKEND_WS_URL=wss://api.hoppscotch.io/graphql
# Sentry (Optional)
# VITE_SENTRY_DSN: <Sentry DSN here>
# VITE_SENTRY_ENVIRONMENT: <Sentry environment value here>
# VITE_SENTRY_RELEASE_TAG: <Sentry release tag here (for release monitoring)>

View File

@@ -1,13 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22" />
</svg>

Before

Width:  |  Height:  |  Size: 504 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width=".88em" height="1em" viewBox="0 0 21 24" class="iconify iconify--fontisto"><path fill="currentColor" d="M12.731 2.751 17.666 5.6a2.138 2.138 0 1 1 2.07 3.548l-.015.003v5.7a2.14 2.14 0 1 1-2.098 3.502l-.002-.002-4.905 2.832a2.14 2.14 0 1 1-4.079.054l-.004.015-4.941-2.844a2.14 2.14 0 1 1-2.067-3.556l.015-.003V9.15a2.14 2.14 0 1 1 1.58-3.926l-.01-.005c.184.106.342.231.479.376l.001.001 4.938-2.85a2.14 2.14 0 1 1 4.096.021l.004-.015zm-.515.877a.766.766 0 0 1-.057.057l-.001.001 6.461 11.19c.026-.009.056-.016.082-.023V9.146a2.14 2.14 0 0 1-1.555-2.603l-.003.015.019-.072zm-3.015.059-.06-.06-4.946 2.852A2.137 2.137 0 0 1 2.749 9.12l-.015.004-.076.021v5.708l.084.023 6.461-11.19zm2.076.507a2.164 2.164 0 0 1-1.207-.004l.015.004-6.46 11.189c.286.276.496.629.597 1.026l.003.015h12.911c.102-.413.313-.768.599-1.043l.001-.001L11.28 4.194zm.986 16.227 4.917-2.838a1.748 1.748 0 0 1-.038-.142H4.222l-.021.083 4.939 2.852c.39-.403.936-.653 1.54-.653.626 0 1.189.268 1.581.696l.001.002z"/></svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1,492 +0,0 @@
* {
@apply backface-hidden;
@apply before: backface-hidden;
@apply after: backface-hidden;
@apply selection: bg-accentDark;
@apply selection: text-accentContrast;
}
:root {
@apply antialiased;
accent-color: var(--accent-color);
font-variant-ligatures: common-ligatures;
}
::-webkit-scrollbar-track {
@apply bg-transparent;
@apply border-solid border-l border-dividerLight border-t-0 border-b-0 border-r-0;
}
::-webkit-scrollbar-thumb {
@apply bg-divider bg-clip-content;
@apply rounded-full;
@apply border-solid border-transparent border-4;
@apply hover: bg-dividerDark;
@apply hover: bg-clip-content;
}
::-webkit-scrollbar {
@apply w-4;
@apply h-0;
}
input::placeholder,
textarea::placeholder,
.cm-placeholder {
@apply text-secondary;
@apply opacity-35;
}
input,
textarea {
@apply text-secondaryDark;
@apply font-medium;
}
html {
scroll-behavior: smooth;
}
body {
@apply bg-primary;
@apply text-secondary text-body;
@apply font-medium;
@apply select-none;
@apply overflow-x-hidden;
@apply leading-body;
animation: fade 300ms forwards;
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
}
@keyframes fade {
0% {
@apply opacity-0;
}
100% {
@apply opacity-100;
}
}
.fade-enter-active,
.fade-leave-active {
@apply transition-opacity;
}
.fade-enter-from,
.fade-leave-to {
@apply opacity-0;
}
.slide-enter-active,
.slide-leave-active {
@apply transition;
@apply duration-300;
}
.slide-enter-from,
.slide-leave-to {
@apply transform;
@apply translate-x-full;
}
.svg-icons {
@apply flex-shrink-0;
@apply overflow-hidden;
height: var(--line-height-body);
width: var(--line-height-body);
}
a {
@apply inline-flex;
@apply text-current;
@apply no-underline;
@apply transition;
@apply leading-body;
@apply focus: outline-none;
&.link {
@apply items-center;
@apply py-0.5 px-1;
@apply -my-0.5 -mx-1;
@apply text-accent;
@apply rounded;
@apply hover: text-accentDark;
@apply focus-visible: ring;
@apply focus-visible: ring-accent;
@apply focus-visible: text-accentDark;
}
}
.cm-tooltip {
.tippy-box {
@apply fixed;
@apply -mt-6;
}
}
.tippy-box[data-theme="tooltip"] {
@apply bg-tooltip;
@apply text-primary;
@apply font-semibold;
@apply py-1 px-2;
@apply rounded;
@apply truncate;
@apply shadow;
@apply leading-body;
font-size: 86%;
kbd {
@apply hidden;
@apply font-sans;
@apply bg-gray-500/45;
@apply text-primaryLight;
@apply rounded-sm;
@apply px-1;
@apply my-0 ml-1;
@apply truncate;
@apply sm: inline-flex;
}
.tippy-svg-arrow svg {
@apply fill-tooltip;
}
}
.tippy-box[data-theme="popover"] {
@apply flex flex-col;
@apply max-h-48;
@apply items-stretch;
@apply overflow-y-auto;
@apply bg-popover;
@apply text-secondary text-body;
@apply p-2;
@apply shadow-lg;
@apply leading-body;
@apply border border-dividerDark;
@apply focus: outline-none;
scroll-behavior: smooth;
.tippy-svg-arrow svg {
@apply fill-popover;
}
}
.tippy-content {
@apply p-0;
}
[data-v-tippy] {
@apply flex flex-1;
}
[interactive] > div {
@apply flex flex-1;
@apply h-full;
}
hr {
@apply border-b border-dividerLight;
@apply my-2;
}
.heading {
@apply font-bold;
@apply text-secondaryDark text-lg;
@apply tracking-tight;
}
.input,
.select,
.textarea {
@apply flex;
@apply w-full;
@apply py-2 px-4;
@apply bg-transparent;
@apply rounded;
@apply text-secondaryDark;
@apply border border-divider;
@apply focus-visible: border-dividerDark;
}
input,
select,
textarea,
button {
@apply truncate;
@apply transition;
@apply text-body;
@apply leading-body;
@apply focus: outline-none;
@apply disabled: cursor-not-allowed;
}
.input[type="file"],
.input[type="radio"],
#installPWA {
@apply hidden;
}
.floating-input ~ label {
@apply absolute;
@apply px-2 py-0.5;
@apply m-2;
@apply rounded;
@apply transition;
@apply origin-top-left;
}
.floating-input:focus-within ~ label,
.floating-input:not(:placeholder-shown) ~ label {
@apply bg-primary;
@apply transform;
@apply origin-top-left;
@apply scale-75;
@apply translate-x-1 -translate-y-4;
}
.floating-input:focus-within ~ label {
@apply text-secondaryDark;
}
pre.ace_editor {
@apply font-mono;
@apply resize-none;
@apply z-0;
}
.select {
@apply appearance-none;
@apply cursor-pointer;
&::-ms-expand {
@apply hidden;
}
}
.select-wrapper {
@apply flex flex-1;
@apply relative;
@apply after: absolute;
@apply after: flex;
@apply after: inset-y-0;
@apply after: items-center;
@apply after: justify-center;
@apply after: pointer-events-none;
@apply after: font-icon;
@apply after: text-secondaryLight;
@apply after: right-3;
@apply after: content-["\e313"];
}
.info-response {
@apply text-pink-500;
}
.success-response {
@apply text-green-500;
}
.redir-response {
@apply text-yellow-500;
}
.cl-error-response {
@apply text-red-500;
}
.sv-error-response {
@apply text-red-600;
}
.missing-data-response {
@apply text-secondaryLight;
}
.toasted-container {
@apply max-w-md;
.toasted {
&.toasted-primary {
@apply px-4 py-2;
@apply bg-tooltip;
@apply border-secondaryDark;
@apply text-primary text-body;
@apply justify-between;
@apply shadow-lg;
@apply font-semibold;
@apply transition;
@apply leading-body;
@apply sm: rounded;
@apply sm: border;
.action {
@apply relative;
@apply flex flex-shrink-0;
@apply text-body;
@apply px-4;
@apply my-1;
@apply ml-auto;
@apply normal-case;
@apply font-semibold;
@apply leading-body;
@apply tracking-normal;
@apply rounded;
@apply last: ml-4;
@apply sm: ml-8;
@apply before: absolute;
@apply before: bg-current;
@apply before: opacity-10;
@apply before: inset-0;
@apply before: transition;
@apply before: content-DEFAULT;
@apply hover: no-underline;
@apply hover: before:opacity-20;
}
}
&.info {
@apply bg-accent;
@apply text-accentContrast;
@apply border-accentDark;
}
&.error {
@apply bg-red-200;
@apply text-red-800;
@apply border-red-400;
}
&.success {
@apply bg-green-200;
@apply text-green-800;
@apply border-green-400;
}
}
}
.smart-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
@apply before: absolute;
@apply before: inset-0;
@apply before: bg-accentLight;
@apply before: opacity-0;
@apply before: z-20;
@apply before: transition;
@apply before: content-DEFAULT;
@apply after: absolute;
@apply after: inset-0;
@apply after: z-20;
@apply after: transition;
@apply after: flex;
@apply after: items-center;
@apply after: justify-center;
@apply after: text-dividerDark;
@apply after: font-icon;
@apply hover: before:opacity-100;
@apply hover: after:text-accentDark;
}
.no-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
}
.smart-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-1;
@apply before: -left-0.5;
@apply before: -right-0.5;
@apply before: h-full;
@apply after: content-["\e5d4"];
}
.smart-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-1;
@apply before: -top-0.5;
@apply before: -bottom-0.5;
@apply before: w-full;
@apply after: content-["\e5d3"];
}
.no-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-0.5;
@apply pointer-events-none;
}
.no-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-0.5;
@apply pointer-events-none;
}
.cm-focused {
@apply select-auto;
@apply outline-none #{!important};
.cm-activeLine {
@apply bg-primaryLight;
}
.cm-activeLineGutter {
@apply bg-primaryDark;
}
}
.cm-editor {
.cm-line::selection {
@apply bg-accentDark #{!important};
@apply text-accentContrast #{!important};
}
.cm-line ::selection {
@apply bg-accentDark #{!important};
@apply text-accentContrast #{!important};
}
}
.shortcut-key {
@apply inline-flex;
@apply font-sans;
@apply text-tiny;
@apply bg-divider;
@apply rounded;
@apply ml-2;
@apply px-1;
@apply border border-dividerDark;
@apply shadow-sm;
@apply <sm:hidden;
}
.capitalize-first {
@apply first-letter: capitalize;
}
details {
@apply select-none;
}
details summary::-webkit-details-marker {
@apply hidden;
}
details[open] summary .indicator {
@apply transform;
@apply rotate-90;
}
@media (max-width: 767px) {
main {
margin-bottom: env(safe-area-inset-bottom);
}
}
.env-highlight {
* {
@apply text-accentContrast;
}
}
#nprogress .bar {
@apply bg-accent #{!important};
}

View File

@@ -1,307 +0,0 @@
@mixin base-theme {
--font-sans: "Inter", sans-serif;
--font-mono: "Roboto Mono", monospace;
--font-icon: "Material Icons";
--font-size-tiny: calc(var(--font-size-body) - 0.062rem);
}
@mixin dark-theme {
--primary-color: theme("colors.neutral.900");
--primary-light-color: theme("colors.dark.600");
--primary-dark-color: theme("colors.neutral.800");
--primary-contrast-color: #161616;
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.100");
--divider-color: theme("colors.neutral.800");
--divider-light-color: theme("colors.dark.500");
--divider-dark-color: theme("colors.dark.300");
--error-color: theme("colors.stone.800");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.700");
--editor-theme: "merbivore_soft";
}
@mixin light-theme {
--primary-color: theme("colors.white");
--primary-light-color: theme("colors.neutral.50");
--primary-dark-color: theme("colors.neutral.100");
--primary-contrast-color: #fefefe;
--secondary-color: theme("colors.neutral.500");
--secondary-light-color: theme("colors.neutral.400");
--secondary-dark-color: theme("colors.neutral.900");
--divider-color: theme("colors.gray.100");
--divider-light-color: theme("colors.neutral.100");
--divider-dark-color: theme("colors.neutral.300");
--error-color: theme("colors.yellow.100");
--tooltip-color: theme("colors.neutral.800");
--popover-color: theme("colors.white");
--editor-theme: "textmate";
}
@mixin black-theme {
--primary-color: theme("colors.dark.900");
--primary-light-color: theme("colors.neutral.900");
--primary-dark-color: theme("colors.dark.800");
--primary-contrast-color: #0e0e0e;
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.100");
--divider-color: theme("colors.neutral.800");
--divider-light-color: theme("colors.dark.800");
--divider-dark-color: theme("colors.dark.300");
--error-color: theme("colors.stone.900");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.600");
--editor-theme: "twilight";
}
@mixin dark-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.blue.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.fuchsia.400");
--editor-constant-color: theme("colors.violet.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin light-editor-theme {
--editor-type-color: theme("colors.purple.600");
--editor-name-color: theme("colors.red.600");
--editor-operator-color: theme("colors.indigo.600");
--editor-invalid-color: theme("colors.red.600");
--editor-separator-color: theme("colors.gray.600");
--editor-meta-color: theme("colors.gray.600");
--editor-variable-color: theme("colors.green.600");
--editor-link-color: theme("colors.cyan.600");
--editor-process-color: theme("colors.blue.600");
--editor-constant-color: theme("colors.fuchsia.600");
--editor-keyword-color: theme("colors.pink.600");
}
@mixin black-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.fuchsia.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.violet.400");
--editor-constant-color: theme("colors.blue.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin green-theme {
--accent-color: theme("colors.green.500");
--accent-light-color: theme("colors.green.400");
--accent-dark-color: theme("colors.green.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.green.200");
--gradient-via-color: theme("colors.green.400");
--gradient-to-color: theme("colors.green.600");
}
@mixin teal-theme {
--accent-color: theme("colors.teal.500");
--accent-light-color: theme("colors.teal.400");
--accent-dark-color: theme("colors.teal.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.teal.200");
--gradient-via-color: theme("colors.teal.400");
--gradient-to-color: theme("colors.teal.600");
}
@mixin blue-theme {
--accent-color: theme("colors.blue.500");
--accent-light-color: theme("colors.blue.400");
--accent-dark-color: theme("colors.blue.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.blue.200");
--gradient-via-color: theme("colors.blue.400");
--gradient-to-color: theme("colors.blue.600");
}
@mixin indigo-theme {
--accent-color: theme("colors.indigo.500");
--accent-light-color: theme("colors.indigo.400");
--accent-dark-color: theme("colors.indigo.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.indigo.200");
--gradient-via-color: theme("colors.indigo.400");
--gradient-to-color: theme("colors.indigo.600");
}
@mixin purple-theme {
--accent-color: theme("colors.purple.500");
--accent-light-color: theme("colors.purple.400");
--accent-dark-color: theme("colors.purple.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.purple.200");
--gradient-via-color: theme("colors.purple.400");
--gradient-to-color: theme("colors.purple.600");
}
@mixin yellow-theme {
--accent-color: theme("colors.yellow.500");
--accent-light-color: theme("colors.yellow.400");
--accent-dark-color: theme("colors.yellow.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.yellow.200");
--gradient-via-color: theme("colors.yellow.400");
--gradient-to-color: theme("colors.yellow.600");
}
@mixin orange-theme {
--accent-color: theme("colors.orange.500");
--accent-light-color: theme("colors.orange.400");
--accent-dark-color: theme("colors.orange.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.orange.200");
--gradient-via-color: theme("colors.orange.400");
--gradient-to-color: theme("colors.orange.600");
}
@mixin red-theme {
--accent-color: theme("colors.red.500");
--accent-light-color: theme("colors.red.400");
--accent-dark-color: theme("colors.red.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.red.200");
--gradient-via-color: theme("colors.red.400");
--gradient-to-color: theme("colors.red.600");
}
@mixin pink-theme {
--accent-color: theme("colors.pink.500");
--accent-light-color: theme("colors.pink.400");
--accent-dark-color: theme("colors.pink.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.pink.200");
--gradient-via-color: theme("colors.pink.400");
--gradient-to-color: theme("colors.pink.600");
}
:root {
@include base-theme;
@include dark-theme;
@include green-theme;
@include dark-editor-theme;
}
:root.light {
@include light-theme;
@include light-editor-theme;
}
:root.dark {
@include dark-theme;
@include dark-editor-theme;
}
:root.black {
@include black-theme;
@include black-editor-theme;
}
:root[data-accent="blue"] {
@include blue-theme;
}
:root[data-accent="green"] {
@include green-theme;
}
:root[data-accent="teal"] {
@include teal-theme;
}
:root[data-accent="indigo"] {
@include indigo-theme;
}
:root[data-accent="purple"] {
@include purple-theme;
}
:root[data-accent="orange"] {
@include orange-theme;
}
:root[data-accent="pink"] {
@include pink-theme;
}
:root[data-accent="red"] {
@include red-theme;
}
:root[data-accent="yellow"] {
@include yellow-theme;
}
@mixin font-small {
--font-size-body: 0.75rem;
--line-height-body: 1rem;
--upper-primary-sticky-fold: 4.125rem;
--upper-secondary-sticky-fold: 6.188rem;
--upper-tertiary-sticky-fold: 8.25rem;
--upper-mobile-primary-sticky-fold: 6.625rem;
--upper-mobile-secondary-sticky-fold: 8.688rem;
--upper-mobile-sticky-fold: 10.75rem;
--upper-mobile-tertiary-sticky-fold: 8.25rem;
--lower-primary-sticky-fold: 3rem;
--lower-secondary-sticky-fold: 5.063rem;
--lower-tertiary-sticky-fold: 7.125rem;
--sidebar-primary-sticky-fold: 2rem;
}
@mixin font-medium {
--font-size-body: 0.875rem;
--line-height-body: 1.25rem;
--upper-primary-sticky-fold: 4.375rem;
--upper-secondary-sticky-fold: 6.688rem;
--upper-tertiary-sticky-fold: 9rem;
--upper-mobile-primary-sticky-fold: 7.125rem;
--upper-mobile-secondary-sticky-fold: 9.438rem;
--upper-mobile-sticky-fold: 11.75rem;
--upper-mobile-tertiary-sticky-fold: 9rem;
--lower-primary-sticky-fold: 3.25rem;
--lower-secondary-sticky-fold: 5.563rem;
--lower-tertiary-sticky-fold: 7.875rem;
--sidebar-primary-sticky-fold: 2.25rem;
}
@mixin font-large {
--font-size-body: 1rem;
--line-height-body: 1.5rem;
--upper-primary-sticky-fold: 4.625rem;
--upper-secondary-sticky-fold: 7.188rem;
--upper-tertiary-sticky-fold: 9.75rem;
--upper-mobile-primary-sticky-fold: 7.625rem;
--upper-mobile-secondary-sticky-fold: 10.188rem;
--upper-mobile-sticky-fold: 12.75rem;
--upper-mobile-tertiary-sticky-fold: 9.75rem;
--lower-primary-sticky-fold: 3.5rem;
--lower-secondary-sticky-fold: 6.063rem;
--lower-tertiary-sticky-fold: 8.625rem;
--sidebar-primary-sticky-fold: 2.5rem;
}
:root[data-font-size="small"] {
@include font-small;
}
:root[data-font-size="medium"] {
@include font-medium;
}
:root[data-font-size="large"] {
@include font-large;
}

View File

@@ -1,672 +0,0 @@
{
"action": {
"autoscroll": "Autoscroll",
"cancel": "Cancel",
"choose_file": "Choose a file",
"clear": "Clear",
"clear_all": "Clear all",
"close": "Close",
"connect": "Connect",
"copy": "Copy",
"delete": "Delete",
"disconnect": "Disconnect",
"dismiss": "Dismiss",
"dont_save": "Don't save",
"download_file": "Download file",
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Edit",
"filter_response": "Filter response",
"go_back": "Go back",
"label": "Label",
"learn_more": "Learn more",
"less": "Less",
"more": "More",
"new": "New",
"no": "No",
"open_workspace": "Open workspace",
"paste": "Paste",
"prettify": "Prettify",
"remove": "Remove",
"restore": "Restore",
"save": "Save",
"scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top",
"search": "Search",
"send": "Send",
"start": "Start",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
"to_select": "to select",
"turn_off": "Turn off",
"turn_on": "Turn on",
"undo": "Undo",
"yes": "Yes"
},
"add": {
"new": "Add new",
"star": "Add star"
},
"app": {
"chat_with_us": "Chat with us",
"contact_us": "Contact us",
"copy": "Copy",
"copy_user_id": "Copy User Auth Token",
"developer_option": "Developer options",
"developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.",
"discord": "Discord",
"documentation": "Documentation",
"github": "GitHub",
"help": "Help & feedback",
"home": "Home",
"invite": "Invite",
"invite_description": "Hoppscotch is an open source API development ecosystem. We designed a simple and intuitive interface for creating and managing your APIs. Hoppscotch is a tool that helps you build, test, document and share your APIs.",
"invite_your_friends": "Invite your friends",
"join_discord_community": "Join our Discord community",
"keyboard_shortcuts": "Keyboard shortcuts",
"name": "Hoppscotch",
"new_version_found": "New version found. Refresh to update.",
"options": "Options",
"proxy_privacy_policy": "Proxy privacy policy",
"reload": "Reload",
"search": "Search",
"share": "Share",
"shortcuts": "Shortcuts",
"spotlight": "Spotlight",
"status": "Status",
"status_description": "Check the status of the website",
"terms_and_privacy": "Terms and privacy",
"twitter": "Twitter",
"type_a_command_search": "Type a command or search…",
"we_use_cookies": "We use cookies",
"whats_new": "What's new?",
"wiki": "Wiki"
},
"auth": {
"account_exists": "Account exists with different credential - Login to link both accounts",
"all_sign_in_options": "All sign in options",
"continue_with_email": "Continue with Email",
"continue_with_github": "Continue with GitHub",
"continue_with_google": "Continue with Google",
"continue_with_microsoft": "Continue with Microsoft",
"email": "Email",
"logged_out": "Logged out",
"login": "Login",
"login_success": "Successfully logged in",
"login_to_hoppscotch": "Login to Hoppscotch",
"logout": "Logout",
"re_enter_email": "Re-enter email",
"send_magic_link": "Send a magic link",
"sync": "Sync",
"we_sent_magic_link": "We sent you a magic link!",
"we_sent_magic_link_description": "Check your inbox - we sent an email to {email}. It contains a magic link that will log you in."
},
"authorization": {
"generate_token": "Generate Token",
"include_in_url": "Include in URL",
"learn": "Learn how",
"pass_key_by": "Pass by",
"password": "Password",
"token": "Token",
"type": "Authorization Type",
"username": "Username"
},
"collection": {
"created": "Collection created",
"edit": "Edit Collection",
"invalid_name": "Please provide a name for the collection",
"my_collections": "My Collections",
"name": "My New Collection",
"name_length_insufficient": "Collection name should be at least 3 characters long",
"new": "New Collection",
"renamed": "Collection renamed",
"request_in_use": "Request in use",
"save_as": "Save as",
"select": "Select a Collection",
"select_location": "Select location",
"select_team": "Select a team",
"team_collections": "Team Collections"
},
"confirm": {
"exit_team": "Are you sure you want to leave this team?",
"logout": "Are you sure you want to logout?",
"remove_collection": "Are you sure you want to permanently delete this collection?",
"remove_environment": "Are you sure you want to permanently delete this environment?",
"remove_folder": "Are you sure you want to permanently delete this folder?",
"remove_history": "Are you sure you want to permanently delete all history?",
"remove_request": "Are you sure you want to permanently delete this request?",
"remove_team": "Are you sure you want to delete this team?",
"remove_telemetry": "Are you sure you want to opt-out of Telemetry?",
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"sync": "Would you like to restore your workspace from cloud? This will discard your local progress."
},
"count": {
"header": "Header {count}",
"message": "Message {count}",
"parameter": "Parameter {count}",
"protocol": "Protocol {count}",
"value": "Value {count}",
"variable": "Variable {count}"
},
"documentation": {
"generate": "Generate documentation",
"generate_message": "Import any Hoppscotch collection to generate API documentation on-the-go."
},
"empty": {
"authorization": "This request does not use any authorization",
"body": "This request does not have a body",
"collection": "Collection is empty",
"collections": "Collections are empty",
"documentation": "Connect to a GraphQL endpoint to view documentation",
"endpoint": "Endpoint cannot be empty",
"environments": "Environments are empty",
"folder": "Folder is empty",
"headers": "This request does not have any headers",
"history": "History is empty",
"invites": "Invite list is empty",
"members": "Team is empty",
"parameters": "This request does not have any parameters",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"protocols": "Protocols are empty",
"schema": "Connect to a GraphQL endpoint to view schema",
"shortcodes": "Shortcodes are empty",
"team_name": "Team name empty",
"teams": "You don't belong to any teams",
"tests": "There are no tests for this request"
},
"environment": {
"add_to_global": "Add to Global",
"added": "Environment addition",
"create_new": "Create new environment",
"created": "Environment created",
"deleted": "Environment deletion",
"edit": "Edit Environment",
"invalid_name": "Please provide a name for the environment",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "New Environment",
"no_environment": "No environment",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Select environment",
"title": "Environments",
"updated": "Environment updated",
"variable_list": "Variable List"
},
"error": {
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
"check_console_details": "Check console log for details.",
"curl_invalid_format": "cURL is not formatted properly",
"empty_req_name": "Empty Request Name",
"f12_details": "(F12 for details)",
"gql_prettify_invalid_query": "Couldn't prettify an invalid query, solve query syntax errors and try again",
"incomplete_config_urls": "Incomplete configuration URLs",
"incorrect_email": "Incorrect email",
"invalid_link": "Invalid link",
"invalid_link_description": "The link you clicked is invalid or expired.",
"json_parsing_failed": "Invalid JSON",
"json_prettify_invalid_body": "Couldn't prettify an invalid body, solve json syntax errors and try again",
"network_error": "There seems to be a network error. Please try again.",
"network_fail": "Could not send request",
"no_duration": "No duration",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"script_fail": "Could not execute pre-request script",
"something_went_wrong": "Something went wrong",
"test_script_fail": "Could not execute post-request script"
},
"export": {
"as_json": "Export as JSON",
"create_secret_gist": "Create secret Gist",
"gist_created": "Gist created",
"require_github": "Login with GitHub to create secret gist",
"title": "Export"
},
"folder": {
"created": "Folder created",
"edit": "Edit Folder",
"invalid_name": "Please provide a name for the folder",
"name_length_insufficient": "Folder name should be at least 3 characters long",
"new": "New Folder",
"renamed": "Folder renamed"
},
"graphql": {
"mutations": "Mutations",
"schema": "Schema",
"subscriptions": "Subscriptions"
},
"header": {
"install_pwa": "Install app",
"login": "Login",
"save_workspace": "Save My Workspace"
},
"helpers": {
"authorization": "The authorization header will be automatically generated when you send the request.",
"generate_documentation_first": "Generate documentation first",
"network_fail": "Unable to reach the API endpoint. Check your network connection or select a different Interceptor and try again.",
"offline": "You seem to be offline. Data in this workspace might not be up to date.",
"offline_short": "You seem to be offline.",
"post_request_tests": "Test scripts are written in JavaScript, and are run after the response is received.",
"pre_request_script": "Pre-request scripts are written in JavaScript, and are run before the request is sent.",
"script_fail": "It seems there is a glitch in the pre-request script. Check the error below and fix the script accordingly.",
"test_script_fail": "There seems to be an error with test script. Please fix the errors and run tests again",
"tests": "Write a test script to automate debugging."
},
"hide": {
"collection": "Collapse Collection Panel",
"more": "Hide more",
"preview": "Hide Preview",
"sidebar": "Collapse sidebar"
},
"import": {
"collections": "Import collections",
"curl": "Import cURL",
"failed": "Error while importing: format not recognized",
"from_gist": "Import from Gist",
"from_gist_description": "Import from Gist URL",
"from_insomnia": "Import from Insomnia",
"from_insomnia_description": "Import from Insomnia collection",
"from_json": "Import from Hoppscotch",
"from_json_description": "Import from Hoppscotch collection file",
"from_my_collections": "Import from My Collections",
"from_my_collections_description": "Import from My Collections file",
"from_openapi": "Import from OpenAPI",
"from_openapi_description": "Import from OpenAPI specification file (YML/JSON)",
"from_postman": "Import from Postman",
"from_postman_description": "Import from Postman collection",
"from_url": "Import from URL",
"gist_url": "Enter Gist URL",
"import_from_url_invalid_fetch": "Couldn't get data from the url",
"import_from_url_invalid_file_format": "Error while importing collections",
"import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Collections Imported",
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import"
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen mode"
},
"modal": {
"collections": "Collections",
"confirm": "Confirm",
"edit_request": "Edit Request",
"import_export": "Import / Export"
},
"mqtt": {
"communication": "Communication",
"log": "Log",
"message": "Message",
"publish": "Publish",
"subscribe": "Subscribe",
"topic": "Topic",
"topic_name": "Topic Name",
"topic_title": "Publish / Subscribe topic",
"unsubscribe": "Unsubscribe",
"url": "URL"
},
"navigation": {
"doc": "Docs",
"graphql": "GraphQL",
"profile": "Profile",
"realtime": "Realtime",
"rest": "REST",
"settings": "Settings"
},
"preRequest": {
"javascript_code": "JavaScript Code",
"learn": "Read documentation",
"script": "Pre-Request Script",
"snippets": "Snippets"
},
"profile": {
"app_settings": "App Settings",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
"no_permission": "You do not have permission to perform this action.",
"owner": "Owner",
"owner_description": "Owners can add, edit, and delete requests, collections and team members.",
"roles": "Roles",
"roles_description": "Roles are used to control access to the shared collections.",
"updated": "Profile updated",
"viewer": "Viewer",
"viewer_description": "Viewers can only view and use requests."
},
"remove": {
"star": "Remove star"
},
"request": {
"added": "Request added",
"authorization": "Authorization",
"body": "Request Body",
"choose_language": "Choose language",
"content_type": "Content Type",
"content_type_titles": {
"others": "Others",
"structured": "Structured",
"text": "Text"
},
"copy_link": "Copy link",
"duration": "Duration",
"enter_curl": "Enter cURL",
"generate_code": "Generate code",
"generated_code": "Generated code",
"header_list": "Header List",
"invalid_name": "Please provide a name for the request",
"method": "Method",
"name": "Request name",
"new": "New Request",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Overridden",
"parameter_list": "Query Parameters",
"parameters": "Parameters",
"path": "Path",
"payload": "Payload",
"query": "Query",
"raw_body": "Raw Request Body",
"renamed": "Request renamed",
"run": "Run",
"save": "Save",
"save_as": "Save as",
"saved": "Request saved",
"share": "Share",
"share_description": "Share Hoppscotch with your friends",
"title": "Request",
"type": "Request type",
"url": "URL",
"variables": "Variables",
"view_my_links": "View my links"
},
"response": {
"body": "Response Body",
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
"headers": "Headers",
"html": "HTML",
"image": "Image",
"json": "JSON",
"pdf": "PDF",
"preview_html": "Preview HTML",
"raw": "Raw",
"size": "Size",
"status": "Status",
"time": "Time",
"title": "Response",
"waiting_for_connection": "waiting for connection",
"xml": "XML"
},
"settings": {
"accent_color": "Accent color",
"account": "アカウント",
"account_description": "Customize your account settings.",
"account_email_description": "Your primary email address.",
"account_name_description": "This is your display name.",
"background": "Background",
"black_mode": "Black",
"change_font_size": "Change font size",
"choose_language": "Choose language",
"dark_mode": "Dark",
"expand_navigation": "Expand navigation",
"experiments": "Experiments",
"experiments_notice": "This is a collection of experiments we're working on that might turn out to be useful, fun, both, or neither. They're not final and may not be stable, so if something overly weird happens, don't panic. Just turn the dang thing off. Jokes aside, ",
"extension_ver_not_reported": "Not Reported",
"extension_version": "Extension Version",
"extensions": "Browser extension",
"extensions_use_toggle": "Use the browser extension to send requests (if present)",
"follow": "Follow Us",
"font_size": "Font size",
"font_size_large": "Large",
"font_size_medium": "Medium",
"font_size_small": "Small",
"interceptor": "Interceptor",
"interceptor_description": "Middleware between application and APIs.",
"language": "Language",
"light_mode": "Light",
"official_proxy_hosting": "Official Proxy is hosted by Hoppscotch.",
"profile": "Profile",
"profile_description": "Update your profile details",
"profile_email": "Email address",
"profile_name": "Profile name",
"proxy": "Proxy",
"proxy_url": "Proxy URL",
"proxy_use_toggle": "Use the proxy middleware to send requests",
"read_the": "Read the",
"reset_default": "Reset to default",
"short_codes": "Short codes",
"short_codes_description": "Short codes which were created by you.",
"sidebar_on_left": "Sidebar on left",
"sync": "Synchronise",
"sync_collections": "Collections",
"sync_description": "These settings are synced to cloud.",
"sync_environments": "Environments",
"sync_history": "History",
"system_mode": "System",
"telemetry": "Telemetry",
"telemetry_helps_us": "Telemetry helps us to personalize our operations and deliver the best experience to you.",
"theme": "Theme",
"theme_description": "Customize your application theme.",
"use_experimental_url_bar": "Use experimental URL bar with environment highlighting",
"user": "User",
"verified_email": "Verified email",
"verify_email": "Verify email"
},
"shortcodes": {
"actions": "Actions",
"created_on": "Created on",
"deleted": "Shortcode deleted",
"method": "Method",
"not_found": "Shortcode not found",
"short_code": "Short code",
"url": "URL"
},
"shortcut": {
"general": {
"close_current_menu": "Close current menu",
"command_menu": "Search & command menu",
"help_menu": "Help menu",
"show_all": "Keyboard shortcuts",
"title": "General"
},
"miscellaneous": {
"invite": "Invite people to Hoppscotch",
"title": "Miscellaneous"
},
"navigation": {
"back": "Go back to previous page",
"documentation": "Go to Documentation page",
"forward": "Go forward to next page",
"graphql": "Go to GraphQL page",
"profile": "Go to Profile page",
"realtime": "Go to Realtime page",
"rest": "Go to REST page",
"settings": "Go to Settings page",
"title": "Navigation"
},
"request": {
"copy_request_link": "Copy Request Link",
"delete_method": "Select DELETE method",
"get_method": "Select GET method",
"head_method": "Select HEAD method",
"method": "Method",
"next_method": "Select Next method",
"post_method": "Select POST method",
"previous_method": "Select Previous method",
"put_method": "Select PUT method",
"reset_request": "Reset Request",
"save_to_collections": "Save to Collections",
"send_request": "Send Request",
"title": "Request"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
},
"theme": {
"black": "Switch theme to black mode",
"dark": "Switch theme to dark mode",
"light": "Switch theme to light mode",
"system": "Switch theme to system mode",
"title": "Theme"
}
},
"show": {
"code": "Show code",
"collection": "Expand Collection Panel",
"more": "Show more",
"sidebar": "Expand sidebar"
},
"socketio": {
"communication": "Communication",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"event_name": "Event Name",
"events": "Events",
"log": "Log",
"url": "URL"
},
"sse": {
"event_type": "Event type",
"log": "Log",
"url": "URL"
},
"state": {
"bulk_mode": "Bulk edit",
"bulk_mode_placeholder": "Entries are separated by newline\nKeys and values are separated by :\nPrepend # to any row you want to add but keep disabled",
"cleared": "Cleared",
"connected": "Connected",
"connected_to": "Connected to {name}",
"connecting_to": "Connecting to {name}...",
"connection_error": "Failed to connect",
"connection_failed": "Connection failed",
"connection_lost": "Connection lost",
"copied_to_clipboard": "Copied to clipboard",
"deleted": "Deleted",
"deprecated": "DEPRECATED",
"disabled": "Disabled",
"disconnected": "Disconnected",
"disconnected_from": "Disconnected from {name}",
"docs_generated": "Documentation generated",
"download_started": "Download started",
"enabled": "Enabled",
"file_imported": "File imported",
"finished_in": "Finished in {duration} ms",
"history_deleted": "History deleted",
"linewrap": "Wrap lines",
"loading": "Loading...",
"message_received": "Message: {message} arrived on topic: {topic}",
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
"none": "None",
"nothing_found": "Nothing found for",
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
"published_message": "Published message: {message} to topic: {topic}",
"reconnection_error": "Failed to reconnect",
"subscribed_failed": "Failed to subscribe to topic: {topic}",
"subscribed_success": "Successfully subscribed to topic: {topic}",
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
"unsubscribed_success": "Successfully unsubscribed from topic: {topic}",
"waiting_send_request": "Waiting to send request"
},
"support": {
"changelog": "Read more about latest releases",
"chat": "Questions? Chat with us!",
"community": "Ask questions and help others",
"documentation": "Read more about Hoppscotch",
"forum": "Ask questions and get answers",
"github": "Follow us on Github",
"shortcuts": "Browse app faster",
"team": "Get in touch with the team",
"title": "Support",
"twitter": "Follow us on Twitter"
},
"tab": {
"authorization": "Authorization",
"body": "Body",
"collections": "Collections",
"documentation": "Documentation",
"headers": "Headers",
"history": "History",
"mqtt": "MQTT",
"parameters": "Parameters",
"pre_request_script": "Pre-request Script",
"queries": "Queries",
"query": "Query",
"schema": "Schema",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Tests",
"types": "Types",
"variables": "Variables",
"websocket": "WebSocket"
},
"team": {
"already_member": "You are already a member of this team. Contact your team owner.",
"create_new": "Create new team",
"deleted": "Team deleted",
"edit": "Edit Team",
"email": "E-mail",
"email_do_not_match": "Email doesn't match with your account details. Contact your team owner.",
"exit": "Exit Team",
"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_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",
"invite": "Invite",
"invite_more": "Invite more",
"invite_tooltip": "Invite people to this workspace",
"invited_to_team": "{owner} invited you to join {team}",
"join": "Invitation accepted",
"join_beta": "Join the beta program to access teams.",
"join_team": "Join {team}",
"joined_team": "You have joined {team}",
"joined_team_description": "You are now a member of this team",
"left": "You left the team",
"login_to_continue": "Login to continue",
"login_to_continue_description": "You need to be logged in to join a team.",
"logout_and_try_again": "Logout and sign in with another account",
"member_has_invite": "This email ID already has an invite. Contact your team owner.",
"member_not_found": "Member not found. Contact your team owner.",
"member_removed": "User removed",
"member_role_updated": "User roles updated",
"members": "Members",
"name_length_insufficient": "Team name should be at least 6 characters long",
"name_updated": "Team name updated",
"new": "New Team",
"new_created": "New team created",
"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.",
"not_found": "Team not found. Contact your team owner.",
"not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"pending_invites": "Pending invites",
"permissions": "Permissions",
"saved": "Team saved",
"select_a_team": "Select a team",
"title": "Teams",
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript Code",
"learn": "Read documentation",
"passed": "test passed",
"report": "Test Report",
"results": "Test Results",
"script": "Script",
"snippets": "Snippets"
},
"websocket": {
"communication": "Communication",
"log": "Log",
"message": "Message",
"protocols": "Protocols",
"url": "URL"
}
}

View File

@@ -1,672 +0,0 @@
{
"action": {
"autoscroll": "Autoscroll",
"cancel": "Hủy bỏ",
"choose_file": "Chọn một tệp",
"clear": "Thông thoáng",
"clear_all": "Quet sạch tât cả",
"close": "Close",
"connect": "Liên kết",
"copy": "Sao chép",
"delete": "Xóa bỏ",
"disconnect": "Ngắt kết nối",
"dismiss": "Miễn nhiệm",
"dont_save": "Don't save",
"download_file": "Tải tập tin",
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Chỉnh sửa",
"filter_response": "Filter response",
"go_back": "Quay lại",
"label": "Nhãn",
"learn_more": "Tìm hiểu thêm",
"less": "Less",
"more": "Hơn",
"new": "Mới mẻ",
"no": "Không",
"open_workspace": "Open workspace",
"paste": "Paste",
"prettify": "Kiểm tra trước",
"remove": "Tẩy",
"restore": "Khôi phục",
"save": "Cứu",
"scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top",
"search": "Tìm kiếm",
"send": "Gửi",
"start": "Bắt đầu",
"stop": "Ngừng lại",
"to_close": "to close",
"to_navigate": "to navigate",
"to_select": "to select",
"turn_off": "Tắt",
"turn_on": "Bật",
"undo": "Hoàn tác",
"yes": "đúng"
},
"add": {
"new": "Thêm mới",
"star": "Thêm dấu sao"
},
"app": {
"chat_with_us": "Trò chuyện với chúng tôi",
"contact_us": "Liên hệ chúng tôi",
"copy": "Sao chép",
"copy_user_id": "Copy User Auth Token",
"developer_option": "Developer options",
"developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.",
"discord": "Discord",
"documentation": "Tài liệu",
"github": "GitHub",
"help": "Tài liệu trợ giúp, phản hồi và",
"home": "Nhà",
"invite": "Mời gọi",
"invite_description": "Trong Hoppscotch, chúng tôi đã thiết kế một giao diện đơn giản và trực quan để tạo và quản lý các API của bạn. Hoppscotch là một công cụ giúp bạn xây dựng, kiểm tra, lập tài liệu và chia sẻ các API của mình.",
"invite_your_friends": "Mời bạn bè của bạn",
"join_discord_community": "Tham gia cộng đồng Discord của chúng tôi",
"keyboard_shortcuts": "Các phím tắt bàn phím",
"name": "Nhảy lò cò",
"new_version_found": "Phiên bản mới được tìm thấy. Làm mới để cập nhật.",
"options": "Options",
"proxy_privacy_policy": "Chính sách về quyền riêng tư của proxy",
"reload": "Nạp lại",
"search": "Tìm kiếm",
"share": "Chia sẻ",
"shortcuts": "Các phím tắt",
"spotlight": "Đốm sáng",
"status": "Tình trạng",
"status_description": "Check the status of the website",
"terms_and_privacy": "Điều khoản và quyền riêng tư",
"twitter": "Twitter",
"type_a_command_search": "Nhập lệnh hoặc tìm kiếm…",
"we_use_cookies": "Chúng tôi sử dụng cookie",
"whats_new": "Có gì mới?",
"wiki": "Wiki"
},
"auth": {
"account_exists": "Tài khoản tồn tại với thông tin đăng nhập khác - Đăng nhập để liên kết cả hai tài khoản",
"all_sign_in_options": "Tất cả các tùy chọn đăng nhập",
"continue_with_email": "Tiếp tục với Email",
"continue_with_github": "Tiếp tục với GitHub",
"continue_with_google": "Tiếp tục với Google",
"continue_with_microsoft": "Continue with Microsoft",
"email": "E-mail",
"logged_out": "Đã đăng xuất",
"login": "Đăng nhập",
"login_success": "Đã đăng nhập thành công",
"login_to_hoppscotch": "Đăng nhập Hoppscotch",
"logout": "Đăng xuất",
"re_enter_email": "Nhập lại địa chỉ e-mail",
"send_magic_link": "Gửi một liên kết kỳ diệu",
"sync": "Đồng bộ hóa",
"we_sent_magic_link": "Chúng tôi đã gửi cho bạn một liên kết kỳ diệu!",
"we_sent_magic_link_description": "Kiểm tra hộp thư đến của bạn - chúng tôi đã gửi một email đến {email}. Nó chứa một liên kết kỳ diệu sẽ giúp bạn đăng nhập."
},
"authorization": {
"generate_token": "Tạo mã thông báo",
"include_in_url": "Bao gồm trong URL",
"learn": "Học cách",
"pass_key_by": "Pass by",
"password": "Mật khẩu",
"token": "Mã thông báo",
"type": "Loại ủy quyền",
"username": "tên tài khoản"
},
"collection": {
"created": "Bộ sưu tập đã được tạo",
"edit": "Chỉnh sửa bộ sưu tập",
"invalid_name": "Vui lòng cung cấp tên hợp lệ cho bộ sưu tập",
"my_collections": "Bộ sưu tập của tôi",
"name": "Bộ sưu tập mới của tôi",
"name_length_insufficient": "Collection name should be at least 3 characters long",
"new": "Bộ sưu tập mới",
"renamed": "Bộ sưu tập đã được đổi tên",
"request_in_use": "Request in use",
"save_as": "Lưu thành",
"select": "Chọn một Bộ sưu tập",
"select_location": "Chọn địa điểm",
"select_team": "Chọn một đội",
"team_collections": "Bộ sưu tập nhóm"
},
"confirm": {
"exit_team": "Are you sure you want to leave this team?",
"logout": "Bạn có chắc chắn bạn muốn thoát?",
"remove_collection": "Bạn có chắc chắn muốn xóa vĩnh viễn bộ sưu tập này không?",
"remove_environment": "Bạn có chắc chắn muốn xóa vĩnh viễn môi trường này không?",
"remove_folder": "Bạn có chắc chắn muốn xóa vĩnh viễn thư mục này không?",
"remove_history": "Bạn có chắc chắn muốn xóa vĩnh viễn tất cả lịch sử không?",
"remove_request": "Bạn có chắc chắn muốn xóa vĩnh viễn yêu cầu này không?",
"remove_team": "Bạn có chắc chắn muốn xóa nhóm này không?",
"remove_telemetry": "Bạn có chắc chắn muốn chọn không tham gia Đo lường từ xa không?",
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"sync": "Bạn có chắc chắn muốn đồng bộ hóa không gian làm việc này không?"
},
"count": {
"header": "Tiêu đề {count}",
"message": "Nhắn tin cho {count}",
"parameter": "Tham số {count}",
"protocol": "Giao thức {count}",
"value": "Giá trị {count}",
"variable": "Biến {count}"
},
"documentation": {
"generate": "Tạo tài liệu",
"generate_message": "Nhập bất kỳ bộ sưu tập Hoppscotch nào để tạo tài liệu API khi đang di chuyển."
},
"empty": {
"authorization": "Yêu cầu này không sử dụng bất kỳ ủy quyền nào",
"body": "Yêu cầu này không có nội dung",
"collection": "Bộ sưu tập trống",
"collections": "Bộ sưu tập trống",
"documentation": "Connect to a GraphQL endpoint to view documentation",
"endpoint": "Endpoint cannot be empty",
"environments": "Môi trường trống",
"folder": "Tệp này rỗng",
"headers": "Yêu cầu này không có bất kỳ tiêu đề nào",
"history": "Lịch sử trống",
"invites": "Invite list is empty",
"members": "Đội trống",
"parameters": "Yêu cầu này không có bất kỳ thông số nào",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"protocols": "Giao thức trống",
"schema": "Kết nối với một điểm cuối GraphQL",
"shortcodes": "Shortcodes are empty",
"team_name": "Tên đội trống",
"teams": "Các đội trống",
"tests": "Không có bài kiểm tra nào cho yêu cầu này"
},
"environment": {
"add_to_global": "Add to Global",
"added": "Environment addition",
"create_new": "Tạo môi trường mới",
"created": "Environment created",
"deleted": "Environment deletion",
"edit": "Chỉnh sửa môi trường",
"invalid_name": "Vui lòng cung cấp tên hợp lệ cho môi trường",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Môi trường mới",
"no_environment": "Không có môi trường",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Chọn môi trường",
"title": "Môi trường",
"updated": "Environment updation",
"variable_list": "Danh sách biến"
},
"error": {
"browser_support_sse": "Trình duyệt này dường như không có hỗ trợ Sự kiện do Máy chủ gửi.",
"check_console_details": "Kiểm tra nhật ký bảng điều khiển để biết chi tiết.",
"curl_invalid_format": "cURL không được định dạng đúng",
"empty_req_name": "Tên yêu cầu trống",
"f12_details": "(F12 để biết chi tiết)",
"gql_prettify_invalid_query": "Không thể xác minh trước một truy vấn không hợp lệ, hãy giải quyết các lỗi cú pháp truy vấn và thử lại",
"incomplete_config_urls": "Incomplete configuration URLs",
"incorrect_email": "Incorrect email",
"invalid_link": "Invalid link",
"invalid_link_description": "The link you clicked is invalid or expired.",
"json_parsing_failed": "Invalid JSON",
"json_prettify_invalid_body": "Không thể kiểm tra nội dung không hợp lệ, hãy giải quyết lỗi cú pháp json và thử lại",
"network_error": "There seems to be a network error. Please try again.",
"network_fail": "Không thể gửi yêu cầu",
"no_duration": "Không có thời lượng",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"script_fail": "Không thể thực thi tập lệnh yêu cầu trước",
"something_went_wrong": "Đã xảy ra sự cố",
"test_script_fail": "Could not execute post-request script"
},
"export": {
"as_json": "Xuất dưới dạng JSON",
"create_secret_gist": "Tạo Gist bí mật",
"gist_created": "Gist đã tạo",
"require_github": "Đăng nhập bằng GitHub để tạo ý chính bí mật",
"title": "Export"
},
"folder": {
"created": "Thư mục đã được tạo",
"edit": "Chỉnh sửa thư mục",
"invalid_name": "Vui lòng cung cấp tên cho thư mục",
"name_length_insufficient": "Folder name should be at least 3 characters long",
"new": "Thư mục mới",
"renamed": "Thư mục đã được đổi tên"
},
"graphql": {
"mutations": "Đột biến",
"schema": "Lược đồ",
"subscriptions": "Đăng ký"
},
"header": {
"install_pwa": "Cài đặt ứng dụng",
"login": "Đăng nhập",
"save_workspace": "Lưu không gian làm việc của tôi"
},
"helpers": {
"authorization": "Tiêu đề ủy quyền sẽ được tạo tự động khi bạn gửi yêu cầu.",
"generate_documentation_first": "Tạo tài liệu trước tiên",
"network_fail": "Không thể truy cập điểm cuối API. Kiểm tra kết nối mạng của bạn và thử lại.",
"offline": "Có vẻ như bạn đang ngoại tuyến. Dữ liệu trong không gian làm việc này có thể không được cập nhật.",
"offline_short": "Có vẻ như bạn đang ngoại tuyến.",
"post_request_tests": "Các tập lệnh kiểm tra được viết bằng JavaScript và được chạy sau khi nhận được phản hồi.",
"pre_request_script": "Các tập lệnh yêu cầu trước được viết bằng JavaScript và được chạy trước khi yêu cầu được gửi đi.",
"script_fail": "Có vẻ như có trục trặc trong tập lệnh yêu cầu trước. Kiểm tra lỗi bên dưới và sửa tập lệnh cho phù hợp.",
"test_script_fail": "There seems to be an error with test script. Please fix the errors and run tests again",
"tests": "Viết một kịch bản thử nghiệm để tự động gỡ lỗi."
},
"hide": {
"collection": "Collapse Collection Panel",
"more": "Ẩn thêm",
"preview": "Ẩn bản xem trước",
"sidebar": "Ẩn thanh bên"
},
"import": {
"collections": "Nhập bộ sưu tập",
"curl": "Nhập cURL",
"failed": "Nhập không thành công",
"from_gist": "Nhập từ Gist",
"from_gist_description": "Import from Gist URL",
"from_insomnia": "Import from Insomnia",
"from_insomnia_description": "Import from Insomnia collection",
"from_json": "Import from Hoppscotch",
"from_json_description": "Import from Hoppscotch collection file",
"from_my_collections": "Nhập từ Bộ sưu tập của tôi",
"from_my_collections_description": "Import from My Collections file",
"from_openapi": "Import from OpenAPI",
"from_openapi_description": "Import from OpenAPI specification file (YML/JSON)",
"from_postman": "Import from Postman",
"from_postman_description": "Import from Postman collection",
"from_url": "Import from URL",
"gist_url": "Nhập URL Gist",
"import_from_url_invalid_fetch": "Couldn't get data from the url",
"import_from_url_invalid_file_format": "Error while importing collections",
"import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Collections Imported",
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Nhập khẩu"
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Chế độ Zen"
},
"modal": {
"collections": "Bộ sưu tập",
"confirm": "Xác nhận",
"edit_request": "Chỉnh sửa Yêu cầu",
"import_export": "Nhập khẩu xuất khẩu"
},
"mqtt": {
"communication": "Liên lạc",
"log": "Nhật ký",
"message": "Thông điệp",
"publish": "Công bố",
"subscribe": "Đặt mua",
"topic": "Chủ đề",
"topic_name": "Tên chủ đề",
"topic_title": "Xuất bản / Đăng ký chủ đề",
"unsubscribe": "Hủy đăng ký",
"url": "URL"
},
"navigation": {
"doc": "Docs",
"graphql": "GraphQL",
"profile": "Profile",
"realtime": "Thời gian thực",
"rest": "REST",
"settings": "Cài đặt"
},
"preRequest": {
"javascript_code": "Mã JavaScript",
"learn": "Đọc tài liệu",
"script": "Tập lệnh Yêu cầu Trước",
"snippets": "Đoạn mã"
},
"profile": {
"app_settings": "App Settings",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
"no_permission": "You do not have permission to perform this action.",
"owner": "Owner",
"owner_description": "Owners can add, edit, and delete requests, collections and team members.",
"roles": "Roles",
"roles_description": "Roles are used to control access to the shared collections.",
"updated": "Profile updated",
"viewer": "Viewer",
"viewer_description": "Viewers can only view and use requests."
},
"remove": {
"star": "Xóa dấu sao"
},
"request": {
"added": "Đã thêm yêu cầu",
"authorization": "Ủy quyền",
"body": "Nội dung yêu cầu",
"choose_language": "Chọn ngôn ngữ",
"content_type": "Loại nội dung",
"content_type_titles": {
"others": "Others",
"structured": "Structured",
"text": "Text"
},
"copy_link": "Sao chép đường dẫn",
"duration": "Khoảng thời gian",
"enter_curl": "Nhập cURL",
"generate_code": "Tạo mã",
"generated_code": "Mã đã tạo",
"header_list": "Danh sách tiêu đề",
"invalid_name": "Vui lòng cung cấp tên cho yêu cầu",
"method": "Phương pháp",
"name": "Yêu cầu tên",
"new": "New Request",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Overridden",
"parameter_list": "Tham số truy vấn",
"parameters": "Thông số",
"path": "Đường dẫn",
"payload": "Khối hàng",
"query": "Truy vấn",
"raw_body": "Nội dung yêu cầu thô",
"renamed": "Yêu cầu đổi tên",
"run": "Chạy",
"save": "Cứu",
"save_as": "Lưu thành",
"saved": "Yêu cầu đã được lưu",
"share": "Chia sẻ",
"share_description": "Share Hoppscotch with your friends",
"title": "Yêu cầu",
"type": "Loại yêu cầu",
"url": "URL",
"variables": "Biến",
"view_my_links": "View my links"
},
"response": {
"body": "Cơ quan phản hồi",
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
"headers": "Tiêu đề",
"html": "HTML",
"image": "Hình ảnh",
"json": "JSON",
"pdf": "PDF",
"preview_html": "Xem trước HTML",
"raw": "Nguyên",
"size": "Kích thước",
"status": "Tình trạng",
"time": "Thời gian",
"title": "Phản ứng",
"waiting_for_connection": "Đang đợi kết nối",
"xml": "XML"
},
"settings": {
"accent_color": "Màu nhấn",
"account": "Tài khoản",
"account_description": "Tùy chỉnh cài đặt tài khoản của bạn.",
"account_email_description": "Địa chỉ email chính của bạn.",
"account_name_description": "Đây là tên hiển thị của bạn.",
"background": "lai lịch",
"black_mode": "Đen",
"change_font_size": "Thay đổi kích thước phông chữ",
"choose_language": "Chọn ngôn ngữ",
"dark_mode": "Tối tăm",
"expand_navigation": "Expand navigation",
"experiments": "Thí nghiệm",
"experiments_notice": "Đây là một bộ sưu tập các thử nghiệm mà chúng tôi đang thực hiện có thể hữu ích, thú vị, cả hai hoặc không. Chúng không phải là cuối cùng và có thể không ổn định, vì vậy nếu có điều gì đó quá kỳ lạ xảy ra, đừng hoảng sợ. Chỉ cần tắt điều này đi. Chuyện cười sang một bên,",
"extension_ver_not_reported": "Không được báo cáo",
"extension_version": "Phiên bản tiện ích mở rộng",
"extensions": "Tiện ích mở rộng",
"extensions_use_toggle": "Sử dụng tiện ích mở rộng của trình duyệt để gửi yêu cầu (nếu có)",
"follow": "Follow Us",
"font_size": "Cỡ chữ",
"font_size_large": "Lớn",
"font_size_medium": "Vừa phải",
"font_size_small": "Bé nhỏ",
"interceptor": "Máy đánh chặn",
"interceptor_description": "Phần mềm trung gian giữa ứng dụng và các API.",
"language": "Ngôn ngữ",
"light_mode": "Soi rọi",
"official_proxy_hosting": "Proxy chính thức được lưu trữ bởi Hoppscotch.",
"profile": "Profile",
"profile_description": "Update your profile details",
"profile_email": "Email address",
"profile_name": "Profile name",
"proxy": "Ủy quyền",
"proxy_url": "URL proxy",
"proxy_use_toggle": "Sử dụng phần mềm trung gian proxy để gửi yêu cầu",
"read_the": "Đọc",
"reset_default": "Đặt lại về mặc định",
"short_codes": "Short codes",
"short_codes_description": "Short codes which were created by you.",
"sidebar_on_left": "Sidebar on left",
"sync": "Làm cho đồng bộ",
"sync_collections": "Bộ sưu tập",
"sync_description": "Các cài đặt này được đồng bộ hóa với đám mây.",
"sync_environments": "Môi trường",
"sync_history": "Môn lịch sử",
"system_mode": "Hệ thống",
"telemetry": "Từ xa",
"telemetry_helps_us": "Phép đo từ xa giúp chúng tôi cá nhân hóa các hoạt động của mình và mang đến trải nghiệm tốt nhất cho bạn.",
"theme": "Chủ đề",
"theme_description": "Tùy chỉnh chủ đề ứng dụng của bạn.",
"use_experimental_url_bar": "Sử dụng thanh URL thử nghiệm với đánh dấu môi trường",
"user": "Người sử dụng",
"verified_email": "Verified email",
"verify_email": "Verify email"
},
"shortcodes": {
"actions": "Actions",
"created_on": "Created on",
"deleted": "Shortcode deleted",
"method": "Method",
"not_found": "Shortcode not found",
"short_code": "Short code",
"url": "URL"
},
"shortcut": {
"general": {
"close_current_menu": "Đóng menu hiện tại",
"command_menu": "Menu tìm kiếm và lệnh",
"help_menu": "Danh sách trợ giúp",
"show_all": "Các phím tắt bàn phím",
"title": "Chung"
},
"miscellaneous": {
"invite": "Mời mọi người nhảy lò cò",
"title": "Điều khoản khác"
},
"navigation": {
"back": "Quay lại trang trước",
"documentation": "Đi tới trang Tài liệu",
"forward": "Chuyển tới trang tiếp theo",
"graphql": "Đi tới trang GraphQL",
"profile": "Go to Profile page",
"realtime": "Chuyển đến trang Thời gian thực",
"rest": "Đi tới trang REST",
"settings": "Đi tới trang Cài đặt",
"title": "dẫn đường"
},
"request": {
"copy_request_link": "Sao chép liên kết yêu cầu",
"delete_method": "Chọn phương pháp XÓA",
"get_method": "Chọn phương thức GET",
"head_method": "Chọn phương pháp HEAD",
"method": "Phương pháp",
"next_method": "Chọn phương pháp tiếp theo",
"post_method": "Chọn phương pháp ĐĂNG",
"previous_method": "Chọn phương pháp trước đó",
"put_method": "Chọn phương pháp PUT",
"reset_request": "Đặt lại yêu cầu",
"save_to_collections": "Lưu vào Bộ sưu tập",
"send_request": "Gửi yêu cầu",
"title": "Yêu cầu"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
},
"theme": {
"black": "Switch theme to black mode",
"dark": "Switch theme to dark mode",
"light": "Switch theme to light mode",
"system": "Switch theme to system mode",
"title": "Theme"
}
},
"show": {
"code": "Hiển thị mã",
"collection": "Expand Collection Panel",
"more": "Cho xem nhiều hơn",
"sidebar": "Hiển thị thanh bên"
},
"socketio": {
"communication": "Liên lạc",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"event_name": "Tên sự kiện",
"events": "Sự kiện",
"log": "Nhật ký",
"url": "URL"
},
"sse": {
"event_type": "Loại sự kiện",
"log": "Nhật ký",
"url": "URL"
},
"state": {
"bulk_mode": "Chỉnh sửa hàng loạt",
"bulk_mode_placeholder": "Các mục nhập được phân tách bằng dòng mới\nCác khóa và giá trị được phân tách bằng:\nThêm # vào bất kỳ hàng nào bạn muốn thêm nhưng vẫn bị vô hiệu hóa",
"cleared": "Đã xóa",
"connected": "Đã kết nối",
"connected_to": "Đã kết nối với {name}",
"connecting_to": "Đang kết nối với {name} ...",
"connection_error": "Failed to connect",
"connection_failed": "Connection failed",
"connection_lost": "Connection lost",
"copied_to_clipboard": "Sao chép vào clipboard",
"deleted": "Đã xóa",
"deprecated": "KHÔNG DÙNG",
"disabled": "Tàn tật",
"disconnected": "Đã ngắt kết nối",
"disconnected_from": "Đã ngắt kết nối khỏi {name}",
"docs_generated": "Tài liệu được tạo",
"download_started": "Đã bắt đầu tải xuống",
"enabled": "Đã bật",
"file_imported": "Đã nhập tệp",
"finished_in": "Hoàn thành sau {duration} mili giây",
"history_deleted": "Lịch sử đã bị xóa",
"linewrap": "Quấn dòng",
"loading": "Đang tải...",
"message_received": "Message: {message} arrived on topic: {topic}",
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
"none": "Không có",
"nothing_found": "Không tìm thấy kết quả cho",
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
"published_message": "Published message: {message} to topic: {topic}",
"reconnection_error": "Failed to reconnect",
"subscribed_failed": "Failed to subscribe to topic: {topic}",
"subscribed_success": "Successfully subscribed to topic: {topic}",
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
"unsubscribed_success": "Successfully unsubscribed from topic: {topic}",
"waiting_send_request": "Đang chờ gửi yêu cầu"
},
"support": {
"changelog": "Đọc thêm về các bản phát hành mới nhất",
"chat": "Câu hỏi? Trò chuyện với chúng tôi!",
"community": "Đặt câu hỏi và giúp đỡ người khác",
"documentation": "Đọc thêm về Hoppscotch",
"forum": "Đặt câu hỏi và nhận câu trả lời",
"github": "Follow us on Github",
"shortcuts": "Duyệt ứng dụng nhanh hơn",
"team": "Liên hệ với nhóm",
"title": "Ủng hộ",
"twitter": "theo dõi chúng tối trên Twitter"
},
"tab": {
"authorization": "Ủy quyền",
"body": "Thân hình",
"collections": "Bộ sưu tập",
"documentation": "Tài liệu",
"headers": "Tiêu đề",
"history": "Môn lịch sử",
"mqtt": "MQTT",
"parameters": "Thông số",
"pre_request_script": "Tập lệnh yêu cầu trước",
"queries": "Truy vấn",
"query": "Truy vấn",
"schema": "Schema",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Kiểm tra",
"types": "Các loại",
"variables": "Biến",
"websocket": "WebSocket"
},
"team": {
"already_member": "You are already a member of this team. Contact your team owner.",
"create_new": "Tạo nhóm mới",
"deleted": "Đội đã bị xóa",
"edit": "Chỉnh sửa nhóm",
"email": "E-mail",
"email_do_not_match": "Email doesn't match with your account details. Contact your team owner.",
"exit": "Nhóm thoát",
"exit_disabled": "Chỉ chủ sở hữu không thể thoát khỏi nhóm",
"invalid_email_format": "Định dạng email không hợp lệ",
"invalid_id": "Invalid team ID. Contact your team owner.",
"invalid_invite_link": "Invalid invite link",
"invalid_invite_link_description": "The link you followed is invalid. Contact your team owner.",
"invalid_member_permission": "Vui lòng cung cấp quyền hợp lệ cho thành viên trong nhóm",
"invite": "Invite",
"invite_more": "Invite more",
"invite_tooltip": "Invite people to this workspace",
"invited_to_team": "{owner} invited you to join {team}",
"join": "Invitation accepted",
"join_beta": "Tham gia chương trình beta để truy cập các nhóm.",
"join_team": "Join {team}",
"joined_team": "You have joined {team}",
"joined_team_description": "You are now a member of this team",
"left": "Bạn đã rời đội",
"login_to_continue": "Login to continue",
"login_to_continue_description": "You need to be logged in to join a team.",
"logout_and_try_again": "Logout and sign in with another account",
"member_has_invite": "This email ID already has an invite. Contact your team owner.",
"member_not_found": "Member not found. Contact your team owner.",
"member_removed": "Người dùng đã bị xóa",
"member_role_updated": "Đã cập nhật vai trò người dùng",
"members": "Các thành viên",
"name_length_insufficient": "Tên nhóm phải dài ít nhất 6 ký tự",
"name_updated": "Team name updated",
"new": "Đội mới",
"new_created": "Nhóm mới được tạo",
"new_name": "Nhóm mới của tôi",
"no_access": "Bạn không có quyền truy cập chỉnh sửa vào các bộ sưu tập này",
"no_invite_found": "Invitation not found. Contact your team owner.",
"not_found": "Team not found. Contact your team owner.",
"not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"pending_invites": "Pending invites",
"permissions": "Quyền",
"saved": "Đội đã được lưu",
"select_a_team": "Select a team",
"title": "Đội",
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"test": {
"failed": "test failed",
"javascript_code": "Mã JavaScript",
"learn": "Đọc tài liệu",
"passed": "test passed",
"report": "Báo cáo thử nghiệm",
"results": "Kết quả kiểm tra",
"script": "Script",
"snippets": "Đoạn mã"
},
"websocket": {
"communication": "Liên lạc",
"log": "Nhật ký",
"message": "Thông điệp",
"protocols": "Các giao thức",
"url": "URL"
}
}

View File

@@ -1,151 +0,0 @@
{
"name": "hoppscotch-app",
"private": true,
"version": "3.0.1",
"scripts": {
"dev": "pnpm exec npm-run-all -p -l dev:*",
"dev:vite": "vite",
"dev:gql-codegen": "graphql-codegen --config gql-codegen.yml --watch",
"build": "node --max_old_space_size=16384 ./node_modules/vite/bin/vite.js build",
"lint": "eslint src --ext .ts,.js,.vue --ignore-path .gitignore .",
"prod-lint": "cross-env HOPP_LINT_FOR_PROD=true pnpm run lint",
"lintfix": "eslint --fix src --ext .ts,.js,.vue --ignore-path .gitignore .",
"generate": "pnpm run build",
"preview": "vite preview",
"gql-codegen": "graphql-codegen --config gql-codegen.yml",
"postinstall": "pnpm run gql-codegen",
"do-dev": "pnpm run dev",
"do-build-prod": "pnpm run build",
"do-lint": "pnpm run prod-lint",
"do-typecheck": "pnpm run lint",
"do-lintfix": "pnpm run lintfix"
},
"dependencies": {
"@apidevtools/swagger-parser": "^10.1.0",
"@codemirror/autocomplete": "^6.0.3",
"@codemirror/commands": "^6.0.1",
"@codemirror/lang-javascript": "^6.0.1",
"@codemirror/lang-json": "^6.0.0",
"@codemirror/lang-xml": "^6.0.0",
"@codemirror/language": "^6.2.0",
"@codemirror/legacy-modes": "^6.1.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.1.0",
"@codemirror/view": "^6.0.2",
"@hoppscotch/codemirror-lang-graphql": "workspace:^0.2.0",
"@hoppscotch/data": "workspace:^0.4.4",
"@hoppscotch/js-sandbox": "workspace:^2.1.0",
"@hoppscotch/vue-toasted": "^0.1.0",
"@lezer/highlight": "^1.0.0",
"@sentry/tracing": "^7.13.0",
"@sentry/vue": "^7.13.0",
"@urql/core": "^2.5.0",
"@urql/devtools": "^2.0.3",
"@urql/exchange-auth": "^0.1.7",
"@urql/exchange-graphcache": "^4.4.3",
"@vueuse/core": "^8.7.5",
"@vueuse/head": "^0.7.9",
"acorn-walk": "^8.2.0",
"axios": "^0.21.4",
"buffer": "^6.0.3",
"esprima": "^4.0.1",
"events": "^3.3.0",
"firebase": "^9.8.4",
"fp-ts": "^2.12.1",
"fuse.js": "^6.6.2",
"globalthis": "^1.0.3",
"graphql": "^15.5.0",
"graphql-language-service-interface": "^2.9.1",
"graphql-tag": "^2.12.6",
"httpsnippet": "^2.0.0",
"insomnia-importers": "^3.3.0",
"io-ts": "^2.2.16",
"js-yaml": "^4.1.0",
"jsonpath-plus": "^7.0.0",
"lodash-es": "^4.17.21",
"lossless-json": "^1.0.5",
"nprogress": "^0.2.0",
"paho-mqtt": "^1.1.0",
"path": "^0.12.7",
"postman-collection": "^4.1.4",
"process": "^0.11.10",
"qs": "^6.10.3",
"rxjs": "^7.5.5",
"socket.io-client-v2": "npm:socket.io-client@^2.4.0",
"socket.io-client-v3": "npm:socket.io-client@^3.1.3",
"socket.io-client-v4": "npm:socket.io-client@^4.4.1",
"socketio-wildcard": "^2.0.0",
"splitpanes": "^3.1.1",
"stream-browserify": "^3.0.0",
"subscriptions-transport-ws": "^0.11.0",
"tern": "^0.24.3",
"timers": "^0.1.1",
"tippy.js": "^6.3.7",
"url": "^0.11.0",
"util": "^0.12.4",
"uuid": "^8.3.2",
"vue": "^3.2.25",
"vue-github-button": "^3.0.3",
"vue-i18n": "^9.2.2",
"vue-pdf-embed": "^1.1.4",
"vue-router": "^4.0.16",
"vue-tippy": "6.0.0-alpha.58",
"vuedraggable": "^4.1.0",
"wonka": "^4.0.15",
"workbox-window": "^6.5.4",
"yargs-parser": "^21.1.1"
},
"devDependencies": {
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
"@esbuild-plugins/node-modules-polyfill": "^0.1.4",
"@graphql-codegen/add": "^3.2.0",
"@graphql-codegen/cli": "^2.8.0",
"@graphql-codegen/typed-document-node": "^2.3.1",
"@graphql-codegen/typescript": "^2.7.1",
"@graphql-codegen/typescript-operations": "^2.5.1",
"@graphql-codegen/typescript-urql-graphcache": "^2.3.1",
"@graphql-codegen/urql-introspection": "^2.2.0",
"@graphql-typed-document-node/core": "^3.1.1",
"@iconify-json/lucide": "^1.1.40",
"@intlify/vite-plugin-vue-i18n": "^6.0.1",
"@rushstack/eslint-patch": "^1.1.4",
"@types/js-yaml": "^4.0.5",
"@types/lodash-es": "^4.17.6",
"@types/lossless-json": "^1.0.1",
"@types/nprogress": "^0.2.0",
"@types/paho-mqtt": "^1.0.6",
"@types/postman-collection": "^3.5.7",
"@types/splitpanes": "^2.2.1",
"@types/yargs-parser": "^21.0.0",
"@typescript-eslint/eslint-plugin": "^5.19.0",
"@typescript-eslint/parser": "^5.19.0",
"@vitejs/plugin-vue": "^3.1.0",
"@vue/compiler-sfc": "^3.2.39",
"@vue/eslint-config-typescript": "^11.0.1",
"@vue/runtime-core": "^3.2.39",
"cross-env": "^7.0.3",
"eslint": "^8.24.0",
"eslint-plugin-prettier": "^4.2.0",
"eslint-plugin-vue": "^9.5.1",
"npm-run-all": "^4.1.5",
"openapi-types": "^12.0.0",
"rollup-plugin-polyfill-node": "^0.10.1",
"sass": "^1.53.0",
"typescript": "^4.5.4",
"unplugin-icons": "^0.14.9",
"unplugin-vue-components": "^0.21.0",
"vite": "^3.1.4",
"vite-plugin-checker": "^0.5.1",
"vite-plugin-fonts": "^0.6.0",
"vite-plugin-html-config": "^1.0.10",
"vite-plugin-inspect": "^0.7.4",
"vite-plugin-pages": "^0.26.0",
"vite-plugin-pages-sitemap": "^1.4.0",
"vite-plugin-pwa": "^0.13.1",
"vite-plugin-vue-layouts": "^0.7.0",
"vite-plugin-windicss": "^1.8.8",
"vue-tsc": "^0.38.2",
"windicss": "^3.5.6"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 840 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

View File

@@ -1,12 +0,0 @@
<svg width="119" height="117" viewBox="0 0 119 117" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M52.0114 115.804C80.1842 115.804 103.023 92.8871 103.023 64.6183C103.023 36.3495 80.1842 13.4331 52.0114 13.4331C23.8386 13.4331 1 36.3495 1 64.6183C1 92.8871 23.8386 115.804 52.0114 115.804Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.666 21.9438C111.335 21.3298 111.382 20.2875 110.77 19.6157C110.158 18.9439 109.12 18.897 108.45 19.5109C107.781 20.1249 107.734 21.1672 108.346 21.839C108.957 22.5108 109.996 22.5577 110.666 21.9438Z" fill="#525252"/>
<path opacity="0.3" d="M83.4192 41.2397C85.2331 41.2397 86.7036 39.7642 86.7036 37.9441C86.7036 36.1239 85.2331 34.6484 83.4192 34.6484C81.6053 34.6484 80.1348 36.1239 80.1348 37.9441C80.1348 39.7642 81.6053 41.2397 83.4192 41.2397Z" fill="#525252"/>
<path d="M61.2816 45.569C60.8718 47.7548 59.0958 49.804 56.7733 50.3505C54.9973 50.7604 53.2213 50.3505 51.9918 49.3942V65.2415H37.2374C37.7839 64.1486 37.9205 63.0557 37.7839 61.8261C37.5106 59.0939 35.1882 56.908 32.5925 56.6348C29.0405 56.2249 25.8984 58.9572 25.8984 62.5092C25.8984 63.4655 26.035 64.4218 26.4448 65.1049H9.77783V34.6398C9.77783 28.3555 14.8326 23.3008 21.2535 23.3008H51.8552V39.1481C52.9481 38.465 54.041 38.0552 55.2706 38.0552C58.9592 38.6016 61.9647 41.7438 61.2816 45.569Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M42.019 85.187C41.4726 88.8756 44.3415 92.0177 48.0301 92.0177C49.5328 92.0177 50.899 91.4713 51.9919 90.6516V107.045H21.3902C15.1059 107.045 9.91455 101.854 9.91455 95.7063V65.1046H26.4449C26.0351 64.2849 25.8985 63.4653 25.8985 62.3723C26.0351 59.5034 28.2209 57.0444 30.9532 56.6345C34.6418 56.2247 37.784 58.957 37.784 62.5089C37.784 63.4652 37.6474 64.2849 37.2375 65.1046H51.7187V81.4984C50.4891 80.4055 48.8498 79.859 47.0738 80.1323C44.4781 80.4055 42.4289 82.5913 42.019 85.187Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M94.0691 65.1047V95.4331C94.0691 101.717 88.8777 106.772 82.5934 106.772H51.9917V90.3784C50.8988 91.3347 49.5327 91.7446 48.0299 91.7446C44.4779 91.7446 41.7456 88.6024 42.0188 84.9138C42.4287 82.1815 44.6145 80.1323 47.0736 79.7224C48.8496 79.5858 50.6256 80.1323 51.7185 81.0886V64.6948H69.3418C68.7953 65.5145 68.6587 66.4708 68.6587 67.4271C68.6587 70.8425 71.6642 73.7114 75.3528 73.3016C78.0851 73.0283 80.4076 70.7059 80.6808 68.1102C80.8174 66.8807 80.5442 65.7877 80.1344 64.6948L94.0691 65.1047Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M106.911 52.6728L93.3859 50.3503C93.6591 51.4432 93.7958 52.5362 93.3859 53.6291C92.5662 56.2247 90.1072 58.0007 87.3749 57.8641C83.8229 57.5909 81.2272 54.4488 81.7737 51.0334C81.9103 50.0771 82.3201 49.2574 82.8666 48.5743L65.3799 45.4322L68.1122 29.7215C69.2051 30.8144 70.8445 31.4975 72.7571 31.4975C75.2161 31.3609 77.2654 29.8581 77.9484 27.6723C79.3146 24.1203 76.9921 20.2951 73.3035 19.7486C72.074 19.4754 70.8445 19.7486 69.7516 20.1585L72.4839 4.44775L102.539 9.63912C108.823 10.732 112.922 16.6065 111.829 22.7541L106.911 52.6728Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M113.473 64.1927L118.015 62.8237C118.344 62.7282 118.344 62.2506 118.015 62.1551L113.473 60.7861C113.356 60.7543 113.271 60.6694 113.24 60.5526L111.871 56.0212C111.775 55.6922 111.297 55.6922 111.202 56.0212L109.833 60.5526C109.801 60.6694 109.716 60.7543 109.6 60.7861L105.068 62.1551C104.739 62.2506 104.739 62.7282 105.068 62.8237L109.61 64.1927C109.727 64.2245 109.812 64.3094 109.844 64.4261L111.213 68.9682C111.308 69.2972 111.786 69.2972 111.881 68.9682L113.25 64.4261C113.271 64.3094 113.356 64.2245 113.473 64.1927Z" fill="#525252"/>
<path d="M103.424 24.4523L109.073 22.7496C109.482 22.6308 109.482 22.0369 109.073 21.9181L103.424 20.2153C103.279 20.1757 103.173 20.0701 103.133 19.925L101.431 14.2888C101.312 13.8796 100.718 13.8796 100.599 14.2888L98.8965 19.925C98.8569 20.0701 98.7513 20.1757 98.6061 20.2153L92.97 21.9181C92.5608 22.0369 92.5608 22.6308 92.97 22.7496L98.6193 24.4523C98.7645 24.4919 98.8701 24.5975 98.9097 24.7427L100.612 30.3921C100.731 30.8012 101.325 30.8012 101.444 30.3921L103.147 24.7427C103.173 24.5975 103.279 24.4919 103.424 24.4523Z" fill="#525252"/>
<path d="M62.357 5.26099L65.1958 4.40543C65.4015 4.34575 65.4015 4.0473 65.1958 3.98761L62.357 3.13205C62.2841 3.11216 62.231 3.0591 62.2111 2.98615L61.3555 0.154199C61.2958 -0.0513995 60.9973 -0.0513995 60.9376 0.154199L60.082 2.98615C60.0621 3.0591 60.009 3.11216 59.9361 3.13205L57.1039 3.98761C56.8983 4.0473 56.8983 4.34575 57.1039 4.40543L59.9427 5.26099C60.0157 5.28088 60.0687 5.33394 60.0886 5.4069L60.9443 8.24548C61.004 8.45107 61.3024 8.45107 61.3621 8.24548L62.2177 5.4069C62.231 5.33394 62.2841 5.28088 62.357 5.26099Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1,19 +0,0 @@
<svg width="150" height="126" viewBox="0 0 150 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M84.2755 124.383C117.256 124.383 143.993 97.6454 143.993 64.5473C143.993 31.4493 117.138 4.71167 84.2755 4.71167C51.2952 4.71167 24.5576 31.4493 24.5576 64.5473C24.5576 97.6454 51.2952 124.383 84.2755 124.383Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M139.635 25.4417C142.302 25.4417 144.464 23.2796 144.464 20.6125C144.464 17.9453 142.302 15.7832 139.635 15.7832C136.968 15.7832 134.806 17.9453 134.806 20.6125C134.806 23.2796 136.968 25.4417 139.635 25.4417Z" fill="#181818"/>
<path d="M146.702 6.59605C148.523 6.59605 150 5.11948 150 3.29803C150 1.47658 148.523 0 146.702 0C144.88 0 143.404 1.47658 143.404 3.29803C143.404 5.11948 144.88 6.59605 146.702 6.59605Z" fill="#181818"/>
<path d="M27.2663 25.3241C29.0877 25.3241 30.5643 23.8475 30.5643 22.0261C30.5643 20.2046 29.0877 18.728 27.2663 18.728C25.4448 18.728 23.9683 20.2046 23.9683 22.0261C23.9683 23.8475 25.4448 25.3241 27.2663 25.3241Z" fill="#181818"/>
<path d="M7.12491 88.9293C10.5076 88.9293 13.2498 86.187 13.2498 82.8044C13.2498 79.4217 10.5076 76.6794 7.12491 76.6794C3.74221 76.6794 1 79.4217 1 82.8044C1 86.187 3.74221 88.9293 7.12491 88.9293Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M128.187 105.12C117.275 116.97 101.64 124.383 84.275 124.383C70.4162 124.383 57.6597 119.662 47.5264 111.731V14.0746C47.5264 10.8443 50.1275 8.20825 53.3724 8.20825H111.37L128.187 25.0838V105.12Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M71.5926 104.186H63.1468C62.8317 104.186 62.5796 103.369 62.5796 102.39C62.5796 101.41 62.8317 100.593 63.1468 100.593H71.5926C71.9078 100.593 72.1599 101.41 72.1599 102.39C72.1599 103.533 71.9078 104.186 71.5926 104.186Z" fill="#525252"/>
<path d="M90.1779 28.7408H63.7222C63.1069 28.7408 62.5796 27.9117 62.5796 26.9445C62.5796 25.9773 63.1069 25.1482 63.7222 25.1482H90.1779C90.7932 25.1482 91.3205 25.9773 91.3205 26.9445C91.3205 27.9117 90.7932 28.7408 90.1779 28.7408Z" fill="#525252"/>
<path d="M70.2489 37.1239H63.3525C62.9363 37.1239 62.5796 36.2948 62.5796 35.3276C62.5796 34.3603 62.9363 33.5312 63.3525 33.5312H70.1895C70.6056 33.5312 70.9624 34.3603 70.9624 35.3276C70.9624 36.2948 70.6056 37.1239 70.2489 37.1239Z" fill="#525252"/>
<path d="M111.994 83.8276H79.203H75.5888H64.6583C64.2176 83.8276 63.7769 84.5761 63.7769 85.6239C63.7769 86.5221 64.1295 87.4203 64.6583 87.4203H75.5888H79.203H111.994C112.435 87.4203 112.876 86.6718 112.876 85.6239C112.788 84.5761 112.435 83.8276 111.994 83.8276Z" fill="#525252"/>
<path d="M111.993 74.2476H99.8064H95.6559H64.6599C64.2184 74.2476 63.7769 74.996 63.7769 76.0439C63.7769 76.942 64.1301 77.8402 64.6599 77.8402H95.6559H99.8064H111.993C112.434 77.8402 112.876 77.0917 112.876 76.0439C112.788 74.996 112.434 74.2476 111.993 74.2476Z" fill="#525252"/>
<path d="M113.251 65.8647H110.007H106.762H64.678C64.2274 65.8647 63.7769 66.6132 63.7769 67.6611C63.7769 68.5592 64.1373 69.4574 64.678 69.4574H106.762H110.367H113.161C113.611 69.4574 114.062 68.7089 114.062 67.6611C114.152 66.7629 113.701 65.8647 113.251 65.8647Z" fill="#525252"/>
<path d="M113.18 56.2844H102.728H100.137H64.6702C64.2235 56.2844 63.7769 57.0329 63.7769 58.0807C63.7769 58.9789 64.1342 59.877 64.6702 59.877H100.137H102.728H113.091C113.716 59.877 114.073 59.1286 114.073 58.0807C114.073 57.1826 113.716 56.2844 113.18 56.2844Z" fill="#525252"/>
<path d="M111.37 8.91162V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" fill="#181818"/>
<path d="M111.37 8.91162V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8988 42.4288V79.5311C70.8988 83.8729 67.3447 87.0305 63.3956 87.0305H61.421V96.8981C61.421 99.2664 58.6567 100.056 57.077 98.477L47.2043 87.0305H8.50327C4.15928 87.0305 1 83.4782 1 79.5311V42.4288C1 38.0871 4.55418 34.9294 8.50327 34.9294H63.3956C67.3447 34.9294 70.8988 38.4818 70.8988 42.4288Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M19.5605 61.7695V53.8754C19.5605 52.6913 20.3504 51.9019 21.5351 51.9019H30.2231C31.4078 51.9019 32.1976 52.6913 32.1976 53.8754V62.9536C32.1976 65.3218 32.1976 67.2953 31.8027 68.8742C31.4157 70.4216 30.6493 71.2107 29.5035 72.3563C29.457 72.4028 29.4061 72.4451 29.3504 72.4803C28.3636 73.1039 26.8665 73.4756 25.0679 73.8037C24.46 73.9146 23.9046 73.4429 23.9046 72.825V71.3204C23.9046 70.8227 24.274 70.4097 24.7555 70.2839C26.9907 69.7001 28.2485 68.1396 28.2485 65.3218C28.2485 65.3218 28.2485 65.3218 28.2485 65.3218V65.3218C28.2485 65.3218 27.8951 64.5324 27.4591 64.5324H22.2327C22.0353 64.5324 21.8422 64.4743 21.6783 64.3643C20.5832 63.629 19.5605 62.8696 19.5605 61.7695ZM38.9111 61.7695V53.8754C38.9111 52.6913 39.7009 51.9019 40.8856 51.9019H49.5736C50.7583 51.9019 51.5481 52.6913 51.5481 53.8754V62.9536C51.5481 65.3218 51.5481 67.2953 51.1532 68.8742C50.7662 70.4216 49.9998 71.2107 48.8541 72.3563C48.8075 72.4028 48.7566 72.4451 48.7009 72.4803C47.7141 73.1039 46.217 73.4756 44.4184 73.8037C43.8105 73.9146 43.255 73.4429 43.255 72.825V71.3204C43.255 70.8227 43.6244 70.4097 44.106 70.2839C46.3411 69.7001 47.5991 68.1396 47.5991 65.3218C47.5991 65.3218 47.5991 65.3218 47.5991 65.3218V65.3218C47.5991 65.3218 47.2456 64.5324 46.8097 64.5324H41.5832C41.3858 64.5324 41.1927 64.4743 41.0288 64.3643C39.9337 63.629 38.9111 62.8696 38.9111 61.7695Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,24 +0,0 @@
<svg width="145" height="110" viewBox="0 0 145 110" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M74.6528 108.28C104.218 108.28 128.187 84.3113 128.187 54.6402C128.187 24.9692 104.113 1 74.6528 1C45.0873 1 21.1182 24.9692 21.1182 54.6402C21.1182 84.3113 45.0873 108.28 74.6528 108.28Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M134.984 37.645C137.374 37.645 139.313 35.7068 139.313 33.3158C139.313 30.9248 137.374 28.9866 134.984 28.9866C132.593 28.9866 130.654 30.9248 130.654 33.3158C130.654 35.7068 132.593 37.645 134.984 37.645Z" fill="#525252"/>
<path d="M141.319 20.7505C142.952 20.7505 144.275 19.4268 144.275 17.7939C144.275 16.1611 142.952 14.8374 141.319 14.8374C139.686 14.8374 138.362 16.1611 138.362 17.7939C138.362 19.4268 139.686 20.7505 141.319 20.7505Z" fill="#525252"/>
<path d="M23.5469 19.4783C25.1797 19.4783 26.5034 18.1546 26.5034 16.5217C26.5034 14.8889 25.1797 13.5652 23.5469 13.5652C21.914 13.5652 20.5903 14.8889 20.5903 16.5217C20.5903 18.1546 21.914 19.4783 23.5469 19.4783Z" fill="#181818"/>
<path d="M5.49073 76.4976C8.52318 76.4976 10.9815 74.0393 10.9815 71.0068C10.9815 67.9744 8.52318 65.5161 5.49073 65.5161C2.45828 65.5161 0 67.9744 0 71.0068C0 74.0393 2.45828 76.4976 5.49073 76.4976Z" fill="#181818"/>
<path d="M85.5262 69.1928V89.5045C85.5262 91.2707 84.4985 93.037 83.0304 93.9201L67.4679 102.898C66.587 103.487 65.4125 103.782 64.3848 103.782V78.4656L84.7921 66.6907C85.2326 67.4266 85.5262 68.3097 85.5262 69.1928Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M64.3846 78.4656V103.782C63.3569 103.782 62.3292 103.487 61.3015 102.898L45.739 93.9201C44.1241 93.037 43.2432 91.4179 43.2432 89.5045V69.1928C43.2432 68.3097 43.5368 67.4266 43.9772 66.6907L64.3846 78.4656Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M84.7921 66.6908L64.3848 78.4657L43.8306 66.5437C44.271 65.8077 44.8583 65.0718 45.7392 64.6302L61.7421 55.3575C63.2102 54.4744 65.1188 54.4744 66.7338 55.2103L83.1772 64.7774C83.1772 64.7774 83.1772 64.7774 83.324 64.7774C83.9112 65.3662 84.4985 65.9549 84.7921 66.6908Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M127.809 69.1928V89.5045C127.809 91.2707 126.782 93.037 125.314 93.9201L109.751 102.898C108.87 103.487 107.696 103.782 106.668 103.782V78.4656L127.075 66.6907C127.516 67.4266 127.809 68.3097 127.809 69.1928Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M106.668 78.4656V103.782C105.64 103.782 104.612 103.487 103.585 102.898L88.0222 93.9201C86.4073 93.037 85.5264 91.4179 85.5264 89.5045V69.1928C85.5264 68.3097 85.82 67.4266 86.2604 66.6907L106.668 78.4656Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M127.075 66.6908L106.668 78.4657L86.1138 66.5437C86.5542 65.8077 87.1415 65.0718 88.0224 64.6302L104.025 55.3575C105.493 54.4744 107.402 54.4744 109.017 55.2103L125.46 64.7774C125.46 64.7774 125.46 64.7774 125.607 64.7774C126.194 65.3662 126.782 65.9549 127.075 66.6908Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M64.2381 30.7776V51.0892C64.2381 52.8554 63.2104 54.6217 61.7423 55.5048L46.1798 64.4831C45.2989 65.0719 44.1244 65.3662 43.0967 65.3662V40.0503L63.5041 28.2754C64.0913 29.0113 64.2381 29.8944 64.2381 30.7776Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M43.0965 40.0503V65.3662C42.0688 65.3662 41.0411 65.0719 40.0134 64.4831L24.4509 55.5048C22.836 54.6217 21.9551 53.0026 21.9551 51.0892V30.7776C21.9551 29.8944 22.2487 29.0113 22.6892 28.2754L43.0965 40.0503Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M63.6505 28.2751L43.2432 40.0499L22.689 28.1279C23.1294 27.392 23.7167 26.656 24.5976 26.2145L40.6005 16.9418C42.0686 16.0586 43.9772 16.0586 45.5922 16.7946L61.8887 26.5088C61.8887 26.5088 61.8887 26.5088 62.0356 26.5088C62.6228 26.9504 63.2101 27.5391 63.6505 28.2751Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M109.311 30.3358V53.0024C109.311 55.063 108.283 56.9765 106.374 58.0068L88.9031 68.1626C87.8754 68.7513 86.7009 69.0457 85.5264 69.0457V40.6388L108.576 27.3921C109.017 28.2752 109.311 29.3055 109.311 30.3358Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M85.5262 40.6388V58.5955V69.0457C84.3516 69.0457 83.1771 68.7513 82.1494 68.1626L74.515 63.747L64.5315 58.0067C62.7697 56.9764 61.742 55.063 61.5952 53.1496V30.1886C61.5952 29.1583 61.8888 28.128 62.3293 27.2449L85.5262 40.6388Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M108.429 27.3921L85.3792 40.6388L62.3291 27.2449C62.7695 26.3618 63.5036 25.6258 64.3845 25.1843L82.296 14.7341C84.0578 13.7038 86.1132 13.7038 87.875 14.5869L106.374 25.3315C106.374 25.3315 106.521 25.3315 106.521 25.4787C107.402 26.0674 107.989 26.6561 108.429 27.3921Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M108.206 12.7656C108.856 12.7656 109.383 13.2922 109.383 13.9418V20.9987C109.383 21.6483 108.856 22.1749 108.206 22.1749C107.557 22.1749 107.03 21.6483 107.03 20.9987V13.9418C107.03 13.2922 107.557 12.7656 108.206 12.7656Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M123.936 13.1101C124.396 13.5694 124.396 14.3141 123.936 14.7735L115.311 23.3986C114.852 23.8579 114.107 23.8579 113.648 23.3986C113.188 22.9393 113.188 22.1946 113.648 21.7353L122.273 13.1101C122.732 12.6508 123.477 12.6508 123.936 13.1101Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M114.087 29.6239C114.087 28.9743 114.614 28.4478 115.264 28.4478H123.105C123.754 28.4478 124.281 28.9743 124.281 29.6239C124.281 30.2735 123.754 30.8001 123.105 30.8001H115.264C114.614 30.8001 114.087 30.2735 114.087 29.6239Z" fill="#737373"/>
<path d="M96.9656 43.7842C96.7253 44.8023 96.3648 45.8804 95.9443 46.7788C94.8027 48.9948 93.0003 50.7317 90.7772 51.8696C88.4942 53.0076 85.7905 53.4867 83.0868 52.8878C76.7182 51.5702 72.6326 45.3414 73.9544 38.9928C75.2762 32.6442 81.4646 28.5116 87.8333 29.8891C90.1164 30.3683 92.099 31.5062 93.7813 33.0634C96.6052 35.8784 97.8068 39.9511 96.9656 43.7842Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M89.1596 40.3732H86.4797V37.6933C86.4797 37.1573 86.0628 36.6809 85.4673 36.6809C84.9314 36.6809 84.4549 37.0978 84.4549 37.6933V40.3732H81.7751C81.2391 40.3732 80.7627 40.79 80.7627 41.3855C80.7627 41.9811 81.1796 42.3979 81.7751 42.3979H84.4549V45.0778C84.4549 45.6137 84.8718 46.0902 85.4673 46.0902C86.0033 46.0902 86.4797 45.6733 86.4797 45.0778V42.3979H89.1596C89.6955 42.3979 90.172 41.9811 90.172 41.3855C90.172 40.79 89.6955 40.3732 89.1596 40.3732Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -1,38 +0,0 @@
<svg width="123" height="126" viewBox="0 0 123 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M64.4237 111.867C91.7974 111.867 113.99 89.6745 113.99 62.2031C113.99 34.7317 91.6996 12.5396 64.4237 12.5396C37.0501 12.5396 14.8579 34.7317 14.8579 62.2031C14.8579 89.6745 37.0501 111.867 64.4237 111.867Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M93.6338 12.5396C83.2422 33.022 67.9889 41.1703 54.0085 46.0363C50.764 47.1812 47.2331 48.183 43.8931 47.3243C40.5531 46.4656 37.6425 43.0785 38.5491 39.7392C39.3602 36.6383 43.3682 35.1117 46.2788 36.3521C49.2371 37.5924 50.8594 41.0272 50.5731 44.2235C50.2868 47.4197 48.3305 50.2343 45.8494 52.1903C43.3205 54.1462 40.3145 55.3388 37.2608 56.2452C30.533 58.2488 23.519 59.2029 16.9821 61.7313C10.3976 64.2597 4.14697 68.7917 1.9044 75.4227C0.282106 80.1456 0.950108 85.4886 3.04954 89.9729C5.14898 94.4572 8.72756 98.2259 12.7356 101.231C18.8907 105.811 26.4773 108.673 34.1116 108.483C41.7459 108.292 49.4757 104.952 54.1994 98.9415C58.9231 92.9306 60.3068 84.2005 56.9668 77.2833C54.6765 72.5127 49.4757 68.6009 44.2748 69.7458C40.1714 70.6999 37.1653 74.7072 36.7359 78.9529C36.3065 83.1987 38.1673 87.3968 40.9348 90.5453C43.7022 93.7416 47.3762 95.9837 51.1934 97.9397C56.776 100.754 63.3606 102.901 69.134 100.516C74.6212 98.2736 77.818 92.5967 79.9175 87.1106C82.0169 81.6244 83.5915 75.6613 87.4086 71.1293C91.9892 65.6909 99.7189 63.1625 106.638 64.7845C113.556 66.4064 119.377 72.1311 121.095 79.0006C122.431 84.3436 120.809 91.0224 115.799 93.36C111.886 95.2205 107.067 93.8847 103.679 91.2132C100.292 88.5417 98.0012 84.7253 95.8064 81.0043" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4 4"/>
<path d="M55.1784 35.3718C63.5321 38.1997 72.5966 33.7202 75.4245 25.3665C78.2524 17.0128 73.7729 7.94831 65.4192 5.1204C57.0655 2.29248 48.001 6.77201 45.1731 15.1257C42.3451 23.4794 46.8247 32.5439 55.1784 35.3718Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M56.1375 32.5372C62.9259 34.8352 70.2919 31.1951 72.5899 24.4067C74.8879 17.6184 71.2478 10.2524 64.4594 7.95438C57.671 5.65637 50.3051 9.29651 48.007 16.0849C45.709 22.8732 49.3492 30.2392 56.1375 32.5372Z" fill="#181818"/>
<path d="M59.7561 21.8493C60.6415 22.149 61.6023 21.6742 61.902 20.7888C62.2018 19.9033 61.7269 18.9426 60.8415 18.6428C59.9561 18.3431 58.9953 18.8179 58.6956 19.7033C58.3958 20.5888 58.8706 21.5495 59.7561 21.8493Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M63.0122 12.23L60.6604 19.1773" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M62.083 20.2544L66.1857 20.4519" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M64.0744 10.7699C64.3349 10.6457 64.433 10.3214 64.2934 10.0454C64.1538 9.76951 63.8294 9.64651 63.5689 9.77072C63.3084 9.89492 63.2103 10.2193 63.3499 10.4952C63.4895 10.7711 63.8139 10.8941 64.0744 10.7699Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M57.3166 30.7045C57.5771 30.5803 57.6752 30.2559 57.5356 29.98C57.396 29.7041 57.0716 29.5811 56.8111 29.7053C56.5506 29.8295 56.4525 30.1539 56.5921 30.4298C56.7317 30.7057 57.0561 30.8287 57.3166 30.7045Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M50.7199 17.3822C50.9804 17.258 51.0785 16.9337 50.9389 16.6577C50.7993 16.3818 50.4749 16.2588 50.2144 16.383C49.9539 16.5072 49.8558 16.8316 49.9954 17.1075C50.135 17.3834 50.4594 17.5064 50.7199 17.3822Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M70.6545 24.14C70.915 24.0158 71.0131 23.6915 70.8735 23.4155C70.7339 23.1396 70.4095 23.0166 70.149 23.1408C69.8884 23.265 69.7904 23.5894 69.93 23.8653C70.0696 24.1412 70.394 24.2642 70.6545 24.14Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M12.3005 40.0978L14.9425 39.3015C15.1339 39.246 15.1339 38.9682 14.9425 38.9126L12.3005 38.1163C12.2326 38.0978 12.1832 38.0484 12.1647 37.9805L11.3684 35.3447C11.3128 35.1533 11.0351 35.1533 10.9795 35.3447L10.1832 37.9805C10.1647 38.0484 10.1153 38.0978 10.0474 38.1163L7.41159 38.9126C7.22023 38.9682 7.22023 39.246 7.41159 39.3015L10.0536 40.0978C10.1215 40.1163 10.1709 40.1657 10.1894 40.2336L10.9857 42.8756C11.0412 43.067 11.319 43.067 11.3746 42.8756L12.1709 40.2336C12.1832 40.1657 12.2326 40.1163 12.3005 40.0978Z" fill="#3c3c3c"/>
<path d="M96.5557 9.17336L99.2576 9.73368C99.4523 9.77613 99.5848 9.53199 99.4431 9.39188L97.5008 7.4318C97.45 7.38314 97.4301 7.31618 97.4463 7.24767L98.0036 4.55119C98.0461 4.35651 97.8019 4.22401 97.6618 4.3657L95.7047 6.30252C95.656 6.35336 95.5891 6.37321 95.5206 6.3571L92.8241 5.79972C92.6294 5.75727 92.4969 6.00142 92.6386 6.14152L94.5808 8.1016C94.6317 8.15026 94.6515 8.21722 94.6354 8.28573L94.0751 10.9876C94.0326 11.1823 94.2768 11.3148 94.4169 11.1731L96.377 9.23089C96.4202 9.17709 96.4872 9.15725 96.5557 9.17336Z" fill="#3c3c3c"/>
<path d="M94.8952 76.0129L96.9595 74.1819C97.1099 74.0512 96.9933 73.799 96.7963 73.8289L94.064 74.2143C93.9946 74.226 93.9291 74.2019 93.8838 74.148L92.0553 72.0895C91.9246 71.9391 91.6724 72.0556 91.7023 72.2526L92.085 74.9792C92.0967 75.0486 92.0726 75.1142 92.0187 75.1594L89.96 76.9879C89.8096 77.1186 89.9262 77.3708 90.1232 77.3409L92.8555 76.9555C92.9249 76.9438 92.9904 76.9679 93.0357 77.0218L94.8668 79.086C94.9975 79.2363 95.2497 79.1198 95.2198 78.9228L94.8345 76.1906C94.8172 76.1238 94.8413 76.0582 94.8952 76.0129Z" fill="#3c3c3c"/>
<path d="M73.8716 57.3258L76.1834 56.6291C76.3508 56.5805 76.3508 56.3374 76.1834 56.2888L73.8716 55.5921C73.8122 55.5759 73.769 55.5327 73.7528 55.4733L73.0561 53.1671C73.0074 52.9996 72.7644 52.9996 72.7158 53.1671L72.019 55.4733C72.0028 55.5327 71.9596 55.5759 71.9002 55.5921L69.5938 56.2888C69.4264 56.3374 69.4264 56.5805 69.5938 56.6291L71.9056 57.3258C71.965 57.342 72.0082 57.3852 72.0244 57.4446L72.7212 59.7563C72.7698 59.9237 73.0128 59.9237 73.0615 59.7563L73.7582 57.4446C73.769 57.3852 73.8122 57.342 73.8716 57.3258Z" fill="#3c3c3c"/>
<path d="M29.5118 89.7614L31.8235 88.9651C31.991 88.9095 31.991 88.6317 31.8235 88.5762L29.5118 87.7799C29.4524 87.7614 29.4092 87.712 29.393 87.6441L28.6962 85.0083C28.6476 84.8169 28.4045 84.8169 28.3559 85.0083L27.6591 87.6441C27.6429 87.712 27.5997 87.7614 27.5403 87.7799L25.234 88.5762C25.0665 88.6317 25.0665 88.9095 25.234 88.9651L27.5457 89.7614C27.6051 89.7799 27.6483 89.8293 27.6646 89.8972L28.3613 92.5392C28.4099 92.7305 28.653 92.7305 28.7016 92.5392L29.3984 89.8972C29.4092 89.8293 29.4524 89.7799 29.5118 89.7614Z" fill="#3c3c3c"/>
<path d="M25.6922 50.6715L27.3434 50.1738C27.463 50.1391 27.463 49.9655 27.3434 49.9308L25.6922 49.4331C25.6497 49.4216 25.6188 49.3907 25.6073 49.3483L25.1096 47.701C25.0749 47.5814 24.9013 47.5814 24.8665 47.701L24.3688 49.3483C24.3573 49.3907 24.3264 49.4216 24.284 49.4331L22.6366 49.9308C22.517 49.9655 22.517 50.1391 22.6366 50.1738L24.2878 50.6715C24.3303 50.6831 24.3611 50.7139 24.3727 50.7564L24.8704 52.4075C24.9051 52.5271 25.0787 52.5271 25.1134 52.4075L25.6111 50.7564C25.6188 50.7139 25.6497 50.6831 25.6922 50.6715Z" fill="#3c3c3c"/>
<path d="M120.831 51.7623L122.482 51.2647C122.602 51.2299 122.602 51.0563 122.482 51.0216L120.831 50.524C120.788 50.5124 120.758 50.4815 120.746 50.4391L120.248 48.7918C120.214 48.6723 120.04 48.6723 120.005 48.7918L119.508 50.4391C119.496 50.4815 119.465 50.5124 119.423 50.524L117.775 51.0216C117.656 51.0563 117.656 51.2299 117.775 51.2647L119.426 51.7623C119.469 51.7739 119.5 51.8047 119.511 51.8472L120.009 53.4983C120.044 53.6179 120.217 53.6179 120.252 53.4983L120.75 51.8472C120.758 51.8047 120.788 51.7739 120.831 51.7623Z" fill="#3c3c3c"/>
<path d="M37.8972 27.6539L39.5485 27.1563C39.6681 27.1215 39.6681 26.9479 39.5485 26.9132L37.8972 26.4156C37.8548 26.404 37.8239 26.3731 37.8124 26.3307L37.3147 24.6834C37.2799 24.5639 37.1063 24.5639 37.0716 24.6834L36.5739 26.3307C36.5623 26.3731 36.5315 26.404 36.489 26.4156L34.8417 26.9132C34.7221 26.9479 34.7221 27.1215 34.8417 27.1563L36.4929 27.6539C36.5353 27.6655 36.5662 27.6963 36.5778 27.7388L37.0755 29.3899C37.1102 29.5095 37.2838 29.5095 37.3185 29.3899L37.8162 27.7388C37.8239 27.6963 37.8548 27.6655 37.8972 27.6539Z" fill="#3c3c3c"/>
<path d="M13.3069 83.1031L14.9581 82.6055C15.0777 82.5708 15.0777 82.3972 14.9581 82.3624L13.3069 81.8648C13.2645 81.8532 13.2336 81.8224 13.222 81.7799L12.7243 80.1327C12.6896 80.0131 12.516 80.0131 12.4813 80.1327L11.9836 81.7799C11.972 81.8224 11.9411 81.8532 11.8987 81.8648L10.2513 82.3624C10.1317 82.3972 10.1317 82.5708 10.2513 82.6055L11.9026 83.1031C11.945 83.1147 11.9759 83.1456 11.9874 83.188L12.4851 84.8391C12.5199 84.9587 12.6935 84.9587 12.7282 84.8391L13.2259 83.188C13.2336 83.1456 13.2645 83.1147 13.3069 83.1031Z" fill="#3c3c3c"/>
<path d="M58.6922 57.5907L61.979 62.276C62.9181 63.6146 63.5603 64.7335 64.0498 66.2448C65.8824 71.0942 65.1988 76.4246 62.6771 80.7618C62.209 81.5182 61.9707 82.3987 62.0863 83.1736C62.1063 84.0157 62.356 84.9818 62.8927 85.7468C63.9659 87.2767 65.7655 88.0116 67.5737 87.7419C73.3808 86.6643 79.3534 88.4667 83.4436 92.8737C83.9417 93.3803 84.3442 93.954 84.8137 94.6233L88.1005 99.3086C88.5029 99.8823 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.641 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.76 55.8413 95.8296C56.7775 94.3168 56.6319 92.2789 55.5586 90.749C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.1149 53.4136 89.1149C52.6287 88.8095 51.7867 88.8295 50.9447 88.8495C47.0414 89.5903 43.0411 88.9724 39.4319 87.0814C38.5128 86.5848 37.5937 86.0882 36.7988 85.3618C36.569 85.2376 36.3678 84.9507 36.2336 84.7595C35.3716 83.9375 34.4425 83.0198 33.7047 81.968L30.4179 77.2828C30.3508 77.1872 30.2167 76.9959 30.0825 76.8047L58.3854 56.9499C58.491 57.3038 58.5581 57.3995 58.6922 57.5907Z" fill="#181818" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M74.5356 102.547C74.5356 102.547 64.4216 111.925 63.7422 111.974C63.2927 112.146 59.3138 113.796 56.7792 114.861L56.1085 113.905C55.7731 113.426 55.4377 112.948 55.1309 112.308C55.255 112.078 55.3121 111.752 55.3692 111.427C56.6664 107.378 60.698 101.126 69.1952 101.443L74.5356 102.547Z" fill="#181818" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M58.6922 57.5907L61.979 62.276C62.9181 63.6146 63.5603 64.7335 64.0498 66.2448C65.8824 71.0942 65.1988 76.4246 62.6771 80.7618C62.209 81.5182 61.9707 82.3987 62.0863 83.1736C62.1063 84.0157 62.356 84.9818 62.8927 85.7468C63.9659 87.2767 65.7655 88.0116 67.5737 87.7419C73.3808 86.6643 79.3534 88.4667 83.4436 92.8737C83.9417 93.3803 84.3442 93.954 84.8137 94.6233L88.1005 99.3086C88.5029 99.8823 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.641 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.76 55.8413 95.8296C56.7775 94.3168 56.6319 92.2789 55.5586 90.749C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.1149 53.4136 89.1149C52.6287 88.8095 51.7867 88.8295 50.9447 88.8495C47.0414 89.5903 43.0411 88.9724 39.4319 87.0814C38.5128 86.5848 37.5937 86.0882 36.7988 85.3618C36.569 85.2376 36.3678 84.9507 36.2336 84.7595C35.3716 83.9375 34.4425 83.0198 33.7047 81.968L30.4179 77.2828C30.3508 77.1872 30.2167 76.9959 30.0825 76.8047L58.3854 56.9499C58.491 57.3038 58.5581 57.3995 58.6922 57.5907Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M56.5304 77.084L45.3631 85.774L39.5946 87.1099C38.6755 86.6132 37.7565 86.1166 36.9615 85.3902C36.7318 85.266 36.5305 84.9792 36.3964 84.788C39.4818 79.6274 42.3203 76.352 50.5763 74.6979C51.9635 74.4381 53.2551 74.2454 54.805 74.0142C68.6011 72.3258 56.5304 77.084 56.5304 77.084Z" fill="#181818" stroke="#525252" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M64.1171 66.3406C65.9496 71.19 65.266 76.5204 62.7443 80.8576C62.2762 81.6139 62.0379 82.4945 62.1535 83.2694L62.0579 83.3365C60.528 84.4097 60.1284 86.6875 61.2017 88.2174L71.1961 102.464L68.4232 104.41L58.3617 90.067C57.2885 88.5371 55.1063 88.0704 53.4808 89.2107C52.6959 88.9053 51.8539 88.9253 51.0119 88.9453C47.1086 89.6861 43.1084 89.0682 39.4991 87.1772C38.58 86.6806 37.6609 86.184 36.866 85.4576C45.3803 83.7649 48.2459 78.9011 50.4523 74.9279C51.1687 73.712 51.7895 72.5631 52.4773 71.5099C55.2003 67.4596 59.2177 66.0681 64.1171 66.3406Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M84.7178 94.6907L88.0046 99.376C88.407 99.9497 88.7139 100.59 89.0493 101.069L63.9974 118.643L59.3949 118.59L56.4435 114.383C56.1081 113.905 55.7727 113.427 55.5329 112.881C55.3988 112.69 55.2932 112.336 55.0919 112.049C55.1876 111.982 55.2546 112.078 55.3503 112.011C55.513 112.039 55.6086 111.972 55.7042 111.905C65.022 109.934 67.5137 104.334 69.8727 99.9684C70.2452 99.2791 70.7133 98.5227 71.1528 97.929C74.0385 93.9073 78.2186 92.5443 83.2807 92.8454C83.7502 93.5147 84.2483 94.0214 84.7178 94.6907Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M60.9889 57.4062L29.6263 79.4074C28.957 79.8769 27.9808 79.7057 27.5783 79.132L25.4319 76.0722C24.9623 75.4029 25.2007 74.5223 25.87 74.0528L57.3282 51.9845C57.9976 51.515 58.9067 51.5906 59.3762 52.2599L61.4556 55.2241C61.7339 56.0275 61.6583 56.9366 60.9889 57.4062Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M92.6489 102.538L61.2863 124.539C60.6169 125.009 59.7078 124.933 59.2383 124.264L57.1589 121.3C56.6894 120.63 56.9277 119.75 57.597 119.28L89.0553 97.212C89.7246 96.7425 90.6337 96.8181 91.1032 97.4875L93.1826 100.452C93.4609 101.255 93.3182 102.069 92.6489 102.538Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6053L109.875 38.2699C109.466 39.0312 109.09 39.6002 108.492 40.1902C106.636 42.2069 103.956 43.1493 101.309 42.9878C100.841 42.9462 100.368 43.0427 100.03 43.2813C99.6367 43.4906 99.2396 43.8379 99.0057 44.2729C98.5378 45.143 98.6179 46.1675 99.1745 46.9576C101.062 49.4447 101.628 52.6936 100.518 55.6717C100.397 56.0272 100.221 56.3535 100.017 56.7342L98.5837 59.3988C98.4083 59.7251 98.1785 60.0221 98.0323 60.294L82.0444 51.6971C82.1362 51.396 82.3409 51.0153 82.4871 50.7434L83.9199 48.0788C84.0661 47.8069 84.2667 47.5642 84.4129 47.2923C84.4714 47.1836 84.6135 47.0497 84.7012 46.8865C86.5983 44.4014 89.5374 43.1075 92.5693 43.3358C93.5061 43.4189 94.4341 42.8663 94.902 41.9962C95.1067 41.6156 95.2319 41.122 95.1898 40.6788C95.219 40.6244 95.1646 40.5952 95.1646 40.5952C95.1226 40.1519 94.9132 39.759 94.7039 39.366C93.4275 37.6982 92.7698 35.662 92.8062 33.5084C92.8226 32.9563 92.839 32.4043 92.9934 31.8564C92.9975 31.7184 93.0852 31.5553 93.1437 31.4465C93.3274 30.8442 93.5402 30.1876 93.8619 29.5894L95.2947 26.9247C95.324 26.8704 95.3824 26.7616 95.4409 26.6528L111.538 35.3082C111.395 35.4421 111.366 35.4965 111.308 35.6053Z" fill="#181818" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M93.8341 53.7603C93.8341 53.7603 87.0037 51.2092 86.8196 50.8998C86.6313 50.7285 84.9075 49.2407 83.803 48.2963L84.0954 47.7525C84.2416 47.4806 84.3878 47.2087 84.6176 46.9116C84.7556 46.9157 84.9229 46.8655 85.0901 46.8152C87.3104 46.4668 91.2207 46.8869 93.0881 50.9756L93.8341 53.7603Z" fill="#181818" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6053L109.875 38.2699C109.466 39.0312 109.09 39.6002 108.492 40.1902C106.636 42.2069 103.956 43.1493 101.309 42.9878C100.841 42.9462 100.368 43.0427 100.03 43.2813C99.6367 43.4906 99.2396 43.8379 99.0057 44.2729C98.5378 45.143 98.6179 46.1675 99.1745 46.9576C101.062 49.4447 101.628 52.6936 100.518 55.6717C100.397 56.0272 100.221 56.3535 100.017 56.7342L98.5837 59.3988C98.4083 59.7251 98.1785 60.0221 98.0323 60.294L82.0444 51.6971C82.1362 51.396 82.3409 51.0153 82.4871 50.7434L83.9199 48.0788C84.0661 47.8069 84.2667 47.5642 84.4129 47.2923C84.4714 47.1836 84.6135 47.0497 84.7012 46.8865C86.5983 44.4014 89.5374 43.1075 92.5693 43.3358C93.5061 43.4189 94.4341 42.8663 94.902 41.9962C95.1067 41.6156 95.2319 41.122 95.1898 40.6788C95.219 40.6244 95.1646 40.5952 95.1646 40.5952C95.1226 40.1519 94.9132 39.759 94.7039 39.366C93.4275 37.6982 92.7698 35.662 92.8062 33.5084C92.8226 32.9563 92.839 32.4043 92.9934 31.8564C92.9975 31.7184 93.0852 31.5553 93.1437 31.4465C93.3274 30.8442 93.5402 30.1876 93.8619 29.5894L95.2947 26.9247C95.324 26.8704 95.3824 26.7616 95.4409 26.6528L111.538 35.3082C111.395 35.4421 111.366 35.4965 111.308 35.6053Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M101.587 39.2113L94.8318 35.9994L92.8315 33.5918C92.8479 33.0398 92.8643 32.4878 93.0187 31.9399C93.0228 31.8019 93.1105 31.6388 93.169 31.53C96.339 31.7623 98.5598 32.3256 101.301 35.8325C101.753 36.4261 102.151 36.9904 102.628 37.6676C106.7 43.7832 101.587 39.2113 101.587 39.2113Z" fill="#181818" stroke="#525252" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M108.462 40.2444C106.607 42.2611 103.927 43.2036 101.28 43.042C100.811 43.0005 100.339 43.0969 100 43.3355L99.9459 43.3063C99.0758 42.8384 97.9051 43.1904 97.4372 44.0605L93.0803 52.1632L91.5033 51.3152L95.8894 43.1581C96.3573 42.288 96.0597 41.1465 95.1353 40.6494C95.0932 40.2062 94.8839 39.8132 94.6745 39.4202C93.3981 37.7524 92.7404 35.7163 92.7768 33.5626C92.7932 33.0106 92.8096 32.4586 92.964 31.9107C95.7847 35.5305 98.7622 35.7295 101.163 35.8285C101.907 35.8782 102.597 35.8987 103.258 35.9736C105.817 36.2983 107.428 37.8656 108.462 40.2444Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M99.9622 56.7048L98.5294 59.3694C98.354 59.6957 98.1241 59.9928 97.9779 60.2647L83.7302 52.6035L82.6626 50.417L83.9492 48.0243C84.0954 47.7524 84.2416 47.4805 84.4422 47.2378C84.5007 47.129 84.6428 46.9951 84.7305 46.832C84.7849 46.8612 84.7556 46.9156 84.81 46.9449C84.8352 47.0285 84.8895 47.0577 84.9439 47.087C88.0867 51.0202 91.3234 50.8678 93.9454 50.9457C94.3594 50.958 94.8278 50.9996 95.2126 51.0663C97.7972 51.4746 99.4332 53.1255 100.493 55.5879C100.288 55.9686 100.167 56.3241 99.9622 56.7048Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.939 36.6459L94.1026 27.0548C93.722 26.8502 93.5711 26.3484 93.7466 26.0221L94.6823 24.282C94.887 23.9013 95.3595 23.8048 95.7402 24.0095L113.631 33.6299C114.012 33.8346 114.192 34.2819 113.987 34.6626L113.081 36.3484C112.767 36.6706 112.32 36.8506 111.939 36.6459Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M98.1382 62.3137L80.3013 52.7226C79.9207 52.5179 79.7406 52.0706 79.9453 51.6899L80.8517 50.0041C81.0564 49.6235 81.5289 49.527 81.9096 49.7317L99.8008 59.352C100.181 59.5567 100.362 60.0041 100.157 60.3847L99.2504 62.0705C98.9369 62.3927 98.5188 62.5184 98.1382 62.3137Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,22 +0,0 @@
<svg width="144" height="118" viewBox="0 0 144 118" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M71.915 116.003C103.558 116.003 129.168 90.2405 129.168 58.455C129.168 26.6694 103.558 1 71.915 1C40.3653 1 14.6616 26.7621 14.6616 58.5476C14.6616 90.3332 40.3653 116.003 71.915 116.003Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M6.40267 71.9221C8.53691 71.9221 10.2072 70.2541 10.2072 68.1227C10.2072 65.9913 8.53691 64.3232 6.40267 64.3232C4.26842 64.3232 2.59814 65.9913 2.59814 68.1227C2.59814 70.2541 4.36122 71.9221 6.40267 71.9221Z" fill="#181818"/>
<path d="M2.59821 59.5972C3.99011 59.5972 5.19642 58.3925 5.19642 57.0025C5.19642 55.6124 3.99011 54.4077 2.59821 54.4077C1.20631 54.4077 0 55.6124 0 57.0025C0 58.4852 1.20631 59.5972 2.59821 59.5972Z" fill="#181818"/>
<path d="M138.726 81.467C141.417 81.467 143.551 79.3356 143.551 76.6481C143.551 73.9607 141.417 71.8293 138.726 71.8293C136.035 71.8293 133.9 73.9607 133.9 76.6481C133.9 79.3356 136.035 81.467 138.726 81.467Z" fill="#181818"/>
<circle cx="70.6176" cy="28.6049" r="2.23823" fill="#4D4D4D"/>
<path d="M113.372 106.197H29.3551C26.224 106.197 23.6147 103.61 23.6147 100.505V15.6447C23.6147 12.5401 26.224 9.95288 29.3551 9.95288H113.372C116.503 9.95288 119.113 12.5401 119.113 15.6447V100.505C119.113 103.61 116.503 106.197 113.372 106.197Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8772 42.0341C77.4699 42.0341 82.8144 36.6896 82.8144 30.0969C82.8144 23.5041 77.4699 18.1597 70.8772 18.1597C64.2844 18.1597 58.9399 23.5041 58.9399 30.0969C58.9399 36.6896 64.2844 42.0341 70.8772 42.0341Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8773 30.8431C73.3496 30.8431 75.3538 28.8389 75.3538 26.3666C75.3538 23.8943 73.3496 21.8901 70.8773 21.8901C68.4051 21.8901 66.4009 23.8943 66.4009 26.3666C66.4009 28.8389 68.4051 30.8431 70.8773 30.8431Z" fill="#525252"/>
<path d="M79.8302 38.3074C77.6656 40.6044 74.6218 42.0342 71.2503 42.0342C67.8788 42.0342 64.8349 40.6044 62.6704 38.3074C63.8656 34.8375 67.2553 32.3352 71.2503 32.3352C75.2452 32.3352 78.635 34.8375 79.8302 38.3074Z" fill="#525252"/>
<path d="M103.388 60.686H38.5928C37.8184 60.686 37.0439 59.8252 37.0439 58.9643V51.2166C37.0439 50.3557 37.8184 49.4949 38.5928 49.4949H103.388C104.162 49.4949 104.937 50.3557 104.937 51.2166V58.9643C104.937 59.8252 104.162 60.686 103.388 60.686Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M103.388 77.0998H38.5928C37.8184 77.0998 37.0439 76.239 37.0439 75.3781V67.6304C37.0439 66.7695 37.8184 65.9087 38.5928 65.9087H103.388C104.162 65.9087 104.937 66.7695 104.937 67.6304V75.3781C104.937 76.239 104.162 77.0998 103.388 77.0998Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M103.325 83.8145H79.6896C78.8839 83.8145 78.0781 84.4877 78.0781 85.8342V93.2398C78.0781 94.2497 78.6153 95.2595 79.6896 95.2595H103.325C104.131 95.2595 104.937 94.5863 104.937 93.2398V85.8342C104.937 84.7682 104.131 83.8145 103.325 83.8145Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M97.9375 88.291H85.8239C85.3084 88.291 84.793 88.9141 84.793 89.5371C84.793 90.1601 85.3084 90.7832 85.8239 90.7832H97.9375C98.453 90.7832 98.9684 90.1601 98.9684 89.5371C98.9684 88.6025 98.453 88.291 97.9375 88.291Z" fill="#737373"/>
<rect x="41.5205" y="53.9714" width="29.097" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="41.5205" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="45.9971" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="50.4736" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="54.9497" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="58.6802" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
<rect x="63.1567" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#737373"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -1,39 +0,0 @@
<svg width="145" height="120" viewBox="0 0 145 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M130.648 59.7265C130.648 72.9542 126.219 85.3837 118.837 95.1904C114.748 100.55 109.865 105.225 104.187 108.874C95.1015 114.918 84.0856 118.339 72.3883 118.339C40.2491 118.453 14.1289 92.2256 14.1289 59.7265C14.1289 27.3414 40.1355 1 72.3883 1C84.0856 1 94.9879 4.42096 104.187 10.4647C109.865 14.1137 114.748 18.789 118.837 24.1485C126.219 34.0693 130.648 46.3847 130.648 59.7265Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M28.0195 51.8743H27.3162C26.7887 51.8743 26.437 51.7102 26.437 51.464C26.437 51.2178 26.7887 51.0537 27.3162 51.0537H28.0195C28.547 51.0537 28.8987 51.2178 28.8987 51.464C28.8987 51.7102 28.547 51.8743 28.0195 51.8743Z" fill="#2D5887"/>
<path d="M28.0195 55.1565H27.3162C26.7887 55.1565 26.437 54.9924 26.437 54.7462C26.437 54.5 26.7887 54.3359 27.3162 54.3359H28.0195C28.547 54.3359 28.8987 54.5 28.8987 54.7462C28.8987 54.9924 28.547 55.1565 28.0195 55.1565Z" fill="#2D5887"/>
<path d="M28.0195 58.4387H27.3162C26.7887 58.4387 26.437 58.2746 26.437 58.0284C26.437 57.7823 26.7887 57.6182 27.3162 57.6182H28.0195C28.547 57.6182 28.8987 57.7823 28.8987 58.0284C28.8987 58.2746 28.547 58.4387 28.0195 58.4387Z" fill="#2D5887"/>
<path d="M28.0195 61.7209H27.3162C26.7887 61.7209 26.437 61.5568 26.437 61.3107C26.437 61.0645 26.7887 60.9004 27.3162 60.9004H28.0195C28.547 60.9004 28.8987 61.0645 28.8987 61.3107C28.8987 61.5568 28.547 61.7209 28.0195 61.7209Z" fill="#2D5887"/>
<path d="M60.1189 51.8743H48.553C48.0841 51.8743 47.7715 51.7102 47.7715 51.464C47.7715 51.2178 48.0841 51.0537 48.553 51.0537H60.1189C60.5878 51.0537 60.9004 51.2178 60.9004 51.464C60.9004 51.7102 60.5878 51.8743 60.1189 51.8743Z" fill="white"/>
<path d="M84.7621 61.7209H48.5264C48.0734 61.7209 47.7715 61.5568 47.7715 61.3107C47.7715 61.0645 48.0734 60.9004 48.5264 60.9004H84.7621C85.215 60.9004 85.517 61.0645 85.517 61.3107C85.517 61.5568 85.215 61.7209 84.7621 61.7209Z" fill="url(#paint0_linear)"/>
<path d="M60.1642 55.1565H44.4053C43.9635 55.1565 43.6689 54.9924 43.6689 54.7462C43.6689 54.5 43.9635 54.3359 44.4053 54.3359H60.1642C60.606 54.3359 60.9006 54.5 60.9006 54.7462C60.9006 54.9924 60.606 55.1565 60.1642 55.1565Z" fill="#2D5887"/>
<path d="M72.4741 58.4387H44.4038C43.9629 58.4387 43.6689 58.2746 43.6689 58.0284C43.6689 57.7823 43.9629 57.6182 44.4038 57.6182H72.4741C72.915 57.6182 73.2089 57.7823 73.2089 58.0284C73.0619 58.2746 72.768 58.4387 72.4741 58.4387Z" fill="#2D5887"/>
<path d="M84.7181 58.4387H74.0082C73.5287 58.4387 73.209 58.2746 73.209 58.0284C73.209 57.7823 73.5287 57.6182 74.0082 57.6182H84.7181C85.1976 57.6182 85.5173 57.7823 85.5173 58.0284C85.5173 58.2746 85.1976 58.4387 84.7181 58.4387Z" fill="white"/>
<path d="M91.3056 58.4387H87.1141C86.6484 58.4387 86.3379 58.2746 86.3379 58.0284C86.3379 57.7823 86.6484 57.6182 87.1141 57.6182H91.3056C91.7713 57.6182 92.0818 57.7823 92.0818 58.0284C92.0818 58.2746 91.7713 58.4387 91.3056 58.4387Z" fill="url(#paint1_linear)"/>
<path d="M1 103.569H138.853" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M97.8252 51.0537V103.569H23.3713C20.4342 103.569 18.2314 101.209 18.2314 98.4062V51.0537H97.8252Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M127.366 51.0537V98.4062C127.366 101.356 124.917 103.569 122.009 103.569H97.8257V51.0537H127.366Z" fill="#DAE1ED"/>
<path d="M127.366 51.0537V98.4062C127.366 101.356 124.917 103.569 122.009 103.569H97.8257V51.0537H127.366Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M46.9512 51.0537L62.6074 26.437H142.956L126.857 51.0537H46.9512Z" fill="#C5CDDB"/>
<path d="M46.9512 51.0537L62.6074 26.437H142.956L126.857 51.0537H46.9512Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path opacity="0.3" d="M127.366 51.1975V78.9526H105.826C103.826 78.9526 102.441 77.6583 102.134 75.7888L97.8257 51.0537L127.366 51.1975Z" fill="url(#paint2_linear)"/>
<path d="M126.747 51.0537H97.8257L112.511 73.3119C113.56 74.7859 115.208 75.6704 116.857 75.6704H139.334C140.833 75.6704 141.882 73.9015 140.982 72.7223L126.747 51.0537Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M97.8254 51.0537L82.0597 26.437H1L17.3607 51.0537H97.8254Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M57.9543 81.4143H26.9218C26.1967 81.4143 25.6167 80.8673 25.6167 80.1835C25.6167 79.4997 26.1967 78.9526 26.9218 78.9526H57.9543C58.6794 78.9526 59.2594 79.4997 59.2594 80.1835C59.1144 80.8673 58.6794 81.4143 57.9543 81.4143Z" fill="#3c3c3c"/>
<path d="M57.9543 87.1582H26.9218C26.1967 87.1582 25.6167 86.7935 25.6167 86.3376C25.6167 85.8818 26.1967 85.5171 26.9218 85.5171H57.9543C58.6794 85.5171 59.2594 85.8818 59.2594 86.3376C59.1144 86.7935 58.6794 87.1582 57.9543 87.1582Z" fill="#3c3c3c"/>
<path d="M41.5228 93.7227H26.9422C26.2058 93.7227 25.6167 93.358 25.6167 92.9021C25.6167 92.4462 26.2058 92.0815 26.9422 92.0815H41.5228C42.2592 92.0815 42.8483 92.4462 42.8483 92.9021C42.7011 93.358 42.1119 93.7227 41.5228 93.7227Z" fill="#3c3c3c"/>
<defs>
<linearGradient id="paint0_linear" x1="47.941" y1="61.3273" x2="85.5608" y2="61.3273" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF66A9"/>
<stop offset="1" stop-color="#F53689"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="86.3762" y1="58.0033" x2="92.0807" y2="58.0033" gradientUnits="userSpaceOnUse">
<stop stop-color="#83A6FF"/>
<stop offset="1" stop-color="#5A78FF"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="112.602" y1="79.5252" x2="112.602" y2="54.1127" gradientUnits="userSpaceOnUse">
<stop offset="0.00289017" stop-opacity="0"/>
<stop offset="1"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,17 +0,0 @@
<svg width="128" height="111" viewBox="0 0 128 111" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M63.6998 109.492C93.3998 109.492 117.6 85.3922 117.6 55.7922C117.5 26.0922 93.3998 1.99219 63.6998 1.99219C33.8998 1.99219 9.7998 26.0922 9.7998 55.6922C9.7998 85.3922 33.8998 109.492 63.6998 109.492Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M118.9 36.992C121.164 36.992 123 35.1564 123 32.892C123 30.6276 121.164 28.792 118.9 28.792C116.635 28.792 114.8 30.6276 114.8 32.892C114.8 35.1564 116.635 36.992 118.9 36.992Z" fill="#525252"/>
<path d="M124.9 20.9921C126.446 20.9921 127.7 19.7385 127.7 18.1921C127.7 16.6457 126.446 15.3921 124.9 15.3921C123.354 15.3921 122.1 16.6457 122.1 18.1921C122.1 19.7385 123.354 20.9921 124.9 20.9921Z" fill="#525252"/>
<path d="M5.2 91.7921C8.07188 91.7921 10.4 89.464 10.4 86.5921C10.4 83.7202 8.07188 81.3921 5.2 81.3921C2.32812 81.3921 0 83.7202 0 86.5921C0 89.464 2.32812 91.7921 5.2 91.7921Z" fill="#525252"/>
<path d="M101.512 33.162V98.2932C101.512 103.039 97.7479 106.803 93.0022 106.803H34.4168C29.6711 106.803 25.9072 103.039 25.9072 98.2932V13.0335C25.9072 8.28779 29.6711 4.52393 34.4168 4.52393H73.0373C75.1647 4.52393 77.1285 5.34216 78.6013 6.81497L99.2207 27.4344C100.694 29.0709 101.512 31.0346 101.512 33.162Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M75.9185 5.11914V24.4727C75.9185 27.9435 78.8576 30.7201 82.1974 30.7201H100.924" fill="#525252"/>
<path d="M51.1871 89.0665H37.5406C37.0314 89.0665 36.624 88.5253 36.624 87.8758C36.624 87.2263 37.0314 86.6851 37.5406 86.6851H51.1871C51.6963 86.6851 52.1037 87.2263 52.1037 87.8758C52.1037 88.6335 51.6963 89.0665 51.1871 89.0665Z" fill="#525252"/>
<path d="M68.6393 22.3849H37.9495C37.2358 22.3849 36.624 21.8353 36.624 21.1942C36.624 20.553 37.2358 20.0034 37.9495 20.0034H68.6393C69.353 20.0034 69.9648 20.553 69.9648 21.1942C69.9648 21.8353 69.353 22.3849 68.6393 22.3849Z" fill="#525252"/>
<path d="M49.6968 29.5294H37.9414C37.2321 29.5294 36.624 28.9799 36.624 28.3387C36.624 27.6975 37.2321 27.1479 37.9414 27.1479H49.5955C50.3049 27.1479 50.9129 27.6975 50.9129 28.3387C50.9129 28.9799 50.3049 29.5294 49.6968 29.5294Z" fill="#525252"/>
<path d="M90.4363 71.2056H54.6499H50.7057H38.7769C38.2959 71.2056 37.8149 71.7017 37.8149 72.3963C37.8149 72.9917 38.1997 73.5871 38.7769 73.5871H50.7057H54.6499H90.4363C90.9173 73.5871 91.3983 73.0909 91.3983 72.3963C91.3021 71.7017 90.9173 71.2056 90.4363 71.2056Z" fill="#525252"/>
<path d="M90.4346 62.8701H77.1351H72.6056H38.7787C38.2968 62.8701 37.8149 63.3663 37.8149 64.0609C37.8149 64.6562 38.2004 65.2516 38.7787 65.2516H72.6056H77.1351H90.4346C90.9165 65.2516 91.3983 64.7555 91.3983 64.0609C91.302 63.3663 90.9165 62.8701 90.4346 62.8701Z" fill="#525252"/>
<path d="M90.5219 54.5352H87.0657H83.6095H38.775C38.295 54.5352 37.8149 55.0313 37.8149 55.7259C37.8149 56.3213 38.199 56.9166 38.775 56.9166H83.6095H87.4497H90.4259C90.9059 56.9166 91.386 56.4205 91.386 55.7259C91.482 55.1305 91.0019 54.5352 90.5219 54.5352Z" fill="#525252"/>
<path d="M90.4466 46.1997H79.3111H76.5511H38.7667C38.2908 46.1997 37.8149 46.6959 37.8149 47.3905C37.8149 47.9858 38.1956 48.5812 38.7667 48.5812H76.5511H79.3111H90.3514C91.0176 48.5812 91.3983 48.0851 91.3983 47.3905C91.3983 46.7951 91.0176 46.1997 90.4466 46.1997Z" fill="#525252"/>
<path d="M91.0478 106.992C102.671 106.992 112.093 97.5698 112.093 85.9468C112.093 74.3237 102.671 64.9014 91.0478 64.9014C79.4248 64.9014 70.0024 74.3237 70.0024 85.9468C70.0024 97.5698 79.4248 106.992 91.0478 106.992Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M92.2581 77.4039C92.3093 77.4659 92.3547 77.533 92.4099 77.5916L97.5979 83.1C98.218 83.7584 98.218 84.9106 97.5979 85.5691C96.9778 86.2275 95.8926 86.2275 95.1949 85.5691L94.5086 84.8639C93.8826 84.2207 92.7919 84.6638 92.7919 85.5613V92.1533C92.7919 93.141 92.0168 93.964 91.0866 93.964C90.1564 93.964 89.3813 93.141 89.3813 92.1533V85.5613C89.3813 84.6638 88.2906 84.2207 87.6646 84.8639L86.9783 85.5691C86.3582 86.2275 85.273 86.2275 84.5753 85.5691C84.1877 85.1576 84.0327 84.746 84.0327 84.3345C84.0327 83.9603 84.1609 83.4499 84.4757 83.1748C84.538 83.1203 84.604 83.0695 84.6608 83.0092L89.8464 77.5034C90.0789 77.2565 90.6215 76.9272 91.0091 76.9272C91.3638 76.9272 91.9781 77.0651 92.2581 77.4039Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,23 +0,0 @@
<svg width="159" height="121" viewBox="0 0 159 121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" fill="#F1F3F9" stroke="#D6DCE8" stroke-width="2" stroke-miterlimit="10"/>
<path d="M148.661 41.3581C151.294 41.3581 153.429 39.2234 153.429 36.5902C153.429 33.9569 151.294 31.8223 148.661 31.8223C146.028 31.8223 143.893 33.9569 143.893 36.5902C143.893 39.2234 146.028 41.3581 148.661 41.3581Z" fill="#525252"/>
<path d="M155.638 22.7515C157.437 22.7515 158.895 21.2937 158.895 19.4954C158.895 17.6971 157.437 16.2393 155.638 16.2393C153.84 16.2393 152.382 17.6971 152.382 19.4954C152.382 21.2937 153.84 22.7515 155.638 22.7515Z" fill="#525252"/>
<path d="M25.9329 21.3506C27.7312 21.3506 29.189 19.8928 29.189 18.0945C29.189 16.2962 27.7312 14.8384 25.9329 14.8384C24.1346 14.8384 22.6768 16.2962 22.6768 18.0945C22.6768 19.8928 24.1346 21.3506 25.9329 21.3506Z" fill="#525252"/>
<path d="M6.0471 84.1479C9.38682 84.1479 12.0942 81.4405 12.0942 78.1008C12.0942 74.7611 9.38682 72.0537 6.0471 72.0537C2.70738 72.0537 0 74.7611 0 78.1008C0 81.4405 2.70738 84.1479 6.0471 84.1479Z" fill="#525252"/>
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" fill="#181818" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M130.215 115.858H31.5791C29.6577 115.858 28.0811 114.282 28.0811 112.36V88.2676C28.0811 86.3461 29.6577 84.7695 31.5791 84.7695H130.215C132.137 84.7695 133.713 86.3461 133.713 88.2676V112.36C133.713 114.282 132.137 115.858 130.215 115.858Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M113.858 96.4461H58.9232C57.7408 96.4461 56.8047 95.7277 56.8047 94.8202C56.8047 93.9127 57.7408 93.1943 58.9232 93.1943H113.858C115.04 93.1943 115.977 93.9127 115.977 94.8202C115.977 95.7277 115.04 96.4461 113.858 96.4461Z" fill="#3c3c3c"/>
<path d="M94.1505 106.349H58.9232C57.7408 106.349 56.8047 105.631 56.8047 104.724C56.8047 103.816 57.7408 103.098 58.9232 103.098H94.1505C95.3329 103.098 96.269 103.816 96.269 104.724C96.269 105.631 95.3329 106.349 94.1505 106.349Z" fill="#3c3c3c"/>
<path d="M42.6649 109.059C47.5083 109.059 51.4347 105.133 51.4347 100.289C51.4347 95.4459 47.5083 91.5195 42.6649 91.5195C37.8214 91.5195 33.895 95.4459 33.895 100.289C33.895 105.133 37.8214 109.059 42.6649 109.059Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.8024 101.024C44.4076 100.632 44.4076 99.9943 44.8024 99.6031L45.4178 98.9931C45.8101 98.6044 45.813 97.9712 45.4242 97.5789V97.5789C45.0354 97.1867 44.4023 97.1838 44.01 97.5726L43.3691 98.2078C42.9793 98.5941 42.351 98.5941 41.9612 98.2078L41.3203 97.5726C40.928 97.1838 40.2948 97.1867 39.9061 97.5789V97.5789C39.5173 97.9712 39.5201 98.6044 39.9124 98.9931L40.5279 99.6031C40.9226 99.9943 40.9226 100.632 40.5279 101.024L39.9124 101.634C39.5201 102.022 39.5173 102.655 39.9061 103.048V103.048C40.2948 103.44 40.928 103.443 41.3203 103.054L41.9612 102.419C42.351 102.033 42.9793 102.033 43.3691 102.419L44.01 103.054C44.4023 103.443 45.0354 103.44 45.4242 103.048V103.048C45.813 102.655 45.8101 102.022 45.4178 101.634L44.8024 101.024Z" fill="#525252"/>
<path d="M133.53 36.5091H34.8936C32.9721 36.5091 31.3955 34.9325 31.3955 33.011V8.9185C31.3955 6.99701 32.9721 5.42041 34.8936 5.42041H133.53C135.451 5.42041 137.028 6.99701 137.028 8.9185V33.011C137.028 34.9325 135.451 36.5091 133.53 36.5091Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M117.172 17.097H62.2377C61.0552 17.097 60.1191 16.3785 60.1191 15.4711C60.1191 14.5636 61.0552 13.8452 62.2377 13.8452H117.172C118.355 13.8452 119.291 14.5636 119.291 15.4711C119.291 16.3785 118.355 17.097 117.172 17.097Z" fill="#3c3c3c"/>
<path d="M97.4649 27.0003H62.2377C61.0552 27.0003 60.1191 26.2819 60.1191 25.3744C60.1191 24.4669 61.0552 23.7485 62.2377 23.7485H97.4649C98.6474 23.7485 99.5835 24.4669 99.5835 25.3744C99.5835 26.2819 98.6474 27.0003 97.4649 27.0003Z" fill="#3c3c3c"/>
<path d="M45.9788 29.7096C50.8223 29.7096 54.7487 25.7832 54.7487 20.9398C54.7487 16.0963 50.8223 12.1699 45.9788 12.1699C41.1354 12.1699 37.209 16.0963 37.209 20.9398C37.209 25.7832 41.1354 29.7096 45.9788 29.7096Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M48.1164 21.6745C47.7216 21.2833 47.7216 20.6452 48.1164 20.254L48.7318 19.644C49.1241 19.2552 49.1269 18.6221 48.7382 18.2298V18.2298C48.3494 17.8375 47.7162 17.8347 47.324 18.2235L46.683 18.8587C46.2932 19.245 45.665 19.245 45.2752 18.8587L44.6342 18.2235C44.242 17.8347 43.6088 17.8375 43.22 18.2298V18.2298C42.8313 18.6221 42.8341 19.2552 43.2264 19.644L43.8418 20.254C44.2366 20.6452 44.2366 21.2833 43.8418 21.6745L43.2264 22.2844C42.8341 22.6732 42.8313 23.3064 43.22 23.6986V23.6986C43.6088 24.0909 44.242 24.0938 44.6342 23.705L45.2752 23.0698C45.665 22.6835 46.2932 22.6835 46.683 23.0698L47.324 23.705C47.7162 24.0938 48.3494 24.0909 48.7382 23.6986V23.6986C49.1269 23.3064 49.1241 22.6732 48.7318 22.2844L48.1164 21.6745Z" fill="#525252"/>
<path d="M118.391 75.9969H19.7056C17.7841 75.9969 16.2075 74.4202 16.2075 72.4988V48.4063C16.2075 46.4848 17.7841 44.9082 19.7056 44.9082H118.342C120.263 44.9082 121.84 46.4848 121.84 48.4063V72.4988C121.889 74.4695 120.313 75.9969 118.391 75.9969Z" fill="#181818" stroke="#525252" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M30.8407 69.2472C35.6841 69.2472 39.6105 65.3208 39.6105 60.4774C39.6105 55.6339 35.6841 51.7075 30.8407 51.7075C25.9972 51.7075 22.0708 55.6339 22.0708 60.4774C22.0708 65.3208 25.9972 69.2472 30.8407 69.2472Z" fill="#181818" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M34.9789 57.7183C35.3694 58.1089 35.3694 58.742 34.9789 59.1325L30.1679 63.9436C29.7774 64.3341 29.1442 64.3341 28.7537 63.9436L26.7017 61.8916C26.3112 61.5011 26.3112 60.8679 26.7017 60.4774V60.4774C27.0923 60.0869 27.7254 60.0869 28.1159 60.4774L28.7537 61.1151C29.1442 61.5057 29.7774 61.5057 30.1679 61.1151L33.5647 57.7183C33.9552 57.3278 34.5884 57.3278 34.9789 57.7183V57.7183Z" fill="#525252"/>
<path d="M102.034 56.5852H47.099C45.9166 56.5852 44.9805 55.8668 44.9805 54.9594C44.9805 54.0519 45.9166 53.3335 47.099 53.3335H102.034C103.216 53.3335 104.152 54.0519 104.152 54.9594C104.152 55.8668 103.167 56.5852 102.034 56.5852Z" fill="#3c3c3c"/>
<path d="M82.3263 66.5374H47.099C45.9166 66.5374 44.9805 65.819 44.9805 64.9115C44.9805 64.0041 45.9166 63.2856 47.099 63.2856H82.3263C83.5087 63.2856 84.4448 64.0041 84.4448 64.9115C84.3956 65.819 83.4594 66.5374 82.3263 66.5374Z" fill="#3c3c3c"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -1,76 +0,0 @@
<svg width="148" height="163" viewBox="0 0 148 163" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.1607 15.3833C25.4726 23.8793 7.48238 55.6443 15.9784 86.3324C24.4744 117.02 56.2394 135.011 86.9275 126.515C117.616 118.019 135.606 86.2537 127.11 55.5656C118.614 24.8776 86.8488 6.88731 56.1607 15.3833Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M91.7717 32.1479L92.8659 31.5956C92.9238 31.5796 93.0236 31.4896 92.9916 31.3737L92.9026 30.1513C92.9124 29.9615 92.9961 29.8136 93.1699 29.7655C93.3436 29.7174 93.5495 29.7851 93.5976 29.9588L94.1499 31.053C94.166 31.111 94.2559 31.2108 94.3718 31.1787L95.5943 31.0897C95.784 31.0995 95.9319 31.1833 95.98 31.357C96.0282 31.5308 95.9604 31.7366 95.7867 31.7847L94.6925 32.337C94.6345 32.3531 94.5347 32.4431 94.5668 32.5589L94.6558 33.7814C94.646 33.9712 94.5623 34.1191 94.3885 34.1672C94.2147 34.2153 94.0089 34.1475 93.9608 33.9738L93.4085 32.8796C93.3924 32.8217 93.3024 32.7219 93.1866 32.7539L91.9641 32.843C91.7743 32.8331 91.6264 32.7494 91.5783 32.5756C91.5463 32.4598 91.614 32.254 91.7717 32.1479Z" fill="#181818"/>
<path d="M39.2363 38.4401L40.2794 37.9135C40.3347 37.8982 40.4298 37.8124 40.3992 37.702L40.3144 36.5366C40.3237 36.3556 40.4036 36.2146 40.5692 36.1688C40.7349 36.1229 40.9311 36.1875 40.9769 36.3531L41.5035 37.3963C41.5188 37.4515 41.6046 37.5466 41.715 37.516L42.8804 37.4312C43.0614 37.4405 43.2024 37.5204 43.2482 37.686C43.2941 37.8517 43.2295 38.0479 43.0639 38.0938L42.0207 38.6203C41.9655 38.6356 41.8704 38.7214 41.9009 38.8318L41.9858 39.9973C41.9765 40.1782 41.8966 40.3192 41.731 40.3651C41.5653 40.4109 41.3691 40.3463 41.3232 40.1807L40.7967 39.1376C40.7814 39.0823 40.6956 38.9872 40.5852 39.0178L39.4197 39.1026C39.2388 39.0933 39.0978 39.0134 39.0519 38.8478C39.0061 38.6821 39.0707 38.4859 39.2363 38.4401Z" fill="#181818"/>
<path d="M76.6054 49.8626L77.448 49.4373C77.4926 49.425 77.5694 49.3557 77.5447 49.2665L77.4762 48.3252C77.4837 48.1791 77.5482 48.0652 77.682 48.0282C77.8158 47.9911 77.9743 48.0433 78.0113 48.1771L78.4366 49.0196C78.449 49.0642 78.5183 49.141 78.6074 49.1163L79.5487 49.0478C79.6949 49.0553 79.8087 49.1198 79.8458 49.2536C79.8828 49.3874 79.8307 49.5459 79.6969 49.5829L78.8544 50.0082C78.8098 50.0206 78.7329 50.0899 78.7576 50.1791L78.8262 51.1203C78.8186 51.2665 78.7541 51.3804 78.6203 51.4174C78.4865 51.4544 78.3281 51.4023 78.291 51.2685L77.8657 50.426C77.8534 50.3814 77.7841 50.3045 77.6949 50.3292L76.7536 50.3978C76.6075 50.3902 76.4936 50.3257 76.4565 50.1919C76.3873 50.1151 76.484 49.9443 76.6054 49.8626Z" fill="#181818"/>
<path d="M43.4125 109.199L44.9251 108.436C45.0051 108.414 45.1431 108.289 45.0988 108.129L44.9757 106.439C44.9893 106.177 45.1051 105.972 45.3453 105.906C45.5855 105.839 45.87 105.933 45.9365 106.173L46.7 107.686C46.7222 107.766 46.8466 107.904 47.0067 107.86L48.6967 107.736C48.959 107.75 49.1635 107.866 49.23 108.106C49.2965 108.346 49.2028 108.631 48.9627 108.697L47.45 109.461C47.37 109.483 47.232 109.607 47.2763 109.767L47.3994 111.457C47.3858 111.72 47.27 111.924 47.0299 111.991C46.7897 112.057 46.5051 111.964 46.4387 111.723L45.6751 110.211C45.6529 110.131 45.5285 109.993 45.3684 110.037L43.6785 110.16C43.4161 110.147 43.2116 110.031 43.1451 109.791C43.0787 109.55 43.1944 109.346 43.4125 109.199Z" fill="#181818"/>
<path d="M120.156 69.1737L120.948 67.985C120.998 67.9355 121.047 67.7869 120.948 67.6878L120.156 66.4991C120.057 66.301 120.057 66.1029 120.205 65.9543C120.354 65.8057 120.601 65.7562 120.75 65.9048L121.939 66.6973C121.988 66.7468 122.137 66.7963 122.236 66.6973L123.425 65.9048C123.623 65.8057 123.821 65.8057 123.969 65.9543C124.118 66.1029 124.168 66.3506 124.019 66.4991L123.227 67.6878C123.177 67.7374 123.127 67.886 123.227 67.985L124.019 69.1737C124.118 69.3718 124.118 69.5699 123.969 69.7185C123.821 69.8671 123.573 69.9167 123.425 69.7681L122.236 68.9756C122.186 68.9261 122.038 68.8765 121.939 68.9756L120.75 69.7681C120.552 69.8671 120.354 69.8671 120.205 69.7185C120.057 69.57 120.007 69.3223 120.156 69.1737Z" fill="#181818"/>
<path d="M43.5537 60.6946L44.5678 58.6607C44.6361 58.5727 44.6847 58.3283 44.5086 58.1917L43.0212 56.4733C42.8254 56.1803 42.786 55.8676 42.9909 55.6035C43.1958 55.3394 43.5768 55.2119 43.8409 55.4169L45.8749 56.431C45.9629 56.4993 46.2073 56.5479 46.3439 56.3718L48.0623 54.8844C48.3553 54.6886 48.6679 54.6492 48.932 54.8541C49.1961 55.059 49.3236 55.44 49.1187 55.7041L48.1046 57.7381C48.0363 57.8261 47.9877 58.0705 48.1638 58.2071L49.6512 59.9255C49.847 60.2184 49.8864 60.5311 49.6815 60.7952C49.4765 61.0594 49.0956 61.1868 48.8314 60.9819L46.7975 59.9678C46.7095 59.8995 46.4651 59.8509 46.3285 60.0269L44.6101 61.5144C44.3171 61.7102 44.0044 61.7496 43.7403 61.5447C43.4762 61.3397 43.3488 60.9587 43.5537 60.6946Z" fill="#181818"/>
<path d="M63.753 120.774L65.1738 120.056C65.249 120.036 65.3785 119.919 65.3369 119.768L65.2213 118.181C65.2341 117.935 65.3428 117.743 65.5684 117.68C65.794 117.618 66.0613 117.706 66.1237 117.931L66.8409 119.352C66.8617 119.427 66.9786 119.557 67.129 119.515L68.7163 119.4C68.9627 119.412 69.1547 119.521 69.2172 119.747C69.2796 119.972 69.1917 120.239 68.9661 120.302L67.5454 121.019C67.4702 121.04 67.3406 121.157 67.3822 121.307L67.4978 122.894C67.4851 123.141 67.3763 123.333 67.1507 123.395C66.9251 123.458 66.6579 123.37 66.5954 123.144L65.8782 121.724C65.8574 121.648 65.7406 121.519 65.5902 121.56L64.0029 121.676C63.7564 121.663 63.5644 121.554 63.5019 121.329C63.4395 121.103 63.5274 120.836 63.753 120.774Z" fill="#181818"/>
<path d="M36.4421 84.4297L37.4304 82.6771C37.4948 82.6024 37.5488 82.3885 37.3992 82.2598L36.1616 80.6734C36.0017 80.4056 35.9809 80.1274 36.174 79.9031C36.3671 79.6788 36.7097 79.5833 36.934 79.7764L38.6865 80.7647C38.7613 80.829 38.9752 80.883 39.1039 80.7335L40.6902 79.4958C40.9581 79.3359 41.2363 79.3152 41.4606 79.5082C41.6848 79.7013 41.7804 80.0439 41.5873 80.2682L40.599 82.0208C40.5346 82.0955 40.4807 82.3094 40.6302 82.4381L41.8678 84.0244C42.0277 84.2923 42.0485 84.5705 41.8554 84.7948C41.6623 85.0191 41.3197 85.1146 41.0955 84.9215L39.3429 83.9332C39.2681 83.8689 39.0543 83.8149 38.9255 83.9644L37.3392 85.2021C37.0714 85.362 36.7931 85.3828 36.5689 85.1897C36.3446 84.9966 36.2491 84.654 36.4421 84.4297Z" fill="#181818"/>
<path d="M61.2319 29.7607L63.0868 28.8648C63.2644 28.8157 63.304 28.6135 63.2794 28.5247L63.0938 26.4732C63.1088 26.1823 63.3014 25.8422 63.5678 25.7684C63.8341 25.6947 64.1496 25.7985 64.3367 26.1291L65.2326 27.984C65.2818 28.1615 65.4839 28.2012 65.5727 28.1766L67.6242 27.991C67.9152 28.006 68.2552 28.1986 68.329 28.465C68.4027 28.7313 68.2989 29.0468 67.9684 29.2339L66.1135 30.1298C65.9359 30.179 65.8963 30.3811 65.9208 30.4699L66.1065 32.5214C66.0914 32.8124 65.8988 33.1524 65.6325 33.2262C65.3661 33.2999 65.0506 33.1961 64.8635 32.8655L63.9676 31.0106C63.9185 30.8331 63.7163 30.7935 63.6275 30.818L61.576 31.0037C61.2851 30.9886 60.945 30.796 60.8713 30.5296C60.7729 30.1745 60.8768 29.859 61.2319 29.7607Z" fill="#181818"/>
<path d="M104.567 49.7554L105.499 49.3054C105.588 49.2807 105.608 49.1792 105.596 49.1346L105.503 48.1041C105.51 47.9579 105.607 47.7871 105.741 47.7501C105.875 47.713 106.033 47.7652 106.127 47.9312L106.577 48.8629C106.602 48.9521 106.703 48.972 106.748 48.9597L107.778 48.8665C107.924 48.874 108.095 48.9708 108.132 49.1045C108.169 49.2383 108.117 49.3968 107.951 49.4908L107.019 49.9408C106.93 49.9655 106.91 50.067 106.923 50.1116L107.016 51.1421C107.008 51.2882 106.912 51.459 106.778 51.4961C106.644 51.5331 106.486 51.481 106.392 51.3149L105.942 50.3832C105.917 50.294 105.815 50.2741 105.771 50.2865L104.74 50.3797C104.594 50.3722 104.423 50.2754 104.386 50.1416C104.349 50.0078 104.446 49.837 104.567 49.7554Z" fill="#181818"/>
<path d="M96.2883 107.626L98.3879 106.612C98.5889 106.557 98.6338 106.328 98.606 106.227L98.3959 103.905C98.4129 103.576 98.6309 103.191 98.9324 103.107C99.2339 103.024 99.591 103.141 99.8028 103.516L100.817 105.615C100.872 105.816 101.101 105.861 101.202 105.833L103.524 105.623C103.853 105.64 104.238 105.858 104.322 106.16C104.405 106.461 104.288 106.818 103.913 107.03L101.814 108.044C101.613 108.1 101.568 108.328 101.596 108.429L101.806 110.751C101.789 111.08 101.571 111.465 101.269 111.549C100.968 111.632 100.611 111.515 100.399 111.141L99.385 109.041C99.3293 108.84 99.1005 108.795 99 108.823L96.6778 109.033C96.3485 109.016 95.9636 108.798 95.8801 108.497C95.7967 108.195 95.9142 107.838 96.2883 107.626Z" fill="#181818"/>
<path d="M106.127 86.1344L107.636 85.4056C107.781 85.3656 107.813 85.2012 107.793 85.129L107.642 83.4601C107.654 83.2234 107.811 82.9468 108.028 82.8868C108.244 82.8268 108.501 82.9112 108.653 83.1801L109.382 84.6891C109.422 84.8335 109.586 84.8658 109.659 84.8458L111.328 84.6948C111.564 84.707 111.841 84.8637 111.901 85.0804C111.961 85.297 111.876 85.5537 111.608 85.7059L110.099 86.4347C109.954 86.4747 109.922 86.6391 109.942 86.7114L110.093 88.3803C110.081 88.6169 109.924 88.8936 109.707 88.9536C109.491 89.0136 109.234 88.9291 109.082 88.6602L108.353 87.1512C108.313 87.0068 108.149 86.9746 108.076 86.9946L106.407 87.1456C106.171 87.1333 105.894 86.9766 105.834 86.76C105.774 86.5433 105.931 86.2666 106.127 86.1344Z" fill="#181818"/>
<path d="M22.194 64.0334L24.4316 63.8309C24.6253 63.7773 24.7758 63.9442 24.8026 64.041L25.7797 66.0642C25.957 66.3279 26.3279 66.538 26.6184 66.4575C26.9089 66.3771 27.1458 66.103 27.1354 65.6888L26.933 63.4512C26.8794 63.2575 27.0462 63.1071 27.143 63.0803L29.1662 62.1031C29.4299 61.9259 29.64 61.5549 29.5596 61.2644C29.4791 60.9739 29.205 60.737 28.7909 60.7474L26.5532 60.9499C26.3596 61.0035 26.2091 60.8366 26.1823 60.7398L25.2052 58.7166C25.0279 58.4529 24.657 58.2428 24.3665 58.3233C24.0759 58.4037 23.8391 58.6778 23.8495 59.092L24.0519 61.3296C24.1055 61.5233 23.9387 61.6737 23.8418 61.7005L21.8187 62.6777C21.555 62.8549 21.3449 63.2259 21.4253 63.5164C21.5326 63.9037 21.9035 64.1138 22.194 64.0334Z" fill="#181818"/>
<path d="M10.2315 108.566L13.3953 108.28C13.6692 108.204 13.8819 108.44 13.9198 108.577L15.3014 111.438C15.552 111.811 16.0765 112.108 16.4872 111.994C16.898 111.88 17.2329 111.493 17.2182 110.907L16.932 107.743C16.8562 107.469 17.0921 107.257 17.229 107.219L20.0896 105.837C20.4624 105.587 20.7595 105.062 20.6458 104.651C20.532 104.241 20.1445 103.906 19.5589 103.92L16.3951 104.207C16.1212 104.282 15.9085 104.046 15.8706 103.91L14.489 101.049C14.2384 100.676 13.7139 100.379 13.3032 100.493C12.8924 100.606 12.5575 100.994 12.5722 101.58L12.8584 104.743C12.9342 105.017 12.6983 105.23 12.5614 105.268L9.7008 106.65C9.32795 106.9 9.03093 107.425 9.14465 107.835C9.29627 108.383 9.82073 108.68 10.2315 108.566Z" fill="#181818"/>
<path d="M15.485 28.2522L18.4022 27.9883C18.6546 27.9184 18.8508 28.1359 18.8857 28.2622L20.1596 30.8997C20.3907 31.2435 20.8743 31.5173 21.253 31.4125C21.6317 31.3076 21.9406 30.9503 21.927 30.4104L21.6631 27.4932C21.5932 27.2408 21.8107 27.0446 21.9369 27.0097L24.5745 25.7358C24.9183 25.5047 25.1921 25.0211 25.0873 24.6424C24.9824 24.2637 24.6251 23.9548 24.0852 23.9684L21.168 24.2323C20.9155 24.3022 20.7194 24.0847 20.6845 23.9585L19.4106 21.3209C19.1795 20.9772 18.6959 20.7033 18.3172 20.8081C17.9385 20.913 17.6296 21.2703 17.6432 21.8102L17.9071 24.7274C17.977 24.9799 17.7595 25.176 17.6333 25.2109L14.9957 26.4848C14.6519 26.7159 14.3781 27.1995 14.4829 27.5782C14.6227 28.0832 15.1063 28.3571 15.485 28.2522Z" fill="#181818"/>
<path d="M131.048 82.8904L135.025 84.3075C135.397 84.3686 135.522 84.7717 135.492 84.958L135.565 89.1786C135.66 89.768 136.127 90.4186 136.686 90.5102C137.245 90.6018 137.865 90.3208 138.173 89.6062L139.59 85.6299C139.651 85.2573 140.055 85.1321 140.241 85.1627L144.462 85.0895C145.051 84.9948 145.701 84.5275 145.793 83.9687C145.885 83.4098 145.604 82.7898 144.889 82.4813L140.913 81.0642C140.54 81.0031 140.415 80.6 140.446 80.4137L140.372 76.1931C140.278 75.6037 139.81 74.9532 139.252 74.8615C138.693 74.7699 138.073 75.0509 137.764 75.7655L136.347 79.7418C136.286 80.1144 135.883 80.2396 135.697 80.209L131.476 80.2823C130.887 80.3769 130.236 80.8442 130.144 81.4031C130.022 82.1483 130.489 82.7988 131.048 82.8904Z" fill="#181818"/>
<path d="M47.654 42.7536C47.2846 42.8559 47.068 43.2383 47.1703 43.6077C47.2726 43.9771 47.655 44.1937 48.0244 44.0914C48.3939 43.9892 48.6104 43.6068 48.5082 43.2373C48.4059 42.8679 48.0235 42.6513 47.654 42.7536Z" fill="#181818"/>
<path d="M71.5437 60.1943C71.1743 60.2965 70.9577 60.6789 71.06 61.0484C71.1622 61.4178 71.5446 61.6344 71.9141 61.5321C72.2835 61.4298 72.5001 61.0474 72.3978 60.678C72.2955 60.3086 71.9131 60.092 71.5437 60.1943Z" fill="#181818"/>
<path d="M87.0624 32.0586C86.8667 32.3882 86.9753 32.8141 87.3049 33.0098C87.6345 33.2054 88.0603 33.0969 88.256 32.7672C88.4517 32.4376 88.3431 32.0118 88.0135 31.8161C87.6839 31.6204 87.2581 31.729 87.0624 32.0586Z" fill="#181818"/>
<path d="M64.6673 18.7561C64.4717 19.0857 64.5802 19.5116 64.9099 19.7073C65.2395 19.9029 65.6653 19.7944 65.861 19.4648C66.0567 19.1351 65.9481 18.7093 65.6185 18.5136C65.2889 18.3179 64.863 18.4265 64.6673 18.7561Z" fill="#181818"/>
<path d="M24.7157 49.313C24.52 49.6426 24.6286 50.0685 24.9582 50.2641C25.2878 50.4598 25.7137 50.3513 25.9094 50.0216C26.105 49.692 25.9965 49.2662 25.6668 49.0705C25.3372 48.8748 24.9114 48.9834 24.7157 49.313Z" fill="#181818"/>
<path d="M27.6244 76.6072C27.4287 76.9368 27.5373 77.3627 27.8669 77.5583C28.1965 77.754 28.6224 77.6454 28.818 77.3158C29.0137 76.9862 28.9052 76.5604 28.5755 76.3647C28.2459 76.169 27.8201 76.2776 27.6244 76.6072Z" fill="#181818"/>
<path d="M35.1957 103.887C35 104.217 35.1086 104.642 35.4382 104.838C35.7678 105.034 36.1936 104.925 36.3893 104.596C36.585 104.266 36.4764 103.84 36.1468 103.644C35.8172 103.449 35.3914 103.557 35.1957 103.887Z" fill="#181818"/>
<path d="M53.5052 117.827C53.3096 118.157 53.4181 118.583 53.7478 118.779C54.0774 118.974 54.5032 118.866 54.6989 118.536C54.8946 118.206 54.786 117.781 54.4564 117.585C54.1268 117.389 53.7009 117.498 53.5052 117.827Z" fill="#181818"/>
<path d="M86.9999 118.051C86.8042 118.381 86.9128 118.807 87.2424 119.002C87.572 119.198 87.9978 119.089 88.1935 118.76C88.3892 118.43 88.2806 118.004 87.951 117.809C87.6214 117.613 87.1956 117.721 86.9999 118.051Z" fill="#181818"/>
<path d="M110.305 97.2576C110.109 97.5872 110.217 98.013 110.547 98.2087C110.877 98.4044 111.303 98.2958 111.498 97.9662C111.694 97.6366 111.585 97.2108 111.256 97.0151C110.926 96.8194 110.5 96.928 110.305 97.2576Z" fill="#181818"/>
<path d="M122.725 74.7053C122.53 75.035 122.638 75.4608 122.968 75.6565C123.298 75.8522 123.723 75.7436 123.919 75.414C124.115 75.0843 124.006 74.6585 123.677 74.4628C123.347 74.2671 122.921 74.3757 122.725 74.7053Z" fill="#181818"/>
<path d="M108.7 40.0772C108.504 40.4068 108.613 40.8326 108.943 41.0283C109.272 41.224 109.698 41.1154 109.894 40.7858C110.089 40.4562 109.981 40.0303 109.651 39.8346C109.322 39.639 108.896 39.7475 108.7 40.0772Z" fill="#181818"/>
<path d="M106.348 78.3655L112.645 73.4041L110.728 70.8971L104.431 75.8585L106.348 78.3655Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M146.37 58.2505L134.023 42.0017L104.475 65.4607L116.823 81.7095L146.37 58.2505Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M124.767 75.0697L112.405 58.7385" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M131.697 69.8236L119.335 53.4924" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M138.628 64.5775L126.266 48.2463" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M138.32 48.4403L108.206 71.2356" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M143.052 54.6918L112.938 77.4871" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M113.433 102.184C111.233 103.85 108.107 103.414 106.438 101.209L103.672 97.5551C103.535 97.3739 103.572 97.1089 103.752 96.972L111.075 91.4293C111.256 91.2924 111.521 91.3294 111.658 91.5106L114.424 95.1646C116.062 97.3919 115.603 100.542 113.433 102.184Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M90.6043 86.1563L84.3071 91.1177L86.2238 93.6246L92.521 88.6632L90.6043 86.1563Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M62.943 122.491L50.5952 106.242L80.1426 82.7835L92.4905 99.0323L62.943 122.491Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M83.7494 106.361L71.3877 90.0295" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M76.8183 111.607L64.4565 95.2756" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M69.8881 116.853L57.5264 100.522" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M54.5472 112.295L84.2392 88.6205" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M59.2791 118.546L88.9711 94.8715" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M96.117 64.6554L81.9844 75.353L101.414 101.022L101.437 101.052C101.437 101.052 101.437 101.052 101.46 101.082C102.267 102.086 106.048 100.507 109.936 97.5641C113.823 94.6217 116.34 91.4342 115.623 90.3618C115.623 90.3618 115.623 90.3618 115.6 90.3316L115.577 90.3014L96.1472 64.6326L96.117 64.6554Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M103.089 73.8662L108.484 80.9931L108.507 81.0233L108.529 81.0535C109.276 82.1031 106.73 85.3134 102.842 88.2558C98.9552 91.1983 95.2041 92.7551 94.3666 91.7739L94.3438 91.7437L94.3209 91.7135L88.9263 84.5867C89.7336 85.5906 93.5148 84.011 97.402 81.0686C101.289 78.1262 103.813 74.8856 103.089 73.8662Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M97.3668 52.3623C100.626 56.6245 97.1992 64.8705 89.702 70.7763C82.2047 76.6822 73.4525 78.0302 70.1932 73.768C70.1735 73.7421 70.1537 73.7163 70.1339 73.6905C70.1142 73.6646 70.0747 73.613 70.0549 73.5871C69.0398 71.8619 74.1021 65.8873 81.4728 60.0811C88.8436 54.275 95.8219 50.8061 97.1969 52.2064C97.2166 52.2323 97.2562 52.2839 97.2759 52.3098C97.3075 52.2848 97.3273 52.3107 97.3668 52.3623Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M96.7129 52.14L96.7323 52.1651C97.089 52.69 96.7938 53.7221 95.9555 55.0165C94.2672 57.6545 90.4412 61.5148 85.5679 65.3075C80.6946 69.1002 75.9845 71.8831 73.0478 72.8446C71.5892 73.3378 70.5185 73.3686 70.0998 72.892L70.0804 72.867C70.061 72.842 70.0416 72.8169 70.0222 72.7919C69.0259 71.1198 73.9931 65.3282 81.2254 59.6995C88.4578 54.0709 95.3054 50.7077 96.6548 52.0649C96.6742 52.09 96.6935 52.115 96.7129 52.14Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M95.9967 55.2585L96.0159 55.2833C94.3369 57.8956 90.5319 61.7185 85.6852 65.4745C80.8386 69.2304 76.1543 71.9864 73.2336 72.9386L73.2143 72.9139C73.195 72.8891 73.1757 72.8643 73.1757 72.8643C72.3274 71.4555 76.5804 66.4909 82.7545 61.7062C88.9594 56.8977 94.8011 54.0394 95.9581 55.2089C95.9581 55.2089 95.9774 55.2337 95.9967 55.2585Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M84.8829 61.2183C84.9771 61.4173 84.3981 62.1113 83.5747 62.7728C82.7169 63.4618 81.9237 63.8702 81.7737 63.6702L77.0693 56.0049L78.6818 54.7096L84.84 61.1612L84.8829 61.2183Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M78.2283 55.6796C79.2373 54.8746 79.5446 53.5456 78.9146 52.7111C78.2846 51.8766 76.956 51.8526 75.947 52.6576C74.9381 53.4625 74.6308 54.7915 75.2608 55.626C75.8907 56.4605 77.2194 56.4845 78.2283 55.6796Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M36.2208 32.2775C35.9844 33.8534 34.9601 36.9262 33.148 37.399C33.0692 37.399 32.9904 37.399 32.9116 37.4778C31.1782 37.7141 29.2084 36.5323 27.9477 35.6656C27.3174 35.1928 26.6871 34.6413 26.1355 34.0897C25.8992 33.8534 25.584 33.5382 25.3476 33.3018C23.5354 31.332 22.1172 28.8895 21.2505 26.2894C21.0929 25.7379 20.9353 25.1863 21.0141 24.6348C21.0141 24.4772 21.0929 24.3984 21.0929 24.3196C21.2505 23.9257 21.5657 23.5317 22.0384 23.4529C22.4324 23.3741 22.7475 23.5317 23.1415 23.6105C23.5354 23.7681 23.8506 23.9257 24.2446 24.1621C23.3779 23.1378 23.1415 21.4044 23.1415 20.1437C23.1415 20.0649 23.1415 19.9073 23.2203 19.9073C23.2991 19.8285 23.5354 19.9073 23.6142 19.9861C24.8749 20.9316 24.8749 22.665 25.4264 24.0833C25.4264 23.059 25.5052 22.0347 25.5052 21.0104C25.5052 20.3013 25.584 19.4346 26.1355 18.9618C26.2143 18.8831 26.2931 18.8831 26.3719 18.8831C26.5295 18.8831 26.6083 19.0406 26.6871 19.1194C27.6326 20.774 27.081 22.8226 27.2386 24.7136C27.3174 25.4227 27.3962 26.1318 27.5538 26.841C27.6326 27.1561 27.7902 27.8652 27.9477 28.5744C28.1053 28.8895 28.2629 29.2047 28.4993 29.5199C28.5781 29.6774 28.7357 29.835 28.8932 29.9138C29.1296 30.1502 29.4448 30.3866 29.7599 30.6229C30.3903 30.9381 31.0206 31.1745 31.7297 31.332C32.9904 31.5684 34.251 31.5684 35.5117 31.6472C35.7481 31.6472 35.9844 31.726 36.142 31.8836C36.2208 32.0412 36.2208 32.12 36.2208 32.2775Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M52.7667 58.3572C51.1121 58.3572 49.3787 57.8056 48.118 57.0177C45.6755 55.4419 44.1785 53.0781 42.7603 50.9508L45.5179 49.1386C46.7786 51.0296 48.0393 53.0781 49.8515 54.1812C51.2697 55.1267 53.5546 55.4419 54.8153 54.3388C56.3911 52.9206 55.9972 50.2417 55.3668 48.2719C54.5789 45.8294 53.0819 43.702 51.2697 42.3626L53.2395 39.7625C55.682 41.5746 57.573 44.2535 58.5185 47.3264C59.8579 51.5023 59.3852 54.8116 57.0214 56.8601C55.8396 57.8844 54.2638 58.3572 52.7667 58.3572Z" fill="#525252"/>
<path d="M56.155 32.1987C56.2338 33.3806 55.8399 34.5625 55.3671 35.7443C53.5549 40.4718 51.6639 45.1992 49.4578 49.7691C48.985 50.6358 48.5911 51.5813 48.1183 52.448C47.488 53.7087 46.7001 55.1269 45.2819 55.4421C44.1 55.6785 42.9969 55.1269 41.9726 54.5754C41.6575 54.4178 41.3423 54.1814 41.1847 53.8663C41.0271 53.5511 41.1059 53.1571 41.1847 52.842C42.1302 48.1145 43.9424 43.7022 45.7546 39.2111C46.6213 37.005 47.5668 34.72 48.2759 32.4351C48.8275 30.8593 49.2214 28.8107 51.27 28.6531C53.161 28.5743 55.9975 30.0714 56.155 32.1987Z" fill="#525252"/>
<path d="M34.1721 46.3021C34.1721 46.4596 34.1721 46.5384 34.1721 46.696C34.0933 47.7203 33.8569 48.6658 33.3054 49.5325C32.6751 50.478 31.7296 51.2659 30.6265 51.5023C30.3901 51.5811 30.1538 51.5811 29.9174 51.5811C28.8931 51.6599 27.8688 51.3447 26.9233 50.9507C25.7415 50.478 24.5596 49.9264 23.2201 49.8477C22.511 49.7689 21.8019 49.8477 21.0928 50.0052C20.6988 50.084 20.3837 50.2416 19.9897 50.3204C19.5957 50.478 19.2018 50.6356 18.8078 50.7932C17.4684 51.4235 16.1289 52.2902 14.7895 52.8417C13.6864 53.3145 12.347 53.5508 11.4015 52.8417C10.9287 52.5266 10.6924 51.975 10.456 51.5023C9.11653 48.981 7.93466 46.4596 6.7528 43.8595C6.67401 43.7807 6.59521 43.6232 6.59521 43.4656C6.59521 43.0716 7.06796 42.7565 7.38313 42.5989C7.46192 42.5201 7.54071 42.5201 7.6195 42.4413C8.4862 42.0473 9.27411 41.7322 10.2196 41.5746C11.2439 41.4958 12.347 41.6534 13.0561 42.3625C13.5288 42.8352 13.844 43.3868 14.1592 44.0171C14.4743 44.7262 14.8683 45.4354 15.1834 46.1445C16.1289 45.3566 17.0744 44.5687 18.0987 43.8595C18.4139 43.6232 18.729 43.4656 19.0442 43.308C19.5957 42.9928 20.2261 42.6777 20.8564 42.5201C21.8807 42.1261 22.9838 41.9685 24.0868 41.8898C24.6384 41.811 25.1899 41.7322 25.7415 41.811C26.3718 41.811 27.0021 41.9685 27.5536 42.0473C29.0507 42.3625 30.6265 42.6777 32.1235 42.9928L30.4689 42.8353C31.8084 43.1504 33.3842 43.6232 33.9357 44.8838C34.1721 45.2778 34.1721 45.8293 34.1721 46.3021Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M28.3416 42.5203C27.7901 44.6476 28.2628 46.9326 29.6023 48.7448C29.6811 48.8236 29.7599 48.9811 29.9175 48.9024C29.9962 48.9024 29.9962 48.8236 30.075 48.7448C30.3114 48.1932 30.3902 47.5629 30.469 47.0114C30.6266 45.6719 31.0993 43.5446 30.6266 42.2051C30.075 40.9445 28.578 41.496 28.3416 42.5203Z" fill="#525252"/>
<path d="M38.1115 27.3921C37.4812 28.2588 36.6933 28.9679 35.9842 29.7558C31.8082 34.2469 29.8385 40.4714 28.6566 46.5383C28.3414 48.1141 28.1839 49.8475 29.1294 51.0294C29.6021 51.5809 30.2324 51.9749 30.8628 52.2901C31.887 52.8416 32.8325 53.3931 33.8568 53.9447C35.0387 54.575 36.2993 55.2841 37.6388 55.3629C39.2146 55.4417 40.7904 54.6538 41.9723 53.5507C43.1542 52.4476 43.9421 51.0294 44.73 49.6112C46.6998 45.9868 48.512 42.2836 50.0878 38.5016C50.5605 37.3985 51.0333 36.2167 51.1909 35.0348C51.4272 33.3014 51.0333 31.568 50.7181 29.9134C50.6393 29.5194 50.5605 29.0467 50.2454 28.7315C49.8514 28.3376 49.2211 28.3376 48.7483 28.4164C45.2815 28.5739 41.7359 28.8891 38.4267 28.1012C37.7176 27.9436 36.9297 27.7072 36.5357 27.0769" fill="#181818"/>
<path d="M38.1115 27.3921C37.4812 28.2588 36.6933 28.9679 35.9842 29.7558C31.8082 34.2469 29.8385 40.4714 28.6566 46.5383C28.3414 48.1141 28.1839 49.8475 29.1294 51.0294C29.6021 51.5809 30.2324 51.9749 30.8628 52.2901C31.887 52.8416 32.8325 53.3931 33.8568 53.9447C35.0387 54.575 36.2993 55.2841 37.6388 55.3629C39.2146 55.4417 40.7904 54.6538 41.9723 53.5507C43.1542 52.4476 43.9421 51.0294 44.73 49.6112C46.6998 45.9868 48.512 42.2836 50.0878 38.5016C50.5605 37.3985 51.0333 36.2167 51.1909 35.0348C51.4272 33.3014 51.0333 31.568 50.7181 29.9134C50.6393 29.5194 50.5605 29.0467 50.2454 28.7315C49.8514 28.3376 49.2211 28.3376 48.7483 28.4164C45.2815 28.5739 41.7359 28.8891 38.4267 28.1012C37.7176 27.9436 36.9297 27.7072 36.5357 27.0769" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.0927 50.084C20.6987 50.1628 20.3836 50.3203 19.9896 50.3991C19.9108 49.2961 19.7532 48.0354 19.4381 46.8535C19.1229 45.8292 18.729 44.8838 18.0986 43.9383C18.4138 43.7019 18.729 43.5443 19.0441 43.3867C19.6745 44.411 20.1472 45.4353 20.4624 46.5384C20.7775 47.7202 21.0139 48.9809 21.0927 50.084Z" fill="#525252"/>
<path d="M31.8082 48.5083C31.493 49.2962 31.6506 48.2719 31.5718 49.2174C31.5718 50.0841 31.8081 50.9508 32.2809 51.7387C33.2264 53.0782 34.881 53.8661 36.4568 54.4176C37.8751 54.8904 39.3721 55.1267 40.7903 54.4176C42.5237 53.5509 43.8632 51.5023 43.7056 49.5326C43.548 46.9325 40.4752 45.593 38.1902 45.3566C35.3537 45.0415 33.9355 46.0658 31.7294 47.7204V48.5083H31.8082Z" fill="#525252"/>
<path d="M53.7908 23.5314C53.7908 23.6102 53.712 23.7677 53.712 23.8465C53.3181 25.5799 52.8453 27.2346 52.6877 29.0467C52.6089 29.8347 52.7665 31.2529 51.9786 31.8044C51.3483 32.1984 50.2452 31.962 49.5361 31.962C47.3299 31.8044 45.2026 31.4105 42.9176 31.4105C42.7601 31.4105 42.6025 31.4105 42.3661 31.4105C41.5782 31.3317 40.8691 31.0165 40.2387 30.6226C39.372 30.2286 38.5841 29.7559 37.7174 29.4407C37.0083 29.2043 36.2204 29.0467 35.8264 28.4164C35.3537 27.7861 35.3537 26.9982 35.2749 26.2891C35.0385 23.9253 35.1173 21.404 35.7477 19.1191C36.1416 17.7008 36.9295 16.2826 38.1114 15.2583C40.7115 12.8946 44.8874 12.4218 48.1179 13.9976C50.4816 15.1795 52.5302 17.2281 53.4757 19.7494C53.8696 20.8525 54.0272 22.1919 53.7908 23.5314Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M53.7909 23.5315C53.7909 23.6103 53.7121 23.7679 53.7121 23.8466C53.3182 25.5801 52.8454 27.2347 52.6878 29.0469C52.6091 29.8348 52.7666 31.253 51.9787 31.8046C51.3484 32.1985 50.2453 31.9621 49.5362 31.9621C47.33 31.8046 45.2027 31.4106 42.9177 31.4106C42.7602 31.4106 42.6026 31.4106 42.3662 31.4106C43.3117 31.0166 44.336 31.0166 45.3603 30.8591C48.5907 30.3075 51.4272 28.0226 52.6878 25.0285C53.0818 24.083 53.3182 23.0587 53.397 22.0345C53.4758 21.2465 53.4758 20.4586 53.3182 19.7495C53.8697 20.8526 54.0273 22.192 53.7909 23.5315Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M46.6996 30.0716C45.8329 30.8595 44.8086 31.4111 43.7055 31.4111C41.8146 31.4111 39.8448 31.0171 38.1114 30.1504C37.5598 29.8353 37.0871 29.5201 36.6143 29.2049C36.378 28.9686 36.0628 28.7322 35.9052 28.4958C35.3537 27.8655 35.0385 27.1564 34.8809 26.2897C34.4082 24.4775 34.7234 22.2713 35.3537 20.5379C36.0628 18.7257 37.1659 18.0166 39.0569 17.9378C40.9479 17.7802 43.154 18.4105 44.9662 19.2772C45.045 19.356 45.1238 19.356 45.2026 19.4348C45.9905 19.8288 46.6996 20.3015 47.2511 20.8531C49.93 23.2956 49.2209 27.7079 46.6996 30.0716Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M42.5238 50.8722C42.5238 50.951 42.5238 50.951 42.5238 51.0298C42.5238 51.4238 42.445 51.7389 42.2874 52.0541C41.7359 53.5511 40.1601 54.4966 38.5843 54.9694C37.0084 55.4421 35.3538 55.5209 33.8568 55.9936C32.5961 56.3876 31.3355 56.9391 30.39 57.8058C30.1536 58.0422 29.9172 58.1998 29.7597 58.4362C29.7597 58.515 29.6809 58.515 29.6809 58.5938C27.9475 60.7211 27.4747 63.794 25.4261 65.685C25.2686 65.8425 25.111 65.9213 24.9534 66.0001C24.7958 66.0001 24.6382 65.9213 24.4807 65.9213C21.5654 64.6607 18.8865 63.0848 16.2076 61.4302C15.8136 61.1939 15.3409 60.8787 15.1045 60.4847C14.9469 60.1696 14.9469 59.8544 15.1045 59.5392C15.4985 58.3574 17.2319 56.9391 18.0198 56.624C18.8865 56.3088 19.9108 56.3876 20.7775 56.7028C21.6442 57.0179 22.5109 57.5695 23.22 58.121C23.3776 57.0179 23.6927 55.8361 24.1655 54.8118C24.3231 54.4966 24.4807 54.1815 24.6382 53.8663C24.7958 53.5511 25.0322 53.3147 25.1898 52.9996C25.6625 52.2905 26.2929 51.6601 26.9232 51.1086C27.7899 50.3207 28.7354 49.6116 29.6809 48.9812C31.0991 48.0357 32.5961 47.169 34.172 46.7751C34.4083 46.6963 34.6447 46.6963 34.8811 46.6175C36.4569 46.3023 38.1903 46.5387 39.6873 47.169C40.554 47.4842 41.342 48.0357 41.8935 48.7449C42.2874 49.2964 42.5238 50.0843 42.5238 50.8722Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M30.3112 57.8055C30.0749 58.0419 29.8385 58.1995 29.6809 58.4359C29.6809 58.5146 29.6021 58.5146 29.6021 58.5934C28.6566 57.4116 27.5535 56.4661 26.2929 55.757C25.7414 55.4418 25.111 55.2054 24.4807 54.969C24.4019 54.8902 24.2443 54.8902 24.1655 54.8115C24.3231 54.4963 24.4807 54.1811 24.6383 53.866C24.7171 53.866 24.7959 53.9448 24.8746 53.9448C25.505 54.1811 26.2141 54.4175 26.8444 54.8115C28.1051 55.5206 29.3657 56.5449 30.3112 57.8055Z" fill="#525252"/>
<path d="M66.2398 37.2411C66.2398 37.3199 66.2398 37.4775 66.161 37.5563C65.9247 38.423 65.058 38.8958 64.1913 39.0533C63.9549 39.1321 63.6397 39.1321 63.4033 39.1321C62.773 39.2109 62.2215 39.2109 61.5911 39.3685C60.9608 39.5261 60.3305 39.92 59.7002 40.2352C59.0698 40.5504 58.3607 40.7867 57.7304 40.9443C57.3364 41.0231 56.9425 41.1019 56.5485 41.1807C54.8151 41.4171 53.0817 41.2595 51.4271 40.708C50.4028 40.3928 49.6149 39.5261 49.1422 38.423C48.433 36.6896 48.5906 34.4835 50.2452 33.4592C52.3726 32.1197 53.712 34.0107 55.4454 34.7986C55.7606 34.9562 56.0758 35.035 56.3909 35.1138C56.7849 35.1926 57.1788 35.1926 57.5728 35.1926C58.4395 35.1138 59.3062 34.8774 60.0941 34.4835C61.5124 33.7743 62.773 32.6713 64.0337 31.647C64.27 31.4894 64.5064 31.253 64.8216 31.3318C65.1367 31.4106 65.2943 31.8046 65.2943 32.1985V32.2773C65.2155 32.5925 65.058 32.9076 64.9792 33.2228C64.8216 34.641 66.3974 35.9017 66.2398 37.2411Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M65.6102 40.6295L59.7796 11.9495C59.7008 11.6343 59.9372 11.398 60.1736 11.3192C60.4887 11.2404 60.7251 11.4767 60.8039 11.7131L66.6344 40.3931C66.7132 40.7082 66.4769 40.9446 66.2405 41.0234C66.0041 41.1022 65.6889 40.8658 65.6102 40.6295Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M66.1616 37.5562C65.9253 38.4229 65.0586 38.8956 64.1919 39.0532C63.9555 39.132 63.6403 39.132 63.404 39.132C63.404 39.0532 63.3252 38.9744 63.3252 38.8956C63.1676 38.5805 63.2464 38.1865 63.5615 37.9501C63.3252 37.8713 63.0888 37.7925 63.01 37.5562C62.8524 37.1622 63.01 36.6895 63.404 36.5319L63.6403 36.4531C63.5615 36.4531 63.4828 36.4531 63.4828 36.4531C63.1676 36.4531 62.9312 36.2955 62.7736 35.9803C62.6161 35.5864 62.7736 35.1924 63.0888 34.9561C62.9312 34.8773 62.6948 34.7197 62.6161 34.5621C62.4585 34.1682 62.6161 33.6954 63.01 33.5378L65.5313 32.356C65.4525 32.6711 65.2949 32.9863 65.2162 33.3014C64.8222 34.7197 66.6344 36.0591 66.1616 37.5562Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M67.4216 36.7685C67.3428 36.5321 67.1064 36.3745 66.8701 36.3745L67.1064 36.2958C67.5004 36.1382 67.658 35.6654 67.5004 35.2715C67.3428 34.9563 66.9488 34.7987 66.6337 34.8775L66.7913 34.7987C67.1852 34.6411 67.3428 34.1684 67.1852 33.7744C67.1064 33.5381 66.9489 33.4593 66.7125 33.3805C67.0276 33.1441 67.1852 32.7502 67.0276 32.3562C66.8701 31.9622 66.3973 31.8047 66.0034 31.9622L63.3245 33.2229C62.9305 33.3805 62.7729 33.8532 62.9305 34.2472C63.0093 34.4836 63.1669 34.5623 63.4032 34.6411C63.0881 34.8775 62.9305 35.2715 63.0881 35.6654C63.2457 35.9806 63.6396 36.1382 63.9548 36.0594L63.7184 36.1382C63.3245 36.2958 63.1669 36.7685 63.3245 37.1625C63.4032 37.3988 63.6396 37.5564 63.876 37.5564C63.5608 37.7928 63.482 38.1867 63.6396 38.5019C63.7972 38.8959 64.2699 39.0534 64.6639 38.8959L67.0276 37.7928C67.4216 37.6352 67.5792 37.2412 67.4216 36.7685Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path opacity="0.4" d="M43.7846 22.4287C43.4695 22.9014 42.8391 23.059 42.3664 22.8226C42.2088 22.7438 41.9724 22.665 41.8149 22.5862C39.6087 21.7195 37.245 22.2711 36.6146 23.9257C36.4571 24.3196 35.9055 24.2408 35.9055 23.8469C35.8267 23.2954 35.9055 22.665 36.1419 22.1135C36.9298 19.9861 39.5299 19.0406 41.9724 19.9861C42.6028 20.2225 43.1543 20.6165 43.6271 21.0104C44.021 21.4044 44.021 21.9559 43.7846 22.4287Z" fill="#525252"/>
<path opacity="0.4" d="M36.2208 34.4835C37.7966 35.2714 41.0271 36.2956 42.9968 36.4532C43.3908 36.532 43.5484 36.8472 43.4696 37.2411C42.1301 40.3928 41.0271 43.5444 40.6331 44.7263C40.5543 45.0415 40.2392 45.199 40.0028 45.1203C38.5845 44.7263 34.645 43.6232 33.0692 42.9929C32.754 42.9141 32.6752 42.5989 32.754 42.2838C34.0935 38.9745 35.0389 36.0593 35.4329 34.7986C35.5905 34.4835 35.9844 34.3259 36.2208 34.4835Z" fill="#525252"/>
<path d="M57.8097 40.8655C57.4158 40.9443 57.0218 41.0231 56.6278 41.1019C55.9975 40.1564 55.6036 38.8957 55.6824 37.6351C55.7611 36.926 55.9975 35.9017 56.4703 35.1138C56.8642 35.1926 57.2582 35.1926 57.6521 35.1926C57.1794 35.9017 56.7854 36.926 56.7066 37.7139C56.6278 38.8957 57.1006 40.1564 57.8097 40.8655Z" fill="#525252"/>
<path d="M29.8384 30.6228C28.4202 31.5683 27.1595 32.7501 26.0565 34.0896C25.8201 33.8532 25.5049 33.538 25.2686 33.3017C26.2928 32.041 27.5535 30.9379 28.8929 29.9924L29.8384 30.6228Z" fill="#525252"/>
<path d="M81.0531 22.2708C73.6468 19.8283 70.5739 29.1257 63.01 25.1861L60.3311 12.1068C68.5253 15.5736 71.677 7.69449 78.3742 9.19152L81.0531 22.2708Z" fill="#181818" stroke="#525252" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,12 +0,0 @@
<svg width="119" height="117" viewBox="0 0 119 117" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M52.0114 115.804C80.1842 115.804 103.023 92.8871 103.023 64.6183C103.023 36.3495 80.1842 13.4331 52.0114 13.4331C23.8386 13.4331 1 36.3495 1 64.6183C1 92.8871 23.8386 115.804 52.0114 115.804Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.666 21.9438C111.335 21.3298 111.382 20.2875 110.77 19.6157C110.158 18.9439 109.12 18.897 108.45 19.5109C107.781 20.1249 107.734 21.1672 108.346 21.839C108.957 22.5108 109.996 22.5577 110.666 21.9438Z" fill="#525252"/>
<path opacity="0.3" d="M83.4192 41.2397C85.2331 41.2397 86.7036 39.7642 86.7036 37.9441C86.7036 36.1239 85.2331 34.6484 83.4192 34.6484C81.6053 34.6484 80.1348 36.1239 80.1348 37.9441C80.1348 39.7642 81.6053 41.2397 83.4192 41.2397Z" fill="#737373"/>
<path d="M61.2816 45.569C60.8718 47.7548 59.0958 49.804 56.7733 50.3505C54.9973 50.7604 53.2213 50.3505 51.9918 49.3942V65.2415H37.2374C37.7839 64.1486 37.9205 63.0557 37.7839 61.8261C37.5106 59.0939 35.1882 56.908 32.5925 56.6348C29.0405 56.2249 25.8984 58.9572 25.8984 62.5092C25.8984 63.4655 26.035 64.4218 26.4448 65.1049H9.77783V34.6398C9.77783 28.3555 14.8326 23.3008 21.2535 23.3008H51.8552V39.1481C52.9481 38.465 54.041 38.0552 55.2706 38.0552C58.9592 38.6016 61.9647 41.7438 61.2816 45.569Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M42.019 85.187C41.4726 88.8756 44.3415 92.0177 48.0301 92.0177C49.5328 92.0177 50.899 91.4713 51.9919 90.6516V107.045H21.3902C15.1059 107.045 9.91455 101.854 9.91455 95.7063V65.1046H26.4449C26.0351 64.2849 25.8985 63.4653 25.8985 62.3723C26.0351 59.5034 28.2209 57.0444 30.9532 56.6345C34.6418 56.2247 37.784 58.957 37.784 62.5089C37.784 63.4652 37.6474 64.2849 37.2375 65.1046H51.7187V81.4984C50.4891 80.4055 48.8498 79.859 47.0738 80.1323C44.4781 80.4055 42.4289 82.5913 42.019 85.187Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M94.0691 65.1047V95.4331C94.0691 101.717 88.8777 106.772 82.5934 106.772H51.9917V90.3784C50.8988 91.3347 49.5327 91.7446 48.0299 91.7446C44.4779 91.7446 41.7456 88.6024 42.0188 84.9138C42.4287 82.1815 44.6145 80.1323 47.0736 79.7224C48.8496 79.5858 50.6256 80.1323 51.7185 81.0886V64.6948H69.3418C68.7953 65.5145 68.6587 66.4708 68.6587 67.4271C68.6587 70.8425 71.6642 73.7114 75.3528 73.3016C78.0851 73.0283 80.4076 70.7059 80.6808 68.1102C80.8174 66.8807 80.5442 65.7877 80.1344 64.6948L94.0691 65.1047Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M106.911 52.6728L93.3859 50.3503C93.6591 51.4432 93.7958 52.5362 93.3859 53.6291C92.5662 56.2247 90.1072 58.0007 87.3749 57.8641C83.8229 57.5909 81.2272 54.4488 81.7737 51.0334C81.9103 50.0771 82.3201 49.2574 82.8666 48.5743L65.3799 45.4322L68.1122 29.7215C69.2051 30.8144 70.8445 31.4975 72.7571 31.4975C75.2161 31.3609 77.2654 29.8581 77.9484 27.6723C79.3146 24.1203 76.9921 20.2951 73.3035 19.7486C72.074 19.4754 70.8445 19.7486 69.7516 20.1585L72.4839 4.44775L102.539 9.63912C108.823 10.732 112.922 16.6065 111.829 22.7541L106.911 52.6728Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M113.473 64.1927L118.015 62.8237C118.344 62.7282 118.344 62.2506 118.015 62.1551L113.473 60.7861C113.356 60.7543 113.271 60.6694 113.24 60.5526L111.871 56.0212C111.775 55.6922 111.297 55.6922 111.202 56.0212L109.833 60.5526C109.801 60.6694 109.716 60.7543 109.6 60.7861L105.068 62.1551C104.739 62.2506 104.739 62.7282 105.068 62.8237L109.61 64.1927C109.727 64.2245 109.812 64.3094 109.844 64.4261L111.213 68.9682C111.308 69.2972 111.786 69.2972 111.881 68.9682L113.25 64.4261C113.271 64.3094 113.356 64.2245 113.473 64.1927Z" fill="#737373"/>
<path d="M103.424 24.4523L109.073 22.7496C109.482 22.6308 109.482 22.0369 109.073 21.9181L103.424 20.2153C103.279 20.1757 103.173 20.0701 103.133 19.925L101.431 14.2888C101.312 13.8796 100.718 13.8796 100.599 14.2888L98.8965 19.925C98.8569 20.0701 98.7513 20.1757 98.6061 20.2153L92.97 21.9181C92.5608 22.0369 92.5608 22.6308 92.97 22.7496L98.6193 24.4523C98.7645 24.4919 98.8701 24.5975 98.9097 24.7427L100.612 30.3921C100.731 30.8012 101.325 30.8012 101.444 30.3921L103.147 24.7427C103.173 24.5975 103.279 24.4919 103.424 24.4523Z" fill="#525252"/>
<path d="M62.357 5.26099L65.1958 4.40543C65.4015 4.34575 65.4015 4.0473 65.1958 3.98761L62.357 3.13205C62.2841 3.11216 62.231 3.0591 62.2111 2.98615L61.3555 0.154199C61.2958 -0.0513995 60.9973 -0.0513995 60.9376 0.154199L60.082 2.98615C60.0621 3.0591 60.009 3.11216 59.9361 3.13205L57.1039 3.98761C56.8983 4.0473 56.8983 4.34575 57.1039 4.40543L59.9427 5.26099C60.0157 5.28088 60.0687 5.33394 60.0886 5.4069L60.9443 8.24548C61.004 8.45107 61.3024 8.45107 61.3621 8.24548L62.2177 5.4069C62.231 5.33394 62.2841 5.28088 62.357 5.26099Z" fill="#737373"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1,19 +0,0 @@
<svg width="150" height="126" viewBox="0 0 150 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M84.2755 124.383C117.256 124.383 143.993 97.6454 143.993 64.5473C143.993 31.4493 117.138 4.71167 84.2755 4.71167C51.2952 4.71167 24.5576 31.4493 24.5576 64.5473C24.5576 97.6454 51.2952 124.383 84.2755 124.383Z" fill="#1f1f1f" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M139.635 25.4417C142.302 25.4417 144.464 23.2796 144.464 20.6125C144.464 17.9453 142.302 15.7832 139.635 15.7832C136.968 15.7832 134.806 17.9453 134.806 20.6125C134.806 23.2796 136.968 25.4417 139.635 25.4417Z" fill="#1f1f1f"/>
<path d="M146.702 6.59605C148.523 6.59605 150 5.11948 150 3.29803C150 1.47658 148.523 0 146.702 0C144.88 0 143.404 1.47658 143.404 3.29803C143.404 5.11948 144.88 6.59605 146.702 6.59605Z" fill="#1f1f1f"/>
<path d="M27.2663 25.3241C29.0877 25.3241 30.5643 23.8475 30.5643 22.0261C30.5643 20.2046 29.0877 18.728 27.2663 18.728C25.4448 18.728 23.9683 20.2046 23.9683 22.0261C23.9683 23.8475 25.4448 25.3241 27.2663 25.3241Z" fill="#1f1f1f"/>
<path d="M7.12491 88.9293C10.5076 88.9293 13.2498 86.187 13.2498 82.8044C13.2498 79.4217 10.5076 76.6794 7.12491 76.6794C3.74221 76.6794 1 79.4217 1 82.8044C1 86.187 3.74221 88.9293 7.12491 88.9293Z" fill="#1f1f1f" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M128.187 105.12C117.275 116.97 101.64 124.383 84.275 124.383C70.4162 124.383 57.6597 119.662 47.5264 111.731V14.0746C47.5264 10.8443 50.1275 8.20825 53.3724 8.20825H111.37L128.187 25.0838V105.12Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M71.5926 104.186H63.1468C62.8317 104.186 62.5796 103.369 62.5796 102.39C62.5796 101.41 62.8317 100.593 63.1468 100.593H71.5926C71.9078 100.593 72.1599 101.41 72.1599 102.39C72.1599 103.533 71.9078 104.186 71.5926 104.186Z" fill="#737373"/>
<path d="M90.1779 28.7408H63.7222C63.1069 28.7408 62.5796 27.9117 62.5796 26.9445C62.5796 25.9773 63.1069 25.1482 63.7222 25.1482H90.1779C90.7932 25.1482 91.3205 25.9773 91.3205 26.9445C91.3205 27.9117 90.7932 28.7408 90.1779 28.7408Z" fill="#737373"/>
<path d="M70.2489 37.1239H63.3525C62.9363 37.1239 62.5796 36.2948 62.5796 35.3276C62.5796 34.3603 62.9363 33.5312 63.3525 33.5312H70.1895C70.6056 33.5312 70.9624 34.3603 70.9624 35.3276C70.9624 36.2948 70.6056 37.1239 70.2489 37.1239Z" fill="#737373"/>
<path d="M111.994 83.8276H79.203H75.5888H64.6583C64.2176 83.8276 63.7769 84.5761 63.7769 85.6239C63.7769 86.5221 64.1295 87.4203 64.6583 87.4203H75.5888H79.203H111.994C112.435 87.4203 112.876 86.6718 112.876 85.6239C112.788 84.5761 112.435 83.8276 111.994 83.8276Z" fill="#737373"/>
<path d="M111.993 74.2476H99.8064H95.6559H64.6599C64.2184 74.2476 63.7769 74.996 63.7769 76.0439C63.7769 76.942 64.1301 77.8402 64.6599 77.8402H95.6559H99.8064H111.993C112.434 77.8402 112.876 77.0917 112.876 76.0439C112.788 74.996 112.434 74.2476 111.993 74.2476Z" fill="#737373"/>
<path d="M113.251 65.8647H110.007H106.762H64.678C64.2274 65.8647 63.7769 66.6132 63.7769 67.6611C63.7769 68.5592 64.1373 69.4574 64.678 69.4574H106.762H110.367H113.161C113.611 69.4574 114.062 68.7089 114.062 67.6611C114.152 66.7629 113.701 65.8647 113.251 65.8647Z" fill="#737373"/>
<path d="M113.18 56.2844H102.728H100.137H64.6702C64.2235 56.2844 63.7769 57.0329 63.7769 58.0807C63.7769 58.9789 64.1342 59.877 64.6702 59.877H100.137H102.728H113.091C113.716 59.877 114.073 59.1286 114.073 58.0807C114.073 57.1826 113.716 56.2844 113.18 56.2844Z" fill="#737373"/>
<path d="M111.37 8.91162V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" fill="#1f1f1f"/>
<path d="M111.37 8.91162V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8988 42.4288V79.5311C70.8988 83.8729 67.3447 87.0305 63.3956 87.0305H61.421V96.8981C61.421 99.2664 58.6567 100.056 57.077 98.477L47.2043 87.0305H8.50327C4.15928 87.0305 1 83.4782 1 79.5311V42.4288C1 38.0871 4.55418 34.9294 8.50327 34.9294H63.3956C67.3447 34.9294 70.8988 38.4818 70.8988 42.4288Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M19.5605 61.7695V53.8754C19.5605 52.6913 20.3504 51.9019 21.5351 51.9019H30.2231C31.4078 51.9019 32.1976 52.6913 32.1976 53.8754V62.9536C32.1976 65.3218 32.1976 67.2953 31.8027 68.8742C31.4157 70.4216 30.6493 71.2107 29.5035 72.3563C29.457 72.4028 29.4061 72.4451 29.3504 72.4803C28.3636 73.1039 26.8665 73.4756 25.0679 73.8037C24.46 73.9146 23.9046 73.4429 23.9046 72.825V71.3204C23.9046 70.8227 24.274 70.4097 24.7555 70.2839C26.9907 69.7001 28.2485 68.1396 28.2485 65.3218C28.2485 65.3218 28.2485 65.3218 28.2485 65.3218V65.3218C28.2485 65.3218 27.8951 64.5324 27.4591 64.5324H22.2327C22.0353 64.5324 21.8422 64.4743 21.6783 64.3643C20.5832 63.629 19.5605 62.8696 19.5605 61.7695ZM38.9111 61.7695V53.8754C38.9111 52.6913 39.7009 51.9019 40.8856 51.9019H49.5736C50.7583 51.9019 51.5481 52.6913 51.5481 53.8754V62.9536C51.5481 65.3218 51.5481 67.2953 51.1532 68.8742C50.7662 70.4216 49.9998 71.2107 48.8541 72.3563C48.8075 72.4028 48.7566 72.4451 48.7009 72.4803C47.7141 73.1039 46.217 73.4756 44.4184 73.8037C43.8105 73.9146 43.255 73.4429 43.255 72.825V71.3204C43.255 70.8227 43.6244 70.4097 44.106 70.2839C46.3411 69.7001 47.5991 68.1396 47.5991 65.3218C47.5991 65.3218 47.5991 65.3218 47.5991 65.3218V65.3218C47.5991 65.3218 47.2456 64.5324 46.8097 64.5324H41.5832C41.3858 64.5324 41.1927 64.4743 41.0288 64.3643C39.9337 63.629 38.9111 62.8696 38.9111 61.7695Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,26 +0,0 @@
<svg width="165" height="142" viewBox="0 0 165 142" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M85.3227 123.613C119.114 123.613 146.509 96.2184 146.509 62.3067C146.509 28.3949 118.993 1 85.3227 1C51.5316 1 24.1367 28.3949 24.1367 62.3067C24.1367 96.2184 51.5316 123.613 85.3227 123.613Z" fill="#1f1f1f" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M154.276 42.8823C157.009 42.8823 159.224 40.667 159.224 37.9343C159.224 35.2016 157.009 32.9863 154.276 32.9863C151.543 32.9863 149.328 35.2016 149.328 37.9343C149.328 40.667 151.543 42.8823 154.276 42.8823Z" fill="#1f1f1f"/>
<path d="M161.516 23.5734C163.383 23.5734 164.895 22.0605 164.895 20.1943C164.895 18.3281 163.383 16.8152 161.516 16.8152C159.65 16.8152 158.137 18.3281 158.137 20.1943C158.137 22.0605 159.65 23.5734 161.516 23.5734Z" fill="#1f1f1f"/>
<path d="M26.9123 22.1193C28.7785 22.1193 30.2914 20.6064 30.2914 18.7402C30.2914 16.874 28.7785 15.3611 26.9123 15.3611C25.0461 15.3611 23.5332 16.874 23.5332 18.7402C23.5332 20.6064 25.0461 22.1193 26.9123 22.1193Z" fill="#1f1f1f"/>
<path d="M6.27549 87.288C9.74134 87.288 12.551 84.4784 12.551 81.0126C12.551 77.5467 9.74134 74.7371 6.27549 74.7371C2.80963 74.7371 0 77.5467 0 81.0126C0 84.4784 2.80963 87.288 6.27549 87.288Z" fill="#1f1f1f"/>
<path d="M121.099 107.854H138.619C140.82 107.854 142.706 105.968 142.706 103.769V22.0724C142.706 19.8729 140.82 17.9875 138.619 17.9875H121.643" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M51.5361 107.854H34.5596C32.3589 107.854 30.4727 105.968 30.4727 103.769V22.0724C30.4727 19.8729 32.3589 17.9875 34.5596 17.9875H51.1864" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2832 34.3269C41.2832 33.7746 41.7309 33.3269 42.2832 33.3269H50.7714C51.3237 33.3269 51.7714 33.7746 51.7714 34.3269C51.7714 34.8792 51.3237 35.3269 50.7714 35.3269H42.2832C41.7309 35.3269 41.2832 34.8792 41.2832 34.3269Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2832 45.3245C41.2832 44.7722 41.7309 44.3245 42.2832 44.3245H50.7714C51.3237 44.3245 51.7714 44.7722 51.7714 45.3245C51.7714 45.8767 51.3237 46.3245 50.7714 46.3245H42.2832C41.7309 46.3245 41.2832 45.8767 41.2832 45.3245Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2832 56.6365C41.2832 56.0842 41.7309 55.6365 42.2832 55.6365H50.7714C51.3237 55.6365 51.7714 56.0842 51.7714 56.6365C51.7714 57.1888 51.3237 57.6365 50.7714 57.6365H42.2832C41.7309 57.6365 41.2832 57.1888 41.2832 56.6365Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2832 67.9485C41.2832 67.3962 41.7309 66.9485 42.2832 66.9485H50.7714C51.3237 66.9485 51.7714 67.3962 51.7714 67.9485C51.7714 68.5008 51.3237 68.9485 50.7714 68.9485H42.2832C41.7309 68.9485 41.2832 68.5008 41.2832 67.9485Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2832 89.9434C41.2832 89.3911 41.7309 88.9434 42.2832 88.9434H50.7714C51.3237 88.9434 51.7714 89.3911 51.7714 89.9434C51.7714 90.4956 51.3237 90.9434 50.7714 90.9434H42.2832C41.7309 90.9434 41.2832 90.4956 41.2832 89.9434Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M120.643 34.3269C120.643 33.7746 121.09 33.3269 121.643 33.3269H129.816C130.369 33.3269 130.816 33.7746 130.816 34.3269C130.816 34.8792 130.369 35.3269 129.816 35.3269H121.643C121.09 35.3269 120.643 34.8792 120.643 34.3269Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M120.643 45.3245C120.643 44.7722 121.09 44.3245 121.643 44.3245H129.816C130.369 44.3245 130.816 44.7722 130.816 45.3245C130.816 45.8767 130.369 46.3245 129.816 46.3245H121.643C121.09 46.3245 120.643 45.8767 120.643 45.3245Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M120.643 56.6365C120.643 56.0842 121.09 55.6365 121.643 55.6365H129.816C130.369 55.6365 130.816 56.0842 130.816 56.6365C130.816 57.1888 130.369 57.6365 129.816 57.6365H121.643C121.09 57.6365 120.643 57.1888 120.643 56.6365Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M120.643 67.9485C120.643 67.3962 121.09 66.9485 121.643 66.9485H129.816C130.369 66.9485 130.816 67.3962 130.816 67.9485C130.816 68.5008 130.369 68.9485 129.816 68.9485H121.643C121.09 68.9485 120.643 68.5008 120.643 67.9485Z" fill="#737373"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M120.643 89.9434C120.643 89.3911 121.09 88.9434 121.643 88.9434H129.816C130.369 88.9434 130.816 89.3911 130.816 89.9434C130.816 90.4956 130.369 90.9434 129.816 90.9434H121.643C121.09 90.9434 120.643 90.4956 120.643 89.9434Z" fill="#737373"/>
<path d="M117.556 114.767H55.3086C53.108 114.767 51.2217 112.881 51.2217 110.682V15.7882C51.2217 13.5887 53.108 11.7034 55.3086 11.7034H117.556C119.756 11.7034 121.643 13.5887 121.643 15.7882V110.682C121.643 112.881 119.756 114.767 117.556 114.767Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.01 42.4467H66.6261C65.683 42.4467 65.0542 41.8773 65.0542 41.0231V37.3216C65.0542 36.4674 65.683 35.8979 66.6261 35.8979H110.01C110.954 35.8979 111.582 36.4674 111.582 37.3216V41.0231C111.582 41.5925 110.954 42.4467 110.01 42.4467Z" fill="#737373"/>
<path d="M110.01 59.4145H66.6261C65.683 59.4145 65.0542 58.845 65.0542 57.9909V54.2894C65.0542 53.4352 65.683 52.8657 66.6261 52.8657H110.01C110.954 52.8657 111.582 53.4352 111.582 54.2894V57.9909C111.582 58.845 110.954 59.4145 110.01 59.4145Z" fill="#737373"/>
<path d="M110.01 76.6962H66.6261C65.683 76.6962 65.0542 76.1268 65.0542 75.2726V71.5711C65.0542 70.7169 65.683 70.1475 66.6261 70.1475H110.01C110.954 70.1475 111.582 70.7169 111.582 71.5711V75.2726C111.582 76.1268 110.954 76.6962 110.01 76.6962Z" fill="#737373"/>
<path d="M110.011 94.2924H92.7198C91.7767 94.2924 91.1479 93.723 91.1479 92.8688V89.1673C91.1479 88.3131 91.7767 87.7437 92.7198 87.7437H110.011C110.954 87.7437 111.583 88.3131 111.583 89.1673V92.8688C111.583 93.723 110.954 94.2924 110.011 94.2924Z" fill="#737373"/>
<path d="M105.548 125.569C105.155 127.237 104.566 129.003 103.879 130.475C102.015 134.106 99.0712 136.952 95.4405 138.816C91.7116 140.681 87.2959 141.466 82.8801 140.484C72.4786 138.326 65.8059 128.12 67.9647 117.719C70.1235 107.317 80.2307 100.546 90.6322 102.803C94.3611 103.588 97.5993 105.453 100.347 108.004C104.959 112.616 106.921 119.289 105.548 125.569Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M92.8892 119.976H88.4735V115.56C88.4735 114.677 87.7866 113.892 86.8053 113.892C85.9222 113.892 85.1371 114.579 85.1371 115.56V119.976H80.7214C79.8382 119.976 79.0532 120.662 79.0532 121.644C79.0532 122.625 79.7401 123.312 80.7214 123.312H85.1371V127.728C85.1371 128.611 85.824 129.396 86.8053 129.396C87.6885 129.396 88.4735 128.709 88.4735 127.728V123.312H92.8892C93.7724 123.312 94.5574 122.625 94.5574 121.644C94.5574 120.662 93.7724 119.976 92.8892 119.976Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -1,38 +0,0 @@
<svg width="123" height="126" viewBox="0 0 123 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M64.4237 111.867C91.7974 111.867 113.99 89.6745 113.99 62.2031C113.99 34.7317 91.6996 12.5396 64.4237 12.5396C37.0501 12.5396 14.8579 34.7317 14.8579 62.2031C14.8579 89.6745 37.0501 111.867 64.4237 111.867Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M93.6338 12.5396C83.2422 33.022 67.9889 41.1703 54.0085 46.0363C50.764 47.1812 47.2331 48.183 43.8931 47.3243C40.5531 46.4656 37.6425 43.0785 38.5491 39.7392C39.3602 36.6383 43.3682 35.1117 46.2788 36.3521C49.2371 37.5924 50.8594 41.0272 50.5731 44.2235C50.2868 47.4197 48.3305 50.2343 45.8494 52.1903C43.3205 54.1462 40.3145 55.3388 37.2608 56.2452C30.533 58.2488 23.519 59.2029 16.9821 61.7313C10.3976 64.2597 4.14697 68.7917 1.9044 75.4227C0.282106 80.1456 0.950108 85.4886 3.04954 89.9729C5.14898 94.4572 8.72756 98.2259 12.7356 101.231C18.8907 105.811 26.4773 108.673 34.1116 108.483C41.7459 108.292 49.4757 104.952 54.1994 98.9415C58.9231 92.9306 60.3068 84.2005 56.9668 77.2833C54.6765 72.5127 49.4757 68.6009 44.2748 69.7458C40.1714 70.6999 37.1653 74.7072 36.7359 78.9529C36.3065 83.1987 38.1673 87.3968 40.9348 90.5453C43.7022 93.7416 47.3762 95.9837 51.1934 97.9397C56.776 100.754 63.3606 102.901 69.134 100.516C74.6212 98.2736 77.818 92.5967 79.9175 87.1106C82.0169 81.6244 83.5915 75.6613 87.4086 71.1293C91.9892 65.6909 99.7189 63.1625 106.638 64.7845C113.556 66.4064 119.377 72.1311 121.095 79.0006C122.431 84.3436 120.809 91.0224 115.799 93.36C111.886 95.2205 107.067 93.8847 103.679 91.2132C100.292 88.5417 98.0012 84.7253 95.8064 81.0043" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4 4"/>
<path d="M55.1784 35.3718C63.5321 38.1997 72.5966 33.7202 75.4245 25.3665C78.2524 17.0128 73.7729 7.94831 65.4192 5.1204C57.0655 2.29248 48.001 6.77201 45.1731 15.1257C42.3451 23.4794 46.8247 32.5439 55.1784 35.3718Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M56.1375 32.5372C62.9259 34.8352 70.2919 31.1951 72.5899 24.4067C74.8879 17.6184 71.2478 10.2524 64.4594 7.95438C57.671 5.65637 50.3051 9.29651 48.007 16.0849C45.709 22.8732 49.3492 30.2392 56.1375 32.5372Z" fill="#1f1f1f"/>
<path d="M59.7561 21.8493C60.6415 22.149 61.6023 21.6742 61.902 20.7888C62.2018 19.9033 61.7269 18.9426 60.8415 18.6428C59.9561 18.3431 58.9953 18.8179 58.6956 19.7033C58.3958 20.5888 58.8706 21.5495 59.7561 21.8493Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M63.0122 12.23L60.6604 19.1773" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M62.083 20.2544L66.1857 20.4519" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M64.0744 10.7699C64.3349 10.6457 64.433 10.3214 64.2934 10.0454C64.1538 9.76951 63.8294 9.64651 63.5689 9.77072C63.3084 9.89492 63.2103 10.2193 63.3499 10.4952C63.4895 10.7711 63.8139 10.8941 64.0744 10.7699Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M57.3166 30.7045C57.5771 30.5803 57.6752 30.2559 57.5356 29.98C57.396 29.7041 57.0716 29.5811 56.8111 29.7053C56.5506 29.8295 56.4525 30.1539 56.5921 30.4298C56.7317 30.7057 57.0561 30.8287 57.3166 30.7045Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M50.7199 17.3822C50.9804 17.258 51.0785 16.9337 50.9389 16.6577C50.7993 16.3818 50.4749 16.2588 50.2144 16.383C49.9539 16.5072 49.8558 16.8316 49.9954 17.1075C50.135 17.3834 50.4594 17.5064 50.7199 17.3822Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M70.6545 24.14C70.915 24.0158 71.0131 23.6915 70.8735 23.4155C70.7339 23.1396 70.4095 23.0166 70.149 23.1408C69.8884 23.265 69.7904 23.5894 69.93 23.8653C70.0696 24.1412 70.394 24.2642 70.6545 24.14Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M12.3005 40.0978L14.9425 39.3015C15.1339 39.246 15.1339 38.9682 14.9425 38.9126L12.3005 38.1163C12.2326 38.0978 12.1832 38.0484 12.1647 37.9805L11.3684 35.3447C11.3128 35.1533 11.0351 35.1533 10.9795 35.3447L10.1832 37.9805C10.1647 38.0484 10.1153 38.0978 10.0474 38.1163L7.41159 38.9126C7.22023 38.9682 7.22023 39.246 7.41159 39.3015L10.0536 40.0978C10.1215 40.1163 10.1709 40.1657 10.1894 40.2336L10.9857 42.8756C11.0412 43.067 11.319 43.067 11.3746 42.8756L12.1709 40.2336C12.1832 40.1657 12.2326 40.1163 12.3005 40.0978Z" fill="#3c3c3c"/>
<path d="M96.5557 9.17336L99.2576 9.73368C99.4523 9.77613 99.5848 9.53199 99.4431 9.39188L97.5008 7.4318C97.45 7.38314 97.4301 7.31618 97.4463 7.24767L98.0036 4.55119C98.0461 4.35651 97.8019 4.22401 97.6618 4.3657L95.7047 6.30252C95.656 6.35336 95.5891 6.37321 95.5206 6.3571L92.8241 5.79972C92.6294 5.75727 92.4969 6.00142 92.6386 6.14152L94.5808 8.1016C94.6317 8.15026 94.6515 8.21722 94.6354 8.28573L94.0751 10.9876C94.0326 11.1823 94.2768 11.3148 94.4169 11.1731L96.377 9.23089C96.4202 9.17709 96.4872 9.15725 96.5557 9.17336Z" fill="#3c3c3c"/>
<path d="M94.8952 76.0129L96.9595 74.1819C97.1099 74.0512 96.9933 73.799 96.7963 73.8289L94.064 74.2143C93.9946 74.226 93.9291 74.2019 93.8838 74.148L92.0553 72.0895C91.9246 71.9391 91.6724 72.0556 91.7023 72.2526L92.085 74.9792C92.0967 75.0486 92.0726 75.1142 92.0187 75.1594L89.96 76.9879C89.8096 77.1186 89.9262 77.3708 90.1232 77.3409L92.8555 76.9555C92.9249 76.9438 92.9904 76.9679 93.0357 77.0218L94.8668 79.086C94.9975 79.2363 95.2497 79.1198 95.2198 78.9228L94.8345 76.1906C94.8172 76.1238 94.8413 76.0582 94.8952 76.0129Z" fill="#3c3c3c"/>
<path d="M73.8716 57.3258L76.1834 56.6291C76.3508 56.5805 76.3508 56.3374 76.1834 56.2888L73.8716 55.5921C73.8122 55.5759 73.769 55.5327 73.7528 55.4733L73.0561 53.1671C73.0074 52.9996 72.7644 52.9996 72.7158 53.1671L72.019 55.4733C72.0028 55.5327 71.9596 55.5759 71.9002 55.5921L69.5938 56.2888C69.4264 56.3374 69.4264 56.5805 69.5938 56.6291L71.9056 57.3258C71.965 57.342 72.0082 57.3852 72.0244 57.4446L72.7212 59.7563C72.7698 59.9237 73.0128 59.9237 73.0615 59.7563L73.7582 57.4446C73.769 57.3852 73.8122 57.342 73.8716 57.3258Z" fill="#3c3c3c"/>
<path d="M29.5118 89.7614L31.8235 88.9651C31.991 88.9095 31.991 88.6317 31.8235 88.5762L29.5118 87.7799C29.4524 87.7614 29.4092 87.712 29.393 87.6441L28.6962 85.0083C28.6476 84.8169 28.4045 84.8169 28.3559 85.0083L27.6591 87.6441C27.6429 87.712 27.5997 87.7614 27.5403 87.7799L25.234 88.5762C25.0665 88.6317 25.0665 88.9095 25.234 88.9651L27.5457 89.7614C27.6051 89.7799 27.6483 89.8293 27.6646 89.8972L28.3613 92.5392C28.4099 92.7305 28.653 92.7305 28.7016 92.5392L29.3984 89.8972C29.4092 89.8293 29.4524 89.7799 29.5118 89.7614Z" fill="#3c3c3c"/>
<path d="M25.6922 50.6715L27.3434 50.1738C27.463 50.1391 27.463 49.9655 27.3434 49.9308L25.6922 49.4331C25.6497 49.4216 25.6188 49.3907 25.6073 49.3483L25.1096 47.701C25.0749 47.5814 24.9013 47.5814 24.8665 47.701L24.3688 49.3483C24.3573 49.3907 24.3264 49.4216 24.284 49.4331L22.6366 49.9308C22.517 49.9655 22.517 50.1391 22.6366 50.1738L24.2878 50.6715C24.3303 50.6831 24.3611 50.7139 24.3727 50.7564L24.8704 52.4075C24.9051 52.5271 25.0787 52.5271 25.1134 52.4075L25.6111 50.7564C25.6188 50.7139 25.6497 50.6831 25.6922 50.6715Z" fill="#3c3c3c"/>
<path d="M120.831 51.7623L122.482 51.2647C122.602 51.2299 122.602 51.0563 122.482 51.0216L120.831 50.524C120.788 50.5124 120.758 50.4815 120.746 50.4391L120.248 48.7918C120.214 48.6723 120.04 48.6723 120.005 48.7918L119.508 50.4391C119.496 50.4815 119.465 50.5124 119.423 50.524L117.775 51.0216C117.656 51.0563 117.656 51.2299 117.775 51.2647L119.426 51.7623C119.469 51.7739 119.5 51.8047 119.511 51.8472L120.009 53.4983C120.044 53.6179 120.217 53.6179 120.252 53.4983L120.75 51.8472C120.758 51.8047 120.788 51.7739 120.831 51.7623Z" fill="#3c3c3c"/>
<path d="M37.8972 27.6539L39.5485 27.1563C39.6681 27.1215 39.6681 26.9479 39.5485 26.9132L37.8972 26.4156C37.8548 26.404 37.8239 26.3731 37.8124 26.3307L37.3147 24.6834C37.2799 24.5639 37.1063 24.5639 37.0716 24.6834L36.5739 26.3307C36.5623 26.3731 36.5315 26.404 36.489 26.4156L34.8417 26.9132C34.7221 26.9479 34.7221 27.1215 34.8417 27.1563L36.4929 27.6539C36.5353 27.6655 36.5662 27.6963 36.5778 27.7388L37.0755 29.3899C37.1102 29.5095 37.2838 29.5095 37.3185 29.3899L37.8162 27.7388C37.8239 27.6963 37.8548 27.6655 37.8972 27.6539Z" fill="#3c3c3c"/>
<path d="M13.3069 83.1031L14.9581 82.6055C15.0777 82.5708 15.0777 82.3972 14.9581 82.3624L13.3069 81.8648C13.2645 81.8532 13.2336 81.8224 13.222 81.7799L12.7243 80.1327C12.6896 80.0131 12.516 80.0131 12.4813 80.1327L11.9836 81.7799C11.972 81.8224 11.9411 81.8532 11.8987 81.8648L10.2513 82.3624C10.1317 82.3972 10.1317 82.5708 10.2513 82.6055L11.9026 83.1031C11.945 83.1147 11.9759 83.1456 11.9874 83.188L12.4851 84.8391C12.5199 84.9587 12.6935 84.9587 12.7282 84.8391L13.2259 83.188C13.2336 83.1456 13.2645 83.1147 13.3069 83.1031Z" fill="#3c3c3c"/>
<path d="M58.6922 57.5907L61.979 62.276C62.9181 63.6146 63.5603 64.7335 64.0498 66.2448C65.8824 71.0942 65.1988 76.4246 62.6771 80.7618C62.209 81.5182 61.9707 82.3987 62.0863 83.1736C62.1063 84.0157 62.356 84.9818 62.8927 85.7468C63.9659 87.2767 65.7655 88.0116 67.5737 87.7419C73.3808 86.6643 79.3534 88.4667 83.4436 92.8737C83.9417 93.3803 84.3442 93.954 84.8137 94.6233L88.1005 99.3086C88.5029 99.8823 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.641 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.76 55.8413 95.8296C56.7775 94.3168 56.6319 92.2789 55.5586 90.749C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.1149 53.4136 89.1149C52.6287 88.8095 51.7867 88.8295 50.9447 88.8495C47.0414 89.5903 43.0411 88.9724 39.4319 87.0814C38.5128 86.5848 37.5937 86.0882 36.7988 85.3618C36.569 85.2376 36.3678 84.9507 36.2336 84.7595C35.3716 83.9375 34.4425 83.0198 33.7047 81.968L30.4179 77.2828C30.3508 77.1872 30.2167 76.9959 30.0825 76.8047L58.3854 56.9499C58.491 57.3038 58.5581 57.3995 58.6922 57.5907Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M74.5356 102.547C74.5356 102.547 64.4216 111.925 63.7422 111.974C63.2927 112.146 59.3138 113.796 56.7792 114.861L56.1085 113.905C55.7731 113.426 55.4377 112.948 55.1309 112.308C55.255 112.078 55.3121 111.752 55.3692 111.427C56.6664 107.378 60.698 101.126 69.1952 101.443L74.5356 102.547Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M58.6922 57.5907L61.979 62.276C62.9181 63.6146 63.5603 64.7335 64.0498 66.2448C65.8824 71.0942 65.1988 76.4246 62.6771 80.7618C62.209 81.5182 61.9707 82.3987 62.0863 83.1736C62.1063 84.0157 62.356 84.9818 62.8927 85.7468C63.9659 87.2767 65.7655 88.0116 67.5737 87.7419C73.3808 86.6643 79.3534 88.4667 83.4436 92.8737C83.9417 93.3803 84.3442 93.954 84.8137 94.6233L88.1005 99.3086C88.5029 99.8823 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.641 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.76 55.8413 95.8296C56.7775 94.3168 56.6319 92.2789 55.5586 90.749C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.1149 53.4136 89.1149C52.6287 88.8095 51.7867 88.8295 50.9447 88.8495C47.0414 89.5903 43.0411 88.9724 39.4319 87.0814C38.5128 86.5848 37.5937 86.0882 36.7988 85.3618C36.569 85.2376 36.3678 84.9507 36.2336 84.7595C35.3716 83.9375 34.4425 83.0198 33.7047 81.968L30.4179 77.2828C30.3508 77.1872 30.2167 76.9959 30.0825 76.8047L58.3854 56.9499C58.491 57.3038 58.5581 57.3995 58.6922 57.5907Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M56.5304 77.084L45.3631 85.774L39.5946 87.1099C38.6755 86.6132 37.7565 86.1166 36.9615 85.3902C36.7318 85.266 36.5305 84.9792 36.3964 84.788C39.4818 79.6274 42.3203 76.352 50.5763 74.6979C51.9635 74.4381 53.2551 74.2454 54.805 74.0142C68.6011 72.3258 56.5304 77.084 56.5304 77.084Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M64.1171 66.3406C65.9496 71.19 65.266 76.5204 62.7443 80.8576C62.2762 81.6139 62.0379 82.4945 62.1535 83.2694L62.0579 83.3365C60.528 84.4097 60.1284 86.6875 61.2017 88.2174L71.1961 102.464L68.4232 104.41L58.3617 90.067C57.2885 88.5371 55.1063 88.0704 53.4808 89.2107C52.6959 88.9053 51.8539 88.9253 51.0119 88.9453C47.1086 89.6861 43.1084 89.0682 39.4991 87.1772C38.58 86.6806 37.6609 86.184 36.866 85.4576C45.3803 83.7649 48.2459 78.9011 50.4523 74.9279C51.1687 73.712 51.7895 72.5631 52.4773 71.5099C55.2003 67.4596 59.2177 66.0681 64.1171 66.3406Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M84.7178 94.6907L88.0046 99.376C88.407 99.9497 88.7139 100.59 89.0493 101.069L63.9974 118.643L59.3949 118.59L56.4435 114.383C56.1081 113.905 55.7727 113.427 55.5329 112.881C55.3988 112.69 55.2932 112.336 55.0919 112.049C55.1876 111.982 55.2546 112.078 55.3503 112.011C55.513 112.039 55.6086 111.972 55.7042 111.905C65.022 109.934 67.5137 104.334 69.8727 99.9684C70.2452 99.2791 70.7133 98.5227 71.1528 97.929C74.0385 93.9073 78.2186 92.5443 83.2807 92.8454C83.7502 93.5147 84.2483 94.0214 84.7178 94.6907Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M60.9889 57.4062L29.6263 79.4074C28.957 79.8769 27.9808 79.7057 27.5783 79.132L25.4319 76.0722C24.9623 75.4029 25.2007 74.5223 25.87 74.0528L57.3282 51.9845C57.9976 51.515 58.9067 51.5906 59.3762 52.2599L61.4556 55.2241C61.7339 56.0275 61.6583 56.9366 60.9889 57.4062Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M92.6489 102.538L61.2863 124.539C60.6169 125.009 59.7078 124.933 59.2383 124.264L57.1589 121.3C56.6894 120.63 56.9277 119.75 57.597 119.28L89.0553 97.212C89.7246 96.7425 90.6337 96.8181 91.1032 97.4875L93.1826 100.452C93.4609 101.255 93.3182 102.069 92.6489 102.538Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6053L109.875 38.2699C109.466 39.0312 109.09 39.6002 108.492 40.1902C106.636 42.2069 103.956 43.1493 101.309 42.9878C100.841 42.9462 100.368 43.0427 100.03 43.2813C99.6367 43.4906 99.2396 43.8379 99.0057 44.2729C98.5378 45.143 98.6179 46.1675 99.1745 46.9576C101.062 49.4447 101.628 52.6936 100.518 55.6717C100.397 56.0272 100.221 56.3535 100.017 56.7342L98.5837 59.3988C98.4083 59.7251 98.1785 60.0221 98.0323 60.294L82.0444 51.6971C82.1362 51.396 82.3409 51.0153 82.4871 50.7434L83.9199 48.0788C84.0661 47.8069 84.2667 47.5642 84.4129 47.2923C84.4714 47.1836 84.6135 47.0497 84.7012 46.8865C86.5983 44.4014 89.5374 43.1075 92.5693 43.3358C93.5061 43.4189 94.4341 42.8663 94.902 41.9962C95.1067 41.6156 95.2319 41.122 95.1898 40.6788C95.219 40.6244 95.1646 40.5952 95.1646 40.5952C95.1226 40.1519 94.9132 39.759 94.7039 39.366C93.4275 37.6982 92.7698 35.662 92.8062 33.5084C92.8226 32.9563 92.839 32.4043 92.9934 31.8564C92.9975 31.7184 93.0852 31.5553 93.1437 31.4465C93.3274 30.8442 93.5402 30.1876 93.8619 29.5894L95.2947 26.9247C95.324 26.8704 95.3824 26.7616 95.4409 26.6528L111.538 35.3082C111.395 35.4421 111.366 35.4965 111.308 35.6053Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M93.8341 53.7603C93.8341 53.7603 87.0037 51.2092 86.8196 50.8998C86.6313 50.7285 84.9075 49.2407 83.803 48.2963L84.0954 47.7525C84.2416 47.4806 84.3878 47.2087 84.6176 46.9116C84.7556 46.9157 84.9229 46.8655 85.0901 46.8152C87.3104 46.4668 91.2207 46.8869 93.0881 50.9756L93.8341 53.7603Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6053L109.875 38.2699C109.466 39.0312 109.09 39.6002 108.492 40.1902C106.636 42.2069 103.956 43.1493 101.309 42.9878C100.841 42.9462 100.368 43.0427 100.03 43.2813C99.6367 43.4906 99.2396 43.8379 99.0057 44.2729C98.5378 45.143 98.6179 46.1675 99.1745 46.9576C101.062 49.4447 101.628 52.6936 100.518 55.6717C100.397 56.0272 100.221 56.3535 100.017 56.7342L98.5837 59.3988C98.4083 59.7251 98.1785 60.0221 98.0323 60.294L82.0444 51.6971C82.1362 51.396 82.3409 51.0153 82.4871 50.7434L83.9199 48.0788C84.0661 47.8069 84.2667 47.5642 84.4129 47.2923C84.4714 47.1836 84.6135 47.0497 84.7012 46.8865C86.5983 44.4014 89.5374 43.1075 92.5693 43.3358C93.5061 43.4189 94.4341 42.8663 94.902 41.9962C95.1067 41.6156 95.2319 41.122 95.1898 40.6788C95.219 40.6244 95.1646 40.5952 95.1646 40.5952C95.1226 40.1519 94.9132 39.759 94.7039 39.366C93.4275 37.6982 92.7698 35.662 92.8062 33.5084C92.8226 32.9563 92.839 32.4043 92.9934 31.8564C92.9975 31.7184 93.0852 31.5553 93.1437 31.4465C93.3274 30.8442 93.5402 30.1876 93.8619 29.5894L95.2947 26.9247C95.324 26.8704 95.3824 26.7616 95.4409 26.6528L111.538 35.3082C111.395 35.4421 111.366 35.4965 111.308 35.6053Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M101.587 39.2113L94.8318 35.9994L92.8315 33.5918C92.8479 33.0398 92.8643 32.4878 93.0187 31.9399C93.0228 31.8019 93.1105 31.6388 93.169 31.53C96.339 31.7623 98.5598 32.3256 101.301 35.8325C101.753 36.4261 102.151 36.9904 102.628 37.6676C106.7 43.7832 101.587 39.2113 101.587 39.2113Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M108.462 40.2444C106.607 42.2611 103.927 43.2036 101.28 43.042C100.811 43.0005 100.339 43.0969 100 43.3355L99.9459 43.3063C99.0758 42.8384 97.9051 43.1904 97.4372 44.0605L93.0803 52.1632L91.5033 51.3152L95.8894 43.1581C96.3573 42.288 96.0597 41.1465 95.1353 40.6494C95.0932 40.2062 94.8839 39.8132 94.6745 39.4202C93.3981 37.7524 92.7404 35.7163 92.7768 33.5626C92.7932 33.0106 92.8096 32.4586 92.964 31.9107C95.7847 35.5305 98.7622 35.7295 101.163 35.8285C101.907 35.8782 102.597 35.8987 103.258 35.9736C105.817 36.2983 107.428 37.8656 108.462 40.2444Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M99.9622 56.7048L98.5294 59.3694C98.354 59.6957 98.1241 59.9928 97.9779 60.2647L83.7302 52.6035L82.6626 50.417L83.9492 48.0243C84.0954 47.7524 84.2416 47.4805 84.4422 47.2378C84.5007 47.129 84.6428 46.9951 84.7305 46.832C84.7849 46.8612 84.7556 46.9156 84.81 46.9449C84.8352 47.0285 84.8895 47.0577 84.9439 47.087C88.0867 51.0202 91.3234 50.8678 93.9454 50.9457C94.3594 50.958 94.8278 50.9996 95.2126 51.0663C97.7972 51.4746 99.4332 53.1255 100.493 55.5879C100.288 55.9686 100.167 56.3241 99.9622 56.7048Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.939 36.6459L94.1026 27.0548C93.722 26.8502 93.5711 26.3484 93.7466 26.0221L94.6823 24.282C94.887 23.9013 95.3595 23.8048 95.7402 24.0095L113.631 33.6299C114.012 33.8346 114.192 34.2819 113.987 34.6626L113.081 36.3484C112.767 36.6706 112.32 36.8506 111.939 36.6459Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M98.1382 62.3137L80.3013 52.7226C79.9207 52.5179 79.7406 52.0706 79.9453 51.6899L80.8517 50.0041C81.0564 49.6235 81.5289 49.527 81.9096 49.7317L99.8008 59.352C100.181 59.5567 100.362 60.0041 100.157 60.3847L99.2504 62.0705C98.9369 62.3927 98.5188 62.5184 98.1382 62.3137Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,22 +0,0 @@
<svg width="144" height="118" viewBox="0 0 144 118" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M71.915 116.003C103.558 116.003 129.168 90.2405 129.168 58.455C129.168 26.6694 103.558 1 71.915 1C40.3653 1 14.6616 26.7621 14.6616 58.5476C14.6616 90.3332 40.3653 116.003 71.915 116.003Z" fill="#1f1f1f" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M6.40267 71.9221C8.53691 71.9221 10.2072 70.2541 10.2072 68.1227C10.2072 65.9913 8.53691 64.3232 6.40267 64.3232C4.26842 64.3232 2.59814 65.9913 2.59814 68.1227C2.59814 70.2541 4.36122 71.9221 6.40267 71.9221Z" fill="#1f1f1f"/>
<path d="M2.59821 59.5972C3.99011 59.5972 5.19642 58.3925 5.19642 57.0025C5.19642 55.6124 3.99011 54.4077 2.59821 54.4077C1.20631 54.4077 0 55.6124 0 57.0025C0 58.4852 1.20631 59.5972 2.59821 59.5972Z" fill="#1f1f1f"/>
<path d="M138.726 81.467C141.417 81.467 143.551 79.3356 143.551 76.6481C143.551 73.9607 141.417 71.8293 138.726 71.8293C136.035 71.8293 133.9 73.9607 133.9 76.6481C133.9 79.3356 136.035 81.467 138.726 81.467Z" fill="#1f1f1f"/>
<circle cx="70.6176" cy="28.6049" r="2.23823" fill="#4D4D4D"/>
<path d="M113.372 106.197H29.3551C26.224 106.197 23.6147 103.61 23.6147 100.505V15.6447C23.6147 12.5401 26.224 9.95288 29.3551 9.95288H113.372C116.503 9.95288 119.113 12.5401 119.113 15.6447V100.505C119.113 103.61 116.503 106.197 113.372 106.197Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8772 42.0341C77.4699 42.0341 82.8144 36.6896 82.8144 30.0969C82.8144 23.5041 77.4699 18.1597 70.8772 18.1597C64.2844 18.1597 58.9399 23.5041 58.9399 30.0969C58.9399 36.6896 64.2844 42.0341 70.8772 42.0341Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8773 30.8431C73.3496 30.8431 75.3538 28.8389 75.3538 26.3666C75.3538 23.8943 73.3496 21.8901 70.8773 21.8901C68.4051 21.8901 66.4009 23.8943 66.4009 26.3666C66.4009 28.8389 68.4051 30.8431 70.8773 30.8431Z" fill="#737373"/>
<path d="M79.8302 38.3074C77.6656 40.6044 74.6218 42.0342 71.2503 42.0342C67.8788 42.0342 64.8349 40.6044 62.6704 38.3074C63.8656 34.8375 67.2553 32.3352 71.2503 32.3352C75.2452 32.3352 78.635 34.8375 79.8302 38.3074Z" fill="#737373"/>
<path d="M103.388 60.686H38.5928C37.8184 60.686 37.0439 59.8252 37.0439 58.9643V51.2166C37.0439 50.3557 37.8184 49.4949 38.5928 49.4949H103.388C104.162 49.4949 104.937 50.3557 104.937 51.2166V58.9643C104.937 59.8252 104.162 60.686 103.388 60.686Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M103.388 77.0998H38.5928C37.8184 77.0998 37.0439 76.239 37.0439 75.3781V67.6304C37.0439 66.7695 37.8184 65.9087 38.5928 65.9087H103.388C104.162 65.9087 104.937 66.7695 104.937 67.6304V75.3781C104.937 76.239 104.162 77.0998 103.388 77.0998Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M103.325 83.8145H79.6896C78.8839 83.8145 78.0781 84.4877 78.0781 85.8342V93.2398C78.0781 94.2497 78.6153 95.2595 79.6896 95.2595H103.325C104.131 95.2595 104.937 94.5863 104.937 93.2398V85.8342C104.937 84.7682 104.131 83.8145 103.325 83.8145Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M97.9375 88.291H85.8239C85.3084 88.291 84.793 88.9141 84.793 89.5371C84.793 90.1601 85.3084 90.7832 85.8239 90.7832H97.9375C98.453 90.7832 98.9684 90.1601 98.9684 89.5371C98.9684 88.6025 98.453 88.291 97.9375 88.291Z" fill="#a3a3a3"/>
<rect x="41.5205" y="53.9714" width="29.097" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="41.5205" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="45.9971" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="50.4736" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="54.9497" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="58.6802" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="63.1567" y="70.385" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -1,39 +0,0 @@
<svg width="145" height="120" viewBox="0 0 145 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M130.648 59.7265C130.648 72.9542 126.219 85.3837 118.837 95.1904C114.748 100.55 109.865 105.225 104.187 108.874C95.1015 114.918 84.0856 118.339 72.3883 118.339C40.2491 118.453 14.1289 92.2256 14.1289 59.7265C14.1289 27.3414 40.1355 1 72.3883 1C84.0856 1 94.9879 4.42096 104.187 10.4647C109.865 14.1137 114.748 18.789 118.837 24.1485C126.219 34.0693 130.648 46.3847 130.648 59.7265Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M28.0195 51.8743H27.3162C26.7887 51.8743 26.437 51.7102 26.437 51.464C26.437 51.2178 26.7887 51.0537 27.3162 51.0537H28.0195C28.547 51.0537 28.8987 51.2178 28.8987 51.464C28.8987 51.7102 28.547 51.8743 28.0195 51.8743Z" fill="#2D5887"/>
<path d="M28.0195 55.1565H27.3162C26.7887 55.1565 26.437 54.9924 26.437 54.7462C26.437 54.5 26.7887 54.3359 27.3162 54.3359H28.0195C28.547 54.3359 28.8987 54.5 28.8987 54.7462C28.8987 54.9924 28.547 55.1565 28.0195 55.1565Z" fill="#2D5887"/>
<path d="M28.0195 58.4387H27.3162C26.7887 58.4387 26.437 58.2746 26.437 58.0284C26.437 57.7823 26.7887 57.6182 27.3162 57.6182H28.0195C28.547 57.6182 28.8987 57.7823 28.8987 58.0284C28.8987 58.2746 28.547 58.4387 28.0195 58.4387Z" fill="#2D5887"/>
<path d="M28.0195 61.7209H27.3162C26.7887 61.7209 26.437 61.5568 26.437 61.3107C26.437 61.0645 26.7887 60.9004 27.3162 60.9004H28.0195C28.547 60.9004 28.8987 61.0645 28.8987 61.3107C28.8987 61.5568 28.547 61.7209 28.0195 61.7209Z" fill="#2D5887"/>
<path d="M60.1189 51.8743H48.553C48.0841 51.8743 47.7715 51.7102 47.7715 51.464C47.7715 51.2178 48.0841 51.0537 48.553 51.0537H60.1189C60.5878 51.0537 60.9004 51.2178 60.9004 51.464C60.9004 51.7102 60.5878 51.8743 60.1189 51.8743Z" fill="white"/>
<path d="M84.7621 61.7209H48.5264C48.0734 61.7209 47.7715 61.5568 47.7715 61.3107C47.7715 61.0645 48.0734 60.9004 48.5264 60.9004H84.7621C85.215 60.9004 85.517 61.0645 85.517 61.3107C85.517 61.5568 85.215 61.7209 84.7621 61.7209Z" fill="url(#paint0_linear)"/>
<path d="M60.1642 55.1565H44.4053C43.9635 55.1565 43.6689 54.9924 43.6689 54.7462C43.6689 54.5 43.9635 54.3359 44.4053 54.3359H60.1642C60.606 54.3359 60.9006 54.5 60.9006 54.7462C60.9006 54.9924 60.606 55.1565 60.1642 55.1565Z" fill="#2D5887"/>
<path d="M72.4741 58.4387H44.4038C43.9629 58.4387 43.6689 58.2746 43.6689 58.0284C43.6689 57.7823 43.9629 57.6182 44.4038 57.6182H72.4741C72.915 57.6182 73.2089 57.7823 73.2089 58.0284C73.0619 58.2746 72.768 58.4387 72.4741 58.4387Z" fill="#2D5887"/>
<path d="M84.7181 58.4387H74.0082C73.5287 58.4387 73.209 58.2746 73.209 58.0284C73.209 57.7823 73.5287 57.6182 74.0082 57.6182H84.7181C85.1976 57.6182 85.5173 57.7823 85.5173 58.0284C85.5173 58.2746 85.1976 58.4387 84.7181 58.4387Z" fill="white"/>
<path d="M91.3056 58.4387H87.1141C86.6484 58.4387 86.3379 58.2746 86.3379 58.0284C86.3379 57.7823 86.6484 57.6182 87.1141 57.6182H91.3056C91.7713 57.6182 92.0818 57.7823 92.0818 58.0284C92.0818 58.2746 91.7713 58.4387 91.3056 58.4387Z" fill="url(#paint1_linear)"/>
<path d="M1 103.569H138.853" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M97.8252 51.0537V103.569H23.3713C20.4342 103.569 18.2314 101.209 18.2314 98.4062V51.0537H97.8252Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M127.366 51.0537V98.4062C127.366 101.356 124.917 103.569 122.009 103.569H97.8257V51.0537H127.366Z" fill="#DAE1ED"/>
<path d="M127.366 51.0537V98.4062C127.366 101.356 124.917 103.569 122.009 103.569H97.8257V51.0537H127.366Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M46.9512 51.0537L62.6074 26.437H142.956L126.857 51.0537H46.9512Z" fill="#C5CDDB"/>
<path d="M46.9512 51.0537L62.6074 26.437H142.956L126.857 51.0537H46.9512Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path opacity="0.3" d="M127.366 51.1975V78.9526H105.826C103.826 78.9526 102.441 77.6583 102.134 75.7888L97.8257 51.0537L127.366 51.1975Z" fill="url(#paint2_linear)"/>
<path d="M126.747 51.0537H97.8257L112.511 73.3119C113.56 74.7859 115.208 75.6704 116.857 75.6704H139.334C140.833 75.6704 141.882 73.9015 140.982 72.7223L126.747 51.0537Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M97.8254 51.0537L82.0597 26.437H1L17.3607 51.0537H97.8254Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M57.9543 81.4143H26.9218C26.1967 81.4143 25.6167 80.8673 25.6167 80.1835C25.6167 79.4997 26.1967 78.9526 26.9218 78.9526H57.9543C58.6794 78.9526 59.2594 79.4997 59.2594 80.1835C59.1144 80.8673 58.6794 81.4143 57.9543 81.4143Z" fill="#3c3c3c"/>
<path d="M57.9543 87.1582H26.9218C26.1967 87.1582 25.6167 86.7935 25.6167 86.3376C25.6167 85.8818 26.1967 85.5171 26.9218 85.5171H57.9543C58.6794 85.5171 59.2594 85.8818 59.2594 86.3376C59.1144 86.7935 58.6794 87.1582 57.9543 87.1582Z" fill="#3c3c3c"/>
<path d="M41.5228 93.7227H26.9422C26.2058 93.7227 25.6167 93.358 25.6167 92.9021C25.6167 92.4462 26.2058 92.0815 26.9422 92.0815H41.5228C42.2592 92.0815 42.8483 92.4462 42.8483 92.9021C42.7011 93.358 42.1119 93.7227 41.5228 93.7227Z" fill="#3c3c3c"/>
<defs>
<linearGradient id="paint0_linear" x1="47.941" y1="61.3273" x2="85.5608" y2="61.3273" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF66A9"/>
<stop offset="1" stop-color="#F53689"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="86.3762" y1="58.0033" x2="92.0807" y2="58.0033" gradientUnits="userSpaceOnUse">
<stop stop-color="#83A6FF"/>
<stop offset="1" stop-color="#5A78FF"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="112.602" y1="79.5252" x2="112.602" y2="54.1127" gradientUnits="userSpaceOnUse">
<stop offset="0.00289017" stop-opacity="0"/>
<stop offset="1"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,17 +0,0 @@
<svg width="128" height="111" viewBox="0 0 128 111" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M63.6998 109.492C93.3998 109.492 117.6 85.3922 117.6 55.7922C117.5 26.0922 93.3998 1.99219 63.6998 1.99219C33.8998 1.99219 9.7998 26.0922 9.7998 55.6922C9.7998 85.3922 33.8998 109.492 63.6998 109.492Z" fill="#1f1f1f" stroke="#737373" stroke-width="2" stroke-miterlimit="10"/>
<path d="M118.9 36.992C121.164 36.992 123 35.1564 123 32.892C123 30.6276 121.164 28.792 118.9 28.792C116.635 28.792 114.8 30.6276 114.8 32.892C114.8 35.1564 116.635 36.992 118.9 36.992Z" fill="#525252"/>
<path d="M124.9 20.9921C126.446 20.9921 127.7 19.7385 127.7 18.1921C127.7 16.6457 126.446 15.3921 124.9 15.3921C123.354 15.3921 122.1 16.6457 122.1 18.1921C122.1 19.7385 123.354 20.9921 124.9 20.9921Z" fill="#525252"/>
<path d="M5.2 91.7921C8.07188 91.7921 10.4 89.464 10.4 86.5921C10.4 83.7202 8.07188 81.3921 5.2 81.3921C2.32812 81.3921 0 83.7202 0 86.5921C0 89.464 2.32812 91.7921 5.2 91.7921Z" fill="#525252"/>
<path d="M101.512 33.162V98.2932C101.512 103.039 97.7479 106.803 93.0022 106.803H34.4168C29.6711 106.803 25.9072 103.039 25.9072 98.2932V13.0335C25.9072 8.28779 29.6711 4.52393 34.4168 4.52393H73.0373C75.1647 4.52393 77.1285 5.34216 78.6013 6.81497L99.2207 27.4344C100.694 29.0709 101.512 31.0346 101.512 33.162Z" fill="#1f1f1f" stroke="#525252" stroke-width="2" stroke-miterlimit="10"/>
<path d="M75.9185 5.11914V24.4727C75.9185 27.9435 78.8576 30.7201 82.1974 30.7201H100.924" fill="#737373"/>
<path d="M51.1871 89.0665H37.5406C37.0314 89.0665 36.624 88.5253 36.624 87.8758C36.624 87.2263 37.0314 86.6851 37.5406 86.6851H51.1871C51.6963 86.6851 52.1037 87.2263 52.1037 87.8758C52.1037 88.6335 51.6963 89.0665 51.1871 89.0665Z" fill="#737373"/>
<path d="M68.6393 22.3849H37.9495C37.2358 22.3849 36.624 21.8353 36.624 21.1942C36.624 20.553 37.2358 20.0034 37.9495 20.0034H68.6393C69.353 20.0034 69.9648 20.553 69.9648 21.1942C69.9648 21.8353 69.353 22.3849 68.6393 22.3849Z" fill="#737373"/>
<path d="M49.6968 29.5294H37.9414C37.2321 29.5294 36.624 28.9799 36.624 28.3387C36.624 27.6975 37.2321 27.1479 37.9414 27.1479H49.5955C50.3049 27.1479 50.9129 27.6975 50.9129 28.3387C50.9129 28.9799 50.3049 29.5294 49.6968 29.5294Z" fill="#737373"/>
<path d="M90.4363 71.2056H54.6499H50.7057H38.7769C38.2959 71.2056 37.8149 71.7017 37.8149 72.3963C37.8149 72.9917 38.1997 73.5871 38.7769 73.5871H50.7057H54.6499H90.4363C90.9173 73.5871 91.3983 73.0909 91.3983 72.3963C91.3021 71.7017 90.9173 71.2056 90.4363 71.2056Z" fill="#737373"/>
<path d="M90.4346 62.8701H77.1351H72.6056H38.7787C38.2968 62.8701 37.8149 63.3663 37.8149 64.0609C37.8149 64.6562 38.2004 65.2516 38.7787 65.2516H72.6056H77.1351H90.4346C90.9165 65.2516 91.3983 64.7555 91.3983 64.0609C91.302 63.3663 90.9165 62.8701 90.4346 62.8701Z" fill="#737373"/>
<path d="M90.5219 54.5352H87.0657H83.6095H38.775C38.295 54.5352 37.8149 55.0313 37.8149 55.7259C37.8149 56.3213 38.199 56.9166 38.775 56.9166H83.6095H87.4497H90.4259C90.9059 56.9166 91.386 56.4205 91.386 55.7259C91.482 55.1305 91.0019 54.5352 90.5219 54.5352Z" fill="#737373"/>
<path d="M90.4466 46.1997H79.3111H76.5511H38.7667C38.2908 46.1997 37.8149 46.6959 37.8149 47.3905C37.8149 47.9858 38.1956 48.5812 38.7667 48.5812H76.5511H79.3111H90.3514C91.0176 48.5812 91.3983 48.0851 91.3983 47.3905C91.3983 46.7951 91.0176 46.1997 90.4466 46.1997Z" fill="#737373"/>
<path d="M91.0478 106.992C102.671 106.992 112.093 97.5698 112.093 85.9468C112.093 74.3237 102.671 64.9014 91.0478 64.9014C79.4248 64.9014 70.0024 74.3237 70.0024 85.9468C70.0024 97.5698 79.4248 106.992 91.0478 106.992Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M92.2581 77.4039C92.3093 77.4659 92.3547 77.533 92.4099 77.5916L97.5979 83.1C98.218 83.7584 98.218 84.9106 97.5979 85.5691C96.9778 86.2275 95.8926 86.2275 95.1949 85.5691L94.5086 84.8639C93.8826 84.2207 92.7919 84.6638 92.7919 85.5613V92.1533C92.7919 93.141 92.0168 93.964 91.0866 93.964C90.1564 93.964 89.3813 93.141 89.3813 92.1533V85.5613C89.3813 84.6638 88.2906 84.2207 87.6646 84.8639L86.9783 85.5691C86.3582 86.2275 85.273 86.2275 84.5753 85.5691C84.1877 85.1576 84.0327 84.746 84.0327 84.3345C84.0327 83.9603 84.1609 83.4499 84.4757 83.1748C84.538 83.1203 84.604 83.0695 84.6608 83.0092L89.8464 77.5034C90.0789 77.2565 90.6215 76.9272 91.0091 76.9272C91.3638 76.9272 91.9781 77.0651 92.2581 77.4039Z" fill="#525252"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,23 +0,0 @@
<svg width="159" height="121" viewBox="0 0 159 121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" fill="#F1F3F9" stroke="#D6DCE8" stroke-width="2" stroke-miterlimit="10"/>
<path d="M148.661 41.3581C151.294 41.3581 153.429 39.2234 153.429 36.5902C153.429 33.9569 151.294 31.8223 148.661 31.8223C146.028 31.8223 143.893 33.9569 143.893 36.5902C143.893 39.2234 146.028 41.3581 148.661 41.3581Z" fill="#525252"/>
<path d="M155.638 22.7515C157.437 22.7515 158.895 21.2937 158.895 19.4954C158.895 17.6971 157.437 16.2393 155.638 16.2393C153.84 16.2393 152.382 17.6971 152.382 19.4954C152.382 21.2937 153.84 22.7515 155.638 22.7515Z" fill="#525252"/>
<path d="M25.9329 21.3506C27.7312 21.3506 29.189 19.8928 29.189 18.0945C29.189 16.2962 27.7312 14.8384 25.9329 14.8384C24.1346 14.8384 22.6768 16.2962 22.6768 18.0945C22.6768 19.8928 24.1346 21.3506 25.9329 21.3506Z" fill="#525252"/>
<path d="M6.0471 84.1479C9.38682 84.1479 12.0942 81.4405 12.0942 78.1008C12.0942 74.7611 9.38682 72.0537 6.0471 72.0537C2.70738 72.0537 0 74.7611 0 78.1008C0 81.4405 2.70738 84.1479 6.0471 84.1479Z" fill="#525252"/>
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" fill="#1f1f1f" stroke="#3c3c3c" stroke-width="2" stroke-miterlimit="10"/>
<path d="M130.215 115.858H31.5791C29.6577 115.858 28.0811 114.282 28.0811 112.36V88.2676C28.0811 86.3461 29.6577 84.7695 31.5791 84.7695H130.215C132.137 84.7695 133.713 86.3461 133.713 88.2676V112.36C133.713 114.282 132.137 115.858 130.215 115.858Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M113.858 96.4461H58.9232C57.7408 96.4461 56.8047 95.7277 56.8047 94.8202C56.8047 93.9127 57.7408 93.1943 58.9232 93.1943H113.858C115.04 93.1943 115.977 93.9127 115.977 94.8202C115.977 95.7277 115.04 96.4461 113.858 96.4461Z" fill="#3c3c3c"/>
<path d="M94.1505 106.349H58.9232C57.7408 106.349 56.8047 105.631 56.8047 104.724C56.8047 103.816 57.7408 103.098 58.9232 103.098H94.1505C95.3329 103.098 96.269 103.816 96.269 104.724C96.269 105.631 95.3329 106.349 94.1505 106.349Z" fill="#3c3c3c"/>
<path d="M42.6649 109.059C47.5083 109.059 51.4347 105.133 51.4347 100.289C51.4347 95.4459 47.5083 91.5195 42.6649 91.5195C37.8214 91.5195 33.895 95.4459 33.895 100.289C33.895 105.133 37.8214 109.059 42.6649 109.059Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.8024 101.024C44.4076 100.632 44.4076 99.9943 44.8024 99.6031L45.4178 98.9931C45.8101 98.6044 45.813 97.9712 45.4242 97.5789V97.5789C45.0354 97.1867 44.4023 97.1838 44.01 97.5726L43.3691 98.2078C42.9793 98.5941 42.351 98.5941 41.9612 98.2078L41.3203 97.5726C40.928 97.1838 40.2948 97.1867 39.9061 97.5789V97.5789C39.5173 97.9712 39.5201 98.6044 39.9124 98.9931L40.5279 99.6031C40.9226 99.9943 40.9226 100.632 40.5279 101.024L39.9124 101.634C39.5201 102.022 39.5173 102.655 39.9061 103.048V103.048C40.2948 103.44 40.928 103.443 41.3203 103.054L41.9612 102.419C42.351 102.033 42.9793 102.033 43.3691 102.419L44.01 103.054C44.4023 103.443 45.0354 103.44 45.4242 103.048V103.048C45.813 102.655 45.8101 102.022 45.4178 101.634L44.8024 101.024Z" fill="#525252"/>
<path d="M133.53 36.5091H34.8936C32.9721 36.5091 31.3955 34.9325 31.3955 33.011V8.9185C31.3955 6.99701 32.9721 5.42041 34.8936 5.42041H133.53C135.451 5.42041 137.028 6.99701 137.028 8.9185V33.011C137.028 34.9325 135.451 36.5091 133.53 36.5091Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M117.172 17.097H62.2377C61.0552 17.097 60.1191 16.3785 60.1191 15.4711C60.1191 14.5636 61.0552 13.8452 62.2377 13.8452H117.172C118.355 13.8452 119.291 14.5636 119.291 15.4711C119.291 16.3785 118.355 17.097 117.172 17.097Z" fill="#3c3c3c"/>
<path d="M97.4649 27.0003H62.2377C61.0552 27.0003 60.1191 26.2819 60.1191 25.3744C60.1191 24.4669 61.0552 23.7485 62.2377 23.7485H97.4649C98.6474 23.7485 99.5835 24.4669 99.5835 25.3744C99.5835 26.2819 98.6474 27.0003 97.4649 27.0003Z" fill="#3c3c3c"/>
<path d="M45.9788 29.7096C50.8223 29.7096 54.7487 25.7832 54.7487 20.9398C54.7487 16.0963 50.8223 12.1699 45.9788 12.1699C41.1354 12.1699 37.209 16.0963 37.209 20.9398C37.209 25.7832 41.1354 29.7096 45.9788 29.7096Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M48.1164 21.6745C47.7216 21.2833 47.7216 20.6452 48.1164 20.254L48.7318 19.644C49.1241 19.2552 49.1269 18.6221 48.7382 18.2298V18.2298C48.3494 17.8375 47.7162 17.8347 47.324 18.2235L46.683 18.8587C46.2932 19.245 45.665 19.245 45.2752 18.8587L44.6342 18.2235C44.242 17.8347 43.6088 17.8375 43.22 18.2298V18.2298C42.8313 18.6221 42.8341 19.2552 43.2264 19.644L43.8418 20.254C44.2366 20.6452 44.2366 21.2833 43.8418 21.6745L43.2264 22.2844C42.8341 22.6732 42.8313 23.3064 43.22 23.6986V23.6986C43.6088 24.0909 44.242 24.0938 44.6342 23.705L45.2752 23.0698C45.665 22.6835 46.2932 22.6835 46.683 23.0698L47.324 23.705C47.7162 24.0938 48.3494 24.0909 48.7382 23.6986V23.6986C49.1269 23.3064 49.1241 22.6732 48.7318 22.2844L48.1164 21.6745Z" fill="#525252"/>
<path d="M118.391 75.9969H19.7056C17.7841 75.9969 16.2075 74.4202 16.2075 72.4988V48.4063C16.2075 46.4848 17.7841 44.9082 19.7056 44.9082H118.342C120.263 44.9082 121.84 46.4848 121.84 48.4063V72.4988C121.889 74.4695 120.313 75.9969 118.391 75.9969Z" fill="#1f1f1f" stroke="#737373" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M30.8407 69.2472C35.6841 69.2472 39.6105 65.3208 39.6105 60.4774C39.6105 55.6339 35.6841 51.7075 30.8407 51.7075C25.9972 51.7075 22.0708 55.6339 22.0708 60.4774C22.0708 65.3208 25.9972 69.2472 30.8407 69.2472Z" fill="#1f1f1f" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M34.9789 57.7183C35.3694 58.1089 35.3694 58.742 34.9789 59.1325L30.1679 63.9436C29.7774 64.3341 29.1442 64.3341 28.7537 63.9436L26.7017 61.8916C26.3112 61.5011 26.3112 60.8679 26.7017 60.4774V60.4774C27.0923 60.0869 27.7254 60.0869 28.1159 60.4774L28.7537 61.1151C29.1442 61.5057 29.7774 61.5057 30.1679 61.1151L33.5647 57.7183C33.9552 57.3278 34.5884 57.3278 34.9789 57.7183V57.7183Z" fill="#525252"/>
<path d="M102.034 56.5852H47.099C45.9166 56.5852 44.9805 55.8668 44.9805 54.9594C44.9805 54.0519 45.9166 53.3335 47.099 53.3335H102.034C103.216 53.3335 104.152 54.0519 104.152 54.9594C104.152 55.8668 103.167 56.5852 102.034 56.5852Z" fill="#3c3c3c"/>
<path d="M82.3263 66.5374H47.099C45.9166 66.5374 44.9805 65.819 44.9805 64.9115C44.9805 64.0041 45.9166 63.2856 47.099 63.2856H82.3263C83.5087 63.2856 84.4448 64.0041 84.4448 64.9115C84.3956 65.819 83.4594 66.5374 82.3263 66.5374Z" fill="#3c3c3c"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -1,12 +0,0 @@
<svg width="119" height="117" viewBox="0 0 119 117" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M52.0114 115.804C80.1842 115.804 103.023 92.8871 103.023 64.6183C103.023 36.3495 80.1842 13.4331 52.0114 13.4331C23.8386 13.4331 1 36.3495 1 64.6183C1 92.8871 23.8386 115.804 52.0114 115.804Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.666 21.9437C111.335 21.3297 111.382 20.2874 110.77 19.6156C110.158 18.9438 109.12 18.8969 108.45 19.5108C107.781 20.1247 107.734 21.167 108.346 21.8389C108.957 22.5107 109.996 22.5576 110.666 21.9437Z" fill="#EAEEF9"/>
<path opacity="0.3" d="M83.4192 41.2399C85.2331 41.2399 86.7036 39.7644 86.7036 37.9443C86.7036 36.1242 85.2331 34.6487 83.4192 34.6487C81.6053 34.6487 80.1348 36.1242 80.1348 37.9443C80.1348 39.7644 81.6053 41.2399 83.4192 41.2399Z" fill="#a3a3a3"/>
<path d="M61.2816 45.5689C60.8718 47.7547 59.0958 49.8039 56.7733 50.3504C54.9973 50.7602 53.2213 50.3504 51.9918 49.3941V65.2414H37.2374C37.7839 64.1485 37.9205 63.0556 37.7839 61.826C37.5106 59.0937 35.1882 56.9079 32.5925 56.6347C29.0405 56.2248 25.8984 58.9571 25.8984 62.5091C25.8984 63.4654 26.035 64.4217 26.4448 65.1048H9.77783V34.6397C9.77783 28.3554 14.8326 23.3007 21.2535 23.3007H51.8552V39.148C52.9481 38.4649 54.041 38.0551 55.2706 38.0551C58.9592 38.6015 61.9647 41.7437 61.2816 45.5689Z" fill="white" stroke="#e5e5e5" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M42.019 85.1871C41.4726 88.8757 44.3415 92.0178 48.0301 92.0178C49.5328 92.0178 50.899 91.4713 51.9919 90.6516V107.045H21.3902C15.1059 107.045 9.91455 101.854 9.91455 95.7064V65.1047H26.4449C26.0351 64.285 25.8985 63.4653 25.8985 62.3724C26.0351 59.5035 28.2209 57.0444 30.9532 56.6346C34.6418 56.2247 37.784 58.957 37.784 62.509C37.784 63.4653 37.6474 64.285 37.2375 65.1047H51.7187V81.4985C50.4891 80.4055 48.8498 79.8591 47.0738 80.1323C44.4781 80.4055 42.4289 82.5914 42.019 85.1871Z" fill="white" stroke="#e5e5e5" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M94.0691 65.1049V95.4333C94.0691 101.718 88.8777 106.772 82.5934 106.772H51.9917V90.3786C50.8988 91.3349 49.5327 91.7447 48.0299 91.7447C44.4779 91.7447 41.7456 88.6026 42.0188 84.914C42.4287 82.1817 44.6145 80.1325 47.0736 79.7226C48.8496 79.586 50.6256 80.1325 51.7185 81.0888V64.695H69.3418C68.7953 65.5147 68.6587 66.471 68.6587 67.4273C68.6587 70.8427 71.6642 73.7116 75.3528 73.3017C78.0851 73.0285 80.4076 70.7061 80.6808 68.1104C80.8174 66.8808 80.5442 65.7879 80.1344 64.695L94.0691 65.1049Z" fill="white" stroke="#e5e5e5" stroke-width="1.5905" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M106.911 52.6728L93.3859 50.3503C93.6591 51.4432 93.7958 52.5362 93.3859 53.6291C92.5662 56.2247 90.1072 58.0007 87.3749 57.8641C83.8229 57.5909 81.2272 54.4488 81.7737 51.0334C81.9103 50.0771 82.3201 49.2574 82.8666 48.5743L65.3799 45.4322L68.1122 29.7215C69.2051 30.8144 70.8445 31.4975 72.7571 31.4975C75.2161 31.3609 77.2654 29.8581 77.9484 27.6723C79.3146 24.1203 76.9921 20.2951 73.3035 19.7486C72.074 19.4754 70.8445 19.7486 69.7516 20.1585L72.4839 4.44775L102.539 9.63912C108.823 10.732 112.922 16.6065 111.829 22.7541L106.911 52.6728Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M113.473 64.1926L118.015 62.8236C118.344 62.7281 118.344 62.2505 118.015 62.155L113.473 60.786C113.356 60.7542 113.271 60.6693 113.24 60.5526L111.871 56.0211C111.775 55.6921 111.297 55.6921 111.202 56.0211L109.833 60.5526C109.801 60.6693 109.716 60.7542 109.6 60.786L105.068 62.155C104.739 62.2505 104.739 62.7281 105.068 62.8236L109.61 64.1926C109.727 64.2244 109.812 64.3093 109.844 64.4261L111.213 68.9682C111.308 69.2971 111.786 69.2971 111.881 68.9682L113.25 64.4261C113.271 64.3093 113.356 64.2244 113.473 64.1926Z" fill="#a3a3a3"/>
<path d="M103.424 24.4522L109.073 22.7495C109.482 22.6307 109.482 22.0367 109.073 21.9179L103.424 20.2152C103.279 20.1756 103.173 20.07 103.133 19.9248L101.431 14.2887C101.312 13.8795 100.718 13.8795 100.599 14.2887L98.8965 19.9248C98.8569 20.07 98.7513 20.1756 98.6061 20.2152L92.97 21.9179C92.5608 22.0367 92.5608 22.6307 92.97 22.7495L98.6193 24.4522C98.7645 24.4918 98.8701 24.5974 98.9097 24.7426L100.612 30.3919C100.731 30.8011 101.325 30.8011 101.444 30.3919L103.147 24.7426C103.173 24.5974 103.279 24.4918 103.424 24.4522Z" fill="#a3a3a3"/>
<path d="M62.357 5.26099L65.1958 4.40543C65.4015 4.34575 65.4015 4.0473 65.1958 3.98761L62.357 3.13205C62.2841 3.11216 62.231 3.0591 62.2111 2.98615L61.3555 0.154199C61.2958 -0.0513995 60.9973 -0.0513995 60.9376 0.154199L60.082 2.98615C60.0621 3.0591 60.009 3.11216 59.9361 3.13205L57.1039 3.98761C56.8983 4.0473 56.8983 4.34575 57.1039 4.40543L59.9427 5.26099C60.0157 5.28088 60.0687 5.33394 60.0886 5.4069L60.9443 8.24548C61.004 8.45107 61.3024 8.45107 61.3621 8.24548L62.2177 5.4069C62.231 5.33394 62.2841 5.28088 62.357 5.26099Z" fill="#a3a3a3"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -1,19 +0,0 @@
<svg width="150" height="126" viewBox="0 0 150 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M84.2755 124.383C117.256 124.383 143.993 97.6453 143.993 64.5472C143.993 31.4491 117.138 4.71155 84.2755 4.71155C51.2952 4.71155 24.5576 31.4491 24.5576 64.5472C24.5576 97.6453 51.2952 124.383 84.2755 124.383Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M139.635 25.4417C142.302 25.4417 144.464 23.2796 144.464 20.6125C144.464 17.9453 142.302 15.7832 139.635 15.7832C136.968 15.7832 134.806 17.9453 134.806 20.6125C134.806 23.2796 136.968 25.4417 139.635 25.4417Z" fill="#f5f5f5"/>
<path d="M146.702 6.59605C148.523 6.59605 150 5.11948 150 3.29803C150 1.47658 148.523 0 146.702 0C144.88 0 143.404 1.47658 143.404 3.29803C143.404 5.11948 144.88 6.59605 146.702 6.59605Z" fill="#f5f5f5"/>
<path d="M27.2663 25.324C29.0877 25.324 30.5643 23.8474 30.5643 22.026C30.5643 20.2045 29.0877 18.728 27.2663 18.728C25.4448 18.728 23.9683 20.2045 23.9683 22.026C23.9683 23.8474 25.4448 25.324 27.2663 25.324Z" fill="#f5f5f5"/>
<path d="M7.12491 88.9292C10.5076 88.9292 13.2498 86.187 13.2498 82.8043C13.2498 79.4216 10.5076 76.6794 7.12491 76.6794C3.74221 76.6794 1 79.4216 1 82.8043C1 86.187 3.74221 88.9292 7.12491 88.9292Z" fill="#f5f5f5"/>
<path d="M128.187 105.12C117.275 116.97 101.64 124.383 84.275 124.383C70.4162 124.383 57.6597 119.662 47.5264 111.731V14.0746C47.5264 10.8443 50.1275 8.20825 53.3724 8.20825H111.37L128.187 25.0838V105.12Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M71.5926 104.186H63.1468C62.8317 104.186 62.5796 103.369 62.5796 102.39C62.5796 101.41 62.8317 100.593 63.1468 100.593H71.5926C71.9078 100.593 72.1599 101.41 72.1599 102.39C72.1599 103.533 71.9078 104.186 71.5926 104.186Z" fill="#D5DDEA"/>
<path d="M90.1779 28.7409H63.7222C63.1069 28.7409 62.5796 27.9119 62.5796 26.9446C62.5796 25.9774 63.1069 25.1483 63.7222 25.1483H90.1779C90.7932 25.1483 91.3205 25.9774 91.3205 26.9446C91.3205 27.9119 90.7932 28.7409 90.1779 28.7409Z" fill="#d4d4d4"/>
<path d="M70.2489 37.1237H63.3525C62.9363 37.1237 62.5796 36.2947 62.5796 35.3274C62.5796 34.3602 62.9363 33.5311 63.3525 33.5311H70.1895C70.6056 33.5311 70.9624 34.3602 70.9624 35.3274C70.9624 36.2947 70.6056 37.1237 70.2489 37.1237Z" fill="#d4d4d4"/>
<path d="M111.994 83.8277H79.203H75.5888H64.6583C64.2176 83.8277 63.7769 84.5762 63.7769 85.624C63.7769 86.5222 64.1295 87.4203 64.6583 87.4203H75.5888H79.203H111.994C112.435 87.4203 112.876 86.6718 112.876 85.624C112.788 84.5762 112.435 83.8277 111.994 83.8277Z" fill="#d4d4d4"/>
<path d="M111.993 74.2474H99.8064H95.6559H64.6599C64.2184 74.2474 63.7769 74.9959 63.7769 76.0437C63.7769 76.9419 64.1301 77.8401 64.6599 77.8401H95.6559H99.8064H111.993C112.434 77.8401 112.876 77.0916 112.876 76.0437C112.788 74.9959 112.434 74.2474 111.993 74.2474Z" fill="#d4d4d4"/>
<path d="M113.251 65.8646H110.007H106.762H64.678C64.2274 65.8646 63.7769 66.6131 63.7769 67.6609C63.7769 68.5591 64.1373 69.4572 64.678 69.4572H106.762H110.367H113.161C113.611 69.4572 114.062 68.7088 114.062 67.6609C114.152 66.7628 113.701 65.8646 113.251 65.8646Z" fill="#d4d4d4"/>
<path d="M113.18 56.2844H102.728H100.137H64.6702C64.2235 56.2844 63.7769 57.0328 63.7769 58.0807C63.7769 58.9788 64.1342 59.877 64.6702 59.877H100.137H102.728H113.091C113.716 59.877 114.073 59.1285 114.073 58.0807C114.073 57.1825 113.716 56.2844 113.18 56.2844Z" fill="#d4d4d4"/>
<path d="M111.37 8.91168V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" fill="#f5f5f5"/>
<path d="M111.37 8.91168V19.7872C111.37 23.1009 114.056 25.7872 117.37 25.7872H128.187" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8988 42.4288V79.5311C70.8988 83.8729 67.3447 87.0305 63.3956 87.0305H62.421C61.8688 87.0305 61.421 87.4782 61.421 88.0305V96.8981C61.421 99.2664 58.6567 100.056 57.077 98.477L47.5035 87.3774C47.3135 87.1571 47.0371 87.0305 46.7462 87.0305H8.50327C4.15928 87.0305 1 83.4782 1 79.5311V42.4288C1 38.0871 4.55418 34.9294 8.50327 34.9294H63.3956C67.3447 34.9294 70.8988 38.4818 70.8988 42.4288Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M19.5605 61.7695V53.8754C19.5605 52.6913 20.3504 51.9019 21.5351 51.9019H30.2231C31.4078 51.9019 32.1976 52.6913 32.1976 53.8754V62.9536C32.1976 65.3218 32.1976 67.2953 31.8027 68.8742C31.4157 70.4216 30.6493 71.2107 29.5035 72.3563C29.457 72.4028 29.4061 72.4451 29.3504 72.4803C28.3636 73.1039 26.8665 73.4756 25.0679 73.8037C24.46 73.9146 23.9046 73.4429 23.9046 72.825V71.3204C23.9046 70.8227 24.274 70.4097 24.7555 70.2839C26.9907 69.7001 28.2485 68.1396 28.2485 65.3218C28.2485 65.3218 28.2485 65.3218 28.2485 65.3218V65.3218C28.2485 65.3218 27.8951 64.5324 27.4591 64.5324H22.2327C22.0353 64.5324 21.8422 64.4743 21.6783 64.3643C20.5832 63.629 19.5605 62.8696 19.5605 61.7695ZM38.9111 61.7695V53.8754C38.9111 52.6913 39.7009 51.9019 40.8856 51.9019H49.5736C50.7583 51.9019 51.5481 52.6913 51.5481 53.8754V62.9536C51.5481 65.3218 51.5481 67.2953 51.1532 68.8742C50.7662 70.4216 49.9998 71.2107 48.8541 72.3563C48.8075 72.4028 48.7566 72.4451 48.7009 72.4803C47.7141 73.1039 46.217 73.4756 44.4184 73.8037C43.8105 73.9146 43.255 73.4429 43.255 72.825V71.3204C43.255 70.8227 43.6244 70.4097 44.106 70.2839C46.3411 69.7001 47.5991 68.1396 47.5991 65.3218C47.5991 65.3218 47.5991 65.3218 47.5991 65.3218V65.3218C47.5991 65.3218 47.2456 64.5324 46.8097 64.5324H41.5832C41.3858 64.5324 41.1927 64.4743 41.0288 64.3643C39.9337 63.629 38.9111 62.8696 38.9111 61.7695Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,26 +0,0 @@
<svg width="165" height="142" viewBox="0 0 165 142" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M85.3227 123.613C119.114 123.613 146.509 96.2184 146.509 62.3067C146.509 28.3949 118.993 1 85.3227 1C51.5316 1 24.1367 28.3949 24.1367 62.3067C24.1367 96.2184 51.5316 123.613 85.3227 123.613Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M154.276 42.8823C157.009 42.8823 159.224 40.667 159.224 37.9343C159.224 35.2016 157.009 32.9863 154.276 32.9863C151.543 32.9863 149.328 35.2016 149.328 37.9343C149.328 40.667 151.543 42.8823 154.276 42.8823Z" fill="#f5f5f5"/>
<path d="M161.516 23.5733C163.383 23.5733 164.895 22.0604 164.895 20.1942C164.895 18.3279 163.383 16.8151 161.516 16.8151C159.65 16.8151 158.137 18.3279 158.137 20.1942C158.137 22.0604 159.65 23.5733 161.516 23.5733Z" fill="#f5f5f5"/>
<path d="M26.9123 22.1192C28.7785 22.1192 30.2914 20.6064 30.2914 18.7401C30.2914 16.8739 28.7785 15.361 26.9123 15.361C25.0461 15.361 23.5332 16.8739 23.5332 18.7401C23.5332 20.6064 25.0461 22.1192 26.9123 22.1192Z" fill="#f5f5f5"/>
<path d="M6.27549 87.288C9.74134 87.288 12.551 84.4784 12.551 81.0126C12.551 77.5467 9.74134 74.7371 6.27549 74.7371C2.80963 74.7371 0 77.5467 0 81.0126C0 84.4784 2.80963 87.288 6.27549 87.288Z" fill="#f5f5f5"/>
<path d="M121.099 107.854H138.619C140.82 107.854 142.706 105.969 142.706 103.769V22.0726C142.706 19.873 140.82 17.9877 138.619 17.9877H121.643" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M51.5361 107.854H34.5596C32.3589 107.854 30.4727 105.969 30.4727 103.769V22.0726C30.4727 19.873 32.3589 17.9877 34.5596 17.9877H51.1864" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M42.2832 34.327H50.7714" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M42.2832 45.3246H50.7714" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M42.2832 56.6365H50.7714" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M42.2832 67.9485H50.7714" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M42.2832 89.9436H50.7714" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M129.816 34.327H121.643" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M129.816 45.3246H121.643" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M129.816 56.6365H121.643" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M129.816 67.9485H121.643" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M129.816 89.9436H121.643" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
<path d="M117.556 114.767H55.3086C53.108 114.767 51.2217 112.881 51.2217 110.682V15.7883C51.2217 13.5888 53.108 11.7035 55.3086 11.7035H117.556C119.756 11.7035 121.643 13.5888 121.643 15.7883V110.682C121.643 112.881 119.756 114.767 117.556 114.767Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.01 42.4468H66.6261C65.683 42.4468 65.0542 41.8773 65.0542 41.0231V37.3217C65.0542 36.4675 65.683 35.898 66.6261 35.898H110.01C110.954 35.898 111.582 36.4675 111.582 37.3217V41.0231C111.582 41.5926 110.954 42.4468 110.01 42.4468Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.01 59.4146H66.6261C65.683 59.4146 65.0542 58.8451 65.0542 57.9909V54.2894C65.0542 53.4352 65.683 52.8658 66.6261 52.8658H110.01C110.954 52.8658 111.582 53.4352 111.582 54.2894V57.9909C111.582 58.8451 110.954 59.4146 110.01 59.4146Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.01 76.6964H66.6261C65.683 76.6964 65.0542 76.127 65.0542 75.2728V71.5713C65.0542 70.7171 65.683 70.1476 66.6261 70.1476H110.01C110.954 70.1476 111.582 70.7171 111.582 71.5713V75.2728C111.582 76.127 110.954 76.6964 110.01 76.6964Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M110.011 94.2926H92.7198C91.7767 94.2926 91.1479 93.7231 91.1479 92.8689V89.1674C91.1479 88.3132 91.7767 87.7438 92.7198 87.7438H110.011C110.954 87.7438 111.583 88.3132 111.583 89.1674V92.8689C111.583 93.7231 110.954 94.2926 110.011 94.2926Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M105.548 125.569C105.155 127.237 104.566 129.003 103.879 130.475C102.015 134.106 99.0712 136.952 95.4405 138.816C91.7116 140.681 87.2959 141.466 82.8801 140.484C72.4786 138.326 65.8059 128.12 67.9647 117.719C70.1235 107.317 80.2307 100.546 90.6322 102.803C94.3611 103.588 97.5993 105.453 100.347 108.004C104.959 112.616 106.921 119.289 105.548 125.569Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M92.8892 118.976H89.4735V115.56C89.4735 114.163 88.377 112.892 86.8053 112.892C85.4087 112.892 84.1371 113.988 84.1371 115.56V118.976H80.7214C79.3248 118.976 78.0532 120.072 78.0532 121.644C78.0532 122.374 78.3129 123.054 78.8122 123.553C79.3116 124.052 79.9912 124.312 80.7214 124.312H84.1371V127.728C84.1371 129.124 85.2337 130.396 86.8053 130.396C88.2019 130.396 89.4735 129.299 89.4735 127.728V124.312H92.8892C94.2858 124.312 95.5574 123.215 95.5574 121.644C95.5574 120.072 94.2858 118.976 92.8892 118.976Z" fill="white" stroke="#a3a3a3" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,38 +0,0 @@
<svg width="123" height="126" viewBox="0 0 123 126" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M64.4237 111.867C91.7974 111.867 113.99 89.6743 113.99 62.2029C113.99 34.7315 91.6996 12.5393 64.4237 12.5393C37.0501 12.5393 14.8579 34.7315 14.8579 62.2029C14.8579 89.6743 37.0501 111.867 64.4237 111.867Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M93.6338 12.5393C83.2422 33.0217 67.9889 41.1701 54.0085 46.036C50.764 47.181 47.2331 48.1828 43.8931 47.3241C40.5531 46.4654 37.6425 43.0783 38.5491 39.7389C39.3602 36.6381 43.3682 35.1115 46.2788 36.3518C49.2371 37.5922 50.8594 41.027 50.5731 44.2232C50.2868 47.4195 48.3305 50.2341 45.8494 52.19C43.3205 54.1459 40.3145 55.3386 37.2608 56.245C30.533 58.2486 23.519 59.2027 16.9821 61.7311C10.3976 64.2595 4.14697 68.7915 1.9044 75.4225C0.282106 80.1453 0.950108 85.4883 3.04954 89.9726C5.14898 94.4569 8.72756 98.2256 12.7356 101.231C18.8907 105.811 26.4773 108.673 34.1116 108.482C41.7459 108.291 49.4757 104.952 54.1994 98.9412C58.9231 92.9304 60.3068 84.2003 56.9668 77.283C54.6765 72.5125 49.4757 68.6006 44.2748 69.7456C40.1714 70.6997 37.1653 74.7069 36.7359 78.9527C36.3065 83.1985 38.1673 87.3965 40.9348 90.5451C43.7022 93.7413 47.3762 95.9835 51.1934 97.9394C56.776 100.754 63.3606 102.901 69.134 100.515C74.6212 98.2733 77.818 92.5964 79.9175 87.1103C82.0169 81.6242 83.5915 75.661 87.4086 71.129C91.9892 65.6906 99.7189 63.1622 106.638 64.7842C113.556 66.4062 119.377 72.1308 121.095 79.0004C122.431 84.3434 120.809 91.0221 115.799 93.3597C111.886 95.2202 107.067 93.8845 103.679 91.213C100.292 88.5415 98.0012 84.725 95.8064 81.004" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4 4"/>
<path d="M55.1784 35.3718C63.5321 38.1997 72.5966 33.7202 75.4245 25.3665C78.2524 17.0128 73.7729 7.94831 65.4192 5.1204C57.0655 2.29248 48.001 6.77201 45.1731 15.1257C42.3451 23.4794 46.8247 32.5439 55.1784 35.3718Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M56.1375 32.5375C62.9259 34.8355 70.2919 31.1953 72.5899 24.407C74.8879 17.6186 71.2478 10.2526 64.4594 7.95462C57.671 5.65661 50.3051 9.29676 48.007 16.0851C45.709 22.8735 49.3492 30.2395 56.1375 32.5375Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M59.7561 21.8493C60.6415 22.149 61.6023 21.6742 61.902 20.7888C62.2018 19.9033 61.7269 18.9425 60.8415 18.6428C59.9561 18.3431 58.9953 18.8179 58.6956 19.7033C58.3958 20.5887 58.8706 21.5495 59.7561 21.8493Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M63.0122 12.2299L60.6604 19.1772" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M62.083 20.2543L66.1857 20.4519" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M64.0744 10.77C64.3349 10.6458 64.433 10.3214 64.2934 10.0455C64.1538 9.76957 63.8294 9.64658 63.5689 9.77078C63.3084 9.89498 63.2103 10.2193 63.3499 10.4953C63.4895 10.7712 63.8139 10.8942 64.0744 10.77Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M57.3166 30.7046C57.5771 30.5803 57.6752 30.256 57.5356 29.9801C57.396 29.7041 57.0716 29.5811 56.8111 29.7053C56.5506 29.8296 56.4525 30.1539 56.5921 30.4298C56.7317 30.7058 57.0561 30.8288 57.3166 30.7046Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M50.7199 17.3825C50.9804 17.2583 51.0785 16.9339 50.9389 16.658C50.7993 16.3821 50.4749 16.2591 50.2144 16.3833C49.9539 16.5075 49.8558 16.8319 49.9954 17.1078C50.135 17.3837 50.4594 17.5067 50.7199 17.3825Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M70.6545 24.1403C70.915 24.0161 71.0131 23.6917 70.8735 23.4158C70.7339 23.1399 70.4095 23.0169 70.149 23.1411C69.8884 23.2653 69.7904 23.5897 69.93 23.8656C70.0696 24.1415 70.394 24.2645 70.6545 24.1403Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M12.3005 40.098L14.9425 39.3017C15.1339 39.2461 15.1339 38.9684 14.9425 38.9128L12.3005 38.1165C12.2326 38.098 12.1832 38.0486 12.1647 37.9807L11.3684 35.3449C11.3128 35.1535 11.0351 35.1535 10.9795 35.3449L10.1832 37.9807C10.1647 38.0486 10.1153 38.098 10.0474 38.1165L7.41159 38.9128C7.22023 38.9684 7.22023 39.2461 7.41159 39.3017L10.0536 40.098C10.1215 40.1165 10.1709 40.1659 10.1894 40.2338L10.9857 42.8758C11.0412 43.0672 11.319 43.0672 11.3746 42.8758L12.1709 40.2338C12.1832 40.1659 12.2326 40.1165 12.3005 40.098Z" fill="#d4d4d4"/>
<path d="M96.5557 9.17318L99.2576 9.7335C99.4523 9.77595 99.5848 9.5318 99.4431 9.3917L97.5008 7.43162C97.45 7.38296 97.4301 7.316 97.4463 7.24748L98.0036 4.55101C98.0461 4.35632 97.8019 4.22382 97.6618 4.36551L95.7047 6.30233C95.656 6.35318 95.5891 6.37303 95.5206 6.35692L92.8241 5.79954C92.6294 5.75709 92.4969 6.00123 92.6386 6.14134L94.5808 8.10142C94.6317 8.15008 94.6515 8.21704 94.6354 8.28555L94.0751 10.9875C94.0326 11.1821 94.2768 11.3146 94.4169 11.1729L96.377 9.2307C96.4202 9.17691 96.4872 9.15706 96.5557 9.17318Z" fill="#d4d4d4"/>
<path d="M94.8952 76.0131L96.9595 74.182C97.1099 74.0513 96.9933 73.7991 96.7963 73.829L94.064 74.2144C93.9946 74.2261 93.9291 74.202 93.8838 74.1481L92.0553 72.0896C91.9246 71.9392 91.6724 72.0557 91.7023 72.2527L92.085 74.9793C92.0967 75.0487 92.0726 75.1143 92.0187 75.1596L89.96 76.9881C89.8096 77.1188 89.9262 77.3709 90.1232 77.3411L92.8555 76.9556C92.9249 76.9439 92.9904 76.9681 93.0357 77.0219L94.8668 79.0861C94.9975 79.2365 95.2497 79.1199 95.2198 78.9229L94.8345 76.1907C94.8172 76.1239 94.8413 76.0584 94.8952 76.0131Z" fill="#d4d4d4"/>
<path d="M73.8716 57.326L76.1834 56.6293C76.3508 56.5807 76.3508 56.3376 76.1834 56.289L73.8716 55.5923C73.8122 55.5761 73.769 55.5329 73.7528 55.4735L73.0561 53.1673C73.0074 52.9998 72.7644 52.9998 72.7158 53.1673L72.019 55.4735C72.0028 55.5329 71.9596 55.5761 71.9002 55.5923L69.5938 56.289C69.4264 56.3376 69.4264 56.5807 69.5938 56.6293L71.9056 57.326C71.965 57.3422 72.0082 57.3854 72.0244 57.4448L72.7212 59.7564C72.7698 59.9239 73.0128 59.9239 73.0615 59.7564L73.7582 57.4448C73.769 57.3854 73.8122 57.3422 73.8716 57.326Z" fill="#d4d4d4"/>
<path d="M29.5118 89.7616L31.8235 88.9653C31.991 88.9097 31.991 88.6319 31.8235 88.5764L29.5118 87.7801C29.4524 87.7616 29.4092 87.7122 29.393 87.6443L28.6962 85.0084C28.6476 84.8171 28.4045 84.8171 28.3559 85.0084L27.6591 87.6443C27.6429 87.7122 27.5997 87.7616 27.5403 87.7801L25.234 88.5764C25.0665 88.6319 25.0665 88.9097 25.234 88.9653L27.5457 89.7616C27.6051 89.7801 27.6483 89.8295 27.6646 89.8974L28.3613 92.5394C28.4099 92.7307 28.653 92.7307 28.7016 92.5394L29.3984 89.8974C29.4092 89.8295 29.4524 89.7801 29.5118 89.7616Z" fill="#d4d4d4"/>
<path d="M25.6922 50.6717L27.3434 50.1741C27.463 50.1394 27.463 49.9658 27.3434 49.931L25.6922 49.4334C25.6497 49.4218 25.6188 49.391 25.6073 49.3485L25.1096 47.7013C25.0749 47.5817 24.9013 47.5817 24.8665 47.7013L24.3688 49.3485C24.3573 49.391 24.3264 49.4218 24.284 49.4334L22.6366 49.931C22.517 49.9658 22.517 50.1394 22.6366 50.1741L24.2878 50.6717C24.3303 50.6833 24.3611 50.7142 24.3727 50.7566L24.8704 52.4077C24.9051 52.5273 25.0787 52.5273 25.1134 52.4077L25.6111 50.7566C25.6188 50.7142 25.6497 50.6833 25.6922 50.6717Z" fill="#d4d4d4"/>
<path d="M120.831 51.7623L122.482 51.2647C122.602 51.2299 122.602 51.0563 122.482 51.0216L120.831 50.524C120.788 50.5124 120.758 50.4815 120.746 50.4391L120.248 48.7918C120.214 48.6723 120.04 48.6723 120.005 48.7918L119.508 50.4391C119.496 50.4815 119.465 50.5124 119.423 50.524L117.775 51.0216C117.656 51.0563 117.656 51.2299 117.775 51.2647L119.426 51.7623C119.469 51.7739 119.5 51.8047 119.511 51.8472L120.009 53.4983C120.044 53.6179 120.217 53.6179 120.252 53.4983L120.75 51.8472C120.758 51.8047 120.788 51.7739 120.831 51.7623Z" fill="#d4d4d4"/>
<path d="M37.8972 27.6538L39.5485 27.1561C39.6681 27.1214 39.6681 26.9478 39.5485 26.9131L37.8972 26.4154C37.8548 26.4038 37.8239 26.373 37.8124 26.3305L37.3147 24.6833C37.2799 24.5637 37.1063 24.5637 37.0716 24.6833L36.5739 26.3305C36.5623 26.373 36.5315 26.4038 36.489 26.4154L34.8417 26.9131C34.7221 26.9478 34.7221 27.1214 34.8417 27.1561L36.4929 27.6538C36.5353 27.6653 36.5662 27.6962 36.5778 27.7386L37.0755 29.3897C37.1102 29.5093 37.2838 29.5093 37.3185 29.3897L37.8162 27.7386C37.8239 27.6962 37.8548 27.6653 37.8972 27.6538Z" fill="#d4d4d4"/>
<path d="M13.3069 83.1034L14.9581 82.6057C15.0777 82.571 15.0777 82.3974 14.9581 82.3627L13.3069 81.865C13.2645 81.8535 13.2336 81.8226 13.222 81.7802L12.7243 80.1329C12.6896 80.0133 12.516 80.0133 12.4813 80.1329L11.9836 81.7802C11.972 81.8226 11.9411 81.8535 11.8987 81.865L10.2513 82.3627C10.1317 82.3974 10.1317 82.571 10.2513 82.6057L11.9026 83.1034C11.945 83.1149 11.9759 83.1458 11.9874 83.1882L12.4851 84.8394C12.5199 84.9589 12.6935 84.9589 12.7282 84.8394L13.2259 83.1882C13.2336 83.1458 13.2645 83.1149 13.3069 83.1034Z" fill="#d4d4d4"/>
<path d="M58.6922 57.5908L61.979 62.276C62.9181 63.6147 63.5603 64.7336 64.0498 66.2449C65.8824 71.0943 65.1988 76.4247 62.6771 80.7618C62.209 81.5182 61.9707 82.3988 62.0863 83.1737C62.1063 84.0157 62.356 84.9819 62.8927 85.7468C63.9659 87.2767 65.7655 88.0117 67.5737 87.7419C73.3808 86.6644 79.3534 88.4668 83.4436 92.8737C83.9417 93.3804 84.3442 93.9541 84.8137 94.6234L88.1005 99.3087C88.5029 99.8824 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.642 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.761 55.8413 95.8297C56.7775 94.3169 56.6319 92.2789 55.5586 90.7491C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.115 53.4136 89.115C52.6287 88.8096 51.7867 88.8296 50.9447 88.8496C47.0414 89.5903 43.0411 88.9724 39.4319 87.0815C38.5128 86.5849 37.5937 86.0882 36.7988 85.3618C36.569 85.2377 36.3678 84.9508 36.2336 84.7596C35.3716 83.9375 34.4425 83.0199 33.7047 81.9681L30.4179 77.2828C30.3508 77.1872 30.2167 76.996 30.0825 76.8047L58.3854 56.95C58.491 57.3039 58.5581 57.3995 58.6922 57.5908Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M74.5356 102.547C74.5356 102.547 64.4216 111.925 63.7422 111.973C63.2927 112.146 59.3138 113.796 56.7792 114.861L56.1085 113.904C55.7731 113.426 55.4377 112.948 55.1309 112.308C55.255 112.078 55.3121 111.752 55.3692 111.427C56.6664 107.378 60.698 101.126 69.1952 101.442L74.5356 102.547Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M58.6922 57.5908L61.979 62.276C62.9181 63.6147 63.5603 64.7336 64.0498 66.2449C65.8824 71.0943 65.1988 76.4247 62.6771 80.7618C62.209 81.5182 61.9707 82.3988 62.0863 83.1737C62.1063 84.0157 62.356 84.9819 62.8927 85.7468C63.9659 87.2767 65.7655 88.0117 67.5737 87.7419C73.3808 86.6644 79.3534 88.4668 83.4436 92.8737C83.9417 93.3804 84.3442 93.9541 84.8137 94.6234L88.1005 99.3087C88.5029 99.8824 88.8098 100.523 89.1452 101.001L61.0335 120.722C60.6025 120.311 60.133 119.642 59.7976 119.163L56.5108 114.478C56.1754 114 55.9357 113.455 55.6003 112.977C55.4661 112.786 55.3605 112.432 55.1593 112.145C52.5704 106.827 52.88 100.761 55.8413 95.8297C56.7775 94.3169 56.6319 92.2789 55.5586 90.7491C55.0891 90.0797 54.3612 89.4489 53.5763 89.1435C53.5092 89.0479 53.4136 89.115 53.4136 89.115C52.6287 88.8096 51.7867 88.8296 50.9447 88.8496C47.0414 89.5903 43.0411 88.9724 39.4319 87.0815C38.5128 86.5849 37.5937 86.0882 36.7988 85.3618C36.569 85.2377 36.3678 84.9508 36.2336 84.7596C35.3716 83.9375 34.4425 83.0199 33.7047 81.9681L30.4179 77.2828C30.3508 77.1872 30.2167 76.996 30.0825 76.8047L58.3854 56.95C58.491 57.3039 58.5581 57.3995 58.6922 57.5908Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M56.5304 77.0842L45.3631 85.7742L39.5946 87.1101C38.6755 86.6134 37.7565 86.1168 36.9615 85.3904C36.7318 85.2662 36.5305 84.9794 36.3964 84.7881C39.4818 79.6276 42.3203 76.3522 50.5763 74.6981C51.9635 74.4383 53.2551 74.2456 54.805 74.0144C68.6011 72.3259 56.5304 77.0842 56.5304 77.0842Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M64.1171 66.3405C65.9496 71.1899 65.266 76.5203 62.7443 80.8574C62.2762 81.6138 62.0379 82.4944 62.1535 83.2693L62.0579 83.3364C60.528 84.4096 60.1284 86.6873 61.2017 88.2172L71.1961 102.464L68.4232 104.41L58.3617 90.0668C57.2885 88.537 55.1063 88.0703 53.4808 89.2106C52.6959 88.9052 51.8539 88.9252 51.0119 88.9452C47.1086 89.6859 43.1084 89.068 39.4991 87.1771C38.58 86.6805 37.6609 86.1838 36.866 85.4574C45.3803 83.7647 48.2459 78.901 50.4523 74.9278C51.1687 73.7119 51.7895 72.563 52.4773 71.5098C55.2003 67.4595 59.2177 66.068 64.1171 66.3405Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M84.7178 94.6904L88.0046 99.3757C88.407 99.9494 88.7139 100.59 89.0493 101.068L63.9974 118.642L59.3949 118.59L56.4435 114.383C56.1081 113.904 55.7727 113.426 55.5329 112.881C55.3988 112.69 55.2932 112.336 55.0919 112.049C55.1876 111.982 55.2546 112.078 55.3503 112.011C55.513 112.039 55.6086 111.972 55.7042 111.905C65.022 109.934 67.5137 104.334 69.8727 99.9682C70.2452 99.2789 70.7133 98.5225 71.1528 97.9288C74.0385 93.9071 78.2186 92.5441 83.2807 92.8452C83.7502 93.5145 84.2483 94.0211 84.7178 94.6904Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M60.9889 57.4062L29.6263 79.4074C28.957 79.8769 27.9808 79.7057 27.5783 79.132L25.4319 76.0722C24.9623 75.4029 25.2007 74.5223 25.87 74.0528L57.3282 51.9845C57.9976 51.515 58.9067 51.5906 59.3762 52.2599L61.4556 55.2241C61.7339 56.0275 61.6583 56.9366 60.9889 57.4062Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M92.6489 102.538L61.2863 124.54C60.6169 125.009 59.7078 124.933 59.2383 124.264L57.1589 121.3C56.6894 120.631 56.9277 119.75 57.597 119.281L89.0553 97.2122C89.7246 96.7427 90.6337 96.8183 91.1032 97.4876L93.1826 100.452C93.4609 101.255 93.3182 102.069 92.6489 102.538Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6049L109.875 38.2695C109.466 39.0309 109.09 39.5998 108.492 40.1898C106.636 42.2065 103.956 43.149 101.309 42.9874C100.841 42.9459 100.368 43.0423 100.03 43.2809C99.6367 43.4902 99.2396 43.8375 99.0057 44.2726C98.5378 45.1427 98.6179 46.1672 99.1745 46.9572C101.062 49.4443 101.628 52.6932 100.518 55.6713C100.397 56.0269 100.221 56.3531 100.017 56.7338L98.5837 59.3985C98.4083 59.7247 98.1785 60.0218 98.0323 60.2937L82.0444 51.6968C82.1362 51.3956 82.3409 51.015 82.4871 50.7431L83.9199 48.0784C84.0661 47.8065 84.2667 47.5639 84.4129 47.292C84.4714 47.1832 84.6135 47.0493 84.7012 46.8861C86.5983 44.401 89.5374 43.1072 92.5693 43.3354C93.5061 43.4185 94.4341 42.866 94.902 41.9959C95.1067 41.6152 95.2319 41.1217 95.1898 40.6784C95.219 40.624 95.1646 40.5948 95.1646 40.5948C95.1226 40.1516 94.9132 39.7586 94.7039 39.3656C93.4275 37.6978 92.7698 35.6616 92.8062 33.508C92.8226 32.956 92.839 32.404 92.9934 31.8561C92.9975 31.7181 93.0852 31.5549 93.1437 31.4462C93.3274 30.8439 93.5402 30.1872 93.8619 29.589L95.2947 26.9244C95.324 26.87 95.3824 26.7612 95.4409 26.6525L111.538 35.3078C111.395 35.4417 111.366 35.4961 111.308 35.6049Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M93.8341 53.76C93.8341 53.76 87.0037 51.2089 86.8196 50.8995C86.6313 50.7282 84.9075 49.2404 83.803 48.296L84.0954 47.7522C84.2416 47.4803 84.3878 47.2084 84.6176 46.9113C84.7556 46.9154 84.9229 46.8652 85.0901 46.8149C87.3104 46.4665 91.2207 46.8866 93.0881 50.9753L93.8341 53.76Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.308 35.6049L109.875 38.2695C109.466 39.0309 109.09 39.5998 108.492 40.1898C106.636 42.2065 103.956 43.149 101.309 42.9874C100.841 42.9459 100.368 43.0423 100.03 43.2809C99.6367 43.4902 99.2396 43.8375 99.0057 44.2726C98.5378 45.1427 98.6179 46.1672 99.1745 46.9572C101.062 49.4443 101.628 52.6932 100.518 55.6713C100.397 56.0269 100.221 56.3531 100.017 56.7338L98.5837 59.3985C98.4083 59.7247 98.1785 60.0218 98.0323 60.2937L82.0444 51.6968C82.1362 51.3956 82.3409 51.015 82.4871 50.7431L83.9199 48.0784C84.0661 47.8065 84.2667 47.5639 84.4129 47.292C84.4714 47.1832 84.6135 47.0493 84.7012 46.8861C86.5983 44.401 89.5374 43.1072 92.5693 43.3354C93.5061 43.4185 94.4341 42.866 94.902 41.9959C95.1067 41.6152 95.2319 41.1217 95.1898 40.6784C95.219 40.624 95.1646 40.5948 95.1646 40.5948C95.1226 40.1516 94.9132 39.7586 94.7039 39.3656C93.4275 37.6978 92.7698 35.6616 92.8062 33.508C92.8226 32.956 92.839 32.404 92.9934 31.8561C92.9975 31.7181 93.0852 31.5549 93.1437 31.4462C93.3274 30.8439 93.5402 30.1872 93.8619 29.589L95.2947 26.9244C95.324 26.87 95.3824 26.7612 95.4409 26.6525L111.538 35.3078C111.395 35.4417 111.366 35.4961 111.308 35.6049Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M101.587 39.2111L94.8318 35.9992L92.8315 33.5916C92.8479 33.0396 92.8643 32.4876 93.0187 31.9397C93.0228 31.8017 93.1105 31.6386 93.169 31.5298C96.339 31.7622 98.5598 32.3254 101.301 35.8324C101.753 36.4259 102.151 36.9902 102.628 37.6674C106.7 43.783 101.587 39.2111 101.587 39.2111Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="1.9781" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M108.462 40.2442C106.607 42.2609 103.927 43.2034 101.28 43.0418C100.811 43.0003 100.339 43.0967 100 43.3353L99.9459 43.3061C99.0758 42.8382 97.9051 43.1901 97.4372 44.0602L93.0803 52.1629L91.5033 51.315L95.8894 43.1579C96.3573 42.2878 96.0597 41.1463 95.1353 40.6492C95.0932 40.206 94.8839 39.813 94.6745 39.42C93.3981 37.7522 92.7404 35.7161 92.7768 33.5624C92.7932 33.0104 92.8096 32.4584 92.964 31.9105C95.7847 35.5303 98.7622 35.7293 101.163 35.8283C101.907 35.878 102.597 35.8985 103.258 35.9734C105.817 36.2981 107.428 37.8654 108.462 40.2442Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M99.9622 56.7046L98.5294 59.3693C98.354 59.6955 98.1241 59.9926 97.9779 60.2645L83.7302 52.6033L82.6626 50.4168L83.9492 48.0241C84.0954 47.7522 84.2416 47.4803 84.4422 47.2376C84.5007 47.1289 84.6428 46.995 84.7305 46.8318C84.7849 46.8611 84.7556 46.9154 84.81 46.9447C84.8352 47.0283 84.8895 47.0575 84.9439 47.0868C88.0867 51.02 91.3234 50.8676 93.9454 50.9456C94.3594 50.9579 94.8278 50.9994 95.2126 51.0661C97.7972 51.4744 99.4332 53.1253 100.493 55.5878C100.288 55.9684 100.167 56.3239 99.9622 56.7046Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.939 36.6458L94.1026 27.0547C93.722 26.85 93.5711 26.3483 93.7466 26.022L94.6823 24.2818C94.887 23.9012 95.3595 23.8047 95.7402 24.0094L113.631 33.6297C114.012 33.8344 114.192 34.2818 113.987 34.6625L113.081 36.3482C112.767 36.6704 112.32 36.8505 111.939 36.6458Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M98.1382 62.3134L80.3013 52.7223C79.9207 52.5176 79.7406 52.0703 79.9453 51.6896L80.8517 50.0038C81.0564 49.6232 81.5289 49.5267 81.9096 49.7314L99.8008 59.3517C100.181 59.5564 100.362 60.0038 100.157 60.3844L99.2504 62.0702C98.9369 62.3924 98.5188 62.5181 98.1382 62.3134Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,22 +0,0 @@
<svg width="144" height="118" viewBox="0 0 144 118" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M71.915 116.003C103.558 116.003 129.168 90.2405 129.168 58.455C129.168 26.6694 103.558 1 71.915 1C40.3653 1 14.6616 26.7621 14.6616 58.5476C14.6616 90.3332 40.3653 116.003 71.915 116.003Z" fill="#f5f5f5" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M6.40267 71.9221C8.53691 71.9221 10.2072 70.2541 10.2072 68.1227C10.2072 65.9913 8.53691 64.3232 6.40267 64.3232C4.26842 64.3232 2.59814 65.9913 2.59814 68.1227C2.59814 70.2541 4.36122 71.9221 6.40267 71.9221Z" fill="#f5f5f5"/>
<path d="M2.59821 59.5971C3.99011 59.5971 5.19642 58.3924 5.19642 57.0023C5.19642 55.6123 3.99011 54.4076 2.59821 54.4076C1.20631 54.4076 0 55.6123 0 57.0023C0 58.485 1.20631 59.5971 2.59821 59.5971Z" fill="#f5f5f5"/>
<path d="M138.726 81.467C141.417 81.467 143.551 79.3356 143.551 76.6482C143.551 73.9608 141.417 71.8294 138.726 71.8294C136.035 71.8294 133.9 73.9608 133.9 76.6482C133.9 79.3356 136.035 81.467 138.726 81.467Z" fill="#f5f5f5"/>
<circle cx="70.6176" cy="28.6048" r="2.23823" fill="#C4C4C4"/>
<path d="M113.372 106.197H29.3551C26.224 106.197 23.6147 103.61 23.6147 100.505V15.6448C23.6147 12.5401 26.224 9.95294 29.3551 9.95294H113.372C116.503 9.95294 119.113 12.5401 119.113 15.6448V100.505C119.113 103.61 116.503 106.197 113.372 106.197Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M70.8772 42.0342C77.4699 42.0342 82.8144 36.6897 82.8144 30.0969C82.8144 23.5042 77.4699 18.1597 70.8772 18.1597C64.2844 18.1597 58.9399 23.5042 58.9399 30.0969C58.9399 36.6897 64.2844 42.0342 70.8772 42.0342Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M70.8773 30.8431C73.3496 30.8431 75.3538 28.8389 75.3538 26.3667C75.3538 23.8944 73.3496 21.8902 70.8773 21.8902C68.4051 21.8902 66.4009 23.8944 66.4009 26.3667C66.4009 28.8389 68.4051 30.8431 70.8773 30.8431Z" fill="#a3a3a3"/>
<path d="M79.8302 38.3074C77.6656 40.6044 74.6218 42.0341 71.2503 42.0341C67.8788 42.0341 64.8349 40.6044 62.6704 38.3074C63.8656 34.8374 67.2553 32.3351 71.2503 32.3351C75.2452 32.3351 78.635 34.8374 79.8302 38.3074Z" fill="#a3a3a3"/>
<path d="M103.388 60.6861H38.5928C37.8184 60.6861 37.0439 59.8253 37.0439 58.9644V51.2167C37.0439 50.3558 37.8184 49.495 38.5928 49.495H103.388C104.162 49.495 104.937 50.3558 104.937 51.2167V58.9644C104.937 59.8253 104.162 60.6861 103.388 60.6861Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M103.388 77.0998H38.5928C37.8184 77.0998 37.0439 76.2389 37.0439 75.3781V67.6303C37.0439 66.7695 37.8184 65.9086 38.5928 65.9086H103.388C104.162 65.9086 104.937 66.7695 104.937 67.6303V75.3781C104.937 76.2389 104.162 77.0998 103.388 77.0998Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M103.325 83.8145H79.6896C78.8839 83.8145 78.0781 84.4289 78.0781 85.6577V92.4163C78.0781 93.3379 78.6153 94.2595 79.6896 94.2595H103.325C104.131 94.2595 104.937 93.6451 104.937 92.4163V85.6577C104.937 84.6849 104.131 83.8145 103.325 83.8145Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M97.9375 88.291H85.8239C85.3084 88.291 84.793 88.664 84.793 89.037C84.793 89.4101 85.3084 89.7831 85.8239 89.7831H97.9375C98.453 89.7831 98.9684 89.4101 98.9684 89.037C98.9684 88.4775 98.453 88.291 97.9375 88.291Z" fill="#a3a3a3"/>
<rect x="41.5205" y="53.9714" width="29.097" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="41.5205" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="45.9971" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="50.4736" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="54.9497" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="58.6802" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
<rect x="63.1567" y="70.3851" width="2.23823" height="2.23823" rx="1.11911" fill="#a3a3a3"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -1,39 +0,0 @@
<svg width="146" height="120" viewBox="0 0 146 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M131.648 59.7265C131.648 72.9542 127.219 85.3837 119.837 95.1904C115.748 100.55 110.865 105.225 105.187 108.874C96.1015 114.918 85.0856 118.339 73.3883 118.339C41.2491 118.453 15.1289 92.2256 15.1289 59.7265C15.1289 27.3414 41.1355 1 73.3883 1C85.0856 1 95.9879 4.42096 105.187 10.4647C110.865 14.1137 115.748 18.789 119.837 24.1485C127.219 34.0693 131.648 46.3847 131.648 59.7265Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M29.0195 51.8744H28.3162C27.7887 51.8744 27.437 51.7103 27.437 51.4641C27.437 51.2179 27.7887 51.0538 28.3162 51.0538H29.0195C29.547 51.0538 29.8987 51.2179 29.8987 51.4641C29.8987 51.7103 29.547 51.8744 29.0195 51.8744Z" fill="#2D5887"/>
<path d="M29.0195 55.1566H28.3162C27.7887 55.1566 27.437 54.9925 27.437 54.7463C27.437 54.5002 27.7887 54.3361 28.3162 54.3361H29.0195C29.547 54.3361 29.8987 54.5002 29.8987 54.7463C29.8987 54.9925 29.547 55.1566 29.0195 55.1566Z" fill="#2D5887"/>
<path d="M29.0195 58.4388H28.3162C27.7887 58.4388 27.437 58.2747 27.437 58.0286C27.437 57.7824 27.7887 57.6183 28.3162 57.6183H29.0195C29.547 57.6183 29.8987 57.7824 29.8987 58.0286C29.8987 58.2747 29.547 58.4388 29.0195 58.4388Z" fill="#2D5887"/>
<path d="M29.0195 61.7211H28.3162C27.7887 61.7211 27.437 61.557 27.437 61.3108C27.437 61.0646 27.7887 60.9005 28.3162 60.9005H29.0195C29.547 60.9005 29.8987 61.0646 29.8987 61.3108C29.8987 61.557 29.547 61.7211 29.0195 61.7211Z" fill="#2D5887"/>
<path d="M61.1189 51.8744H49.553C49.0841 51.8744 48.7715 51.7103 48.7715 51.4641C48.7715 51.2179 49.0841 51.0538 49.553 51.0538H61.1189C61.5878 51.0538 61.9004 51.2179 61.9004 51.4641C61.9004 51.7103 61.5878 51.8744 61.1189 51.8744Z" fill="white"/>
<path d="M85.7621 61.7211H49.5264C49.0734 61.7211 48.7715 61.557 48.7715 61.3108C48.7715 61.0646 49.0734 60.9005 49.5264 60.9005H85.7621C86.215 60.9005 86.517 61.0646 86.517 61.3108C86.517 61.557 86.215 61.7211 85.7621 61.7211Z" fill="url(#paint0_linear)"/>
<path d="M61.1642 55.1566H45.4053C44.9635 55.1566 44.6689 54.9925 44.6689 54.7463C44.6689 54.5002 44.9635 54.3361 45.4053 54.3361H61.1642C61.606 54.3361 61.9006 54.5002 61.9006 54.7463C61.9006 54.9925 61.606 55.1566 61.1642 55.1566Z" fill="#2D5887"/>
<path d="M73.4741 58.4388H45.4038C44.9629 58.4388 44.6689 58.2747 44.6689 58.0286C44.6689 57.7824 44.9629 57.6183 45.4038 57.6183H73.4741C73.915 57.6183 74.2089 57.7824 74.2089 58.0286C74.0619 58.2747 73.768 58.4388 73.4741 58.4388Z" fill="#2D5887"/>
<path d="M85.7181 58.4388H75.0082C74.5287 58.4388 74.209 58.2747 74.209 58.0286C74.209 57.7824 74.5287 57.6183 75.0082 57.6183H85.7181C86.1976 57.6183 86.5173 57.7824 86.5173 58.0286C86.5173 58.2747 86.1976 58.4388 85.7181 58.4388Z" fill="white"/>
<path d="M92.3056 58.4388H88.1141C87.6484 58.4388 87.3379 58.2747 87.3379 58.0286C87.3379 57.7824 87.6484 57.6183 88.1141 57.6183H92.3056C92.7713 57.6183 93.0818 57.7824 93.0818 58.0286C93.0818 58.2747 92.7713 58.4388 92.3056 58.4388Z" fill="url(#paint1_linear)"/>
<path d="M2 103.569H139.853" stroke="#D6DEE8" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M98.8252 51.0538V103.569H24.3713C21.4342 103.569 19.2314 101.209 19.2314 98.4063V51.0538H98.8252Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M128.366 51.0538V98.4063C128.366 101.357 125.917 103.569 123.009 103.569H98.8257V51.0538H128.366Z" fill="#DAE1ED"/>
<path d="M128.366 51.0538V98.4063C128.366 101.357 125.917 103.569 123.009 103.569H98.8257V51.0538H128.366Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M47.9512 51.0538L63.6074 26.4372H143.956L127.857 51.0538H47.9512Z" fill="#C5CDDB"/>
<path d="M47.9512 51.0538L63.6074 26.4372H143.956L127.857 51.0538H47.9512Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path opacity="0.3" d="M128.366 51.1976V78.9527H106.826C104.826 78.9527 103.441 77.6584 103.134 75.7889L98.8257 51.0538L128.366 51.1976Z" fill="url(#paint2_linear)"/>
<path d="M127.747 51.0538H98.8257L113.511 73.312C114.56 74.786 116.208 75.6705 117.857 75.6705H140.334C141.833 75.6705 142.882 73.9016 141.982 72.7224L127.747 51.0538Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M98.8254 51.0538L83.0597 26.4372H2L18.3607 51.0538H98.8254Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M58.9543 81.4144H27.9218C27.1967 81.4144 26.6167 80.8673 26.6167 80.1835C26.6167 79.4997 27.1967 78.9527 27.9218 78.9527H58.9543C59.6794 78.9527 60.2594 79.4997 60.2594 80.1835C60.1144 80.8673 59.6794 81.4144 58.9543 81.4144Z" fill="#DAE1ED"/>
<path d="M58.9543 87.1583H27.9218C27.1967 87.1583 26.6167 86.7936 26.6167 86.3377C26.6167 85.8818 27.1967 85.5172 27.9218 85.5172H58.9543C59.6794 85.5172 60.2594 85.8818 60.2594 86.3377C60.1144 86.7936 59.6794 87.1583 58.9543 87.1583Z" fill="#DAE1ED"/>
<path d="M42.5228 93.7227H27.9422C27.2058 93.7227 26.6167 93.358 26.6167 92.9021C26.6167 92.4462 27.2058 92.0815 27.9422 92.0815H42.5228C43.2592 92.0815 43.8483 92.4462 43.8483 92.9021C43.7011 93.358 43.1119 93.7227 42.5228 93.7227Z" fill="#DAE1ED"/>
<defs>
<linearGradient id="paint0_linear" x1="48.941" y1="61.3274" x2="86.5608" y2="61.3274" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF66A9"/>
<stop offset="1" stop-color="#F53689"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="87.3762" y1="58.0035" x2="93.0807" y2="58.0035" gradientUnits="userSpaceOnUse">
<stop stop-color="#83A6FF"/>
<stop offset="1" stop-color="#5A78FF"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="113.602" y1="79.5253" x2="113.602" y2="54.1128" gradientUnits="userSpaceOnUse">
<stop offset="0.00289017" stop-color="#606673" stop-opacity="0"/>
<stop offset="1" stop-color="#a3a3a3"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,17 +0,0 @@
<svg width="128" height="110" viewBox="0 0 128 110" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M63.6998 108.5C93.3998 108.5 117.6 84.4 117.6 54.8C117.5 25.1 93.3998 1 63.6998 1C33.8998 1 9.7998 25.1 9.7998 54.7C9.7998 84.4 33.8998 108.5 63.6998 108.5Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M118.9 36C121.164 36 123 34.1644 123 31.9C123 29.6357 121.164 27.8 118.9 27.8C116.635 27.8 114.8 29.6357 114.8 31.9C114.8 34.1644 116.635 36 118.9 36Z" fill="#EAEEF9"/>
<path d="M124.9 20C126.446 20 127.7 18.7464 127.7 17.2C127.7 15.6536 126.446 14.4 124.9 14.4C123.354 14.4 122.1 15.6536 122.1 17.2C122.1 18.7464 123.354 20 124.9 20Z" fill="#EAEEF9"/>
<path d="M5.2 90.8C8.07188 90.8 10.4 88.4719 10.4 85.6C10.4 82.7281 8.07188 80.4 5.2 80.4C2.32812 80.4 0 82.7281 0 85.6C0 88.4719 2.32812 90.8 5.2 90.8Z" fill="#EAEEF9"/>
<path d="M101.512 32.1697V97.3009C101.512 102.047 97.7479 105.811 93.0022 105.811H34.4168C29.6711 105.811 25.9072 102.047 25.9072 97.3009V12.0412C25.9072 7.29548 29.6711 3.53162 34.4168 3.53162H73.0373C75.1647 3.53162 77.1285 4.34985 78.6013 5.82266L99.2207 26.4421C100.694 28.0786 101.512 30.0423 101.512 32.1697Z" fill="white" stroke="#e5e5e5" stroke-width="2" stroke-miterlimit="10"/>
<path d="M75.9185 4.12698V23.4805C75.9185 26.9513 78.8576 29.7279 82.1974 29.7279H100.924" fill="#d4d4d4"/>
<path d="M51.1871 88.0744H37.5406C37.0314 88.0744 36.624 87.5331 36.624 86.8836C36.624 86.2342 37.0314 85.6929 37.5406 85.6929H51.1871C51.6963 85.6929 52.1037 86.2342 52.1037 86.8836C52.1037 87.6414 51.6963 88.0744 51.1871 88.0744Z" fill="#D5DDEA"/>
<path d="M68.6393 21.3927H37.9495C37.2358 21.3927 36.624 20.8432 36.624 20.202C36.624 19.5608 37.2358 19.0113 37.9495 19.0113H68.6393C69.353 19.0113 69.9648 19.5608 69.9648 20.202C69.9648 20.8432 69.353 21.3927 68.6393 21.3927Z" fill="#d4d4d4"/>
<path d="M49.6968 28.5373H37.9414C37.2321 28.5373 36.624 27.9877 36.624 27.3465C36.624 26.7053 37.2321 26.1558 37.9414 26.1558H49.5955C50.3049 26.1558 50.9129 26.7053 50.9129 27.3465C50.9129 27.9877 50.3049 28.5373 49.6968 28.5373Z" fill="#d4d4d4"/>
<path d="M90.4363 70.2132H54.6499H50.7057H38.7769C38.2959 70.2132 37.8149 70.7093 37.8149 71.4039C37.8149 71.9993 38.1997 72.5947 38.7769 72.5947H50.7057H54.6499H90.4363C90.9173 72.5947 91.3983 72.0985 91.3983 71.4039C91.3021 70.7093 90.9173 70.2132 90.4363 70.2132Z" fill="#d4d4d4"/>
<path d="M90.4346 61.8779H77.1351H72.6056H38.7787C38.2968 61.8779 37.8149 62.3741 37.8149 63.0687C37.8149 63.664 38.2004 64.2594 38.7787 64.2594H72.6056H77.1351H90.4346C90.9165 64.2594 91.3983 63.7633 91.3983 63.0687C91.302 62.3741 90.9165 61.8779 90.4346 61.8779Z" fill="#d4d4d4"/>
<path d="M90.5219 53.5429H87.0657H83.6095H38.775C38.295 53.5429 37.8149 54.0391 37.8149 54.7337C37.8149 55.329 38.199 55.9244 38.775 55.9244H83.6095H87.4497H90.4259C90.9059 55.9244 91.386 55.4283 91.386 54.7337C91.482 54.1383 91.0019 53.5429 90.5219 53.5429Z" fill="#d4d4d4"/>
<path d="M90.4466 45.2077H79.3111H76.5511H38.7667C38.2908 45.2077 37.8149 45.7038 37.8149 46.3984C37.8149 46.9938 38.1956 47.5892 38.7667 47.5892H76.5511H79.3111H90.3514C91.0176 47.5892 91.3983 47.093 91.3983 46.3984C91.3983 45.8031 91.0176 45.2077 90.4466 45.2077Z" fill="#d4d4d4"/>
<path d="M91.0478 106C102.671 106 112.093 96.5776 112.093 84.9546C112.093 73.3315 102.671 63.9092 91.0478 63.9092C79.4248 63.9092 70.0024 73.3315 70.0024 84.9546C70.0024 96.5776 79.4248 106 91.0478 106Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M94.4783 85.2744L94.4931 85.2896L94.5085 85.3042C95.5672 86.3033 97.2893 86.3632 98.3258 85.2626C99.3087 84.219 99.3087 82.4658 98.3258 81.4223L93.119 75.8939C92.8246 75.466 92.3804 75.244 92.0711 75.1303C91.7075 74.9966 91.3193 74.9351 91.0091 74.9351C90.5749 74.9351 90.1701 75.1043 89.9007 75.2474C89.6162 75.3984 89.327 75.6041 89.1184 75.8257L83.9158 81.3496C83.5549 81.6234 83.3448 81.9942 83.2255 82.3039C83.0904 82.6546 83.0327 83.0246 83.0327 83.3424C83.0327 84.041 83.3085 84.6904 83.8474 85.2626L83.8675 85.284L83.8889 85.3042C84.9454 86.3013 86.6627 86.3629 87.7 85.2692L88.3813 84.5692V91.1612C88.3813 92.6438 89.5485 93.9719 91.0866 93.9719C92.6247 93.9719 93.7919 92.6438 93.7919 91.1612V84.5692L94.4783 85.2744Z" fill="white" stroke="#a3a3a3" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1,26 +0,0 @@
<svg width="159" height="121" viewBox="0 0 159 121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M148.661 41.3581C151.294 41.3581 153.429 39.2234 153.429 36.5902C153.429 33.9569 151.294 31.8223 148.661 31.8223C146.028 31.8223 143.893 33.9569 143.893 36.5902C143.893 39.2234 146.028 41.3581 148.661 41.3581Z" fill="#f5f5f5"/>
<path d="M155.638 22.7518C157.437 22.7518 158.895 21.2939 158.895 19.4956C158.895 17.6973 157.437 16.2395 155.638 16.2395C153.84 16.2395 152.382 17.6973 152.382 19.4956C152.382 21.2939 153.84 22.7518 155.638 22.7518Z" fill="#f5f5f5"/>
<path d="M25.9329 21.3506C27.7312 21.3506 29.189 19.8928 29.189 18.0945C29.189 16.2962 27.7312 14.8384 25.9329 14.8384C24.1346 14.8384 22.6768 16.2962 22.6768 18.0945C22.6768 19.8928 24.1346 21.3506 25.9329 21.3506Z" fill="#f5f5f5"/>
<path d="M6.0471 84.1477C9.38682 84.1477 12.0942 81.4403 12.0942 78.1006C12.0942 74.7608 9.38682 72.0535 6.0471 72.0535C2.70738 72.0535 0 74.7608 0 78.1006C0 81.4403 2.70738 84.1477 6.0471 84.1477Z" fill="#f5f5f5"/>
<path d="M82.217 119.151C114.778 119.151 141.176 92.7531 141.176 60.0755C141.176 27.3979 114.662 1 82.217 1C49.6557 1 23.2578 27.3979 23.2578 60.0755C23.2578 92.7531 49.6557 119.151 82.217 119.151Z" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M130.215 115.858H31.5791C29.6577 115.858 28.0811 114.281 28.0811 112.36V88.2674C28.0811 86.3459 29.6577 84.7693 31.5791 84.7693H130.215C132.137 84.7693 133.713 86.3459 133.713 88.2674V112.36C133.713 114.281 132.137 115.858 130.215 115.858Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M113.858 96.446H58.9232C57.7408 96.446 56.8047 95.7275 56.8047 94.8201C56.8047 93.9126 57.7408 93.1942 58.9232 93.1942H113.858C115.04 93.1942 115.977 93.9126 115.977 94.8201C115.977 95.7275 115.04 96.446 113.858 96.446Z" fill="#d4d4d4"/>
<path d="M94.1505 106.349H58.9232C57.7408 106.349 56.8047 105.631 56.8047 104.723C56.8047 103.816 57.7408 103.097 58.9232 103.097H94.1505C95.3329 103.097 96.269 103.816 96.269 104.723C96.269 105.631 95.3329 106.349 94.1505 106.349Z" fill="#d4d4d4"/>
<path d="M42.6649 109.059C47.5083 109.059 51.4347 105.132 51.4347 100.289C51.4347 95.4454 47.5083 91.519 42.6649 91.519C37.8214 91.519 33.895 95.4454 33.895 100.289C33.895 105.132 37.8214 109.059 42.6649 109.059Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M39.9062 103.048L45.4244 97.5791" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M45.4244 103.048L39.9062 97.5791" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M133.53 36.5091H34.8936C32.9721 36.5091 31.3955 34.9325 31.3955 33.011V8.9185C31.3955 6.99701 32.9721 5.42041 34.8936 5.42041H133.53C135.451 5.42041 137.028 6.99701 137.028 8.9185V33.011C137.028 34.9325 135.451 36.5091 133.53 36.5091Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M117.172 17.097H62.2377C61.0552 17.097 60.1191 16.3785 60.1191 15.4711C60.1191 14.5636 61.0552 13.8452 62.2377 13.8452H117.172C118.355 13.8452 119.291 14.5636 119.291 15.4711C119.291 16.3785 118.355 17.097 117.172 17.097Z" fill="#d4d4d4"/>
<path d="M97.4649 27H62.2377C61.0552 27 60.1191 26.2816 60.1191 25.3742C60.1191 24.4667 61.0552 23.7483 62.2377 23.7483H97.4649C98.6474 23.7483 99.5835 24.4667 99.5835 25.3742C99.5835 26.2816 98.6474 27 97.4649 27Z" fill="#d4d4d4"/>
<path d="M45.9788 29.7099C50.8223 29.7099 54.7487 25.7835 54.7487 20.94C54.7487 16.0966 50.8223 12.1702 45.9788 12.1702C41.1354 12.1702 37.209 16.0966 37.209 20.94C37.209 25.7835 41.1354 29.7099 45.9788 29.7099Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M43.2197 23.6991L48.7378 18.2302" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M48.7378 23.6991L43.2197 18.2302" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M118.391 75.9971H19.7056C17.7841 75.9971 16.2075 74.4205 16.2075 72.499V48.4065C16.2075 46.4851 17.7841 44.9084 19.7056 44.9084H118.342C120.263 44.9084 121.84 46.4851 121.84 48.4065V72.499C121.889 74.4698 120.313 75.9971 118.391 75.9971Z" fill="white" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M30.8407 69.2474C35.6841 69.2474 39.6105 65.321 39.6105 60.4775C39.6105 55.634 35.6841 51.7076 30.8407 51.7076C25.9972 51.7076 22.0708 55.634 22.0708 60.4775C22.0708 65.321 25.9972 69.2474 30.8407 69.2474Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M26.7017 60.4774L29.4607 63.2365L34.9788 57.7184" fill="#d4d4d4"/>
<path d="M26.7017 60.4774L29.4607 63.2365L34.9788 57.7184" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M102.034 56.5852H47.099C45.9166 56.5852 44.9805 55.8668 44.9805 54.9594C44.9805 54.0519 45.9166 53.3335 47.099 53.3335H102.034C103.216 53.3335 104.152 54.0519 104.152 54.9594C104.152 55.8668 103.167 56.5852 102.034 56.5852Z" fill="#d4d4d4"/>
<path d="M82.3263 66.5375H47.099C45.9166 66.5375 44.9805 65.8191 44.9805 64.9116C44.9805 64.0042 45.9166 63.2858 47.099 63.2858H82.3263C83.5087 63.2858 84.4448 64.0042 84.4448 64.9116C84.3956 65.8191 83.4594 66.5375 82.3263 66.5375Z" fill="#d4d4d4"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,76 +0,0 @@
<svg width="150" height="146" viewBox="0 0 150 146" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M57.5655 17.3833C26.8774 25.8793 8.88717 57.6443 17.3832 88.3324C25.8792 119.02 57.6442 137.011 88.3322 128.515C119.02 120.019 137.011 88.2537 128.515 57.5656C120.019 26.8776 88.2536 8.88731 57.5655 17.3833Z" fill="#f5f5f5" stroke="#d4d4d4" stroke-width="2" stroke-miterlimit="10"/>
<path d="M93.1765 34.1478L94.2707 33.5955C94.3286 33.5794 94.4284 33.4894 94.3964 33.3736L94.3073 32.1511C94.3172 31.9613 94.4009 31.8134 94.5747 31.7653C94.7484 31.7172 94.9542 31.785 95.0023 31.9587L95.5547 33.0529C95.5707 33.1108 95.6607 33.2106 95.7766 33.1786L96.999 33.0896C97.1888 33.0994 97.3367 33.1831 97.3848 33.3569C97.4329 33.5306 97.3652 33.7365 97.1915 33.7846L96.0972 34.3369C96.0393 34.353 95.9395 34.4429 95.9716 34.5588L96.0606 35.7813C96.0508 35.971 95.967 36.1189 95.7933 36.167C95.6195 36.2152 95.4137 36.1474 95.3656 35.9737L94.8133 34.8795C94.7972 34.8215 94.7072 34.7217 94.5914 34.7538L93.3689 34.8428C93.1791 34.833 93.0312 34.7493 92.9831 34.5755C92.9511 34.4597 93.0188 34.2538 93.1765 34.1478Z" fill="#d4d4d4"/>
<path d="M40.6411 40.4399L41.6842 39.9134C41.7394 39.8981 41.8346 39.8123 41.804 39.7019L41.7191 38.5364C41.7285 38.3555 41.8084 38.2145 41.974 38.1686C42.1396 38.1228 42.3359 38.1874 42.3817 38.353L42.9083 39.3961C42.9236 39.4514 43.0094 39.5465 43.1198 39.5159L44.2852 39.4311C44.4662 39.4404 44.6072 39.5203 44.653 39.6859C44.6989 39.8516 44.6343 40.0478 44.4687 40.0936L43.4255 40.6202C43.3703 40.6355 43.2752 40.7213 43.3057 40.8317L43.3906 41.9971C43.3812 42.1781 43.3014 42.3191 43.1357 42.3649C42.9701 42.4108 42.7739 42.3462 42.728 42.1806L42.2014 41.1374C42.1862 41.0822 42.1004 40.9871 41.99 41.0176L40.8245 41.1025C40.6436 41.0932 40.5026 41.0133 40.4567 40.8477C40.4109 40.682 40.4754 40.4858 40.6411 40.4399Z" fill="#d4d4d4"/>
<path d="M78.0102 51.8625L78.8528 51.4372C78.8973 51.4249 78.9742 51.3556 78.9495 51.2664L78.881 50.3251C78.8885 50.179 78.953 50.0651 79.0868 50.028C79.2206 49.991 79.3791 50.0431 79.4161 50.1769L79.8414 51.0195C79.8538 51.064 79.923 51.1409 80.0122 51.1162L80.9535 51.0477C81.0996 51.0552 81.2135 51.1197 81.2506 51.2535C81.2876 51.3873 81.2355 51.5458 81.1017 51.5828L80.2592 52.0081C80.2146 52.0205 80.1377 52.0897 80.1624 52.1789L80.2309 53.1202C80.2234 53.2664 80.1589 53.3802 80.0251 53.4173C79.8913 53.4543 79.7328 53.4022 79.6958 53.2684L79.2705 52.4259C79.2582 52.3813 79.1889 52.3044 79.0997 52.3291L78.1584 52.3977C78.0123 52.3901 77.8984 52.3256 77.8613 52.1918C77.792 52.115 77.8888 51.9441 78.0102 51.8625Z" fill="#d4d4d4"/>
<path d="M44.8173 111.199L46.3299 110.436C46.4099 110.414 46.5479 110.289 46.5036 110.129L46.3805 108.439C46.3941 108.177 46.5099 107.972 46.7501 107.906C46.9902 107.839 47.2748 107.933 47.3413 108.173L48.1048 109.686C48.127 109.766 48.2514 109.904 48.4115 109.86L50.1014 109.736C50.3638 109.75 50.5683 109.866 50.6348 110.106C50.7013 110.346 50.6076 110.631 50.3674 110.697L48.8548 111.461C48.7748 111.483 48.6368 111.607 48.6811 111.767L48.8042 113.457C48.7906 113.72 48.6748 113.924 48.4346 113.991C48.1944 114.057 47.9099 113.964 47.8434 113.723L47.0799 112.211C47.0577 112.131 46.9333 111.993 46.7732 112.037L45.0832 112.16C44.8209 112.147 44.6164 112.031 44.5499 111.791C44.4834 111.55 44.5992 111.346 44.8173 111.199Z" fill="#d4d4d4"/>
<path d="M121.56 71.1737L122.353 69.985C122.402 69.9355 122.452 69.7869 122.353 69.6878L121.56 68.4991C121.461 68.301 121.461 68.1029 121.61 67.9543C121.759 67.8057 122.006 67.7562 122.155 67.9048L123.344 68.6973C123.393 68.7468 123.542 68.7963 123.641 68.6973L124.829 67.9048C125.028 67.8057 125.226 67.8057 125.374 67.9543C125.523 68.1029 125.572 68.3506 125.424 68.4991L124.631 69.6878C124.582 69.7374 124.532 69.886 124.631 69.985L125.424 71.1737C125.523 71.3718 125.523 71.5699 125.374 71.7185C125.226 71.8671 124.978 71.9167 124.829 71.7681L123.641 70.9756C123.591 70.9261 123.443 70.8765 123.344 70.9756L122.155 71.7681C121.957 71.8671 121.759 71.8671 121.61 71.7185C121.461 71.57 121.412 71.3223 121.56 71.1737Z" fill="#d4d4d4"/>
<path d="M44.9585 62.6945L45.9726 60.6606C46.0409 60.5725 46.0895 60.3282 45.9134 60.1915L44.426 58.4732C44.2302 58.1802 44.1907 57.8675 44.3957 57.6034C44.6006 57.3393 44.9816 57.2118 45.2457 57.4168L47.2796 58.4309C47.3677 58.4992 47.6121 58.5478 47.7487 58.3717L49.4671 56.8843C49.76 56.6885 50.0727 56.649 50.3368 56.854C50.6009 57.0589 50.7284 57.4399 50.5235 57.704L49.5094 59.7379C49.4411 59.826 49.3925 60.0704 49.5685 60.207L51.056 61.9254C51.2518 62.2183 51.2912 62.531 51.0863 62.7951C50.8813 63.0592 50.5003 63.1867 50.2362 62.9818L48.2023 61.9677C48.1143 61.8994 47.8699 61.8508 47.7333 62.0268L46.0149 63.5143C45.7219 63.71 45.4092 63.7495 45.1451 63.5446C44.881 63.3396 44.7536 62.9586 44.9585 62.6945Z" fill="#d4d4d4"/>
<path d="M65.1578 122.774L66.5786 122.057C66.6538 122.036 66.7833 121.919 66.7417 121.768L66.6261 120.181C66.6389 119.935 66.7476 119.743 66.9732 119.68C67.1988 119.618 67.4661 119.706 67.5285 119.931L68.2457 121.352C68.2665 121.427 68.3834 121.557 68.5338 121.515L70.121 121.4C70.3675 121.412 70.5595 121.521 70.622 121.747C70.6844 121.972 70.5965 122.24 70.3709 122.302L68.9501 123.019C68.8749 123.04 68.7454 123.157 68.787 123.307L68.9026 124.895C68.8898 125.141 68.7811 125.333 68.5555 125.396C68.3299 125.458 68.0626 125.37 68.0002 125.144L67.283 123.724C67.2622 123.648 67.1453 123.519 66.9949 123.561L65.4077 123.676C65.1612 123.663 64.9692 123.555 64.9067 123.329C64.8443 123.103 64.9322 122.836 65.1578 122.774Z" fill="#d4d4d4"/>
<path d="M37.8469 86.4298L38.8352 84.6773C38.8996 84.6025 38.9535 84.3886 38.804 84.2599L37.5664 82.6736C37.4065 82.4057 37.3857 82.1275 37.5788 81.9032C37.7719 81.679 38.1145 81.5834 38.3388 81.7765L40.0913 82.7648C40.1661 82.8291 40.38 82.8831 40.5087 82.7336L42.095 81.496C42.3628 81.3361 42.6411 81.3153 42.8654 81.5084C43.0896 81.7015 43.1852 82.0441 42.9921 82.2683L42.0038 84.0209C41.9394 84.0957 41.8854 84.3095 42.035 84.4383L43.2726 86.0246C43.4325 86.2924 43.4533 86.5707 43.2602 86.7949C43.0671 87.0192 42.7245 87.1147 42.5002 86.9216L40.7477 85.9334C40.6729 85.869 40.459 85.815 40.3303 85.9645L38.744 87.2022C38.4761 87.3621 38.1979 87.3829 37.9736 87.1898C37.7494 86.9967 37.6538 86.6541 37.8469 86.4298Z" fill="#d4d4d4"/>
<path d="M62.6367 31.7606L64.4916 30.8647C64.6691 30.8155 64.7088 30.6134 64.6842 30.5246L64.4986 28.4731C64.5136 28.1821 64.7062 27.8421 64.9726 27.7683C65.2389 27.6946 65.5544 27.7984 65.7415 28.129L66.6374 29.9839C66.6866 30.1614 66.8887 30.201 66.9775 30.1765L69.029 29.9908C69.32 30.0059 69.66 30.1985 69.7338 30.4648C69.8075 30.7312 69.7037 31.0467 69.3731 31.2338L67.5182 32.1297C67.3407 32.1788 67.301 32.381 67.3256 32.4698L67.5112 34.5213C67.4962 34.8122 67.3036 35.1523 67.0372 35.2261C66.7709 35.2998 66.4554 35.196 66.2683 34.8654L65.3724 33.0105C65.3233 32.833 65.1211 32.7933 65.0323 32.8179L62.9808 33.0035C62.6899 32.9885 62.3498 32.7959 62.276 32.5295C62.1777 32.1744 62.2815 31.8589 62.6367 31.7606Z" fill="#d4d4d4"/>
<path d="M105.972 51.7554L106.904 51.3054C106.993 51.2807 107.013 51.1792 107.001 51.1346L106.907 50.1041C106.915 49.9579 107.012 49.7871 107.146 49.7501C107.279 49.713 107.438 49.7652 107.532 49.9312L107.982 50.8629C108.007 50.9521 108.108 50.972 108.153 50.9597L109.183 50.8665C109.329 50.874 109.5 50.9708 109.537 51.1045C109.574 51.2383 109.522 51.3968 109.356 51.4908L108.424 51.9408C108.335 51.9655 108.315 52.067 108.328 52.1116L108.421 53.1421C108.413 53.2882 108.316 53.459 108.183 53.4961C108.049 53.5331 107.89 53.481 107.796 53.3149L107.346 52.3832C107.322 52.294 107.22 52.2741 107.176 52.2865L106.145 52.3797C105.999 52.3722 105.828 52.2754 105.791 52.1416C105.754 52.0078 105.851 51.837 105.972 51.7554Z" fill="#d4d4d4"/>
<path d="M97.6931 109.626L99.7927 108.612C99.9937 108.557 100.039 108.328 100.011 108.227L99.8006 105.905C99.8177 105.576 100.036 105.191 100.337 105.107C100.639 105.024 100.996 105.141 101.208 105.516L102.222 107.615C102.277 107.816 102.506 107.861 102.607 107.833L104.929 107.623C105.258 107.64 105.643 107.858 105.726 108.16C105.81 108.461 105.692 108.818 105.318 109.03L103.219 110.044C103.018 110.1 102.973 110.329 103.001 110.429L103.211 112.751C103.194 113.081 102.976 113.466 102.674 113.549C102.373 113.632 102.016 113.515 101.804 113.141L100.79 111.041C100.734 110.84 100.505 110.795 100.405 110.823L98.0826 111.033C97.7533 111.016 97.3684 110.798 97.2849 110.497C97.2014 110.195 97.319 109.838 97.6931 109.626Z" fill="#d4d4d4"/>
<path d="M107.532 88.1344L109.041 87.4056C109.186 87.3656 109.218 87.2012 109.198 87.129L109.047 85.4601C109.059 85.2234 109.216 84.9468 109.433 84.8868C109.649 84.8268 109.906 84.9112 110.058 85.1801L110.787 86.6891C110.827 86.8335 110.991 86.8658 111.063 86.8458L112.732 86.6948C112.969 86.707 113.246 86.8637 113.306 87.0804C113.366 87.297 113.281 87.5537 113.012 87.7059L111.503 88.4347C111.359 88.4747 111.327 88.6391 111.347 88.7114L111.498 90.3803C111.485 90.6169 111.329 90.8936 111.112 90.9536C110.895 91.0136 110.639 90.9291 110.487 90.6602L109.758 89.1512C109.718 89.0068 109.553 88.9746 109.481 88.9946L107.812 89.1456C107.576 89.1333 107.299 88.9766 107.239 88.76C107.179 88.5433 107.336 88.2666 107.532 88.1344Z" fill="#d4d4d4"/>
<path d="M23.5988 66.0333L25.8364 65.8308C26.0301 65.7772 26.1805 65.9441 26.2073 66.0409L27.1845 68.064C27.3618 68.3277 27.7327 68.5378 28.0232 68.4574C28.3137 68.377 28.5506 68.1029 28.5402 67.6887L28.3378 65.4511C28.2841 65.2574 28.451 65.107 28.5478 65.0801L30.571 64.103C30.8347 63.9257 31.0448 63.5548 30.9643 63.2643C30.8839 62.9738 30.6098 62.7369 30.1957 62.7473L27.958 62.9498C27.7644 63.0034 27.6139 62.8365 27.5871 62.7397L26.6099 60.7165C26.4327 60.4528 26.0617 60.2427 25.7712 60.3231C25.4807 60.4036 25.2438 60.6777 25.2542 61.0918L25.4567 63.3295C25.5103 63.5231 25.3435 63.6736 25.2466 63.7004L23.2234 64.6775C22.9597 64.8548 22.7497 65.2258 22.8301 65.5163C22.9373 65.9036 23.3083 66.1137 23.5988 66.0333Z" fill="#d4d4d4"/>
<path d="M11.6363 110.566L14.8001 110.28C15.0739 110.204 15.2867 110.44 15.3246 110.577L16.7062 113.438C16.9568 113.811 17.4813 114.108 17.892 113.994C18.3028 113.88 18.6377 113.493 18.623 112.907L18.3368 109.743C18.261 109.469 18.4969 109.257 18.6338 109.219L21.4944 107.837C21.8672 107.587 22.1643 107.062 22.0505 106.651C21.9368 106.241 21.5493 105.906 20.9637 105.92L17.7999 106.207C17.526 106.282 17.3133 106.046 17.2754 105.91L15.8938 103.049C15.6432 102.676 15.1187 102.379 14.7079 102.493C14.2972 102.606 13.9622 102.994 13.977 103.58L14.2632 106.743C14.339 107.017 14.1031 107.23 13.9662 107.268L11.1056 108.65C10.7327 108.9 10.4357 109.425 10.5494 109.835C10.7011 110.383 11.2255 110.68 11.6363 110.566Z" fill="#f5f5f5"/>
<path d="M16.8898 30.2522L19.8069 29.9883C20.0594 29.9184 20.2556 30.1359 20.2905 30.2622L21.5644 32.8997C21.7955 33.2435 22.2791 33.5173 22.6578 33.4125C23.0365 33.3076 23.3453 32.9503 23.3318 32.4104L23.0679 29.4932C22.998 29.2408 23.2155 29.0446 23.3417 29.0097L25.9793 27.7358C26.323 27.5047 26.5969 27.0211 26.4921 26.6424C26.3872 26.2637 26.0299 25.9548 25.49 25.9684L22.5728 26.2323C22.3203 26.3022 22.1242 26.0847 22.0893 25.9585L20.8154 23.3209C20.5843 22.9772 20.1007 22.7033 19.722 22.8081C19.3432 22.913 19.0344 23.2703 19.048 23.8102L19.3119 26.7274C19.3818 26.9799 19.1643 27.176 19.038 27.2109L16.4005 28.4848C16.0567 28.7159 15.7829 29.1995 15.8877 29.5782C16.0275 30.0832 16.5111 30.3571 16.8898 30.2522Z" fill="#f5f5f5"/>
<path d="M132.453 84.8904L136.429 86.3075C136.802 86.3686 136.927 86.7717 136.897 86.958L136.97 91.1786C137.065 91.768 137.532 92.4186 138.091 92.5102C138.65 92.6018 139.27 92.3208 139.578 91.6062L140.995 87.6299C141.056 87.2573 141.459 87.1321 141.646 87.1627L145.866 87.0895C146.456 86.9948 147.106 86.5275 147.198 85.9687C147.289 85.4098 147.009 84.7898 146.294 84.4813L142.318 83.0642C141.945 83.0031 141.82 82.6 141.85 82.4137L141.777 78.1931C141.682 77.6037 141.215 76.9532 140.656 76.8615C140.097 76.7699 139.477 77.0509 139.169 77.7655L137.752 81.7418C137.691 82.1144 137.288 82.2396 137.101 82.209L132.881 82.2823C132.291 82.3769 131.641 82.8442 131.549 83.4031C131.427 84.1483 131.894 84.7988 132.453 84.8904Z" fill="#f5f5f5"/>
<path d="M49.0588 44.7536C48.6894 44.8559 48.4728 45.2383 48.5751 45.6077C48.6774 45.9771 49.0598 46.1937 49.4292 46.0914C49.7987 45.9892 50.0152 45.6068 49.913 45.2373C49.8107 44.8679 49.4283 44.6513 49.0588 44.7536Z" fill="#d4d4d4"/>
<path d="M72.9485 62.1943C72.579 62.2965 72.3625 62.6789 72.4647 63.0484C72.567 63.4178 72.9494 63.6344 73.3189 63.5321C73.6883 63.4298 73.9049 63.0474 73.8026 62.678C73.7003 62.3086 73.3179 62.092 72.9485 62.1943Z" fill="#d4d4d4"/>
<path d="M88.4672 34.0585C88.2715 34.3881 88.38 34.8139 88.7097 35.0096C89.0393 35.2053 89.4651 35.0967 89.6608 34.7671C89.8565 34.4375 89.7479 34.0117 89.4183 33.816C89.0887 33.6203 88.6628 33.7289 88.4672 34.0585Z" fill="#d4d4d4"/>
<path d="M66.0721 20.7561C65.8764 21.0857 65.985 21.5116 66.3146 21.7073C66.6443 21.9029 67.0701 21.7944 67.2658 21.4648C67.4615 21.1351 67.3529 20.7093 67.0233 20.5136C66.6937 20.3179 66.2678 20.4265 66.0721 20.7561Z" fill="#d4d4d4"/>
<path d="M26.1205 51.313C25.9248 51.6426 26.0334 52.0685 26.363 52.2641C26.6926 52.4598 27.1185 52.3513 27.3141 52.0216C27.5098 51.692 27.4012 51.2662 27.0716 51.0705C26.742 50.8748 26.3162 50.9834 26.1205 51.313Z" fill="#d4d4d4"/>
<path d="M29.0292 78.6073C28.8335 78.9369 28.9421 79.3628 29.2717 79.5585C29.6013 79.7541 30.0271 79.6456 30.2228 79.3159C30.4185 78.9863 30.3099 78.5605 29.9803 78.3648C29.6507 78.1691 29.2249 78.2777 29.0292 78.6073Z" fill="#d4d4d4"/>
<path d="M36.6005 105.887C36.4048 106.216 36.5133 106.642 36.843 106.838C37.1726 107.034 37.5984 106.925 37.7941 106.595C37.9898 106.266 37.8812 105.84 37.5516 105.644C37.222 105.449 36.7961 105.557 36.6005 105.887Z" fill="#d4d4d4"/>
<path d="M54.91 119.827C54.7143 120.157 54.8229 120.583 55.1525 120.779C55.4822 120.974 55.908 120.866 56.1037 120.536C56.2994 120.206 56.1908 119.781 55.8612 119.585C55.5316 119.389 55.1057 119.498 54.91 119.827Z" fill="#d4d4d4"/>
<path d="M88.4047 120.051C88.209 120.381 88.3175 120.807 88.6472 121.002C88.9768 121.198 89.4026 121.089 89.5983 120.76C89.794 120.43 89.6854 120.004 89.3558 119.809C89.0262 119.613 88.6003 119.721 88.4047 120.051Z" fill="#d4d4d4"/>
<path d="M111.709 99.2577C111.514 99.5873 111.622 100.013 111.952 100.209C112.281 100.405 112.707 100.296 112.903 99.9663C113.099 99.6367 112.99 99.2109 112.66 99.0152C112.331 98.8195 111.905 98.9281 111.709 99.2577Z" fill="#d4d4d4"/>
<path d="M124.13 76.7053C123.935 77.035 124.043 77.4608 124.373 77.6565C124.702 77.8522 125.128 77.7436 125.324 77.414C125.52 77.0843 125.411 76.6585 125.081 76.4628C124.752 76.2671 124.326 76.3757 124.13 76.7053Z" fill="#d4d4d4"/>
<path d="M110.105 42.0772C109.909 42.4068 110.018 42.8326 110.347 43.0283C110.677 43.224 111.103 43.1154 111.299 42.7858C111.494 42.4562 111.386 42.0303 111.056 41.8346C110.726 41.639 110.301 41.7475 110.105 42.0772Z" fill="#d4d4d4"/>
<path d="M147.775 62.3292L133.976 44.0019L105.88 65.3824L119.679 83.7097L147.775 62.3292Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M126.982 78.4619L112.81 59.7388" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M133.913 73.2158L119.74 54.4927" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M140.843 67.9697L126.671 49.2466" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M138.333 50.2513L110.61 71.236" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M143.065 56.5024L115.342 77.4871" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M107.991 80.3657L114.05 75.7581L111.895 72.8973L105.836 77.505L107.991 80.3657Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M114.838 104.185C112.638 105.85 109.511 105.414 107.843 103.209L105.077 99.5552C104.939 99.374 104.976 99.109 105.157 98.9721L112.479 93.4294C112.66 93.2926 112.925 93.3295 113.062 93.5107L115.828 97.1647C117.466 99.392 117.007 102.542 114.838 104.185Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2.0875" stroke-miterlimit="10"/>
<path d="M65.7992 124.491L52 106.164L80.0961 84.7834L93.8953 103.111L65.7992 124.491Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M86.9648 108.753L72.7925 90.0295" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M80.0337 113.999L65.8613 95.2755" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M73.1035 119.245L58.9312 100.522" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M56.7319 112.019L84.4548 91.0346" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M61.4639 118.27L89.1868 97.2855" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M91.7705 88.1563L85.7119 92.7639L87.8672 95.6246L93.9258 91.017L91.7705 88.1563Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M97.5213 66.6557L83.3887 77.3533L102.819 103.022L102.841 103.052C102.841 103.052 102.841 103.052 102.864 103.082C103.672 104.086 107.453 102.507 111.34 99.5644C115.227 96.622 117.744 93.4344 117.027 92.3621C117.027 92.3621 117.027 92.3621 117.004 92.3319L116.981 92.3017L97.5515 66.6328L97.5213 66.6557Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M104.493 75.8662L109.888 82.9931L109.911 83.0233L109.934 83.0535C110.681 84.1031 108.134 87.3134 104.247 90.2558C100.359 93.1983 96.6084 94.7551 95.7709 93.7739L95.7481 93.7437L95.7252 93.7135L90.3306 86.5867C91.1379 87.5906 94.9191 86.011 98.8063 83.0686C102.694 80.1262 105.218 76.8856 104.493 75.8662Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10"/>
<path d="M98.0347 54.7866C101.701 59.6524 98.8326 68.0492 91.6176 73.5362C84.4025 79.0232 75.5498 79.54 71.8839 74.6742C71.8617 74.6447 71.8395 74.6152 71.8172 74.5857C71.795 74.5562 71.7506 74.4973 71.7284 74.4678C70.5557 72.53 75.2735 66.7156 82.3668 61.3212C89.4601 55.9268 96.333 52.9729 97.8487 54.6034C97.8709 54.6329 97.9153 54.6918 97.9376 54.7213C97.968 54.6982 97.9902 54.7277 98.0347 54.7866Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M97.8103 54.622L97.8325 54.6513C98.2447 55.2611 98.0202 56.3546 97.2523 57.6763C95.7084 60.372 92.0409 64.1731 87.2801 67.7894C82.5192 71.4057 77.8477 73.939 74.8734 74.6753C73.3974 75.0581 72.2876 74.9781 71.8147 74.4143L71.7926 74.385C71.7704 74.3556 71.7483 74.3263 71.7262 74.297C70.5582 72.3691 75.2574 66.5844 82.3228 61.2175C89.3883 55.8506 96.2342 52.9118 97.7439 54.5339C97.7661 54.5633 97.7882 54.5926 97.8103 54.622Z" fill="#f5f5f5" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M97.2428 57.6905L97.2649 57.7198C95.7227 60.4111 92.0595 64.206 87.3041 67.8165C82.5488 71.4269 77.8826 73.956 74.9118 74.6911L74.8897 74.6618C74.8676 74.6325 74.8454 74.6032 74.8454 74.6032C73.8474 72.9651 77.8864 67.9635 83.9442 63.3642C90.0322 58.7419 95.8977 56.2238 97.1986 57.6319C97.1986 57.6319 97.2207 57.6612 97.2428 57.6905Z" fill="#d4d4d4" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M86.2749 63.5669C86.3795 63.7701 85.8735 64.3903 85.1309 64.9547C84.3574 65.5426 83.6257 65.8632 83.4676 65.6535L78.4102 57.7178L79.8644 56.6125L86.2298 63.507L86.2749 63.5669Z" fill="#f5f5f5" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M79.7445 57.8316C80.6919 57.1105 80.8995 55.7815 80.208 54.8631C79.5165 53.9447 78.1879 53.7847 77.2404 54.5057C76.293 55.2268 76.0854 56.5558 76.7769 57.4742C77.4684 58.3926 78.797 58.5526 79.7445 57.8316Z" fill="#f5f5f5" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
<path d="M37.6256 34.2774C37.3892 35.8532 36.3649 38.9261 34.5527 39.3988C34.4739 39.3988 34.3952 39.3988 34.3164 39.4776C32.583 39.714 30.6132 38.5321 29.3525 37.6654C28.7222 37.1927 28.0919 36.6412 27.5403 36.0896C27.304 35.8532 26.9888 35.5381 26.7524 35.3017C24.9402 33.3319 23.522 30.8894 22.6553 28.2893C22.4977 27.7378 22.3401 27.1862 22.4189 26.6347C22.4189 26.4771 22.4977 26.3983 22.4977 26.3195C22.6553 25.9256 22.9704 25.5316 23.4432 25.4528C23.8371 25.374 24.1523 25.5316 24.5463 25.6104C24.9402 25.768 25.2554 25.9256 25.6493 26.1619C24.7826 25.1377 24.5463 23.4043 24.5463 22.1436C24.5463 22.0648 24.5463 21.9072 24.6251 21.9072C24.7038 21.8284 24.9402 21.9072 25.019 21.986C26.2797 22.9315 26.2797 24.6649 26.8312 26.0831C26.8312 25.0589 26.91 24.0346 26.91 23.0103C26.91 22.3012 26.9888 21.4345 27.5403 20.9617C27.6191 20.8829 27.6979 20.8829 27.7767 20.8829C27.9343 20.8829 28.0131 21.0405 28.0919 21.1193C29.0374 22.7739 28.4858 24.8225 28.6434 26.7135C28.7222 27.4226 28.801 28.1317 28.9586 28.8408C29.0374 29.156 29.1949 29.8651 29.3525 30.5742C29.5101 30.8894 29.6677 31.2046 29.9041 31.5197C29.9829 31.6773 30.1404 31.8349 30.298 31.9137C30.5344 32.1501 30.8496 32.3864 31.1647 32.6228C31.795 32.938 32.4254 33.1743 33.1345 33.3319C34.3952 33.5683 35.6558 33.5683 36.9165 33.6471C37.1528 33.6471 37.3892 33.7259 37.5468 33.8835C37.6256 34.041 37.6256 34.1198 37.6256 34.2774Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M54.1715 60.357C52.5169 60.357 50.7835 59.8055 49.5228 59.0176C47.0803 57.4418 45.5833 55.078 44.165 52.9507L46.9227 51.1385C48.1834 53.0295 49.444 55.078 51.2562 56.1811C52.6745 57.1266 54.9594 57.4418 56.2201 56.3387C57.7959 54.9204 57.4019 52.2415 56.7716 50.2718C55.9837 47.8292 54.4867 45.7019 52.6745 44.3624L54.6443 41.7623C57.0868 43.5745 58.9778 46.2534 59.9233 49.3263C61.2627 53.5022 60.79 56.8114 58.4262 58.86C57.2444 59.8843 55.6685 60.357 54.1715 60.357Z" fill="#a3a3a3"/>
<path d="M57.5598 34.1987C57.6386 35.3806 57.2447 36.5625 56.7719 37.7443C54.9597 42.4718 53.0687 47.1992 50.8626 51.7691C50.3898 52.6358 49.9959 53.5813 49.5231 54.448C48.8928 55.7087 48.1049 57.1269 46.6866 57.4421C45.5048 57.6785 44.4017 57.1269 43.3774 56.5754C43.0623 56.4178 42.7471 56.1814 42.5895 55.8663C42.4319 55.5511 42.5107 55.1571 42.5895 54.842C43.535 50.1145 45.3472 45.7022 47.1594 41.2111C48.0261 39.005 48.9716 36.72 49.6807 34.4351C50.2323 32.8593 50.6262 30.8107 52.6748 30.6531C54.5658 30.5743 57.4022 32.0714 57.5598 34.1987Z" fill="#a3a3a3"/>
<path d="M35.5769 48.3022C35.5769 48.4598 35.5769 48.5386 35.5769 48.6961C35.4981 49.7204 35.2617 50.6659 34.7102 51.5326C34.0799 52.4781 33.1344 53.266 32.0313 53.5024C31.7949 53.5812 31.5585 53.5812 31.3222 53.5812C30.2979 53.66 29.2736 53.3448 28.3281 52.9509C27.1462 52.4781 25.9644 51.9266 24.6249 51.8478C23.9158 51.769 23.2067 51.8478 22.4976 52.0054C22.1036 52.0842 21.7884 52.2417 21.3945 52.3205C21.0005 52.4781 20.6066 52.6357 20.2126 52.7933C18.8732 53.4236 17.5337 54.2903 16.1943 54.8418C15.0912 55.3146 13.7518 55.551 12.8063 54.8418C12.3335 54.5267 12.0971 53.9751 11.8608 53.5024C10.5213 50.9811 9.33945 48.4598 8.15758 45.8597C8.07879 45.7809 8 45.6233 8 45.4657C8 45.0717 8.47275 44.7566 8.78791 44.599C8.8667 44.5202 8.94549 44.5202 9.02428 44.4414C9.89099 44.0475 10.6789 43.7323 11.6244 43.5747C12.6487 43.4959 13.7518 43.6535 14.4609 44.3626C14.9336 44.8354 15.2488 45.3869 15.5639 46.0172C15.8791 46.7264 16.2731 47.4355 16.5882 48.1446C17.5337 47.3567 18.4792 46.5688 19.5035 45.8597C19.8187 45.6233 20.1338 45.4657 20.449 45.3081C21.0005 44.993 21.6309 44.6778 22.2612 44.5202C23.2855 44.1263 24.3886 43.9687 25.4916 43.8899C26.0432 43.8111 26.5947 43.7323 27.1462 43.8111C27.7766 43.8111 28.4069 43.9687 28.9584 44.0475C30.4555 44.3626 32.0313 44.6778 33.5283 44.993L31.8737 44.8354C33.2132 45.1505 34.789 45.6233 35.3405 46.8839C35.5769 47.2779 35.5769 47.8294 35.5769 48.3022Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M29.7464 44.5202C29.1949 46.6475 29.6676 48.9325 31.0071 50.7447C31.0859 50.8234 31.1647 50.981 31.3222 50.9022C31.401 50.9022 31.401 50.8234 31.4798 50.7447C31.7162 50.1931 31.795 49.5628 31.8738 49.0112C32.0314 47.6718 32.5041 45.5444 32.0314 44.205C31.4798 42.9443 29.9828 43.4959 29.7464 44.5202Z" fill="#a3a3a3"/>
<path d="M39.5163 29.3921C38.886 30.2588 38.0981 30.9679 37.389 31.7558C33.213 36.2469 31.2433 42.4714 30.0614 48.5383C29.7462 50.1141 29.5886 51.8475 30.5341 53.0294C31.0069 53.5809 31.6372 53.9749 32.2675 54.2901C33.2918 54.8416 34.2373 55.3931 35.2616 55.9447C36.4435 56.575 37.7041 57.2841 39.0436 57.3629C40.6194 57.4417 42.1952 56.6538 43.3771 55.5507C44.559 54.4476 45.3469 53.0294 46.1348 51.6112C48.1046 47.9868 49.9168 44.2836 51.4926 40.5016C51.9653 39.3985 52.4381 38.2167 52.5956 37.0348C52.832 35.3014 52.4381 33.568 52.1229 31.9134C52.0441 31.5194 51.9653 31.0467 51.6502 30.7315C51.2562 30.3376 50.6259 30.3376 50.1531 30.4164C46.6863 30.5739 43.1407 30.8891 39.8315 30.1012C39.1224 29.9436 38.3345 29.7072 37.9405 29.0769" fill="white"/>
<path d="M39.5163 29.3921C38.886 30.2588 38.0981 30.9679 37.389 31.7558C33.213 36.2469 31.2433 42.4714 30.0614 48.5383C29.7462 50.1141 29.5886 51.8475 30.5341 53.0294C31.0069 53.5809 31.6372 53.9749 32.2675 54.2901C33.2918 54.8416 34.2373 55.3931 35.2616 55.9447C36.4435 56.575 37.7041 57.2841 39.0436 57.3629C40.6194 57.4417 42.1952 56.6538 43.3771 55.5507C44.559 54.4476 45.3469 53.0294 46.1348 51.6112C48.1046 47.9868 49.9168 44.2836 51.4926 40.5016C51.9653 39.3985 52.4381 38.2167 52.5956 37.0348C52.832 35.3014 52.4381 33.568 52.1229 31.9134C52.0441 31.5194 51.9653 31.0467 51.6502 30.7315C51.2562 30.3376 50.6259 30.3376 50.1531 30.4164C46.6863 30.5739 43.1407 30.8891 39.8315 30.1012C39.1224 29.9436 38.3345 29.7072 37.9405 29.0769" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M22.4975 52.084C22.1035 52.1628 21.7884 52.3203 21.3944 52.3991C21.3156 51.2961 21.158 50.0354 20.8429 48.8535C20.5277 47.8292 20.1337 46.8838 19.5034 45.9383C19.8186 45.7019 20.1337 45.5443 20.4489 45.3867C21.0792 46.411 21.552 47.4353 21.8672 48.5384C22.1823 49.7202 22.4187 50.9809 22.4975 52.084Z" fill="#a3a3a3"/>
<path d="M33.2129 50.5084C32.8978 51.2963 33.0554 50.272 32.9766 51.2175C32.9766 52.0842 33.2129 52.9509 33.6857 53.7388C34.6312 55.0783 36.2858 55.8662 37.8616 56.4177C39.2799 56.8905 40.7769 57.1269 42.1951 56.4177C43.9285 55.551 45.268 53.5025 45.1104 51.5327C44.9528 48.9326 41.88 47.5931 39.595 47.3568C36.7585 47.0416 35.3403 48.0659 33.1341 49.7205V50.5084H33.2129Z" fill="#a3a3a3"/>
<path d="M55.1956 25.5315C55.1956 25.6103 55.1168 25.7679 55.1168 25.8467C54.7229 27.5801 54.2501 29.2347 54.0925 31.0469C54.0137 31.8348 54.1713 33.253 53.3834 33.8046C52.7531 34.1985 51.65 33.9621 50.9409 33.9621C48.7347 33.8046 46.6074 33.4106 44.3224 33.4106C44.1648 33.4106 44.0073 33.4106 43.7709 33.4106C42.983 33.3318 42.2739 33.0166 41.6435 32.6227C40.7768 32.2287 39.9889 31.756 39.1222 31.4408C38.4131 31.2045 37.6252 31.0469 37.2312 30.4165C36.7585 29.7862 36.7585 28.9983 36.6797 28.2892C36.4433 25.9254 36.5221 23.4041 37.1524 21.1192C37.5464 19.7009 38.3343 18.2827 39.5162 17.2584C42.1163 14.8947 46.2922 14.4219 49.5226 15.9978C51.8864 17.1796 53.9349 19.2282 54.8804 21.7495C55.2744 22.8526 55.432 24.192 55.1956 25.5315Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M55.1957 25.5315C55.1957 25.6103 55.1169 25.7679 55.1169 25.8466C54.723 27.5801 54.2502 29.2347 54.0926 31.0469C54.0138 31.8348 54.1714 33.253 53.3835 33.8046C52.7532 34.1985 51.6501 33.9621 50.941 33.9621C48.7348 33.8046 46.6075 33.4106 44.3225 33.4106C44.1649 33.4106 44.0074 33.4106 43.771 33.4106C44.7165 33.0166 45.7408 33.0166 46.7651 32.8591C49.9955 32.3075 52.832 30.0226 54.0926 27.0285C54.4866 26.083 54.723 25.0587 54.8018 24.0345C54.8805 23.2465 54.8805 22.4586 54.723 21.7495C55.2745 22.8526 55.4321 24.192 55.1957 25.5315Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M48.1044 32.0715C47.2377 32.8594 46.2134 33.411 45.1103 33.411C43.2193 33.411 41.2496 33.017 39.5162 32.1503C38.9646 31.8351 38.4919 31.52 38.0191 31.2048C37.7828 30.9684 37.4676 30.7321 37.31 30.4957C36.7585 29.8654 36.4433 29.1562 36.2857 28.2895C35.813 26.4773 36.1281 24.2712 36.7585 22.5378C37.4676 20.7256 38.5707 20.0165 40.4617 19.9377C42.3526 19.7801 44.5588 20.4104 46.371 21.2771C46.4498 21.3559 46.5286 21.3559 46.6074 21.4347C47.3953 21.8287 48.1044 22.3014 48.6559 22.8529C51.3348 25.2955 50.6257 29.7078 48.1044 32.0715Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M43.9286 52.8721C43.9286 52.9509 43.9286 52.9509 43.9286 53.0297C43.9286 53.4236 43.8498 53.7388 43.6922 54.054C43.1407 55.551 41.5649 56.4965 39.989 56.9692C38.4132 57.442 36.7586 57.5208 35.2616 57.9935C34.0009 58.3875 32.7403 58.939 31.7948 59.8057C31.5584 60.0421 31.322 60.1997 31.1644 60.4361C31.1644 60.5148 31.0857 60.5148 31.0857 60.5936C29.3522 62.721 28.8795 65.7938 26.8309 67.6848C26.6734 67.8424 26.5158 67.9212 26.3582 68C26.2006 68 26.043 67.9212 25.8854 67.9212C22.9702 66.6605 20.2913 65.0847 17.6124 63.4301C17.2184 63.1937 16.7457 62.8786 16.5093 62.4846C16.3517 62.1695 16.3517 61.8543 16.5093 61.5391C16.9033 60.3573 18.6367 58.939 19.4246 58.6239C20.2913 58.3087 21.3156 58.3875 22.1823 58.7026C23.049 59.0178 23.9157 59.5693 24.6248 60.1209C24.7824 59.0178 25.0975 57.8359 25.5703 56.8117C25.7279 56.4965 25.8854 56.1813 26.043 55.8662C26.2006 55.551 26.437 55.3146 26.5946 54.9995C27.0673 54.2903 27.6976 53.66 28.328 53.1085C29.1947 52.3206 30.1402 51.6114 31.0857 50.9811C32.5039 50.0356 34.0009 49.1689 35.5767 48.775C35.8131 48.6962 36.0495 48.6962 36.2859 48.6174C37.8617 48.3022 39.5951 48.5386 41.0921 49.1689C41.9588 49.4841 42.7467 50.0356 43.2983 50.7447C43.6922 51.2963 43.9286 52.0842 43.9286 52.8721Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M31.716 59.8055C31.4796 60.0419 31.2433 60.1995 31.0857 60.4359C31.0857 60.5146 31.0069 60.5146 31.0069 60.5934C30.0614 59.4116 28.9583 58.4661 27.6977 57.757C27.1461 57.4418 26.5158 57.2054 25.8855 56.969C25.8067 56.8902 25.6491 56.8902 25.5703 56.8115C25.7279 56.4963 25.8855 56.1811 26.0431 55.866C26.1219 55.866 26.2006 55.9448 26.2794 55.9448C26.9098 56.1811 27.6189 56.4175 28.2492 56.8115C29.5099 57.5206 30.7705 58.5449 31.716 59.8055Z" fill="#a3a3a3"/>
<path d="M67.6446 39.2413C67.6446 39.3201 67.6446 39.4776 67.5658 39.5564C67.3294 40.4231 66.4627 40.8959 65.596 41.0535C65.3597 41.1323 65.0445 41.1323 64.8081 41.1323C64.1778 41.211 63.6263 41.211 62.9959 41.3686C62.3656 41.5262 61.7353 41.9202 61.1049 42.2353C60.4746 42.5505 59.7655 42.7869 59.1352 42.9444C58.7412 43.0232 58.3473 43.102 57.9533 43.1808C56.2199 43.4172 54.4865 43.2596 52.8319 42.7081C51.8076 42.3929 51.0197 41.5262 50.5469 40.4231C49.8378 38.6897 49.9954 36.4836 51.65 35.4593C53.7774 34.1198 55.1168 36.0108 56.8502 36.7987C57.1654 36.9563 57.4806 37.0351 57.7957 37.1139C58.1897 37.1927 58.5836 37.1927 58.9776 37.1927C59.8443 37.1139 60.711 36.8775 61.4989 36.4836C62.9171 35.7745 64.1778 34.6714 65.4385 33.6471C65.6748 33.4895 65.9112 33.2531 66.2264 33.3319C66.5415 33.4107 66.6991 33.8047 66.6991 34.1986V34.2774C66.6203 34.5926 66.4627 34.9078 66.3839 35.2229C66.2264 36.6412 67.8022 37.9018 67.6446 39.2413Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M67.0149 42.6293L61.1844 13.9494C61.1056 13.6342 61.342 13.3978 61.5784 13.319C61.8935 13.2403 62.1299 13.4766 62.2087 13.713L68.0392 42.393C68.118 42.7081 67.8816 42.9445 67.6453 43.0233C67.4089 43.1021 67.0937 42.8657 67.0149 42.6293Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M67.5664 39.5562C67.3301 40.4229 66.4634 40.8956 65.5967 41.0532C65.3603 41.132 65.0451 41.132 64.8087 41.132C64.8087 41.0532 64.73 40.9744 64.73 40.8956C64.5724 40.5805 64.6512 40.1865 64.9663 39.9501C64.73 39.8713 64.4936 39.7925 64.4148 39.5562C64.2572 39.1622 64.4148 38.6895 64.8087 38.5319L65.0451 38.4531C64.9663 38.4531 64.8875 38.4531 64.8875 38.4531C64.5724 38.4531 64.336 38.2955 64.1784 37.9803C64.0208 37.5864 64.1784 37.1924 64.4936 36.9561C64.336 36.8773 64.0996 36.7197 64.0208 36.5621C63.8633 36.1682 64.0208 35.6954 64.4148 35.5378L66.9361 34.356C66.8573 34.6711 66.6997 34.9863 66.6209 35.3014C66.227 36.7197 68.0392 38.0591 67.5664 39.5562Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M68.8264 38.7684C68.7476 38.532 68.5112 38.3744 68.2748 38.3744L68.5112 38.2956C68.9052 38.138 69.0628 37.6653 68.9052 37.2713C68.7476 36.9562 68.3536 36.7986 68.0385 36.8774L68.1961 36.7986C68.59 36.641 68.7476 36.1683 68.59 35.7743C68.5112 35.5379 68.3536 35.4591 68.1173 35.3804C68.4324 35.144 68.59 34.75 68.4324 34.3561C68.2748 33.9621 67.8021 33.8045 67.4081 33.9621L64.7292 35.2228C64.3353 35.3804 64.1777 35.8531 64.3353 36.2471C64.4141 36.4834 64.5717 36.5622 64.808 36.641C64.4929 36.8774 64.3353 37.2713 64.4929 37.6653C64.6505 37.9805 65.0444 38.138 65.3596 38.0593L65.1232 38.138C64.7292 38.2956 64.5717 38.7684 64.7292 39.1623C64.808 39.3987 65.0444 39.5563 65.2808 39.5563C64.9656 39.7927 64.8868 40.1866 65.0444 40.5018C65.202 40.8957 65.6747 41.0533 66.0687 40.8957L68.4324 39.7927C68.8264 39.6351 68.984 39.2411 68.8264 38.7684Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path opacity="0.4" d="M45.1894 24.4287C44.8743 24.9014 44.2439 25.059 43.7712 24.8226C43.6136 24.7438 43.3772 24.665 43.2196 24.5862C41.0135 23.7195 38.6498 24.2711 38.0194 25.9257C37.8618 26.3196 37.3103 26.2408 37.3103 25.8469C37.2315 25.2954 37.3103 24.665 37.5467 24.1135C38.3346 21.9861 40.9347 21.0406 43.3772 21.9861C44.0076 22.2225 44.5591 22.6165 45.0318 23.0104C45.4258 23.4044 45.4258 23.9559 45.1894 24.4287Z" fill="#a3a3a3"/>
<path opacity="0.4" d="M37.6256 36.4835C39.2014 37.2714 42.4319 38.2956 44.4016 38.4532C44.7956 38.532 44.9532 38.8472 44.8744 39.2411C43.5349 42.3928 42.4319 45.5444 42.0379 46.7263C41.9591 47.0415 41.6439 47.199 41.4076 47.1203C39.9893 46.7263 36.0498 45.6232 34.474 44.9929C34.1588 44.9141 34.08 44.5989 34.1588 44.2838C35.4982 40.9745 36.4437 38.0593 36.8377 36.7986C36.9953 36.4835 37.3892 36.3259 37.6256 36.4835Z" fill="#a3a3a3"/>
<path d="M59.2145 42.8654C58.8205 42.9442 58.4266 43.023 58.0326 43.1018C57.4023 42.1563 57.0083 40.8956 57.0871 39.635C57.1659 38.9258 57.4023 37.9016 57.8751 37.1136C58.269 37.1924 58.663 37.1924 59.0569 37.1924C58.5842 37.9016 58.1902 38.9258 58.1114 39.7138C58.0326 40.8956 58.5054 42.1563 59.2145 42.8654Z" fill="#a3a3a3"/>
<path d="M31.2432 32.6228C29.825 33.5683 28.5643 34.7501 27.4613 36.0896C27.2249 35.8532 26.9097 35.538 26.6733 35.3017C27.6976 34.041 28.9583 32.9379 30.2977 31.9924L31.2432 32.6228Z" fill="#a3a3a3"/>
<path d="M82.4579 24.2708C75.0515 21.8283 71.9787 31.1257 64.4147 27.1861L61.7358 14.1068C69.9301 17.5736 73.0818 9.69449 79.779 11.1915L82.4579 24.2708Z" fill="white" stroke="#a3a3a3" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" fill="none"><path fill="#10B981" d="M0 0h512v512H0z"/><circle cx="197.76" cy="157.84" r="10" fill="#fff" fill-opacity=".75"/><circle cx="259.76" cy="161.84" r="12" fill="#fff" fill-opacity=".75"/><circle cx="319.76" cy="177.84" r="10" fill="#fff" fill-opacity=".75"/><path d="M344.963 235.676c2.075-12.698-38.872-29.804-90.967-38.094-52.09-8.296-96.404-4.665-98.48 8.033-.257 1.035 0 1.812.263 2.853-1.298-.521-76.714 211.212-76.714 211.212H364.14s-17.621-181.414-20.211-181.414c.515-.772 1.035-1.549 1.035-2.59Z" fill="url(#a)"/><path d="M314.902 227.386c-1.298 8.033-30.839 9.845-66.343 4.402-35.247-5.7-62.982-16.843-61.684-24.618.521-2.59 3.888-4.665 9.331-5.7-18.141.777-30.062 4.145-31.096 9.845-1.555 10.628 34.726 25.139 81.373 32.657 46.647 7.512 85.782 4.665 87.594-5.7 1.041-6.226-9.33-12.961-26.431-19.439 4.923 2.847 7.513 5.957 7.256 8.553Z" fill="#A7F3D0" fill-opacity=".5"/><path d="M333.557 157.413c-3.104-32.137-27.729-59.351-60.9-64.53-33.172-5.186-64.531 12.954-77.749 42.238 21.251 1.298 44.057 3.631 67.904 7.518 25.396 3.888 49.237 9.074 70.745 14.774Z" fill="url(#b)"/><path d="M74.142 158.002c-2.59 15.808 30.319 35.247 81.894 51.055-.257-1.04-.257-1.818-.257-2.853 2.07-12.698 46.127-16.328 98.48-8.032 52.347 8.29 93.037 25.396 90.961 38.094-.257 1.04-.514 1.818-1.035 2.589 53.645.778 90.968-7.512 93.557-23.32 3.625-24.104-74.638-56.498-174.93-72.306-100.555-15.808-185.045-9.331-188.67 14.773Zm115.586-1.298c.778-4.145 4.665-7.255 8.81-6.477 4.145.777 7.256 4.665 6.478 8.81-.52 4.145-4.665 6.998-8.81 6.478-4.145-.778-7.255-4.666-6.478-8.811Zm59.866 4.145c.777-5.7 6.22-9.587 11.92-8.547 5.7.778 9.588 6.215 8.553 11.921-1.041 5.442-6.478 9.33-11.92 8.553-5.706-.778-9.594-6.221-8.553-11.927Zm62.975 15.294c.778-4.145 4.665-7.255 8.81-6.478 4.145.778 7.255 4.666 6.478 8.811-.515 4.145-4.665 7.255-8.81 6.477-4.145-.777-7.256-4.665-6.478-8.81Z" fill="url(#c)"/><defs><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 32.7063 -69.3245 0 264.232 124.706)"><stop stop-color="#047857"/><stop offset="1" stop-color="#064E3B"/></radialGradient><radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(255.837 186.754) scale(1389.61)"><stop stop-color="#047857"/><stop offset=".115" stop-color="#064E3B"/></radialGradient><linearGradient id="a" x1="224.998" y1="157.606" x2="224.998" y2="403.696" gradientUnits="userSpaceOnUse"><stop stop-color="#86EFAC" stop-opacity=".75"/><stop offset=".635" stop-color="#fff" stop-opacity=".2"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,272 +0,0 @@
import AppAnnouncement from "./components/app/Announcement.vue";
import AppDeveloperOptions from "./components/app/DeveloperOptions.vue";
import AppFooter from "./components/app/Footer.vue";
import AppFuse from "./components/app/Fuse.vue";
import AppGitHubStarButton from "./components/app/GitHubStarButton.vue";
import AppHeader from "./components/app/Header.vue";
import AppInterceptor from "./components/app/Interceptor.vue";
import AppLogo from "./components/app/Logo.vue";
import AppOptions from "./components/app/Options.vue";
import AppPaneLayout from "./components/app/PaneLayout.vue";
import AppPowerSearch from "./components/app/PowerSearch.vue";
import AppPowerSearchEntry from "./components/app/PowerSearchEntry.vue";
import AppShare from "./components/app/Share.vue";
import AppShortcuts from "./components/app/Shortcuts.vue";
import AppShortcutsEntry from "./components/app/ShortcutsEntry.vue";
import AppSidenav from "./components/app/Sidenav.vue";
import AppSlideOver from "./components/app/SlideOver.vue";
import AppSupport from "./components/app/Support.vue";
import ButtonPrimary from "./components/button/Primary.vue";
import ButtonSecondary from "./components/button/Secondary.vue";
import CollectionsAdd from "./components/collections/Add.vue";
import CollectionsAddFolder from "./components/collections/AddFolder.vue";
import CollectionsAddRequest from "./components/collections/AddRequest.vue";
import CollectionsChooseType from "./components/collections/ChooseType.vue";
import CollectionsEdit from "./components/collections/Edit.vue";
import CollectionsEditFolder from "./components/collections/EditFolder.vue";
import CollectionsEditRequest from "./components/collections/EditRequest.vue";
import CollectionsImportExport from "./components/collections/ImportExport.vue";
import CollectionsSaveRequest from "./components/collections/SaveRequest.vue";
import CollectionsGraphqlAdd from "./components/collections/graphql/Add.vue";
import CollectionsGraphqlAddFolder from "./components/collections/graphql/AddFolder.vue";
import CollectionsGraphqlAddRequest from "./components/collections/graphql/AddRequest.vue";
import CollectionsGraphqlCollection from "./components/collections/graphql/Collection.vue";
import CollectionsGraphqlEdit from "./components/collections/graphql/Edit.vue";
import CollectionsGraphqlEditFolder from "./components/collections/graphql/EditFolder.vue";
import CollectionsGraphqlEditRequest from "./components/collections/graphql/EditRequest.vue";
import CollectionsGraphqlFolder from "./components/collections/graphql/Folder.vue";
import CollectionsGraphqlImportExport from "./components/collections/graphql/ImportExport.vue";
import CollectionsGraphqlRequest from "./components/collections/graphql/Request.vue";
import CollectionsGraphql from "./components/collections/graphql/index.vue";
import Collections from "./components/collections/index.vue";
import CollectionsMyCollection from "./components/collections/my/Collection.vue";
import CollectionsMyFolder from "./components/collections/my/Folder.vue";
import CollectionsMyRequest from "./components/collections/my/Request.vue";
import CollectionsTeamsCollection from "./components/collections/teams/Collection.vue";
import CollectionsTeamsFolder from "./components/collections/teams/Folder.vue";
import CollectionsTeamsRequest from "./components/collections/teams/Request.vue";
import DocsCollection from "./components/docs/Collection.vue";
import DocsFolder from "./components/docs/Folder.vue";
import DocsRequest from "./components/docs/Request.vue";
import EnvironmentsDetails from "./components/environments/Details.vue";
import EnvironmentsEnvironment from "./components/environments/Environment.vue";
import EnvironmentsImportExport from "./components/environments/ImportExport.vue";
import Environments from "./components/environments/index.vue";
import FirebaseLogin from "./components/firebase/Login.vue";
import FirebaseLogout from "./components/firebase/Logout.vue";
import GraphqlAuthorization from "./components/graphql/Authorization.vue";
import GraphqlField from "./components/graphql/Field.vue";
import GraphqlRequest from "./components/graphql/Request.vue";
import GraphqlRequestOptions from "./components/graphql/RequestOptions.vue";
import GraphqlResponse from "./components/graphql/Response.vue";
import GraphqlSidebar from "./components/graphql/Sidebar.vue";
import GraphqlType from "./components/graphql/Type.vue";
import GraphqlTypeLink from "./components/graphql/TypeLink.vue";
import HistoryGraphqlCard from "./components/history/graphql/Card.vue";
import History from "./components/history/index.vue";
import HistoryRestCard from "./components/history/rest/Card.vue";
import HttpAuthorization from "./components/http/Authorization.vue";
import HttpBody from "./components/http/Body.vue";
import HttpBodyParameters from "./components/http/BodyParameters.vue";
import HttpCodegenModal from "./components/http/CodegenModal.vue";
import HttpHeaders from "./components/http/Headers.vue";
import HttpImportCurl from "./components/http/ImportCurl.vue";
import HttpOAuth2Authorization from "./components/http/OAuth2Authorization.vue";
import HttpParameters from "./components/http/Parameters.vue";
import HttpPreRequestScript from "./components/http/PreRequestScript.vue";
import HttpRawBody from "./components/http/RawBody.vue";
import HttpReqChangeConfirmModal from "./components/http/ReqChangeConfirmModal.vue";
import HttpRequest from "./components/http/Request.vue";
import HttpRequestOptions from "./components/http/RequestOptions.vue";
import HttpResponse from "./components/http/Response.vue";
import HttpResponseMeta from "./components/http/ResponseMeta.vue";
import HttpSidebar from "./components/http/Sidebar.vue";
import HttpTestResult from "./components/http/TestResult.vue";
import HttpTestResultEntry from "./components/http/TestResultEntry.vue";
import HttpTestResultEnv from "./components/http/TestResultEnv.vue";
import HttpTestResultReport from "./components/http/TestResultReport.vue";
import HttpTests from "./components/http/Tests.vue";
import HttpURLEncodedParams from "./components/http/URLEncodedParams.vue";
import LensesHeadersRenderer from "./components/lenses/HeadersRenderer.vue";
import LensesHeadersRendererEntry from "./components/lenses/HeadersRendererEntry.vue";
import LensesResponseBodyRenderer from "./components/lenses/ResponseBodyRenderer.vue";
import LensesRenderersHTMLLensRenderer from "./components/lenses/renderers/HTMLLensRenderer.vue";
import LensesRenderersImageLensRenderer from "./components/lenses/renderers/ImageLensRenderer.vue";
import LensesRenderersJSONLensRenderer from "./components/lenses/renderers/JSONLensRenderer.vue";
import LensesRenderersPDFLensRenderer from "./components/lenses/renderers/PDFLensRenderer.vue";
import LensesRenderersRawLensRenderer from "./components/lenses/renderers/RawLensRenderer.vue";
import LensesRenderersXMLLensRenderer from "./components/lenses/renderers/XMLLensRenderer.vue";
import ProfilePicture from "./components/profile/Picture.vue";
import ProfileShortcode from "./components/profile/Shortcode.vue";
import RealtimeCommunication from "./components/realtime/Communication.vue";
import RealtimeLog from "./components/realtime/Log.vue";
import RealtimeLogEntry from "./components/realtime/LogEntry.vue";
import SmartAccentModePicker from "./components/smart/AccentModePicker.vue";
import SmartAnchor from "./components/smart/Anchor.vue";
import SmartAutoComplete from "./components/smart/AutoComplete.vue";
import SmartChangeLanguage from "./components/smart/ChangeLanguage.vue";
import SmartCheckbox from "./components/smart/Checkbox.vue";
import SmartColorModePicker from "./components/smart/ColorModePicker.vue";
import SmartConfirmModal from "./components/smart/ConfirmModal.vue";
import SmartEnvInput from "./components/smart/EnvInput.vue";
import SmartExpand from "./components/smart/Expand.vue";
import SmartFileChip from "./components/smart/FileChip.vue";
import SmartFontSizePicker from "./components/smart/FontSizePicker.vue";
import SmartIcon from "./components/smart/Icon.vue";
import SmartIntersection from "./components/smart/Intersection.vue";
import SmartItem from "./components/smart/Item.vue";
import SmartLoadingIndicator from "./components/smart/LoadingIndicator.vue";
import SmartModal from "./components/smart/Modal.vue";
import SmartProgressRing from "./components/smart/ProgressRing.vue";
import SmartRadio from "./components/smart/Radio.vue";
import SmartRadioGroup from "./components/smart/RadioGroup.vue";
import SmartSpinner from "./components/smart/Spinner.vue";
import SmartTab from "./components/smart/Tab.vue";
import SmartTabs from "./components/smart/Tabs.vue";
import SmartToggle from "./components/smart/Toggle.vue";
import TabPrimary from "./components/tab/Primary.vue";
import TabSecondary from "./components/tab/Secondary.vue";
import TeamsAdd from "./components/teams/Add.vue";
import TeamsEdit from "./components/teams/Edit.vue";
import TeamsInvite from "./components/teams/Invite.vue";
import TeamsModal from "./components/teams/Modal.vue";
import TeamsTeam from "./components/teams/Team.vue";
import Teams from "./components/teams/index.vue";
declare global {
interface __VLS_GlobalComponents {
AppAnnouncement: typeof AppAnnouncement;
AppDeveloperOptions: typeof AppDeveloperOptions;
AppFooter: typeof AppFooter;
AppFuse: typeof AppFuse;
AppGitHubStarButton: typeof AppGitHubStarButton;
AppHeader: typeof AppHeader;
AppInterceptor: typeof AppInterceptor;
AppLogo: typeof AppLogo;
AppOptions: typeof AppOptions;
AppPaneLayout: typeof AppPaneLayout;
AppPowerSearch: typeof AppPowerSearch;
AppPowerSearchEntry: typeof AppPowerSearchEntry;
AppShare: typeof AppShare;
AppShortcuts: typeof AppShortcuts;
AppShortcutsEntry: typeof AppShortcutsEntry;
AppSidenav: typeof AppSidenav;
AppSlideOver: typeof AppSlideOver;
AppSupport: typeof AppSupport;
ButtonPrimary: typeof ButtonPrimary;
ButtonSecondary: typeof ButtonSecondary;
CollectionsAdd: typeof CollectionsAdd;
CollectionsAddFolder: typeof CollectionsAddFolder;
CollectionsAddRequest: typeof CollectionsAddRequest;
CollectionsChooseType: typeof CollectionsChooseType;
CollectionsEdit: typeof CollectionsEdit;
CollectionsEditFolder: typeof CollectionsEditFolder;
CollectionsEditRequest: typeof CollectionsEditRequest;
CollectionsImportExport: typeof CollectionsImportExport;
CollectionsSaveRequest: typeof CollectionsSaveRequest;
CollectionsGraphqlAdd: typeof CollectionsGraphqlAdd;
CollectionsGraphqlAddFolder: typeof CollectionsGraphqlAddFolder;
CollectionsGraphqlAddRequest: typeof CollectionsGraphqlAddRequest;
CollectionsGraphqlCollection: typeof CollectionsGraphqlCollection;
CollectionsGraphqlEdit: typeof CollectionsGraphqlEdit;
CollectionsGraphqlEditFolder: typeof CollectionsGraphqlEditFolder;
CollectionsGraphqlEditRequest: typeof CollectionsGraphqlEditRequest;
CollectionsGraphqlFolder: typeof CollectionsGraphqlFolder;
CollectionsGraphqlImportExport: typeof CollectionsGraphqlImportExport;
CollectionsGraphqlRequest: typeof CollectionsGraphqlRequest;
CollectionsGraphql: typeof CollectionsGraphql;
Collections: typeof Collections;
CollectionsMyCollection: typeof CollectionsMyCollection;
CollectionsMyFolder: typeof CollectionsMyFolder;
CollectionsMyRequest: typeof CollectionsMyRequest;
CollectionsTeamsCollection: typeof CollectionsTeamsCollection;
CollectionsTeamsFolder: typeof CollectionsTeamsFolder;
CollectionsTeamsRequest: typeof CollectionsTeamsRequest;
DocsCollection: typeof DocsCollection;
DocsFolder: typeof DocsFolder;
DocsRequest: typeof DocsRequest;
EnvironmentsDetails: typeof EnvironmentsDetails;
EnvironmentsEnvironment: typeof EnvironmentsEnvironment;
EnvironmentsImportExport: typeof EnvironmentsImportExport;
Environments: typeof Environments;
FirebaseLogin: typeof FirebaseLogin;
FirebaseLogout: typeof FirebaseLogout;
GraphqlAuthorization: typeof GraphqlAuthorization;
GraphqlField: typeof GraphqlField;
GraphqlRequest: typeof GraphqlRequest;
GraphqlRequestOptions: typeof GraphqlRequestOptions;
GraphqlResponse: typeof GraphqlResponse;
GraphqlSidebar: typeof GraphqlSidebar;
GraphqlType: typeof GraphqlType;
GraphqlTypeLink: typeof GraphqlTypeLink;
HistoryGraphqlCard: typeof HistoryGraphqlCard;
History: typeof History;
HistoryRestCard: typeof HistoryRestCard;
HttpAuthorization: typeof HttpAuthorization;
HttpBody: typeof HttpBody;
HttpBodyParameters: typeof HttpBodyParameters;
HttpCodegenModal: typeof HttpCodegenModal;
HttpHeaders: typeof HttpHeaders;
HttpImportCurl: typeof HttpImportCurl;
HttpOAuth2Authorization: typeof HttpOAuth2Authorization;
HttpParameters: typeof HttpParameters;
HttpPreRequestScript: typeof HttpPreRequestScript;
HttpRawBody: typeof HttpRawBody;
HttpReqChangeConfirmModal: typeof HttpReqChangeConfirmModal;
HttpRequest: typeof HttpRequest;
HttpRequestOptions: typeof HttpRequestOptions;
HttpResponse: typeof HttpResponse;
HttpResponseMeta: typeof HttpResponseMeta;
HttpSidebar: typeof HttpSidebar;
HttpTestResult: typeof HttpTestResult;
HttpTestResultEntry: typeof HttpTestResultEntry;
HttpTestResultEnv: typeof HttpTestResultEnv;
HttpTestResultReport: typeof HttpTestResultReport;
HttpTests: typeof HttpTests;
HttpURLEncodedParams: typeof HttpURLEncodedParams;
LensesHeadersRenderer: typeof LensesHeadersRenderer;
LensesHeadersRendererEntry: typeof LensesHeadersRendererEntry;
LensesResponseBodyRenderer: typeof LensesResponseBodyRenderer;
LensesRenderersHTMLLensRenderer: typeof LensesRenderersHTMLLensRenderer;
LensesRenderersImageLensRenderer: typeof LensesRenderersImageLensRenderer;
LensesRenderersJSONLensRenderer: typeof LensesRenderersJSONLensRenderer;
LensesRenderersPDFLensRenderer: typeof LensesRenderersPDFLensRenderer;
LensesRenderersRawLensRenderer: typeof LensesRenderersRawLensRenderer;
LensesRenderersXMLLensRenderer: typeof LensesRenderersXMLLensRenderer;
ProfilePicture: typeof ProfilePicture;
ProfileShortcode: typeof ProfileShortcode;
RealtimeCommunication: typeof RealtimeCommunication;
RealtimeLog: typeof RealtimeLog;
RealtimeLogEntry: typeof RealtimeLogEntry;
SmartAccentModePicker: typeof SmartAccentModePicker;
SmartAnchor: typeof SmartAnchor;
SmartAutoComplete: typeof SmartAutoComplete;
SmartChangeLanguage: typeof SmartChangeLanguage;
SmartCheckbox: typeof SmartCheckbox;
SmartColorModePicker: typeof SmartColorModePicker;
SmartConfirmModal: typeof SmartConfirmModal;
SmartEnvInput: typeof SmartEnvInput;
SmartExpand: typeof SmartExpand;
SmartFileChip: typeof SmartFileChip;
SmartFontSizePicker: typeof SmartFontSizePicker;
SmartIcon: typeof SmartIcon;
SmartIntersection: typeof SmartIntersection;
SmartItem: typeof SmartItem;
SmartLoadingIndicator: typeof SmartLoadingIndicator;
SmartModal: typeof SmartModal;
SmartProgressRing: typeof SmartProgressRing;
SmartRadio: typeof SmartRadio;
SmartRadioGroup: typeof SmartRadioGroup;
SmartSpinner: typeof SmartSpinner;
SmartTab: typeof SmartTab;
SmartTabs: typeof SmartTabs;
SmartToggle: typeof SmartToggle;
TabPrimary: typeof TabPrimary;
TabSecondary: typeof TabSecondary;
TeamsAdd: typeof TeamsAdd;
TeamsEdit: typeof TeamsEdit;
TeamsInvite: typeof TeamsInvite;
TeamsModal: typeof TeamsModal;
TeamsTeam: typeof TeamsTeam;
Teams: typeof Teams;
}
}

View File

@@ -1,22 +0,0 @@
<template>
<div
class="relative flex items-center px-4 py-2 transition bg-error text-tiny group"
role="alert"
>
<icon-lucide-info class="mr-2" />
<span class="text-secondaryDark">
<span class="md:hidden">
{{ t("helpers.offline_short") }}
</span>
<span class="<md:hidden">
{{ t("helpers.offline") }}
</span>
</span>
</div>
</template>
<script setup lang="ts">
import { useI18n } from "~/composables/i18n"
const t = useI18n()
</script>

View File

@@ -1,70 +0,0 @@
<template>
<div key="outputHash" class="flex flex-col flex-1 overflow-auto">
<div class="flex flex-col">
<AppPowerSearchEntry
v-for="(shortcut, shortcutIndex) in searchResults"
:key="`shortcut-${shortcutIndex}`"
:active="shortcutIndex === selectedEntry"
:shortcut="shortcut.item"
@action="emit('action', shortcut.item.action)"
@mouseover="selectedEntry = shortcutIndex"
/>
</div>
<div
v-if="searchResults.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<icon-lucide-search class="pb-2 opacity-75 svg-icons" />
<span class="my-2 text-center">
{{ t("state.nothing_found") }} "{{ search }}"
</span>
</div>
</div>
</template>
<script setup lang="ts">
import { computed, onUnmounted, onMounted } from "vue"
import Fuse from "fuse.js"
import { useArrowKeysNavigation } from "~/helpers/powerSearchNavigation"
import { HoppAction } from "~/helpers/actions"
import { useI18n } from "@composables/i18n"
const t = useI18n()
const props = defineProps<{
input: Record<string, any>[]
search: string
}>()
const emit = defineEmits<{
(e: "action", action: HoppAction): void
}>()
const options = {
keys: ["keys", "label", "action", "tags"],
}
const fuse = new Fuse(props.input, options)
const searchResults = computed(() => fuse.search(props.search))
const searchResultsItems = computed(() =>
searchResults.value.map((searchResult) => searchResult.item)
)
const emitSearchAction = (action: HoppAction) => emit("action", action)
const { bindArrowKeysListeners, unbindArrowKeysListeners, selectedEntry } =
useArrowKeysNavigation(searchResultsItems, {
onEnter: emitSearchAction,
stopPropagation: true,
})
onMounted(() => {
bindArrowKeysListeners()
})
onUnmounted(() => {
unbindArrowKeysListeners()
})
</script>

View File

@@ -1,215 +0,0 @@
<template>
<div>
<header
class="flex items-center justify-between flex-1 px-2 py-2 overflow-x-auto overflow-y-hidden space-x-2"
>
<div class="inline-flex items-center space-x-2">
<ButtonSecondary
class="tracking-wide !font-bold !text-secondaryDark hover:bg-primaryDark focus-visible:bg-primaryDark uppercase"
:label="t('app.name')"
to="/"
/>
<AppGitHubStarButton class="mt-1.5 transition <sm:hidden" />
</div>
<div class="inline-flex items-center space-x-2">
<ButtonSecondary
v-if="showInstallButton"
v-tippy="{ theme: 'tooltip' }"
:title="t('header.install_pwa')"
:icon="IconDownload"
class="rounded hover:bg-primaryDark focus-visible:bg-primaryDark"
@click="installPWA()"
/>
<ButtonSecondary
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
v-tippy="{ theme: 'tooltip', allowHTML: true }"
:title="`${
mdAndLarger ? t('support.title') : t('app.options')
} <kbd>?</kbd>`"
:icon="IconLifeBuoy"
class="rounded hover:bg-primaryDark focus-visible:bg-primaryDark"
@click="invokeAction('modals.support.toggle')"
/>
<ButtonSecondary
v-if="currentUser === null"
:icon="IconUploadCloud"
:label="t('header.save_workspace')"
filled
class="hidden md:flex"
@click="showLogin = true"
/>
<ButtonPrimary
v-if="currentUser === null"
:label="t('header.login')"
@click="showLogin = true"
/>
<div v-else class="inline-flex items-center space-x-2">
<ButtonPrimary
v-tippy="{ theme: 'tooltip' }"
:title="t('team.invite_tooltip')"
:label="t('team.invite')"
:icon="IconUserPlus"
class="!bg-green-500 !bg-opacity-15 !text-green-500 !hover:bg-opacity-10 !hover:bg-green-400 !hover:text-green-600"
@click="showTeamsModal = true"
/>
<span class="px-2">
<tippy
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ProfilePicture
v-if="currentUser.photoURL"
v-tippy="{
theme: 'tooltip',
}"
:url="currentUser.photoURL"
:alt="currentUser.displayName"
:title="currentUser.displayName"
indicator
:indicator-styles="
network.isOnline ? 'bg-green-500' : 'bg-red-500'
"
/>
<ProfilePicture
v-else
v-tippy="{ theme: 'tooltip' }"
:title="currentUser.displayName"
:initial="currentUser.displayName"
indicator
:indicator-styles="
network.isOnline ? 'bg-green-500' : 'bg-red-500'
"
/>
<template #content="{ hide }">
<div class="flex flex-col px-2 text-tiny">
<span class="inline-flex font-semibold truncate">
{{ currentUser.displayName }}
</span>
<span class="inline-flex truncate text-secondaryLight">
{{ currentUser.email }}
</span>
</div>
<hr />
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.enter="profile.$el.click()"
@keyup.s="settings.$el.click()"
@keyup.l="logout.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="profile"
to="/profile"
:icon="IconUser"
:label="t('navigation.profile')"
:shortcut="['↩']"
@click="hide()"
/>
<SmartItem
ref="settings"
to="/settings"
:icon="IconSettings"
:label="t('navigation.settings')"
:shortcut="['S']"
@click="hide()"
/>
<FirebaseLogout
ref="logout"
:shortcut="['L']"
@confirm-logout="hide()"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
</header>
<AppAnnouncement v-if="!network.isOnline" />
<FirebaseLogin :show="showLogin" @hide-modal="showLogin = false" />
<TeamsModal :show="showTeamsModal" @hide-modal="showTeamsModal = false" />
</div>
</template>
<script setup lang="ts">
import { computed, onMounted, reactive, ref } from "vue"
import IconUser from "~icons/lucide/user"
import IconSettings from "~icons/lucide/settings"
import IconDownload from "~icons/lucide/download"
import IconSearch from "~icons/lucide/search"
import IconLifeBuoy from "~icons/lucide/life-buoy"
import IconUploadCloud from "~icons/lucide/upload-cloud"
import IconUserPlus from "~icons/lucide/user-plus"
import { breakpointsTailwind, useBreakpoints, useNetwork } from "@vueuse/core"
import { pwaDefferedPrompt, installPWA } from "@modules/pwa"
import { probableUser$ } from "@helpers/fb/auth"
import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { useReadonlyStream } from "@composables/stream"
import { invokeAction } from "@helpers/actions"
const t = useI18n()
const toast = useToast()
/**
* Once the PWA code is initialized, this holds a method
* that can be called to show the user the installation
* prompt.
*/
const showInstallButton = computed(() => !!pwaDefferedPrompt.value)
const showLogin = ref(false)
const showTeamsModal = ref(false)
const breakpoints = useBreakpoints(breakpointsTailwind)
const mdAndLarger = breakpoints.greater("md")
const network = reactive(useNetwork())
const currentUser = useReadonlyStream(probableUser$, null)
onMounted(() => {
const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes"
if (!cookiesAllowed) {
toast.show(`${t("app.we_use_cookies")}`, {
duration: 0,
action: [
{
text: `${t("action.learn_more")}`,
onClick: (_, toastObject) => {
setLocalConfig("cookiesAllowed", "yes")
toastObject.goAway(0)
window.open("https://docs.hoppscotch.io/privacy", "_blank")?.focus()
},
},
{
text: `${t("action.dismiss")}`,
onClick: (_, toastObject) => {
setLocalConfig("cookiesAllowed", "yes")
toastObject.goAway(0)
},
},
],
})
}
})
// Template refs
const tippyActions = ref<any | null>(null)
const profile = ref<any | null>(null)
const settings = ref<any | null>(null)
const logout = ref<any | null>(null)
</script>

View File

@@ -1,95 +0,0 @@
<template>
<div class="flex flex-col space-y-4">
<div class="flex flex-col px-4 pt-2">
<h2 class="inline-flex pb-1 font-semibold text-secondaryDark">
{{ t("settings.interceptor") }}
</h2>
<p class="inline-flex text-tiny">
{{ t("settings.interceptor_description") }}
</p>
</div>
<SmartRadioGroup v-model="interceptorSelection" :radios="interceptors" />
<div
v-if="interceptorSelection == 'EXTENSIONS_ENABLED' && !extensionVersion"
class="flex space-x-2"
>
<ButtonSecondary
to="https://chrome.google.com/webstore/detail/hoppscotch-browser-extens/amknoiejhlmhancpahfcfcfhllgkpbld"
blank
:icon="IconChrome"
label="Chrome"
outline
class="!flex-1"
/>
<ButtonSecondary
to="https://addons.mozilla.org/en-US/firefox/addon/hoppscotch"
blank
:icon="IconFirefox"
label="Firefox"
outline
class="!flex-1"
/>
</div>
</div>
</template>
<script setup lang="ts">
import IconChrome from "~icons/brands/chrome"
import IconFirefox from "~icons/brands/firefox"
import { computed } from "vue"
import { applySetting, toggleSetting } from "~/newstore/settings"
import { useSetting } from "@composables/settings"
import { useI18n } from "@composables/i18n"
import { useReadonlyStream } from "@composables/stream"
import { extensionStatus$ } from "~/newstore/HoppExtension"
const t = useI18n()
const PROXY_ENABLED = useSetting("PROXY_ENABLED")
const EXTENSIONS_ENABLED = useSetting("EXTENSIONS_ENABLED")
const currentExtensionStatus = useReadonlyStream(extensionStatus$, null)
const extensionVersion = computed(() => {
return currentExtensionStatus.value === "available"
? window.__POSTWOMAN_EXTENSION_HOOK__?.getVersion() ?? null
: null
})
const interceptors = computed(() => [
{ value: "BROWSER_ENABLED" as const, label: t("state.none") },
{ value: "PROXY_ENABLED" as const, label: t("settings.proxy") },
{
value: "EXTENSIONS_ENABLED" as const,
label:
`${t("settings.extensions")}: ` +
(extensionVersion.value !== null
? `v${extensionVersion.value.major}.${extensionVersion.value.minor}`
: t("settings.extension_ver_not_reported")),
},
])
type InterceptorMode = typeof interceptors["value"][number]["value"]
const interceptorSelection = computed<InterceptorMode>({
get() {
if (PROXY_ENABLED.value) return "PROXY_ENABLED"
if (EXTENSIONS_ENABLED.value) return "EXTENSIONS_ENABLED"
return "BROWSER_ENABLED"
},
set(val) {
if (val === "EXTENSIONS_ENABLED") {
applySetting("EXTENSIONS_ENABLED", true)
if (PROXY_ENABLED.value) toggleSetting("PROXY_ENABLED")
}
if (val === "PROXY_ENABLED") {
applySetting("PROXY_ENABLED", true)
if (EXTENSIONS_ENABLED.value) toggleSetting("EXTENSIONS_ENABLED")
}
if (val === "BROWSER_ENABLED") {
applySetting("PROXY_ENABLED", false)
applySetting("EXTENSIONS_ENABLED", false)
}
},
})
</script>

View File

@@ -1,67 +0,0 @@
<template>
<svg
xmlns="http://www.w3.org/2000/svg"
width="512"
height="512"
viewBox="0 0 512 512"
fill="none"
>
<rect width="512" height="512" fill="#10B981" />
<circle cx="197.76" cy="157.84" r="10" fill="white" fill-opacity="0.75" />
<circle cx="259.76" cy="161.84" r="12" fill="white" fill-opacity="0.75" />
<circle cx="319.76" cy="177.84" r="10" fill="white" fill-opacity="0.75" />
<path
d="M344.963 235.676C347.038 222.978 306.091 205.872 253.996 197.582C201.906 189.286 157.592 192.917 155.516 205.615C155.259 206.65 155.516 207.427 155.779 208.468C154.481 207.947 79.0651 419.68 79.0651 419.68H364.139C364.139 419.68 346.518 238.266 343.928 238.266C344.443 237.494 344.963 236.717 344.963 235.676Z"
fill="url(#paint0_linear_106_2)"
/>
<path
d="M314.902 227.386C313.604 235.419 284.063 237.231 248.559 231.788C213.312 226.088 185.577 214.945 186.875 207.17C187.396 204.58 190.763 202.505 196.206 201.47C178.065 202.247 166.144 205.615 165.11 211.315C163.555 221.943 199.836 236.454 246.483 243.972C293.13 251.484 332.265 248.637 334.077 238.272C335.118 232.046 324.747 225.311 307.646 218.833C312.569 221.68 315.159 224.79 314.902 227.386Z"
fill="#A7F3D0"
fill-opacity="0.5"
/>
<path
d="M333.557 157.413C330.453 125.276 305.828 98.0618 272.657 92.8821C239.485 87.6965 208.126 105.837 194.908 135.121C216.159 136.419 238.965 138.752 262.812 142.639C288.208 146.527 312.049 151.713 333.557 157.413Z"
fill="url(#paint1_radial_106_2)"
/>
<path
d="M74.1425 158.002C71.5527 173.81 104.461 193.249 156.036 209.057C155.779 208.017 155.779 207.239 155.779 206.204C157.849 193.506 201.906 189.876 254.259 198.172C306.606 206.462 347.296 223.568 345.22 236.266C344.963 237.306 344.706 238.084 344.185 238.855C397.83 239.633 435.153 231.343 437.742 215.535C441.367 191.431 363.104 159.037 262.812 143.229C162.257 127.421 77.7672 133.898 74.1425 158.002ZM189.728 156.704C190.506 152.559 194.393 149.449 198.538 150.227C202.683 151.004 205.794 154.892 205.016 159.037C204.496 163.182 200.351 166.035 196.206 165.515C192.061 164.737 188.951 160.849 189.728 156.704ZM249.594 160.849C250.371 155.149 255.814 151.262 261.514 152.302C267.214 153.08 271.102 158.517 270.067 164.223C269.026 169.665 263.589 173.553 258.147 172.776C252.441 171.998 248.553 166.555 249.594 160.849ZM312.569 176.143C313.347 171.998 317.234 168.888 321.379 169.665C325.524 170.443 328.634 174.331 327.857 178.476C327.342 182.621 323.192 185.731 319.047 184.953C314.902 184.176 311.791 180.288 312.569 176.143Z"
fill="url(#paint2_radial_106_2)"
/>
<defs>
<linearGradient
id="paint0_linear_106_2"
x1="224.998"
y1="157.606"
x2="224.998"
y2="403.696"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#86EFAC" stop-opacity="0.75" />
<stop offset="0.635417" stop-color="white" stop-opacity="0.2" />
<stop offset="1" stop-color="white" stop-opacity="0" />
</linearGradient>
<radialGradient
id="paint1_radial_106_2"
cx="0"
cy="0"
r="1"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(264.232 124.706) rotate(90) scale(32.7063 69.3245)"
>
<stop stop-color="#047857" />
<stop offset="1" stop-color="#064E3B" />
</radialGradient>
<radialGradient
id="paint2_radial_106_2"
cx="0"
cy="0"
r="1"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(255.837 186.754) scale(1389.61 1389.61)"
>
<stop stop-color="#047857" />
<stop offset="0.114583" stop-color="#064E3B" />
</radialGradient>
</defs>
</svg>
</template>

View File

@@ -1,222 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('app.options')"
max-width="sm:max-w-md"
class="text-sm"
@close="emit('hide-modal')"
>
<template #body>
<div class="flex flex-col space-y-2">
<h2 class="p-2 font-semibold font-bold text-secondaryDark">
{{ t("layout.name") }}
</h2>
<SmartItem
:icon="IconSidebar"
:label="EXPAND_NAVIGATION ? t('hide.sidebar') : t('show.sidebar')"
:description="t('layout.collapse_sidebar')"
:info-icon="IconChevronRight"
active
@click="expandNavigation"
/>
<SmartItem
:icon="IconSidebarOpen"
:label="SIDEBAR ? t('hide.collection') : t('show.collection')"
:description="t('layout.collapse_collection')"
:info-icon="IconChevronRight"
active
@click="expandCollection"
/>
<h2 class="p-2 font-semibold font-bold text-secondaryDark">
{{ t("support.title") }}
</h2>
<SmartItem
:icon="IconBook"
:label="t('app.documentation')"
to="https://docs.hoppscotch.io"
:description="t('support.documentation')"
:info-icon="IconChevronRight"
active
blank
@click="hideModal()"
/>
<SmartItem
:icon="IconGift"
:label="t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
:description="t('support.changelog')"
:info-icon="IconChevronRight"
active
blank
@click="hideModal()"
/>
<SmartItem
:icon="IconActivity"
:label="t('app.status')"
to="https://status.hoppscotch.io"
blank
:description="t('app.status_description')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconLock"
:label="`${t('app.terms_and_privacy')}`"
to="https://docs.hoppscotch.io/privacy"
blank
:description="t('app.terms_and_privacy')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<h2 class="p-2 font-semibold font-bold text-secondaryDark">
{{ t("settings.follow") }}
</h2>
<SmartItem
:icon="IconDiscord"
:label="t('app.discord')"
to="https://hoppscotch.io/discord"
blank
:description="t('app.join_discord_community')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconTwitter"
:label="t('app.twitter')"
to="https://hoppscotch.io/twitter"
blank
:description="t('support.twitter')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconGithub"
:label="`${t('app.github')}`"
to="https://github.com/hoppscotch/hoppscotch"
blank
:description="t('support.github')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconMessageCircle"
:label="t('app.chat_with_us')"
:description="t('support.chat')"
:info-icon="IconChevronRight"
active
@click="chatWithUs()"
/>
<SmartItem
:icon="IconUserPlus"
:label="`${t('app.invite')}`"
:description="t('shortcut.miscellaneous.invite')"
:info-icon="IconChevronRight"
active
@click="expandInvite()"
/>
<SmartItem
v-if="navigatorShare"
v-tippy="{ theme: 'tooltip' }"
:icon="IconShare2"
:label="`${t('request.share')}`"
:description="t('request.share_description')"
:info-icon="IconChevronRight"
active
@click="nativeShare()"
/>
</div>
<AppShare :show="showShare" @hide-modal="showShare = false" />
</template>
</SmartModal>
</template>
<script setup lang="ts">
import { ref, watch } from "vue"
import IconSidebar from "~icons/lucide/sidebar"
import IconSidebarOpen from "~icons/lucide/sidebar-open"
import IconBook from "~icons/lucide/book"
import IconGift from "~icons/lucide/gift"
import IconActivity from "~icons/lucide/activity"
import IconLock from "~icons/lucide/lock"
import IconDiscord from "~icons/brands/discord"
import IconTwitter from "~icons/brands/twitter"
import IconGithub from "~icons/hopp/github"
import IconMessageCircle from "~icons/lucide/message-circle"
import IconUserPlus from "~icons/lucide/user-plus"
import IconShare2 from "~icons/lucide/share-2"
import IconChevronRight from "~icons/lucide/chevron-right"
import { useSetting } from "@composables/settings"
import { defineActionHandler } from "~/helpers/actions"
import { showChat } from "@modules/crisp"
import { useI18n } from "@composables/i18n"
const t = useI18n()
const navigatorShare = !!navigator.share
const showShare = ref(false)
const ZEN_MODE = useSetting("ZEN_MODE")
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
const SIDEBAR = useSetting("SIDEBAR")
watch(
() => ZEN_MODE.value,
() => {
EXPAND_NAVIGATION.value = !ZEN_MODE.value
}
)
defineProps<{
show: boolean
}>()
defineActionHandler("modals.share.toggle", () => {
showShare.value = !showShare.value
})
const emit = defineEmits<{
(e: "hide-modal"): void
}>()
const chatWithUs = () => {
showChat()
hideModal()
}
const expandNavigation = () => {
EXPAND_NAVIGATION.value = !EXPAND_NAVIGATION.value
hideModal()
}
const expandCollection = () => {
SIDEBAR.value = !SIDEBAR.value
hideModal()
}
const expandInvite = () => {
showShare.value = true
}
const nativeShare = () => {
if (navigator.share) {
navigator
.share({
title: "Hoppscotch",
text: "Hoppscotch • Open source API development ecosystem - Helps you create requests faster, saving precious time on development.",
url: "https://hoppscotch.io",
})
.catch(console.error)
} else {
// fallback
}
}
const hideModal = () => {
emit("hide-modal")
}
</script>

View File

@@ -1,122 +0,0 @@
<template>
<SmartModal
v-if="show"
max-width="sm:max-w-lg"
full-width
@close="emit('hide-modal')"
>
<template #body>
<div class="flex flex-col border-b transition border-dividerLight">
<input
id="command"
v-model="search"
v-focus
type="text"
autocomplete="off"
name="command"
:placeholder="`${t('app.type_a_command_search')}`"
class="flex flex-shrink-0 p-6 text-base bg-transparent text-secondaryDark"
/>
<div
class="flex flex-shrink-0 text-tiny text-secondaryLight px-4 pb-4 justify-between whitespace-nowrap overflow-auto <sm:hidden"
>
<div class="flex items-center">
<kbd class="shortcut-key"></kbd>
<kbd class="shortcut-key"></kbd>
<span class="ml-2 truncate">
{{ t("action.to_navigate") }}
</span>
<kbd class="shortcut-key"></kbd>
<span class="ml-2 truncate">
{{ t("action.to_select") }}
</span>
</div>
<div class="flex items-center">
<kbd class="shortcut-key">ESC</kbd>
<span class="ml-2 truncate">
{{ t("action.to_close") }}
</span>
</div>
</div>
</div>
<AppFuse
v-if="search && show"
:input="fuse"
:search="search"
@action="runAction"
/>
<div
v-else
class="flex flex-col flex-1 overflow-auto space-y-4 divide-y divide-dividerLight"
>
<div
v-for="(map, mapIndex) in mappings"
:key="`map-${mapIndex}`"
class="flex flex-col"
>
<h5 class="px-6 py-2 my-2 text-secondaryLight">
{{ t(map.section) }}
</h5>
<AppPowerSearchEntry
v-for="(shortcut, shortcutIndex) in map.shortcuts"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}`"
:shortcut="shortcut"
:active="shortcutsItems.indexOf(shortcut) === selectedEntry"
@action="runAction"
@mouseover="selectedEntry = shortcutsItems.indexOf(shortcut)"
/>
</div>
</div>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import { ref, computed, watch } from "vue"
import { HoppAction, invokeAction } from "~/helpers/actions"
import { spotlight as mappings, fuse } from "@helpers/shortcuts"
import { useArrowKeysNavigation } from "~/helpers/powerSearchNavigation"
import { useI18n } from "@composables/i18n"
const t = useI18n()
const props = defineProps<{
show: boolean
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
}>()
const search = ref("")
const hideModal = () => {
search.value = ""
emit("hide-modal")
}
const runAction = (command: HoppAction) => {
invokeAction(command)
hideModal()
}
const shortcutsItems = computed(() =>
mappings.reduce(
(shortcuts, section) => [...shortcuts, ...section.shortcuts],
[]
)
)
const { bindArrowKeysListeners, unbindArrowKeysListeners, selectedEntry } =
useArrowKeysNavigation(shortcutsItems, {
onEnter: runAction,
})
watch(
() => props.show,
(show) => {
if (show) bindArrowKeysListeners()
else unbindArrowKeysListeners()
}
)
</script>

View File

@@ -1,74 +0,0 @@
<template>
<button
class="flex items-center flex-1 px-6 py-3 font-medium cursor-pointer transition search-entry focus:outline-none"
:class="{ active: active }"
tabindex="-1"
@click="emit('action', shortcut.action)"
@keydown.enter="emit('action', shortcut.action)"
>
<component
:is="shortcut.icon"
class="mr-4 opacity-50 transition svg-icons"
:class="{ 'opacity-100 text-secondaryDark': active }"
/>
<span
class="flex flex-1 mr-4 transition"
:class="{ 'text-secondaryDark': active }"
>
{{ t(shortcut.label) }}
</span>
<kbd
v-for="(key, keyIndex) in shortcut.keys"
:key="`key-${String(keyIndex)}`"
class="shortcut-key"
>
{{ key }}
</kbd>
</button>
</template>
<script setup lang="ts">
import type { Component } from "vue"
import { useI18n } from "@composables/i18n"
const t = useI18n()
defineProps<{
shortcut: {
label: string
keys: string[]
action: string
icon: object | Component
}
active: boolean
}>()
const emit = defineEmits<{
(e: "action", action: string): void
}>()
</script>
<style lang="scss" scoped>
.search-entry {
@apply relative;
&::after {
@apply absolute;
@apply top-0;
@apply left-0;
@apply bottom-0;
@apply bg-transparent;
@apply z-2;
@apply w-0.5;
content: "";
}
&.active {
@apply bg-primaryLight;
&::after {
@apply bg-accentLight;
}
}
}
</style>

View File

@@ -1,110 +0,0 @@
<template>
<AppSlideOver :show="show" :title="t('app.shortcuts')" @close="close()">
<template #content>
<div class="sticky top-0 z-10 flex flex-col bg-primary">
<div class="flex flex-col px-6 py-4 border-b border-dividerLight">
<input
v-model="filterText"
type="search"
autocomplete="off"
class="flex px-4 py-2 border rounded bg-primaryContrast border-divider hover:border-dividerDark focus-visible:border-dividerDark"
:placeholder="`${t('action.search')}`"
/>
</div>
</div>
<div v-if="filterText" class="flex flex-col divide-y divide-dividerLight">
<details
v-for="(map, mapIndex) in searchResults"
:key="`map-${mapIndex}`"
class="flex flex-col"
open
>
<summary
class="flex items-center flex-1 min-w-0 px-6 py-4 font-semibold cursor-pointer transition focus:outline-none text-secondaryLight hover:text-secondaryDark"
>
<icon-lucide-chevron-right class="mr-2 indicator" />
<span
class="font-semibold truncate capitalize-first text-secondaryDark"
>
{{ t(map.item.section) }}
</span>
</summary>
<div class="flex flex-col px-6 pb-4 space-y-2">
<AppShortcutsEntry
v-for="(shortcut, index) in map.item.shortcuts"
:key="`shortcut-${index}`"
:shortcut="shortcut"
/>
</div>
</details>
<div
v-if="searchResults.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<icon-lucide-search class="pb-2 opacity-75 svg-icons" />
<span class="my-2 text-center">
{{ t("state.nothing_found") }} "{{ filterText }}"
</span>
</div>
</div>
<div v-else class="flex flex-col divide-y divide-dividerLight">
<details
v-for="(map, mapIndex) in mappings"
:key="`map-${mapIndex}`"
class="flex flex-col"
open
>
<summary
class="flex items-center flex-1 min-w-0 px-6 py-4 font-semibold cursor-pointer transition focus:outline-none text-secondaryLight hover:text-secondaryDark"
>
<icon-lucide-chevron-right class="mr-2 indicator" />
<span
class="font-semibold truncate capitalize-first text-secondaryDark"
>
{{ t(map.section) }}
</span>
</summary>
<div class="flex flex-col px-6 pb-4 space-y-2">
<AppShortcutsEntry
v-for="(shortcut, shortcutIndex) in map.shortcuts"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}`"
:shortcut="shortcut"
/>
</div>
</details>
</div>
</template>
</AppSlideOver>
</template>
<script setup lang="ts">
import { computed, ref } from "vue"
import Fuse from "fuse.js"
import mappings from "~/helpers/shortcuts"
import { useI18n } from "@composables/i18n"
const t = useI18n()
defineProps<{
show: boolean
}>()
const options = {
keys: ["shortcuts.label"],
}
const fuse = new Fuse(mappings, options)
const filterText = ref("")
const searchResults = computed(() => fuse.search(filterText.value))
const emit = defineEmits<{
(e: "close"): void
}>()
const close = () => {
filterText.value = ""
emit("close")
}
</script>

View File

@@ -1,66 +0,0 @@
<template>
<div>
<Transition name="fade" appear>
<div
v-if="show"
class="fixed inset-0 z-20 transition-opacity"
@keydown.esc="close()"
>
<div
class="absolute inset-0 bg-primaryLight opacity-90 focus:outline-none"
tabindex="0"
@click="close()"
></div>
</div>
</Transition>
<Transition name="slide" appear>
<aside
v-if="show"
class="fixed top-0 right-0 z-30 flex flex-col h-full max-w-full overflow-auto border-l shadow-xl border-dividerDark bg-primary w-96"
>
<div
class="flex items-center justify-between p-2 border-b border-dividerLight"
>
<h3 class="ml-4 heading">{{ title }}</h3>
<span class="flex items-center">
<kbd class="mr-2 shortcut-key">ESC</kbd>
<ButtonSecondary :icon="IconX" @click="close()" />
</span>
</div>
<slot name="content"></slot>
</aside>
</Transition>
</div>
</template>
<script setup lang="ts">
import { onMounted, watch } from "vue"
import IconX from "~icons/lucide/x"
const props = defineProps<{
show: boolean
title: string
}>()
const emit = defineEmits<{
(e: "close"): void
}>()
watch(
() => props.show,
(show) => {
if (show) document.body.style.setProperty("overflow", "hidden")
else document.body.style.removeProperty("overflow")
}
)
onMounted(() => {
document.addEventListener("keydown", (e) => {
if (e.keyCode === 27 && props.show) close()
})
})
const close = () => {
emit("close")
}
</script>

View File

@@ -1,118 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('support.title')"
max-width="sm:max-w-md"
@close="emit('hide-modal')"
>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
:icon="IconBook"
:label="t('app.documentation')"
to="https://docs.hoppscotch.io"
:description="t('support.documentation')"
:info-icon="IconChevronRight"
active
blank
@click="hideModal()"
/>
<SmartItem
:icon="IconZap"
:label="t('app.keyboard_shortcuts')"
:description="t('support.shortcuts')"
:info-icon="IconChevronRight"
active
@click="showShortcuts()"
/>
<SmartItem
:icon="IconGift"
:label="t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
:description="t('support.changelog')"
:info-icon="IconChevronRight"
active
blank
@click="hideModal()"
/>
<SmartItem
:icon="IconMessageCircle"
:label="t('app.chat_with_us')"
:description="t('support.chat')"
:info-icon="IconChevronRight"
active
@click="chatWithUs()"
/>
<SmartItem
:icon="IconGitHub"
:label="t('app.github')"
to="https://hoppscotch.io/github"
blank
:description="t('support.github')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconDiscord"
:label="t('app.join_discord_community')"
to="https://hoppscotch.io/discord"
blank
:description="t('support.community')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
<SmartItem
:icon="IconTwitter"
:label="t('app.twitter')"
to="https://hoppscotch.io/twitter"
blank
:description="t('support.twitter')"
:info-icon="IconChevronRight"
active
@click="hideModal()"
/>
</div>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import IconTwitter from "~icons/brands/twitter"
import IconDiscord from "~icons/brands/discord"
import IconGitHub from "~icons/hopp/github"
import IconMessageCircle from "~icons/lucide/message-circle"
import IconGift from "~icons/lucide/gift"
import IconZap from "~icons/lucide/zap"
import IconBook from "~icons/lucide/book"
import IconChevronRight from "~icons/lucide/chevron-right"
import { invokeAction } from "@helpers/actions"
import { showChat } from "@modules/crisp"
import { useI18n } from "@composables/i18n"
const t = useI18n()
defineProps<{
show: boolean
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
}>()
const chatWithUs = () => {
showChat()
hideModal()
}
const showShortcuts = () => {
invokeAction("flyouts.keybinds.toggle")
hideModal()
}
const hideModal = () => {
emit("hide-modal")
}
</script>

View File

@@ -1,97 +0,0 @@
<template>
<SmartLink
:to="to"
:blank="blank"
class="inline-flex items-center justify-center py-2 font-bold transition focus:outline-none focus-visible:bg-accentDark"
:class="[
color
? `text-${color}-800 bg-${color}-200 hover:(text-${color}-900 bg-${color}-300) focus-visible:(text-${color}-900 bg-${color}-300)`
: `text-accentContrast bg-accent hover:bg-accentDark focus-visible:bg-accentDark`,
label ? 'px-4' : 'px-2',
rounded ? 'rounded-full' : 'rounded',
{ 'opacity-75 cursor-not-allowed': disabled },
{ 'pointer-events-none': loading },
{ 'px-6 py-4 text-lg': large },
{ 'shadow-lg hover:shadow-xl': shadow },
{
'text-white bg-gradient-to-tr from-gradientFrom via-gradientVia to-gradientTo':
gradient,
},
{
'border border-accent hover:border-accentDark focus-visible:border-accentDark':
outline,
},
]"
:disabled="disabled"
:tabindex="loading ? '-1' : '0'"
role="button"
>
<span
v-if="!loading"
class="inline-flex items-center justify-center whitespace-nowrap"
:class="{ 'flex-row-reverse': reverse }"
>
<component
:is="icon"
v-if="icon"
class="svg-icons"
:class="[
{ '!text-2xl': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
/>
{{ label }}
<div v-if="shortcut.length" class="<sm:hidden">
<kbd
v-for="(key, index) in shortcut"
:key="`key-${index}`"
class="shortcut-key !bg-accentDark !border-accentLight"
>
{{ key }}
</kbd>
</div>
</span>
<SmartSpinner v-else />
</SmartLink>
</template>
<script setup lang="ts">
import type { Component } from "vue"
interface Props {
to?: string
exact?: boolean
blank?: boolean
label?: string
icon?: object | null | Component // It is a component!
svg?: object | null | Component // It is a component!
color?: string
disabled?: boolean
loading?: boolean
large?: boolean
shadow?: boolean
reverse?: boolean
rounded?: boolean
gradient?: boolean
outline?: boolean
shortcut?: string[]
}
withDefaults(defineProps<Props>(), {
to: "",
exact: true,
blank: false,
label: "",
icon: null,
svg: null,
color: "",
disabled: false,
loading: false,
large: false,
shadow: false,
reverse: false,
rounded: false,
gradient: false,
outline: false,
shortcut: () => [],
})
</script>

View File

@@ -1,96 +0,0 @@
<template>
<SmartLink
:to="to"
:exact="exact"
:blank="blank"
class="inline-flex items-center justify-center py-2 font-semibold transition whitespace-nowrap focus:outline-none"
:class="[
color
? `text-${color}-500 hover:text-${color}-600 focus-visible:text-${color}-600`
: 'text-secondary hover:text-secondaryDark focus-visible:text-secondaryDark',
{ 'pointer-events-none': loading },
label ? 'rounded px-4' : 'px-2',
{ 'rounded-full': rounded },
{ 'opacity-75 cursor-not-allowed': disabled },
{ 'flex-row-reverse': reverse },
{ 'px-6 py-4 text-lg': large },
{
'border border-divider hover:border-dividerDark focus-visible:border-dividerDark':
outline,
},
{
'bg-primaryLight hover:bg-primaryDark focus-visible:bg-primaryDark':
filled,
},
]"
:disabled="disabled"
:tabindex="loading ? '-1' : '0'"
role="button"
>
<span
v-if="!loading"
class="inline-flex items-center justify-center whitespace-nowrap"
:class="{ 'flex-row-reverse': reverse }"
>
<component
:is="icon"
v-if="icon"
class="svg-icons"
:class="[
{ '!text-2xl': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
/>
{{ label }}
<div v-if="shortcut.length" class="<sm:hidden">
<kbd
v-for="(key, index) in shortcut"
:key="`key-${index}`"
class="shortcut-key !bg-inherit"
>
{{ key }}
</kbd>
</div>
</span>
<SmartSpinner v-else />
</SmartLink>
</template>
<script setup lang="ts">
import type { Component } from "vue"
interface Props {
to?: string
exact?: boolean
blank?: boolean
label?: string
icon?: object | null | Component // It is a component!
svg?: object | null | Component // It is a component!
color?: string
disabled?: boolean
loading?: boolean
reverse?: boolean
rounded?: boolean
large?: boolean
outline?: boolean
shortcut?: string[]
filled?: boolean
}
withDefaults(defineProps<Props>(), {
to: "",
exact: true,
blank: false,
label: "",
icon: null,
svg: null,
color: "",
disabled: false,
loading: false,
reverse: false,
rounded: false,
large: false,
outline: false,
shortcut: () => [],
filled: false,
})
</script>

View File

@@ -1,87 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('collection.new')"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelAdd"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="addNewCollection"
/>
<label for="selectLabelAdd">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addNewCollection"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useToast } from "@composables/toast"
import { useI18n } from "@composables/i18n"
export default defineComponent({
props: {
show: Boolean,
loadingState: Boolean,
},
emits: ["submit", "hide-modal"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: null,
}
},
watch: {
show(isShowing: boolean) {
if (!isShowing) {
this.name = null
}
},
},
methods: {
addNewCollection() {
if (!this.name) {
this.toast.error(this.t("collection.invalid_name"))
return
}
this.$emit("submit", this.name)
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,92 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('folder.new')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelAddFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="addFolder"
/>
<label for="selectLabelAddFolder">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addFolder"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
export default defineComponent({
props: {
show: Boolean,
folder: { type: Object, default: () => ({}) },
folderPath: { type: String, default: null },
collectionIndex: { type: Number, default: null },
loadingState: Boolean,
},
emits: ["hide-modal", "add-folder"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: null,
}
},
watch: {
show(isShowing: boolean) {
if (!isShowing) this.name = null
},
},
methods: {
addFolder() {
if (!this.name) {
this.toast.error(this.t("folder.invalid_name"))
return
}
this.$emit("add-folder", {
name: this.name,
folder: this.folder,
path: this.folderPath || `${this.collectionIndex}`,
})
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,96 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('request.new')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelAddRequest"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="addRequest"
/>
<label for="selectLabelAddRequest">{{ t("action.label") }}</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="addRequest"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import { ref, watch } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { getRESTRequest } from "~/newstore/RESTSession"
const toast = useToast()
const t = useI18n()
const props = defineProps<{
show: boolean
loadingState: boolean
folder?: object
folderPath?: string
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
(
e: "add-request",
v: {
name: string
folder: object | undefined
path: string | undefined
}
): void
}>()
const name = ref("")
watch(
() => props.show,
(show) => {
if (show) {
name.value = getRESTRequest().name
}
}
)
const addRequest = () => {
if (!name.value) {
toast.error(`${t("error.empty_req_name")}`)
return
}
emit("add-request", {
name: name.value,
folder: props.folder,
path: props.folderPath,
})
}
const hideModal = () => {
emit("hide-modal")
}
</script>

View File

@@ -1,151 +0,0 @@
<template>
<div v-show="show">
<SmartTabs
:id="'collections_tab'"
v-model="selectedCollectionTab"
render-inactive-tabs
>
<SmartTab
:id="'my-collections'"
:label="`${t('collection.my_collections')}`"
/>
<SmartTab
v-if="currentUser"
:id="'team-collections'"
:label="`${t('collection.team_collections')}`"
>
<SmartIntersection @intersecting="onTeamSelectIntersect">
<tippy
interactive
trigger="click"
theme="popover"
placement="bottom"
:on-shown="() => tippyActions.focus()"
>
<span
v-tippy="{ theme: 'tooltip' }"
:title="`${t('collection.select_team')}`"
class="bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
v-if="collectionsType.selectedTeam"
:icon="IconUsers"
:label="collectionsType.selectedTeam.name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
v-else
:label="`${t('collection.select_team')}`"
class="flex-1 !justify-start pr-8 rounded-none"
/>
</span>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
v-for="(team, index) in myTeams"
:key="`team-${index}`"
:label="team.name"
:info-icon="
team.id === collectionsType.selectedTeam?.id
? IconDone
: null
"
:active-info-icon="
team.id === collectionsType.selectedTeam?.id
"
:icon="IconUsers"
@click="
() => {
updateSelectedTeam(team)
hide()
}
"
/>
</div>
</template>
</tippy>
</SmartIntersection>
</SmartTab>
</SmartTabs>
</div>
</template>
<script setup lang="ts">
import IconUsers from "~icons/lucide/users"
import IconDone from "~icons/lucide/check"
import { ref, watch } from "vue"
import { GetMyTeamsQuery, Team } from "~/helpers/backend/graphql"
import { currentUserInfo$ } from "~/helpers/teams/BackendUserInfo"
import TeamListAdapter from "~/helpers/teams/TeamListAdapter"
import { useReadonlyStream } from "@composables/stream"
import { onLoggedIn } from "@composables/auth"
import { useI18n } from "@composables/i18n"
import { useLocalState } from "~/newstore/localstate"
type TeamData = GetMyTeamsQuery["myTeams"][number]
type CollectionTabs = "my-collections" | "team-collections"
const t = useI18n()
// Template refs
const tippyActions = ref<any | null>(null)
const selectedCollectionTab = ref<CollectionTabs>("my-collections")
defineProps<{
show: boolean
collectionsType: {
type: "my-collections" | "team-collections"
selectedTeam: Team | undefined
}
}>()
const emit = defineEmits<{
(e: "update-collection-type", tabID: string): void
(e: "update-selected-team", team: TeamData | undefined): void
}>()
const currentUser = useReadonlyStream(currentUserInfo$, null)
const adapter = new TeamListAdapter(true)
const myTeams = useReadonlyStream(adapter.teamList$, null)
const REMEMBERED_TEAM_ID = useLocalState("REMEMBERED_TEAM_ID")
let teamListFetched = false
watch(myTeams, (teams) => {
if (teams && !teamListFetched) {
teamListFetched = true
if (REMEMBERED_TEAM_ID.value && currentUser) {
const team = teams.find((t) => t.id === REMEMBERED_TEAM_ID.value)
if (team) updateSelectedTeam(team)
}
}
})
onLoggedIn(() => {
adapter.initialize()
})
const onTeamSelectIntersect = () => {
// Load team data as soon as intersection
adapter.fetchList()
}
const updateCollectionsType = (tabID: string) => {
emit("update-collection-type", tabID)
}
const updateSelectedTeam = (team: TeamData | undefined) => {
REMEMBERED_TEAM_ID.value = team?.id
emit("update-selected-team", team)
}
watch(selectedCollectionTab, (newValue: string) => {
updateCollectionsType(newValue)
})
</script>

View File

@@ -1,86 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('collection.edit')"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelEdit"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="saveCollection"
/>
<label for="selectLabelEdit">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="saveCollection"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useToast } from "@composables/toast"
import { useI18n } from "@composables/i18n"
export default defineComponent({
props: {
show: Boolean,
editingCollectionName: { type: String, default: null },
loadingState: Boolean,
},
emits: ["submit", "hide-modal"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: null,
}
},
watch: {
editingCollectionName(val) {
this.name = val
},
},
methods: {
saveCollection() {
if (!this.name) {
this.toast.error(this.t("collection.invalid_name"))
return
}
this.$emit("submit", this.name)
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,86 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('folder.edit')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelEditFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="editFolder"
/>
<label for="selectLabelEditFolder">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="editFolder"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
export default defineComponent({
props: {
show: Boolean,
editingFolderName: { type: String, default: null },
loadingState: Boolean,
},
emits: ["submit", "hide-modal"],
setup() {
return {
t: useI18n(),
toast: useToast(),
}
},
data() {
return {
name: null,
}
},
watch: {
editingFolderName(val) {
this.name = val
},
},
methods: {
editFolder() {
if (!this.name) {
this.toast.error(this.t("folder.invalid_name"))
return
}
this.$emit("submit", this.name)
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,88 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('modal.edit_request')"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelEditReq"
v-model="requestUpdateData.name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="saveRequest"
/>
<label for="selectLabelEditReq">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="t('action.save')"
:loading="loadingState"
outline
@click="saveRequest"
/>
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
export default defineComponent({
props: {
show: Boolean,
editingRequestName: { type: String, default: null },
loadingState: Boolean,
},
emits: ["submit", "hide-modal"],
setup() {
return {
t: useI18n(),
toast: useToast(),
}
},
data() {
return {
requestUpdateData: {
name: null,
},
}
},
watch: {
editingRequestName(val) {
this.requestUpdateData.name = val
},
},
methods: {
saveRequest() {
if (!this.requestUpdateData.name) {
this.toast.error(this.t("request.invalid_name"))
return
}
this.$emit("submit", this.requestUpdateData)
},
hideModal() {
this.requestUpdateData = { name: null }
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,433 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('modal.collections')}`"
max-width="sm:max-w-md"
@close="hideModal"
>
<template #actions>
<ButtonSecondary
v-if="importerType !== null"
v-tippy="{ theme: 'tooltip' }"
:title="t('action.go_back')"
:icon="IconArrowLeft"
@click="resetImport"
/>
</template>
<template #body>
<div v-if="importerType !== null" class="flex flex-col">
<div class="flex flex-col pb-4">
<div
v-for="(step, index) in importerSteps"
:key="`step-${index}`"
class="flex flex-col space-y-8"
>
<div v-if="step.name === 'FILE_IMPORT'" class="space-y-4">
<p class="flex items-center">
<span
class="inline-flex items-center justify-center flex-shrink-0 mr-4 border-4 rounded-full border-primary text-dividerDark"
:class="{
'!text-green-500': hasFile,
}"
>
<icon-lucide-check-circle class="svg-icons" />
</span>
<span>
{{ t(`${step.metadata.caption}`) }}
</span>
</p>
<p
class="flex flex-col ml-10 border border-dashed rounded border-dividerDark"
>
<input
id="inputChooseFileToImportFrom"
ref="inputChooseFileToImportFrom"
name="inputChooseFileToImportFrom"
type="file"
class="p-4 cursor-pointer transition file:transition file:cursor-pointer text-secondary hover:text-secondaryDark file:mr-2 file:py-2 file:px-4 file:rounded file:border-0 file:text-secondary hover:file:text-secondaryDark file:bg-primaryLight hover:file:bg-primaryDark"
:accept="step.metadata.acceptedFileTypes"
@change="onFileChange"
/>
</p>
</div>
<div v-else-if="step.name === 'URL_IMPORT'" class="space-y-4">
<p class="flex items-center">
<span
class="inline-flex items-center justify-center flex-shrink-0 mr-4 border-4 rounded-full border-primary text-dividerDark"
:class="{
'!text-green-500': hasGist,
}"
>
<icon-lucide-check-circle class="svg-icons" />
</span>
<span>
{{ t(`${step.metadata.caption}`) }}
</span>
</p>
<p class="flex flex-col ml-10">
<input
v-model="inputChooseGistToImportFrom"
type="url"
class="input"
:placeholder="`${t('import.gist_url')}`"
/>
</p>
</div>
<div
v-else-if="step.name === 'TARGET_MY_COLLECTION'"
class="flex flex-col"
>
<div class="select-wrapper">
<select
v-model="mySelectedCollectionID"
type="text"
autocomplete="off"
class="select"
autofocus
>
<option :key="undefined" :value="undefined" disabled selected>
{{ t("collection.select") }}
</option>
<option
v-for="(collection, collectionIndex) in myCollections"
:key="`collection-${collectionIndex}`"
:value="collectionIndex"
>
{{ collection.name }}
</option>
</select>
</div>
</div>
</div>
</div>
<ButtonPrimary
:label="t('import.title')"
:disabled="enableImportButton"
:loading="importingMyCollections"
@click="finishImport"
/>
</div>
<div v-else class="flex flex-col">
<SmartExpand>
<template #body>
<SmartItem
v-for="(importer, index) in importerModules"
:key="`importer-${index}`"
:icon="importer.icon"
:label="t(`${importer.name}`)"
@click="importerType = index"
/>
</template>
</SmartExpand>
<hr />
<div class="flex flex-col space-y-2">
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="IconDownload"
:label="t('export.as_json')"
@click="exportJSON"
/>
<span
v-tippy="{ theme: 'tooltip' }"
:title="
!currentUser
? `${t('export.require_github')}`
: currentUser.provider !== 'github.com'
? `${t('export.require_github')}`
: undefined
"
class="flex"
>
<SmartItem
:disabled="
!currentUser
? true
: currentUser.provider !== 'github.com'
? true
: false
"
:icon="IconGithub"
:label="t('export.create_secret_gist')"
@click="
() => {
createCollectionGist()
}
"
/>
</span>
</div>
</div>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import IconArrowLeft from "~icons/lucide/arrow-left"
import IconDownload from "~icons/lucide/download"
import IconGithub from "~icons/lucide/github"
import { computed, ref, watch } from "vue"
import { pipe } from "fp-ts/function"
import * as E from "fp-ts/Either"
import { HoppRESTRequest, HoppCollection } from "@hoppscotch/data"
import axios from "axios"
import { useI18n } from "@composables/i18n"
import { useReadonlyStream } from "@composables/stream"
import { useToast } from "@composables/toast"
import { currentUser$ } from "~/helpers/fb/auth"
import { appendRESTCollections, restCollections$ } from "~/newstore/collections"
import { RESTCollectionImporters } from "~/helpers/import-export/import/importers"
import { StepReturnValue } from "~/helpers/import-export/steps"
import { runGQLQuery, runMutation } from "~/helpers/backend/GQLClient"
import {
ExportAsJsonDocument,
ImportFromJsonDocument,
} from "~/helpers/backend/graphql"
const props = defineProps<{
show: boolean
collectionsType:
| {
type: "team-collections"
selectedTeam: {
id: string
}
}
| { type: "my-collections" }
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
(e: "update-team-collections"): void
}>()
const toast = useToast()
const t = useI18n()
const myCollections = useReadonlyStream(restCollections$, [])
const currentUser = useReadonlyStream(currentUser$, null)
// Template refs
const mode = ref("import_export")
const mySelectedCollectionID = ref<undefined | number>(undefined)
const collectionJson = ref("")
const inputChooseFileToImportFrom = ref<HTMLInputElement | any>()
const inputChooseGistToImportFrom = ref<string>("")
const getJSONCollection = async () => {
if (props.collectionsType.type === "my-collections") {
collectionJson.value = JSON.stringify(myCollections.value, null, 2)
} else {
collectionJson.value = pipe(
await runGQLQuery({
query: ExportAsJsonDocument,
variables: {
teamID: props.collectionsType.selectedTeam.id,
},
}),
E.matchW(
// TODO: Handle error case gracefully ?
() => {
throw new Error("Error exporting collection to JSON")
},
(x) => x.exportCollectionsToJSON
)
)
}
return collectionJson.value
}
const createCollectionGist = async () => {
if (!currentUser.value) {
toast.error(t("profile.no_permission").toString())
return
}
await getJSONCollection()
try {
const res = await axios.post(
"https://api.github.com/gists",
{
files: {
"hoppscotch-collections.json": {
content: collectionJson.value,
},
},
},
{
headers: {
Authorization: `token ${currentUser.value.accessToken}`,
Accept: "application/vnd.github.v3+json",
},
}
)
toast.success(t("export.gist_created").toString())
window.open(res.html_url)
} catch (e) {
toast.error(t("error.something_went_wrong").toString())
console.error(e)
}
}
const fileImported = () => {
toast.success(t("state.file_imported").toString())
hideModal()
}
const failedImport = () => {
toast.error(t("import.failed").toString())
}
const hideModal = () => {
mode.value = "import_export"
mySelectedCollectionID.value = undefined
resetImport()
emit("hide-modal")
}
const stepResults = ref<StepReturnValue[]>([])
watch(mySelectedCollectionID, (newValue) => {
if (newValue === undefined) return
stepResults.value = []
stepResults.value.push(newValue)
})
const importingMyCollections = ref(false)
const importToTeams = async (content: HoppCollection<HoppRESTRequest>) => {
importingMyCollections.value = true
if (props.collectionsType.type !== "team-collections") return
const result = await runMutation(ImportFromJsonDocument, {
jsonString: JSON.stringify(content),
teamID: props.collectionsType.selectedTeam.id,
})()
if (E.isLeft(result)) {
console.error(result.left)
} else {
emit("update-team-collections")
}
importingMyCollections.value = false
}
const exportJSON = async () => {
await getJSONCollection()
const dataToWrite = collectionJson.value
const file = new Blob([dataToWrite], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
// TODO: get uri from meta
a.download = `${url.split("/").pop()!.split("#")[0].split("?")[0]}.json`
document.body.appendChild(a)
a.click()
toast.success(t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
}
const importerModules = computed(() =>
RESTCollectionImporters.filter(
(i) => i.applicableTo?.includes(props.collectionsType.type) ?? true
)
)
const importerType = ref<number | null>(null)
const importerModule = computed(() =>
importerType.value !== null ? importerModules.value[importerType.value] : null
)
const importerSteps = computed(() => importerModule.value?.steps ?? null)
const finishImport = async () => {
await importerAction(stepResults.value)
}
const importerAction = async (stepResults: any[]) => {
if (!importerModule.value) return
const result = await importerModule.value?.importer(stepResults as any)()
if (E.isLeft(result)) {
failedImport()
console.error("error", result.left)
} else if (E.isRight(result)) {
if (props.collectionsType.type === "team-collections") {
importToTeams(result.right)
fileImported()
} else {
appendRESTCollections(result.right)
fileImported()
}
}
}
const hasFile = ref(false)
const hasGist = ref(false)
watch(inputChooseGistToImportFrom, (v) => {
stepResults.value = []
if (v === "") {
hasGist.value = false
} else {
hasGist.value = true
stepResults.value.push(inputChooseGistToImportFrom.value)
}
})
const onFileChange = () => {
stepResults.value = []
if (!inputChooseFileToImportFrom.value[0]) {
hasFile.value = false
return
}
if (
!inputChooseFileToImportFrom.value[0].files ||
inputChooseFileToImportFrom.value[0].files.length === 0
) {
inputChooseFileToImportFrom.value[0].value = ""
hasFile.value = false
toast.show(t("action.choose_file").toString())
return
}
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target!.result as string | null
if (!content) {
hasFile.value = false
toast.show(t("action.choose_file").toString())
return
}
stepResults.value.push(content)
hasFile.value = !!content?.length
}
reader.readAsText(inputChooseFileToImportFrom.value[0].files[0])
}
const enableImportButton = computed(
() => !(stepResults.value.length === importerSteps.value?.length)
)
const resetImport = () => {
importerType.value = null
stepResults.value = []
inputChooseFileToImportFrom.value = ""
hasFile.value = false
inputChooseGistToImportFrom.value = ""
hasGist.value = false
mySelectedCollectionID.value = undefined
}
</script>

View File

@@ -1,400 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('collection.save_as')}`"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<div class="relative flex">
<input
id="selectLabelSaveReq"
v-model="requestName"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="saveRequestAs"
/>
<label for="selectLabelSaveReq">
{{ t("request.name") }}
</label>
</div>
<label class="p-4">
{{ t("collection.select_location") }}
</label>
<CollectionsGraphql
v-if="mode === 'graphql'"
:show-coll-actions="false"
:picked="picked"
:saving-mode="true"
@select="onSelect"
/>
<Collections
v-else
:picked="picked"
:save-request="true"
@select="onSelect"
@update-collection="updateColl"
@update-coll-type="onUpdateCollType"
/>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="`${t('action.save')}`"
outline
@click="saveRequestAs"
/>
<ButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import { reactive, ref, watch } from "vue"
import * as E from "fp-ts/Either"
import { HoppGQLRequest, isHoppRESTRequest } from "@hoppscotch/data"
import { cloneDeep } from "lodash-es"
import {
editGraphqlRequest,
editRESTRequest,
saveGraphqlRequestAs,
saveRESTRequestAs,
} from "~/newstore/collections"
import { getGQLSession, useGQLRequestName } from "~/newstore/GQLSession"
import {
getRESTRequest,
setRESTSaveContext,
useRESTRequestName,
} from "~/newstore/RESTSession"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { runMutation } from "~/helpers/backend/GQLClient"
import {
CreateRequestInCollectionDocument,
UpdateRequestDocument,
} from "~/helpers/backend/graphql"
const t = useI18n()
type CollectionType =
| {
type: "my-collections"
}
| {
type: "team-collections"
// TODO: Figure this type out
selectedTeam: {
id: string
}
}
type Picked =
| {
pickedType: "my-request"
folderPath: string
requestIndex: number
}
| {
pickedType: "my-folder"
folderPath: string
}
| {
pickedType: "my-collection"
collectionIndex: number
}
| {
pickedType: "teams-request"
requestID: string
}
| {
pickedType: "teams-folder"
folderID: string
}
| {
pickedType: "teams-collection"
collectionID: string
}
| {
pickedType: "gql-my-request"
folderPath: string
requestIndex: number
}
| {
pickedType: "gql-my-folder"
folderPath: string
}
| {
pickedType: "gql-my-collection"
collectionIndex: number
}
const props = defineProps<{
mode: "rest" | "graphql"
show: boolean
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
}>()
const toast = useToast()
// TODO: Use a better implementation with computed ?
// This implementation can't work across updates to mode prop (which won't happen tho)
const requestName =
props.mode === "rest" ? useRESTRequestName() : useGQLRequestName()
const requestData = reactive({
name: requestName,
collectionIndex: undefined as number | undefined,
folderName: undefined as number | undefined,
requestIndex: undefined as number | undefined,
})
const collectionsType = ref<CollectionType>({
type: "my-collections",
})
// TODO: Figure this type out
const picked = ref<Picked | null>(null)
// Resets
watch(
() => requestData.collectionIndex,
() => {
requestData.folderName = undefined
requestData.requestIndex = undefined
}
)
watch(
() => requestData.folderName,
() => {
requestData.requestIndex = undefined
}
)
// All the methods
const onUpdateCollType = (newCollType: CollectionType) => {
collectionsType.value = newCollType
}
const onSelect = ({ picked: pickedVal }: { picked: Picked | null }) => {
picked.value = pickedVal
}
const hideModal = () => {
picked.value = null
emit("hide-modal")
}
const saveRequestAs = async () => {
if (!requestName.value) {
toast.error(`${t("error.empty_req_name")}`)
return
}
if (picked.value === null) {
toast.error(`${t("collection.select")}`)
return
}
// Clone Deep because objects are shared by reference so updating
// just one bit will update other referenced shared instances
const requestUpdated =
props.mode === "rest"
? cloneDeep(getRESTRequest())
: cloneDeep(getGQLSession().request)
// // Filter out all REST file inputs
// if (this.mode === "rest" && requestUpdated.bodyParams) {
// requestUpdated.bodyParams = requestUpdated.bodyParams.map((param) =>
// param?.value?.[0] instanceof File ? { ...param, value: "" } : param
// )
// }
if (picked.value.pickedType === "my-request") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
editRESTRequest(
picked.value.folderPath,
picked.value.requestIndex,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: picked.value.folderPath,
requestIndex: picked.value.requestIndex,
req: cloneDeep(requestUpdated),
})
requestSaved()
} else if (picked.value.pickedType === "my-folder") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
const insertionIndex = saveRESTRequestAs(
picked.value.folderPath,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: picked.value.folderPath,
requestIndex: insertionIndex,
req: cloneDeep(requestUpdated),
})
requestSaved()
} else if (picked.value.pickedType === "my-collection") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
const insertionIndex = saveRESTRequestAs(
`${picked.value.collectionIndex}`,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: `${picked.value.collectionIndex}`,
requestIndex: insertionIndex,
req: cloneDeep(requestUpdated),
})
requestSaved()
} else if (picked.value.pickedType === "teams-request") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
if (collectionsType.value.type !== "team-collections")
throw new Error("Collections Type mismatch")
runMutation(UpdateRequestDocument, {
requestID: picked.value.requestID,
data: {
request: JSON.stringify(requestUpdated),
title: requestUpdated.name,
},
})().then((result) => {
if (E.isLeft(result)) {
toast.error(`${t("profile.no_permission")}`)
throw new Error(`${result.left}`)
} else {
requestSaved()
}
})
setRESTSaveContext({
originLocation: "team-collection",
requestID: picked.value.requestID,
req: cloneDeep(requestUpdated),
})
} else if (picked.value.pickedType === "teams-folder") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
if (collectionsType.value.type !== "team-collections")
throw new Error("Collections Type mismatch")
const result = await runMutation(CreateRequestInCollectionDocument, {
collectionID: picked.value.folderID,
data: {
request: JSON.stringify(requestUpdated),
teamID: collectionsType.value.selectedTeam.id,
title: requestUpdated.name,
},
})()
if (E.isLeft(result)) {
toast.error(`${t("profile.no_permission")}`)
console.error(result.left)
} else {
setRESTSaveContext({
originLocation: "team-collection",
requestID: result.right.createRequestInCollection.id,
teamID: collectionsType.value.selectedTeam.id,
collectionID: picked.value.folderID,
req: cloneDeep(requestUpdated),
})
requestSaved()
}
} else if (picked.value.pickedType === "teams-collection") {
if (!isHoppRESTRequest(requestUpdated))
throw new Error("requestUpdated is not a REST Request")
if (collectionsType.value.type !== "team-collections")
throw new Error("Collections Type mismatch")
const result = await runMutation(CreateRequestInCollectionDocument, {
collectionID: picked.value.collectionID,
data: {
title: requestUpdated.name,
request: JSON.stringify(requestUpdated),
teamID: collectionsType.value.selectedTeam.id,
},
})()
if (E.isLeft(result)) {
toast.error(`${t("profile.no_permission")}`)
console.error(result.left)
} else {
setRESTSaveContext({
originLocation: "team-collection",
requestID: result.right.createRequestInCollection.id,
teamID: collectionsType.value.selectedTeam.id,
collectionID: picked.value.collectionID,
req: cloneDeep(requestUpdated),
})
requestSaved()
}
} else if (picked.value.pickedType === "gql-my-request") {
// TODO: Check for GQL request ?
editGraphqlRequest(
picked.value.folderPath,
picked.value.requestIndex,
requestUpdated as HoppGQLRequest
)
requestSaved()
} else if (picked.value.pickedType === "gql-my-folder") {
// TODO: Check for GQL request ?
saveGraphqlRequestAs(
picked.value.folderPath,
requestUpdated as HoppGQLRequest
)
requestSaved()
} else if (picked.value.pickedType === "gql-my-collection") {
// TODO: Check for GQL request ?
saveGraphqlRequestAs(
`${picked.value.collectionIndex}`,
requestUpdated as HoppGQLRequest
)
requestSaved()
}
}
const requestSaved = () => {
toast.success(`${t("request.added")}`)
hideModal()
}
const updateColl = (ev: CollectionType["type"]) => {
collectionsType.value.type = ev
}
</script>

View File

@@ -1,88 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('collection.new')}`"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelGqlAdd"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="addNewCollection"
/>
<label for="selectLabelGqlAdd">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="`${t('action.save')}`"
outline
@click="addNewCollection"
/>
<ButtonSecondary
:label="`${t('action.cancel')}`"
outline
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useToast } from "@composables/toast"
import { useI18n } from "@composables/i18n"
import { HoppGQLRequest, makeCollection } from "@hoppscotch/data"
import { addGraphqlCollection } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
},
emits: ["hide-modal"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: null as string | null,
}
},
methods: {
addNewCollection() {
if (!this.name) {
this.toast.error(`${this.t("collection.invalid_name")}`)
return
}
addGraphqlCollection(
makeCollection<HoppGQLRequest>({
name: this.name,
folders: [],
requests: [],
})
)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,82 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="t('folder.new')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelGqlAddFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="addFolder"
/>
<label for="selectLabelGqlAddFolder">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary :label="t('action.save')" outline @click="addFolder" />
<ButtonSecondary
:label="t('action.cancel')"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { useToast } from "@composables/toast"
import { useI18n } from "@composables/i18n"
import { defineComponent } from "vue"
export default defineComponent({
props: {
show: Boolean,
folderPath: { type: String, default: null },
collectionIndex: { type: Number, default: null },
},
emits: ["hide-modal", "add-folder"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: null,
}
},
methods: {
addFolder() {
if (!this.name) {
this.toast.error(`${this.t("folder.name_length_insufficient")}`)
return
}
this.$emit("add-folder", {
name: this.name,
path: this.folderPath || `${this.collectionIndex}`,
})
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,91 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('folder.edit')}`"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelGqlEditFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="editFolder"
/>
<label for="selectLabelGqlEditFolder">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="`${t('action.save')}`"
outline
@click="editFolder"
/>
<ButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { editGraphqlFolder } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
folder: { type: Object, default: () => ({}) },
folderPath: { type: String, default: null },
editingFolderName: { type: String, default: null },
},
emits: ["hide-modal"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
name: "",
}
},
watch: {
editingFolderName(val) {
this.name = val
},
},
methods: {
editFolder() {
if (!this.name) {
this.toast.error(`${this.t("collection.invalid_name")}`)
return
}
editGraphqlFolder(this.folderPath, {
...(this.folder as any),
name: this.name,
})
this.hideModal()
},
hideModal() {
this.name = ""
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,100 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('modal.edit_request')}`"
@close="hideModal"
>
<template #body>
<div class="flex flex-col">
<input
id="selectLabelGqlEditReq"
v-model="requestUpdateData.name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
autocomplete="off"
@keyup.enter="saveRequest"
/>
<label for="selectLabelGqlEditReq">
{{ t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span class="flex space-x-2">
<ButtonPrimary
:label="`${t('action.save')}`"
outline
@click="saveRequest"
/>
<ButtonSecondary
:label="`${t('action.cancel')}`"
outline
filled
@click="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent, PropType } from "vue"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { HoppGQLRequest } from "@hoppscotch/data"
import { editGraphqlRequest } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
folderPath: { type: String, default: null },
request: { type: Object as PropType<HoppGQLRequest>, default: () => ({}) },
requestIndex: { type: Number, default: null },
editingRequestName: { type: String, default: null },
},
emits: ["hide-modal"],
setup() {
return {
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
requestUpdateData: {
name: null as any | null,
},
}
},
watch: {
editingRequestName(val) {
this.requestUpdateData.name = val
},
},
methods: {
saveRequest() {
if (!this.requestUpdateData.name) {
this.toast.error(`${this.t("collection.invalid_name")}`)
return
}
// TODO: Type safety goes brrrr. Proper typing plz
const requestUpdated = {
...this.$props.request,
name: this.$data.requestUpdateData.name || this.$props.request.name,
}
editGraphqlRequest(this.folderPath, this.requestIndex, requestUpdated)
this.hideModal()
},
hideModal() {
this.requestUpdateData = { name: null }
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,267 +0,0 @@
<template>
<SmartModal
v-if="show"
dialog
:title="`${t('modal.collections')}`"
max-width="sm:max-w-md"
@close="hideModal"
>
<template #actions>
<span>
<tippy interactive trigger="click" theme="popover">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
:on-shown="() => tippyActions.focus()"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
:icon="IconGithub"
:label="t('import.from_gist')"
@click="
() => {
readCollectionGist()
hide()
}
"
/>
<span
v-tippy="{ theme: 'tooltip' }"
:title="
!currentUser
? `${t('export.require_github')}`
: currentUser.provider !== 'github.com'
? `${t('export.require_github')}`
: undefined
"
>
<SmartItem
:disabled="
!currentUser
? true
: currentUser.provider !== 'github.com'
? true
: false
"
:icon="IconGithub"
:label="t('export.create_secret_gist')"
@click="
() => {
createCollectionGist()
hide()
}
"
/>
</span>
</div>
</template>
</tippy>
</span>
</template>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
:icon="IconFolderPlus"
:label="t('import.from_json')"
@click="openDialogChooseFileToImportFrom"
/>
<input
ref="inputChooseFileToImportFrom"
class="input"
type="file"
accept="application/json"
@change="importFromJSON"
/>
<hr />
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="t('action.download_file')"
:icon="IconDownload"
:label="t('export.as_json')"
@click="exportJSON"
/>
</div>
</template>
</SmartModal>
</template>
<script setup lang="ts">
import axios from "axios"
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconDownload from "~icons/lucide/download"
import IconGithub from "~icons/lucide/github"
import { computed, ref } from "vue"
import { currentUser$ } from "~/helpers/fb/auth"
import { useI18n } from "@composables/i18n"
import { useReadonlyStream } from "@composables/stream"
import { useToast } from "@composables/toast"
import {
graphqlCollections$,
setGraphqlCollections,
appendGraphqlCollections,
} from "~/newstore/collections"
defineProps<{
show: boolean
}>()
const emit = defineEmits<{
(e: "hide-modal"): void
}>()
const toast = useToast()
const t = useI18n()
const collections = useReadonlyStream(graphqlCollections$, [])
const currentUser = useReadonlyStream(currentUser$, null)
// Template refs
const tippyActions = ref<any | null>(null)
const inputChooseFileToImportFrom = ref<HTMLInputElement>()
const collectionJson = computed(() => {
return JSON.stringify(collections.value, null, 2)
})
const createCollectionGist = async () => {
if (!currentUser.value) {
toast.error(t("profile.no_permission").toString())
return
}
try {
const res = await axios.post(
"https://api.github.com/gists",
{
files: {
"hoppscotch-collections.json": {
content: collectionJson.value,
},
},
},
{
headers: {
Authorization: `token ${currentUser.value.accessToken}`,
Accept: "application/vnd.github.v3+json",
},
}
)
toast.success(t("export.gist_created").toString())
window.open(res.data.html_url)
} catch (e) {
toast.error(t("error.something_went_wrong").toString())
console.error(e)
}
}
const fileImported = () => {
toast.success(t("state.file_imported").toString())
}
const failedImport = () => {
toast.error(t("import.failed").toString())
}
const readCollectionGist = async () => {
const gist = prompt(t("import.gist_url").toString())
if (!gist) return
try {
const { files } = (await axios.get(
`https://api.github.com/gists/${gist.split("/").pop()}`,
{
headers: {
Accept: "application/vnd.github.v3+json",
},
}
)) as {
files: {
[fileName: string]: {
content: any
}
}
}
const collections = JSON.parse(Object.values(files)[0].content)
setGraphqlCollections(collections)
fileImported()
} catch (e) {
failedImport()
console.error(e)
}
}
const hideModal = () => {
emit("hide-modal")
}
const openDialogChooseFileToImportFrom = () => {
if (inputChooseFileToImportFrom.value)
inputChooseFileToImportFrom.value.click()
}
const importFromJSON = () => {
if (!inputChooseFileToImportFrom.value) return
if (
!inputChooseFileToImportFrom.value.files ||
inputChooseFileToImportFrom.value.files.length === 0
) {
toast.show(t("action.choose_file").toString())
return
}
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target!.result as string | null
if (!content) {
toast.show(t("action.choose_file").toString())
return
}
const collections = JSON.parse(content)
if (collections[0]) {
const [name, folders, requests] = Object.keys(collections[0])
if (name === "name" && folders === "folders" && requests === "requests") {
// Do nothing
}
} else {
failedImport()
return
}
appendGraphqlCollections(collections)
fileImported()
}
reader.readAsText(inputChooseFileToImportFrom.value.files[0])
inputChooseFileToImportFrom.value.value = ""
}
const exportJSON = () => {
const dataToWrite = collectionJson.value
const file = new Blob([dataToWrite], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
// TODO: get uri from meta
a.download = `${url.split("/").pop()!.split("#")[0].split("?")[0]}.json`
document.body.appendChild(a)
a.click()
toast.success(t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
}
</script>

View File

@@ -1,342 +0,0 @@
<template>
<div :class="{ 'rounded border border-divider': savingMode }">
<div
class="sticky top-0 z-10 flex flex-col border-b divide-y divide-dividerLight border-dividerLight"
:class="{ 'bg-primary': !savingMode }"
>
<input
v-if="showCollActions"
v-model="filterText"
type="search"
autocomplete="off"
:placeholder="t('action.search')"
class="flex px-4 py-2 bg-transparent"
/>
<div class="flex justify-between flex-1">
<ButtonSecondary
:icon="IconPlus"
:label="t('action.new')"
class="!rounded-none"
@click="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
v-if="showCollActions"
v-tippy="{ theme: 'tooltip' }"
:title="t('modal.import_export')"
:icon="IconArchive"
@click="displayModalImportExport(true)"
/>
</div>
</div>
</div>
<div class="flex-col">
<CollectionsGraphqlCollection
v-for="(collection, index) in filteredCollections"
:key="`collection-${index}`"
:picked="picked"
:name="collection.name"
:collection-index="index"
:collection="collection"
:is-filtered="filterText.length > 0"
:saving-mode="savingMode"
@edit-collection="editCollection(collection, index)"
@add-request="addRequest($event)"
@add-folder="addFolder($event)"
@edit-folder="editFolder($event)"
@edit-request="editRequest($event)"
@duplicate-request="duplicateRequest($event)"
@select-collection="$emit('use-collection', collection)"
@select="$emit('select', $event)"
/>
</div>
<div
v-if="collections.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 my-4"
:alt="t('empty.collections')"
/>
<span class="pb-4 text-center">
{{ t("empty.collections") }}
</span>
<ButtonSecondary
:label="t('add.new')"
filled
outline
@click="displayModalAdd(true)"
/>
</div>
<div
v-if="!(filteredCollections.length !== 0 || collections.length === 0)"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<icon-lucide-search class="pb-2 opacity-75 svg-icons" />
<span class="my-2 text-center">
{{ t("state.nothing_found") }} "{{ filterText }}"
</span>
</div>
<CollectionsGraphqlAdd
:show="showModalAdd"
@hide-modal="displayModalAdd(false)"
/>
<CollectionsGraphqlEdit
:show="showModalEdit"
:editing-collection="editingCollection"
:editing-collection-index="editingCollectionIndex"
:editing-collection-name="editingCollection ? editingCollection.name : ''"
@hide-modal="displayModalEdit(false)"
/>
<CollectionsGraphqlAddRequest
:show="showModalAddRequest"
:folder-path="editingFolderPath"
@add-request="onAddRequest($event)"
@hide-modal="displayModalAddRequest(false)"
/>
<CollectionsGraphqlAddFolder
:show="showModalAddFolder"
:folder-path="editingFolderPath"
@add-folder="onAddFolder($event)"
@hide-modal="displayModalAddFolder(false)"
/>
<CollectionsGraphqlEditFolder
:show="showModalEditFolder"
:collection-index="editingCollectionIndex"
:folder="editingFolder"
:folder-index="editingFolderIndex"
:folder-path="editingFolderPath"
:editing-folder-name="editingFolder ? editingFolder.name : ''"
@hide-modal="displayModalEditFolder(false)"
/>
<CollectionsGraphqlEditRequest
:show="showModalEditRequest"
:folder-path="editingFolderPath"
:request="editingRequest"
:request-index="editingRequestIndex"
:editing-request-name="editingRequest ? editingRequest.name : ''"
@hide-modal="displayModalEditRequest(false)"
/>
<CollectionsGraphqlImportExport
:show="showModalImportExport"
@hide-modal="displayModalImportExport(false)"
/>
</div>
</template>
<script lang="ts">
// TODO: TypeScript + Script Setup this :)
import { defineComponent } from "vue"
import { cloneDeep, clone } from "lodash-es"
import {
graphqlCollections$,
addGraphqlFolder,
saveGraphqlRequestAs,
} from "~/newstore/collections"
import { getGQLSession, setGQLSession } from "~/newstore/GQLSession"
import IconPlus from "~icons/lucide/plus"
import IconHelpCircle from "~icons/lucide/help-circle"
import IconArchive from "~icons/lucide/archive"
import { useI18n } from "@composables/i18n"
import { useReadonlyStream } from "@composables/stream"
import { useColorMode } from "@composables/theming"
export default defineComponent({
props: {
// Whether to activate the ability to pick items (activates 'select' events)
savingMode: { type: Boolean, default: false },
picked: { type: Object, default: null },
// Whether to show the 'New' and 'Import/Export' actions
showCollActions: { type: Boolean, default: true },
},
emits: ["select", "use-collection"],
setup() {
const collections = useReadonlyStream(graphqlCollections$, [], "deep")
const colorMode = useColorMode()
const t = useI18n()
return {
collections,
colorMode,
t,
IconPlus,
IconHelpCircle,
IconArchive,
}
},
data() {
return {
showModalAdd: false,
showModalEdit: false,
showModalImportExport: false,
showModalAddRequest: false,
showModalAddFolder: false,
showModalEditFolder: false,
showModalEditRequest: false,
editingCollection: undefined,
editingCollectionIndex: undefined,
editingFolder: undefined,
editingFolderName: undefined,
editingFolderIndex: undefined,
editingFolderPath: undefined,
editingRequest: undefined,
editingRequestIndex: undefined,
filterText: "",
}
},
computed: {
filteredCollections() {
const collections = clone(this.collections)
if (!this.filterText) return collections
const filterText = this.filterText.toLowerCase()
const filteredCollections = []
for (const collection of collections) {
const filteredRequests = []
const filteredFolders = []
for (const request of collection.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredRequests.push(request)
}
for (const folder of collection.folders) {
const filteredFolderRequests = []
for (const request of folder.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredFolderRequests.push(request)
}
if (filteredFolderRequests.length > 0) {
const filteredFolder = Object.assign({}, folder)
filteredFolder.requests = filteredFolderRequests
filteredFolders.push(filteredFolder)
}
}
if (filteredRequests.length + filteredFolders.length > 0) {
const filteredCollection = Object.assign({}, collection)
filteredCollection.requests = filteredRequests
filteredCollection.folders = filteredFolders
filteredCollections.push(filteredCollection)
}
}
return filteredCollections
},
},
methods: {
displayModalAdd(shouldDisplay) {
this.showModalAdd = shouldDisplay
},
displayModalEdit(shouldDisplay) {
this.showModalEdit = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalImportExport(shouldDisplay) {
this.showModalImportExport = shouldDisplay
},
displayModalAddRequest(shouldDisplay) {
this.showModalAddRequest = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalAddFolder(shouldDisplay) {
this.showModalAddFolder = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalEditFolder(shouldDisplay) {
this.showModalEditFolder = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalEditRequest(shouldDisplay) {
this.showModalEditRequest = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
editCollection(collection, collectionIndex) {
this.$data.editingCollection = collection
this.$data.editingCollectionIndex = collectionIndex
this.displayModalEdit(true)
},
onAddRequest({ name, path }) {
const newRequest = {
...getGQLSession().request,
name,
}
saveGraphqlRequestAs(path, newRequest)
setGQLSession({
request: newRequest,
schema: "",
response: "",
})
this.displayModalAddRequest(false)
},
addRequest(payload) {
const { path } = payload
this.$data.editingFolderPath = path
this.displayModalAddRequest(true)
},
onAddFolder({ name, path }) {
addGraphqlFolder(name, path)
this.displayModalAddFolder(false)
},
addFolder(payload) {
const { path } = payload
this.$data.editingFolderPath = path
this.displayModalAddFolder(true)
},
editFolder(payload) {
const { folder, folderPath } = payload
this.editingFolder = folder
this.editingFolderPath = folderPath
this.displayModalEditFolder(true)
},
editRequest(payload) {
const {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
} = payload
this.$data.editingFolderPath = folderPath
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderName = folderName
this.$data.editingRequest = request
this.$data.editingRequestIndex = requestIndex
this.displayModalEditRequest(true)
},
resetSelectedData() {
this.$data.editingCollection = undefined
this.$data.editingCollectionIndex = undefined
this.$data.editingFolder = undefined
this.$data.editingFolderIndex = undefined
this.$data.editingRequest = undefined
this.$data.editingRequestIndex = undefined
},
duplicateRequest({ folderPath, request }) {
saveGraphqlRequestAs(folderPath, {
...cloneDeep(request),
name: `${request.name} - ${this.t("action.duplicate")}`,
})
},
},
})
</script>

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