@leavepulse/ui 0.87.1 → 0.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/assets/{LpCommandPalette-DCZB4EAf.css → LpCommandPalette-CO_5TFOQ.css} +38 -19
  2. package/dist/assets/{LpDropzone-CfL3Vrx4.css → LpDropzone-CVGUQqgY.css} +10 -10
  3. package/dist/assets/{LpImageEditor-y3B-aW3H.css → LpImageEditor-D_ECuegW.css} +6 -6
  4. package/dist/chunks/{ContextMenuItems-D0jObgzN.js → ContextMenuItems-LujPZSWM.js} +2 -1
  5. package/dist/chunks/{DropzoneLinkField-DhwYRnvd.js → DropzoneLinkField-Ckuh8zFC.js} +2 -2
  6. package/dist/chunks/{IconCloseButton-CmWOJAXG.js → IconCloseButton-C_V7qngw.js} +1 -1
  7. package/dist/chunks/{LpActionBar-Cx_MSZl9.js → LpActionBar-43WHmTsM.js} +1 -1
  8. package/dist/chunks/{LpAddressInput-CfqQR5jE.js → LpAddressInput-BCqR0zmv.js} +5 -5
  9. package/dist/chunks/{LpAlert-CYtbpRYW.js → LpAlert-Q0h7Gucu.js} +1 -1
  10. package/dist/chunks/{LpAppShell-BQG98odS.js → LpAppShell-BWaVRsDB.js} +3 -3
  11. package/dist/chunks/{LpAutocomplete-VNID5zdy.js → LpAutocomplete-YPxAPHEo.js} +5 -5
  12. package/dist/chunks/{LpButton-DSHioIfD.js → LpButton-BvVoF-PO.js} +1 -1
  13. package/dist/chunks/{LpCheckbox-P7tEw8GO.js → LpCheckbox-C9VnPIQf.js} +1 -1
  14. package/dist/chunks/{LpCodeBlock-BNThgUdQ.js → LpCodeBlock-BgWcg2mk.js} +3 -3
  15. package/dist/chunks/{LpCodeDisplay-DsiE-Qy9.js → LpCodeDisplay-DBi1YPLp.js} +3 -3
  16. package/dist/chunks/{LpColorPicker-EXpwcX-t.js → LpColorPicker-KGMG8QEh.js} +4 -4
  17. package/dist/chunks/{LpConfirmDialog-DPiPVRn_.js → LpConfirmDialog-y6k0ryWR.js} +2 -2
  18. package/dist/chunks/{LpConfirmHost-Ddiljlog.js → LpConfirmHost-D-X0tDym.js} +1 -1
  19. package/dist/chunks/{LpContextMenu-DYpDm6iI.js → LpContextMenu-DEFirphS.js} +3 -3
  20. package/dist/chunks/{LpContextSwitcher-BPDSkKyA.js → LpContextSwitcher-COw6GHPW.js} +1 -1
  21. package/dist/chunks/{LpCopyButton-CxX682t4.js → LpCopyButton-BGzw95Xc.js} +2 -2
  22. package/dist/chunks/{LpDataList-DCtF7krm.js → LpDataList-B56Gu6Yt.js} +3 -3
  23. package/dist/chunks/{LpDatePicker-BElEHVm6.js → LpDatePicker-Dlyvgsan.js} +2 -2
  24. package/dist/chunks/{LpDateRangePicker-vLt-drEu.js → LpDateRangePicker-CAn2yGbn.js} +1 -1
  25. package/dist/chunks/{LpDrawer-C97k-3L2.js → LpDrawer-iRHwJOGn.js} +4 -4
  26. package/dist/chunks/{LpDropdownMenu-BPEsqZCN.js → LpDropdownMenu-CdCe7D2d.js} +3 -3
  27. package/dist/chunks/{LpEditable-CeRAzYMv.js → LpEditable-DfRUAGkA.js} +2 -2
  28. package/dist/chunks/{LpEmptyState-DrHBR3yh.js → LpEmptyState-DLOm07KH.js} +1 -1
  29. package/dist/chunks/{LpFileTree-BcQgsw4e.js → LpFileTree-BN_zybBN.js} +3 -3
  30. package/dist/chunks/{LpFileTreeNode-Dk2WqkPF.js → LpFileTreeNode-CC48DbT5.js} +3 -3
  31. package/dist/chunks/{LpHintLayer-CUSRLtLu.js → LpHintLayer-nuMqfzvy.js} +3 -3
  32. package/dist/chunks/{LpHints-BF40CP4_.js → LpHints-ByAd3a76.js} +3 -3
  33. package/dist/chunks/{LpHoverCard-CHE9jAJG.js → LpHoverCard-DYguY2AP.js} +10 -61
  34. package/dist/chunks/{LpInput-BU5IsOlE.js → LpInput-DGMpxrcg.js} +1 -1
  35. package/dist/chunks/{LpInspector-CEko6-pS.js → LpInspector-oTfkOdYd.js} +2 -2
  36. package/dist/chunks/{LpLightbox-REei-y5e.js → LpLightbox-a24V_0Wk.js} +19 -7
  37. package/dist/chunks/{LpLogInspector-Bwz351LY.js → LpLogInspector-BhJTJIst.js} +1 -1
  38. package/dist/chunks/{LpLogViewer-BCkqdH66.js → LpLogViewer-BuIzr_6h.js} +4 -4
  39. package/dist/chunks/{LpMediaGallery-BF1Bch3v.js → LpMediaGallery-B7DOV_aL.js} +2 -2
  40. package/dist/chunks/{LpModal-BK2T5uIG.js → LpModal-D1E7rQzw.js} +5 -5
  41. package/dist/chunks/{LpModalNav-Dk4eHpg6.js → LpModalNav-DivqT1NV.js} +5 -4
  42. package/dist/chunks/{LpNotificationBell-CMwUXhFg.js → LpNotificationBell-KRgdRZs-.js} +4 -4
  43. package/dist/chunks/{LpNotificationFeed-BXsRp9jm.js → LpNotificationFeed-CMGYU8c-.js} +5 -5
  44. package/dist/chunks/{LpNumberField-QUMXvpqx.js → LpNumberField-C0LSu-tl.js} +1 -1
  45. package/dist/chunks/{LpPaletteTheme-wiJtP5hV.js → LpPaletteTheme-CLwO-SDf.js} +3 -3
  46. package/dist/chunks/{LpPasswordInput-W9AZfzaL.js → LpPasswordInput-LPVI7D3v.js} +2 -2
  47. package/dist/chunks/{LpPhoneInput-DsRv-Qla.js → LpPhoneInput-BdglZsGH.js} +5 -5
  48. package/dist/chunks/{LpPie-pbrNFbRP.js → LpPie-CsiBXe-e.js} +3 -3
  49. package/dist/chunks/{LpPipeline-BHWmvOiv.js → LpPipeline-DVcoSs--.js} +1 -1
  50. package/dist/chunks/{LpPopover-BQSuxtai.js → LpPopover-w2rr4x7n.js} +2 -2
  51. package/dist/chunks/{LpRadio-CWA5Eb3M.js → LpRadio-4KyxeSz4.js} +1 -1
  52. package/dist/chunks/{LpRadioGroup-D94KMStE.js → LpRadioGroup-Cr_fmrBY.js} +1 -1
  53. package/dist/chunks/{LpRangeSlider-CkP9hYUC.js → LpRangeSlider-DbaITHtC.js} +1 -1
  54. package/dist/chunks/{LpRelativeTime-0zI-44ve.js → LpRelativeTime-CN5bWD73.js} +1 -1
  55. package/dist/chunks/{LpRepeater-DLLcbQ6J.js → LpRepeater-C0rns2xW.js} +1 -1
  56. package/dist/chunks/{LpSecretField-Au7ZQTtm.js → LpSecretField-BwrZ4TfT.js} +5 -5
  57. package/dist/chunks/{LpSection-RKCwB0xN.js → LpSection-CwsfNR7N.js} +1 -1
  58. package/dist/chunks/{LpSegmented-DD8MPj4j.js → LpSegmented-DzFYP0ZF.js} +1 -1
  59. package/dist/chunks/{LpSelect-BeXz1TWh.js → LpSelect-Dffg5r4I.js} +5 -5
  60. package/dist/chunks/{LpSidebar-DUFlf6Uu.js → LpSidebar-DQtCYlT4.js} +4 -4
  61. package/dist/chunks/{LpSidebarNav-C34YEZIR.js → LpSidebarNav-CFcI7--7.js} +1 -1
  62. package/dist/chunks/{LpSidebarRow-BeEGgsZi.js → LpSidebarRow-C5jXpcRL.js} +2 -2
  63. package/dist/chunks/{LpSlider-BCy5rjwK.js → LpSlider-DUd4gXnw.js} +1 -1
  64. package/dist/chunks/{LpStat-eVz7iUfD.js → LpStat-SyVb5JXm.js} +1 -1
  65. package/dist/chunks/{LpSwitch-D7hmVsif.js → LpSwitch-D-mcaA6C.js} +1 -1
  66. package/dist/chunks/{LpTableFilter-BGFNKyUX.js → LpTableFilter-CILHffC1.js} +3 -3
  67. package/dist/chunks/{LpTagsInput-D9uOSlvf.js → LpTagsInput-DD8-xe3F.js} +2 -2
  68. package/dist/chunks/{LpTextarea-DwE-lQt4.js → LpTextarea-CQg-dVxN.js} +1 -1
  69. package/dist/chunks/{LpThemeStudio-COn2H76d.js → LpThemeStudio-BPPctXgd.js} +4 -4
  70. package/dist/chunks/{LpThemeSwitcher-B3R3nNid.js → LpThemeSwitcher-B3c44xFH.js} +4 -4
  71. package/dist/chunks/{LpTimeField-Mi8H1g_9.js → LpTimeField-Dio7Tj9A.js} +1 -1
  72. package/dist/chunks/{LpToaster-DOJn6Vey.js → LpToaster-Cdx1tnHB.js} +2 -2
  73. package/dist/chunks/{LpTooltip-Bz_rrq5S.js → LpTooltip-BKde8Xjv.js} +43 -7
  74. package/dist/chunks/{LpTopologyCanvas-5RFMP4gR.js → LpTopologyCanvas-CQ0l6A5h.js} +3 -3
  75. package/dist/chunks/{LpTour-DUI_hoPv.js → LpTour-BGUKUxSZ.js} +1 -1
  76. package/dist/chunks/{LpTruncate-CynJhsEw.js → LpTruncate-C_C8eiIE.js} +2 -2
  77. package/dist/chunks/{LpUptimeBar-G7PfNJUH.js → LpUptimeBar-Dt6SY_-m.js} +1 -1
  78. package/dist/chunks/{LpVideoCompress-CPUxXh-c.js → LpVideoCompress-CvxNdyjp.js} +2 -2
  79. package/dist/chunks/{LpVideoPlayer-BbCjEQAx.js → LpVideoPlayer-FMuxTAU8.js} +4 -4
  80. package/dist/chunks/{LpWindow-Dp_0nNqg.js → LpWindow-DsPeiDCZ.js} +1 -1
  81. package/dist/chunks/{LpWorkspaceSwitcher-bjkncjSl.js → LpWorkspaceSwitcher-DCIiOQt_.js} +4 -4
  82. package/dist/chunks/{PickerField-CjOTUXDK.js → PickerField-DzF3UVnX.js} +1 -1
  83. package/dist/chunks/{RevealToggle-Bl1NcfxB.js → RevealToggle-BsYxY6Oz.js} +2 -2
  84. package/dist/chunks/{TourCard-BovXtMbO.js → TourCard-yrLqv4Oz.js} +1 -1
  85. package/dist/chunks/{VideoVolume-DE3i1ree.js → VideoVolume-CzL5mZPE.js} +2 -2
  86. package/dist/components/ContextMenuItems.vue.js +1 -1
  87. package/dist/components/DropzoneLinkField.vue.js +1 -1
  88. package/dist/components/IconCloseButton.vue.js +1 -1
  89. package/dist/components/LpActionBar.vue.js +1 -1
  90. package/dist/components/LpAddressInput.vue.js +1 -1
  91. package/dist/components/LpAlert.vue.js +1 -1
  92. package/dist/components/LpAppShell.vue.js +1 -1
  93. package/dist/components/LpAutocomplete.vue.js +1 -1
  94. package/dist/components/LpButton.vue.js +1 -1
  95. package/dist/components/LpChart.vue.js +2 -2
  96. package/dist/components/LpCheckbox.vue.js +1 -1
  97. package/dist/components/LpCodeBlock.vue.js +1 -1
  98. package/dist/components/LpCodeDisplay.vue.js +1 -1
  99. package/dist/components/LpColorPicker.vue.js +1 -1
  100. package/dist/components/LpCommandPalette.vue.d.ts +2 -0
  101. package/dist/components/LpCommandPalette.vue.js +69 -33
  102. package/dist/components/LpConfirmDialog.vue.js +1 -1
  103. package/dist/components/LpConfirmHost.vue.js +1 -1
  104. package/dist/components/LpContextMenu.vue.js +1 -1
  105. package/dist/components/LpContextSwitcher.vue.js +1 -1
  106. package/dist/components/LpCopyButton.vue.js +1 -1
  107. package/dist/components/LpDataList.vue.js +1 -1
  108. package/dist/components/LpDatePicker.vue.js +1 -1
  109. package/dist/components/LpDateRangePicker.vue.js +1 -1
  110. package/dist/components/LpDock.vue.js +1 -1
  111. package/dist/components/LpDrawer.vue.js +1 -1
  112. package/dist/components/LpDropdownMenu.vue.js +1 -1
  113. package/dist/components/LpDropzone.vue.js +5 -5
  114. package/dist/components/LpEditable.vue.js +1 -1
  115. package/dist/components/LpEmptyState.vue.js +1 -1
  116. package/dist/components/LpFileTree.vue.js +1 -1
  117. package/dist/components/LpFileTreeNode.vue.js +1 -1
  118. package/dist/components/LpHintLayer.vue.js +1 -1
  119. package/dist/components/LpHints.vue.js +1 -1
  120. package/dist/components/LpHoverCard.vue.d.ts +3 -3
  121. package/dist/components/LpHoverCard.vue.js +1 -1
  122. package/dist/components/LpImageEditor.vue.js +4 -4
  123. package/dist/components/LpInput.vue.js +1 -1
  124. package/dist/components/LpInspector.vue.js +1 -1
  125. package/dist/components/LpLightbox.vue.js +1 -1
  126. package/dist/components/LpLogInspector.vue.js +1 -1
  127. package/dist/components/LpLogViewer.vue.js +1 -1
  128. package/dist/components/LpMediaGallery.vue.js +1 -1
  129. package/dist/components/LpModal.vue.js +1 -1
  130. package/dist/components/LpModalNav.vue.js +1 -1
  131. package/dist/components/LpNotificationBell.vue.js +1 -1
  132. package/dist/components/LpNotificationFeed.vue.js +1 -1
  133. package/dist/components/LpNumberField.vue.js +1 -1
  134. package/dist/components/LpPaletteTheme.vue.js +1 -1
  135. package/dist/components/LpPasswordInput.vue.js +1 -1
  136. package/dist/components/LpPhoneInput.vue.js +1 -1
  137. package/dist/components/LpPie.vue.js +1 -1
  138. package/dist/components/LpPipeline.vue.js +1 -1
  139. package/dist/components/LpPopover.vue.js +1 -1
  140. package/dist/components/LpRadio.vue.js +1 -1
  141. package/dist/components/LpRadioGroup.vue.js +1 -1
  142. package/dist/components/LpRangeSlider.vue.js +1 -1
  143. package/dist/components/LpRelativeTime.vue.js +1 -1
  144. package/dist/components/LpRepeater.vue.js +1 -1
  145. package/dist/components/LpSecretField.vue.js +1 -1
  146. package/dist/components/LpSection.vue.js +1 -1
  147. package/dist/components/LpSegmented.vue.js +1 -1
  148. package/dist/components/LpSelect.vue.js +1 -1
  149. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  150. package/dist/components/LpSidebar.vue.js +1 -1
  151. package/dist/components/LpSidebarNav.vue.js +1 -1
  152. package/dist/components/LpSidebarRow.vue.js +1 -1
  153. package/dist/components/LpSlider.vue.js +1 -1
  154. package/dist/components/LpStat.vue.js +1 -1
  155. package/dist/components/LpSwitch.vue.js +1 -1
  156. package/dist/components/LpTable.vue.js +10 -10
  157. package/dist/components/LpTableFilter.vue.js +1 -1
  158. package/dist/components/LpTabs.vue.js +1 -1
  159. package/dist/components/LpTagsInput.vue.js +1 -1
  160. package/dist/components/LpTextarea.vue.js +1 -1
  161. package/dist/components/LpThemeStudio.vue.js +1 -1
  162. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  163. package/dist/components/LpTimeField.vue.js +1 -1
  164. package/dist/components/LpToaster.vue.js +1 -1
  165. package/dist/components/LpTooltip.vue.d.ts +9 -0
  166. package/dist/components/LpTooltip.vue.js +1 -1
  167. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  168. package/dist/components/LpTour.vue.js +1 -1
  169. package/dist/components/LpTruncate.vue.js +1 -1
  170. package/dist/components/LpUptimeBar.vue.js +1 -1
  171. package/dist/components/LpVideoCompress.vue.js +1 -1
  172. package/dist/components/LpVideoPlayer.vue.js +1 -1
  173. package/dist/components/LpVideoTrim.vue.js +4 -4
  174. package/dist/components/LpWindow.vue.js +1 -1
  175. package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
  176. package/dist/components/PickerField.vue.js +1 -1
  177. package/dist/components/RevealToggle.vue.js +1 -1
  178. package/dist/components/TourCard.vue.js +1 -1
  179. package/dist/components/VideoVolume.vue.js +1 -1
  180. package/dist/components/badge.d.ts +1 -1
  181. package/dist/components/badge.js +1 -1
  182. package/dist/components/dropdown.d.ts +14 -0
  183. package/dist/components/dropdown.js +7 -1
  184. package/dist/components/menuWhen.js +1 -1
  185. package/dist/components/modalDepth.d.ts +1 -0
  186. package/dist/components/modalDepth.js +2 -0
  187. package/dist/composables/useReveal.js +3 -3
  188. package/dist/composables/useTouchHold.d.ts +19 -0
  189. package/dist/composables/useTouchHold.js +60 -0
  190. package/dist/index.js +72 -71
  191. package/package.json +1 -1
  192. package/src/components/ContextMenuItems.vue +2 -1
  193. package/src/components/IconCloseButton.vue +1 -1
  194. package/src/components/LpAlert.vue +1 -1
  195. package/src/components/LpAutocomplete.vue +4 -4
  196. package/src/components/LpButton.vue +1 -1
  197. package/src/components/LpCheckbox.vue +1 -1
  198. package/src/components/LpCodeBlock.vue +2 -2
  199. package/src/components/LpColorPicker.vue +3 -3
  200. package/src/components/LpCommandPalette.vue +89 -7
  201. package/src/components/LpContextMenu.vue +2 -2
  202. package/src/components/LpDataList.vue +1 -1
  203. package/src/components/LpDrawer.vue +7 -4
  204. package/src/components/LpDropdownMenu.vue +2 -2
  205. package/src/components/LpDropzone.vue +2 -2
  206. package/src/components/LpEditable.vue +2 -2
  207. package/src/components/LpEmptyState.vue +1 -1
  208. package/src/components/LpFileTreeNode.vue +1 -1
  209. package/src/components/LpHintLayer.vue +2 -2
  210. package/src/components/LpHoverCard.vue +11 -80
  211. package/src/components/LpImageEditor.vue +1 -1
  212. package/src/components/LpInput.vue +1 -1
  213. package/src/components/LpLightbox.vue +20 -3
  214. package/src/components/LpModal.vue +4 -4
  215. package/src/components/LpModalNav.vue +2 -1
  216. package/src/components/LpNumberField.vue +1 -1
  217. package/src/components/LpPhoneInput.vue +5 -5
  218. package/src/components/LpPopover.vue +2 -2
  219. package/src/components/LpRadio.vue +1 -1
  220. package/src/components/LpRadioGroup.vue +1 -1
  221. package/src/components/LpRangeSlider.vue +1 -1
  222. package/src/components/LpSection.vue +9 -6
  223. package/src/components/LpSegmented.vue +1 -1
  224. package/src/components/LpSelect.vue +4 -4
  225. package/src/components/LpSlider.vue +1 -1
  226. package/src/components/LpStat.vue +1 -1
  227. package/src/components/LpSwitch.vue +1 -1
  228. package/src/components/LpTableFilter.vue +1 -1
  229. package/src/components/LpTagsInput.vue +2 -2
  230. package/src/components/LpTextarea.vue +1 -1
  231. package/src/components/LpThemeSwitcher.vue +2 -2
  232. package/src/components/LpTimeField.vue +1 -1
  233. package/src/components/LpToaster.vue +1 -1
  234. package/src/components/LpTooltip.vue +59 -5
  235. package/src/components/badge.ts +1 -1
  236. package/src/components/dropdown.ts +24 -0
  237. package/src/components/modalDepth.ts +6 -0
  238. package/src/composables/useReveal.ts +7 -4
  239. package/src/composables/useTouchHold.ts +92 -0
  240. package/src/locales/uk.ts +1 -0
  241. package/src/tokens/utilities.css +34 -0
