@djangocfg/layouts 1.2.11 → 1.2.14
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": "@djangocfg/layouts",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.14",
|
|
4
4
|
"description": "Layout system and components for Unrealon applications",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "DjangoCFG",
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"check": "tsc --noEmit"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@djangocfg/api": "^1.2.
|
|
57
|
-
"@djangocfg/og-image": "^1.2.
|
|
58
|
-
"@djangocfg/ui": "^1.2.
|
|
56
|
+
"@djangocfg/api": "^1.2.14",
|
|
57
|
+
"@djangocfg/og-image": "^1.2.14",
|
|
58
|
+
"@djangocfg/ui": "^1.2.14",
|
|
59
59
|
"@hookform/resolvers": "^5.2.0",
|
|
60
60
|
"consola": "^3.4.2",
|
|
61
61
|
"lucide-react": "^0.468.0",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"vidstack": "0.6.15"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@djangocfg/typescript-config": "^1.2.
|
|
79
|
+
"@djangocfg/typescript-config": "^1.2.14",
|
|
80
80
|
"@types/node": "^24.7.2",
|
|
81
81
|
"@types/react": "19.2.2",
|
|
82
82
|
"@types/react-dom": "19.2.1",
|
|
@@ -16,36 +16,36 @@ export interface PackageInfo {
|
|
|
16
16
|
/**
|
|
17
17
|
* Package versions registry
|
|
18
18
|
* Auto-synced from package.json files
|
|
19
|
-
* Last updated: 2025-10-
|
|
19
|
+
* Last updated: 2025-10-29T12:42:02.313Z
|
|
20
20
|
*/
|
|
21
21
|
const PACKAGE_VERSIONS: PackageInfo[] = [
|
|
22
22
|
{
|
|
23
23
|
"name": "@djangocfg/ui",
|
|
24
|
-
"version": "1.2.
|
|
24
|
+
"version": "1.2.14"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"name": "@djangocfg/api",
|
|
28
|
-
"version": "1.2.
|
|
28
|
+
"version": "1.2.14"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"name": "@djangocfg/layouts",
|
|
32
|
-
"version": "1.2.
|
|
32
|
+
"version": "1.2.14"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"name": "@djangocfg/markdown",
|
|
36
|
-
"version": "1.2.
|
|
36
|
+
"version": "1.2.14"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "@djangocfg/og-image",
|
|
40
|
-
"version": "1.2.
|
|
40
|
+
"version": "1.2.14"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "@djangocfg/eslint-config",
|
|
44
|
-
"version": "1.2.
|
|
44
|
+
"version": "1.2.14"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"name": "@djangocfg/typescript-config",
|
|
48
|
-
"version": "1.2.
|
|
48
|
+
"version": "1.2.14"
|
|
49
49
|
}
|
|
50
50
|
];
|
|
51
51
|
|
|
@@ -37,6 +37,12 @@ export function UserMenu({ variant, onNavigate }: UserMenuProps) {
|
|
|
37
37
|
const { config, userMenuOpen, toggleUserMenu, closeUserMenu } = useAppContext();
|
|
38
38
|
const { user, isAuthenticated, logout } = useAuth();
|
|
39
39
|
|
|
40
|
+
// Fix hydration mismatch by only rendering auth-dependent content after mount
|
|
41
|
+
const [mounted, setMounted] = React.useState(false);
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
setMounted(true);
|
|
44
|
+
}, []);
|
|
45
|
+
|
|
40
46
|
const { publicLayout, routes } = config;
|
|
41
47
|
|
|
42
48
|
// Desktop: determine if user is on dashboard
|
|
@@ -177,6 +183,15 @@ export function UserMenu({ variant, onNavigate }: UserMenuProps) {
|
|
|
177
183
|
|
|
178
184
|
// Desktop variant
|
|
179
185
|
if (variant === 'desktop') {
|
|
186
|
+
// Show loading state during hydration
|
|
187
|
+
if (!mounted) {
|
|
188
|
+
return (
|
|
189
|
+
<div className="flex items-center gap-3">
|
|
190
|
+
<div className="h-9 w-20 animate-pulse bg-muted rounded-sm" />
|
|
191
|
+
</div>
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
|
|
180
195
|
return (
|
|
181
196
|
<div className="flex items-center gap-3">
|
|
182
197
|
{isAuthenticated ? (
|
|
@@ -265,6 +280,17 @@ export function UserMenu({ variant, onNavigate }: UserMenuProps) {
|
|
|
265
280
|
}
|
|
266
281
|
|
|
267
282
|
// Mobile variant
|
|
283
|
+
// Show loading state during hydration
|
|
284
|
+
if (!mounted) {
|
|
285
|
+
return (
|
|
286
|
+
<Card className="border-border !bg-accent/50">
|
|
287
|
+
<CardContent className="p-4">
|
|
288
|
+
<div className="h-24 animate-pulse bg-muted rounded-sm" />
|
|
289
|
+
</CardContent>
|
|
290
|
+
</Card>
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
268
294
|
if (isAuthenticated) {
|
|
269
295
|
return (
|
|
270
296
|
<Card className="border-primary/20 shadow-lg !bg-accent/50">
|