Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the external search modal and items #2860

Merged
merged 14 commits into from
Aug 29, 2023

Conversation

obulat
Copy link
Contributor

@obulat obulat commented Aug 23, 2023

Fixes

Fixes #460 by @fcoveram

Description

This PR updates the external search items modal according to the updated designs.

  • external sources use modal on all breakpoints (instead of selecting modal for small breakpoints and popover for larger ones). This allows us to use VModal to simplify the component, instead of handling the modal behavior manually.
  • "centered" modal is full width, except for 24px of horizontal margins, on xs, and has a max-width set to 400px for breakpoints sm and above
  • the sizes, paddings and text styles of the external sources buttons were updated

The VModalContent had a bug where the hide prop in the top-bar slot was not passed to the VModal, so it was impossible to close the modal using the close button. This PR fixes that, too.

Designs

Figma file: Metasearch improvement.

Testing Instructions

Search for images or audio, scroll to the bottom and click on the "External sources" button. The modal should match the designs, should be closable, and should update sizes if you change the screen width. You should be able to open the external sources links.

Checklist

  • My pull request has a descriptive title (not a vague title likeUpdate index.md).
  • My pull request targets the default branch of the repository (main) or a parent feature branch.
  • My commit messages follow best practices.
  • My code follows the established code style of the repository.
  • I added or updated tests for the changes I made (if applicable).
  • I added or updated documentation (if applicable).
  • I tried running the project locally and verified that there are no visible errors.
  • I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@github-actions github-actions bot added the 🧱 stack: frontend Related to the Nuxt frontend label Aug 23, 2023
@openverse-bot openverse-bot added 🟨 priority: medium Not blocking but should be addressed soon ✨ goal: improvement Improvement to an existing user-facing feature 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work labels Aug 23, 2023
@obulat obulat added 🕹 aspect: interface Concerns end-users' experience with the software and removed 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work labels Aug 23, 2023
@github-actions
Copy link

github-actions bot commented Aug 23, 2023

Size Change: -1.6 kB (0%)

Total Size: 873 kB

