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.
Files changed (79) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +4 -0
  3. package/dist/nav-menu/NavMenu.svelte +60 -0
  4. package/dist/nav-menu/NavMenu.svelte.d.ts +8 -0
  5. package/dist/nav-menu/NavMenuContent.svelte +16 -0
  6. package/dist/nav-menu/NavMenuContent.svelte.d.ts +4 -0
  7. package/dist/nav-menu/NavMenuIndicator.svelte +12 -0
  8. package/dist/nav-menu/NavMenuIndicator.svelte.d.ts +4 -0
  9. package/dist/nav-menu/NavMenuItem.svelte +34 -0
  10. package/dist/nav-menu/NavMenuItem.svelte.d.ts +8 -0
  11. package/dist/nav-menu/NavMenuLink.svelte +18 -0
  12. package/dist/nav-menu/NavMenuLink.svelte.d.ts +4 -0
  13. package/dist/nav-menu/NavMenuList.svelte +14 -0
  14. package/dist/nav-menu/NavMenuList.svelte.d.ts +4 -0
  15. package/dist/nav-menu/NavMenuTrigger.svelte +30 -0
  16. package/dist/nav-menu/NavMenuTrigger.svelte.d.ts +4 -0
  17. package/dist/nav-menu/NavMenuViewport.svelte +12 -0
  18. package/dist/nav-menu/NavMenuViewport.svelte.d.ts +4 -0
  19. package/dist/nav-menu/NavMenuViewportPositioner.svelte +17 -0
  20. package/dist/nav-menu/NavMenuViewportPositioner.svelte.d.ts +4 -0
  21. package/dist/nav-menu/NavSubMenu.svelte +14 -0
  22. package/dist/nav-menu/NavSubMenu.svelte.d.ts +4 -0
  23. package/dist/nav-menu/NavSubMenuContent.svelte +23 -0
  24. package/dist/nav-menu/NavSubMenuContent.svelte.d.ts +9 -0
  25. package/dist/nav-menu/NavSubMenuTrigger.svelte +26 -0
  26. package/dist/nav-menu/NavSubMenuTrigger.svelte.d.ts +4 -0
  27. package/dist/nav-menu/context.svelte.d.ts +8 -0
  28. package/dist/nav-menu/context.svelte.js +14 -0
  29. package/dist/nav-menu/index.d.ts +13 -0
  30. package/dist/nav-menu/index.js +14 -0
  31. package/dist/navbar/NavbarActions.svelte +25 -0
  32. package/dist/navbar/NavbarActions.svelte.d.ts +9 -0
  33. package/dist/navbar/NavbarActivationArea.svelte +30 -0
  34. package/dist/navbar/NavbarActivationArea.svelte.d.ts +9 -0
  35. package/dist/navbar/NavbarBrand.svelte +25 -0
  36. package/dist/navbar/NavbarBrand.svelte.d.ts +9 -0
  37. package/dist/navbar/NavbarContainer.svelte +26 -0
  38. package/dist/navbar/NavbarContainer.svelte.d.ts +9 -0
  39. package/dist/navbar/NavbarContext.svelte.d.ts +21 -0
  40. package/dist/navbar/NavbarContext.svelte.js +14 -0
  41. package/dist/navbar/NavbarMenu.svelte +30 -0
  42. package/dist/navbar/NavbarMenu.svelte.d.ts +10 -0
  43. package/dist/navbar/NavbarMobile.svelte +85 -0
  44. package/dist/navbar/NavbarMobile.svelte.d.ts +9 -0
  45. package/dist/navbar/NavbarProvider.svelte +99 -0
  46. package/dist/navbar/NavbarProvider.svelte.d.ts +14 -0
  47. package/dist/navbar/NavbarRoot.svelte +33 -0
  48. package/dist/navbar/NavbarRoot.svelte.d.ts +9 -0
  49. package/dist/navbar/NavbarTrigger.svelte +60 -0
  50. package/dist/navbar/NavbarTrigger.svelte.d.ts +10 -0
  51. package/dist/navbar/index.d.ts +11 -0
  52. package/dist/navbar/index.js +15 -0
  53. package/dist/pagination/Pagination.svelte +35 -0
  54. package/dist/pagination/Pagination.svelte.d.ts +4 -0
  55. package/dist/pagination/PaginationEllipsis.svelte +26 -0
  56. package/dist/pagination/PaginationEllipsis.svelte.d.ts +4 -0
  57. package/dist/pagination/PaginationItem.svelte +14 -0
  58. package/dist/pagination/PaginationItem.svelte.d.ts +4 -0
  59. package/dist/pagination/PaginationItems.svelte +21 -0
  60. package/dist/pagination/PaginationItems.svelte.d.ts +18 -0
  61. package/dist/pagination/PaginationNext.svelte +29 -0
  62. package/dist/pagination/PaginationNext.svelte.d.ts +4 -0
  63. package/dist/pagination/PaginationPrevious.svelte +29 -0
  64. package/dist/pagination/PaginationPrevious.svelte.d.ts +4 -0
  65. package/dist/pagination/index.d.ts +6 -0
  66. package/dist/pagination/index.js +7 -0
  67. package/dist/tabs/Tabs.svelte +24 -0
  68. package/dist/tabs/Tabs.svelte.d.ts +4 -0
  69. package/dist/tabs/TabsContent.svelte +14 -0
  70. package/dist/tabs/TabsContent.svelte.d.ts +4 -0
  71. package/dist/tabs/TabsContext.svelte.d.ts +1 -0
  72. package/dist/tabs/TabsContext.svelte.js +3 -0
  73. package/dist/tabs/TabsList.svelte +20 -0
  74. package/dist/tabs/TabsList.svelte.d.ts +7 -0
  75. package/dist/tabs/TabsTrigger.svelte +14 -0
  76. package/dist/tabs/TabsTrigger.svelte.d.ts +4 -0
  77. package/dist/tabs/index.d.ts +5 -0
  78. package/dist/tabs/index.js +6 -0
  79. 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,4 @@
