@leavepulse/ui 0.72.0 → 0.72.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.
Files changed (147) hide show
  1. package/dist/assets/{LpKeys-BxRhfQda.css → LpKeys-C5VMcBOW.css} +10 -5
  2. package/dist/chunks/{DropzoneLinkField-D2Rnkcys.js → DropzoneLinkField-CvyzXHdc.js} +2 -2
  3. package/dist/chunks/{FieldWrapper-DnA1rxZ8.js → FieldWrapper-DeOZzjBM.js} +1 -1
  4. package/dist/chunks/{LpActionBar-DfiBL1dE.js → LpActionBar-DZP0IpXS.js} +2 -2
  5. package/dist/chunks/{LpAddressInput-B1bB3F6M.js → LpAddressInput-q8Vu3M8z.js} +3 -3
  6. package/dist/chunks/{LpAlert-CpRF9eYr.js → LpAlert-CGeYc3fe.js} +2 -2
  7. package/dist/chunks/{LpAppShell-D8Q0Jv9d.js → LpAppShell-oB-QWu74.js} +4 -4
  8. package/dist/chunks/{LpBadge-vtCpsDmv.js → LpBadge-BVDOfrqI.js} +1 -1
  9. package/dist/chunks/{LpBottomNav-VXJf0cKc.js → LpBottomNav-w_5LKno0.js} +1 -1
  10. package/dist/chunks/{LpBreadcrumbs-BdzjQcql.js → LpBreadcrumbs-DJvcYVPM.js} +1 -1
  11. package/dist/chunks/{LpButton-Dk7eT4ro.js → LpButton-Cse4COe7.js} +1 -1
  12. package/dist/chunks/{LpCard-Ce3rw8zm.js → LpCard-BoB-UqzE.js} +1 -1
  13. package/dist/chunks/{LpCheckbox-DLX4amba.js → LpCheckbox-B6lfW2GC.js} +1 -1
  14. package/dist/chunks/{LpCodeBlock-j0W5bpmF.js → LpCodeBlock-BjptdRIt.js} +1 -1
  15. package/dist/chunks/{LpCodeDisplay-COdiv4xu.js → LpCodeDisplay-BkVeLcLM.js} +4 -4
  16. package/dist/chunks/{LpConfirmDialog-w1ni5nxh.js → LpConfirmDialog-DqsrdJSK.js} +1 -1
  17. package/dist/chunks/{LpConfirmHost-Br_-Gn-6.js → LpConfirmHost-BT8iDrWb.js} +1 -1
  18. package/dist/chunks/{LpCopyButton-DaD1KCn6.js → LpCopyButton-DhptBlXE.js} +1 -1
  19. package/dist/chunks/{LpCountdown-Cgy0mVEq.js → LpCountdown-9QnxUFXk.js} +1 -1
  20. package/dist/chunks/{LpDataList-CkcGFJgv.js → LpDataList-_D19wjXa.js} +1 -1
  21. package/dist/chunks/{LpEditable-D3PvD6Zm.js → LpEditable-BdjKjOMG.js} +2 -2
  22. package/dist/chunks/{LpFileTree-D7KTaJiM.js → LpFileTree-Cnw35H2X.js} +1 -1
  23. package/dist/chunks/{LpFileTreeNode-14GVqQTd.js → LpFileTreeNode-DR3YPYFb.js} +3 -3
  24. package/dist/chunks/{LpFormField-MSQhRCTz.js → LpFormField-CjnOXjFq.js} +1 -1
  25. package/dist/chunks/{LpHintLayer-CmYm37z7.js → LpHintLayer-DWWn7Xm2.js} +2 -2
  26. package/dist/chunks/{LpHints-iLIRUkCj.js → LpHints-Ctl4p_tS.js} +3 -3
  27. package/dist/chunks/{LpInfraNode-BT0VQrOa.js → LpInfraNode-CZrDvfnL.js} +2 -2
  28. package/dist/chunks/{LpInput-1eNvtzXs.js → LpInput-D9uwTIqP.js} +1 -1
  29. package/dist/chunks/{LpLightbox-DWw6OSA4.js → LpLightbox-DlNPihiz.js} +2 -2
  30. package/dist/chunks/{LpLoader-B82_CcV0.js → LpLoader-DBVl6KDH.js} +1 -1
  31. package/dist/chunks/{LpLogViewer-pzanZASC.js → LpLogViewer-By_fmDpN.js} +3 -3
  32. package/dist/chunks/{LpMapPicker-DNIUvF6V.js → LpMapPicker-CmuOTS7N.js} +1 -1
  33. package/dist/chunks/{LpMediaGallery-Dx8xzg5N.js → LpMediaGallery-Dh5ONZt1.js} +1 -1
  34. package/dist/chunks/{LpModalNav-Cu04W1pV.js → LpModalNav-CThPOPAF.js} +2 -2
  35. package/dist/chunks/{LpNotificationBell-PSQqFqEv.js → LpNotificationBell-674IgUph.js} +3 -3
  36. package/dist/chunks/{LpPaletteTheme-D05ywM1W.js → LpPaletteTheme-hsYXczIM.js} +3 -3
  37. package/dist/chunks/{LpPasswordInput-vdcw-koG.js → LpPasswordInput-DNCvyY6N.js} +2 -2
  38. package/dist/chunks/{LpPie-BlWDxCtG.js → LpPie-DCpGXbRS.js} +2 -2
  39. package/dist/chunks/{LpPipeline-BXjoxkq_.js → LpPipeline-wh1SzEHF.js} +2 -2
  40. package/dist/chunks/{LpRepeater-fliVBcN7.js → LpRepeater-BnOQXjWo.js} +2 -2
  41. package/dist/chunks/{LpScramble-Cw-af0Yh.js → LpScramble-INTKwGsY.js} +1 -1
  42. package/dist/chunks/{LpSecretField-D_IMxEGW.js → LpSecretField-Ck0Mx6xx.js} +6 -6
  43. package/dist/chunks/{LpShift-BAp8lGoa.js → LpShift-DLU4_TFf.js} +17 -7
  44. package/dist/chunks/{LpSidebar-BftYsk5d.js → LpSidebar-DVPinvaL.js} +2 -2
  45. package/dist/chunks/{LpSidebarNav-BzNWMZfc.js → LpSidebarNav-BBj2_6jV.js} +14 -4
  46. package/dist/chunks/{LpSidebarRow-BIReMT1f.js → LpSidebarRow-C81reNEm.js} +5 -3
  47. package/dist/chunks/{LpStat-BFCM6fUn.js → LpStat-tq-f6ZzL.js} +1 -1
  48. package/dist/chunks/{LpStatus-BWTLVPVh.js → LpStatus-Chbh_JJr.js} +2 -2
  49. package/dist/chunks/{LpStepMark-DkdkebLC.js → LpStepMark-C064WOYG.js} +1 -1
  50. package/dist/chunks/{LpStepper-BgqjKrqg.js → LpStepper-B15etK5F.js} +1 -1
  51. package/dist/chunks/{LpSwap-B5YOXgtx.js → LpSwap-BA5fh77B.js} +1 -1
  52. package/dist/chunks/{LpSwitch-DyrRes7s.js → LpSwitch-ByaxQKEm.js} +1 -1
  53. package/dist/chunks/{LpTabFace-D6BMCbAP.js → LpTabFace-Dcj2cO6x.js} +1 -1
  54. package/dist/chunks/{LpTableFilter-Dkzamzkl.js → LpTableFilter-CT8Xml_m.js} +3 -3
  55. package/dist/chunks/{LpTagsInput-DAZNNehI.js → LpTagsInput-CSv62X4B.js} +2 -2
  56. package/dist/chunks/{LpTextarea-DbmVPj2X.js → LpTextarea-Blv8qdz0.js} +1 -1
  57. package/dist/chunks/{LpThemeStudio-DWtG6OZZ.js → LpThemeStudio-DYQP_qbp.js} +2 -2
  58. package/dist/chunks/{LpThemeSwitcher-Dcx-VkSk.js → LpThemeSwitcher-BGIVrM1l.js} +2 -2
  59. package/dist/chunks/{LpToaster-50hp_B5O.js → LpToaster-D5Pj_wc9.js} +1 -1
  60. package/dist/chunks/{LpTopologyCanvas-CnUh8uzS.js → LpTopologyCanvas-Bq-k5tgI.js} +1 -1
  61. package/dist/chunks/{LpTour-DC3LTlxg.js → LpTour-BU4JX3RU.js} +1 -1
  62. package/dist/chunks/{LpTruncate-Ced4gquB.js → LpTruncate-Cb7MDTD7.js} +1 -1
  63. package/dist/chunks/{LpUptimeBar-CuB0LX8K.js → LpUptimeBar-Cdq76qi_.js} +2 -2
  64. package/dist/chunks/{RevealToggle-B0ITuIX-.js → RevealToggle-DhL7mi-3.js} +1 -1
  65. package/dist/chunks/{TourCard-CBkj1GYi.js → TourCard-Dvo_vH_P.js} +3 -3
  66. package/dist/components/DropzoneLinkField.vue.js +1 -1
  67. package/dist/components/FieldWrapper.vue.js +1 -1
  68. package/dist/components/LpActionBar.vue.js +1 -1
  69. package/dist/components/LpAddressInput.vue.js +1 -1
  70. package/dist/components/LpAlert.vue.js +1 -1
  71. package/dist/components/LpAppShell.vue.js +1 -1
  72. package/dist/components/LpBadge.vue.js +1 -1
  73. package/dist/components/LpBottomNav.vue.js +1 -1
  74. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  75. package/dist/components/LpButton.vue.js +1 -1
  76. package/dist/components/LpCard.vue.js +1 -1
  77. package/dist/components/LpChart.vue.js +2 -2
  78. package/dist/components/LpCheckbox.vue.js +1 -1
  79. package/dist/components/LpCodeBlock.vue.js +1 -1
  80. package/dist/components/LpCodeDisplay.vue.js +1 -1
  81. package/dist/components/LpCommandPalette.vue.js +2 -2
  82. package/dist/components/LpConfirmDialog.vue.js +1 -1
  83. package/dist/components/LpConfirmHost.vue.js +1 -1
  84. package/dist/components/LpCopyButton.vue.js +1 -1
  85. package/dist/components/LpCountdown.vue.js +1 -1
  86. package/dist/components/LpDataList.vue.js +1 -1
  87. package/dist/components/LpDropzone.vue.js +1 -1
  88. package/dist/components/LpEditable.vue.js +1 -1
  89. package/dist/components/LpFileTree.vue.js +1 -1
  90. package/dist/components/LpFileTreeNode.vue.js +1 -1
  91. package/dist/components/LpFormField.vue.js +1 -1
  92. package/dist/components/LpHintLayer.vue.js +1 -1
  93. package/dist/components/LpHints.vue.js +1 -1
  94. package/dist/components/LpImageEditor.vue.js +2 -2
  95. package/dist/components/LpInfraNode.vue.js +1 -1
  96. package/dist/components/LpInput.vue.js +1 -1
  97. package/dist/components/LpKeys.vue.js +13 -10
  98. package/dist/components/LpLightbox.vue.js +1 -1
  99. package/dist/components/LpLoader.vue.js +1 -1
  100. package/dist/components/LpLogViewer.vue.js +1 -1
  101. package/dist/components/LpMapPicker.vue.js +1 -1
  102. package/dist/components/LpMediaGallery.vue.js +1 -1
  103. package/dist/components/LpModalNav.vue.js +1 -1
  104. package/dist/components/LpNotificationBell.vue.js +1 -1
  105. package/dist/components/LpPaletteTheme.vue.js +1 -1
  106. package/dist/components/LpPasswordInput.vue.js +1 -1
  107. package/dist/components/LpPie.vue.js +1 -1
  108. package/dist/components/LpPipeline.vue.js +1 -1
  109. package/dist/components/LpRepeater.vue.js +1 -1
  110. package/dist/components/LpScramble.vue.js +1 -1
  111. package/dist/components/LpSecretField.vue.js +1 -1
  112. package/dist/components/LpShift.vue.js +1 -1
  113. package/dist/components/LpSidebar.vue.js +1 -1
  114. package/dist/components/LpSidebarNav.vue.d.ts +1 -1
  115. package/dist/components/LpSidebarNav.vue.js +1 -1
  116. package/dist/components/LpSidebarRow.vue.d.ts +1 -1
  117. package/dist/components/LpSidebarRow.vue.js +1 -1
  118. package/dist/components/LpStat.vue.js +1 -1
  119. package/dist/components/LpStatus.vue.js +1 -1
  120. package/dist/components/LpStepMark.vue.js +1 -1
  121. package/dist/components/LpStepper.vue.js +1 -1
  122. package/dist/components/LpSwap.vue.js +1 -1
  123. package/dist/components/LpSwitch.vue.js +1 -1
  124. package/dist/components/LpTabFace.vue.js +1 -1
  125. package/dist/components/LpTable.vue.js +6 -6
  126. package/dist/components/LpTableFilter.vue.js +1 -1
  127. package/dist/components/LpTabs.vue.js +1 -1
  128. package/dist/components/LpTagsInput.vue.js +1 -1
  129. package/dist/components/LpTextarea.vue.js +1 -1
  130. package/dist/components/LpThemeStudio.vue.js +1 -1
  131. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  132. package/dist/components/LpToaster.vue.js +1 -1
  133. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  134. package/dist/components/LpTour.vue.js +1 -1
  135. package/dist/components/LpTruncate.vue.js +1 -1
  136. package/dist/components/LpUptimeBar.vue.js +1 -1
  137. package/dist/components/RevealToggle.vue.js +1 -1
  138. package/dist/components/TourCard.vue.js +1 -1
  139. package/dist/components/sidebar.d.ts +5 -0
  140. package/dist/components/sidebar.js +6 -1
  141. package/dist/index.js +55 -55
  142. package/package.json +1 -1
  143. package/src/components/LpKeys.vue +10 -1
  144. package/src/components/LpShift.vue +24 -8
  145. package/src/components/LpSidebarNav.vue +12 -2
  146. package/src/components/LpSidebarRow.vue +7 -3
  147. package/src/components/sidebar.ts +8 -0
