negodesign 0.0.67 → 0.0.68
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/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte +41 -14
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +1 -1
- package/dist/components/core/nav/ui/shared/navigation/NavDropdown.svelte +2 -2
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +2 -2
- package/dist/globals.css +9 -3
- package/package.json +1 -1
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItem.svelte +0 -15
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItem.svelte.d.ts +0 -4
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemCard.svelte +0 -62
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemCard.svelte.d.ts +0 -4
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemGrid.svelte +0 -32
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemGrid.svelte.d.ts +0 -4
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemList.svelte +0 -24
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemList.svelte.d.ts +0 -4
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItems.svelte +0 -21
- package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItems.svelte.d.ts +0 -4
|
@@ -21,9 +21,18 @@
|
|
|
21
21
|
let { menus: links }: ComplexMenuProps = $props();
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
|
-
{#snippet headerSnippet(
|
|
25
|
-
<
|
|
26
|
-
|
|
24
|
+
{#snippet headerSnippet(
|
|
25
|
+
header: NonNullable<NavigationMenuItemCardProps["header"]>,
|
|
26
|
+
)}
|
|
27
|
+
<div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">
|
|
28
|
+
{header.label}
|
|
29
|
+
</div>
|
|
30
|
+
<p
|
|
31
|
+
class="text-sm leading-tight {header.descriptionClass ||
|
|
32
|
+
'text-muted-foreground'}"
|
|
33
|
+
>
|
|
34
|
+
{header.description}
|
|
35
|
+
</p>
|
|
27
36
|
{/snippet}
|
|
28
37
|
|
|
29
38
|
<MenuMobile>
|
|
@@ -34,8 +43,19 @@
|
|
|
34
43
|
<CollapsibleNavMenu label={card.label ?? card.header?.label ?? ""}>
|
|
35
44
|
<ul class="grid gap-2 p-2">
|
|
36
45
|
{#if card.header}
|
|
37
|
-
<li
|
|
38
|
-
|
|
46
|
+
<li
|
|
47
|
+
class="relative row-span-3"
|
|
48
|
+
style={card.header.imgUrl
|
|
49
|
+
? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;`
|
|
50
|
+
: ""}
|
|
51
|
+
>
|
|
52
|
+
<a
|
|
53
|
+
href={card.header.href ?? "#"}
|
|
54
|
+
class="flex h-full w-full flex-col justify-end p-4 {card
|
|
55
|
+
.header.imgUrl
|
|
56
|
+
? 'no-underline outline-hidden select-none'
|
|
57
|
+
: 'bg-linear-to-b from-muted/50 to-muted rounded-md'}"
|
|
58
|
+
>
|
|
39
59
|
{@render headerSnippet(card.header)}
|
|
40
60
|
</a>
|
|
41
61
|
</li>
|
|
@@ -47,49 +67,56 @@
|
|
|
47
67
|
{/if}
|
|
48
68
|
</ul>
|
|
49
69
|
</CollapsibleNavMenu>
|
|
50
|
-
|
|
51
70
|
{:else if isGrid(link)}
|
|
52
71
|
{@const grid = link as NavigationMenuItemGridProps}
|
|
53
72
|
<CollapsibleNavMenu label={grid.label}>
|
|
54
|
-
<ul class="grid grid-cols-2 gap-2 p-2">
|
|
73
|
+
<ul class="grid grid-cols-2 gap-2 max-h-37.5 overflow-y-auto p-2">
|
|
55
74
|
{#each grid.grids ?? [] as item, j (j)}
|
|
56
75
|
<NavMenuItem {...item} />
|
|
57
76
|
{/each}
|
|
58
77
|
</ul>
|
|
59
78
|
</CollapsibleNavMenu>
|
|
60
|
-
|
|
61
79
|
{:else if isList(link)}
|
|
62
80
|
{@const list = link as NavigationMenuItemListProps}
|
|
63
81
|
<CollapsibleNavMenu label={list.label}>
|
|
64
82
|
<ul class="grid gap-4 p-2">
|
|
65
83
|
{#each list.list ?? [] as item, j (j)}
|
|
66
84
|
<li>
|
|
67
|
-
<a
|
|
85
|
+
<a
|
|
86
|
+
href={item.href}
|
|
87
|
+
class="block rounded-md p-2 no-underline hover:bg-accent"
|
|
88
|
+
>
|
|
68
89
|
<div class="font-medium">{item.title ?? ""}</div>
|
|
69
|
-
<div class="text-sm text-muted-foreground">
|
|
90
|
+
<div class="text-sm text-muted-foreground">
|
|
91
|
+
{item.content}
|
|
92
|
+
</div>
|
|
70
93
|
</a>
|
|
71
94
|
</li>
|
|
72
95
|
{/each}
|
|
73
96
|
</ul>
|
|
74
97
|
</CollapsibleNavMenu>
|
|
75
|
-
|
|
76
98
|
{:else if isItems(link)}
|
|
77
99
|
{@const items = link as NavigationMenuItemsProps}
|
|
78
100
|
<CollapsibleNavMenu label={items.label}>
|
|
79
101
|
<ul class="grid min-w-50 gap-4 p-2">
|
|
80
102
|
{#each items.items ?? [] as item, j (j)}
|
|
81
103
|
<li>
|
|
82
|
-
<a
|
|
104
|
+
<a
|
|
105
|
+
href={item.href}
|
|
106
|
+
class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent"
|
|
107
|
+
>
|
|
83
108
|
{item.title}
|
|
84
109
|
</a>
|
|
85
110
|
</li>
|
|
86
111
|
{/each}
|
|
87
112
|
</ul>
|
|
88
113
|
</CollapsibleNavMenu>
|
|
89
|
-
|
|
90
114
|
{:else if isItem(link)}
|
|
91
115
|
{@const item = link as NavigationMenuItemProps}
|
|
92
|
-
<a
|
|
116
|
+
<a
|
|
117
|
+
href={item.href}
|
|
118
|
+
class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent"
|
|
119
|
+
>
|
|
93
120
|
{item.label}
|
|
94
121
|
</a>
|
|
95
122
|
{/if}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{#if items}
|
|
21
21
|
{@const gridCols = cols()}
|
|
22
22
|
<DropdownMenu.SubContent>
|
|
23
|
-
<ul class={`grid w-75 gap-2 p-2 sm:w-100 md:w-125
|
|
23
|
+
<ul class={`grid w-75 gap-2 p-2 sm:w-100 md:w-125 ${gridCols}`}>
|
|
24
24
|
{#each items as item, i (i)}
|
|
25
25
|
<DropdownMenuListItem {...item} />
|
|
26
26
|
{/each}
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
|
|
71
71
|
{#if open}
|
|
72
72
|
<div
|
|
73
|
-
class="absolute left-0 top-full z-50 mt-1.5 w-max rounded-2xl bg-popover p-2.5 pr-3 overflow-hidden text-popover-foreground shadow-2xl ring-1 ring-foreground/5"
|
|
73
|
+
class="absolute left-0 top-full z-50 md:z-100 mt-1.5 w-max rounded-2xl bg-popover p-2.5 pr-3 overflow-hidden text-popover-foreground shadow-2xl ring-1 ring-foreground/5"
|
|
74
74
|
>
|
|
75
75
|
{@render children()}
|
|
76
76
|
</div>
|
|
77
77
|
{/if}
|
|
78
|
-
</li>
|
|
78
|
+
</li>
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
<NavDropdown {label}>
|
|
21
21
|
{#if items}
|
|
22
22
|
<ul
|
|
23
|
-
class={`grid w-75 gap-2 p-2 sm:w-100 md:w-125 lg:min-w-150 ${gridCols}`}
|
|
23
|
+
class={`grid w-75 gap-2 p-2 sm:w-100 md:w-125 lg:min-w-150 max-h-75 overflow-y-auto ${gridCols}`}
|
|
24
24
|
>
|
|
25
25
|
{#each items as item, i (i)}
|
|
26
26
|
<MenuListItem {...item} />
|
|
27
27
|
{/each}
|
|
28
28
|
</ul>
|
|
29
29
|
{/if}
|
|
30
|
-
</NavDropdown>
|
|
30
|
+
</NavDropdown>
|
package/dist/globals.css
CHANGED
|
@@ -876,12 +876,18 @@
|
|
|
876
876
|
.h-svh {
|
|
877
877
|
height: 100svh;
|
|
878
878
|
}
|
|
879
|
+
.max-h-37\.5 {
|
|
880
|
+
max-height: calc(var(--spacing) * 37.5);
|
|
881
|
+
}
|
|
879
882
|
.max-h-50 {
|
|
880
883
|
max-height: calc(var(--spacing) * 50);
|
|
881
884
|
}
|
|
882
885
|
.max-h-72 {
|
|
883
886
|
max-height: calc(var(--spacing) * 72);
|
|
884
887
|
}
|
|
888
|
+
.max-h-75 {
|
|
889
|
+
max-height: calc(var(--spacing) * 75);
|
|
890
|
+
}
|
|
885
891
|
.max-h-237\.5 {
|
|
886
892
|
max-height: calc(var(--spacing) * 237.5);
|
|
887
893
|
}
|
|
@@ -4274,6 +4280,9 @@
|
|
|
4274
4280
|
.md\:left-6 {
|
|
4275
4281
|
left: calc(var(--spacing) * 6);
|
|
4276
4282
|
}
|
|
4283
|
+
.md\:z-100 {
|
|
4284
|
+
z-index: 100;
|
|
4285
|
+
}
|
|
4277
4286
|
.md\:col-span-2 {
|
|
4278
4287
|
grid-column: span 2 / span 2;
|
|
4279
4288
|
}
|
|
@@ -4381,9 +4390,6 @@
|
|
|
4381
4390
|
.md\:w-52 {
|
|
4382
4391
|
width: calc(var(--spacing) * 52);
|
|
4383
4392
|
}
|
|
4384
|
-
.md\:w-100 {
|
|
4385
|
-
width: calc(var(--spacing) * 100);
|
|
4386
|
-
}
|
|
4387
4393
|
.md\:w-125 {
|
|
4388
4394
|
width: calc(var(--spacing) * 125);
|
|
4389
4395
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import type { NavigationMenuItemProps } from "../../../data/types";
|
|
4
|
-
import { navigationMenuTriggerStyle } from "../../../../../ui/navigation-menu/navigation-menu-trigger.svelte";
|
|
5
|
-
|
|
6
|
-
let { label, href }: NavigationMenuItemProps = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<NavigationMenu.Item>
|
|
10
|
-
<NavigationMenu.Link>
|
|
11
|
-
{#snippet child()}
|
|
12
|
-
<a {href} class={navigationMenuTriggerStyle()}>{label}</a>
|
|
13
|
-
{/snippet}
|
|
14
|
-
</NavigationMenu.Link>
|
|
15
|
-
</NavigationMenu.Item>
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import type { NavigationMenuItemCardProps } from "../../../data/types";
|
|
4
|
-
import MenuListItem from "../MenuListItem.svelte";
|
|
5
|
-
|
|
6
|
-
let { label, header, cards: items }: NavigationMenuItemCardProps = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
{#snippet headerSnippet(label: string, description: string)}
|
|
10
|
-
<div class="mt-4 mb-2 text-lg font-medium {header?.labelClass}">{label}</div>
|
|
11
|
-
<p
|
|
12
|
-
class="text-sm leading-tight {header?.descriptionClass ||
|
|
13
|
-
'text-muted-foreground'}"
|
|
14
|
-
>
|
|
15
|
-
{description}
|
|
16
|
-
</p>
|
|
17
|
-
{/snippet}
|
|
18
|
-
|
|
19
|
-
<NavigationMenu.Item>
|
|
20
|
-
<NavigationMenu.Trigger>{label}</NavigationMenu.Trigger>
|
|
21
|
-
<NavigationMenu.Content>
|
|
22
|
-
<ul class="grid gap-2 p-2 md:w-100 lg:w-125 lg:grid-cols-[.75fr_1fr]">
|
|
23
|
-
{#if header}
|
|
24
|
-
<li
|
|
25
|
-
class="row-span-3 relative"
|
|
26
|
-
style={header.imgUrl
|
|
27
|
-
? `background-image: url(${header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;`
|
|
28
|
-
: ``}
|
|
29
|
-
>
|
|
30
|
-
<NavigationMenu.Link
|
|
31
|
-
class={`flex h-full w-full flex-col justify-end p-4 md:p-6 ${
|
|
32
|
-
header.imgUrl
|
|
33
|
-
? `no-underline outline-hidden select-none`
|
|
34
|
-
: `bg-linear-to-b from-muted/50 to-muted rounded-md focus:shadow-md`
|
|
35
|
-
}`}
|
|
36
|
-
>
|
|
37
|
-
{#snippet child({ props })}
|
|
38
|
-
{#if header.imgUrl}
|
|
39
|
-
<a
|
|
40
|
-
{...props}
|
|
41
|
-
href={header.href ?? "#"}
|
|
42
|
-
class="bg-transparent absolute left-2 bottom-2"
|
|
43
|
-
>
|
|
44
|
-
{@render headerSnippet(header.label, header.description)}
|
|
45
|
-
</a>
|
|
46
|
-
{:else}
|
|
47
|
-
<a {...props} href={header.href ?? "#"}>
|
|
48
|
-
{@render headerSnippet(header.label, header.description)}
|
|
49
|
-
</a>
|
|
50
|
-
{/if}
|
|
51
|
-
{/snippet}
|
|
52
|
-
</NavigationMenu.Link>
|
|
53
|
-
</li>
|
|
54
|
-
{/if}
|
|
55
|
-
{#if items && items.length > 0}
|
|
56
|
-
{#each items as item, i (i)}
|
|
57
|
-
<MenuListItem {...item} />
|
|
58
|
-
{/each}
|
|
59
|
-
{/if}
|
|
60
|
-
</ul>
|
|
61
|
-
</NavigationMenu.Content>
|
|
62
|
-
</NavigationMenu.Item>
|
package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemCard.svelte.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { NavigationMenuItemCardProps } from "../../../data/types";
|
|
2
|
-
declare const NavigationMenuItemCard: import("svelte").Component<NavigationMenuItemCardProps, {}, "">;
|
|
3
|
-
type NavigationMenuItemCard = ReturnType<typeof NavigationMenuItemCard>;
|
|
4
|
-
export default NavigationMenuItemCard;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import type { NavigationMenuItemGridProps } from "../../../data/types";
|
|
4
|
-
import MenuListItem from "../MenuListItem.svelte";
|
|
5
|
-
|
|
6
|
-
let { label, grids: items }: NavigationMenuItemGridProps = $props();
|
|
7
|
-
|
|
8
|
-
const cols = (): string => {
|
|
9
|
-
const len = items?.length ?? 0;
|
|
10
|
-
if (len > 10) return "md:grid-cols-3 lg:grid-cols-4";
|
|
11
|
-
if (len > 5) return "md:grid-cols-3";
|
|
12
|
-
if (len % 3 == 0) return "md:grid-cols-3";
|
|
13
|
-
if (len % 2 == 0) return "md:grid-cols-2";
|
|
14
|
-
return "grid-cols-1";
|
|
15
|
-
};
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<NavigationMenu.Item>
|
|
19
|
-
<NavigationMenu.Trigger>{label}</NavigationMenu.Trigger>
|
|
20
|
-
{#if items}
|
|
21
|
-
{@const gridCols = cols()}
|
|
22
|
-
<NavigationMenu.Content>
|
|
23
|
-
<ul
|
|
24
|
-
class={`grid w-75 gap-2 p-2 sm:w-100 md:w-125 ${gridCols} lg:min-w-150`}
|
|
25
|
-
>
|
|
26
|
-
{#each items as item, i (i)}
|
|
27
|
-
<MenuListItem {...item} />
|
|
28
|
-
{/each}
|
|
29
|
-
</ul>
|
|
30
|
-
</NavigationMenu.Content>
|
|
31
|
-
{/if}
|
|
32
|
-
</NavigationMenu.Item>
|
package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemGrid.svelte.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { NavigationMenuItemGridProps } from "../../../data/types";
|
|
2
|
-
declare const NavigationMenuItemGrid: import("svelte").Component<NavigationMenuItemGridProps, {}, "">;
|
|
3
|
-
type NavigationMenuItemGrid = ReturnType<typeof NavigationMenuItemGrid>;
|
|
4
|
-
export default NavigationMenuItemGrid;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import type { NavigationMenuItemListProps } from "../../../data/types";
|
|
4
|
-
|
|
5
|
-
let { label, list }: NavigationMenuItemListProps = $props();
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<NavigationMenu.Item class="hidden md:block relative">
|
|
9
|
-
<NavigationMenu.Trigger>{label}</NavigationMenu.Trigger>
|
|
10
|
-
<NavigationMenu.Content>
|
|
11
|
-
<ul class="grid w-75 gap-4 p-2">
|
|
12
|
-
{#each list as item, i (i)}
|
|
13
|
-
<li>
|
|
14
|
-
<NavigationMenu.Link href={item.href}>
|
|
15
|
-
<div class="font-medium">{item.title ?? ""}</div>
|
|
16
|
-
<div class="text-muted-foreground">
|
|
17
|
-
{item.content}
|
|
18
|
-
</div>
|
|
19
|
-
</NavigationMenu.Link>
|
|
20
|
-
</li>
|
|
21
|
-
{/each}
|
|
22
|
-
</ul>
|
|
23
|
-
</NavigationMenu.Content>
|
|
24
|
-
</NavigationMenu.Item>
|
package/dist/components/core/nav/ui/shared/navigation-old/NavigationMenuItemList.svelte.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { NavigationMenuItemListProps } from "../../../data/types";
|
|
2
|
-
declare const NavigationMenuItemList: import("svelte").Component<NavigationMenuItemListProps, {}, "">;
|
|
3
|
-
type NavigationMenuItemList = ReturnType<typeof NavigationMenuItemList>;
|
|
4
|
-
export default NavigationMenuItemList;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import type { NavigationMenuItemsProps } from "../../../data/types";
|
|
4
|
-
|
|
5
|
-
let { label, items }: NavigationMenuItemsProps = $props();
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<NavigationMenu.Item class="hidden md:block relative">
|
|
9
|
-
<NavigationMenu.Trigger>{label}</NavigationMenu.Trigger>
|
|
10
|
-
<NavigationMenu.Content>
|
|
11
|
-
<ul class="grid min-w-50 gap-4 p-1 md:p-2">
|
|
12
|
-
{#each items as item, i (i)}
|
|
13
|
-
<li>
|
|
14
|
-
<NavigationMenu.Link href={item.href} class="py-1">
|
|
15
|
-
{item.title}
|
|
16
|
-
</NavigationMenu.Link>
|
|
17
|
-
</li>
|
|
18
|
-
{/each}
|
|
19
|
-
</ul>
|
|
20
|
-
</NavigationMenu.Content>
|
|
21
|
-
</NavigationMenu.Item>
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { NavigationMenuItemsProps } from "../../../data/types";
|
|
2
|
-
declare const NavigationMenuItems: import("svelte").Component<NavigationMenuItemsProps, {}, "">;
|
|
3
|
-
type NavigationMenuItems = ReturnType<typeof NavigationMenuItems>;
|
|
4
|
-
export default NavigationMenuItems;
|