@@ -7,13 +7,13 @@ import { useLabels } from "../composables/useLpConfig.js";
7
7
  import { useFieldControl } from "../composables/useField.js";
8
8
  import { mergeClass } from "../composables/useMergedClass.js";
9
9
  import { _ as _sfc_main$5 } from "./FieldWrapper-CVTPnpoG.js";
10
- import { _ as _sfc_main$3 } from "./LpButton-DSHioIfD.js";
11
- import { _ as _sfc_main$2 } from "./LpCopyButton-CxX682t4.js";
10
+ import { _ as _sfc_main$3 } from "./LpButton-BvVoF-PO.js";
11
+ import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
12
12
  import { _ as _sfc_main$4 } from "./LpIcon-CxHFPwKt.js";
13
- import { _ as _sfc_main$1 } from "./LpPasswordInput-W9AZfzaL.js";
13
+ import { _ as _sfc_main$1 } from "./LpPasswordInput-LPVI7D3v.js";
14
14
  import { _ as _sfc_main$6 } from "./LpShift-DAgS_d2x.js";
15
- import { _ as _sfc_main$8 } from "./LpTooltip-Bz_rrq5S.js";
16
- import { _ as _sfc_main$7 } from "./RevealToggle-Bl1NcfxB.js";
15
+ import { _ as _sfc_main$8 } from "./LpTooltip-BKde8Xjv.js";
16
+ import { _ as _sfc_main$7 } from "./RevealToggle-BsYxY6Oz.js";
17
17
  const _hoisted_1 = ["id", "aria-label"];
