@meith/theme-clubhouse 0.33.2 → 0.33.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meith/theme-clubhouse",
3
- "version": "0.33.2",
3
+ "version": "0.33.3",
4
4
  "description": "A sports club theme for Meith — GAA, soccer, basketball — painted from the club's own two colours.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -20,9 +20,9 @@
20
20
  "access": "public"
21
21
  },
22
22
  "dependencies": {
23
- "@meith/theme-default": "^0.33.2",
24
- "@meith/theme-kit": "^0.33.2",
25
- "@meith/ui": "^0.33.2"
23
+ "@meith/theme-default": "^0.33.3",
24
+ "@meith/ui": "^0.33.3",
25
+ "@meith/theme-kit": "^0.33.3"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "^19.2.0"
@@ -121,6 +121,23 @@ function MobileNavItem({ item }: { item: HeaderModel['navigation'][number] }) {
121
121
  )
122
122
  }
123
123
 
124
+ function MenuGlyph() {
125
+ return (
126
+ <svg
127
+ aria-hidden="true"
128
+ viewBox="0 0 20 20"
129
+ className="size-5"
130
+ fill="none"
131
+ stroke="currentColor"
132
+ strokeWidth="1.75"
133
+ strokeLinecap="round"
134
+ >
135
+ <path className="group-open/menu:hidden" d="M3 5.5h14M3 10h14M3 14.5h14" />
136
+ <path className="hidden group-open/menu:block" d="m5 5 10 10M15 5 5 15" />
137
+ </svg>
138
+ )
139
+ }
140
+
124
141
  export function Header({
125
142
  boardTitle,
126
143
  homeHref,
@@ -134,7 +151,7 @@ export function Header({
134
151
  const opensMenus = navigation.some((item) => item.submenu !== undefined)
135
152
 
136
153
  return (
137
- <header className="bg-card">
154
+ <header className="relative bg-card">
138
155
  <div className={`${PAGE} flex flex-wrap items-center justify-between gap-x-6 gap-y-3 py-3`}>
139
156
  <a
140
157
  href={homeHref}
@@ -142,13 +159,38 @@ export function Header({
142
159
  >
143
160
  <BoardMark boardTitle={boardTitle} logo={logo} />
144
161
  </a>
145
- {children}
162
+ <div className="flex min-w-0 items-center gap-3">
163
+ {children}
164
+ {navigation.length > 0 && (
165
+ <nav aria-label={c('boardSections')} data-nav-view="mobile" className="lg:hidden">
166
+ <details data-nav-disclosure className="group/menu">
167
+ <summary
168
+ className={`rounded-md border border-border text-foreground transition-colors hover:bg-primary hover:text-primary-foreground group-open/menu:bg-primary group-open/menu:text-primary-foreground flex size-10 cursor-default list-none items-center justify-center select-none [&::-webkit-details-marker]:hidden [&::marker]:content-none`}
169
+ >
170
+ <MenuGlyph />
171
+ <span className="sr-only">{c('boardSections')}</span>
172
+ </summary>
173
+
174
+ <div className="absolute inset-x-0 top-full z-30 max-h-[calc(100dvh-4rem)] overflow-y-auto border-b border-border bg-card shadow-elevation">
175
+ <ul className={`${PAGE} flex flex-col gap-0.5 py-2`}>
176
+ {navigation.map((item) => (
177
+ <MobileNavItem key={item.href} item={item} />
178
+ ))}
179
+ </ul>
180
+ </div>
181
+ </details>
182
+ </nav>
183
+ )}
184
+ </div>
146
185
  </div>
147
186
 
148
187
  <ClubRule />
149
188
 
150
189
  {navigation.length > 0 && (
151
- <nav aria-label={c('boardSections')} className="border-b border-border bg-surface">
190
+ <nav
191
+ aria-label={c('boardSections')}
192
+ className="hidden border-b border-border bg-surface lg:block"
193
+ >
152
194
  <div className={PAGE}>
153
195
  <ul
154
196
  data-nav-view="desktop"
@@ -169,22 +211,6 @@ export function Header({
169
211
  </li>
170
212
  ))}
171
213
  </ul>
172
-
173
- <div data-nav-view="mobile" className="-mx-4 px-4 py-1 sm:-mx-6 sm:px-6 lg:hidden">
174
- <details data-nav-disclosure className="group">
175
- <summary
176
- className={`${HEADING} flex min-h-11 cursor-default list-none items-center gap-2 text-sm text-foreground select-none [&::-webkit-details-marker]:hidden [&::marker]:content-none`}
177
- >
178
- <Chevron className="size-3 shrink-0 transition-transform group-open:rotate-90" />
179
- {c('boardSections')}
180
- </summary>
181
- <ul className="flex flex-col gap-0.5 pb-2">
182
- {navigation.map((item) => (
183
- <MobileNavItem key={item.href} item={item} />
184
- ))}
185
- </ul>
186
- </details>
187
- </div>
188
214
  </div>
189
215
  </nav>
190
216
  )}
@@ -170,7 +170,7 @@ export function PostBit({ post, select, regions, copy }: PostBitSlotModel & { co
170
170
  <AuthorBlock author={post.author} badges={regions.pluginBadges} copy={copy} />
171
171
  </div>
172
172
 
173
- <div className="min-w-0">
173
+ <div className="flex min-w-0 flex-col">
174
174
  <div className="flex items-center justify-between gap-3 border-b border-border px-4 py-1.5 text-xs text-muted-foreground">
175
175
  <span className="flex items-center gap-2">
176
176
  {select !== null && (
@@ -274,7 +274,7 @@ export function PostBit({ post, select, regions, copy }: PostBitSlotModel & { co
274
274
  </div>
275
275
  )}
276
276
 
277
- {regions.actions !== null && <footer>{regions.actions}</footer>}
277
+ {regions.actions !== null && <footer className="mt-auto">{regions.actions}</footer>}
278
278
  </div>
279
279
  </div>
280
280
  </Card>
package/src/theme.ts CHANGED
@@ -51,7 +51,7 @@ import { WhoIsOnline } from './slots/who-is-online'
51
51
  export const clubhouseTheme = defineTheme({
52
52
  key: 'clubhouse',
53
53
  title: 'Clubhouse',
54
- version: '0.33.2',
54
+ version: '0.33.3',
55
55
  extends: defaultTheme,
56
56
  slots: {
57
57
  Shell,