Filename Size Change
./frontend/.nuxt/dist/client/app.js 123 kB +100 B (0%)
./frontend/.nuxt/dist/client/app.modern.js 114 kB +58 B (0%)
./frontend/.nuxt/dist/client/commons/app.modern.js 81.1 kB -10 B (0%)
./frontend/.nuxt/dist/client/components/v-external-search-form.js 4.17 kB +411 B (+11%) ⚠️
./frontend/.nuxt/dist/client/components/v-external-search-form.modern.js 3.52 kB +394 B (+13%) ⚠️
./frontend/.nuxt/dist/client/components/v-external-source-list.js 2.63 kB -84 B (-3%)
./frontend/.nuxt/dist/client/components/v-external-source-list.modern.js 1.99 kB -84 B (-4%)
./frontend/.nuxt/dist/client/components/v-modal.js 983 B -23 B (-2%)
./frontend/.nuxt/dist/client/components/v-modal.modern.js 972 B -24 B (-2%)
./frontend/.nuxt/dist/client/components/v-sources-table.js 14.5 kB +84 B (+1%)
./frontend/.nuxt/dist/client/components/v-sources-table.modern.js 14.5 kB +86 B (+1%)
./frontend/.nuxt/dist/client/pages/search.js 5.51 kB -2.9 kB (-34%) 🎉
./frontend/.nuxt/dist/client/pages/search.modern.js 7.95 kB +374 B (+5%) 🔍
ℹ️ View Unchanged
Filename Size Change
./frontend/.nuxt/dist/client/236.js 273 B 0 B
./frontend/.nuxt/dist/client/236.modern.js 277 B 0 B
./frontend/.nuxt/dist/client/237.js 1.85 kB 0 B
./frontend/.nuxt/dist/client/commons/app.js 90.5 kB 0 B
./frontend/.nuxt/dist/client/commons/components/v-external-search-form/components/v-external-source-list/components/v-no-results/2c6cc095.js 5.18 kB 0 B
./frontend/.nuxt/dist/client/commons/components/v-external-search-form/components/v-external-source-list/components/v-no-results/2c6cc095.modern.js 5.62 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/loading-icon.js 729 B +1 B (0%)
./frontend/.nuxt/dist/client/components/loading-icon.modern.js 733 B -1 B (0%)
./frontend/.nuxt/dist/client/components/table-sort-icon.js 515 B 0 B
./frontend/.nuxt/dist/client/components/table-sort-icon.modern.js 519 B 0 B
./frontend/.nuxt/dist/client/components/v-all-results-grid.js 6.62 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-all-results-grid.modern.js 6.46 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-collection.js 4.39 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-collection.modern.js 4.27 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-details.js 1.79 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-details.modern.js 1.77 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-list.js 1.32 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-list.modern.js 1.31 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-result.js 1 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-result.modern.js 995 B 0 B
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.js 956 B 0 B
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 960 B 0 B
./frontend/.nuxt/dist/client/components/v-audio-track.js 5.67 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-track.modern.js 5.63 kB +3 B (0%)
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.js 634 B 0 B
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 643 B 0 B
./frontend/.nuxt/dist/client/components/v-bone.js 632 B 0 B
./frontend/.nuxt/dist/client/components/v-bone.modern.js 636 B 0 B
./frontend/.nuxt/dist/client/components/v-box-layout.js 1.33 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-box-layout.modern.js 1.33 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-content-link.js 1.06 kB 0 B
./frontend/.nuxt/dist/client/components/v-content-link.modern.js 1.06 kB 0 B
./frontend/.nuxt/dist/client/components/v-content-page.js 531 B 0 B
./frontend/.nuxt/dist/client/components/v-content-page.modern.js 535 B 0 B
./frontend/.nuxt/dist/client/components/v-content-report-button.js 493 B 0 B
./frontend/.nuxt/dist/client/components/v-content-report-button.modern.js 497 B 0 B
./frontend/.nuxt/dist/client/components/v-content-report-form.js 3.33 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-form.modern.js 3.21 kB 0 B
./frontend/.nuxt/dist/client/components/v-content-report-popover.js 3.8 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-popover.modern.js 3.67 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-button.js 3.99 kB 0 B
./frontend/.nuxt/dist/client/components/v-copy-button.modern.js 4 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-license.js 2.33 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-license.modern.js 2.31 kB 0 B
./frontend/.nuxt/dist/client/components/v-dmca-notice.js 792 B 0 B
./frontend/.nuxt/dist/client/components/v-dmca-notice.modern.js 798 B 0 B
./frontend/.nuxt/dist/client/components/v-error-image.js 2.48 kB 0 B
./frontend/.nuxt/dist/client/components/v-error-image.modern.js 2.44 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-error-section.js 372 B 0 B
./frontend/.nuxt/dist/client/components/v-error-section.modern.js 377 B 0 B
./frontend/.nuxt/dist/client/components/v-full-layout.js 1.57 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-full-layout.modern.js 1.58 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-grid-skeleton.js 1.53 kB 0 B
./frontend/.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.53 kB 0 B
./frontend/.nuxt/dist/client/components/v-hide-button.js 577 B 0 B
./frontend/.nuxt/dist/client/components/v-hide-button.modern.js 576 B 0 B
./frontend/.nuxt/dist/client/components/v-home-gallery.js 4.28 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-home-gallery.modern.js 4.26 kB 0 B
./frontend/.nuxt/dist/client/components/v-homepage-content.js 1.8 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-homepage-content.modern.js 1.77 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-image-cell.js 1.95 kB 0 B
./frontend/.nuxt/dist/client/components/v-image-cell.modern.js 1.94 kB 0 B
./frontend/.nuxt/dist/client/components/v-image-details.js 1.44 kB +4 B (0%)
./frontend/.nuxt/dist/client/components/v-image-details.modern.js 1.43 kB -3 B (0%)
./frontend/.nuxt/dist/client/components/v-image-grid.js 4.42 kB +3 B (0%)
./frontend/.nuxt/dist/client/components/v-image-grid.modern.js 4.3 kB +7 B (0%)
./frontend/.nuxt/dist/client/components/v-license-tab-panel.js 641 B 0 B
./frontend/.nuxt/dist/client/components/v-license-tab-panel.modern.js 650 B 0 B
./frontend/.nuxt/dist/client/components/v-load-more.js 1.18 kB 0 B
./frontend/.nuxt/dist/client/components/v-load-more.modern.js 1.07 kB 0 B
./frontend/.nuxt/dist/client/components/v-media-license.js 933 B 0 B
./frontend/.nuxt/dist/client/components/v-media-license.modern.js 940 B 0 B
./frontend/.nuxt/dist/client/components/v-media-reuse.js 2.99 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-media-reuse.modern.js 2.97 kB 0 B
./frontend/.nuxt/dist/client/components/v-media-tag.js 415 B 0 B
./frontend/.nuxt/dist/client/components/v-media-tag.modern.js 420 B 0 B
./frontend/.nuxt/dist/client/components/v-no-results.js 2.66 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-no-results.modern.js 2.03 kB 0 B
./frontend/.nuxt/dist/client/components/v-radio.js 1 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-radio.modern.js 1.01 kB 0 B
./frontend/.nuxt/dist/client/components/v-related-audio.js 824 B 0 B
./frontend/.nuxt/dist/client/components/v-related-audio.modern.js 742 B 0 B
./frontend/.nuxt/dist/client/components/v-related-audio/pages/search/audio.js 4.38 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-related-audio/pages/search/audio.modern.js 4.26 kB 0 B
./frontend/.nuxt/dist/client/components/v-related-images.js 804 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-related-images.modern.js 719 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-report-desc-form.js 976 B 0 B
./frontend/.nuxt/dist/client/components/v-report-desc-form.modern.js 981 B 0 B
./frontend/.nuxt/dist/client/components/v-row-layout.js 1.72 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-row-layout.modern.js 1.73 kB 0 B
./frontend/.nuxt/dist/client/components/v-safety-wall.js 1.32 kB 0 B
./frontend/.nuxt/dist/client/components/v-safety-wall.modern.js 1.33 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-scroll-button.js 891 B 0 B
./frontend/.nuxt/dist/client/components/v-scroll-button.modern.js 891 B 0 B
./frontend/.nuxt/dist/client/components/v-search-results-title.js 617 B 0 B
./frontend/.nuxt/dist/client/components/v-search-results-title.modern.js 622 B 0 B
./frontend/.nuxt/dist/client/components/v-server-timeout.js 302 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-server-timeout.modern.js 307 B 0 B
./frontend/.nuxt/dist/client/components/v-single-result-controls.js 1.17 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-single-result-controls.modern.js 1.17 kB 0 B
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.js 1.01 kB 0 B
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 914 B 0 B
./frontend/.nuxt/dist/client/components/v-snackbar.js 1.07 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-snackbar.modern.js 1.07 kB 0 B
./frontend/.nuxt/dist/client/components/v-warning-suppressor.js 307 B 0 B
./frontend/.nuxt/dist/client/components/v-warning-suppressor.modern.js 311 B 0 B
./frontend/.nuxt/dist/client/pages/about.js 1.42 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/about.modern.js 1.42 kB 0 B
./frontend/.nuxt/dist/client/pages/audio/_id/index.js 10.6 kB -2 B (0%)
./frontend/.nuxt/dist/client/pages/audio/_id/index.modern.js 10.3 kB -6 B (0%)
./frontend/.nuxt/dist/client/pages/feedback.js 1.36 kB 0 B
./frontend/.nuxt/dist/client/pages/feedback.modern.js 1.36 kB 0 B
./frontend/.nuxt/dist/client/pages/image/_id/index.js 8.13 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/index.modern.js 7.94 kB 0 B
./frontend/.nuxt/dist/client/pages/image/_id/report.js 4.95 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/report.modern.js 4.72 kB 0 B
./frontend/.nuxt/dist/client/pages/index.js 6.33 kB -2 B (0%)
./frontend/.nuxt/dist/client/pages/index.modern.js 6.3 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/preferences.js 1.32 kB 0 B
./frontend/.nuxt/dist/client/pages/preferences.modern.js 1.31 kB 0 B
./frontend/.nuxt/dist/client/pages/privacy.js 1.26 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/privacy.modern.js 1.26 kB 0 B
./frontend/.nuxt/dist/client/pages/search-help.js 1.62 kB 0 B
./frontend/.nuxt/dist/client/pages/search-help.modern.js 1.61 kB 0 B
./frontend/.nuxt/dist/client/pages/search/audio.js 502 B -1 B (0%)
./frontend/.nuxt/dist/client/pages/search/audio.modern.js 505 B 0 B
./frontend/.nuxt/dist/client/pages/search/image.js 460 B 0 B
./frontend/.nuxt/dist/client/pages/search/image.modern.js 462 B 0 B
./frontend/.nuxt/dist/client/pages/search/index.js 316 B 0 B
./frontend/.nuxt/dist/client/pages/search/index.modern.js 320 B +4 B (+1%)
./frontend/.nuxt/dist/client/pages/search/model-3d.js 242 B 0 B
./frontend/.nuxt/dist/client/pages/search/model-3d.modern.js 245 B -1 B (0%)
./frontend/.nuxt/dist/client/pages/search/video.js 239 B 0 B
./frontend/.nuxt/dist/client/pages/search/video.modern.js 243 B 0 B
./frontend/.nuxt/dist/client/pages/sources.js 1.53 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/sources.modern.js 1.54 kB -1 B (0%)
./frontend/.nuxt/dist/client/runtime.js 2.75 kB 0 B
./frontend/.nuxt/dist/client/runtime.modern.js 2.76 kB 0 B
./frontend/.nuxt/dist/client/vendors/app.js 68.5 kB 0 B
./frontend/.nuxt/dist/client/vendors/app.modern.js 68.1 kB 0 B