package/dist/index.js CHANGED
@@ -1,22 +1,22 @@
1
1
  import { _ } from "./chunks/LayoutCanvas-CNOAUk7D.js";
2
- import { _ as _2 } from "./chunks/LpAddressInput-B1bB3F6M.js";
3
- import { _ as _3 } from "./chunks/LpMapPicker-DNIUvF6V.js";
2
+ import { _ as _2 } from "./chunks/LpAddressInput-q8Vu3M8z.js";
3
+ import { _ as _3 } from "./chunks/LpMapPicker-CmuOTS7N.js";
4
4
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
5
- import { _ as _4 } from "./chunks/LpActionBar-DfiBL1dE.js";
6
- import { _ as _5 } from "./chunks/LpAlert-CpRF9eYr.js";
7
- import { _ as _6 } from "./chunks/LpAppShell-D8Q0Jv9d.js";
5
+ import { _ as _4 } from "./chunks/LpActionBar-DZP0IpXS.js";
6
+ import { _ as _5 } from "./chunks/LpAlert-CGeYc3fe.js";
7
+ import { _ as _6 } from "./chunks/LpAppShell-oB-QWu74.js";
8
8
  import { _ as _7 } from "./chunks/LpAutocomplete-DOu7FN5P.js";
9
9
  import { _ as _8 } from "./chunks/LpAvatar-Cg6Az3wz.js";
