@kayord/ui 0.19.4 → 0.20.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 (34) hide show
  1. package/dist/components/custom/data-table/shad-table.svelte.js +1 -30
  2. package/dist/components/ui/data-table/data-table.svelte.d.ts +12 -0
  3. package/dist/components/ui/data-table/data-table.svelte.js +48 -27
  4. package/dist/components/ui/data-table/flex-render.svelte +1 -8
  5. package/dist/components/ui/drawer/drawer-content.svelte +1 -1
  6. package/dist/components/ui/drawer/drawer-footer.svelte +1 -1
  7. package/dist/components/ui/drawer/drawer-header.svelte +1 -1
  8. package/dist/components/ui/form/form-element-field.svelte +2 -7
  9. package/dist/components/ui/form/form-element-field.svelte.d.ts +5 -5
  10. package/dist/components/ui/form/form-field.svelte +2 -7
  11. package/dist/components/ui/form/form-field.svelte.d.ts +5 -5
  12. package/dist/components/ui/form/form-fieldset.svelte +2 -7
  13. package/dist/components/ui/form/form-fieldset.svelte.d.ts +5 -5
  14. package/dist/components/ui/navigation-menu/index.d.ts +9 -0
  15. package/dist/components/ui/navigation-menu/index.js +11 -0
  16. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +17 -0
  17. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +4 -0
  18. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +18 -0
  19. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +4 -0
  20. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +13 -0
  21. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +4 -0
  22. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +16 -0
  23. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +4 -0
  24. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +13 -0
  25. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +4 -0
  26. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +34 -0
  27. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +5 -0
  28. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +18 -0
  29. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +4 -0
  30. package/dist/components/ui/navigation-menu/navigation-menu.svelte +29 -0
  31. package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +7 -0
  32. package/dist/components/ui/select/index.d.ts +1 -1
  33. package/dist/components/ui/tooltip/tooltip-content.svelte +4 -4
  34. package/package.json +14 -15
@@ -1,6 +1,7 @@
1
1
  import { createTable, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, } from "@tanstack/table-core";
2
2
  import DataTableCheckbox from "./DataTableCheckbox.svelte";
3
3
  import { renderComponent } from "../../ui";
