diff --git a/front/src/App.vue b/front/src/App.vue
index 7832ed209..bc2d60b9b 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -111,6 +111,7 @@ store.dispatch('auth/fetchUser')
+
diff --git a/front/src/components/ui/Heading.vue b/front/src/components/ui/Heading.vue
index e8c608fcd..d82c8366b 100644
--- a/front/src/components/ui/Heading.vue
+++ b/front/src/components/ui/Heading.vue
@@ -26,23 +26,25 @@ const size = computed(() => (Object.entries(props).find(([key, value]) => value
:is(h1, h2, h3, h4, h5, h6).heading { margin: 0; padding:0; vertical-align: baseline; align-self: baseline;}
/* Page heading */
- .pageheading { font-size: 36px; font-weight: 900; letter-spacing: -1px; }
+ :is(*, .vp-doc h3).pageheading { font-size: 36px; font-weight: 900; letter-spacing: -1px; }
/* Section heading, Modal heading [DEFAULT] */
+ /* TODO: Decide on a size. All mockups on https://design.funkwhale.audio/ have 20px. */
.sectionheading { font-size: 28px; font-weight: 700; letter-spacing: -.5px; }
+ :is(*, .vp-doc h3).sectionheading { font-size: 20px; font-weight: 700; letter-spacing: -.5px; }
/* Form subsection */
- .subsectionheading {font-size: 16px; font-weight: 600; letter-spacing: 0; }
+ :is(*, .vp-doc h3).subsectionheading {font-size: 16px; font-weight: 600; letter-spacing: 0; }
/* input caption */
- .caption {font-size: 14px; font-weight: 600; letter-spacing: .25px; }
+ :is(*, .vp-doc h3).caption {font-size: 14px; font-weight: 600; letter-spacing: .25px; }
/* Tab title, Channel title, Card title, Activity title */
- .title { font-size: 16px; font-weight: 700; line-height: 18px; }
+ :is(*, .vp-doc h3).title { font-size: 16px; font-weight: 700; line-height: 18px; }
/* Primary radio title */
- .radio { font-size: 28px; font-weight: 900; letter-spacing: -.5px; }
+ :is(*, .vp-doc h3).radio { font-size: 28px; font-weight: 900; letter-spacing: -.5px; }
/* Secondary radio title */
- .secondary { font-size: 28px; font-weight: 300; letter-spacing: -.5px; }
+ :is(*, .vp-doc h3).secondary { font-size: 28px; font-weight: 300; letter-spacing: -.5px; }
diff --git a/front/src/components/ui/Section.vue b/front/src/components/ui/Section.vue
index 8ed82680a..ecbef260c 100644
--- a/front/src/components/ui/Section.vue
+++ b/front/src/components/ui/Section.vue
@@ -12,13 +12,17 @@ const actionComponents
= { Button, Link }
const props = defineProps<{
- [M in 'no-items' | 'tiny-items' | 'small-items' | 'medium-items']?: true }
+ [M in 'no-items' | 'tiny-items' | 'small-items' | 'medium-items']?: true
+ }
& {
alignLeft?: boolean;
- collapsed?: boolean;
+ action?: { text: string } & (RouterLinkProps | { onClick: (...args: any[]) => void | Promise })
+ }
+ & {
+ [Operation in 'expand' | 'collapse']?: () => void
}
& { [H in 'h1' | 'h2' | 'h3']?: string }
- & { action?: { text: string } & (RouterLinkProps | { onClick: (...args: any[]) => void | Promise }) }>()
+ >()
const heading
= props.h1
@@ -41,27 +45,65 @@ const headerGrid
-
-
-
-
+
+
+
+
+
+
+
+
+
+
{{ action?.text }}
@@ -87,18 +129,22 @@ const headerGrid
@@ -108,6 +154,12 @@ const headerGrid