bits-ui 0.0.27 → 0.0.28

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 (62) hide show
  1. package/dist/bits/accordion/components/AccordionContent.svelte +30 -12
  2. package/dist/bits/accordion/components/AccordionContent.svelte.d.ts +9 -5
  3. package/dist/bits/accordion/types.d.ts +2 -5
  4. package/dist/bits/alert-dialog/components/AlertDialog.svelte +34 -4
  5. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte +35 -3
  6. package/dist/bits/alert-dialog/components/AlertDialogContent.svelte.d.ts +10 -6
  7. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte +21 -2
  8. package/dist/bits/alert-dialog/ctx.d.ts +5 -2
  9. package/dist/bits/alert-dialog/ctx.js +1 -1
  10. package/dist/bits/alert-dialog/types.d.ts +3 -6
  11. package/dist/bits/collapsible/components/CollapsibleContent.svelte +22 -1
  12. package/dist/bits/collapsible/components/CollapsibleContent.svelte.d.ts +9 -5
  13. package/dist/bits/collapsible/types.d.ts +2 -5
  14. package/dist/bits/context-menu/components/ContextMenu.svelte +4 -1
  15. package/dist/bits/context-menu/components/ContextMenuContent.svelte +38 -4
  16. package/dist/bits/context-menu/components/ContextMenuContent.svelte.d.ts +9 -5
  17. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte +39 -1
  18. package/dist/bits/context-menu/components/ContextMenuSubContent.svelte.d.ts +9 -5
  19. package/dist/bits/context-menu/components/ContextMenuTrigger.svelte +11 -1
  20. package/dist/bits/context-menu/ctx.d.ts +1 -1
  21. package/dist/bits/context-menu/ctx.js +3 -3
  22. package/dist/bits/context-menu/types.d.ts +4 -9
  23. package/dist/bits/dialog/components/Dialog.svelte +32 -2
  24. package/dist/bits/dialog/components/DialogContent.svelte +37 -6
  25. package/dist/bits/dialog/components/DialogContent.svelte.d.ts +10 -6
  26. package/dist/bits/dialog/components/DialogOverlay.svelte +21 -2
  27. package/dist/bits/dialog/ctx.d.ts +5 -2
  28. package/dist/bits/dialog/ctx.js +1 -1
  29. package/dist/bits/dialog/types.d.ts +3 -6
  30. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte +38 -1
  31. package/dist/bits/dropdown-menu/components/DropdownMenuContent.svelte.d.ts +9 -5
  32. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte +40 -3
  33. package/dist/bits/dropdown-menu/components/DropdownMenuSubContent.svelte.d.ts +9 -5
  34. package/dist/bits/dropdown-menu/types.d.ts +5 -9
  35. package/dist/bits/link-preview/components/LinkPreviewContent.svelte +42 -1
  36. package/dist/bits/link-preview/components/LinkPreviewContent.svelte.d.ts +9 -5
  37. package/dist/bits/link-preview/types.d.ts +2 -5
  38. package/dist/bits/menubar/components/Menubar.svelte +3 -2
  39. package/dist/bits/menubar/components/MenubarContent.svelte +45 -2
  40. package/dist/bits/menubar/components/MenubarSubContent.svelte +63 -7
  41. package/dist/bits/menubar/ctx.d.ts +83 -83
  42. package/dist/bits/menubar/ctx.js +3 -3
  43. package/dist/bits/menubar/types.d.ts +6 -4
  44. package/dist/bits/popover/components/PopoverContent.svelte +23 -2
  45. package/dist/bits/popover/components/PopoverContent.svelte.d.ts +9 -5
  46. package/dist/bits/popover/types.d.ts +2 -5
  47. package/dist/bits/select/components/Select.svelte +3 -0
  48. package/dist/bits/select/components/Select.svelte.d.ts +1 -0
  49. package/dist/bits/select/components/SelectContent.svelte +38 -1
  50. package/dist/bits/select/components/SelectContent.svelte.d.ts +9 -5
  51. package/dist/bits/select/types.d.ts +3 -6
  52. package/dist/bits/tooltip/components/TooltipContent.svelte +37 -2
  53. package/dist/bits/tooltip/components/TooltipContent.svelte.d.ts +10 -6
  54. package/dist/bits/tooltip/types.d.ts +3 -5
  55. package/dist/internal/helpers.d.ts +10 -1
  56. package/dist/internal/helpers.js +55 -0
  57. package/dist/internal/types.d.ts +20 -0
  58. package/package.json +1 -1
  59. package/dist/bits/alert-dialog/components/AlertDialogOverlay.svelte.d.ts +0 -228
  60. package/dist/bits/dialog/components/DialogOverlay.svelte.d.ts +0 -228
  61. package/dist/bits/menubar/components/MenubarContent.svelte.d.ts +0 -229
  62. package/dist/bits/menubar/components/MenubarSubContent.svelte.d.ts +0 -230
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/index.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/index.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/index.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/index.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -223,9 +227,9 @@ declare class __sveltets_Render<T extends Transition> {
223
227
  };
