@meith/theme-clubhouse 0.32.0 → 0.33.1

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.32.0",
3
+ "version": "0.33.1",
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.32.0",
24
- "@meith/theme-kit": "^0.32.0",
25
- "@meith/ui": "^0.32.0"
23
+ "@meith/theme-default": "^0.33.1",
24
+ "@meith/theme-kit": "^0.33.1",
25
+ "@meith/ui": "^0.33.1"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "^19.2.0"
package/src/shared.tsx CHANGED
@@ -192,8 +192,8 @@ export function ReadMark({ unread }: { unread: boolean }) {
192
192
  }
193
193
 
194
194
  export function isEmptyRegion(node: React.ReactNode): boolean {
195
- if (node === null || node === undefined || node === false) return true
196
- return Array.isArray(node) && node.length === 0
195
+ if (node === null || node === undefined || node === false || node === '') return true
196
+ return Array.isArray(node) && node.every((child) => isEmptyRegion(child))
197
197
  }
198
198
 
199
199
  const PREFIX_TONES = {
@@ -74,7 +74,7 @@ function GroupBadge({
74
74
 
75
75
  function StatLine({ label, children }: { label: string; children: React.ReactNode }) {
76
76
  return (
77
- <div className="flex items-baseline justify-between gap-2">
77
+ <div className="flex items-baseline gap-1.5 sm:justify-between sm:gap-2">
78
78
  <dt className={MICRO}>{label}</dt>
79
79
  <dd className={`${NUMERIC} text-xs font-semibold text-foreground`}>{children}</dd>
80
80
  </div>
@@ -94,43 +94,45 @@ function AuthorBlock({
94
94
 
95
95
  return (
96
96
  <>
97
- <div aria-hidden="true" className="h-12 border-b-2 border-b-secondary bg-primary" />
97
+ <div aria-hidden="true" className="h-8 border-b-2 border-b-secondary bg-primary sm:h-12" />
98
98
 
99
- <div className="relative z-10 -mt-7 px-4">
99
+ <div className="relative z-10 -mt-5 flex items-end gap-3 px-4 sm:-mt-7 sm:block">
100
100
  <Avatar
101
101
  src={author.avatarUrl}
102
102
  name={author.username}
103
103
  size={52}
104
- className="rounded-sm border-2 border-card"
104
+ className="shrink-0 rounded-sm border-2 border-card bg-card"
105
105
  />
106
106
 
107
- <p className="mt-1.5 truncate">
108
- <UserRef user={author} className={`${HEADING} text-sm`} />
109
- </p>
110
-
111
- {groupTags(author.groups, author.title).map((group) => (
112
- <p key={group.title} className={`${MICRO} mt-0.5 truncate`}>
113
- <span className={group.nameClass ?? undefined}>{group.title}</span>
107
+ <div className="min-w-0 flex-1 sm:flex-none">
108
+ <p className="truncate sm:mt-1.5">
109
+ <UserRef user={author} className={`${HEADING} text-sm`} />
114
110
  </p>
115
- ))}
116
111
 
117
- {author.isOnline && (
118
- <p className="mt-1 flex items-center gap-1.5 text-xs text-moderation-approved">
119
- <span aria-hidden="true" className="size-1.5 rounded-full bg-moderation-approved" />
120
- {c('online')}
121
- </p>
122
- )}
112
+ {groupTags(author.groups, author.title).map((group) => (
113
+ <p key={group.title} className={`${MICRO} mt-0.5 truncate`}>
114
+ <span className={group.nameClass ?? undefined}>{group.title}</span>
115
+ </p>
116
+ ))}
123
117
 
124
- {author.badge != null && (
125
- <p className="mt-2">
126
- <GroupBadge badge={author.badge} />
127
- </p>
128
- )}
118
+ {author.isOnline && (
119
+ <p className="mt-1 flex items-center gap-1.5 text-xs text-moderation-approved">
120
+ <span aria-hidden="true" className="size-1.5 rounded-full bg-moderation-approved" />
121
+ {c('online')}
122
+ </p>
123
+ )}
129
124
 
130
- {badges}
125
+ {author.badge != null && (
126
+ <p className="mt-2">
127
+ <GroupBadge badge={author.badge} />
128
+ </p>
129
+ )}
130
+
131
+ {badges}
132
+ </div>
131
133
  </div>
132
134
 
133
- <dl className="mt-2.5 space-y-1 border-t border-border px-4 py-2.5">
135
+ <dl className="mt-2 flex flex-wrap gap-x-4 gap-y-1 border-t border-border px-4 py-2 sm:mt-2.5 sm:block sm:space-y-1 sm:py-2.5">
134
136
  <StatLine label={c('posts')}>{author.postCount.label}</StatLine>
135
137
  {author.reputation != null && (
136
138
  <StatLine label={c('rep')}>{author.reputation.label}</StatLine>
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.32.0',
54
+ version: '0.33.1',
55
55
  extends: defaultTheme,
56
56
  slots: {
57
57
  Shell,