@leavepulse/ui 0.14.6 → 0.14.8

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 (27) hide show
  1. package/dist/chunks/{LpAppShell-DBTsNQaM.js → LpAppShell-BLKZDLh8.js} +2 -2
  2. package/dist/chunks/{LpConfirmDialog-KLtTtCiT.js → LpConfirmDialog-BA45MvRL.js} +1 -1
  3. package/dist/chunks/{LpDrawer-Ce6g9ZMr.js → LpDrawer-6n5Hd-iF.js} +1 -1
  4. package/dist/chunks/{LpLogViewer-hC0OKkeE.js → LpLogViewer-BBgaY38i.js} +1 -1
  5. package/dist/chunks/{LpModal-CWoOExzT.js → LpModal-B9CVVC5U.js} +3 -3
  6. package/dist/chunks/{LpNotificationBell-BDy0tQwr.js → LpNotificationBell-B9VHks_D.js} +1 -1
  7. package/dist/chunks/{LpScrollArea-K1x-azgY.js → LpScrollArea-BtnZCCBT.js} +7 -2
  8. package/dist/chunks/{LpSidebar-BPQabjae.js → LpSidebar-tZ2z-PnM.js} +2 -2
  9. package/dist/chunks/{LpSidebarNav-CpF7rZxx.js → LpSidebarNav-D-YvtwsH.js} +1 -1
  10. package/dist/chunks/{LpTable-CJ4Zt1UH.js → LpTable-CzHVcr3v.js} +1 -1
  11. package/dist/components/LpAppShell.vue.js +1 -1
  12. package/dist/components/LpCommandPalette.vue.js +1 -1
  13. package/dist/components/LpConfirmDialog.vue.js +1 -1
  14. package/dist/components/LpDrawer.vue.js +1 -1
  15. package/dist/components/LpLogViewer.vue.js +1 -1
  16. package/dist/components/LpModal.vue.js +1 -1
  17. package/dist/components/LpNotificationBell.vue.js +1 -1
  18. package/dist/components/LpScrollArea.vue.d.ts +1 -0
  19. package/dist/components/LpScrollArea.vue.js +1 -1
  20. package/dist/components/LpSidebar.vue.js +1 -1
  21. package/dist/components/LpSidebarNav.vue.js +1 -1
  22. package/dist/components/LpTable.vue.js +1 -1
  23. package/dist/index.js +9 -9
  24. package/package.json +1 -1
  25. package/src/components/LpModal.vue +2 -2
  26. package/src/components/LpScrollArea.vue +19 -2
  27. package/src/tokens/tokens.css +8 -2
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, computed, watch, openBlock, createElementBlock, createVNode, createSlots, withCtx, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, toDisplayString, createCommentVNode, createBlock } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$4 } from "./LpScrollArea-K1x-azgY.js";
5
- import { _ as _sfc_main$1 } from "./LpSidebar-BPQabjae.js";
4
+ import { _ as _sfc_main$4 } from "./LpScrollArea-BtnZCCBT.js";
5
+ import { _ as _sfc_main$1 } from "./LpSidebar-tZ2z-PnM.js";
6
6
  const _hoisted_1 = { class: "flex h-dvh overflow-hidden bg-surface text-ink" };
7
7
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
8
8
  const _hoisted_3 = { class: "flex h-16 shrink-0 items-center gap-3 border-b border-line bg-surface px-4 md:px-6" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createBlock, withCtx, renderSlot, createVNode, createTextVNode, toDisplayString } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
- import { _ as _sfc_main$1 } from "./LpModal-CWoOExzT.js";
3
+ import { _ as _sfc_main$1 } from "./LpModal-B9CVVC5U.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpConfirmDialog",
6
6
  props: {
@@ -3,7 +3,7 @@ import { usePointerSwipe } from "@vueuse/core";
3
3
  import { DrawerRoot, DrawerPortal, DrawerOverlay, DrawerContent, DrawerHandle, DrawerTitle, DrawerDescription, DrawerClose } from "vaul-vue";
4
4
  import { CLOSE_ICON } from "../components/dropdown.js";
5
5
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
6
- import { _ as _sfc_main$2 } from "./LpScrollArea-K1x-azgY.js";
6
+ import { _ as _sfc_main$2 } from "./LpScrollArea-BtnZCCBT.js";
7
7
  const _hoisted_1 = { class: "text-base font-semibold text-ink" };
8
8
  const _hoisted_2 = { class: "flex flex-col gap-1" };
9
9
  const _hoisted_3 = ["data-vaul-no-drag"];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, ref, watch, nextTick, onMounted, onBeforeUnmount, openBlock, createElementBlock, createVNode, normalizeStyle, withCtx, createElementVNode, toDisplayString, createCommentVNode, Fragment, createBlock, resolveDynamicComponent, TransitionGroup, mergeProps, renderList, normalizeClass, createTextVNode, Transition } from "vue";