224
228
  };
225
229
  }
226
- export type PopoverContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type PopoverContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type PopoverContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class PopoverContent<T extends Transition> extends SvelteComponent<PopoverContentProps<T>, PopoverContentEvents<T>, PopoverContentSlots<T>> {
230
+ export type PopoverContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type PopoverContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type PopoverContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class PopoverContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<PopoverContentProps<T, In, Out>, PopoverContentEvents<T, In, Out>, PopoverContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,4 +1,4 @@
1
- import type { OmitOpen, Expand, HTMLDivAttributes, Transition, TransitionParams, OnChangeFn, AsChild } from "../../internal/index.js";
1
+ import type { OmitOpen, Expand, HTMLDivAttributes, Transition, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
2
2
  import type { ButtonEventHandler } from "../../index.js";
3
3
  import type { CreatePopoverProps } from "@melt-ui/svelte";
4
4
  import type { HTMLButtonAttributes } from "svelte/elements";
@@ -6,10 +6,7 @@ type Props = Expand<OmitOpen<CreatePopoverProps> & {
6
6
  open?: CreatePopoverProps["defaultOpen"];
7
7
  onOpenChange?: OnChangeFn<CreatePopoverProps["defaultOpen"]>;
8
8
  }>;
9
- type ContentProps<T extends Transition = Transition> = Expand<{
10
- transition?: T;
11
- transitionConfig?: TransitionParams<T>;
12
- } & AsChild> & HTMLDivAttributes;
9
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
13
10
  type TriggerProps = AsChild & HTMLButtonAttributes;
14
11
  type CloseProps = AsChild & HTMLButtonAttributes;
15
12
  type ArrowProps = Expand<{
@@ -15,6 +15,7 @@ export let onValueChange = void 0;
15
15
  export let open = void 0;
16
16
  export let onOpenChange = void 0;
17
17
  export let label = void 0;
18
+ export let forceVisible = true;
18
19
  const {
19
20
  states: { open: localOpen, value: localValue },
20
21
  updateOption
@@ -70,6 +71,8 @@ $:
70
71
  updateOption("name", name);
71
72
  $:
72
73
  updateOption("multiple", multiple);
74
+ $:
75
+ updateOption("forceVisible", forceVisible);
73
76
  </script>
74
77
 
75
78
  <slot />
@@ -2,6 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { SelectProps } from "../types.js";
3
3
  declare const __propDef: {
4
4
  props: {
5
+ forceVisible?: boolean | undefined;
5
6
  multiple?: false | undefined;
6
7
  disabled?: boolean | undefined;
7
8
  preventScroll?: boolean | undefined;
@@ -3,6 +3,10 @@ import { melt } from "@melt-ui/svelte";
3
3
  import { ctx } from "../ctx.js";
4
4
  export let transition = void 0;
5
5
  export let transitionConfig = void 0;
6
+ export let inTransition = void 0;
7
+ export let inTransitionConfig = void 0;
8
+ export let outTransition = void 0;
9
+ export let outTransitionConfig = void 0;
6
10
  export let asChild = false;
7
11
  const {
8
12
  elements: { menu },
@@ -18,7 +22,40 @@ const {
18
22
  {#if asChild}
19
23
  <slot {builder} />
20
24
  {:else if transition}
21
- <div {...builder} use:builder.action {...$$restProps} on:m-keydown transition:transition={transitionConfig}>
25
+ <div
26
+ transition:transition|global={transitionConfig}
27
+ {...builder} use:builder.action
28
+ {...$$restProps}
29
+ on:m-keydown
30
+ >
31
+ <slot {builder} />
32
+ </div>
33
+ {:else if inTransition && outTransition}
34
+ <div
35
+ in:inTransition|global={inTransitionConfig}
36
+ out:outTransition|global={outTransitionConfig}
37
+ {...builder} use:builder.action
38
+ {...$$restProps}
39
+ on:m-keydown
40
+ >
41
+ <slot {builder} />
42
+ </div>
43
+ {:else if inTransition}
44
+ <div
45
+ in:inTransition|global={inTransitionConfig}
46
+ {...builder} use:builder.action
47
+ {...$$restProps}
48
+ on:m-keydown
49
+ >
50
+ <slot {builder} />
51
+ </div>
52
+ {:else if outTransition}
53
+ <div
54
+ out:outTransition|global={outTransitionConfig}
55
+ {...builder} use:builder.action
56
+ {...$$restProps}
57
+ on:m-keydown
58
+ >
22
59
  <slot {builder} />
23
60
  </div>
24
61
  {:else}
@@ -1,9 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/types.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
5
  transition?: T | undefined;
6
6
  transitionConfig?: import("../../../internal/types.js").TransitionParams<T> | undefined;
7
+ inTransition?: In | undefined;
8
+ inTransitionConfig?: import("../../../internal/types.js").TransitionParams<In> | undefined;
9
+ outTransition?: Out | undefined;
10
+ outTransitionConfig?: import("../../../internal/types.js").TransitionParams<Out> | undefined;
7
11
  asChild?: boolean | undefined;
8
12
  accesskey?: string | null | undefined;
9
13
  autofocus?: boolean | null | undefined;
@@ -223,9 +227,9 @@ declare class __sveltets_Render<T extends Transition> {
223
227
  };
224
228
  };
225
229
  }
226
- export type SelectContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
227
- export type SelectContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
228
- export type SelectContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
229
- export default class SelectContent<T extends Transition> extends SvelteComponent<SelectContentProps<T>, SelectContentEvents<T>, SelectContentSlots<T>> {
230
+ export type SelectContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
231
+ export type SelectContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
232
+ export type SelectContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
233
+ export default class SelectContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<SelectContentProps<T, In, Out>, SelectContentEvents<T, In, Out>, SelectContentSlots<T, In, Out>> {
230
234
  }
231
235
  export {};
@@ -1,18 +1,15 @@
1
1
  import type { CreateSelectProps, SelectComponentEvents, SelectOptionProps } from "@melt-ui/svelte";
2
- import type { AsChild, Expand, HTMLDivAttributes, OmitOpen, OmitValue, OnChangeFn, Transition, TransitionParams } from "../../internal/index.js";
2
+ import type { AsChild, Expand, HTMLDivAttributes, OmitOpen, OmitValue, OnChangeFn, Transition, TransitionProps } from "../../internal/index.js";
3
3
  import type { HTMLAttributes, HTMLButtonAttributes, HTMLInputAttributes } from "svelte/elements";
4
4
  import type { ButtonEventHandler, DivEventHandler } from "../../index.js";
5
- type Props = Expand<OmitOpen<OmitValue<Omit<CreateSelectProps, "defaultValueLabel" | "forceVisible">>> & {
5
+ type Props = Expand<OmitOpen<OmitValue<Omit<CreateSelectProps, "defaultValueLabel">>> & {
6
6
  value?: CreateSelectProps["defaultValue"] & {};
7
7
  onValueChange?: OnChangeFn<CreateSelectProps["defaultValue"]>;
8
8
  open?: CreateSelectProps["defaultOpen"] & {};
9
9
  onOpenChange?: OnChangeFn<CreateSelectProps["defaultOpen"]>;
10
10
  label?: CreateSelectProps["defaultValueLabel"] & {};
11
11
  }>;
12
- type ContentProps<T extends Transition = Transition> = Expand<{
13
- transition?: T;
14
- transitionConfig?: TransitionParams<T>;
15
- } & AsChild> & HTMLDivAttributes;
12
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
16
13
  type GroupProps = AsChild & HTMLDivAttributes;
17
14
  type InputProps = AsChild & HTMLInputAttributes;
18
15
  type LabelProps = AsChild & HTMLDivAttributes;
@@ -2,8 +2,12 @@
2
2
  import { ctx } from "../ctx.js";
3
3
  export let transition = void 0;
4
4
  export let transitionConfig = void 0;
5
- export let sideOffset = 4;
5
+ export let inTransition = void 0;
6
+ export let inTransitionConfig = void 0;
7
+ export let outTransition = void 0;
8
+ export let outTransitionConfig = void 0;
6
9
  export let asChild = false;
10
+ export let sideOffset = 4;
7
11
  const {
8
12
  elements: { content },
9
13
  states: { open }
@@ -17,7 +21,38 @@ const {
17
21
  {:else if transition}
18
22
  <div
19
23
  {...builder} use:builder.action
20
- transition:transition={transitionConfig}
24
+ transition:transition|global={transitionConfig}
25
+ {...$$restProps}
26
+ on:m-pointerdown
27
+ on:m-pointerenter
28
+ >
29
+ <slot {builder} />
30
+ </div>
31
+ {:else if inTransition && outTransition}
32
+ <div
33
+ {...builder} use:builder.action
34
+ in:inTransition|global={inTransitionConfig}
35
+ out:outTransition|global={outTransitionConfig}
36
+ {...$$restProps}
37
+ on:m-pointerdown
38
+ on:m-pointerenter
39
+ >
40
+ <slot {builder} />
41
+ </div>
42
+ {:else if inTransition}
43
+ <div
44
+ {...builder} use:builder.action
45
+ in:inTransition|global={inTransitionConfig}
46
+ {...$$restProps}
47
+ on:m-pointerdown
48
+ on:m-pointerenter
49
+ >
50
+ <slot {builder} />
51
+ </div>
52
+ {:else if outTransition}
53
+ <div
54
+ {...builder} use:builder.action
55
+ out:outTransition|global={outTransitionConfig}
21
56
  {...$$restProps}
22
57
  on:m-pointerdown
23
58
  on:m-pointerenter
@@ -1,10 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Transition } from "../../../internal/index.js";
3
- declare class __sveltets_Render<T extends Transition> {
3
+ declare class __sveltets_Render<T extends Transition, In extends Transition, Out extends Transition> {
4
4
  props(): {
5
+ sideOffset?: number | undefined;
5
6
  transition?: T | undefined;
6
7
  transitionConfig?: import("../../../internal/index.js").TransitionParams<T> | undefined;
7
- sideOffset?: number | undefined;
8
+ inTransition?: In | undefined;
9
+ inTransitionConfig?: import("../../../internal/index.js").TransitionParams<In> | undefined;
10
+ outTransition?: Out | undefined;
11
+ outTransitionConfig?: import("../../../internal/index.js").TransitionParams<Out> | undefined;
8
12
  asChild?: boolean | undefined;
9
13
  accesskey?: string | null | undefined;
10
14
  autofocus?: boolean | null | undefined;
@@ -225,9 +229,9 @@ declare class __sveltets_Render<T extends Transition> {
225
229
  };
226
230
  };
227
231
  }
228
- export type TooltipContentProps<T extends Transition> = ReturnType<__sveltets_Render<T>['props']>;
229
- export type TooltipContentEvents<T extends Transition> = ReturnType<__sveltets_Render<T>['events']>;
230
- export type TooltipContentSlots<T extends Transition> = ReturnType<__sveltets_Render<T>['slots']>;
231
- export default class TooltipContent<T extends Transition> extends SvelteComponent<TooltipContentProps<T>, TooltipContentEvents<T>, TooltipContentSlots<T>> {
232
+ export type TooltipContentProps<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['props']>;
233
+ export type TooltipContentEvents<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['events']>;
234
+ export type TooltipContentSlots<T extends Transition, In extends Transition, Out extends Transition> = ReturnType<__sveltets_Render<T, In, Out>['slots']>;
235
+ export default class TooltipContent<T extends Transition, In extends Transition, Out extends Transition> extends SvelteComponent<TooltipContentProps<T, In, Out>, TooltipContentEvents<T, In, Out>, TooltipContentSlots<T, In, Out>> {
232
236
  }
233
237
  export {};
@@ -1,15 +1,13 @@
1
1
  import type { CreateTooltipProps, TooltipComponentEvents } from "@melt-ui/svelte";
2
- import type { Expand, HTMLDivAttributes, OmitOpen, OmitForceVisible, Transition, TransitionParams, OnChangeFn, AsChild } from "../../internal/index.js";
2
+ import type { Expand, HTMLDivAttributes, OmitOpen, OmitForceVisible, Transition, OnChangeFn, AsChild, TransitionProps } from "../../internal/index.js";
3
3
  import type { HTMLButtonAttributes } from "svelte/elements";
4
4
  type Props = Expand<OmitOpen<OmitForceVisible<CreateTooltipProps>> & {
5
5
  open?: CreateTooltipProps["defaultOpen"] & {};
6
6
  onOpenChange?: OnChangeFn<CreateTooltipProps["defaultOpen"]>;
7
7
  }>;
8
- type ContentProps<T extends Transition = Transition> = Expand<{
9
- transition?: T;
10
- transitionConfig?: TransitionParams<T>;
8
+ type ContentProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
11
9
  sideOffset?: number;
12
- } & AsChild> & HTMLDivAttributes;
10
+ } & TransitionProps<T, In, Out> & AsChild> & HTMLDivAttributes;
13
11
  type TriggerProps = AsChild & HTMLButtonAttributes;
14
12
  type ArrowProps = Expand<{
15
13
  size?: number;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="svelte" />
2
2
  import type { Writable } from "svelte/store";
3
- import type { Builder } from "./types.js";
3
+ import type { Builder, Transition, TransitionParams, TransitionTimesStore } from "./types.js";
4
4
  export declare function noop(): void;
5
5
  export declare function generateId(): string;
6
6
  export declare function removeUndefined<T extends object>(obj: T): T;
@@ -24,4 +24,13 @@ export declare function disabledAttrs(disabled: boolean): {
24
24
  export declare function bitWrap<T extends object>(storeValues: T, bit: string): T;
25
25
  export declare function sleep(ms: number): Promise<unknown>;
26
26
  export declare function styleToString(style: Record<string, number | string | undefined>): string;
27
+ type TransitionsObj<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = {
28
+ transition?: T;
29
+ transitionConfig?: TransitionParams<T>;
30
+ inTransition?: In;
31
+ inTransitionConfig?: TransitionParams<In>;
32
+ outTransition?: Out;
33
+ outTransitionConfig?: TransitionParams<Out>;
34
+ };
35
+ export declare function setTransitionTimes(transitionTimes: TransitionTimesStore, transitionsObj: TransitionsObj): void;
27
36
  export {};
@@ -1,4 +1,5 @@
1
1
  import { nanoid } from "nanoid/non-secure";
2
+ import { isBrowser } from "@/utils/is.js";
2
3
  export function noop() {
3
4
  // do nothing
4
5
  }
@@ -71,3 +72,57 @@ export function styleToString(style) {
71
72
  return str + `${key}:${style[key]};`;
72
73
  }, "");
73
74
  }
75
+ export function setTransitionTimes(transitionTimes, transitionsObj) {
76
+ if (!isBrowser)
77
+ return;
78
+ const { transition, transitionConfig, inTransition, inTransitionConfig, outTransition, outTransitionConfig } = transitionsObj;
79
+ if (transition) {
80
+ if (transitionConfig) {
81
+ const { delay, duration } = transition(document.body, transitionConfig);
82
+ const time = calcTime(delay, duration);
83
+ transitionTimes.set({
84
+ in: time,
85
+ out: time
86
+ });
87
+ return;
88
+ }
89
+ const { delay, duration } = transition(document.body);
90
+ const time = calcTime(delay, duration);
91
+ transitionTimes.set({
92
+ in: time,
93
+ out: time
94
+ });
95
+ return;
96
+ }
97
+ let inTime = 0;
98
+ let outTime = 0;
99
+ if (inTransition) {
100
+ if (inTransitionConfig) {
101
+ const { delay, duration } = inTransition(document.body, inTransitionConfig);
102
+ inTime = calcTime(delay, duration);
103
+ }
104
+ else {
105
+ const { delay, duration } = inTransition(document.body);
106
+ inTime = calcTime(delay, duration);
107
+ }
108
+ }
109
+ if (outTransition) {
110
+ if (outTransitionConfig) {
111
+ const { delay, duration } = outTransition(document.body, outTransitionConfig);
112
+ outTime = calcTime(delay, duration);
113
+ }
114
+ else {
115
+ const { delay, duration } = outTransition(document.body);
116
+ outTime = calcTime(delay, duration);
117
+ }
118
+ }
119
+ transitionTimes.set({
120
+ in: inTime,
121
+ out: outTime
122
+ });
123
+ }
124
+ function calcTime(delay, duration) {
125
+ const numDelay = delay ?? 0;
126
+ const numDuration = duration ?? 0;
127
+ return numDelay + numDuration;
128
+ }
@@ -1,6 +1,7 @@
1
1
  /// <reference types="svelte" />
2
2
  import type { Action } from "svelte/action";
3
3
  import type { HTMLAttributes } from "svelte/elements";
4
+ import type { Writable } from "svelte/store";
4
5
  import type { TransitionConfig } from "svelte/transition";
5
6
  export type ObjectVariation<T> = T extends object ? T : never;
6
7
  export type Transition = (node: Element, params?: any) => TransitionConfig;
@@ -34,3 +35,22 @@ export type KeydownClickEvents = {
34
35
  export type AsChild = Expand<{
35
36
  asChild?: boolean;
36
37
  }>;
38
+ export type TransitionProps<T extends Transition = Transition, In extends Transition = Transition, Out extends Transition = Transition> = Expand<{
39
+ transition?: T;
40
+ transitionConfig?: TransitionParams<T>;
41
+ inTransition?: In;
42
+ inTransitionConfig?: TransitionParams<In>;
43
+ outTransition?: Out;
44
+ outTransitionConfig?: TransitionParams<Out>;
45
+ }>;
46
+ export type TransitionTimes = {
47
+ in?: number;
48
+ out?: number;
49
+ };
50
+ export type TransitionTimesStore = Writable<Expand<TransitionTimes>>;
51
+ export type TransitionTimesProp = {
52
+ transitionTimes: TransitionTimesStore;
53
+ };
54
+ export type TOpen = {
55
+ tOpen: Writable<boolean>;
56
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bits-ui",
3
- "version": "0.0.27",
3
+ "version": "0.0.28",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": {