+ {providerLabel(scholarship.providerType, locale)}
{localize(scholarship.name, locale)}
{localize(scholarship.summary, locale)}
-
{messages.scholarships.tuition} {coverageLabel(scholarship.coverage.tuition, locale)}
{messages.scholarships.stipend} {formatCny(scholarship.coverage.stipendCnyPerMonth, locale, messages.common.unknown)}
{messages.common.deadline} {formatDate(scholarship.deadline, locale, messages.common.unknown)}
{messages.common.university} {scholarship.universityIds.length || messages.common.all}
-
+
+
{messages.common.deadline}
+ {deadlineLabels[currentCycle.deadlineState]}
+ {currentCycle.deadline
+ ? {formatDate(currentCycle.deadline, locale, messages.common.unknown)}
+ : messages.common.unknown}
+
+
{decisionCopy.fundingHighlights} {funding}
+
+
+
{messages.scholarships.accommodation} {coverageLabel(scholarship.coverage.accommodation, locale)}
+
{messages.scholarships.insurance} {scholarship.coverage.insurance === 'unknown'
+ ? messages.common.unknown
+ : scholarship.coverage.insurance ? messages.scholarships.included : messages.scholarships.notIncluded}
+
{messages.common.university} {universities}
+
+
+
+
+
}
diff --git a/src/components/features/ScholarshipExplorerV2.module.css b/src/components/features/ScholarshipExplorerV2.module.css
index 8c43564..30c5831 100644
--- a/src/components/features/ScholarshipExplorerV2.module.css
+++ b/src/components/features/ScholarshipExplorerV2.module.css
@@ -1,31 +1,58 @@
.panel {
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
+ display: block;
position: static;
}
+.primaryGrid,
+.advancedGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
+ gap: .8rem;
+ align-items: end;
+}
+
.search {
grid-column: span 2;
}
+.advanced {
+ margin-top: .8rem;
+ border-block: 1px solid var(--line);
+}
+
+.advanced summary {
+ width: max-content;
+ padding: .78rem 0;
+ color: var(--jade-dark);
+ cursor: pointer;
+ font-size: .78rem;
+ font-weight: 800;
+ letter-spacing: .04em;
+}
+
+.advanced summary:focus-visible {
+ border-radius: .2rem;
+ outline: 3px solid color-mix(in srgb, var(--jade) 25%, transparent);
+ outline-offset: 3px;
+}
+
+.advancedGrid {
+ padding: 0 0 .9rem;
+}
+
.actions {
display: flex;
align-items: center;
gap: .55rem;
-}
-
-.pagination {
- display: grid;
- grid-template-columns: minmax(7rem, 1fr) auto minmax(7rem, 1fr);
- align-items: center;
- gap: 1rem;
margin-top: 1.5rem;
}
-.pagination > :last-child {
- justify-self: end;
-}
-
@media (max-width: 560px) {
+ .primaryGrid,
+ .advancedGrid {
+ grid-template-columns: 1fr;
+ }
+
.search {
grid-column: auto;
}
diff --git a/src/components/features/ScholarshipExplorerV2.tsx b/src/components/features/ScholarshipExplorerV2.tsx
index cc9c77a..d875b74 100644
--- a/src/components/features/ScholarshipExplorerV2.tsx
+++ b/src/components/features/ScholarshipExplorerV2.tsx
@@ -7,6 +7,12 @@ import {
scholarshipCatalogHref,
type ScholarshipCatalogResult,
} from '@/lib/scholarship-catalog'
+import {
+ CatalogFilterSummary,
+ catalogExplorerText,
+ type CatalogFilterChip,
+} from './CatalogFilterSummary'
+import { CatalogPagination } from './CatalogPagination'
import { ScholarshipCard } from './ScholarshipCard'
import styles from './ScholarshipExplorerV2.module.css'
@@ -48,17 +54,74 @@ const labels: Record