2
2
  import { _ as _sfc_main$3 } from "./LpContextMenu-D0mzXqA7.js";
3
3
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.js";
4
+ import { _ as _sfc_main$1 } from "./LpScrollArea-BtnZCCBT.js";
5
5
  const _hoisted_1 = { class: "relative overflow-hidden rounded-card border border-line bg-surface font-mono text-xs leading-relaxed" };
6
6
  const _hoisted_2 = {
7
7
  key: 0,
@@ -2,7 +2,7 @@ import { defineComponent, computed, useSlots, openBlock, createBlock, unref, wit
2
2
  import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from "reka-ui";
3
3
  import { CLOSE_ICON } from "../components/dropdown.js";
4
4
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
5
- import { _ as _sfc_main$2 } from "./LpScrollArea-K1x-azgY.js";
5
+ import { _ as _sfc_main$2 } from "./LpScrollArea-BtnZCCBT.js";
6
6
  const _hoisted_1 = {
7
7
  key: 0,
8
8
  class: "flex shrink-0 items-start justify-between gap-4 p-5 pb-3"
@@ -53,9 +53,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
53
  default: withCtx(() => [
54
54
  createVNode(unref(DialogPortal), null, {
55
55
  default: withCtx(() => [
56
- createVNode(unref(DialogOverlay), { class: "fixed inset-0 z-(--z-overlay) bg-black/50 backdrop-blur-sm data-[state=open]:animate-[fade-in_150ms_ease] data-[state=closed]:animate-[fade-out_130ms_ease]" }),
56
+ createVNode(unref(DialogOverlay), { class: "fixed inset-0 z-(--z-overlay) bg-black/50 backdrop-blur-sm data-[state=open]:animate-[fade-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[fade-out_120ms_ease]" }),
57
57
  createVNode(unref(DialogContent), {
58
- class: normalizeClass(["fixed left-1/2 top-1/2 z-(--z-modal) flex max-h-[min(90vh,calc(100dvh-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col rounded-card border border-line bg-surface-raised shadow-panel outline-none data-[state=open]:animate-[pop-in_160ms_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_130ms_ease]", widthClass.value]),
58
+ class: normalizeClass(["fixed left-1/2 top-1/2 z-(--z-modal) flex max-h-[min(90vh,calc(100dvh-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col rounded-card border border-line bg-surface-raised shadow-panel outline-none data-[state=open]:animate-[pop-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_120ms_cubic-bezier(0.4,0,1,1)]", widthClass.value]),
59
59
  style: normalizeStyle(__props.width ? { width: __props.width } : void 0)
60
60
  }, {
61
61
  default: withCtx(() => [
@@ -5,7 +5,7 @@ import { _ as _sfc_main$4 } from "./LpContextMenu-D0mzXqA7.js";
5
5
  import { _ as _sfc_main$2 } from "./LpEmptyState-CrfyRJUG.js";
6
6
  import { _ as _sfc_main$5 } from "./LpIcon-CCnX5_2j.js";
7
7
  import { _ as _sfc_main$1 } from "./LpPopover-8268UmlC.js";
8
- import { _ as _sfc_main$3 } from "./LpScrollArea-K1x-azgY.js";
8
+ import { _ as _sfc_main$3 } from "./LpScrollArea-BtnZCCBT.js";
9
9
  const _hoisted_1 = { class: "flex items-center justify-between gap-2 px-3 py-2.5" };
10
10
  const _hoisted_2 = { class: "text-sm font-semibold" };
11
11
  const _hoisted_3 = {
@@ -1,10 +1,11 @@
1
1
  import { defineComponent, ref, computed, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, createElementVNode, renderSlot } from "vue";
2
2
  import { ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport } from "reka-ui";
3
- const barFade = "data-[state=visible]:animate-[fade-in_180ms_ease] data-[state=hidden]:animate-[fade-out_240ms_ease]";
3
+ const barFade = "opacity-0 data-[state=visible]:animate-[fade-in_180ms_ease] data-[state=visible]:opacity-100 data-[state=hidden]:animate-[fade-out_240ms_ease]";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpScrollArea",
6
6
  props: {
7
7
  fade: { type: Boolean },
8
+ smooth: { type: Boolean },
8
9
  contentClass: {},
9
10
  barInsetTop: {}
10
11
  },
@@ -24,6 +25,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
25
  default: withCtx(() => [
25
26
  createVNode(unref(ScrollAreaScrollbar), {
26
27
  orientation: "vertical",
28
+ "force-mount": "",
27
29
  class: normalizeClass(["group flex w-3.5 touch-none select-none justify-end py-px pl-2.5 pr-px", barFade]),
28
30
  style: normalizeStyle(__props.barInsetTop ? { marginTop: __props.barInsetTop } : void 0)
29
31
  }, {
@@ -44,7 +46,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
44
46
  createVNode(unref(ScrollAreaViewport), {
45
47
  ref_key: "viewportRef",
46
48
  ref: viewportRef,
47
- class: normalizeClass(["size-full min-w-0 [&>div]:!block [&>div]:!min-w-0", __props.fade ? "[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]" : ""]),
49
+ class: normalizeClass(["size-full min-w-0 [&>div]:!block [&>div]:!min-w-0", [
50
+ __props.smooth ? "scroll-smooth motion-reduce:scroll-auto" : "",
51
+ __props.fade ? "[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]" : ""
52
+ ]]),
48
53
  onScrollPassive: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("scroll", $event))
49
54
  }, {
50
55
  default: withCtx(() => [
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, normalizeClass, renderSlot, createCommentVNode, createVNode, createSlots, withCtx, normalizeProps, guardReactiveProps, createBlock } from "vue";
2
- import { _ as _sfc_main$2 } from "./LpDrawer-Ce6g9ZMr.js";
3
- import { _ as _sfc_main$1 } from "./LpSidebarNav-CpF7rZxx.js";
2
+ import { _ as _sfc_main$2 } from "./LpDrawer-6n5Hd-iF.js";
3
+ import { _ as _sfc_main$1 } from "./LpSidebarNav-D-YvtwsH.js";
4
4
  const _hoisted_1 = {
5
5
  key: 1,
6
6
  class: "mt-2 flex shrink-0 flex-col gap-2"
@@ -4,7 +4,7 @@ import { usePillTransition } from "../composables/usePillTransition.js";
4
4
  import { _ as _sfc_main$4 } from "./LpBadge-CXzBPnwO.js";
5
5
  import { _ as _sfc_main$2 } from "./LpContextMenu-D0mzXqA7.js";
6
6
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
7
- import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.js";
7
+ import { _ as _sfc_main$1 } from "./LpScrollArea-BtnZCCBT.js";
8
8
  const _hoisted_1 = {
9
9
  key: 0,
10
10
  class: "flex min-h-0 flex-1 flex-col gap-4"
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, onBeforeUnmount, openBlock, crea
2
2
  import { _ as _sfc_main$2 } from "./LpCheckbox-BO0zuuPh.js";
3
3
  import { _ as _sfc_main$4 } from "./LpContextMenu-D0mzXqA7.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
5
- import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.js";
5
+ import { _ as _sfc_main$1 } from "./LpScrollArea-BtnZCCBT.js";
6
6
  const _hoisted_1 = { class: "w-full border-collapse text-sm" };
7
7
  const _hoisted_2 = { class: "border-b border-line bg-surface-soft" };
8
8
  const _hoisted_3 = {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-DBTsNQaM.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-BLKZDLh8.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, computed, watch, nextTick, onMounted, onBeforeUnmount, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, createTextVNode, createElementVNode, withDirectives, withKeys, vModelText, createElementBlock, toDisplayString, createCommentVNode, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription } from "reka-ui";
3
3
  import { _ as _sfc_main$1 } from "../chunks/LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-K1x-azgY.js";
4
+ import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-BtnZCCBT.js";
5
5
  import '../assets/LpCommandPalette-D315B47-.css';const _hoisted_1 = { class: "flex shrink-0 items-center gap-2.5 border-b border-line px-4" };
6
6
  const _hoisted_2 = ["placeholder", "onKeydown"];
7
7
  const _hoisted_3 = {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpConfirmDialog-KLtTtCiT.js";
1
+ import { _ as _sfc_main } from "../chunks/LpConfirmDialog-BA45MvRL.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDrawer-Ce6g9ZMr.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDrawer-6n5Hd-iF.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLogViewer-hC0OKkeE.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLogViewer-BBgaY38i.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModal-CWoOExzT.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModal-B9CVVC5U.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNotificationBell-BDy0tQwr.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNotificationBell-B9VHks_D.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  fade?: boolean;
3
+ smooth?: boolean;
3
4
  contentClass?: string;
4
5
  barInsetTop?: string;
5
6
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpScrollArea-K1x-azgY.js";
1
+ import { _ as _sfc_main } from "../chunks/LpScrollArea-BtnZCCBT.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-BPQabjae.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-tZ2z-PnM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-CpF7rZxx.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-D-YvtwsH.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpTable-CJ4Zt1UH.js";
1
+ import { _ as _sfc_main } from "../chunks/LpTable-CzHVcr3v.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { _ } from "./chunks/LayoutCanvas-Dd20boUG.js";
2
2
  import { _ as _2 } from "./chunks/LpAlert-BAYHDSS1.js";
3
- import { _ as _3 } from "./chunks/LpAppShell-DBTsNQaM.js";
3
+ import { _ as _3 } from "./chunks/LpAppShell-BLKZDLh8.js";
4
4
  import { _ as _4 } from "./chunks/LpAutocomplete-B9uoCs4t.js";
5
5
  import { _ as _5 } from "./chunks/LpAvatar-B1Ez0ZAx.js";
6
6
  import { _ as _6 } from "./chunks/LpBadge-CXzBPnwO.js";
@@ -11,12 +11,12 @@ import { _ as _10 } from "./chunks/LpCard-1yvWT9fx.js";
11
11
  import { _ as _11 } from "./chunks/LpCheckbox-BO0zuuPh.js";
12
12
  import { _ as _12 } from "./chunks/LpCodeBlock-CSiOSPs8.js";
13
13
  import { default as default2 } from "./components/LpCommandPalette.vue.js";
14
- import { _ as _13 } from "./chunks/LpConfirmDialog-KLtTtCiT.js";
14
+ import { _ as _13 } from "./chunks/LpConfirmDialog-BA45MvRL.js";
15
15
  import { _ as _14 } from "./chunks/LpContextMenu-D0mzXqA7.js";
16
16
  import { _ as _15 } from "./chunks/LpDatePicker-dY2q4dr4.js";
17
17
  import { _ as _16 } from "./chunks/LpDisclosure-DP6yfgfM.js";
18
18
  import { _ as _17 } from "./chunks/LpDivider-CUX46KR0.js";
19
- import { _ as _18 } from "./chunks/LpDrawer-Ce6g9ZMr.js";
19
+ import { _ as _18 } from "./chunks/LpDrawer-6n5Hd-iF.js";
20
20
  import { _ as _19 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
21
21
  import { _ as _20 } from "./chunks/LpEmptyState-CrfyRJUG.js";
22
22
  import { _ as _21 } from "./chunks/LpFormField-Bn-ZwC6z.js";
@@ -24,9 +24,9 @@ import { _ as _22 } from "./chunks/LpIcon-CCnX5_2j.js";
24
24
  import { _ as _23 } from "./chunks/LpInfraNode-C_PHcthC.js";
25
25
  import { _ as _24 } from "./chunks/LpInput-BauZRyzm.js";
26
26
  import { _ as _25 } from "./chunks/LpLink-DHwOEp4e.js";
27
- import { _ as _26 } from "./chunks/LpLogViewer-hC0OKkeE.js";
28
- import { _ as _27 } from "./chunks/LpModal-CWoOExzT.js";
29
- import { _ as _28 } from "./chunks/LpNotificationBell-BDy0tQwr.js";
27
+ import { _ as _26 } from "./chunks/LpLogViewer-BBgaY38i.js";
28
+ import { _ as _27 } from "./chunks/LpModal-B9CVVC5U.js";
29
+ import { _ as _28 } from "./chunks/LpNotificationBell-B9VHks_D.js";
30
30
  import { _ as _29 } from "./chunks/LpNumberField-C5ar-OwE.js";
31
31
  import { _ as _30 } from "./chunks/LpOtpInput-DqaT0Z75.js";
32
32
  import { _ as _31 } from "./chunks/LpPagination-CeGuNe_q.js";
@@ -37,17 +37,17 @@ import { _ as _34 } from "./chunks/LpPopover-8268UmlC.js";
37
37
  import { _ as _35 } from "./chunks/LpProgress-BhI0IbjC.js";
38
38
  import { _ as _36 } from "./chunks/LpRadio-CL-pI0_O.js";
39
39
  import { _ as _37 } from "./chunks/LpRadioGroup-B4yDTmi6.js";
40
- import { _ as _38 } from "./chunks/LpScrollArea-K1x-azgY.js";
40
+ import { _ as _38 } from "./chunks/LpScrollArea-BtnZCCBT.js";
41
41
  import { _ as _39 } from "./chunks/LpSegmented-BmpanyAo.js";
42
42
  import { _ as _40 } from "./chunks/LpSelect-DznhPEWX.js";
43
43
  import { _ as _41 } from "./chunks/LpServiceNode-Dc-Ut5RS.js";
44
- import { _ as _42 } from "./chunks/LpSidebar-BPQabjae.js";
44
+ import { _ as _42 } from "./chunks/LpSidebar-tZ2z-PnM.js";
45
45
  import { _ as _43 } from "./chunks/LpSkeleton-eSFIo4kD.js";
46
46
  import { _ as _44 } from "./chunks/LpSlider-B1SF3pRV.js";
47
47
  import { _ as _45 } from "./chunks/LpStat-CdbEFOvn.js";
48
48
  import { _ as _46 } from "./chunks/LpStepper-5dFTrW21.js";
49
49
  import { _ as _47 } from "./chunks/LpSwitch-v6fnccSM.js";
50
- import { _ as _48 } from "./chunks/LpTable-CJ4Zt1UH.js";
50
+ import { _ as _48 } from "./chunks/LpTable-CzHVcr3v.js";
51
51
  import { _ as _49 } from "./chunks/LpTableOfContents-CjvxPMpU.js";
52
52
  import { _ as _50 } from "./chunks/LpTabs-D7aTVPOb.js";
53
53
  import { _ as _51 } from "./chunks/LpTextarea-CRAkhemZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.14.6",
3
+ "version": "0.14.8",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -69,10 +69,10 @@ const bodyPad = computed(() =>
69
69
  <DialogRoot :open="open" @update:open="(v) => $emit('update:open', v)">
70
70
  <DialogPortal>
71
71
  <DialogOverlay
72
- class="fixed inset-0 z-(--z-overlay) bg-black/50 backdrop-blur-sm data-[state=open]:animate-[fade-in_150ms_ease] data-[state=closed]:animate-[fade-out_130ms_ease]"
72
+ class="fixed inset-0 z-(--z-overlay) bg-black/50 backdrop-blur-sm data-[state=open]:animate-[fade-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[fade-out_120ms_ease]"
73
73
  />
74
74
  <DialogContent
75
- class="fixed left-1/2 top-1/2 z-(--z-modal) flex max-h-[min(90vh,calc(100dvh-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col rounded-card border border-line bg-surface-raised shadow-panel outline-none data-[state=open]:animate-[pop-in_160ms_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_130ms_ease]"
75
+ class="fixed left-1/2 top-1/2 z-(--z-modal) flex max-h-[min(90vh,calc(100dvh-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col rounded-card border border-line bg-surface-raised shadow-panel outline-none data-[state=open]:animate-[pop-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_120ms_cubic-bezier(0.4,0,1,1)]"
76
76
  :class="widthClass"
77
77
  :style="width ? { width } : undefined"
78
78
  >
@@ -20,8 +20,13 @@ import {
20
20
  // component root, since items live inside reka's viewport.
21
21
  // `barInsetTop` (any CSS length) pulls the vertical scrollbar down by that much,
22
22
  // so it doesn't run under a sticky header pinned at the top of the viewport.
23
+ // `smooth` eases wheel and keyboard scrolling. Opt-in rather than default:
24
+ // it also applies to `scrollTo({ behavior: "auto" })`, which consumers that
25
+ // drive the scroll themselves (a log tail jumping to the newest line) rely on
26
+ // being instant.
23
27
  const props = defineProps<{
24
28
  fade?: boolean
29
+ smooth?: boolean
25
30
  contentClass?: string
26
31
  barInsetTop?: string
27
32
  }>()
@@ -41,8 +46,11 @@ const viewportEl = computed<HTMLElement | null>(
41
46
  )
42
47
  defineExpose({ viewportEl })
43
48
 
49
+ // `opacity-0` + the hidden-state fade is what keeps the bar invisible at rest:
50
+ // with force-mount the element stays in the DOM, so a one-shot fade-out alone
51
+ // would snap back to visible once the animation finished.
44
52
  const barFade =
45
- "data-[state=visible]:animate-[fade-in_180ms_ease] data-[state=hidden]:animate-[fade-out_240ms_ease]"
53
+ "opacity-0 data-[state=visible]:animate-[fade-in_180ms_ease] data-[state=visible]:opacity-100 data-[state=hidden]:animate-[fade-out_240ms_ease]"
46
54
  </script>
47
55
 
48
56
  <template>
@@ -52,8 +60,14 @@ const barFade =
52
60
  grabbable strip. A 4px-wide hit area is near-impossible to catch with a
53
61
  mouse. Padding (not width) carries the extra room so the thumb stays
54
62
  flush against the wall. -->
63
+ <!-- force-mount: reka only sets the viewport's `overflow-y: scroll` while a
64
+ vertical scrollbar is MOUNTED, and with type="hover" that happens on
65
+ first hover — so before the pointer ever entered, the region silently
66
+ refused to scroll (wheel included). Mounting it up front fixes that;
67
+ the bar still only becomes visible on hover, via `barFade` below. -->
55
68
  <ScrollAreaScrollbar
56
69
  orientation="vertical"
70
+ force-mount
57
71
  class="group flex w-3.5 touch-none select-none justify-end py-px pl-2.5 pr-px"
58
72
  :class="barFade"
59
73
  :style="barInsetTop ? { marginTop: barInsetTop } : undefined"
@@ -76,7 +90,10 @@ const barFade =
76
90
  <ScrollAreaViewport
77
91
  ref="viewportRef"
78
92
  class="size-full min-w-0 [&>div]:!block [&>div]:!min-w-0"
79
- :class="fade ? '[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]' : ''"
93
+ :class="[
94
+ smooth ? 'scroll-smooth motion-reduce:scroll-auto' : '',
95
+ fade ? '[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]' : '',
96
+ ]"
80
97
  @scroll.passive="$emit('scroll', $event)"
81
98
  >
82
99
  <div :class="contentClass">
@@ -125,16 +125,22 @@
125
125
  opacity: 0;
126
126
  }
127
127
  }
128
+ /*
129
+ * Centred-dialog enter/exit. The scale alone read as a pop on the spot, so the
130
+ * panel also rises a few pixels into place — it arrives from somewhere instead
131
+ * of appearing. Exit drops back the same way but shorter and on an accelerating
132
+ * curve, since a dismissal shouldn't be savoured.
133
+ */
128
134
  @keyframes pop-in {
129
135
  from {
130
136
  opacity: 0;
131
- transform: translate(-50%, -50%) scale(0.96);
137
+ transform: translate(-50%, calc(-50% + 8px)) scale(0.97);
132
138
  }
133
139
  }
134
140
  @keyframes pop-out {
135
141
  to {
136
142
  opacity: 0;
137
- transform: translate(-50%, -50%) scale(0.96);
143
+ transform: translate(-50%, calc(-50% + 4px)) scale(0.985);
138
144
  }
139
145
  }
140
146
  /*