@leavepulse/ui 0.74.0 → 0.74.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{LpDropzone-Bb1vBTeU.css → LpDropzone-B_qRq1-R.css} +10 -10
- package/dist/chunks/{DropzoneLinkField-ppY9xalk.js → DropzoneLinkField-C-9BCGJn.js} +2 -2
- package/dist/chunks/{FieldWrapper-y5bKBNxA.js → FieldWrapper-CORPzo9s.js} +1 -1
- package/dist/chunks/{LpActionBar-B55msXTr.js → LpActionBar-BP1ld7-S.js} +2 -2
- package/dist/chunks/{LpAddressInput-mf_dEpj_.js → LpAddressInput-Al3HT5ey.js} +3 -3
- package/dist/chunks/{LpAlert-Cg7oIx1B.js → LpAlert-n5XPAZfv.js} +2 -2
- package/dist/chunks/{LpAppShell-D-NtjYlw.js → LpAppShell-CpSSm5WT.js} +4 -4
- package/dist/chunks/{LpBadge-0A6sPks3.js → LpBadge-wUYLN4U9.js} +1 -1
- package/dist/chunks/{LpBottomNav-Dik-ZcHv.js → LpBottomNav-CbNQQPuL.js} +1 -1
- package/dist/chunks/{LpBreadcrumbs-ssZV3_od.js → LpBreadcrumbs-DPdbth-c.js} +1 -1
- package/dist/chunks/{LpButton-BgdewXxF.js → LpButton-CFb44IjC.js} +1 -1
- package/dist/chunks/{LpCard-BJ59q6hR.js → LpCard-r13WRqox.js} +1 -1
- package/dist/chunks/{LpCheckbox-B0kJ-t6T.js → LpCheckbox-Cs4SHaHX.js} +1 -1
- package/dist/chunks/{LpCodeBlock-CXR_7t_F.js → LpCodeBlock-DRC8VbXW.js} +1 -1
- package/dist/chunks/{LpCodeDisplay-BCghfBFC.js → LpCodeDisplay-CE9TxCA4.js} +4 -4
- package/dist/chunks/{LpConfirmDialog-CaA4pAre.js → LpConfirmDialog-DY2VjDji.js} +1 -1
- package/dist/chunks/{LpConfirmHost-CBIzALSL.js → LpConfirmHost-DvSZTJ4N.js} +1 -1
- package/dist/chunks/{LpCopyButton-Cw-lF7Q3.js → LpCopyButton-xF7wFVoU.js} +1 -1
- package/dist/chunks/{LpCountdown-BNNhnQAK.js → LpCountdown-DgeY3cLG.js} +1 -1
- package/dist/chunks/{LpDataList-CcAA-rD9.js → LpDataList-Jxyl9H5w.js} +1 -1
- package/dist/chunks/{LpEditable-CSuJIPbG.js → LpEditable-Cy6GLbFx.js} +2 -2
- package/dist/chunks/{LpFileTree-CxOh3rL2.js → LpFileTree-zIFEgo3I.js} +1 -1
- package/dist/chunks/{LpFileTreeNode-9ue2P7ER.js → LpFileTreeNode-cT6BIWvz.js} +3 -3
- package/dist/chunks/{LpFormField-BBFg8i2I.js → LpFormField-Ch69Jd-X.js} +1 -1
- package/dist/chunks/{LpHintLayer-Db_s9_DL.js → LpHintLayer-CgObdUsM.js} +2 -2
- package/dist/chunks/{LpHints-Cxf5GXsx.js → LpHints-Bz-BlaSl.js} +3 -3
- package/dist/chunks/{LpInfraNode-6NLxkAnr.js → LpInfraNode-46XOCkfq.js} +2 -2
- package/dist/chunks/{LpInput-B2dTt4pc.js → LpInput-Tw-yxT4I.js} +1 -1
- package/dist/chunks/{LpLightbox-Coe4OBUl.js → LpLightbox-B95yu22B.js} +2 -2
- package/dist/chunks/{LpLoader-DPTNhqLu.js → LpLoader-DVwkOmt9.js} +1 -1
- package/dist/chunks/{LpLogViewer-DxiR6Mbd.js → LpLogViewer-D25jM2_I.js} +3 -3
- package/dist/chunks/{LpMapPicker-DeJRMfFN.js → LpMapPicker-DRGgh89B.js} +1 -1
- package/dist/chunks/{LpMediaGallery-B7Km8N9l.js → LpMediaGallery-Bkram-MO.js} +1 -1
- package/dist/chunks/{LpModalNav-BmxEyqOx.js → LpModalNav-DQpV2kdn.js} +2 -2
- package/dist/chunks/{LpNotificationBell-u8-ZjRON.js → LpNotificationBell-3244LUVc.js} +3 -3
- package/dist/chunks/{LpPaletteTheme-CWAIjBCi.js → LpPaletteTheme-DiLYKQiZ.js} +3 -3
- package/dist/chunks/{LpPasswordInput-Ih7Lv43S.js → LpPasswordInput-BkHKQDhM.js} +2 -2
- package/dist/chunks/{LpPie-Idujdb3M.js → LpPie-DrZepi0p.js} +2 -2
- package/dist/chunks/{LpPipeline-QCZWWB0G.js → LpPipeline-B3aOVOkV.js} +2 -2
- package/dist/chunks/{LpRepeater-DghUJ3bc.js → LpRepeater-D7ZmnIYd.js} +2 -2
- package/dist/chunks/{LpScramble-DeT_D36q.js → LpScramble-Bn9OoOtC.js} +1 -1
- package/dist/chunks/{LpSecretField-osKPNdNT.js → LpSecretField-BbmqM9ye.js} +6 -6
- package/dist/chunks/{LpShift-kKUeG9NS.js → LpShift-CCq7dofl.js} +2 -4
- package/dist/chunks/{LpSidebar-CR_WKcn2.js → LpSidebar-BoNLKgh-.js} +2 -2
- package/dist/chunks/{LpSidebarNav-h3YunOAr.js → LpSidebarNav-Bky8chrv.js} +2 -2
- package/dist/chunks/{LpSidebarRow-SjV0Ouhq.js → LpSidebarRow-BRYhNDSo.js} +1 -1
- package/dist/chunks/{LpStat-DXqKD1h5.js → LpStat-f2LfDCJ4.js} +1 -1
- package/dist/chunks/{LpStatus-DfZREVe0.js → LpStatus-DglxttQ7.js} +2 -2
- package/dist/chunks/{LpStepMark-TaAyuNsH.js → LpStepMark-DpzKVyh8.js} +1 -1
- package/dist/chunks/{LpStepper-CKSTFzHE.js → LpStepper-DpsocBNJ.js} +1 -1
- package/dist/chunks/{LpSwap-KIS24N8W.js → LpSwap-C96c0LWh.js} +1 -1
- package/dist/chunks/{LpSwitch-DlZHmj-M.js → LpSwitch-BnXd1llc.js} +1 -1
- package/dist/chunks/{LpTabFace-JFJLW0kA.js → LpTabFace-DPCwKkH2.js} +1 -1
- package/dist/chunks/{LpTableFilter-47ANnx_a.js → LpTableFilter-CiVBpaq0.js} +3 -3
- package/dist/chunks/{LpTagsInput-CHoiid8u.js → LpTagsInput-C-mDG648.js} +2 -2
- package/dist/chunks/{LpTextarea-CU7C1pLO.js → LpTextarea-TE-yZv2U.js} +1 -1
- package/dist/chunks/{LpThemeStudio-zyOH3dF2.js → LpThemeStudio-BpORDvH6.js} +2 -2
- package/dist/chunks/{LpThemeSwitcher-BXJhQYGD.js → LpThemeSwitcher-BnEn_mvf.js} +2 -2
- package/dist/chunks/{LpToaster-C1D35SKk.js → LpToaster-IwTXjbbU.js} +1 -1
- package/dist/chunks/{LpTopologyCanvas-1OufbBtQ.js → LpTopologyCanvas-B1gIbS0n.js} +1 -1
- package/dist/chunks/{LpTour-XshJslGg.js → LpTour-BZq-mUMv.js} +1 -1
- package/dist/chunks/{LpTruncate-qgKA-3K3.js → LpTruncate-CflAIwiJ.js} +1 -1
- package/dist/chunks/{LpUptimeBar-qhvvmmoI.js → LpUptimeBar-DqNvvMBK.js} +2 -2
- package/dist/chunks/{RevealToggle-6MlmohxS.js → RevealToggle-BEit1n6Z.js} +1 -1
- package/dist/chunks/{TourCard-BuB-i4kv.js → TourCard-DNclH3u_.js} +3 -3
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.js +1 -1
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBottomNav.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.js +2 -2
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +2 -2
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.js +1 -1
- package/dist/components/LpCountdown.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +35 -22
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +1 -1
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLoader.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpPaletteTheme.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpScramble.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpShift.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSidebarRow.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwap.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTabFace.vue.js +1 -1
- package/dist/components/LpTable.vue.js +6 -6
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTabs.vue.js +1 -1
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpTruncate.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/RevealToggle.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/composables/useShift.d.ts +0 -2
- package/dist/composables/useShift.js +0 -6
- package/dist/index.js +55 -55
- package/package.json +1 -1
- package/src/components/LpDropzone.vue +21 -2
- package/src/components/LpShift.vue +2 -4
- package/src/composables/useShift.ts +0 -14
package/package.json
CHANGED
|
@@ -406,6 +406,7 @@ let mounted = false
|
|
|
406
406
|
onMounted(() => {
|
|
407
407
|
mounted = true
|
|
408
408
|
listen(props.pasteTarget)
|
|
409
|
+
measureRadius()
|
|
409
410
|
})
|
|
410
411
|
watch(
|
|
411
412
|
() => props.pasteTarget,
|
|
@@ -430,6 +431,22 @@ const { class: rootClass, attrs: rest } = useMergedAttrs(() => [
|
|
|
430
431
|
props.animate && !revealed.value ? "lp-dropzone--waiting" : "",
|
|
431
432
|
].join(" "))
|
|
432
433
|
|
|
434
|
+
// The dashed frame is an SVG rect, which cannot inherit the box's
|
|
435
|
+
// border-radius: a zone rounded by the consumer (`rounded-control`) kept the
|
|
436
|
+
// card's curve on its dashes while the background clipped tighter. The kit's
|
|
437
|
+
// own rounding stays a live token, so a theme that changes it still applies.
|
|
438
|
+
const measuredRadius = ref("")
|
|
439
|
+
const frameRadius = computed(() =>
|
|
440
|
+
rootClass.value.split(/\s+/).includes("rounded-card") || !measuredRadius.value
|
|
441
|
+
? "var(--radius-card)"
|
|
442
|
+
: measuredRadius.value,
|
|
443
|
+
)
|
|
444
|
+
function measureRadius() {
|
|
445
|
+
const zone = revealAnchor.value as HTMLElement | null
|
|
446
|
+
if (zone) measuredRadius.value = getComputedStyle(zone).borderTopLeftRadius
|
|
447
|
+
}
|
|
448
|
+
watch(rootClass, () => nextTick(measureRadius))
|
|
449
|
+
|
|
433
450
|
// Overlays open in the window this component renders in (an LpFrame's, inside one).
|
|
434
451
|
const portalTo = usePortalTarget()
|
|
435
452
|
// What happens in another document (the page around a frame, or a frame in
|
|
@@ -473,7 +490,7 @@ const guardOutside = useOutsideGuard()
|
|
|
473
490
|
y="0.5"
|
|
474
491
|
width="calc(100% - 1px)"
|
|
475
492
|
height="calc(100% - 1px)"
|
|
476
|
-
rx="
|
|
493
|
+
:rx="frameRadius"
|
|
477
494
|
fill="none"
|
|
478
495
|
stroke-width="1"
|
|
479
496
|
stroke-dasharray="6 5"
|
|
@@ -526,7 +543,9 @@ const guardOutside = useOutsideGuard()
|
|
|
526
543
|
<!-- A zone too narrow for the field (a thumbnail beside its controls)
|
|
527
544
|
keeps its picture and opens the field under itself instead. -->
|
|
528
545
|
<PopoverRoot :open="linking && floating" @update:open="(open: boolean) => !open && stopLink(false)">
|
|
529
|
-
|
|
546
|
+
<!-- Positioned by `reference`; its own empty element must not be a flex
|
|
547
|
+
item, or the zone's gap adds a strip under the content. -->
|
|
548
|
+
<PopoverAnchor :reference="revealAnchor ?? undefined" class="hidden" />
|
|
530
549
|
<PopoverPortal :to="portalTo">
|
|
531
550
|
<PopoverContent
|
|
532
551
|
@interact-outside="guardOutside"
|
|
@@ -304,10 +304,8 @@ defineExpose({ resizing })
|
|
|
304
304
|
resizing ? 'overflow-hidden' : '',
|
|
305
305
|
// While the box holds a width its content has outgrown, a flex row would
|
|
306
306
|
// squeeze its children to fit (a button's keys folding into a column)
|
|
307
|
-
// instead of letting the easing edge clip them.
|
|
308
|
-
|
|
309
|
-
// or it would break onto a second line until the tween lands.
|
|
310
|
-
resizing && axis !== 'height' ? '[&>*]:shrink-0 [&>*:only-child]:min-w-(--lp-shift-to-w)' : '',
|
|
307
|
+
// instead of letting the easing edge clip them.
|
|
308
|
+
resizing && axis !== 'height' ? '[&>*]:shrink-0' : '',
|
|
311
309
|
resizing && anchor === 'end' ? 'justify-end' : '',
|
|
312
310
|
]"
|
|
313
311
|
>
|
|
@@ -62,9 +62,6 @@ export interface UseShift {
|
|
|
62
62
|
retune: () => void
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
/** Set on the box while it eases its width: where that width will land. */
|
|
66
|
-
export const TARGET_WIDTH = "--lp-shift-to-w"
|
|
67
|
-
|
|
68
65
|
/** Kept in step with the `duration-fast` token the transition utilities use. */
|
|
69
66
|
const TWEEN_MS = 160
|
|
70
67
|
|
|
@@ -191,14 +188,8 @@ export function useShift(
|
|
|
191
188
|
// its bar re-animated some sixty times a second).
|
|
192
189
|
if (wantsHeight()) node.style.height = ""
|
|
193
190
|
if (wantsWidth()) node.style.width = ""
|
|
194
|
-
// The content's own width, not the one the last tween held it at: left in
|
|
195
|
-
// place, the rounded-up figure fed back into the next measurement and the
|
|
196
|
-
// box grew a pixel a frame for good.
|
|
197
|
-
node.style.removeProperty(TARGET_WIDTH)
|
|
198
191
|
const toHeight = wantsHeight() ? node.offsetHeight : 0
|
|
199
192
|
const toWidth = wantsWidth() ? node.offsetWidth : 0
|
|
200
|
-
// offsetWidth is rounded, and content that needs 406.4px wraps at 406.
|
|
201
|
-
const exactWidth = wantsWidth() ? Math.ceil(node.getBoundingClientRect().width) : 0
|
|
202
193
|
restoreScroll(tops)
|
|
203
194
|
lastHeight = toHeight
|
|
204
195
|
lastWidth = toWidth
|
|
@@ -224,10 +215,6 @@ export function useShift(
|
|
|
224
215
|
void node.offsetHeight
|
|
225
216
|
if (movesHeight) node.style.height = `${toHeight}px`
|
|
226
217
|
if (movesWidth) node.style.width = `${toWidth}px`
|
|
227
|
-
// The width the box is heading for, for content that would otherwise lay
|
|
228
|
-
// itself out at every in-between width: a wrapping row inside a widening
|
|
229
|
-
// box broke onto a second line for the length of the tween.
|
|
230
|
-
if (movesWidth) node.style.setProperty(TARGET_WIDTH, `${exactWidth}px`)
|
|
231
218
|
restoreScroll(tops)
|
|
232
219
|
|
|
233
220
|
inFlight = true
|
|
@@ -246,7 +233,6 @@ export function useShift(
|
|
|
246
233
|
// clearing it let the box spread to the window's edges.
|
|
247
234
|
if (wantsHeight()) node.style.height = ""
|
|
248
235
|
if (wantsWidth()) node.style.width = ""
|
|
249
|
-
node.style.removeProperty(TARGET_WIDTH)
|
|
250
236
|
// Re-read rather than trusting the target: the layout around may have
|
|
251
237
|
// moved meanwhile, and the next tween has to start from where it sits.
|
|
252
238
|
lastHeight = node.offsetHeight
|