10
- import { _ as _9 } from "./chunks/LpBadge-vtCpsDmv.js";
11
- import { _ as _10 } from "./chunks/LpBreadcrumbs-BdzjQcql.js";
12
- import { _ as _11 } from "./chunks/LpButton-Dk7eT4ro.js";
10
+ import { _ as _9 } from "./chunks/LpBadge-BVDOfrqI.js";
11
+ import { _ as _10 } from "./chunks/LpBreadcrumbs-DJvcYVPM.js";
12
+ import { _ as _11 } from "./chunks/LpButton-Cse4COe7.js";
13
13
  import { _ as _12 } from "./chunks/LpCalendar-CuoWks-0.js";
14
- import { _ as _13 } from "./chunks/LpCard-Ce3rw8zm.js";
14
+ import { _ as _13 } from "./chunks/LpCard-BoB-UqzE.js";
15
15
  import { default as default2 } from "./components/LpChart.vue.js";
16
16
  import { backgroundOf, csvField, downloadFile, fileStem, inlineSvg, resolveCssColor, svgToPng, toCsv } from "./components/exportData.js";
17
17
  import { CHART_PALETTE, axisTicks, chartSummary, formatTick, markerIndex, niceScale, resolveSlices } from "./components/chart.js";
18
- import { _ as _14 } from "./chunks/LpCheckbox-DLX4amba.js";
19
- import { _ as _15 } from "./chunks/LpCodeBlock-j0W5bpmF.js";
18
+ import { _ as _14 } from "./chunks/LpCheckbox-B6lfW2GC.js";
19
+ import { _ as _15 } from "./chunks/LpCodeBlock-BjptdRIt.js";
20
20
  import { tokenizeLines } from "./components/codeHighlight.js";
