+
{thread.lastPost === null ? (
{c('noRepliesYet')}
) : (
<>
{c('latestReply')}
-
+
{c('by')} {' '}
{c('dot')}
diff --git a/themes/default/src/slots/thread-view.tsx b/themes/default/src/slots/thread-view.tsx
index 206aedb69..99a95db6a 100644
--- a/themes/default/src/slots/thread-view.tsx
+++ b/themes/default/src/slots/thread-view.tsx
@@ -1,8 +1,16 @@
import type { SlotCopy, ThreadViewModel } from '@meith/theme-kit'
import { fromSlotCopy } from '@meith/theme-kit'
-import { Badge, buttonVariants, cn } from '@meith/ui'
+import {
+ Badge,
+ buttonVariants,
+ cn,
+ PageHeader,
+ PageHeaderActions,
+ PageHeaderContent,
+ PageTitle,
+} from '@meith/ui'
-import { Counts, PAGE_BODY, PAGE_TITLE, Prefix } from '../shared'
+import { Counts, PAGE_BODY, Prefix } from '../shared'
export function ThreadView({
thread,
@@ -16,9 +24,9 @@ export function ThreadView({
return (
-
-
-
{thread.title}
+
+
+ {thread.title}
{thread.prefix !== null &&
}
@@ -43,9 +51,9 @@ export function ThreadView({
]}
/>
-
+
-
-
+
+
{regions.tools !== undefined && (
{regions.tools}
diff --git a/themes/midnight/src/copy.ts b/themes/midnight/src/copy.ts
index f63319adc..d3b749211 100644
--- a/themes/midnight/src/copy.ts
+++ b/themes/midnight/src/copy.ts
@@ -1,3 +1,4 @@
+import { mobileHeaderNavCopy } from '@meith/theme-default'
import type { SlotCopy, Translator } from '@meith/theme-kit'
function copyFor(t: Translator, keys: readonly string[]): SlotCopy {
@@ -60,7 +61,7 @@ export function forumRowCopy(t: Translator): SlotCopy {
}
export function headerCopy(t: Translator): SlotCopy {
- return copyFor(t, ['midnight.header.sectionsLabel'])
+ return { ...mobileHeaderNavCopy(t), ...copyFor(t, ['midnight.header.sectionsLabel']) }
}
export function latestPostsCopy(t: Translator): SlotCopy {
diff --git a/themes/midnight/src/slots/header.tsx b/themes/midnight/src/slots/header.tsx
index 85e63c199..0edd97e28 100644
--- a/themes/midnight/src/slots/header.tsx
+++ b/themes/midnight/src/slots/header.tsx
@@ -1,3 +1,4 @@
+import { MobileHeaderNav } from '@meith/theme-default'
import type { HeaderModel, SlotCopy } from '@meith/theme-kit'
import { fromSlotCopy, linkTarget } from '@meith/theme-kit'
@@ -43,88 +44,6 @@ function Submenu({ items }: { items: HeaderModel['navigation'][number]['submenu'
)
}
-function Chevron({ className }: { className: string }) {
- return (
-
- )
-}
-
-function MobileNavItem({ item }: { item: HeaderModel['navigation'][number] }) {
- if (item.submenu === undefined || item.submenu.length === 0) {
- return (
-
-
- {item.label}
-
-
- )
- }
-
- return (
-
-
-
-
- {item.label}
-
-
-
-
-
-
-
-
- )
-}
-
-function MenuGlyph() {
- return (
-
- )
-}
-
export function Header({
boardTitle,
homeHref,
@@ -148,26 +67,7 @@ export function Header({
{children}
- {navigation.length > 0 && (
-
- )}
+
diff --git a/themes/phasebook/src/copy.ts b/themes/phasebook/src/copy.ts
index 9e84d0c1b..b64031a4a 100644
--- a/themes/phasebook/src/copy.ts
+++ b/themes/phasebook/src/copy.ts
@@ -1,3 +1,4 @@
+import { mobileHeaderNavCopy, mobilePanelNavCopy } from '@meith/theme-default'
import type { SlotCopy, Translator } from '@meith/theme-kit'
function copyFor(t: Translator, keys: readonly string[]): SlotCopy {
@@ -77,7 +78,7 @@ export function forumRowCopy(t: Translator): SlotCopy {
}
export function headerCopy(t: Translator): SlotCopy {
- return copyFor(t, ['phasebook.header.sectionsAriaLabel'])
+ return { ...mobileHeaderNavCopy(t), ...copyFor(t, ['phasebook.header.sectionsAriaLabel']) }
}
export function latestPostsCopy(t: Translator): SlotCopy {
@@ -134,7 +135,7 @@ export function paginationCopy(t: Translator): SlotCopy {
}
export function panelNavCopy(t: Translator): SlotCopy {
- return copyFor(t, ['phasebook.panelNav.waiting'])
+ return { ...mobilePanelNavCopy(t), ...copyFor(t, ['phasebook.panelNav.waiting']) }
}
export function postActionsCopy(t: Translator): SlotCopy {
diff --git a/themes/phasebook/src/slots/header.tsx b/themes/phasebook/src/slots/header.tsx
index 85e35e4e9..2f9e52222 100644
--- a/themes/phasebook/src/slots/header.tsx
+++ b/themes/phasebook/src/slots/header.tsx
@@ -1,3 +1,4 @@
+import { MobileHeaderNav } from '@meith/theme-default'
import type { HeaderModel, SlotCopy } from '@meith/theme-kit'
import { fromSlotCopy, linkTarget } from '@meith/theme-kit'
@@ -56,88 +57,6 @@ function Submenu({ items }: { items: HeaderModel['navigation'][number]['submenu'
)
}
-function Chevron({ className }: { className: string }) {
- return (
-
- )
-}
-
-function MobileNavItem({ item }: { item: HeaderModel['navigation'][number] }) {
- if (item.submenu === undefined || item.submenu.length === 0) {
- return (
-
-
- {item.label}
-
-
- )
- }
-
- return (
-
-
-
-
- {item.label}
-
-
-
-
-
-
-
-
- )
-}
-
-function MenuGlyph() {
- return (
-
- )
-}
-
export function Header({
boardTitle,
homeHref,
@@ -186,26 +105,7 @@ export function Header({
{children}
- {navigation.length > 0 && (
-
- )}
+
diff --git a/themes/phasebook/src/slots/panel-nav.tsx b/themes/phasebook/src/slots/panel-nav.tsx
index c5105291f..251dda9a3 100644
--- a/themes/phasebook/src/slots/panel-nav.tsx
+++ b/themes/phasebook/src/slots/panel-nav.tsx
@@ -1,6 +1,7 @@
+import { MobilePanelNav } from '@meith/theme-default'
import type { PanelNavItemModel, PanelNavModel, SlotCopy } from '@meith/theme-kit'
import { fromSlotCopy } from '@meith/theme-kit'
-import { cn, Disclosure } from '@meith/ui'
+import { cn } from '@meith/ui'
import { Chip } from '../shared'
@@ -98,6 +99,7 @@ function Sections({
}
export function PanelNav({
+ panel,
label,
sections,
currentTitle,
@@ -105,14 +107,13 @@ export function PanelNav({
}: PanelNavModel & { copy: SlotCopy }) {
return (
<>
-
-
-
+
diff --git a/themes/raidframe/src/copy.ts b/themes/raidframe/src/copy.ts
index 6c3c6783d..56bfc6c3d 100644
--- a/themes/raidframe/src/copy.ts
+++ b/themes/raidframe/src/copy.ts
@@ -1,3 +1,4 @@
+import { mobileHeaderNavCopy, mobilePanelNavCopy } from '@meith/theme-default'
import type { SlotCopy, Translator } from '@meith/theme-kit'
function copyFor(t: Translator, keys: readonly string[]): SlotCopy {
@@ -92,7 +93,7 @@ export function forumRowCopy(t: Translator): SlotCopy {
}
export function headerCopy(t: Translator): SlotCopy {
- return copyFor(t, ['raidframe.header.sectionsAriaLabel'])
+ return { ...mobileHeaderNavCopy(t), ...copyFor(t, ['raidframe.header.sectionsAriaLabel']) }
}
export function latestPostsCopy(t: Translator): SlotCopy {
@@ -149,7 +150,7 @@ export function paginationCopy(t: Translator): SlotCopy {
}
export function panelNavCopy(t: Translator): SlotCopy {
- return copyFor(t, ['raidframe.panelNav.waiting'])
+ return { ...mobilePanelNavCopy(t), ...copyFor(t, ['raidframe.panelNav.waiting']) }
}
export function panelPageCopy(t: Translator): SlotCopy {
diff --git a/themes/raidframe/src/slots/header.tsx b/themes/raidframe/src/slots/header.tsx
index 23b4aa1e6..8e46b450a 100644
--- a/themes/raidframe/src/slots/header.tsx
+++ b/themes/raidframe/src/slots/header.tsx
@@ -1,3 +1,4 @@
+import { MobileHeaderNav } from '@meith/theme-default'
import type { HeaderModel, SlotCopy } from '@meith/theme-kit'
import { fromSlotCopy, linkTarget } from '@meith/theme-kit'
@@ -51,88 +52,6 @@ function Submenu({ items }: { items: HeaderModel['navigation'][number]['submenu'
)
}
-function Chevron({ className }: { className: string }) {
- return (
-
- )
-}
-
-function MobileNavItem({ item }: { item: HeaderModel['navigation'][number] }) {
- if (item.submenu === undefined || item.submenu.length === 0) {
- return (
-
-
- {item.label}
-
-
- )
- }
-
- return (
-
-
-
-
- {item.label}
-
-
-
-
-
-
-
-
- )
-}
-
-function MenuGlyph() {
- return (
-
- )
-}
-
export function Header({
boardTitle,
homeHref,
@@ -155,26 +74,7 @@ export function Header({
{children}
- {navigation.length > 0 && (
-
- )}
+
diff --git a/themes/raidframe/src/slots/panel-nav.tsx b/themes/raidframe/src/slots/panel-nav.tsx
index 65cd6aba5..93f43be5e 100644
--- a/themes/raidframe/src/slots/panel-nav.tsx
+++ b/themes/raidframe/src/slots/panel-nav.tsx
@@ -1,3 +1,4 @@
+import { MobilePanelNav } from '@meith/theme-default'
import type { PanelNavItemModel, PanelNavModel, SlotCopy } from '@meith/theme-kit'
import { fromSlotCopy } from '@meith/theme-kit'
@@ -105,6 +106,7 @@ function Sections({
}
export function PanelNav({
+ panel,
label,
sections,
currentTitle,
@@ -112,16 +114,13 @@ export function PanelNav({
}: PanelNavModel & { copy: SlotCopy }) {
return (
<>
-
-
- {label}
- {currentTitle !== null && {currentTitle}}
-
-
-
-
-
-
+