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.
@@ -21,9 +21,18 @@
21
21
  let { menus: links }: ComplexMenuProps = $props();
22
22
  </script>
23
23
 
24
- {#snippet headerSnippet(header: NonNullable<NavigationMenuItemCardProps["header"]>)}
25
- <div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">{header.label}</div>
26
- <p class="text-sm leading-tight {header.descriptionClass || 'text-muted-foreground'}">{header.description}</p>
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 class="relative row-span-3" style={card.header.imgUrl ? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;` : ""}>
38
- <a href={card.header.href ?? "#"} class="flex h-full w-full flex-col justify-end p-4 {card.header.imgUrl ? "no-underline outline-hidden select-none" : "bg-linear-to-b from-muted/50 to-muted rounded-md"}">
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 href={item.href} class="block rounded-md p-2 no-underline hover:bg-accent">
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">{item.content}</div>
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 href={item.href} class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent">
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 href={item.href} class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent">
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 ${gridCols}`}>
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,6 +1,6 @@
1
1
  {
2
2
  "name": "negodesign",
3
- "version": "0.0.67",
3
+ "version": "0.0.68",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -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,4 +0,0 @@
1
- import type { NavigationMenuItemProps } from "../../../data/types";
2
- declare const NavigationMenuItem: import("svelte").Component<NavigationMenuItemProps, {}, "">;
3
- type NavigationMenuItem = ReturnType<typeof NavigationMenuItem>;
4
- export default NavigationMenuItem;
@@ -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>
@@ -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>
@@ -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>
@@ -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;