@djangocfg/layouts 1.2.44 → 1.2.47
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 +5 -5
- package/src/layouts/AppLayout/components/PackageVersions/packageVersions.config.ts +8 -8
- package/src/layouts/UILayout/config/components/forms.config.tsx +35 -11
- package/src/layouts/UILayout/config/components/navigation.config.tsx +13 -8
- package/src/layouts/UILayout/config/components/overlay.config.tsx +19 -11
- package/src/layouts/UILayout/config/components/specialized.config.tsx +59 -34
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djangocfg/layouts",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.47",
|
|
4
4
|
"description": "Layout system and components for Unrealon applications",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "DjangoCFG",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"check": "tsc --noEmit"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@djangocfg/api": "^1.2.
|
|
67
|
-
"@djangocfg/og-image": "^1.2.
|
|
68
|
-
"@djangocfg/ui": "^1.2.
|
|
66
|
+
"@djangocfg/api": "^1.2.47",
|
|
67
|
+
"@djangocfg/og-image": "^1.2.47",
|
|
68
|
+
"@djangocfg/ui": "^1.2.47",
|
|
69
69
|
"@hookform/resolvers": "^5.2.0",
|
|
70
70
|
"consola": "^3.4.2",
|
|
71
71
|
"lucide-react": "^0.468.0",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"vidstack": "0.6.15"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@djangocfg/typescript-config": "^1.2.
|
|
89
|
+
"@djangocfg/typescript-config": "^1.2.47",
|
|
90
90
|
"@types/node": "^24.7.2",
|
|
91
91
|
"@types/react": "19.2.2",
|
|
92
92
|
"@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-11-
|
|
19
|
+
* Last updated: 2025-11-20T16:20:04.792Z
|
|
20
20
|
*/
|
|
21
21
|
const PACKAGE_VERSIONS: PackageInfo[] = [
|
|
22
22
|
{
|
|
23
23
|
"name": "@djangocfg/ui",
|
|
24
|
-
"version": "1.2.
|
|
24
|
+
"version": "1.2.47"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"name": "@djangocfg/api",
|
|
28
|
-
"version": "1.2.
|
|
28
|
+
"version": "1.2.47"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"name": "@djangocfg/layouts",
|
|
32
|
-
"version": "1.2.
|
|
32
|
+
"version": "1.2.47"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"name": "@djangocfg/markdown",
|
|
36
|
-
"version": "1.2.
|
|
36
|
+
"version": "1.2.47"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "@djangocfg/og-image",
|
|
40
|
-
"version": "1.2.
|
|
40
|
+
"version": "1.2.47"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "@djangocfg/eslint-config",
|
|
44
|
-
"version": "1.2.
|
|
44
|
+
"version": "1.2.47"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"name": "@djangocfg/typescript-config",
|
|
48
|
-
"version": "1.2.
|
|
48
|
+
"version": "1.2.47"
|
|
49
49
|
}
|
|
50
50
|
];
|
|
51
51
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import {
|
|
7
7
|
Button,
|
|
8
|
+
ButtonLink,
|
|
8
9
|
DownloadButton,
|
|
9
10
|
Input,
|
|
10
11
|
Checkbox,
|
|
@@ -56,22 +57,45 @@ export const FORM_COMPONENTS: ComponentConfig[] = [
|
|
|
56
57
|
{
|
|
57
58
|
name: 'Button',
|
|
58
59
|
category: 'forms',
|
|
59
|
-
description: 'Interactive button with multiple variants and
|
|
60
|
-
importPath: "import { Button } from '@djangocfg/ui';",
|
|
61
|
-
example:
|
|
60
|
+
description: 'Interactive button with multiple variants, sizes, and loading state. Use ButtonLink for navigation.',
|
|
61
|
+
importPath: "import { Button, ButtonLink } from '@djangocfg/ui';",
|
|
62
|
+
example: `// Variants
|
|
63
|
+
<Button variant="default">Click me</Button>
|
|
62
64
|
<Button variant="destructive">Delete</Button>
|
|
63
65
|
<Button variant="outline">Outline</Button>
|
|
64
66
|
<Button variant="ghost">Ghost</Button>
|
|
67
|
+
|
|
68
|
+
// Sizes
|
|
65
69
|
<Button size="sm">Small</Button>
|
|
66
|
-
<Button size="lg">Large</Button
|
|
70
|
+
<Button size="lg">Large</Button>
|
|
71
|
+
|
|
72
|
+
// Loading state
|
|
73
|
+
<Button loading={true}>Saving...</Button>
|
|
74
|
+
<Button loading={false}>Save</Button>
|
|
75
|
+
|
|
76
|
+
// ButtonLink for navigation with Next.js Link
|
|
77
|
+
<ButtonLink href="/dashboard">Go to Dashboard</ButtonLink>
|
|
78
|
+
<ButtonLink href="/settings" variant="outline">Settings</ButtonLink>`,
|
|
67
79
|
preview: (
|
|
68
|
-
<div className="flex flex-
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
<div className="flex flex-col gap-4">
|
|
81
|
+
<div className="flex flex-wrap gap-3">
|
|
82
|
+
<Button variant="default">Click me</Button>
|
|
83
|
+
<Button variant="destructive">Delete</Button>
|
|
84
|
+
<Button variant="outline">Outline</Button>
|
|
85
|
+
<Button variant="ghost">Ghost</Button>
|
|
86
|
+
</div>
|
|
87
|
+
<div className="flex flex-wrap gap-3">
|
|
88
|
+
<Button size="sm">Small</Button>
|
|
89
|
+
<Button size="lg">Large</Button>
|
|
90
|
+
</div>
|
|
91
|
+
<div className="flex flex-wrap gap-3">
|
|
92
|
+
<Button loading={true}>Saving...</Button>
|
|
93
|
+
<Button loading={false}>Save</Button>
|
|
94
|
+
</div>
|
|
95
|
+
<div className="flex flex-wrap gap-3">
|
|
96
|
+
<ButtonLink href="#">Go to Dashboard</ButtonLink>
|
|
97
|
+
<ButtonLink href="#" variant="outline">Settings</ButtonLink>
|
|
98
|
+
</div>
|
|
75
99
|
</div>
|
|
76
100
|
),
|
|
77
101
|
},
|
|
@@ -37,7 +37,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
37
37
|
{
|
|
38
38
|
name: 'NavigationMenu',
|
|
39
39
|
category: 'navigation',
|
|
40
|
-
description: 'Accessible navigation menu with dropdown support',
|
|
40
|
+
description: 'Accessible navigation menu with dropdown support and Next.js router integration',
|
|
41
41
|
importPath: `import {
|
|
42
42
|
NavigationMenu,
|
|
43
43
|
NavigationMenuContent,
|
|
@@ -53,6 +53,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
53
53
|
<NavigationMenuContent>
|
|
54
54
|
<ul className="grid gap-3 p-6 md:w-[400px]">
|
|
55
55
|
<li>
|
|
56
|
+
{/* NavigationMenuLink with href uses Next.js Link automatically */}
|
|
56
57
|
<NavigationMenuLink href="/">
|
|
57
58
|
<div className="text-sm font-medium">Welcome</div>
|
|
58
59
|
<p className="text-sm text-muted-foreground">
|
|
@@ -64,6 +65,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
64
65
|
</NavigationMenuContent>
|
|
65
66
|
</NavigationMenuItem>
|
|
66
67
|
<NavigationMenuItem>
|
|
68
|
+
{/* Direct link with client-side navigation */}
|
|
67
69
|
<NavigationMenuLink href="/docs">
|
|
68
70
|
Documentation
|
|
69
71
|
</NavigationMenuLink>
|
|
@@ -102,7 +104,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
102
104
|
{
|
|
103
105
|
name: 'Breadcrumb',
|
|
104
106
|
category: 'navigation',
|
|
105
|
-
description: 'Navigation breadcrumbs showing current page hierarchy',
|
|
107
|
+
description: 'Navigation breadcrumbs showing current page hierarchy with Next.js router support',
|
|
106
108
|
importPath: `import {
|
|
107
109
|
Breadcrumb,
|
|
108
110
|
BreadcrumbItem,
|
|
@@ -114,6 +116,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
114
116
|
example: `<Breadcrumb>
|
|
115
117
|
<BreadcrumbList>
|
|
116
118
|
<BreadcrumbItem>
|
|
119
|
+
{/* BreadcrumbLink with href automatically uses Next.js Link */}
|
|
117
120
|
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
118
121
|
</BreadcrumbItem>
|
|
119
122
|
<BreadcrumbSeparator />
|
|
@@ -122,6 +125,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
122
125
|
</BreadcrumbItem>
|
|
123
126
|
<BreadcrumbSeparator />
|
|
124
127
|
<BreadcrumbItem>
|
|
128
|
+
{/* Current page - not a link */}
|
|
125
129
|
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
|
|
126
130
|
</BreadcrumbItem>
|
|
127
131
|
</BreadcrumbList>
|
|
@@ -208,7 +212,7 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
208
212
|
{
|
|
209
213
|
name: 'Pagination',
|
|
210
214
|
category: 'navigation',
|
|
211
|
-
description: 'Page navigation with previous/next controls',
|
|
215
|
+
description: 'Page navigation with previous/next controls and Next.js router support',
|
|
212
216
|
importPath: `import {
|
|
213
217
|
Pagination,
|
|
214
218
|
PaginationContent,
|
|
@@ -221,22 +225,23 @@ export const NAVIGATION_COMPONENTS: ComponentConfig[] = [
|
|
|
221
225
|
example: `<Pagination>
|
|
222
226
|
<PaginationContent>
|
|
223
227
|
<PaginationItem>
|
|
224
|
-
|
|
228
|
+
{/* Previous/Next with href automatically use Next.js Link */}
|
|
229
|
+
<PaginationPrevious href="/page/1" />
|
|
225
230
|
</PaginationItem>
|
|
226
231
|
<PaginationItem>
|
|
227
|
-
<PaginationLink href="
|
|
232
|
+
<PaginationLink href="/page/1" isActive>1</PaginationLink>
|
|
228
233
|
</PaginationItem>
|
|
229
234
|
<PaginationItem>
|
|
230
|
-
<PaginationLink href="
|
|
235
|
+
<PaginationLink href="/page/2">2</PaginationLink>
|
|
231
236
|
</PaginationItem>
|
|
232
237
|
<PaginationItem>
|
|
233
|
-
<PaginationLink href="
|
|
238
|
+
<PaginationLink href="/page/3">3</PaginationLink>
|
|
234
239
|
</PaginationItem>
|
|
235
240
|
<PaginationItem>
|
|
236
241
|
<PaginationEllipsis />
|
|
237
242
|
</PaginationItem>
|
|
238
243
|
<PaginationItem>
|
|
239
|
-
<PaginationNext href="
|
|
244
|
+
<PaginationNext href="/page/2" />
|
|
240
245
|
</PaginationItem>
|
|
241
246
|
</PaginationContent>
|
|
242
247
|
</Pagination>`,
|
|
@@ -466,7 +466,7 @@ export const OVERLAY_COMPONENTS: ComponentConfig[] = [
|
|
|
466
466
|
{
|
|
467
467
|
name: 'DropdownMenu',
|
|
468
468
|
category: 'overlay',
|
|
469
|
-
description: 'Dropdown menu for actions and options',
|
|
469
|
+
description: 'Dropdown menu for actions and options with Next.js router support',
|
|
470
470
|
importPath: `import {
|
|
471
471
|
DropdownMenu,
|
|
472
472
|
DropdownMenuContent,
|
|
@@ -483,9 +483,15 @@ export const OVERLAY_COMPONENTS: ComponentConfig[] = [
|
|
|
483
483
|
<DropdownMenuContent className="w-56">
|
|
484
484
|
<DropdownMenuLabel>My Account</DropdownMenuLabel>
|
|
485
485
|
<DropdownMenuSeparator />
|
|
486
|
-
|
|
487
|
-
<DropdownMenuItem>
|
|
488
|
-
<DropdownMenuItem>
|
|
486
|
+
{/* DropdownMenuItem with href automatically uses Next.js Link */}
|
|
487
|
+
<DropdownMenuItem href="/profile">Profile</DropdownMenuItem>
|
|
488
|
+
<DropdownMenuItem href="/billing">Billing</DropdownMenuItem>
|
|
489
|
+
<DropdownMenuItem href="/settings">Settings</DropdownMenuItem>
|
|
490
|
+
<DropdownMenuSeparator />
|
|
491
|
+
{/* Without href - for actions */}
|
|
492
|
+
<DropdownMenuItem onClick={() => console.log('Logout')}>
|
|
493
|
+
Logout
|
|
494
|
+
</DropdownMenuItem>
|
|
489
495
|
</DropdownMenuContent>
|
|
490
496
|
</DropdownMenu>`,
|
|
491
497
|
preview: (
|
|
@@ -506,7 +512,7 @@ export const OVERLAY_COMPONENTS: ComponentConfig[] = [
|
|
|
506
512
|
{
|
|
507
513
|
name: 'Menubar',
|
|
508
514
|
category: 'overlay',
|
|
509
|
-
description: 'Application menubar with multiple menu groups',
|
|
515
|
+
description: 'Application menubar with multiple menu groups and Next.js router support',
|
|
510
516
|
importPath: `import {
|
|
511
517
|
Menubar,
|
|
512
518
|
MenubarContent,
|
|
@@ -519,19 +525,21 @@ export const OVERLAY_COMPONENTS: ComponentConfig[] = [
|
|
|
519
525
|
<MenubarMenu>
|
|
520
526
|
<MenubarTrigger>File</MenubarTrigger>
|
|
521
527
|
<MenubarContent>
|
|
522
|
-
|
|
523
|
-
<MenubarItem>New
|
|
528
|
+
{/* MenubarItem with href automatically uses Next.js Link */}
|
|
529
|
+
<MenubarItem href="/new">New Tab</MenubarItem>
|
|
530
|
+
<MenubarItem href="/window">New Window</MenubarItem>
|
|
524
531
|
<MenubarSeparator />
|
|
525
|
-
<MenubarItem>Share</MenubarItem>
|
|
532
|
+
<MenubarItem href="/share">Share</MenubarItem>
|
|
526
533
|
<MenubarSeparator />
|
|
527
|
-
|
|
534
|
+
{/* Without href - for actions */}
|
|
535
|
+
<MenubarItem onClick={() => window.print()}>Print</MenubarItem>
|
|
528
536
|
</MenubarContent>
|
|
529
537
|
</MenubarMenu>
|
|
530
538
|
<MenubarMenu>
|
|
531
539
|
<MenubarTrigger>Edit</MenubarTrigger>
|
|
532
540
|
<MenubarContent>
|
|
533
|
-
<MenubarItem>Undo</MenubarItem>
|
|
534
|
-
<MenubarItem>Redo</MenubarItem>
|
|
541
|
+
<MenubarItem onClick={() => document.execCommand('undo')}>Undo</MenubarItem>
|
|
542
|
+
<MenubarItem onClick={() => document.execCommand('redo')}>Redo</MenubarItem>
|
|
535
543
|
</MenubarContent>
|
|
536
544
|
</MenubarMenu>
|
|
537
545
|
</Menubar>`,
|
|
@@ -25,41 +25,66 @@ export const SPECIALIZED_COMPONENTS: ComponentConfig[] = [
|
|
|
25
25
|
{
|
|
26
26
|
name: 'Sidebar',
|
|
27
27
|
category: 'specialized',
|
|
28
|
-
description: 'Full-featured sidebar navigation component (23KB) with collapsible groups and
|
|
29
|
-
importPath: `import {
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
description: 'Full-featured sidebar navigation component (23KB) with collapsible groups, icons, and Next.js router support',
|
|
29
|
+
importPath: `import {
|
|
30
|
+
Sidebar,
|
|
31
|
+
SidebarContent,
|
|
32
|
+
SidebarGroup,
|
|
33
|
+
SidebarGroupLabel,
|
|
34
|
+
SidebarGroupContent,
|
|
35
|
+
SidebarMenu,
|
|
36
|
+
SidebarMenuItem,
|
|
37
|
+
SidebarMenuButton,
|
|
38
|
+
SidebarMenuSub,
|
|
39
|
+
SidebarMenuSubButton,
|
|
40
|
+
SidebarMenuSubItem,
|
|
41
|
+
} from '@djangocfg/ui';`,
|
|
42
|
+
example: `// SidebarMenuButton with href automatically uses Next.js Link
|
|
43
|
+
<Sidebar>
|
|
44
|
+
<SidebarContent>
|
|
45
|
+
<SidebarGroup>
|
|
46
|
+
<SidebarGroupLabel>Main</SidebarGroupLabel>
|
|
47
|
+
<SidebarGroupContent>
|
|
48
|
+
<SidebarMenu>
|
|
49
|
+
<SidebarMenuItem>
|
|
50
|
+
<SidebarMenuButton href="/" isActive tooltip="Dashboard">
|
|
51
|
+
<HomeIcon />
|
|
52
|
+
<span>Dashboard</span>
|
|
53
|
+
</SidebarMenuButton>
|
|
54
|
+
</SidebarMenuItem>
|
|
55
|
+
<SidebarMenuItem>
|
|
56
|
+
<SidebarMenuButton href="/users" tooltip="Users">
|
|
57
|
+
<UsersIcon />
|
|
58
|
+
<span>Users</span>
|
|
59
|
+
</SidebarMenuButton>
|
|
60
|
+
</SidebarMenuItem>
|
|
61
|
+
</SidebarMenu>
|
|
62
|
+
</SidebarGroupContent>
|
|
63
|
+
</SidebarGroup>
|
|
32
64
|
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
label: "Preferences",
|
|
57
|
-
href: "/settings"
|
|
58
|
-
},
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
]}
|
|
62
|
-
/>`,
|
|
65
|
+
<SidebarGroup>
|
|
66
|
+
<SidebarGroupLabel>Settings</SidebarGroupLabel>
|
|
67
|
+
<SidebarGroupContent>
|
|
68
|
+
<SidebarMenu>
|
|
69
|
+
<SidebarMenuItem>
|
|
70
|
+
<SidebarMenuButton href="/settings">
|
|
71
|
+
<SettingsIcon />
|
|
72
|
+
<span>Preferences</span>
|
|
73
|
+
</SidebarMenuButton>
|
|
74
|
+
{/* Submenu items also support href */}
|
|
75
|
+
<SidebarMenuSub>
|
|
76
|
+
<SidebarMenuSubItem>
|
|
77
|
+
<SidebarMenuSubButton href="/settings/profile">
|
|
78
|
+
Profile
|
|
79
|
+
</SidebarMenuSubButton>
|
|
80
|
+
</SidebarMenuSubItem>
|
|
81
|
+
</SidebarMenuSub>
|
|
82
|
+
</SidebarMenuItem>
|
|
83
|
+
</SidebarMenu>
|
|
84
|
+
</SidebarGroupContent>
|
|
85
|
+
</SidebarGroup>
|
|
86
|
+
</SidebarContent>
|
|
87
|
+
</Sidebar>`,
|
|
63
88
|
preview: (
|
|
64
89
|
<div className="p-6 border rounded-md bg-muted/50">
|
|
65
90
|
<p className="text-sm text-muted-foreground mb-4">
|