1
+ import { type NavigationMenuContentProps } from '@ark-ui/svelte/navigation-menu';
2
+ declare const NavMenuContent: import("svelte").Component<NavigationMenuContentProps, {}, "">;
3
+ type NavMenuContent = ReturnType<typeof NavMenuContent>;
4
+ export default NavMenuContent;
@@ -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,4 @@
1
+ import { type NavigationMenuLinkProps } from '@ark-ui/svelte/navigation-menu';
2
+ declare const NavMenuLink: import("svelte").Component<NavigationMenuLinkProps, {}, "">;
3
+ type NavMenuLink = ReturnType<typeof NavMenuLink>;
4
+ export default NavMenuLink;
@@ -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,4 @@
1
+ import { type NavigationMenuListProps } from '@ark-ui/svelte/navigation-menu';
2
+ declare const NavMenuList: import("svelte").Component<NavigationMenuListProps, {}, "">;
3
+ type NavMenuList = ReturnType<typeof NavMenuList>;
4
+ export default NavMenuList;
@@ -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,4 @@
1
+ import { type NavigationMenuTriggerProps } from '@ark-ui/svelte/navigation-menu';
2
+ declare const NavMenuTrigger: import("svelte").Component<NavigationMenuTriggerProps, {}, "">;
3
+ type NavMenuTrigger = ReturnType<typeof NavMenuTrigger>;
4
+ export default NavMenuTrigger;
@@ -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,4 @@
1
+ import { type CollapsibleRootProps } from '@ark-ui/svelte/collapsible';
2
+ declare const NavSubMenu: import("svelte").Component<CollapsibleRootProps, {}, "">;
3
+ type NavSubMenu = ReturnType<typeof NavSubMenu>;
4
+ export default NavSubMenu;
@@ -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,4 @@
1
+ import { type CollapsibleTriggerProps } from '@ark-ui/svelte/collapsible';
2
+ declare const NavSubMenuTrigger: import("svelte").Component<CollapsibleTriggerProps, {}, "">;
3
+ type NavSubMenuTrigger = ReturnType<typeof NavSubMenuTrigger>;
4
+ export default NavSubMenuTrigger;
@@ -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;