compressed-size-action

@obulat obulat self-assigned this Aug 23, 2023
@obulat obulat requested a review from fcoveram August 23, 2023 08:06
@obulat obulat force-pushed the update/external_search_modal_items branch 2 times, most recently from 2e86b6f to 36b0059 Compare August 23, 2023 15:20
@obulat obulat mentioned this pull request Aug 23, 2023
8 tasks
@obulat obulat changed the base branch from main to update/tw-rounded-md August 23, 2023 15:25
@obulat obulat marked this pull request as ready for review August 23, 2023 15:26
@obulat obulat requested a review from a team as a code owner August 23, 2023 15:26
Base automatically changed from update/tw-rounded-md to main August 24, 2023 08:12
Copy link
Contributor

@fcoveram fcoveram left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks nice ⭐ I noticed a few details and tried to be as accurate as possible. The mismatch is caused by how Figma sets spacing per frame instead of per section, as in the code.

Comment on lines 66 to 74
<VCloseButton
size="small"
icon-size="medium"
variant="filled-white"
:label="$t('modal.close')"
@close="close"
/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the button in medium size (40px) instead of small (32px), it might be the icon-size property. It also should be transparent-gray instead of filled.

</VButton>
</template>
<template #top-bar="{ close }">
<header class="flex items-center justify-between pe-4 ps-7 pt-4">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In xs paddings should be left: 28px; top and right: 20px, while in sm and above should be left: 36px; top and right: 28px.