21
21
  import { _ as _16 } from "./chunks/LpColorPicker-1y1QJHZR.js";
22
22
  import { DEFAULT_SWATCHES, clampHsv, formatColor, hsvToHsl, hsvToRgb, isLight, normalizeHue, opaqueCss, parseColor, parseHex, rgbToHex, rgbToHsv } from "./components/color.js";
@@ -30,8 +30,8 @@ import { default as default6 } from "./components/LpPaletteStats.vue.js";
30
30
  import { default as default7 } from "./components/LpPaletteSwatches.vue.js";
31
31
  import { default as default8 } from "./components/LpKeys.vue.js";
32
32
  import { comboKeys, comboSteps } from "./components/keys.js";
33
- import { _ as _18 } from "./chunks/LpConfirmDialog-w1ni5nxh.js";
34
- import { _ as _19 } from "./chunks/LpConfirmHost-Br_-Gn-6.js";
33
+ import { _ as _18 } from "./chunks/LpConfirmDialog-DqsrdJSK.js";
34
+ import { _ as _19 } from "./chunks/LpConfirmHost-BT8iDrWb.js";
35
35
  import { confirm, useConfirm } from "./components/confirm.js";
36
36
  import { _ as _20 } from "./chunks/LpContextMenu-rx2tCjwk.js";
37
37
  import { _ as _21 } from "./chunks/LpDatePicker-CA0QTfBC.js";
@@ -44,31 +44,31 @@ import { _ as _26 } from "./chunks/LpDrawer-RRamxbLV.js";
44
44
  import { _ as _27 } from "./chunks/LpDropdownMenu-Dl7Z4ZhS.js";
45
45
  import { default as default9 } from "./components/LpDropzone.vue.js";
46
46
  import { _ as _28 } from "./chunks/LpEmptyState-EQHiRYhG.js";
47
- import { _ as _29 } from "./chunks/LpFileTree-D7KTaJiM.js";
47
+ import { _ as _29 } from "./chunks/LpFileTree-Cnw35H2X.js";
48
48
  import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
49
49
  import { _ as _30 } from "./chunks/LpFieldNotice-CzQ2_5rQ.js";
50
- import { _ as _31 } from "./chunks/LpFormField-MSQhRCTz.js";
50
+ import { _ as _31 } from "./chunks/LpFormField-CjnOXjFq.js";
51
51
  import { _ as _32 } from "./chunks/LpIcon--5WSb3jJ.js";
52
52
  import { i, b, a, c } from "./chunks/icons-DMITlfw5.js";
53
53
  import { default as default10 } from "./components/LpImageEditor.vue.js";
54
- import { _ as _33 } from "./chunks/LpInfraNode-BT0VQrOa.js";
55
- import { _ as _34 } from "./chunks/LpInput-1eNvtzXs.js";
56
- import { _ as _35 } from "./chunks/LpLightbox-DWw6OSA4.js";
54
+ import { _ as _33 } from "./chunks/LpInfraNode-CZrDvfnL.js";
55
+ import { _ as _34 } from "./chunks/LpInput-D9uwTIqP.js";
56
+ import { _ as _35 } from "./chunks/LpLightbox-DlNPihiz.js";
57
57
  import { fileNameOf } from "./components/lightbox.js";
58
58
  import { _ as _36 } from "./chunks/LpLink-Krkjhe_y.js";
59
- import { _ as _37 } from "./chunks/LpLogViewer-pzanZASC.js";
59
+ import { _ as _37 } from "./chunks/LpLogViewer-By_fmDpN.js";
60
60
  import { countLevels, matchPositions, matchesTerm, ringWindow, stepMatch } from "./components/logSearch.js";
61
- import { _ as _38 } from "./chunks/LpMediaGallery-Dx8xzg5N.js";
61
+ import { _ as _38 } from "./chunks/LpMediaGallery-Dh5ONZt1.js";
62
62
  import { _ as _39 } from "./chunks/LpModal-BnjZ2iem.js";
63
- import { _ as _40 } from "./chunks/LpModalNav-Cu04W1pV.js";
64
- import { _ as _41 } from "./chunks/LpNotificationBell-PSQqFqEv.js";
63
+ import { _ as _40 } from "./chunks/LpModalNav-CThPOPAF.js";
64
+ import { _ as _41 } from "./chunks/LpNotificationBell-674IgUph.js";
65
65
  import { _ as _42 } from "./chunks/LpNumberField-e0IBkWU1.js";
66
66
  import { _ as _43 } from "./chunks/LpTimeField-BawSVsmt.js";
67
67
  import { _ as _44 } from "./chunks/LpNumberFlow-CcxEGUy0.js";
68
68
  import { _ as _45 } from "./chunks/LpOtpInput-CeBPsM7D.js";
69
69
  import { _ as _46 } from "./chunks/LpPagination-BIIiYHXR.js";
70
- import { _ as _47 } from "./chunks/LpPasswordInput-vdcw-koG.js";
71
- import { _ as _48 } from "./chunks/LpPie-BlWDxCtG.js";
70
+ import { _ as _47 } from "./chunks/LpPasswordInput-DNCvyY6N.js";
71
+ import { _ as _48 } from "./chunks/LpPie-DCpGXbRS.js";
72
72
  import { _ as _49 } from "./chunks/LpPhoneInput-CETEp5W7.js";