18
18
  const _hoisted_2 = {
19
19
  key: "empty",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createBlock, createCommentVNode, resolveDynamicComponent, withCtx, renderSlot, createTextVNode, toDisplayString } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
3
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
4
- const _hoisted_1 = { class: "min-w-0 flex-1 break-words" };
4
+ const _hoisted_1 = { class: "min-w-0 flex-1 [overflow-wrap:anywhere]" };
5
5
  const _hoisted_2 = { class: "flex flex-wrap items-center gap-2" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  __name: "LpSection",
@@ -84,7 +84,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
84
84
  value: opt.value,
85
85
  disabled: opt.disabled,
86
86
  "aria-label": opt.ariaLabel ?? (opt.label ? void 0 : opt.value),
87
- class: normalizeClass(["relative inline-flex h-full items-center justify-center gap-1.5 rounded-inner font-medium outline-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] focus-visible:ring-2 focus-visible:ring-ring data-[state=on]:text-ink data-[state=off]:text-muted data-[state=off]:hover:text-ink disabled:cursor-not-allowed disabled:opacity-55", [__props.block ? "flex-1" : "", __props.size === "lg" ? "px-4" : "px-3", hovered.value === opt.value ? "text-ink" : ""]]),
87
+ class: normalizeClass(["lp-tap relative inline-flex h-full items-center justify-center gap-1.5 rounded-inner font-medium outline-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] focus-visible:ring-2 focus-visible:ring-ring data-[state=on]:text-ink data-[state=off]:text-muted data-[state=off]:hover:text-ink disabled:cursor-not-allowed disabled:opacity-55", [__props.block ? "flex-1" : "", __props.size === "lg" ? "px-4" : "px-3", hovered.value === opt.value ? "text-ink" : ""]]),
88
88
  onPointerenter: ($event) => onEnter(opt),
89
89
  onPointerup: releaseFocusAfterPointer
90
90
  }, {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, ref, useAttrs, useId, reactive, watch, nextTick, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, mergeProps, normalizeClass, createElementVNode, toDisplayString, createElementBlock, TransitionGroup, Fragment, renderList, createCommentVNode, withModifiers, createTextVNode, normalizeStyle } from "vue";