4
+ import { mergeObjects } from "../../ui/data-table/data-table.svelte";
4
5
  export function createShadTable(shadOptions, stateUpdate) {
5
6
  if (!shadOptions.getCoreRowModel) {
6
7
  shadOptions.getCoreRowModel = getCoreRowModel();
@@ -201,33 +202,3 @@ export function createShadTable(shadOptions, stateUpdate) {
201
202
  }
202
203
  return table;
203
204
  }
204
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
205
- function mergeObjects(...sources) {
206
- const target = {};
207
- for (let i = 0; i < sources.length; i++) {
208
- let source = sources[i];
209
- if (typeof source === "function")
210
- source = source();
211
- if (source) {
212
- const descriptors = Object.getOwnPropertyDescriptors(source);
213
- for (const key in descriptors) {
214
- if (key in target)
215
- continue;
216
- Object.defineProperty(target, key, {
217
- enumerable: true,
218
- get() {
219
- for (let i = sources.length - 1; i >= 0; i--) {
220
- let s = sources[i];
221
- if (typeof s === "function")
222
- s = s();
223
- const v = (s || {})[key];
224
- if (v !== undefined)
225
- return v;
226
- }
227
- },
228
- });
229
- }
230
- }
231
- }
232
- return target;
233
- }
@@ -26,3 +26,15 @@ import { type RowData, type TableOptions } from "@tanstack/table-core";
26
26
  * ```
27
27
  */
28
28
  export declare function createSvelteTable<TData extends RowData>(options: TableOptions<TData>): import("@tanstack/table-core").Table<TData>;
29
+ type MaybeThunk<T extends object> = T | (() => T | null | undefined);
30
+ type Intersection<T extends readonly unknown[]> = (T extends [infer H, ...infer R] ? H & Intersection<R> : unknown) & {};
31
+ /**
32
+ * Lazily merges several objects (or thunks) while preserving
33
+ * getter semantics from every source.
34
+ *
35
+ * Proxy-based to avoid known WebKit recursion issue.
36
+ */
37
+ export declare function mergeObjects<Sources extends readonly MaybeThunk<any>[]>(...sources: Sources): Intersection<{
38
+ [K in keyof Sources]: Sources[K];
39
+ }>;
40
+ export {};
@@ -57,33 +57,54 @@ export function createSvelteTable(options) {
57
57
  });
58
58
  return table;
59
59
  }
60
+ /**
61
+ * Lazily merges several objects (or thunks) while preserving
62
+ * getter semantics from every source.
63
+ *
64
+ * Proxy-based to avoid known WebKit recursion issue.
65
+ */
60
66
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- function mergeObjects(...sources) {
62
- const target = {};
63
- for (let i = 0; i < sources.length; i++) {
64
- let source = sources[i];
65
- if (typeof source === "function")
66
- source = source();
67
- if (source) {
68
- const descriptors = Object.getOwnPropertyDescriptors(source);
69
- for (const key in descriptors) {
70
- if (key in target)
71
- continue;
72
- Object.defineProperty(target, key, {
73
- enumerable: true,
74
- get() {
75
- for (let i = sources.length - 1; i >= 0; i--) {
76
- let s = sources[i];
77
- if (typeof s === "function")
78
- s = s();
79
- const v = (s || {})[key];
80
- if (v !== undefined)
81
- return v;
82
- }
83
- },
84
- });
85
- }
67
+ export function mergeObjects(...sources) {
68
+ const resolve = (src) => typeof src === "function" ? (src() ?? undefined) : src;
69
+ const findSourceWithKey = (key) => {
70
+ for (let i = sources.length - 1; i >= 0; i--) {
71
+ const obj = resolve(sources[i]);
72
+ if (obj && key in obj)
73
+ return obj;
86
74
  }
87
- }
88
- return target;
75
+ return undefined;
76
+ };
77
+ return new Proxy(Object.create(null), {
78
+ get(_, key) {
79
+ const src = findSourceWithKey(key);
80
+ return src?.[key];
81
+ },
82
+ has(_, key) {
83
+ return !!findSourceWithKey(key);
84
+ },
85
+ ownKeys() {
86
+ const all = new Set();
87
+ for (const s of sources) {
88
+ const obj = resolve(s);
89
+ if (obj) {
90
+ for (const k of Reflect.ownKeys(obj)) {
91
+ all.add(k);
92
+ }
93
+ }
94
+ }
95
+ return [...all];
96
+ },
97
+ getOwnPropertyDescriptor(_, key) {
98
+ const src = findSourceWithKey(key);
99
+ if (!src)
100
+ return undefined;
101
+ return {
102
+ configurable: true,
103
+ enumerable: true,
104
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
+ value: src[key],
106
+ writable: true,
107
+ };
108
+ },
109
+ });
89
110
  }
@@ -1,12 +1,5 @@
1
- <script lang="ts" module>
2
- import type { CellContext, ColumnDefTemplate, HeaderContext } from "@tanstack/table-core";
3
-
4
- type TData = unknown;
5
- type TValue = unknown;
6
- type TContext = unknown;
7
- </script>
8
-
9
1
  <script lang="ts" generics="TData, TValue, TContext extends HeaderContext<TData, TValue> | CellContext<TData, TValue>">
2
+ import type { CellContext, ColumnDefTemplate, HeaderContext } from "@tanstack/table-core";
10
3
  import { RenderComponentConfig, RenderSnippetConfig } from "./render-helpers.js";
11
4
  type Props = {
12
5
  /** The cell or header field of the current cell's column definition. */
@@ -20,7 +20,7 @@
20
20
  bind:ref
21
21
  data-slot="drawer-content"
22
22
  class={cn(
23
- "group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
23
+ "group/drawer-content bg-background fixed z-50 flex h-auto flex-col gap-4 p-4",
24
24
  "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
25
25
  "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
26
26
  "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
@@ -10,6 +10,6 @@
10
10
  }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
11
11
  </script>
12
12
 
13
- <div bind:this={ref} data-slot="drawer-footer" class={cn("mt-auto flex flex-col gap-2 p-4", className)} {...restProps}>
13
+ <div bind:this={ref} data-slot="drawer-footer" class={cn("mt-auto flex flex-col gap-2", className)} {...restProps}>
14
14
  {@render children?.()}
15
15
  </div>
@@ -10,6 +10,6 @@
10
10
  }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
11
11
  </script>
12
12
 
13
- <div bind:this={ref} data-slot="drawer-header" class={cn("flex flex-col gap-1.5 p-4", className)} {...restProps}>
13
+ <div bind:this={ref} data-slot="drawer-header" class={cn("flex flex-col gap-1.5", className)} {...restProps}>
14
14
  {@render children?.()}
15
15
  </div>
@@ -1,11 +1,6 @@
1
- <script lang="ts" module>
2
- import type { FormPathLeaves as _FormPathLeaves } from "sveltekit-superforms";
3
- type T = Record<string, unknown>;
4
- type U = _FormPathLeaves<T>;
5
- </script>
6
-
7
- <script lang="ts" generics="T extends Record<string, unknown>, U extends _FormPathLeaves<T>">
1
+ <script lang="ts" generics="T extends Record<string, unknown>, U extends FormPathLeaves<T>">
8
2
  import * as FormPrimitive from "formsnap";
3
+ import type { FormPathLeaves } from "sveltekit-superforms";
9
4
  import type { HTMLAttributes } from "svelte/elements";
10
5
  import { cn, type WithElementRef, type WithoutChildren } from "../../../utils.js";
11
6
 
@@ -1,8 +1,8 @@
1
- import type { FormPathLeaves as _FormPathLeaves } from "sveltekit-superforms";
2
1
  import * as FormPrimitive from "formsnap";
2
+ import type { FormPathLeaves } from "sveltekit-superforms";
3
3
  import type { HTMLAttributes } from "svelte/elements";
4
4
  import { type WithElementRef } from "../../../utils.js";
5
- declare class __sveltets_Render<T extends Record<string, unknown>, U extends _FormPathLeaves<T>> {
5
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPathLeaves<T>> {
6
6
  props(): Omit<WithElementRef<HTMLAttributes<HTMLDivElement>>, "children"> & FormPrimitive.ElementFieldProps<T, U, any>;
7
7
  events(): {};
8
8
  slots(): {};
@@ -10,12 +10,12 @@ declare class __sveltets_Render<T extends Record<string, unknown>, U extends _Fo
10
10
  exports(): {};
11
11
  }
12
12
  interface $$IsomorphicComponent {
13
- new <T extends Record<string, unknown>, U extends _FormPathLeaves<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
13
+ new <T extends Record<string, unknown>, U extends FormPathLeaves<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
14
14
  $$bindings?: ReturnType<__sveltets_Render<T, U>['bindings']>;
15
15
  } & ReturnType<__sveltets_Render<T, U>['exports']>;
16
- <T extends Record<string, unknown>, U extends _FormPathLeaves<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
16
+ <T extends Record<string, unknown>, U extends FormPathLeaves<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
17
17
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
18
18
  }
19
19
  declare const FormElementField: $$IsomorphicComponent;
20
- type FormElementField<T extends Record<string, unknown>, U extends _FormPathLeaves<T>> = InstanceType<typeof FormElementField<T, U>>;
20
+ type FormElementField<T extends Record<string, unknown>, U extends FormPathLeaves<T>> = InstanceType<typeof FormElementField<T, U>>;
21
21
  export default FormElementField;
@@ -1,11 +1,6 @@
1
- <script lang="ts" module>
2
- import type { FormPath as _FormPath } from "sveltekit-superforms";
3
- type T = Record<string, unknown>;
4
- type U = _FormPath<T>;
5
- </script>
6
-
7
- <script lang="ts" generics="T extends Record<string, unknown>, U extends _FormPath<T>">
1
+ <script lang="ts" generics="T extends Record<string, unknown>, U extends FormPath<T>">
8
2
  import * as FormPrimitive from "formsnap";
3
+ import type { FormPath } from "sveltekit-superforms";
9
4
  import { cn, type WithElementRef, type WithoutChildren } from "../../../utils.js";
10
5
  import type { HTMLAttributes } from "svelte/elements";
11
6
 
@@ -1,8 +1,8 @@
1
- import type { FormPath as _FormPath } from "sveltekit-superforms";
2
1
  import * as FormPrimitive from "formsnap";
2
+ import type { FormPath } from "sveltekit-superforms";
3
3
  import { type WithElementRef } from "../../../utils.js";
4
4
  import type { HTMLAttributes } from "svelte/elements";
5
- declare class __sveltets_Render<T extends Record<string, unknown>, U extends _FormPath<T>> {
5
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>> {
6
6
  props(): FormPrimitive.FieldProps<T, U, any> & Omit<WithElementRef<HTMLAttributes<HTMLDivElement>>, "children">;
7
7
  events(): {};
8
8
  slots(): {};
@@ -10,12 +10,12 @@ declare class __sveltets_Render<T extends Record<string, unknown>, U extends _Fo
10
10
  exports(): {};
11
11
  }
12
12
  interface $$IsomorphicComponent {
13
- new <T extends Record<string, unknown>, U extends _FormPath<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
13
+ new <T extends Record<string, unknown>, U extends FormPath<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
14
14
  $$bindings?: ReturnType<__sveltets_Render<T, U>['bindings']>;
15
15
  } & ReturnType<__sveltets_Render<T, U>['exports']>;
16
- <T extends Record<string, unknown>, U extends _FormPath<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
16
+ <T extends Record<string, unknown>, U extends FormPath<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
17
17
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
18
18
  }
19
19
  declare const FormField: $$IsomorphicComponent;
20
- type FormField<T extends Record<string, unknown>, U extends _FormPath<T>> = InstanceType<typeof FormField<T, U>>;
20
+ type FormField<T extends Record<string, unknown>, U extends FormPath<T>> = InstanceType<typeof FormField<T, U>>;
21
21
  export default FormField;
@@ -1,11 +1,6 @@
1
- <script lang="ts" module>
2
- import type { FormPath as _FormPath } from "sveltekit-superforms";
3
- type T = Record<string, unknown>;
4
- type U = _FormPath<T>;
5
- </script>
6
-
7
- <script lang="ts" generics="T extends Record<string, unknown>, U extends _FormPath<T>">
1
+ <script lang="ts" generics="T extends Record<string, unknown>, U extends FormPath<T>">
8
2
  import * as FormPrimitive from "formsnap";
3
+ import type { FormPath } from "sveltekit-superforms";
9
4
  import { cn, type WithoutChild } from "../../../utils.js";
10
5
 
11
6
  let {
@@ -1,6 +1,6 @@
1
- import type { FormPath as _FormPath } from "sveltekit-superforms";
2
1
  import * as FormPrimitive from "formsnap";
3
- declare class __sveltets_Render<T extends Record<string, unknown>, U extends _FormPath<T>> {
2
+ import type { FormPath } from "sveltekit-superforms";
3
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>> {
4
4
  props(): Omit<FormPrimitive.FieldsetProps<T, U, any>, "child">;
5
5
  events(): {};
6
6
  slots(): {};
@@ -8,12 +8,12 @@ declare class __sveltets_Render<T extends Record<string, unknown>, U extends _Fo
8
8
  exports(): {};
9
9
  }
10
10
  interface $$IsomorphicComponent {
11
- new <T extends Record<string, unknown>, U extends _FormPath<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
11
+ new <T extends Record<string, unknown>, U extends FormPath<T>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
12
12
  $$bindings?: ReturnType<__sveltets_Render<T, U>['bindings']>;
13
13
  } & ReturnType<__sveltets_Render<T, U>['exports']>;
14
- <T extends Record<string, unknown>, U extends _FormPath<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
14
+ <T extends Record<string, unknown>, U extends FormPath<T>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
15
15
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
16
16
  }
17
17
  declare const FormFieldset: $$IsomorphicComponent;
18
- type FormFieldset<T extends Record<string, unknown>, U extends _FormPath<T>> = InstanceType<typeof FormFieldset<T, U>>;
18
+ type FormFieldset<T extends Record<string, unknown>, U extends FormPath<T>> = InstanceType<typeof FormFieldset<T, U>>;
19
19
  export default FormFieldset;
@@ -0,0 +1,9 @@
1
+ import Root from "./navigation-menu.svelte";
2
+ import Content from "./navigation-menu-content.svelte";
3
+ import Indicator from "./navigation-menu-indicator.svelte";
4
+ import Item from "./navigation-menu-item.svelte";
5
+ import Link from "./navigation-menu-link.svelte";
6
+ import List from "./navigation-menu-list.svelte";
7
+ import Trigger from "./navigation-menu-trigger.svelte";
8
+ import Viewport from "./navigation-menu-viewport.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 Root from "./navigation-menu.svelte";
2
+ import Content from "./navigation-menu-content.svelte";
3
+ import Indicator from "./navigation-menu-indicator.svelte";
4
+ import Item from "./navigation-menu-item.svelte";
5
+ import Link from "./navigation-menu-link.svelte";
6
+ import List from "./navigation-menu-list.svelte";
7
+ import Trigger from "./navigation-menu-trigger.svelte";
8
+ import Viewport from "./navigation-menu-viewport.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,17 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.ContentProps = $props();
6
+ </script>
7
+
8
+ <NavigationMenuPrimitive.Content
9
+ bind:ref
10
+ data-slot="navigation-menu-content"
11
+ class={cn(
12
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out 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 top-0 left-0 w-full md:absolute md:w-auto",
13
+ "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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 group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
14
+ className
15
+ )}
16
+ {...restProps}
17
+ />
@@ -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;
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.IndicatorProps = $props();
6
+ </script>
7
+
8
+ <NavigationMenuPrimitive.Indicator
9
+ bind:ref
10
+ data-slot="navigation-menu-indicator"
11
+ class={cn(
12
+ "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
13
+ className
14
+ )}
15
+ {...restProps}
16
+ >
17
+ <div class="bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md"></div>
18
+ </NavigationMenuPrimitive.Indicator>
@@ -0,0 +1,4 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ declare const NavigationMenuIndicator: import("svelte").Component<NavigationMenuPrimitive.IndicatorProps, {}, "ref">;
3
+ type NavigationMenuIndicator = ReturnType<typeof NavigationMenuIndicator>;
4
+ export default NavigationMenuIndicator;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.ItemProps = $props();
6
+ </script>
7
+
8
+ <NavigationMenuPrimitive.Item
9
+ bind:ref
10
+ data-slot="navigation-menu-item"
11
+ class={cn("relative", className)}
12
+ {...restProps}
13
+ />
@@ -0,0 +1,4 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ declare const NavigationMenuItem: import("svelte").Component<NavigationMenuPrimitive.ItemProps, {}, "ref">;
3
+ type NavigationMenuItem = ReturnType<typeof NavigationMenuItem>;
4
+ export default NavigationMenuItem;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.LinkProps = $props();
6
+ </script>
7
+
8
+ <NavigationMenuPrimitive.Link
9
+ bind:ref
10
+ data-slot="navigation-menu-link"
11
+ class={cn(
12
+ "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
13
+ className
14
+ )}
15
+ {...restProps}
16
+ />
@@ -0,0 +1,4 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ declare const NavigationMenuLink: import("svelte").Component<NavigationMenuPrimitive.LinkProps, {}, "ref">;
3
+ type NavigationMenuLink = ReturnType<typeof NavigationMenuLink>;
4
+ export default NavigationMenuLink;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.ListProps = $props();
6
+ </script>
7
+
8
+ <NavigationMenuPrimitive.List
9
+ bind:ref
10
+ data-slot="navigation-menu-list"
11
+ class={cn("group flex flex-1 list-none items-center justify-center gap-1", className)}
12
+ {...restProps}
13
+ />
@@ -0,0 +1,4 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ declare const NavigationMenuList: import("svelte").Component<NavigationMenuPrimitive.ListProps, {}, "ref">;
3
+ type NavigationMenuList = ReturnType<typeof NavigationMenuList>;
4
+ export default NavigationMenuList;
@@ -0,0 +1,34 @@
1
+ <script lang="ts" module>
2
+ import { cn } from "../../../utils.js";
3
+ import { tv } from "tailwind-variants";
4
+
5
+ export const navigationMenuTriggerStyle = tv({
6
+ base: "bg-background hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50",
7
+ });
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
12
+ import ChevronDownIcon from "@lucide/svelte/icons/chevron-down";
13
+
14
+ let {
15
+ ref = $bindable(null),
16
+ class: className,
17
+ children,
18
+ ...restProps
19
+ }: NavigationMenuPrimitive.TriggerProps = $props();
20
+ </script>
21
+
22
+ <NavigationMenuPrimitive.Trigger
23
+ bind:ref
24
+ data-slot="navigation-menu-trigger"
25
+ class={cn(navigationMenuTriggerStyle(), "group", className)}
26
+ {...restProps}
27
+ >
28
+ {@render children?.()}
29
+
30
+ <ChevronDownIcon
31
+ class="relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180"
32
+ aria-hidden="true"
33
+ />
34
+ </NavigationMenuPrimitive.Trigger>
@@ -0,0 +1,5 @@
1
+ export declare const navigationMenuTriggerStyle: import("tailwind-variants").TVReturnType<{} | {} | {}, undefined, "bg-background hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50", {} | {}, undefined, import("tailwind-variants").TVReturnType<unknown, undefined, "bg-background hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50", unknown, unknown, undefined>>;
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ declare const NavigationMenuTrigger: import("svelte").Component<NavigationMenuPrimitive.TriggerProps, {}, "ref">;
4
+ type NavigationMenuTrigger = ReturnType<typeof NavigationMenuTrigger>;
5
+ export default NavigationMenuTrigger;
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+
5
+ let { ref = $bindable(null), class: className, ...restProps }: NavigationMenuPrimitive.ViewportProps = $props();
6
+ </script>
7
+
8
+ <div class={cn("absolute top-full left-0 isolate z-50 flex justify-center")}>
9
+ <NavigationMenuPrimitive.Viewport
10
+ bind:ref
11
+ data-slot="navigation-menu-viewport"
12
+ class={cn(
13
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--bits-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--bits-navigation-menu-viewport-width)]",
14
+ className
15
+ )}
16
+ {...restProps}
17
+ />
18
+ </div>
@@ -0,0 +1,4 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ declare const NavigationMenuViewport: import("svelte").Component<NavigationMenuPrimitive.ViewportProps, {}, "ref">;
3
+ type NavigationMenuViewport = ReturnType<typeof NavigationMenuViewport>;
4
+ export default NavigationMenuViewport;
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
4
+ import NavigationMenuViewport from "./navigation-menu-viewport.svelte";
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ viewport = true,
10
+ children,
11
+ ...restProps
12
+ }: NavigationMenuPrimitive.RootProps & {
13
+ viewport?: boolean;
14
+ } = $props();
15
+ </script>
16
+
17
+ <NavigationMenuPrimitive.Root
18
+ bind:ref
19
+ data-slot="navigation-menu"
20
+ data-viewport={viewport}
21
+ class={cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className)}
22
+ {...restProps}
23
+ >
24
+ {@render children?.()}
25
+
26
+ {#if viewport}
27
+ <NavigationMenuViewport />
28
+ {/if}
29
+ </NavigationMenuPrimitive.Root>
@@ -0,0 +1,7 @@
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "bits-ui";
2
+ type $$ComponentProps = NavigationMenuPrimitive.RootProps & {
3
+ viewport?: boolean;
4
+ };
5
+ declare const NavigationMenu: import("svelte").Component<$$ComponentProps, {}, "ref">;
6
+ type NavigationMenu = ReturnType<typeof NavigationMenu>;
7
+ export default NavigationMenu;
@@ -6,5 +6,5 @@ import Trigger from "./select-trigger.svelte";
6
6
  import Separator from "./select-separator.svelte";
7
7
  import ScrollDownButton from "./select-scroll-down-button.svelte";
8
8
  import ScrollUpButton from "./select-scroll-up-button.svelte";
9
- declare const Root: import("svelte").Component<import("bits-ui").ComboboxRootPropsWithoutHTML, {}, "value" | "open">;
9
+ declare const Root: import("svelte").Component<import("bits-ui").SelectRootPropsWithoutHTML, {}, "value" | "open">;
10
10
  export { Root, Group, Label, Item, Content, Trigger, Separator, ScrollDownButton, ScrollUpButton, Root as Select, Group as SelectGroup, Label as SelectLabel, Item as SelectItem, Content as SelectContent, Trigger as SelectTrigger, Separator as SelectSeparator, ScrollDownButton as SelectScrollDownButton, ScrollUpButton as SelectScrollUpButton, };
@@ -33,10 +33,10 @@
33
33
  <div
34
34
  class={cn(
35
35
  "bg-primary z-50 size-2.5 rotate-45 rounded-[2px]",
36
- side === "top" && "translate-x-1/2 translate-y-[calc(-50%_+_2px)]",
37
- side === "bottom" && "-translate-x-1/2 -translate-y-[calc(-50%_+_1px)]",
38
- side === "right" && "translate-x-[calc(50%_+_2px)] translate-y-1/2",
39
- side === "left" && "-translate-y-[calc(50%_-_3px)]",
36
+ "data-[side=top]:translate-x-1/2 data-[side=top]:translate-y-[calc(-50%_+_2px)]",
37
+ "data-[side=bottom]:translate-x-1/2 data-[side=bottom]:-translate-y-[calc(-50%_+_1px)]",
38
+ "data-[side=right]:translate-x-[calc(50%_+_2px)] data-[side=right]:translate-y-1/2",
39
+ "data-[side=left]:translate-y-[calc(50%_-_3px)]",
40
40
  arrowClasses
41
41
  )}
42
42
  {...props}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kayord/ui",
3
3
  "private": false,
4
- "version": "0.19.4",
4
+ "version": "0.20.0",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -35,13 +35,13 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@internationalized/date": "^3.8.1",
38
- "bits-ui": "1.8.0",
38
+ "bits-ui": "2.4.1",
39
39
  "clsx": "^2.1.1",
40
40
  "embla-carousel-svelte": "8.6.0",
41
41
  "formsnap": "2.0.1",
42
42
  "mode-watcher": "^1.0.7",
43
43
  "paneforge": "1.0.0-next.5",
44
- "svelte-sonner": "^1.0.3",
44
+ "svelte-sonner": "^1.0.4",
45
45
  "tailwind-merge": "^3.3.0",
46
46
  "tailwind-variants": "^1.0.0",
47
47
  "vaul-svelte": "1.0.0-next.7"
@@ -52,39 +52,38 @@
52
52
  "@sveltejs/kit": "^2.21.1",
53
53
  "@sveltejs/package": "^2.3.11",
54
54
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
55
- "@tailwindcss/vite": "^4.1.7",
55
+ "@tailwindcss/vite": "^4.1.8",
56
56
  "@testing-library/jest-dom": "^6.6.3",
57
57
  "@testing-library/svelte": "^5.2.8",
58
58
  "@types/d3-scale": "^4.0.9",
59
59
  "@types/d3-shape": "^3.1.7",
60
- "@typescript-eslint/eslint-plugin": "^8.32.1",
61
- "@typescript-eslint/parser": "^8.32.1",
60
+ "@typescript-eslint/eslint-plugin": "^8.33.0",
61
+ "@typescript-eslint/parser": "^8.33.0",
62
62
  "d3-scale": "^4.0.2",
63
63
  "d3-shape": "^3.2.0",
64
- "eslint": "^9.27.0",
64
+ "eslint": "^9.28.0",
65
65
  "eslint-config-prettier": "^10.1.5",
66
- "eslint-plugin-svelte": "^3.9.0",
67
- "happy-dom": "^17.4.7",
66
+ "eslint-plugin-svelte": "^3.9.1",
67
+ "happy-dom": "^17.5.6",
68
68
  "layerchart": "2.0.0-next.6",
69
69
  "prettier": "^3.5.3",
70
70
  "prettier-plugin-svelte": "^3.4.0",
71
- "prettier-plugin-tailwindcss": "^0.6.11",
71
+ "prettier-plugin-tailwindcss": "^0.6.12",
72
72
  "publint": "^0.3.12",
73
- "svelte": "5.33.2",
73
+ "svelte": "5.33.13",
74
74
  "svelte-check": "^4.2.1",
75
- "tailwindcss": "^4.1.7",
75
+ "tailwindcss": "^4.1.8",
76
76
  "tslib": "^2.8.1",
77
- "tw-animate-css": "1.3.0",
77
+ "tw-animate-css": "1.3.3",
78
78
  "typescript": "^5.8.3",
79
79
  "vite": "^6.3.5",
80
80
  "vitest": "^3.1.4",
81
- "zod": "^3.25.28"
81
+ "zod": "^3.25.46"
82
82
  },
83
83
  "svelte": "./dist/index.js",
84
84
  "types": "./dist/index.d.ts",
85
85
  "main": "./dist/index.js",
86
86
  "type": "module",
87
- "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977",
88
87
  "scripts": {
89
88
  "dev": "vite dev",
90
89
  "build": "vite build && npm run package",