From 0364be98d4eac162999b31b4851bd7a23ff0bb2e Mon Sep 17 00:00:00 2001 From: NoahCxrest Date: Sat, 29 Mar 2025 20:47:59 -0600 Subject: [PATCH 01/13] sefs --- apps/frontend/nuxt.config.ts | 2 +- .../src/components/ui/ProjectCard.vue | 28 +- .../src/components/ui/report/ReportView.vue | 9 +- .../src/components/ui/user/UserHoverCard.vue | 354 ++++++++++++++++++ 4 files changed, 387 insertions(+), 6 deletions(-) create mode 100644 apps/frontend/src/components/ui/user/UserHoverCard.vue diff --git a/apps/frontend/nuxt.config.ts b/apps/frontend/nuxt.config.ts index 354bff294c..cc20bf1565 100644 --- a/apps/frontend/nuxt.config.ts +++ b/apps/frontend/nuxt.config.ts @@ -8,7 +8,7 @@ import { globIterate } from "glob"; import { match as matchLocale } from "@formatjs/intl-localematcher"; import { consola } from "consola"; -const STAGING_API_URL = "https://staging-api.modrinth.com/v2/"; +const STAGING_API_URL = "https://api.modrinth.com/v2/"; const preloadedFonts = [ "inter/Inter-Regular.woff2", diff --git a/apps/frontend/src/components/ui/ProjectCard.vue b/apps/frontend/src/components/ui/ProjectCard.vue index 4a71f2ee3f..4c2754afda 100644 --- a/apps/frontend/src/components/ui/ProjectCard.vue +++ b/apps/frontend/src/components/ui/ProjectCard.vue @@ -25,9 +25,11 @@

by - - {{ author }} - + + + {{ typeof author === 'object' ? author.username : author }} + +

@@ -95,6 +97,7 @@ import Categories from "~/components/ui/search/Categories.vue"; import Badge from "~/components/ui/Badge.vue"; import EnvironmentIndicator from "~/components/ui/EnvironmentIndicator.vue"; import Avatar from "~/components/ui/Avatar.vue"; +import UserHoverCard from "~/components/ui/user/UserHoverCard.vue"; export default { components: { @@ -106,6 +109,7 @@ export default { UpdatedIcon, DownloadIcon, HeartIcon, + UserHoverCard, }, props: { id: { @@ -121,7 +125,7 @@ export default { default: "Project Name", }, author: { - type: String, + type: [String, Object], default: null, }, description: { @@ -522,4 +526,20 @@ export default { } } } + +.author { + font-size: 0.9em; + color: var(--color-text-secondary); + font-weight: normal; + + a { + color: var(--color-link); + text-decoration: none; + + &:hover { + color: var(--color-link-hover); + text-decoration: underline; + } + } +} diff --git a/apps/frontend/src/components/ui/report/ReportView.vue b/apps/frontend/src/components/ui/report/ReportView.vue index ce3c2eb660..401d769334 100644 --- a/apps/frontend/src/components/ui/report/ReportView.vue +++ b/apps/frontend/src/components/ui/report/ReportView.vue @@ -7,7 +7,13 @@ :link-stack="breadcrumbsStack" />

Report details

- + + +

Messages

@@ -24,6 +30,7 @@ import Breadcrumbs from "~/components/ui/Breadcrumbs.vue"; import ConversationThread from "~/components/ui/thread/ConversationThread.vue"; import ReportInfo from "~/components/ui/report/ReportInfo.vue"; +import UserHoverCard from "~/components/ui/user/UserHoverCard.vue"; import { addReportMessage } from "~/helpers/threads.js"; const props = defineProps({ diff --git a/apps/frontend/src/components/ui/user/UserHoverCard.vue b/apps/frontend/src/components/ui/user/UserHoverCard.vue new file mode 100644 index 0000000000..0de61859eb --- /dev/null +++ b/apps/frontend/src/components/ui/user/UserHoverCard.vue @@ -0,0 +1,354 @@ + + + + + From 8a41e593c83bbec4bd2cd7f063709958f0285b5d Mon Sep 17 00:00:00 2001 From: NoahCxrest Date: Sun, 30 Mar 2025 11:47:16 -0600 Subject: [PATCH 02/13] more stuffs --- .../src/components/ui/user/UserHoverCard.vue | 77 ++++++++++--------- .../src/pages/[type]/[id]/changelog.vue | 9 ++- .../project/ProjectSidebarCreators.vue | 29 ++++--- 3 files changed, 63 insertions(+), 52 deletions(-) diff --git a/apps/frontend/src/components/ui/user/UserHoverCard.vue b/apps/frontend/src/components/ui/user/UserHoverCard.vue index 0de61859eb..277a4229aa 100644 --- a/apps/frontend/src/components/ui/user/UserHoverCard.vue +++ b/apps/frontend/src/components/ui/user/UserHoverCard.vue @@ -201,9 +201,10 @@ function hideCard() { a { text-decoration: none; + transition: color 0.2s ease; &:hover { - text-decoration: underline; + color: var(--color-link); } } } @@ -214,23 +215,10 @@ function hideCard() { background: var(--color-raised-bg); border: 1px solid var(--color-divider); border-radius: var(--size-rounded-lg); - box-shadow: var(--shadow-card); + box-shadow: var(--shadow-floating); overflow-y: auto; pointer-events: auto; -} - -.loading-spinner { - display: inline-block; - width: 1.5rem; - height: 1.5rem; - border: 2px solid var(--color-text-secondary); - border-top-color: transparent; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - to { transform: rotate(360deg); } + width: 320px; } .user-info { @@ -244,14 +232,20 @@ function hideCard() { gap: var(--spacing-card-sm); color: inherit; text-decoration: none; + transition: opacity 0.2s ease; - &:hover h3 { - color: var(--color-link); - text-decoration: underline; + &:hover { + opacity: 0.8; + + h3 { + color: var(--color-link); + } } h3 { margin: 0; + font-size: var(--font-size-lg); + font-weight: 600; line-height: 1.2; transition: color 0.2s ease; } @@ -262,9 +256,11 @@ function hideCard() { width: 48px; height: 48px; border-radius: 50%; + box-shadow: var(--shadow-sm); } .user-joined { + margin-top: 2px; font-size: var(--font-size-sm); color: var(--color-text-secondary); } @@ -272,83 +268,90 @@ function hideCard() { .user-bio { margin-top: var(--spacing-card-sm); font-size: var(--font-size-sm); + line-height: 1.5; + color: var(--color-text); } .user-stats { margin-top: var(--spacing-card-sm); + padding-top: var(--spacing-card-sm); + border-top: 1px solid var(--color-divider); display: flex; gap: var(--spacing-card-md); font-size: var(--font-size-sm); color: var(--color-text-secondary); .stat-value { - font-weight: bold; + font-weight: 600; color: var(--color-text); } } -.loading { - padding: var(--spacing-card-md); -} - .user-projects { - margin-top: var(--spacing-card-md); + margin-top: var(--spacing-card-sm); display: flex; flex-direction: column; - gap: var(--spacing-card-sm); + gap: var(--spacing-card-xs); } .project-preview { display: flex; align-items: center; gap: var(--spacing-card-sm); - padding: var(--spacing-card-sm); - border-radius: var(--size-rounded-sm); + padding: var(--spacing-card-xs); + border-radius: var(--size-rounded-md); background: var(--color-button-bg); - transition: background 0.2s ease; + transition: all 0.2s ease; &:hover { background: var(--color-button-bg-hover); + transform: translateY(-1px); + + .project-title { + color: var(--color-link); + } } } .project-icon { - width: 32px; - height: 32px; + width: 36px; + height: 36px; border-radius: var(--size-rounded-sm); + box-shadow: var(--shadow-sm); } .project-info { flex: 1; min-width: 0; + display: flex; + flex-direction: column; } .project-title { display: block; font-weight: 500; + font-size: var(--font-size-base); color: var(--color-text); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - - &:hover { - color: var(--color-link); - } + transition: color 0.2s ease; } .project-stats { font-size: var(--font-size-sm); - color: var (--color-text-secondary); + color: var(--color-text-secondary); } .fade-enter-active, .fade-leave-active { - transition: opacity 0.15s ease; + transition: all 0.2s ease; } .fade-enter-from, .fade-leave-to { opacity: 0; + transform: translateY(-4px); } diff --git a/apps/frontend/src/pages/[type]/[id]/changelog.vue b/apps/frontend/src/pages/[type]/[id]/changelog.vue index e6130fd9dc..64d84b6895 100644 --- a/apps/frontend/src/pages/[type]/[id]/changelog.vue +++ b/apps/frontend/src/pages/[type]/[id]/changelog.vue @@ -37,9 +37,11 @@ by - {{ - version.author.user.username - }} + + + {{ version.author.user.username }} + + on @@ -75,6 +77,7 @@ + + diff --git a/packages/ui/src/components/project/ProjectPageDescription.vue b/packages/ui/src/components/project/ProjectPageDescription.vue index 42b3bc00d4..6473c987e9 100644 --- a/packages/ui/src/components/project/ProjectPageDescription.vue +++ b/packages/ui/src/components/project/ProjectPageDescription.vue @@ -1,8 +1,43 @@ + + \ No newline at end of file From 472e9b8a168608acf1c974f65b56903509a24de6 Mon Sep 17 00:00:00 2001 From: NoahCxrest Date: Sun, 30 Mar 2025 14:19:57 -0600 Subject: [PATCH 09/13] start cmd k --- .../src/components/ui/CommandPrompt.vue | 369 ++++++++++++++++++ apps/frontend/src/layouts/default.vue | 3 + 2 files changed, 372 insertions(+) create mode 100644 apps/frontend/src/components/ui/CommandPrompt.vue diff --git a/apps/frontend/src/components/ui/CommandPrompt.vue b/apps/frontend/src/components/ui/CommandPrompt.vue new file mode 100644 index 0000000000..890b983e6f --- /dev/null +++ b/apps/frontend/src/components/ui/CommandPrompt.vue @@ -0,0 +1,369 @@ + + + + + diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 118074246f..62d413436c 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -548,6 +548,8 @@ + +
@@ -692,6 +694,7 @@ import { getProjectTypeMessage } from "~/utils/i18n-project-type.ts"; import CollectionCreateModal from "~/components/ui/CollectionCreateModal.vue"; import OrganizationCreateModal from "~/components/ui/OrganizationCreateModal.vue"; import TeleportOverflowMenu from "~/components/ui/servers/TeleportOverflowMenu.vue"; +import CommandPrompt from '~/components/ui/CommandPrompt.vue' const { formatMessage } = useVIntl(); From 5e28c8004be6103f3a7b1e16ba0c0d5d10db6179 Mon Sep 17 00:00:00 2001 From: NoahCxrest Date: Sun, 30 Mar 2025 15:09:39 -0600 Subject: [PATCH 10/13] add command + k menu to search projects across modrinth! --- .../src/components/ui/CommandMenu.vue | 447 ++++++++++++++++++ .../src/components/ui/CommandPrompt.vue | 369 --------------- apps/frontend/src/layouts/default.vue | 8 +- 3 files changed, 452 insertions(+), 372 deletions(-) create mode 100644 apps/frontend/src/components/ui/CommandMenu.vue delete mode 100644 apps/frontend/src/components/ui/CommandPrompt.vue diff --git a/apps/frontend/src/components/ui/CommandMenu.vue b/apps/frontend/src/components/ui/CommandMenu.vue new file mode 100644 index 0000000000..333d4f76f6 --- /dev/null +++ b/apps/frontend/src/components/ui/CommandMenu.vue @@ -0,0 +1,447 @@ + + + + + diff --git a/apps/frontend/src/components/ui/CommandPrompt.vue b/apps/frontend/src/components/ui/CommandPrompt.vue deleted file mode 100644 index 890b983e6f..0000000000 --- a/apps/frontend/src/components/ui/CommandPrompt.vue +++ /dev/null @@ -1,369 +0,0 @@ - - - - - diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 62d413436c..c422cb16cd 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -548,12 +548,11 @@ - -
+