2
- import { _ as _sfc_main$4 } from "./IconCloseButton-CmWOJAXG.js";
2
+ import { _ as _sfc_main$4 } from "./IconCloseButton-C_V7qngw.js";
3
3
  import { CONTROL_SIZE } from "../components/controlSize.js";
4
4
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
5
5
  import { ComboboxRoot, ComboboxAnchor, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxInput, ComboboxViewport, ComboboxEmpty, ComboboxItem, ComboboxItemIndicator } from "reka-ui";
@@ -7,7 +7,7 @@ import { _ as _sfc_main$1 } from "./FieldWrapper-CVTPnpoG.js";
7
7
  import { useOwnField, useFieldBlur, mergeDescribedBy } from "../composables/useField.js";
8
8
  import { useLabels } from "../composables/useLpConfig.js";
9
9
  import { useMergedAttrs } from "../composables/useMergedClass.js";
10
- import { POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
10
+ import { POPOVER_PANEL, COMBOBOX_FIT, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
11
11
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
12
12
  import { _ as _sfc_main$5 } from "./OptionContent-DZb5eKRV.js";
13
13
  import { _ as _sfc_main$3 } from "./LpRollingText-B54Pje7P.js";
@@ -446,7 +446,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
446
446
  onEscapeKeyDown: unref(guardOutside),
447
447
  position: "popper",
448
448
  "side-offset": 6,
449
- class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) max-h-72 w-(--reka-combobox-trigger-width) overflow-hidden"])
449
+ class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) w-(--reka-combobox-trigger-width) overflow-hidden", unref(COMBOBOX_FIT)])
450
450
  }, {
451
451
  default: withCtx(() => [
452
452
  __props.searchable || serverSide.value ? (openBlock(), createElementBlock("div", _hoisted_12, [
@@ -455,10 +455,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
455
455
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => query.value = $event),
456
456
  placeholder: searchPlaceholderText.value,
457
457
  "aria-label": unref(labels).searchLabel,
458
- class: "h-(--size-control-sm) w-full rounded-md border border-line bg-surface-soft px-2.5 text-sm text-ink outline-none placeholder:text-muted focus:border-brand"
458
+ class: "lp-entry h-(--size-control-sm) w-full rounded-md border border-line bg-surface-soft px-2.5 text-sm text-ink outline-none placeholder:text-muted focus:border-brand"
459
459
  }, null, 8, ["modelValue", "placeholder", "aria-label"])
460
460
  ])) : createCommentVNode("", true),
