wicn-svelte 0.9.0 → 0.10.0
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/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/nav-menu/NavMenu.svelte +60 -0
- package/dist/nav-menu/NavMenu.svelte.d.ts +8 -0
- package/dist/nav-menu/NavMenuContent.svelte +16 -0
- package/dist/nav-menu/NavMenuContent.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuIndicator.svelte +12 -0
- package/dist/nav-menu/NavMenuIndicator.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuItem.svelte +34 -0
- package/dist/nav-menu/NavMenuItem.svelte.d.ts +8 -0
- package/dist/nav-menu/NavMenuLink.svelte +18 -0
- package/dist/nav-menu/NavMenuLink.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuList.svelte +14 -0
- package/dist/nav-menu/NavMenuList.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuTrigger.svelte +30 -0
- package/dist/nav-menu/NavMenuTrigger.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuViewport.svelte +12 -0
- package/dist/nav-menu/NavMenuViewport.svelte.d.ts +4 -0
- package/dist/nav-menu/NavMenuViewportPositioner.svelte +17 -0
- package/dist/nav-menu/NavMenuViewportPositioner.svelte.d.ts +4 -0
- package/dist/nav-menu/NavSubMenu.svelte +14 -0
- package/dist/nav-menu/NavSubMenu.svelte.d.ts +4 -0
- package/dist/nav-menu/NavSubMenuContent.svelte +23 -0
- package/dist/nav-menu/NavSubMenuContent.svelte.d.ts +9 -0
- package/dist/nav-menu/NavSubMenuTrigger.svelte +26 -0
- package/dist/nav-menu/NavSubMenuTrigger.svelte.d.ts +4 -0
- package/dist/nav-menu/context.svelte.d.ts +8 -0
- package/dist/nav-menu/context.svelte.js +14 -0
- package/dist/nav-menu/index.d.ts +13 -0
- package/dist/nav-menu/index.js +14 -0
- package/dist/navbar/NavbarActions.svelte +25 -0
- package/dist/navbar/NavbarActions.svelte.d.ts +9 -0
- package/dist/navbar/NavbarActivationArea.svelte +30 -0
- package/dist/navbar/NavbarActivationArea.svelte.d.ts +9 -0
- package/dist/navbar/NavbarBrand.svelte +25 -0
- package/dist/navbar/NavbarBrand.svelte.d.ts +9 -0
- package/dist/navbar/NavbarContainer.svelte +26 -0
- package/dist/navbar/NavbarContainer.svelte.d.ts +9 -0
- package/dist/navbar/NavbarContext.svelte.d.ts +21 -0
- package/dist/navbar/NavbarContext.svelte.js +14 -0
- package/dist/navbar/NavbarMenu.svelte +30 -0
- package/dist/navbar/NavbarMenu.svelte.d.ts +10 -0
- package/dist/navbar/NavbarMobile.svelte +85 -0
- package/dist/navbar/NavbarMobile.svelte.d.ts +9 -0
- package/dist/navbar/NavbarProvider.svelte +99 -0
- package/dist/navbar/NavbarProvider.svelte.d.ts +14 -0
- package/dist/navbar/NavbarRoot.svelte +33 -0
- package/dist/navbar/NavbarRoot.svelte.d.ts +9 -0
- package/dist/navbar/NavbarTrigger.svelte +60 -0
- package/dist/navbar/NavbarTrigger.svelte.d.ts +10 -0
- package/dist/navbar/index.d.ts +11 -0
- package/dist/navbar/index.js +15 -0
- package/dist/pagination/Pagination.svelte +35 -0
- package/dist/pagination/Pagination.svelte.d.ts +4 -0
- package/dist/pagination/PaginationEllipsis.svelte +26 -0
- package/dist/pagination/PaginationEllipsis.svelte.d.ts +4 -0
- package/dist/pagination/PaginationItem.svelte +14 -0
- package/dist/pagination/PaginationItem.svelte.d.ts +4 -0
- package/dist/pagination/PaginationItems.svelte +21 -0
- package/dist/pagination/PaginationItems.svelte.d.ts +18 -0
- package/dist/pagination/PaginationNext.svelte +29 -0
- package/dist/pagination/PaginationNext.svelte.d.ts +4 -0
- package/dist/pagination/PaginationPrevious.svelte +29 -0
- package/dist/pagination/PaginationPrevious.svelte.d.ts +4 -0
- package/dist/pagination/index.d.ts +6 -0
- package/dist/pagination/index.js +7 -0
- package/dist/tabs/Tabs.svelte +24 -0
- package/dist/tabs/Tabs.svelte.d.ts +4 -0
- package/dist/tabs/TabsContent.svelte +14 -0
- package/dist/tabs/TabsContent.svelte.d.ts +4 -0
- package/dist/tabs/TabsContext.svelte.d.ts +1 -0
- package/dist/tabs/TabsContext.svelte.js +3 -0
- package/dist/tabs/TabsList.svelte +20 -0
- package/dist/tabs/TabsList.svelte.d.ts +7 -0
- package/dist/tabs/TabsTrigger.svelte +14 -0
- package/dist/tabs/TabsTrigger.svelte.d.ts +4 -0
- package/dist/tabs/index.d.ts +5 -0
- package/dist/tabs/index.js +6 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -17,3 +17,7 @@ export { default as SplitterPanel } from './SplitterPanel.svelte';
|
|
|
17
17
|
export { default as SplitterResizeTrigger } from './SplitterResizeTrigger.svelte';
|
|
18
18
|
export { default as SplitterResizeTriggerIndicator } from './SplitterResizeTriggerIndicator.svelte';
|
|
19
19
|
export * from './sidebar';
|
|
20
|
+
export * from './nav-menu';
|
|
21
|
+
export * from './tabs';
|
|
22
|
+
export * from './pagination';
|
|
23
|
+
export * from './navbar';
|
package/dist/index.js
CHANGED
|
@@ -18,3 +18,7 @@ export { default as SplitterPanel } from './SplitterPanel.svelte';
|
|
|
18
18
|
export { default as SplitterResizeTrigger } from './SplitterResizeTrigger.svelte';
|
|
19
19
|
export { default as SplitterResizeTriggerIndicator } from './SplitterResizeTriggerIndicator.svelte';
|
|
20
20
|
export * from './sidebar';
|
|
21
|
+
export * from './nav-menu';
|
|
22
|
+
export * from './tabs';
|
|
23
|
+
export * from './pagination';
|
|
24
|
+
export * from './navbar';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenu.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import {
|
|
5
|
+
NavigationMenuRoot,
|
|
6
|
+
NavigationMenuViewport,
|
|
7
|
+
NavigationMenuViewportPositioner,
|
|
8
|
+
type NavigationMenuRootProps,
|
|
9
|
+
} from '@ark-ui/svelte/navigation-menu';
|
|
10
|
+
import {
|
|
11
|
+
navMenuRootBase,
|
|
12
|
+
navMenuViewportPositionerBase,
|
|
13
|
+
navMenuViewportBase,
|
|
14
|
+
cn,
|
|
15
|
+
type NavMenuDensity,
|
|
16
|
+
type NavMenuVariant,
|
|
17
|
+
} from 'wicn-core';
|
|
18
|
+
import { setNavMenuStyle } from './context.svelte';
|
|
19
|
+
|
|
20
|
+
let {
|
|
21
|
+
value,
|
|
22
|
+
defaultValue,
|
|
23
|
+
onValueChange,
|
|
24
|
+
openDelay,
|
|
25
|
+
closeDelay,
|
|
26
|
+
density = 'relaxed',
|
|
27
|
+
class: className = '',
|
|
28
|
+
children,
|
|
29
|
+
...rest
|
|
30
|
+
}: NavigationMenuRootProps & { density?: NavMenuDensity } = $props();
|
|
31
|
+
|
|
32
|
+
const classes = $derived(cn(navMenuRootBase, className));
|
|
33
|
+
setNavMenuStyle({
|
|
34
|
+
get density() {
|
|
35
|
+
return density;
|
|
36
|
+
},
|
|
37
|
+
get variant() {
|
|
38
|
+
return 'default' as NavMenuVariant;
|
|
39
|
+
},
|
|
40
|
+
get inContent() {
|
|
41
|
+
return false;
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<NavigationMenuRoot
|
|
47
|
+
{value}
|
|
48
|
+
{defaultValue}
|
|
49
|
+
{onValueChange}
|
|
50
|
+
{openDelay}
|
|
51
|
+
{closeDelay}
|
|
52
|
+
data-density={density}
|
|
53
|
+
class={classes}
|
|
54
|
+
{...rest}
|
|
55
|
+
>
|
|
56
|
+
{@render children?.()}
|
|
57
|
+
<NavigationMenuViewportPositioner class={cn(navMenuViewportPositionerBase)}>
|
|
58
|
+
<NavigationMenuViewport class={cn(navMenuViewportBase)} />
|
|
59
|
+
</NavigationMenuViewportPositioner>
|
|
60
|
+
</NavigationMenuRoot>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type NavigationMenuRootProps } from '@ark-ui/svelte/navigation-menu';
|
|
2
|
+
import { type NavMenuDensity } from 'wicn-core';
|
|
3
|
+
type $$ComponentProps = NavigationMenuRootProps & {
|
|
4
|
+
density?: NavMenuDensity;
|
|
5
|
+
};
|
|
6
|
+
declare const NavMenu: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type NavMenu = ReturnType<typeof NavMenu>;
|
|
8
|
+
export default NavMenu;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuContent.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuContent, type NavigationMenuContentProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuContentBase, cn } from 'wicn-core';
|
|
6
|
+
import { setNavMenuStyle } from './context.svelte';
|
|
7
|
+
|
|
8
|
+
let { value, class: className = '', children, ...rest }: NavigationMenuContentProps = $props();
|
|
9
|
+
|
|
10
|
+
const classes = $derived(cn(navMenuContentBase, className));
|
|
11
|
+
setNavMenuStyle({ density: 'relaxed', variant: 'default', inContent: true });
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<NavigationMenuContent {value} class={classes} {...rest}>
|
|
15
|
+
{@render children?.()}
|
|
16
|
+
</NavigationMenuContent>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuIndicator.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuIndicator, type NavigationMenuIndicatorProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuIndicatorBase, cn } from 'wicn-core';
|
|
6
|
+
|
|
7
|
+
let { class: className = '', ...rest }: NavigationMenuIndicatorProps = $props();
|
|
8
|
+
|
|
9
|
+
const classes = $derived(cn(navMenuIndicatorBase, className));
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<NavigationMenuIndicator class={classes} {...rest} />
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type NavigationMenuIndicatorProps } from '@ark-ui/svelte/navigation-menu';
|
|
2
|
+
declare const NavMenuIndicator: import("svelte").Component<NavigationMenuIndicatorProps, {}, "">;
|
|
3
|
+
type NavMenuIndicator = ReturnType<typeof NavMenuIndicator>;
|
|
4
|
+
export default NavMenuIndicator;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuItem.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuItem, type NavigationMenuItemProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuItemBase, cn, type NavMenuVariant } from 'wicn-core';
|
|
6
|
+
import { getNavMenuStyle, setNavMenuStyle } from './context.svelte';
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
value,
|
|
10
|
+
disabled = false,
|
|
11
|
+
variant = 'default',
|
|
12
|
+
class: className = '',
|
|
13
|
+
children,
|
|
14
|
+
...rest
|
|
15
|
+
}: NavigationMenuItemProps & { variant?: NavMenuVariant } = $props();
|
|
16
|
+
|
|
17
|
+
const parentStyle = getNavMenuStyle();
|
|
18
|
+
setNavMenuStyle({
|
|
19
|
+
get density() {
|
|
20
|
+
return parentStyle.density;
|
|
21
|
+
},
|
|
22
|
+
get variant() {
|
|
23
|
+
return variant;
|
|
24
|
+
},
|
|
25
|
+
get inContent() {
|
|
26
|
+
return false;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
const classes = $derived(cn(navMenuItemBase, className));
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<NavigationMenuItem {value} {disabled} data-variant={variant} class={classes} {...rest}>
|
|
33
|
+
{@render children?.()}
|
|
34
|
+
</NavigationMenuItem>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type NavigationMenuItemProps } from '@ark-ui/svelte/navigation-menu';
|
|
2
|
+
import { type NavMenuVariant } from 'wicn-core';
|
|
3
|
+
type $$ComponentProps = NavigationMenuItemProps & {
|
|
4
|
+
variant?: NavMenuVariant;
|
|
5
|
+
};
|
|
6
|
+
declare const NavMenuItem: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type NavMenuItem = ReturnType<typeof NavMenuItem>;
|
|
8
|
+
export default NavMenuItem;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuLink.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuLink, type NavigationMenuLinkProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuLinkBase, navMenuTriggerStyle, cn } from 'wicn-core';
|
|
6
|
+
import { getNavMenuStyle } from './context.svelte';
|
|
7
|
+
|
|
8
|
+
let { class: className = '', children, ...rest }: NavigationMenuLinkProps = $props();
|
|
9
|
+
|
|
10
|
+
const style = getNavMenuStyle();
|
|
11
|
+
const classes = $derived(
|
|
12
|
+
style.inContent ? cn(navMenuLinkBase, className) : cn(navMenuTriggerStyle(style), className),
|
|
13
|
+
);
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<NavigationMenuLink class={classes} {...rest}>
|
|
17
|
+
{@render children?.()}
|
|
18
|
+
</NavigationMenuLink>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuList.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuList, type NavigationMenuListProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuListBase, cn } from 'wicn-core';
|
|
6
|
+
|
|
7
|
+
let { class: className = '', children, ...rest }: NavigationMenuListProps = $props();
|
|
8
|
+
|
|
9
|
+
const classes = $derived(cn(navMenuListBase, className));
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<NavigationMenuList class={classes} {...rest}>
|
|
13
|
+
{@render children?.()}
|
|
14
|
+
</NavigationMenuList>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuTrigger.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuTrigger, type NavigationMenuTriggerProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuTriggerStyle, cn } from 'wicn-core';
|
|
6
|
+
import { getNavMenuStyle } from './context.svelte';
|
|
7
|
+
|
|
8
|
+
let { disabled = false, asChild, class: className = '', children, ...rest }: NavigationMenuTriggerProps = $props();
|
|
9
|
+
|
|
10
|
+
const style = getNavMenuStyle();
|
|
11
|
+
const classes = $derived(cn(navMenuTriggerStyle(style), className));
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<NavigationMenuTrigger {disabled} {asChild} class={classes} {...rest}>
|
|
15
|
+
{@render children?.()}
|
|
16
|
+
{#if !asChild}
|
|
17
|
+
<svg
|
|
18
|
+
class="relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180"
|
|
19
|
+
aria-hidden="true"
|
|
20
|
+
viewBox="0 0 24 24"
|
|
21
|
+
fill="none"
|
|
22
|
+
stroke="currentColor"
|
|
23
|
+
stroke-width="2"
|
|
24
|
+
stroke-linecap="round"
|
|
25
|
+
stroke-linejoin="round"
|
|
26
|
+
>
|
|
27
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
28
|
+
</svg>
|
|
29
|
+
{/if}
|
|
30
|
+
</NavigationMenuTrigger>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuViewport.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { NavigationMenuViewport, type NavigationMenuViewportProps } from '@ark-ui/svelte/navigation-menu';
|
|
5
|
+
import { navMenuViewportBase, cn } from 'wicn-core';
|
|
6
|
+
|
|
7
|
+
let { class: className = '', ...rest }: NavigationMenuViewportProps = $props();
|
|
8
|
+
|
|
9
|
+
const classes = $derived(cn(navMenuViewportBase, className));
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<NavigationMenuViewport class={classes} {...rest} />
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type NavigationMenuViewportProps } from '@ark-ui/svelte/navigation-menu';
|
|
2
|
+
declare const NavMenuViewport: import("svelte").Component<NavigationMenuViewportProps, {}, "">;
|
|
3
|
+
type NavMenuViewport = ReturnType<typeof NavMenuViewport>;
|
|
4
|
+
export default NavMenuViewport;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavMenuViewportPositioner.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/navigation-menu (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import {
|
|
5
|
+
NavigationMenuViewportPositioner,
|
|
6
|
+
type NavigationMenuViewportPositionerProps,
|
|
7
|
+
} from '@ark-ui/svelte/navigation-menu';
|
|
8
|
+
import { navMenuViewportPositionerBase, cn } from 'wicn-core';
|
|
9
|
+
|
|
10
|
+
let { class: className = '', children, ...rest }: NavigationMenuViewportPositionerProps = $props();
|
|
11
|
+
|
|
12
|
+
const classes = $derived(cn(navMenuViewportPositionerBase, className));
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<NavigationMenuViewportPositioner class={classes} {...rest}>
|
|
16
|
+
{@render children?.()}
|
|
17
|
+
</NavigationMenuViewportPositioner>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type NavigationMenuViewportPositionerProps } from '@ark-ui/svelte/navigation-menu';
|
|
2
|
+
declare const NavMenuViewportPositioner: import("svelte").Component<NavigationMenuViewportPositionerProps, {}, "">;
|
|
3
|
+
type NavMenuViewportPositioner = ReturnType<typeof NavMenuViewportPositioner>;
|
|
4
|
+
export default NavMenuViewportPositioner;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavSubMenu.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/collapsible (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { CollapsibleRoot, type CollapsibleRootProps } from '@ark-ui/svelte/collapsible';
|
|
5
|
+
import { cn } from 'wicn-core';
|
|
6
|
+
|
|
7
|
+
let { class: className = '', children, ...rest }: CollapsibleRootProps = $props();
|
|
8
|
+
|
|
9
|
+
const classes = $derived(cn('group', className));
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<CollapsibleRoot data-slot="nav-sub-menu" class={classes} {...rest}>
|
|
13
|
+
{@render children?.()}
|
|
14
|
+
</CollapsibleRoot>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavSubMenuContent.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/collapsible (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { CollapsibleContent } from '@ark-ui/svelte/collapsible';
|
|
5
|
+
import { navSubMenuContentBase, cn } from 'wicn-core';
|
|
6
|
+
import type { Snippet } from 'svelte';
|
|
7
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
class?: string;
|
|
11
|
+
children?: Snippet;
|
|
12
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
13
|
+
|
|
14
|
+
let { class: className = '', children, ...rest }: Props = $props();
|
|
15
|
+
|
|
16
|
+
const classes = $derived(cn(navSubMenuContentBase, className));
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<CollapsibleContent>
|
|
20
|
+
<div data-slot="nav-sub-menu-content" class={classes} {...rest}>
|
|
21
|
+
{@render children?.()}
|
|
22
|
+
</div>
|
|
23
|
+
</CollapsibleContent>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type Props = {
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const NavSubMenuContent: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type NavSubMenuContent = ReturnType<typeof NavSubMenuContent>;
|
|
9
|
+
export default NavSubMenuContent;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/nav-menu/NavSubMenuTrigger.svelte -->
|
|
2
|
+
<!-- Closely based on: @ark-ui/svelte/collapsible (Ark UI), mirrored from wicn-react -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { CollapsibleTrigger, type CollapsibleTriggerProps } from '@ark-ui/svelte/collapsible';
|
|
5
|
+
import { navMenuTriggerStyle, cn } from 'wicn-core';
|
|
6
|
+
|
|
7
|
+
let { class: className = '', children, ...rest }: CollapsibleTriggerProps = $props();
|
|
8
|
+
|
|
9
|
+
const classes = $derived(cn(navMenuTriggerStyle(), 'w-full justify-between', className));
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<CollapsibleTrigger data-slot="nav-sub-menu-trigger" class={classes} {...rest}>
|
|
13
|
+
{@render children?.()}
|
|
14
|
+
<svg
|
|
15
|
+
class="size-4 transition-transform duration-200 group-data-[state=open]:rotate-180"
|
|
16
|
+
aria-hidden="true"
|
|
17
|
+
viewBox="0 0 24 24"
|
|
18
|
+
fill="none"
|
|
19
|
+
stroke="currentColor"
|
|
20
|
+
stroke-width="2"
|
|
21
|
+
stroke-linecap="round"
|
|
22
|
+
stroke-linejoin="round"
|
|
23
|
+
>
|
|
24
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
25
|
+
</svg>
|
|
26
|
+
</CollapsibleTrigger>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NavMenuDensity, NavMenuVariant } from 'wicn-core';
|
|
2
|
+
export interface NavMenuStyle {
|
|
3
|
+
density: NavMenuDensity;
|
|
4
|
+
variant: NavMenuVariant;
|
|
5
|
+
inContent: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function setNavMenuStyle(style: NavMenuStyle): void;
|
|
8
|
+
export declare function getNavMenuStyle(): NavMenuStyle;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// libs/wicn-svelte/src/nav-menu/context.svelte.ts
|
|
2
|
+
// Shared Svelte context for the NavMenu style (density from the root, variant
|
|
3
|
+
// from the item). NavMenuTrigger/NavMenuLink read it to resolve their cva
|
|
4
|
+
// directly; NavMenuContent overrides it (relaxed/default + inContent) so
|
|
5
|
+
// dropdown panel links use the plain link style and never inherit the
|
|
6
|
+
// top-level density/variant.
|
|
7
|
+
import { getContext, setContext } from 'svelte';
|
|
8
|
+
const NAV_MENU_STYLE_KEY = Symbol('wicn.nav-menu.style');
|
|
9
|
+
export function setNavMenuStyle(style) {
|
|
10
|
+
setContext(NAV_MENU_STYLE_KEY, style);
|
|
11
|
+
}
|
|
12
|
+
export function getNavMenuStyle() {
|
|
13
|
+
return getContext(NAV_MENU_STYLE_KEY) ?? { density: 'relaxed', variant: 'default', inContent: false };
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { default as NavMenu } from './NavMenu.svelte';
|
|
2
|
+
export { default as NavMenuList } from './NavMenuList.svelte';
|
|
3
|
+
export { default as NavMenuItem } from './NavMenuItem.svelte';
|
|
4
|
+
export { default as NavMenuTrigger } from './NavMenuTrigger.svelte';
|
|
5
|
+
export { default as NavMenuContent } from './NavMenuContent.svelte';
|
|
6
|
+
export { default as NavMenuLink } from './NavMenuLink.svelte';
|
|
7
|
+
export { default as NavSubMenu } from './NavSubMenu.svelte';
|
|
8
|
+
export { default as NavSubMenuTrigger } from './NavSubMenuTrigger.svelte';
|
|
9
|
+
export { default as NavSubMenuContent } from './NavSubMenuContent.svelte';
|
|
10
|
+
export { default as NavMenuViewport } from './NavMenuViewport.svelte';
|
|
11
|
+
export { default as NavMenuViewportPositioner } from './NavMenuViewportPositioner.svelte';
|
|
12
|
+
export { default as NavMenuIndicator } from './NavMenuIndicator.svelte';
|
|
13
|
+
export { navMenuTriggerStyle, type NavMenuDensity, type NavMenuVariant } from 'wicn-core';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// libs/wicn-svelte/src/nav-menu/index.ts
|
|
2
|
+
export { default as NavMenu } from './NavMenu.svelte';
|
|
3
|
+
export { default as NavMenuList } from './NavMenuList.svelte';
|
|
4
|
+
export { default as NavMenuItem } from './NavMenuItem.svelte';
|
|
5
|
+
export { default as NavMenuTrigger } from './NavMenuTrigger.svelte';
|
|
6
|
+
export { default as NavMenuContent } from './NavMenuContent.svelte';
|
|
7
|
+
export { default as NavMenuLink } from './NavMenuLink.svelte';
|
|
8
|
+
export { default as NavSubMenu } from './NavSubMenu.svelte';
|
|
9
|
+
export { default as NavSubMenuTrigger } from './NavSubMenuTrigger.svelte';
|
|
10
|
+
export { default as NavSubMenuContent } from './NavSubMenuContent.svelte';
|
|
11
|
+
export { default as NavMenuViewport } from './NavMenuViewport.svelte';
|
|
12
|
+
export { default as NavMenuViewportPositioner } from './NavMenuViewportPositioner.svelte';
|
|
13
|
+
export { default as NavMenuIndicator } from './NavMenuIndicator.svelte';
|
|
14
|
+
export { navMenuTriggerStyle } from 'wicn-core';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/navbar/NavbarActions.svelte -->
|
|
2
|
+
<!-- Source: wicn-react navbar actions (shadcnblocks navbar6/7, re-based on Ark UI) -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { Ark } from '@ark-ui/svelte/factory';
|
|
5
|
+
import { navbarActionsBase, cn } from 'wicn-core';
|
|
6
|
+
import { getNavbarContext } from './NavbarContext.svelte';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
class?: string;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
14
|
+
|
|
15
|
+
let { class: className = '', children, ...rest }: Props = $props();
|
|
16
|
+
|
|
17
|
+
const navbar = getNavbarContext();
|
|
18
|
+
$effect(() => navbar.setSlot('actions', children));
|
|
19
|
+
|
|
20
|
+
const classes = $derived(cn(navbarActionsBase, className));
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<Ark as="div" data-slot="navbar-actions" class={classes} {...rest}>
|
|
24
|
+
{@render children?.()}
|
|
25
|
+
</Ark>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type Props = {
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const NavbarActions: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type NavbarActions = ReturnType<typeof NavbarActions>;
|
|
9
|
+
export default NavbarActions;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/navbar/NavbarActivationArea.svelte -->
|
|
2
|
+
<!-- Source: wicn-react navbar activation area (hover reveal for variant="hide") -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { Ark } from '@ark-ui/svelte/factory';
|
|
5
|
+
import { navbarActivationAreaBase, cn } from 'wicn-core';
|
|
6
|
+
import { getNavbarContext } from './NavbarContext.svelte';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
class?: string;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
14
|
+
|
|
15
|
+
let { class: className = '', children, ...rest }: Props = $props();
|
|
16
|
+
|
|
17
|
+
const navbar = getNavbarContext();
|
|
18
|
+
const classes = $derived(cn(navbarActivationAreaBase, className));
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<Ark
|
|
22
|
+
as="div"
|
|
23
|
+
data-slot="navbar-activation-area"
|
|
24
|
+
class={classes}
|
|
25
|
+
onmouseenter={() => navbar.setHovered(true)}
|
|
26
|
+
onmouseleave={() => navbar.setHovered(false)}
|
|
27
|
+
{...rest}
|
|
28
|
+
>
|
|
29
|
+
{@render children?.()}
|
|
30
|
+
</Ark>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type Props = {
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const NavbarActivationArea: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type NavbarActivationArea = ReturnType<typeof NavbarActivationArea>;
|
|
9
|
+
export default NavbarActivationArea;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/navbar/NavbarBrand.svelte -->
|
|
2
|
+
<!-- Source: wicn-react navbar brand (shadcnblocks navbar6/7, re-based on Ark UI) -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { Ark } from '@ark-ui/svelte/factory';
|
|
5
|
+
import { navbarBrandBase, cn } from 'wicn-core';
|
|
6
|
+
import { getNavbarContext } from './NavbarContext.svelte';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
class?: string;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
14
|
+
|
|
15
|
+
let { class: className = '', children, ...rest }: Props = $props();
|
|
16
|
+
|
|
17
|
+
const navbar = getNavbarContext();
|
|
18
|
+
$effect(() => navbar.setSlot('brand', children));
|
|
19
|
+
|
|
20
|
+
const classes = $derived(cn(navbarBrandBase, className));
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<Ark as="div" data-slot="navbar-brand" class={classes} {...rest}>
|
|
24
|
+
{@render children?.()}
|
|
25
|
+
</Ark>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type Props = {
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const NavbarBrand: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type NavbarBrand = ReturnType<typeof NavbarBrand>;
|
|
9
|
+
export default NavbarBrand;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!-- libs/wicn-svelte/src/navbar/NavbarContainer.svelte -->
|
|
2
|
+
<!-- Source: wicn-react navbar container (shadcnblocks navbar6/7, re-based on Ark UI) -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { Ark } from '@ark-ui/svelte/factory';
|
|
5
|
+
import { navbarContainerBase, navbarDensityVariants, navbarShrunkBase, cn } from 'wicn-core';
|
|
6
|
+
import { getNavbarContext } from './NavbarContext.svelte';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
class?: string;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
14
|
+
|
|
15
|
+
let { class: className = '', children, ...rest }: Props = $props();
|
|
16
|
+
|
|
17
|
+
const navbar = getNavbarContext();
|
|
18
|
+
const shrunk = $derived(navbar.variant === 'shrink' && navbar.scrolled);
|
|
19
|
+
const classes = $derived(
|
|
20
|
+
cn(navbarContainerBase, navbarDensityVariants({ density: navbar.density }), shrunk && navbarShrunkBase, className),
|
|
21
|
+
);
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<Ark as="div" data-slot="navbar-container" data-shrunk={shrunk || undefined} class={classes} {...rest}>
|
|
25
|
+
{@render children?.()}
|
|
26
|
+
</Ark>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type Props = {
|
|
4
|
+
class?: string;
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const NavbarContainer: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type NavbarContainer = ReturnType<typeof NavbarContainer>;
|
|
9
|
+
export default NavbarContainer;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { NavbarDensity, NavbarVariant } from 'wicn-core';
|
|
3
|
+
export interface NavbarContextValue {
|
|
4
|
+
open: boolean;
|
|
5
|
+
setOpen: (open: boolean) => void;
|
|
6
|
+
scrolled: boolean;
|
|
7
|
+
density: NavbarDensity;
|
|
8
|
+
variant: NavbarVariant;
|
|
9
|
+
floating: boolean;
|
|
10
|
+
hovered: boolean;
|
|
11
|
+
setHovered: (hovered: boolean) => void;
|
|
12
|
+
slots: {
|
|
13
|
+
brand?: Snippet;
|
|
14
|
+
actions?: Snippet;
|
|
15
|
+
};
|
|
16
|
+
setSlot: (key: 'brand' | 'actions', node: Snippet | undefined) => void;
|
|
17
|
+
portalEl: HTMLDivElement | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare const NAVBAR_CONTEXT_KEY: unique symbol;
|
|
20
|
+
export declare function setNavbarContext(context: NavbarContextValue): void;
|
|
21
|
+
export declare function getNavbarContext(): NavbarContextValue;
|