negodesign 0.0.54 → 0.0.56
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/carousel/grid/product/types.d.ts +5 -0
- package/dist/components/core/carousel/grid/product/ui/CarouselGridProduct.svelte +9 -0
- package/dist/components/core/carousel/hero/CarouselHero.svelte +1 -1
- package/dist/components/core/nav/ui/Menu.svelte +66 -0
- package/dist/components/core/nav/ui/Menu.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/{nav-menu.svelte → NavMenu.svelte} +1 -1
- package/dist/components/core/nav/ui/mobile/nav-menu-drawer.svelte +1 -1
- package/dist/components/core/nav/ui/{menu-links.svelte → shared/MenuLinks.svelte} +1 -1
- package/dist/components/core/nav/ui/{menu-links.svelte.d.ts → shared/MenuLinks.svelte.d.ts} +1 -1
- package/dist/components/core/nav/ui/shared/MenuListItem.svelte +48 -0
- package/dist/components/core/nav/ui/shared/MenuListItem.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItem.svelte +15 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItem.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemCard.svelte +62 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemCard.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemGrid.svelte +32 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemGrid.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemList.svelte +24 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItemList.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItems.svelte +21 -0
- package/dist/components/core/nav/ui/shared/NavigationMenuItems.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/types.d.ts +41 -0
- package/dist/components/core/nav/ui/shared/types.js +1 -0
- package/dist/components/core/sidebar/MenuBarSidebar.svelte +4 -4
- package/dist/components/core/{nav/ui/nav-menu-sidebar.svelte → sidebar/ui/navbar/NavMenuBarSidebar.svelte} +3 -3
- package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte.d.ts +7 -0
- package/dist/components/core/{nav/ui/nav-menu-bottom-sidebar.svelte → sidebar/ui/navbar/NavMenuBottomSidebar.svelte} +2 -2
- package/dist/components/core/{nav/ui/nav-menu-bottom-sidebar.svelte.d.ts → sidebar/ui/navbar/NavMenuBottomSidebar.svelte.d.ts} +2 -2
- package/dist/components/core/{nav/ui/nav-menu-top-bar-sidebar.svelte → sidebar/ui/navbar/NavMenuTopBarSidebar.svelte} +4 -4
- package/dist/components/core/{nav/ui/nav-menu-top-bar-sidebar.svelte.d.ts → sidebar/ui/navbar/NavMenuTopBarSidebar.svelte.d.ts} +1 -1
- package/dist/components/core/{nav/ui/nav-user-sidebar.svelte → sidebar/ui/navbar/NavUserSidebar.svelte} +6 -6
- package/dist/components/core/{nav/ui/nav-user-sidebar.svelte.d.ts → sidebar/ui/navbar/NavUserSidebar.svelte.d.ts} +1 -1
- package/dist/components/core/{nav/ui → sidebar/ui/navbar}/nav-menu-header-sidebar.svelte +3 -3
- package/dist/components/ui/navigation-menu/index.d.ts +9 -0
- package/dist/components/ui/navigation-menu/index.js +11 -0
- package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +20 -0
- package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +22 -0
- package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +17 -0
- package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +17 -0
- package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +20 -0
- package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +30 -0
- package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +5 -0
- package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +22 -0
- package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +4 -0
- package/dist/components/ui/navigation-menu/navigation-menu.svelte +31 -0
- package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +7 -0
- package/dist/globals.css +287 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -3
- package/dist/types/index.d.ts +2 -1
- package/package.json +1 -1
- package/dist/components/core/nav/ui/nav-menu-sidebar.svelte.d.ts +0 -7
- /package/dist/components/core/nav/ui/{nav-menu.svelte.d.ts → NavMenu.svelte.d.ts} +0 -0
- /package/dist/components/core/{nav/ui → sidebar/ui/navbar}/nav-menu-header-sidebar.svelte.d.ts +0 -0
|
@@ -19,4 +19,9 @@ export interface CarouselGridProductProps {
|
|
|
19
19
|
isLoading?: boolean;
|
|
20
20
|
isDescriptionIcon?: boolean;
|
|
21
21
|
isDescriptionLabel?: boolean;
|
|
22
|
+
onClickBuy?: (id: string | number) => void;
|
|
23
|
+
/** Callback ao clicar no botão carrinho */
|
|
24
|
+
onClickShop?: (id: string | number) => void;
|
|
25
|
+
/** Callback ao clicar no botão favorito */
|
|
26
|
+
onClickFavorite?: (id: string | number) => void;
|
|
22
27
|
}
|
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
isLoading = false,
|
|
18
18
|
isDescriptionIcon = false,
|
|
19
19
|
isDescriptionLabel = false,
|
|
20
|
+
onClickBuy,
|
|
21
|
+
onClickFavorite,
|
|
22
|
+
onClickShop,
|
|
20
23
|
}: CarouselGridProductProps = $props();
|
|
21
24
|
|
|
22
25
|
const responsive = useDevice();
|
|
@@ -52,6 +55,9 @@
|
|
|
52
55
|
{variant}
|
|
53
56
|
{isDescriptionIcon}
|
|
54
57
|
{isDescriptionLabel}
|
|
58
|
+
{onClickBuy}
|
|
59
|
+
{onClickFavorite}
|
|
60
|
+
{onClickShop}
|
|
55
61
|
/>
|
|
56
62
|
</Carousel.Item>
|
|
57
63
|
{:else}
|
|
@@ -61,6 +67,9 @@
|
|
|
61
67
|
{variant}
|
|
62
68
|
{isDescriptionIcon}
|
|
63
69
|
{isDescriptionLabel}
|
|
70
|
+
{onClickBuy}
|
|
71
|
+
{onClickFavorite}
|
|
72
|
+
{onClickShop}
|
|
64
73
|
/>
|
|
65
74
|
</div>
|
|
66
75
|
{/if}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../ui/navigation-menu/index.js";
|
|
3
|
+
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
4
|
+
import type {
|
|
5
|
+
MenuProps,
|
|
6
|
+
NavigationMenuItemProps,
|
|
7
|
+
NavigationMenuItemListProps,
|
|
8
|
+
NavigationMenuItemCardProps,
|
|
9
|
+
NavigationMenuItemGridProps,
|
|
10
|
+
NavigationMenuItemsProps,
|
|
11
|
+
} from "./shared/types";
|
|
12
|
+
import NavigationMenuItemGrid from "./shared/NavigationMenuItemGrid.svelte";
|
|
13
|
+
import NavigationMenuItemCard from "./shared/NavigationMenuItemCard.svelte";
|
|
14
|
+
import NavigationMenuItem from "./shared/NavigationMenuItem.svelte";
|
|
15
|
+
import NavigationMenuItemList from "./shared/NavigationMenuItemList.svelte";
|
|
16
|
+
import NavigationMenuItems from "./shared/NavigationMenuItems.svelte";
|
|
17
|
+
|
|
18
|
+
const responsive = useDevice();
|
|
19
|
+
|
|
20
|
+
let { links }: MenuProps = $props();
|
|
21
|
+
|
|
22
|
+
type NavMenuItem =
|
|
23
|
+
| NavigationMenuItemCardProps
|
|
24
|
+
| NavigationMenuItemGridProps
|
|
25
|
+
| NavigationMenuItemListProps
|
|
26
|
+
| NavigationMenuItemsProps
|
|
27
|
+
| NavigationMenuItemProps;
|
|
28
|
+
|
|
29
|
+
function isCard(item: NavMenuItem): item is NavigationMenuItemCardProps {
|
|
30
|
+
return "header" in item && "cards" in item;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isGrid(item: NavMenuItem): item is NavigationMenuItemGridProps {
|
|
34
|
+
return "grids" in item && "label" in item;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function isList(item: NavMenuItem): item is NavigationMenuItemListProps {
|
|
38
|
+
return "list" in item && "label" in item;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function isItems(item: NavMenuItem): item is NavigationMenuItemsProps {
|
|
42
|
+
return "items" in item && "label" in item;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function isItem(item: NavMenuItem): item is NavigationMenuItemProps {
|
|
46
|
+
return "href" in item && "label" in item;
|
|
47
|
+
}
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<NavigationMenu.Root viewport={responsive.isMobile}>
|
|
51
|
+
<NavigationMenu.List class="flex-wrap">
|
|
52
|
+
{#each links as link, i (i)}
|
|
53
|
+
{#if isCard(link)}
|
|
54
|
+
<NavigationMenuItemCard {...link} />
|
|
55
|
+
{:else if isGrid(link)}
|
|
56
|
+
<NavigationMenuItemGrid {...link} />
|
|
57
|
+
{:else if isList(link)}
|
|
58
|
+
<NavigationMenuItemList {...link} />
|
|
59
|
+
{:else if isItems(link)}
|
|
60
|
+
<NavigationMenuItems {...link} />
|
|
61
|
+
{:else if isItem(link)}
|
|
62
|
+
<NavigationMenuItem {...link} />
|
|
63
|
+
{/if}
|
|
64
|
+
{/each}
|
|
65
|
+
</NavigationMenu.List>
|
|
66
|
+
</NavigationMenu.Root>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { Login03Icon, User03Icon } from "@hugeicons/core-free-icons";
|
|
9
9
|
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
10
10
|
import NavMenuDrawer from "./mobile/nav-menu-drawer.svelte";
|
|
11
|
-
import MenuLinks from "./
|
|
11
|
+
import MenuLinks from "./shared/MenuLinks.svelte";
|
|
12
12
|
|
|
13
13
|
let {
|
|
14
14
|
logo,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { cn } from "../../../../../utils.js";
|
|
7
7
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
8
8
|
import { Login03Icon, Menu, User03Icon } from "@hugeicons/core-free-icons";
|
|
9
|
-
import MenuLinks from "../
|
|
9
|
+
import MenuLinks from "../shared/MenuLinks.svelte";
|
|
10
10
|
import LightSwitch from "../../../../ui/light-switch/light-switch.svelte";
|
|
11
11
|
import LanguageSwitcher from "../../../../ui/language-switcher/language-switcher.svelte";
|
|
12
12
|
import { t } from "../../../../../i18n";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import { cn } from "../../../../../utils";
|
|
4
|
+
import type { ListItemProps } from "./types";
|
|
5
|
+
let {
|
|
6
|
+
title,
|
|
7
|
+
content,
|
|
8
|
+
href,
|
|
9
|
+
icon,
|
|
10
|
+
class: className,
|
|
11
|
+
...restProps
|
|
12
|
+
}: ListItemProps = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#snippet header()}
|
|
16
|
+
<div class="leading-none font-medium">{title}</div>
|
|
17
|
+
{/snippet}
|
|
18
|
+
|
|
19
|
+
<li>
|
|
20
|
+
<NavigationMenu.Link>
|
|
21
|
+
{#snippet child()}
|
|
22
|
+
<a
|
|
23
|
+
{href}
|
|
24
|
+
class={cn(
|
|
25
|
+
"block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
|
|
26
|
+
className,
|
|
27
|
+
)}
|
|
28
|
+
{...restProps}
|
|
29
|
+
>
|
|
30
|
+
{#if icon}
|
|
31
|
+
<div class="flex gap-1 items-center">
|
|
32
|
+
<div>
|
|
33
|
+
<i class={`${icon} size-8 md:size-10`}></i>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="-mt-1">
|
|
36
|
+
{@render header()}
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
{:else}
|
|
40
|
+
{@render header()}
|
|
41
|
+
{/if}
|
|
42
|
+
<p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
43
|
+
{content}
|
|
44
|
+
</p>
|
|
45
|
+
</a>
|
|
46
|
+
{/snippet}
|
|
47
|
+
</NavigationMenu.Link>
|
|
48
|
+
</li>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemProps } from "./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>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemCardProps } from "./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>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigationMenuItemCardProps } from "./types";
|
|
2
|
+
declare const NavigationMenuItemCard: import("svelte").Component<NavigationMenuItemCardProps, {}, "">;
|
|
3
|
+
type NavigationMenuItemCard = ReturnType<typeof NavigationMenuItemCard>;
|
|
4
|
+
export default NavigationMenuItemCard;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemGridProps } from "./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>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigationMenuItemGridProps } from "./types";
|
|
2
|
+
declare const NavigationMenuItemGrid: import("svelte").Component<NavigationMenuItemGridProps, {}, "">;
|
|
3
|
+
type NavigationMenuItemGrid = ReturnType<typeof NavigationMenuItemGrid>;
|
|
4
|
+
export default NavigationMenuItemGrid;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemListProps } from "./types";
|
|
4
|
+
|
|
5
|
+
let { label, list }: NavigationMenuItemListProps = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<NavigationMenu.Item class="hidden md:block">
|
|
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>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigationMenuItemListProps } from "./types";
|
|
2
|
+
declare const NavigationMenuItemList: import("svelte").Component<NavigationMenuItemListProps, {}, "">;
|
|
3
|
+
type NavigationMenuItemList = ReturnType<typeof NavigationMenuItemList>;
|
|
4
|
+
export default NavigationMenuItemList;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemsProps } from "./types";
|
|
4
|
+
|
|
5
|
+
let { label, items }: NavigationMenuItemsProps = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<NavigationMenu.Item class="hidden md:block">
|
|
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>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
2
|
+
export type ListItemProps = HTMLAttributes<HTMLAnchorElement> & {
|
|
3
|
+
title: string;
|
|
4
|
+
href: string;
|
|
5
|
+
content: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
};
|
|
8
|
+
export type NavigationMenuItemProps = {
|
|
9
|
+
label: string;
|
|
10
|
+
href?: string;
|
|
11
|
+
};
|
|
12
|
+
export type NavigationMenuItemCardProps = {
|
|
13
|
+
label?: string;
|
|
14
|
+
header?: {
|
|
15
|
+
label: string;
|
|
16
|
+
description: string;
|
|
17
|
+
href?: string;
|
|
18
|
+
imgUrl?: string;
|
|
19
|
+
descriptionClass?: string;
|
|
20
|
+
labelClass?: string;
|
|
21
|
+
};
|
|
22
|
+
cards?: ListItemProps[];
|
|
23
|
+
};
|
|
24
|
+
export type NavigationMenuItemGridProps = {
|
|
25
|
+
label: string;
|
|
26
|
+
grids?: ListItemProps[];
|
|
27
|
+
};
|
|
28
|
+
export type NavigationMenuItemListProps = {
|
|
29
|
+
label: string;
|
|
30
|
+
list?: ListItemProps[];
|
|
31
|
+
};
|
|
32
|
+
export type NavigationMenuItemsProps = {
|
|
33
|
+
label: string;
|
|
34
|
+
items?: {
|
|
35
|
+
title: string;
|
|
36
|
+
href: string;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
export type MenuProps = {
|
|
40
|
+
links: (NavigationMenuItemProps | NavigationMenuItemListProps | NavigationMenuItemCardProps | NavigationMenuItemGridProps | NavigationMenuItemsProps)[];
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
NavMenuSidebarProps,
|
|
9
9
|
} from "../nav/data/nav-menu-sidebar";
|
|
10
10
|
import type { Snippet } from "svelte";
|
|
11
|
-
import NavMenuTopBarSidebar from "
|
|
12
|
-
import NavMenuBottomSidebar from "
|
|
13
|
-
import NavMenuBarSidebar from "
|
|
14
|
-
import NavUserSidebar from "
|
|
11
|
+
import NavMenuTopBarSidebar from "./ui/navbar/NavMenuTopBarSidebar.svelte";
|
|
12
|
+
import NavMenuBottomSidebar from "./ui/navbar/NavMenuBottomSidebar.svelte";
|
|
13
|
+
import NavMenuBarSidebar from "./ui/navbar/NavMenuBarSidebar.svelte";
|
|
14
|
+
import NavUserSidebar from "./ui/navbar/NavUserSidebar.svelte";
|
|
15
15
|
import { t } from "../../../i18n";
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import * as Collapsible from "
|
|
4
|
-
import * as Sidebar from "
|
|
3
|
+
import * as Collapsible from "../../../../ui/collapsible/index.js";
|
|
4
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
5
5
|
import ChevronRightIcon from "@lucide/svelte/icons/chevron-right";
|
|
6
6
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
7
7
|
import type {
|
|
8
8
|
NavMenuAndSubmenuSidebarProps,
|
|
9
9
|
NavMenuItem,
|
|
10
10
|
NavMenuSidebarProps,
|
|
11
|
-
} from "
|
|
11
|
+
} from "../../../nav/data/nav-menu-sidebar";
|
|
12
12
|
|
|
13
13
|
let {
|
|
14
14
|
items,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NavMenuItem } from "../../../nav/data/nav-menu-sidebar";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
items: NavMenuItem[];
|
|
4
|
+
};
|
|
5
|
+
declare const NavMenuBarSidebar: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type NavMenuBarSidebar = ReturnType<typeof NavMenuBarSidebar>;
|
|
7
|
+
export default NavMenuBarSidebar;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import * as Sidebar from "
|
|
3
|
-
import type { WithoutChildren } from "
|
|
2
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
3
|
+
import type { WithoutChildren } from "../../../../../utils.js";
|
|
4
4
|
import type { ComponentProps } from "svelte";
|
|
5
5
|
import type { NavMenuSidebarProps } from "../data/nav-menu-sidebar";
|
|
6
6
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as Sidebar from "
|
|
2
|
-
import type { WithoutChildren } from "
|
|
1
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
2
|
+
import type { WithoutChildren } from "../../../../../utils.js";
|
|
3
3
|
import type { ComponentProps } from "svelte";
|
|
4
4
|
import type { NavMenuSidebarProps } from "../data/nav-menu-sidebar";
|
|
5
5
|
type $$ComponentProps = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import * as DropdownMenu from "
|
|
3
|
-
import * as Sidebar from "
|
|
4
|
-
import { useSidebar } from "
|
|
5
|
-
import type { NavTopBarSidebarItem } from "
|
|
2
|
+
import * as DropdownMenu from "../../../../ui/dropdown-menu/index.js";
|
|
3
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
4
|
+
import { useSidebar } from "../../../../ui/sidebar/index.js";
|
|
5
|
+
import type { NavTopBarSidebarItem } from "../../../nav/data/nav-top-bar-sidebar";
|
|
6
6
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
7
7
|
import { UnfoldMoreIcon } from "@hugeicons/core-free-icons";
|
|
8
8
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NavTopBarSidebarItem } from "
|
|
1
|
+
import type { NavTopBarSidebarItem } from "../../../nav/data/nav-top-bar-sidebar";
|
|
2
2
|
declare const NavMenuTopBarSidebar: import("svelte").Component<NavTopBarSidebarItem, {}, "">;
|
|
3
3
|
type NavMenuTopBarSidebar = ReturnType<typeof NavMenuTopBarSidebar>;
|
|
4
4
|
export default NavMenuTopBarSidebar;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import * as Avatar from "
|
|
3
|
-
import * as DropdownMenu from "
|
|
4
|
-
import * as Sidebar from "
|
|
5
|
-
import
|
|
6
|
-
import { useSidebar } from "../../../ui/sidebar/index.js";
|
|
2
|
+
import * as Avatar from "../../../../ui/avatar/index.js";
|
|
3
|
+
import * as DropdownMenu from "../../../../ui/dropdown-menu/index.js";
|
|
4
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
5
|
+
import { useSidebar } from "../../../../ui/sidebar/index.js";
|
|
7
6
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
8
7
|
import {
|
|
9
8
|
UnfoldMoreIcon,
|
|
10
9
|
Logout01Icon,
|
|
11
10
|
SparklesIcon,
|
|
12
11
|
} from "@hugeicons/core-free-icons";
|
|
13
|
-
import { t } from "
|
|
12
|
+
import { t } from "../../../../../i18n";
|
|
13
|
+
import type { NavUserSidebarProps } from "../../../../../types";
|
|
14
14
|
|
|
15
15
|
let { user: userLogged }: { user: NavUserSidebarProps } = $props();
|
|
16
16
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import * as DropdownMenu from "
|
|
3
|
-
import * as Sidebar from "
|
|
4
|
-
import { useSidebar } from "
|
|
2
|
+
import * as DropdownMenu from "../../../../ui/dropdown-menu/index.js";
|
|
3
|
+
import * as Sidebar from "../../../../ui/sidebar/index.js";
|
|
4
|
+
import { useSidebar } from "../../../../ui/sidebar/index.js";
|
|
5
5
|
import ChevronsUpDownIcon from "@lucide/svelte/icons/chevrons-up-down";
|
|
6
6
|
import PlusIcon from "@lucide/svelte/icons/plus";
|
|
7
7
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Content from "./navigation-menu-content.svelte";
|
|
2
|
+
import Indicator from "./navigation-menu-indicator.svelte";
|
|
3
|
+
import Item from "./navigation-menu-item.svelte";
|
|
4
|
+
import Link from "./navigation-menu-link.svelte";
|
|
5
|
+
import List from "./navigation-menu-list.svelte";
|
|
6
|
+
import Trigger from "./navigation-menu-trigger.svelte";
|
|
7
|
+
import Viewport from "./navigation-menu-viewport.svelte";
|
|
8
|
+
import Root from "./navigation-menu.svelte";
|
|
9
|
+
export { Root, Content, Indicator, Item, Link, List, Trigger, Viewport, Root as NavigationMenuRoot, Content as NavigationMenuContent, Indicator as NavigationMenuIndicator, Item as NavigationMenuItem, Link as NavigationMenuLink, List as NavigationMenuList, Trigger as NavigationMenuTrigger, Viewport as NavigationMenuViewport, };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Content from "./navigation-menu-content.svelte";
|
|
2
|
+
import Indicator from "./navigation-menu-indicator.svelte";
|
|
3
|
+
import Item from "./navigation-menu-item.svelte";
|
|
4
|
+
import Link from "./navigation-menu-link.svelte";
|
|
5
|
+
import List from "./navigation-menu-list.svelte";
|
|
6
|
+
import Trigger from "./navigation-menu-trigger.svelte";
|
|
7
|
+
import Viewport from "./navigation-menu-viewport.svelte";
|
|
8
|
+
import Root from "./navigation-menu.svelte";
|
|
9
|
+
export { Root, Content, Indicator, Item, Link, List, Trigger, Viewport,
|
|
10
|
+
//
|
|
11
|
+
Root as NavigationMenuRoot, Content as NavigationMenuContent, Indicator as NavigationMenuIndicator, Item as NavigationMenuItem, Link as NavigationMenuLink, List as NavigationMenuList, Trigger as NavigationMenuTrigger, Viewport as NavigationMenuViewport, };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
|
|
3
|
+
import { cn } from "../../../utils.js";
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
ref = $bindable(null),
|
|
7
|
+
class: className,
|
|
8
|
+
...restProps
|
|
9
|
+
}: NavigationMenuPrimitive.ContentProps = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<NavigationMenuPrimitive.Content
|
|
13
|
+
bind:ref
|
|
14
|
+
data-slot="navigation-menu-content"
|
|
15
|
+
class={cn(
|
|
16
|
+
"isolate z-50 p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/5 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 top-0 left-0 w-full group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto",
|
|
17
|
+
className
|
|
18
|
+
)}
|
|
19
|
+
{...restProps}
|
|
20
|
+
/>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
|
|
2
|
+
declare const NavigationMenuContent: import("svelte").Component<NavigationMenuPrimitive.ContentProps, {}, "ref">;
|
|
3
|
+
type NavigationMenuContent = ReturnType<typeof NavigationMenuContent>;
|
|
4
|
+
export default NavigationMenuContent;
|