73
73
  import { filterCountries, flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
74
74
  import { _ as _50 } from "./chunks/LpPopover-DmZ3wUtP.js";
@@ -82,41 +82,41 @@ import { _ as _57 } from "./chunks/LpSection-DFK_uoJE.js";
82
82
  import { _ as _58 } from "./chunks/LpSelect-Cxq4yBGd.js";
83
83
  import { fitChips, toggledValues } from "./components/select.js";
84
84
  import { _ as _59 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
85
- import { _ as _60 } from "./chunks/LpShift-BAp8lGoa.js";
86
- import { _ as _61 } from "./chunks/LpSwap-B5YOXgtx.js";
85
+ import { _ as _60 } from "./chunks/LpShift-DLU4_TFf.js";
86
+ import { _ as _61 } from "./chunks/LpSwap-BA5fh77B.js";
87
87
  import { _ as _62 } from "./chunks/LpHintExample-9Py0wc-L.js";
88
88
  import { default as default11 } from "./components/LpShortcutsDialog.vue.js";
89
- import { _ as _63 } from "./chunks/LpSidebar-BftYsk5d.js";
89
+ import { _ as _63 } from "./chunks/LpSidebar-DVPinvaL.js";
90
90
  import { _ as _64 } from "./chunks/LpSkeleton-BB6XIV-w.js";
91
91
  import { _ as _65 } from "./chunks/LpSlider-DxYoCJJO.js";
92
92
  import { _ as _66 } from "./chunks/LpRangeSlider-CM-0ZITZ.js";
93
93
  import { _ as _67 } from "./chunks/LpVideoBackdrop-DS1wGv-X.js";
94
94
  import { formatClipTime, isNativeLoop, planLoop, seamProgress, seamReached } from "./components/videoBackdrop.js";
95
95
  import { _ as _68 } from "./chunks/LpSparkline-CExIRDb3.js";
96
- import { _ as _69 } from "./chunks/LpStat-BFCM6fUn.js";
97
- import { _ as _70 } from "./chunks/LpStepper-BgqjKrqg.js";
98
- import { _ as _71 } from "./chunks/LpSwitch-DyrRes7s.js";
96
+ import { _ as _69 } from "./chunks/LpStat-tq-f6ZzL.js";
97
+ import { _ as _70 } from "./chunks/LpStepper-B15etK5F.js";
98
+ import { _ as _71 } from "./chunks/LpSwitch-ByaxQKEm.js";
99
99
  import { default as default12 } from "./components/LpTable.vue.js";
100
100
  import { compareValues } from "./components/tableSort.js";
101
101
  import { resolveRowMenu } from "./components/tableRowMenu.js";
102
102
  import { _ as _72 } from "./chunks/LpTableOfContents-CraicEs4.js";
103
103
  import { default as default13 } from "./components/LpTabs.vue.js";
104
- import { _ as _73 } from "./chunks/LpBottomNav-VXJf0cKc.js";
105
- import { _ as _74 } from "./chunks/LpTagsInput-DAZNNehI.js";
104
+ import { _ as _73 } from "./chunks/LpBottomNav-w_5LKno0.js";
105
+ import { _ as _74 } from "./chunks/LpTagsInput-CSv62X4B.js";
106
106
  import { addTags, splitTags } from "./components/tags.js";
107
- import { _ as _75 } from "./chunks/LpTextarea-DbmVPj2X.js";
108
- import { _ as _76 } from "./chunks/LpThemeSwitcher-Dcx-VkSk.js";
107
+ import { _ as _75 } from "./chunks/LpTextarea-Blv8qdz0.js";
108
+ import { _ as _76 } from "./chunks/LpThemeSwitcher-BGIVrM1l.js";
109
109
  import { _ as _77 } from "./chunks/LpTilt-B7KHX1zH.js";
110
- import { _ as _78 } from "./chunks/LpToaster-50hp_B5O.js";
110
+ import { _ as _78 } from "./chunks/LpToaster-D5Pj_wc9.js";
111
111
  import { _ as _79 } from "./chunks/LpTooltip-BcBvIx4z.js";
112
- import { _ as _80 } from "./chunks/LpTour-DC3LTlxg.js";
112
+ import { _ as _80 } from "./chunks/LpTour-BU4JX3RU.js";
113
113
  import { holeOf, openContextMenu, panelsAround } from "./components/tour.js";
114
- import { _ as _81 } from "./chunks/LpHintLayer-CmYm37z7.js";
115
- import { _ as _82 } from "./chunks/LpHints-iLIRUkCj.js";
114
+ import { _ as _81 } from "./chunks/LpHintLayer-DWWn7Xm2.js";
115
+ import { _ as _82 } from "./chunks/LpHints-Ctl4p_tS.js";
116
116
  import { HINT_SIGNALS, contextMenuTip, createHintSystem, dropzoneTip, hintKey, hintSummary, hotkeyTip, localHintStorage, noteDropzone, noteHotkeyTarget, paletteTip, provideHintSystem, runningHintSystem, useHintSystem } from "./composables/useHintSystem.js";
117
117
  import { _ as _83 } from "./chunks/LpTooltipProvider-CftjV7Xc.js";
118
- import { _ as _84 } from "./chunks/LpTopologyCanvas-CnUh8uzS.js";
119
- import { _ as _85 } from "./chunks/LpUptimeBar-CuB0LX8K.js";
118
+ import { _ as _84 } from "./chunks/LpTopologyCanvas-Bq-k5tgI.js";
119
+ import { _ as _85 } from "./chunks/LpUptimeBar-Cdq76qi_.js";
120
120
  import { deserializeLayout, serializeLayout } from "./layout/tree.js";
121
121
  import { addLeaf, addTab, countBlocks, countLeaves, makeLayout, moveLeaf, removeBlock, removeLeaf, reorderTab, resizeAt, setActiveTab } from "./layout/tree.js";
122
122
  import { blockTitle, defineBlocks } from "./layout/registry.js";
@@ -124,7 +124,7 @@ import { layoutController, useLayout } from "./layout/useLayout.js";
124
124
  import { a as parseTheme, s as serializeTheme } from "./chunks/LpThemeProvider-8MG6yqU9.js";
125
125
  import { D, _ as _86, T, b as b2, c as c2, d, e, f, g, l, h, n, i as i2, j, p, r, k, t, m, o, q, u, v } from "./chunks/LpThemeProvider-8MG6yqU9.js";
126
126
  import { G, N, d as d2, i as i3, s } from "./chunks/backdrop-Dkf2vM81.js";
127
- import { _ as _87, a as a2, b as b3, c as c3, d as d3, S, e as e2, u as u2, w } from "./chunks/LpThemeStudio-DWtG6OZZ.js";
127
+ import { _ as _87, a as a2, b as b3, c as c3, d as d3, S, e as e2, u as u2, w } from "./chunks/LpThemeStudio-DYQP_qbp.js";
128
128
  import { useClipboard } from "./composables/useClipboard.js";
129
129
  import { activeShortcuts, appleModifierLabel, findHotkeyConflicts, hotkeyConflicts, hotkeySteps, isAppleKeyboard, matchesHotkey, mergeShortcutGroups, parseCombo, pendingHotkey, sequenceProgress, useAppleKeyboard, useHotkeys } from "./composables/useHotkeys.js";
130
130
  import { anyModalOpen, topModalElement, useModalLayer } from "./components/modalDepth.js";
@@ -163,10 +163,10 @@ import { useToast } from "./composables/useToast.js";
163
163
  import { _ as _88 } from "./chunks/LpFrame-BVQCQLDI.js";
164
164
  import { _ as _89 } from "./chunks/LpThemeStudioSection-B7bt8Iyg.js";
165
165
  import { isInternalHref, resolveLink } from "./components/link.js";
166
- import { _ as _90 } from "./chunks/LpRepeater-fliVBcN7.js";
166
+ import { _ as _90 } from "./chunks/LpRepeater-BnOQXjWo.js";
167
167
  import { _ as _91 } from "./chunks/LpGauge-BO1PYYqD.js";
168
168
  import { _ as _92 } from "./chunks/LpQuota-B12yijdB.js";
169
- import { _ as _93 } from "./chunks/LpStatus-BWTLVPVh.js";
169
+ import { _ as _93 } from "./chunks/LpStatus-Chbh_JJr.js";
170
170
  import { _ as _94 } from "./chunks/LpRelativeTime-DwgCb5-8.js";
171
171
  import { _ as _95 } from "./chunks/LpActivityLine-CJvzrNpj.js";
172
172
  import { TONE_COLOR, TONE_SOFT, arcPath, capacityThresholds, meterFraction, toneAt } from "./components/meter.js";
@@ -175,20 +175,20 @@ import { formatAmount, quotaSegments, quotaState } from "./components/quota.js";
175
175
  import { compactNumber, decimalMark, formatBytes } from "./components/format.js";
176
176
  import { STATUS_LABELS, STATUS_LOOK } from "./components/status.js";
177
177
  import { formatRelativeTime } from "./components/relativeTime.js";
178
- import { _ as _96 } from "./chunks/LpPipeline-BXjoxkq_.js";
179
- import { _ as _97 } from "./chunks/LpStepMark-DkdkebLC.js";
178
+ import { _ as _96 } from "./chunks/LpPipeline-wh1SzEHF.js";
179
+ import { _ as _97 } from "./chunks/LpStepMark-C064WOYG.js";
180
180
  import { childProgress, connectorFilled, currentStepIndex, isSettled, overallStatus, stepElapsed } from "./components/pipeline.js";
181
- import { _ as _98 } from "./chunks/LpLoader-B82_CcV0.js";
181
+ import { _ as _98 } from "./chunks/LpLoader-DBVl6KDH.js";
182
182
  import { useLoadingGate } from "./composables/useLoadingGate.js";
183
183
  import { useNow } from "./composables/useNow.js";
184
- import { _ as _99 } from "./chunks/LpCountdown-Cgy0mVEq.js";
184
+ import { _ as _99 } from "./chunks/LpCountdown-9QnxUFXk.js";
185
185
  import { DEFAULT_MILESTONES, DEFAULT_UNIT_LABELS, ceilToSecond, crossedMilestone, formatElapsed, formatTime, msToNextSecond, splitTime, timeParts } from "./components/timeSpan.js";
186
- import { _ as _100 } from "./chunks/LpCopyButton-DaD1KCn6.js";
187
- import { _ as _101 } from "./chunks/LpSecretField-D_IMxEGW.js";
188
- import { _ as _102 } from "./chunks/LpDataList-CkcGFJgv.js";
189
- import { _ as _103 } from "./chunks/LpEditable-D3PvD6Zm.js";
190
- import { _ as _104 } from "./chunks/LpTruncate-Ced4gquB.js";
191
- import { _ as _105 } from "./chunks/LpCodeDisplay-COdiv4xu.js";
186
+ import { _ as _100 } from "./chunks/LpCopyButton-DhptBlXE.js";
187
+ import { _ as _101 } from "./chunks/LpSecretField-Ck0Mx6xx.js";
188
+ import { _ as _102 } from "./chunks/LpDataList-_D19wjXa.js";
189
+ import { _ as _103 } from "./chunks/LpEditable-BdjKjOMG.js";
190
+ import { _ as _104 } from "./chunks/LpTruncate-Cb7MDTD7.js";
191
+ import { _ as _105 } from "./chunks/LpCodeDisplay-BkVeLcLM.js";
192
192
  import { formatRemaining, groupCode, middleTruncate, normalizeCode } from "./components/fieldText.js";
193
193
  import { _ as _106 } from "./chunks/LpHoverCard-spGxyw7T.js";
194
194
  import { _ as _107 } from "./chunks/LpIdenticon-BzdC_qz9.js";
@@ -200,7 +200,7 @@ import { pseudoLocalize } from "./composables/pseudoLocale.js";
200
200
  import { _ as _110 } from "./chunks/LpTextReveal-CtAnOUkp.js";
201
201
  import { _ as _111 } from "./chunks/LpShinyText-DX2ajtWq.js";
202
202
  import { _ as _112 } from "./chunks/LpTypewriter-BCL_a6wE.js";
203
- import { _ as _113 } from "./chunks/LpScramble-Cw-af0Yh.js";
203
+ import { _ as _113 } from "./chunks/LpScramble-INTKwGsY.js";
204
204
  import { useScramble } from "./composables/useScramble.js";
205
205
  import { useInView } from "./composables/useInView.js";
206
206
  import { SCRAMBLE_GLYPHS, graphemes, planScramble, randomGlyph, scrambleFrame, seededRandom, settledCells } from "./components/scramble.js";
@@ -217,7 +217,7 @@ import { spotlightPoint, useSpotlight } from "./composables/useSpotlight.js";
217
217
  import { _ as _119 } from "./chunks/LpCommandScope-BlKcgBnK.js";
218
218
  import { createPaletteRegistry, mergePaletteCommands, usePaletteCommands, vPalette } from "./composables/usePaletteCommands.js";
219
219
  import { u as u3 } from "./chunks/palette-Cvxl_1tM.js";
220
- import { _ as _120 } from "./chunks/LpPaletteTheme-D05ywM1W.js";
220
+ import { _ as _120 } from "./chunks/LpPaletteTheme-hsYXczIM.js";
221
221
  const UI_CONFIG_VERSION = 1;
222
222
  function serializeConfig(config) {
223
223
  const out = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.72.0",
3
+ "version": "0.72.2",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -34,7 +34,11 @@ const steps = computed(() => (Array.isArray(props.combo) ? [props.combo] : combo
34
34
  <span class="lp-keys" :class="`lp-keys--${size}`">
35
35
  <template v-for="(step, stepIndex) in steps" :key="stepIndex">
36
36
  <span v-if="stepIndex" class="lp-keys__then">{{ text.then }}</span>
37
- <kbd v-for="(key, index) in step" :key="`${key}-${index}`">{{ appleModifierLabel(key.trim(), apple) }}</kbd>
37
+ <!-- A chord never splits: squeezed, the keys wrap between steps, not
38
+ between Ctrl and K. -->
39
+ <span class="lp-keys__step">
40
+ <kbd v-for="(key, index) in step" :key="`${key}-${index}`">{{ appleModifierLabel(key.trim(), apple) }}</kbd>
41
+ </span>
38
42
  </template>
39
43
  <span v-if="label || $slots.default" class="lp-keys__label"><slot>{{ label }}</slot></span>
40
44
  </span>
@@ -48,6 +52,11 @@ const steps = computed(() => (Array.isArray(props.combo) ? [props.combo] : combo
48
52
  gap: 3px;
49
53
  color: var(--color-muted);
50
54
  }
55
+ .lp-keys__step {
56
+ display: inline-flex;
57
+ align-items: center;
58
+ gap: 3px;
59
+ }
51
60
  .lp-keys__then {
52
61
  padding: 0 2px;
53
62
  font-size: 0.68rem;
@@ -101,8 +101,6 @@ const EASE = "cubic-bezier(0.2, 0, 0, 1)"
101
101
  const GHOST = "data-lp-shift-ghost"
102
102
 
103
103
  interface Seen {
104
- from: number
105
- top: number
106
104
  width: number
107
105
  height: number
108
106
  x: number
@@ -124,12 +122,9 @@ function elementsOf(box: HTMLElement): Element[] {
124
122
  }
125
123
 
126
124
  function remember(box: HTMLElement) {
127
- const outer = box.getBoundingClientRect()
128
125
  for (const node of elementsOf(box)) {
129
126
  const r = node.getBoundingClientRect()
130
127
  seen.set(node, {
131
- from: props.anchor === "end" ? outer.right - r.right : r.left - outer.left,
132
- top: r.top - outer.top,
133
128
  width: r.width,
134
129
  height: r.height,
135
130
  x: r.left,
@@ -149,14 +144,21 @@ function ghost(box: HTMLElement, node: Element) {
149
144
  copy.inert = true
150
145
  Object.assign(copy.style, {
151
146
  position: "absolute",
152
- top: `${at.top}px`,
153
- [props.anchor === "end" ? "right" : "left"]: `${at.from}px`,
147
+ left: "0px",
148
+ top: "0px",
154
149
  width: `${at.width}px`,
155
150
  height: `${at.height}px`,
156
151
  margin: "0",
157
152
  pointerEvents: "none",
158
153
  })
159
154
  box.appendChild(copy)
155
+ // The box is not made a positioning context (content inside it may centre
156
+ // itself against an ancestor further out), so the clone is placed against
157
+ // whatever it is positioned from: put at that origin, measured, and moved
158
+ // by the difference to where the element was last seen.
159
+ const origin = copy.getBoundingClientRect()
160
+ copy.style.left = `${at.x - origin.left}px`
161
+ copy.style.top = `${at.y - origin.top}px`
160
162
  copy
161
163
  .animate(
162
164
  [
@@ -231,6 +233,17 @@ watch(
231
233
  { flush: "post" },
232
234
  )
233
235
 
236
+ // A child that changed inside itself (a label rolling to a longer word) moves
237
+ // its neighbours without any child coming or going: when the box starts to
238
+ // resize, every child glides from where it was last seen.
239
+ watch(resizing, (now) => {
240
+ const box = el.value
241
+ if (!now || !box || !presenceObserver || prefersReducedMotion()) return
242
+ requestAnimationFrame(() => {
243
+ for (const child of box.children) if (!child.hasAttribute(GHOST)) glide(child)
244
+ })
245
+ })
246
+
234
247
  onBeforeUnmount(() => {
235
248
  presenceObserver?.disconnect()
236
249
  presenceSize?.disconnect()
@@ -253,8 +266,11 @@ defineExpose({ resizing })
253
266
  ? `${transitionClass} duration-fast ease-[var(--ease-emphasized)] motion-reduce:transition-none`
254
267
  : '',
255
268
  resizing ? 'overflow-hidden' : '',
269
+ // While the box holds a width its content has outgrown, a flex row would
270
+ // squeeze its children to fit (a button's keys folding into a column)
271
+ // instead of letting the easing edge clip them.
272
+ resizing && axis !== 'height' ? '[&>*]:shrink-0' : '',
256
273
  resizing && anchor === 'end' ? 'justify-end' : '',
257
- presence ? 'relative' : '',
258
274
  ]"
259
275
  >
260
276
  <slot :resizing="resizing" />
@@ -20,7 +20,7 @@ import LpIcon from "./LpIcon.vue"
20
20
  import LpScrollArea from "./LpScrollArea.vue"
21
21
  import LpSkeleton from "./LpSkeleton.vue"
22
22
  import LpSidebarRow from "./LpSidebarRow.vue"
23
- import type { SidebarItem, SidebarSection } from "./sidebar"
23
+ import { waiting, type SidebarItem, type SidebarSection } from "./sidebar"
24
24
  import { useMergedAttrs } from "../composables/useMergedClass"
25
25
 
26
26
  const props = withDefaults(
@@ -196,7 +196,12 @@ function onKey(event: KeyboardEvent) {
196
196
  const SECTION = "lp-section:"
197
197
  function sectionItem(section: SidebarSection): SidebarItem {
198
198
  const icon = section.icon ?? section.items.find((i) => i.icon)?.icon
199
- return { id: `${SECTION}${sectionKey(section)}`, label: section.title ?? "", icon, children: section.items }
199
+ return {
200
+ id: `${SECTION}${sectionKey(section)}`,
201
+ label: section.title ?? "",
202
+ icon,
203
+ children: section.items,
204
+ }
200
205
  }
201
206
 
202
207
  function activate(item: SidebarItem) {
@@ -311,6 +316,11 @@ const { class: rootClass, attrs: rest } = useMergedAttrs(
311
316
  It is always rendered and merely fades, never removed: taking it
312
317
  out of the row changes the heading's height, and a heading that
313
318
  resizes under the cursor makes its own click feel like a misfire. -->
319
+ <span
320
+ v-if="section.items.some(waiting)"
321
+ class="size-1.5 shrink-0 rounded-full bg-brand transition-opacity duration-[var(--duration-fast)] motion-reduce:transition-none"
322
+ :class="isOpen(section) ? 'opacity-0' : 'opacity-100'"
323
+ />
314
324
  <LpBadge
315
325
  tone="neutral"
316
326
  class="shrink-0 transition-opacity duration-[var(--duration-fast)] motion-reduce:transition-none"
@@ -20,7 +20,7 @@ import LpHoverCard from "./LpHoverCard.vue"
20
20
  import LpIcon from "./LpIcon.vue"
21
21
  import LpKeys from "./LpKeys.vue"
22
22
  import LpNumberFlow from "./LpNumberFlow.vue"
23
- import type { SidebarItem } from "./sidebar"
23
+ import { waiting, type SidebarItem } from "./sidebar"
24
24
  import { resolveLink, type ResolvedLink } from "./link"
25
25
 
26
26
  const props = withDefaults(
@@ -92,7 +92,11 @@ const initials = computed(() =>
92
92
  .join(""),
93
93
  )
94
94
 
95
- const hasBadge = computed(() => props.item.badge != null || props.item.dot)
95
+ // Something waiting on a page under this row shows on the row while those pages
96
+ // are out of sight, folded away or behind a compact icon: otherwise closing a
97
+ // group would hide that anything is waiting in it.
98
+ const hidden = computed(() => (props.compact || !props.expanded) && !!props.item.children?.some(waiting))
99
+ const hasBadge = computed(() => props.item.badge != null || !!props.item.dot || hidden.value)
96
100
  const card = computed(() => !props.item.disabled && (props.compact || !!props.item.preview))
97
101
  const delay = computed(() => (props.compact && !props.item.preview ? 250 : props.previewDelay))
98
102
  </script>
@@ -172,7 +176,7 @@ const delay = computed(() => (props.compact && !props.item.preview ? 250 : props
172
176
  aria-hidden="true"
173
177
  class="pointer-events-none absolute right-2 z-10 rounded-small bg-surface-raised/90 opacity-0 transition-opacity duration-(--duration-fast) group-hover/item:opacity-100 group-focus-visible/item:opacity-100"
174
178
  />
175
- <span v-if="item.dot && item.badge == null" class="relative z-10 size-2 shrink-0 rounded-full bg-brand" />
179
+ <span v-if="hasBadge && item.badge == null" class="relative z-10 size-2 shrink-0 rounded-full bg-brand" />
176
180
  <LpBadge v-if="item.badge != null" :tone="active ? 'brand' : 'neutral'" class="relative z-10 shrink-0">
177
181
  <span v-if="bumped" class="absolute inset-0 animate-ping rounded-pill bg-brand/30" />
178
182
  <LpNumberFlow v-if="typeof item.badge === 'number'" :value="item.badge" grouped :locale="locale" :animate-on-mount="false" />
@@ -92,3 +92,11 @@ export interface SidebarSection {
92
92
  /** Icon for the heading — shown when the group is collapsible. */
93
93
  icon?: string
94
94
  }
95
+
96
+ /**
97
+ * Something on this page or a page under it is waiting: a count, news, a dot.
98
+ * A row or a group whose pages are out of sight shows it for them.
99
+ */
100
+ export function waiting(item: SidebarItem): boolean {
101
+ return item.badge != null || !!item.dot || !!item.children?.some(waiting)
102
+ }