/>
</header>
</template>
<VExternalSourceList class="flex flex-col" :search-term="searchTerm" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Icon size of external link item needs to be like VIconButton in size: small, but not interactable. This is for consistenty with the new popover item requested in #2839.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I correctly understand what "not interactable" means for the external link: when you hover over it, the whole button becomes "hovered". You cannot click on the icon itself, all clicks are button clicks.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for not explaining it correctly.

The popover item in #2839 has an optional icon on the right side that in some cases you can interact with it. Here is an example.

recent searches item interaction

Although the above has not been implemented yet, the new style was thought to allow this internal action.

When the action is not needed, like in this case where only indicates a link type, the icon area is the same (32px for the container, 24px as icon size) to keep consistency across all popover items. Here is a screenshot of popover item in wireframe.

Outline version of Popover item component

The smallest box area is the default icon size of 24px, and the container is like VIconButton in 32px (size: small).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At first when I read this note, I thought maybe we should create a separate component in code. However, because they have different functions (the external icon is a "decoration" that has no functionality and the remove "cross" icon is actually an icon button that should have some click handlers) - I think it's best to leave the "external icon" here as VIcon. I set the icon size to 5, which makes the icon itself around 16px high - just like in the mockups. I think the size of the icon now matches the designs. Could you please confirm, @fcoveram ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because they have different functions (the external icon is a "decoration" that has no functionality and the remove "cross" icon is actually an icon button that should have some click handlers) - I think it's best to leave the "external icon" here as VIcon

That makes sense to me. But VIcon needs to be size: 6 (24px) and placed inside a 32px box to look balanced. Without the 32px container, it looks broken.

Here is a design test where the color-filled area is the VIcon in size 6, and the border-only area is the 32px container.

Diagram of popover item. Left, icon with a container. Right, icon without container

I reviewed the PR's last changes and still see the icon in 20px. Here is a gif of what I see.

popover item - chrome inspector

Copy link
Contributor

@fcoveram fcoveram Aug 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VIcon in size 8 is a 32px element that scales up the icon, whereas the above refers to a container area to balance spaces between popover items while keeping the icon in 24px.

@obulat obulat requested a review from fcoveram August 24, 2023 13:36
@obulat obulat force-pushed the update/external_search_modal_items branch from 0b2e457 to 03eba7a Compare August 24, 2023 15:13
@@ -226,7 +226,6 @@ export default {
},
borderRadius: {
inherit: "inherit",
md: "0.5rem",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't realize that rounded-lg is actually border-radius: 0.5rem when I added this new value, md. Since md is redundant now, I removed it and replaced it in the components with rounded-lg

@obulat obulat force-pushed the update/external_search_modal_items branch from 03eba7a to 6531eb8 Compare August 25, 2023 07:16
Copy link
Contributor

@fcoveram fcoveram left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks excellent ✨ 🚀 Thanks for the wonderful work.

@obulat obulat force-pushed the update/external_search_modal_items branch from 6f04267 to 79fb572 Compare August 28, 2023 04:55
Copy link
Contributor

@AetherUnbound AetherUnbound left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed that everything looks correct visually when run locally!

@obulat obulat merged commit 836fd9b into main Aug 29, 2023
45 checks passed
@obulat obulat deleted the update/external_search_modal_items branch August 29, 2023 02:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🕹 aspect: interface Concerns end-users' experience with the software ✨ goal: improvement Improvement to an existing user-facing feature 🟨 priority: medium Not blocking but should be addressed soon 🧱 stack: frontend Related to the Nuxt frontend
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Update external sources modal styles
4 participants