461
- createVNode(unref(ComboboxViewport), { class: "max-h-56 overflow-y-auto p-1" }, {
461
+ createVNode(unref(ComboboxViewport), { class: "max-h-56 min-h-0 flex-1 overflow-y-auto p-1" }, {
462
462
  default: withCtx(() => [
463
463
  __props.loading ? (openBlock(), createElementBlock("div", _hoisted_13, toDisplayString(loadingLabel.value), 1)) : (openBlock(), createBlock(unref(ComboboxEmpty), {
464
464
  key: 1,
@@ -4,11 +4,11 @@ import { useHotkeys, parseCombo } from "../composables/useHotkeys.js";
4
4
  import { startPointerDrag } from "../composables/pointerDrag.js";
5
5
  import { usePersisted } from "../composables/usePersisted.js";
6
6
  import { useLabels } from "../composables/useLpConfig.js";
7
- import { _ as _sfc_main$5 } from "./LpDrawer-C97k-3L2.js";
7
+ import { _ as _sfc_main$5 } from "./LpDrawer-iRHwJOGn.js";
8
8
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
9
- import { _ as _sfc_main$3 } from "./LpInput-BU5IsOlE.js";
10
- import { _ as _sfc_main$1 } from "./LpTooltip-Bz_rrq5S.js";
11
- import { _ as _sfc_main$4 } from "./LpSidebarNav-C34YEZIR.js";
9
+ import { _ as _sfc_main$3 } from "./LpInput-DGMpxrcg.js";
10
+ import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
11
+ import { _ as _sfc_main$4 } from "./LpSidebarNav-CFcI7--7.js";
12
12
  const _hoisted_1 = ["data-compact", "aria-label"];
13
13
  const _hoisted_2 = {
14
14
  key: 0,
@@ -10,7 +10,7 @@ import '../assets/MenuShortcut-Cyub0frr.css';import '../assets/LpKeys-5ijsXX-M.c
10
10
  /* empty css */
11
11
  import { _ as _sfc_main$2 } from "./LpScrollArea-CqvwfZs2.js";
12
12
  import { _ as _sfc_main$1 } from "./LpSkeleton-leTl53V9.js";
13
- import { _ as _sfc_main$3 } from "./LpSidebarRow-BeEGgsZi.js";
13
+ import { _ as _sfc_main$3 } from "./LpSidebarRow-C5jXpcRL.js";
14
14
  import { waiting } from "../components/sidebar.js";
15
15
  import { useMergedAttrs } from "../composables/useMergedClass.js";
16
16
  const _hoisted_1 = {
@@ -5,8 +5,8 @@ import { useLocale } from "../composables/useLocale.js";
5
5
  import { usePillTransition } from "../composables/usePillTransition.js";
6
6
  import { useLinkComponent } from "../composables/useLpConfig.js";
7
7
  import { _ as _sfc_main$2 } from "./LpBadge-Bh5roBr_.js";
8
- import { _ as _sfc_main$4 } from "./LpContextMenu-DYpDm6iI.js";
9
- import { _ as _sfc_main$1 } from "./LpHoverCard-CHE9jAJG.js";
8
+ import { _ as _sfc_main$4 } from "./LpContextMenu-DEFirphS.js";
9
+ import { _ as _sfc_main$1 } from "./LpHoverCard-DYguY2AP.js";
10
10
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
11
11
  import LpKeys from "../components/LpKeys.vue.js";
12
12
  import { _ as _sfc_main$5 } from "./LpNumberFlow-Vqj0tP7B.js";
@@ -32,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
32
32
  }
33
33
  const { field, wrapper, ownAttrs } = useOwnField(() => ({ error: props.error, disabled: props.disabled }));
34
34
  const { class: rootClass, attrs: rest } = useMergedAttrs(
35
- `relative flex h-5 w-full touch-none select-none items-center data-[disabled]:opacity-55 ${SLIDER_GLIDE}`,
35
+ `lp-tap relative flex h-5 w-full touch-none select-none items-center data-[disabled]:opacity-55 ${SLIDER_GLIDE}`,
36
36
  () => ownAttrs()
37
37
  );
38
38
  const { dragging, onPointerDown } = useSliderDrag();
@@ -7,7 +7,7 @@ import { useFitScale } from "../composables/useFitScale.js";
7
7
  import { useMergedAttrs } from "../composables/useMergedClass.js";
8
8
  import { TONES, toneOf } from "../components/tone.js";
9
9
  const _hoisted_1 = { class: "flex items-center gap-2" };
10
- const _hoisted_2 = { class: "text-[11px] font-semibold uppercase tracking-[0.08em] text-muted" };
10
+ const _hoisted_2 = { class: "min-w-0 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted [overflow-wrap:anywhere]" };
11
11
  const _hoisted_3 = { key: 1 };
12
12
  const _hoisted_4 = ["title"];
13
13
  const _hoisted_5 = { key: "loading" };
@@ -35,7 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  const { pending, set } = useOptimisticToggle(() => props.action, emit);
36
36
  const slots = useSlots();
37
37
  const labelled = computed(() => Boolean(props.label || props.description || slots.default));
38
- const TRACK = "group/switch inline-flex h-5 w-9 shrink-0 items-center rounded-pill border border-line bg-surface-soft px-0.5 outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-55";
38
+ const TRACK = "lp-tap group/switch inline-flex h-5 w-9 shrink-0 items-center rounded-pill border border-line bg-surface-soft px-0.5 outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-55";
39
39
  const THUMB = "h-3.5 w-3.5 rounded-full bg-ink shadow transition-[translate,width,background-color] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-active/switch:w-5 group-data-[state=checked]/switch:translate-x-4 group-data-[state=checked]/switch:bg-ink-inverse group-data-[state=checked]/switch:group-active/switch:translate-x-2.5 motion-reduce:group-active/switch:w-3.5";
40
40
  const { class: rootClass, attrs: rest } = useMergedAttrs(() => {
41
41
  if (!labelled.value) return TRACK;
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createBlock, createCommentVNode, createElementVNode, Fragment, unref, normalizeClass, toDisplayString, createVNode, withCtx, renderList } from "vue";
2
- import { _ as _sfc_main$3 } from "./LpCheckbox-P7tEw8GO.js";
3
- import { _ as _sfc_main$1 } from "./LpInput-BU5IsOlE.js";
2
+ import { _ as _sfc_main$3 } from "./LpCheckbox-C9VnPIQf.js";
3
+ import { _ as _sfc_main$1 } from "./LpInput-DGMpxrcg.js";
4
4
  import { _ as _sfc_main$2 } from "./LpShift-DAgS_d2x.js";
5
5
  import { usePaintSelect } from "../composables/usePaintSelect.js";
6
6
  import { matchesQuery, onlyValues, unhideValues, hideAllValues, invertHidden } from "../components/tableFilter.js";
@@ -140,7 +140,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
140
140
  option.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(option.count), 1)) : createCommentVNode("", true),
141
141
  createElementVNode("button", {
142
142
  type: "button",
143
- class: "rounded-control px-1.5 py-0.5 text-xs font-medium text-brand opacity-0 outline-none transition-opacity duration-fast group-hover/opt:opacity-100 hover:bg-brand-soft focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-ring",
143
+ class: "rounded-control px-1.5 py-0.5 text-xs font-medium text-brand opacity-0 outline-none transition-opacity duration-fast group-hover/opt:opacity-100 [@media(hover:none)]:opacity-100 hover:bg-brand-soft focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-ring",
144
144
  onClick: ($event) => set(unref(onlyValues)(values.value, [option.value]))
145
145
  }, toDisplayString(__props.labels.only), 9, _hoisted_10)
146
146
  ], 8, _hoisted_7);
@@ -395,7 +395,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
395
395
  "aria-expanded": __props.options ? listOpen.value : void 0,
396
396
  "aria-controls": __props.options ? listId : void 0,
397
397
  "aria-activedescendant": listOpen.value && activeIndex.value >= 0 ? optionId(activeIndex.value) : void 0,
398
- class: "min-w-24 flex-1 bg-transparent px-1 outline-none placeholder:text-muted",
398
+ class: "lp-entry min-w-24 flex-1 bg-transparent px-1 outline-none placeholder:text-muted",
399
399
  onFocus,
400
400
  onKeydown,
401
401
  onBeforeinput: onBeforeInput,
@@ -433,7 +433,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
433
433
  align: "start",
434
434
  "side-offset": 6,
435
435
  "collision-padding": 8,
436
- class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) max-h-72 w-(--reka-popper-anchor-width) overflow-y-auto p-1 outline-none"]),
436
+ class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) max-h-[min(18rem,var(--reka-popper-available-height,18rem))] w-(--reka-popper-anchor-width) overflow-y-auto p-1 outline-none"]),
437
437
  onOpenAutoFocus: _cache[1] || (_cache[1] = withModifiers(() => {
438
438
  }, ["prevent"])),
439
439
  onCloseAutoFocus: _cache[2] || (_cache[2] = withModifiers(() => {
@@ -60,7 +60,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
60
60
  const textareaClass = computed(
61
61
  () => mergeClass(
62
62
  props.autosize ? "w-full resize-none" : "w-full resize-y",
63
- "rounded-control border bg-surface-soft px-3 py-2 text-sm text-ink outline-none transition-colors duration-[var(--duration-fast)] placeholder:text-muted focus:border-brand focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-55",
63
+ "lp-entry rounded-control border bg-surface-soft px-3 py-2 text-sm text-ink outline-none transition-colors duration-[var(--duration-fast)] placeholder:text-muted focus:border-brand focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-55",
64
64
  field.value.invalid ? "border-danger focus:border-danger focus:ring-danger-soft" : "border-line",
65
65
  hasField.value ? "" : attrs.class
66
66
  )
@@ -2,11 +2,11 @@ import { defineComponent, computed, ref, openBlock, createElementBlock, unref, c
2
2
  import { usePaletteTheme } from "../theme/palette.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { useThemeStudio, STUDIO_BRANDS, STUDIO_SYSTEM } from "../theme/studio.js";
5
- import { _ as _sfc_main$1 } from "./LpButton-DSHioIfD.js";
6
- import { _ as _sfc_main$7 } from "./LpCodeBlock-BNThgUdQ.js";
7
- import { _ as _sfc_main$4 } from "./LpColorPicker-EXpwcX-t.js";
5
+ import { _ as _sfc_main$1 } from "./LpButton-BvVoF-PO.js";
6
+ import { _ as _sfc_main$7 } from "./LpCodeBlock-BgWcg2mk.js";
7
+ import { _ as _sfc_main$4 } from "./LpColorPicker-KGMG8QEh.js";
8
8
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
9
- import { _ as _sfc_main$5 } from "./LpSegmented-DD8MPj4j.js";
9
+ import { _ as _sfc_main$5 } from "./LpSegmented-DzFYP0ZF.js";
10
10
  import { _ as _sfc_main$6 } from "./LpDisclosure-D4JZ-o8K.js";
11
11
  import { _ as _sfc_main$8 } from "./LpThemeProvider-XK6ZeWAE.js";
12
12
  import { _ as _sfc_main$3 } from "./LpThemeStudioSection-B7bt8Iyg.js";
@@ -6,12 +6,12 @@ import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
6
6
  import { presets } from "../theme/presets.js";
7
7
  import { useThemeStudio, STUDIO_SYSTEM } from "../theme/studio.js";
8
8
  import { useTheme } from "../theme/useTheme.js";
9
- import { POPOVER_PANEL } from "../components/dropdown.js";
10
- import { _ as _sfc_main$1 } from "./LpContextMenu-DYpDm6iI.js";
9
+ import { POPOVER_PANEL, PANEL_FIT } from "../components/dropdown.js";
10
+ import { _ as _sfc_main$1 } from "./LpContextMenu-DEFirphS.js";
11
11
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
12
12
  import { _ as _sfc_main$4 } from "./LpRollingText-B54Pje7P.js";
13
13
  import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
14
- import { _ as _sfc_main$5 } from "./LpThemeStudio-COn2H76d.js";
14
+ import { _ as _sfc_main$5 } from "./LpThemeStudio-BPPctXgd.js";
15
15
  const _hoisted_1 = ["aria-label", "title"];
16
16
  const _hoisted_2 = {
17
17
  key: 1,
@@ -248,7 +248,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
248
248
  align: "end",
249
249
  "side-offset": 6,
250
250
  "aria-label": unref(text).studio,
251
- class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) w-96 max-w-[calc(100vw-24px)] rounded-card p-3 text-sm text-ink outline-none"]),
251
+ class: normalizeClass([unref(POPOVER_PANEL), unref(PANEL_FIT), "z-(--z-popover) w-96 rounded-card p-3 text-sm text-ink outline-none"]),
252
252
  "data-lp-glide-position": "",
253
253
  onInteractOutside: keepForTrigger,
254
254
  onEscapeKeyDown: unref(guardOutside)
@@ -48,7 +48,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
48
48
  }));
49
49
  const shellSize = CONTROL_SIZE;
50
50
  const { class: rootClass, attrs: rest } = useMergedAttrs(() => [
51
- "flex w-full items-center gap-0.5 rounded-control border bg-surface-soft px-3 text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2 focus-within:ring-ring data-[disabled]:cursor-not-allowed data-[disabled]:opacity-55",
51
+ "lp-entry flex w-full items-center gap-0.5 rounded-control border bg-surface-soft px-3 text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2 focus-within:ring-ring data-[disabled]:cursor-not-allowed data-[disabled]:opacity-55",
52
52
  shellSize[props.size],
53
53
  field.value.invalid ? "border-danger focus-within:ring-danger-soft" : "border-line focus-within:border-brand"
54
54
  ].join(" "), () => ownAttrs());
@@ -4,7 +4,7 @@ import { prefersReducedMotion } from "../composables/easing.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useToast } from "../composables/useToast.js";
6
6
  import { CLOSE_ICON } from "../components/dropdown.js";
7
- import { _ as _sfc_main$2 } from "./LpCopyButton-CxX682t4.js";
7
+ import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
8
8
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
9
9
  import { toneLook } from "../components/tone.js";
10
10
  import { useView, viewDocument, usePortalTarget, viewWindow } from "../composables/useView.js";
@@ -247,7 +247,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
247
247
  (openBlock(), createBlock(Teleport, { to: unref(portalTo) }, [
248
248
  createVNode(unref(ToastViewport), {
249
249
  "data-lp-toasts": unref(viewportId),
250
- class: "fixed bottom-0 right-0 z-(--z-toast) flex w-[min(92vw,22rem)] flex-col gap-2 p-4 outline-none"
250
+ class: "fixed bottom-0 right-0 z-(--z-toast) flex w-[min(92vw,22rem)] flex-col gap-2 p-4 pr-[max(1rem,env(safe-area-inset-right))] pb-[max(1rem,env(safe-area-inset-bottom))] outline-none"
251
251
  }, null, 8, ["data-lp-toasts"])
252
252
  ], 8, ["to"]))
253
253
  ]),
@@ -1,11 +1,13 @@
1
- import { defineComponent, ref, watch, onBeforeUnmount, openBlock, createBlock, resolveDynamicComponent, unref, normalizeProps, guardReactiveProps, withCtx, createVNode, mergeProps, renderSlot, normalizeStyle, normalizeClass, createElementVNode, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, ref, watch, onBeforeUnmount, useAttrs, computed, mergeProps, openBlock, createBlock, resolveDynamicComponent, unref, normalizeProps, guardReactiveProps, withCtx, createVNode, renderSlot, normalizeStyle, normalizeClass, createElementVNode, createTextVNode, toDisplayString } from "vue";
2
2
  import { clamp } from "../composables/clamp.js";
3
3
  import { injectTooltipProviderContext, TooltipProvider, TooltipRoot, TooltipTrigger, TooltipPortal, TooltipContent } from "reka-ui";
4
4
  import { springStep, springSettled } from "../composables/usePillTransition.js";
5
5
  import { PANEL_SURFACE, TOOLTIP_ANIM } from "../components/dropdown.js";
6
+ import { useTouchHold } from "../composables/useTouchHold.js";
6
7
  import { prefersReducedMotion } from "../composables/easing.js";
7
8
  import { useView, viewWindow, usePortalTarget, useOutsideGuard } from "../composables/useView.js";
8
- import '../assets/LpTooltip-B61SYd4K.css';const EDGE = 8;
9
+ import '../assets/LpTooltip-B61SYd4K.css';const HOLD_MS = 450;
10
+ const EDGE = 8;
9
11
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
12
  ...{ inheritAttrs: false },
11
13
  __name: "LpTooltip",
@@ -17,7 +19,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17
19
  delay: {},
18
20
  showOnPointerFocus: { type: Boolean },
19
21
  followCursor: { type: Boolean },
20
- disabled: { type: Boolean }
22
+ disabled: { type: Boolean },
23
+ touch: { default: "hold" }
21
24
  },
22
25
  setup(__props) {
23
26
  const props = __props;
@@ -99,7 +102,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
99
102
  }
100
103
  const open = ref(false);
101
104
  const wanted = ref(false);
105
+ const heldOpen = ref(false);
106
+ const hold = useTouchHold({
107
+ enabled: () => props.touch === "hold" && !props.followCursor && !props.disabled,
108
+ delay: () => HOLD_MS,
109
+ onHold: () => {
110
+ heldOpen.value = true;
111
+ wanted.value = true;
112
+ open.value = true;
113
+ }
114
+ });
115
+ function release() {
116
+ heldOpen.value = false;
117
+ wanted.value = false;
118
+ open.value = false;
119
+ }
102
120
  const onOpenChange = (next) => {
121
+ if (!next && heldOpen.value) return;
103
122
  wanted.value = next;
104
123
  open.value = next && !props.disabled;
105
124
  if (!open.value || !props.followCursor) return;
@@ -108,8 +127,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
108
127
  watch(
109
128
  () => props.disabled,
110
129
  (off) => {
111
- if (off) open.value = false;
112
- else if (wanted.value) open.value = true;
130
+ if (off) {
131
+ hold.cancel();
132
+ heldOpen.value = false;
133
+ open.value = false;
134
+ } else if (wanted.value) open.value = true;
113
135
  }
114
136
  );
115
137
  const view = useView();
@@ -125,9 +147,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
125
147
  onCleanup(() => win.removeEventListener("resize", follow));
126
148
  }
127
149
  );
150
+ watch(heldOpen, (held, _, onCleanup) => {
151
+ if (!held) return;
152
+ const win = viewWindow(view.value);
153
+ const onKey = (event) => event.key === "Escape" && release();
154
+ win.addEventListener("pointerdown", release, true);
155
+ win.addEventListener("keydown", onKey, true);
156
+ onCleanup(() => {
157
+ win.removeEventListener("pointerdown", release, true);
158
+ win.removeEventListener("keydown", onKey, true);
159
+ });
160
+ });
128
161
  onBeforeUnmount(stopSpring);
129
162
  const portalTo = usePortalTarget();
130
163
  const guardOutside = useOutsideGuard();
164
+ const attrs = useAttrs();
165
+ const triggerAttrs = computed(() => mergeProps(attrs, hold.handlers));
131
166
  return (_ctx, _cache) => {
132
167
  return openBlock(), createBlock(resolveDynamicComponent(unref(shared) ? PassThrough : unref(TooltipProvider)), normalizeProps(guardReactiveProps(unref(shared) ? {} : { delayDuration: __props.delay ?? 200 })), {
133
168
  default: withCtx(() => [
@@ -140,15 +175,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
140
175
  "onUpdate:open": onOpenChange
141
176
  }, {
142
177
  default: withCtx(() => [
143
- createVNode(unref(TooltipTrigger), mergeProps({ "as-child": "" }, _ctx.$attrs, {
178
+ createVNode(unref(TooltipTrigger), mergeProps({ "as-child": "" }, triggerAttrs.value, {
144
179
  "aria-label": __props.label ? __props.content : void 0,
180
+ class: __props.touch === "hold" && !__props.followCursor ? "[-webkit-touch-callout:none]" : void 0,
145
181
  onPointermove: onPointerMove
146
182
  }), {
147
183
  default: withCtx(() => [
148
184
  renderSlot(_ctx.$slots, "default")
149
185
  ]),
150
186
  _: 3
151
- }, 16, ["aria-label"]),
187
+ }, 16, ["aria-label", "class"]),
152
188
  createVNode(unref(TooltipPortal), { to: unref(portalTo) }, {
153
189
  default: withCtx(() => [
154
190
  createVNode(unref(TooltipContent), {
@@ -8,13 +8,13 @@ import { useLabels } from "../composables/useLpConfig.js";
8
8
  import { useResizeObserver } from "../composables/useResizeObserver.js";
9
9
  import { nodeWindow, isHTMLElement } from "../composables/realm.js";
10
10
  import { backgroundOf, resolveCssColor, svgToPng } from "../components/exportData.js";
11
- import { _ as _sfc_main$6 } from "./LpButton-DSHioIfD.js";
11
+ import { _ as _sfc_main$6 } from "./LpButton-BvVoF-PO.js";
12
12
  import { _ as _sfc_main$7 } from "./LpIcon-CxHFPwKt.js";
13
13
  import { _ as _sfc_main$3 } from "./LpInfraNode-BYiMFDnA.js";
14
- import { _ as _sfc_main$5 } from "./LpInput-BU5IsOlE.js";
14
+ import { _ as _sfc_main$5 } from "./LpInput-DGMpxrcg.js";
15
15
  import { _ as _sfc_main$1 } from "./LpLaneNode-Bqcdm8Rf.js";
16
16
  import { _ as _sfc_main$2 } from "./LpServiceNode-Cln2ntdw.js";
17
- import { _ as _sfc_main$8 } from "./LpSlider-BCy5rjwK.js";
17
+ import { _ as _sfc_main$8 } from "./LpSlider-DUd4gXnw.js";
18
18
  import { _ as _sfc_main$4 } from "./LpWaypointEdge-D8yHlQiw.js";
19
19
  import { diffTopology, detailAtZoom, collapseChildren, clusterGraph, findNodes, findPath, neighborhood, groupBoxes, nodeName, frameSize, edgeLabelText, nearestInDirection, absolutePositions, layeredLayout, topologyToSvg } from "../components/topologyGraph.js";
20
20
  const _hoisted_1 = {
@@ -8,7 +8,7 @@ import { useMediaQuery } from "../composables/useMediaQuery.js";
8
8
  import { useView, usePortalTarget, viewDocument, viewWindow } from "../composables/useView.js";
9
9
  import { scrollToElement } from "../composables/scroll.js";
10
10
  import { PANEL_SURFACE } from "../components/dropdown.js";
11
- import { _ as _sfc_main$1 } from "./TourCard-BovXtMbO.js";
11
+ import { _ as _sfc_main$1 } from "./TourCard-yrLqv4Oz.js";
12
12
  import { holeOf, panelsAround, holeClip } from "../components/tour.js";
13
13
  import { isElement } from "../composables/realm.js";
14
14
  const _hoisted_1 = ["aria-label"];
@@ -2,8 +2,8 @@ import { defineComponent, ref, onMounted, watch, nextTick, computed, openBlock,
2
2
  import { nodeWindow } from "../composables/realm.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useResizeObserver } from "../composables/useResizeObserver.js";
5
- import { _ as _sfc_main$2 } from "./LpCopyButton-CxX682t4.js";
6
- import { _ as _sfc_main$1 } from "./LpTooltip-Bz_rrq5S.js";
5
+ import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
6
+ import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
7
7
  import { middleTruncate } from "../components/fieldText.js";
8
8
  const _hoisted_1 = ["tabindex"];
9
9
  const _hoisted_2 = { "aria-hidden": "true" };
@@ -4,7 +4,7 @@ import { _ as _sfc_main$5 } from "./LpRollingText-B54Pje7P.js";
4
4
  import { _ as _sfc_main$4 } from "./LpShift-DAgS_d2x.js";
5
5
  import { _ as _sfc_main$2 } from "./LpSkeleton-leTl53V9.js";
6
6
  import { _ as _sfc_main$1 } from "./LpSwap-M7nFeW3C.js";
7
- import { _ as _sfc_main$3 } from "./LpTooltip-Bz_rrq5S.js";
7
+ import { _ as _sfc_main$3 } from "./LpTooltip-BKde8Xjv.js";
8
8
  import { TONES } from "../components/tone.js";
9
9
  import { useMergedAttrs } from "../composables/useMergedClass.js";
10
10
  import { useLabels } from "../composables/useLpConfig.js";
@@ -3,10 +3,10 @@ import { useLocale } from "../composables/useLocale.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { canTranscodeVideo, estimateTranscodedBytes, clipLength, probeVideo, transcodeVideo } from "../composables/videoTranscode.js";
5
5
  import { formatBytes } from "../components/format.js";
6
- import { _ as _sfc_main$4 } from "./LpButton-DSHioIfD.js";
6
+ import { _ as _sfc_main$4 } from "./LpButton-BvVoF-PO.js";
7
7
  import { _ as _sfc_main$2 } from "./LpCollapse-DrAw5DBZ.js";
8
8
  import { _ as _sfc_main$3 } from "./LpProgress-D_MSjowb.js";
9
- import { _ as _sfc_main$1 } from "./LpSegmented-DD8MPj4j.js";
9
+ import { _ as _sfc_main$1 } from "./LpSegmented-DzFYP0ZF.js";
10
10
  import LpVideoTrim from "../components/LpVideoTrim.vue.js";
11
11
  const _hoisted_1 = {
12
12
  class: "flex flex-col gap-4",
@@ -7,14 +7,14 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { useToast } from "../composables/useToast.js";
8
8
  import { useVideoMedia } from "../composables/useVideoMedia.js";
9
9
  import { useView, provideView } from "../composables/useView.js";
10
- import { _ as _sfc_main$4 } from "./LpButton-DSHioIfD.js";
11
- import { _ as _sfc_main$1 } from "./LpContextMenu-DYpDm6iI.js";
12
- import { _ as _sfc_main$7 } from "./LpDropdownMenu-BPEsqZCN.js";
10
+ import { _ as _sfc_main$4 } from "./LpButton-BvVoF-PO.js";
11
+ import { _ as _sfc_main$1 } from "./LpContextMenu-DEFirphS.js";
12
+ import { _ as _sfc_main$7 } from "./LpDropdownMenu-CdCe7D2d.js";
13
13
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
14
14
  import { _ as _sfc_main$3 } from "./LpLoader-Bf1yZwaU.js";
15
15
  import { _ as _sfc_main$6 } from "./SteadyText-CwH-kduj.js";
16
16
  import VideoFlash from "../components/VideoFlash.vue.js";
17
- import { _ as _sfc_main$5 } from "./VideoVolume-DE3i1ree.js";
17
+ import { _ as _sfc_main$5 } from "./VideoVolume-CzL5mZPE.js";
18
18
  import { widestClipTime, formatClipTime } from "../components/videoBackdrop.js";
19
19
  import { FrameSampler } from "../components/videoFrames.js";
20
20
  import { FADE_SCALE, FADE, OVERLAY_BUTTON, ICON_SWAP } from "../components/videoMotion.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, useModel, useId, shallowRef, computed, ref, onMounted, watch, nextTick, onBeforeUnmount, openBlock, createBlock, Teleport, unref, createElementBlock, normalizeStyle, createCommentVNode, createElementVNode, mergeProps, renderSlot, createTextVNode, toDisplayString, Fragment, renderList, normalizeClass, mergeModels } from "vue";
2
- import { _ as _sfc_main$1 } from "./IconCloseButton-CmWOJAXG.js";
2
+ import { _ as _sfc_main$1 } from "./IconCloseButton-C_V7qngw.js";
3
3
  import { startPointerDrag } from "../composables/pointerDrag.js";
4
4
  import { useCloseGuard } from "../composables/useCloseGuard.js";
5
5
  import { useGlass } from "../composables/useGlass.js";
@@ -1,9 +1,9 @@
1
1
  import { defineComponent, computed, ref, openBlock, createElementBlock, Fragment, createVNode, withCtx, unref, createTextVNode, toDisplayString, createElementVNode, withModifiers, nextTick } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
- import { _ as _sfc_main$2 } from "./LpButton-DSHioIfD.js";
4
- import { _ as _sfc_main$1 } from "./LpDropdownMenu-BPEsqZCN.js";
5
- import { _ as _sfc_main$4 } from "./LpInput-BU5IsOlE.js";
6
- import { _ as _sfc_main$3 } from "./LpModal-BK2T5uIG.js";
3
+ import { _ as _sfc_main$2 } from "./LpButton-BvVoF-PO.js";
4
+ import { _ as _sfc_main$1 } from "./LpDropdownMenu-CdCe7D2d.js";
5
+ import { _ as _sfc_main$4 } from "./LpInput-DGMpxrcg.js";
6
+ import { _ as _sfc_main$3 } from "./LpModal-D1E7rQzw.js";
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
8
  __name: "LpWorkspaceSwitcher",
9
9
  props: {
@@ -3,7 +3,7 @@ import { useFieldBlur, mergeDescribedBy } from "../composables/useField.js";
3
3
  import { mergeClass } from "../composables/useMergedClass.js";
4
4
  import { PICKER_PRESETS, PICKER_PRESET, PICKER_TRIGGER, PICKER_SIZE, pickerTone, PICKER_CLEAR } from "../components/calendar.js";
5
5
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
6
- import { _ as _sfc_main$1 } from "./LpPopover-BQSuxtai.js";
6
+ import { _ as _sfc_main$1 } from "./LpPopover-w2rr4x7n.js";
7
7
  import { _ as _sfc_main$3 } from "./LpRollingText-B54Pje7P.js";
8
8
  const _hoisted_1 = ["data-lp-field-part"];
9
9
  const _hoisted_2 = ["id", "disabled", "aria-invalid", "aria-describedby"];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, useModel, openBlock, createBlock, withCtx, createVNode, mergeProps, createElementVNode, mergeModels } from "vue";
2
- import { _ as _sfc_main$2 } from "./LpButton-DSHioIfD.js";
2
+ import { _ as _sfc_main$2 } from "./LpButton-BvVoF-PO.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
4
- import { _ as _sfc_main$1 } from "./LpTooltip-Bz_rrq5S.js";
4
+ import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
5
5
  const _hoisted_1 = { class: "grid place-items-center" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  ...{ inheritAttrs: false },
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createElementBlock, Fragment, createVNode, withCtx, createElementVNode, toDisplayString, createCommentVNode, createBlock, createTextVNode } from "vue";
2
- import { _ as _sfc_main$5 } from "./LpButton-DSHioIfD.js";
2
+ import { _ as _sfc_main$5 } from "./LpButton-BvVoF-PO.js";
3
3
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
4
4
  import LpKeys from "../components/LpKeys.vue.js";
5
5
  import { _ as _sfc_main$3 } from "./LpRollingText-B54Pje7P.js";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createVNode, normalizeClass, unref, withCtx, Transition, normalizeProps, guardReactiveProps, createBlock, createElementVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./LpButton-DSHioIfD.js";
2
+ import { _ as _sfc_main$1 } from "./LpButton-BvVoF-PO.js";
3
3
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
4
- import { _ as _sfc_main$3 } from "./LpSlider-BCy5rjwK.js";
4
+ import { _ as _sfc_main$3 } from "./LpSlider-DUd4gXnw.js";
5
5
  import { OVERLAY_BUTTON, ICON_SWAP } from "../components/videoMotion.js";
6
6
  const _hoisted_1 = { class: "group/volume flex items-center" };
7
7
  const _hoisted_2 = { class: "w-0 overflow-hidden opacity-0 transition-[width,opacity] duration-(--duration-medium) ease-(--ease-emphasized) group-hover/volume:w-20 group-hover/volume:opacity-100 group-focus-within/volume:w-20 group-focus-within/volume:opacity-100 pointer-coarse:hidden motion-reduce:transition-none" };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/ContextMenuItems-D0jObgzN.js";
1
+ import { _ as _sfc_main } from "../chunks/ContextMenuItems-LujPZSWM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/DropzoneLinkField-DhwYRnvd.js";
1
+ import { _ as _sfc_main } from "../chunks/DropzoneLinkField-Ckuh8zFC.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/IconCloseButton-CmWOJAXG.js";
1
+ import { _ as _sfc_main } from "../chunks/IconCloseButton-C_V7qngw.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpActionBar-Cx_MSZl9.js";
1
+ import { _ as _sfc_main } from "../chunks/LpActionBar-43WHmTsM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-CfqQR5jE.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-BCqR0zmv.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAlert-CYtbpRYW.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAlert-Q0h7Gucu.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-BQG98odS.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-BWaVRsDB.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAutocomplete-VNID5zdy.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAutocomplete-YPxAPHEo.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpButton-DSHioIfD.js";
1
+ import { _ as _sfc_main } from "../chunks/LpButton-BvVoF-PO.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };