@leavepulse/ui 0.59.0 → 0.60.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.
- package/dist/assets/{LpCommandPalette-BM_IyzwB.css → LpCommandPalette-DA5pmuPi.css} +21 -21
- package/dist/assets/{LpTable-B_QCQCbB.css → LpTable-BZZf_rrt.css} +19 -19
- package/dist/chunks/{ContextMenuItems-CioDScj3.js → ContextMenuItems-qXReFtQW.js} +1 -1
- package/dist/chunks/{LayoutCanvas-BcGLJVBq.js → LayoutCanvas-t7LWFCEn.js} +1 -1
- package/dist/chunks/{LayoutNode-BkBn6dvM.js → LayoutNode-DHsE6GwM.js} +1 -1
- package/dist/chunks/{LpActionBar-DCN-_pZP.js → LpActionBar-BsSp66S_.js} +2 -2
- package/dist/chunks/{LpAddressInput-D-H94m4q.js → LpAddressInput-DD4zTN4P.js} +7 -7
- package/dist/chunks/{LpAlert-CXMn1GYE.js → LpAlert--KLL4NLk.js} +1 -1
- package/dist/chunks/{LpAppShell-BeMuKEjh.js → LpAppShell-Cv-Y9qNA.js} +3 -3
- package/dist/chunks/{LpAutocomplete-hJ_6CHlh.js → LpAutocomplete-PnL2ntKl.js} +1 -1
- package/dist/chunks/{LpAvatar-CeW4Z5CL.js → LpAvatar-CwGs1JCQ.js} +2 -2
- package/dist/chunks/{LpBreadcrumbs-BLzOEgAF.js → LpBreadcrumbs-CndzPYiG.js} +1 -1
- package/dist/chunks/{LpButton-vhlwmpBy.js → LpButton-CJSD7N0Z.js} +1 -1
- package/dist/chunks/{LpCalendar-BLoE8Qm7.js → LpCalendar-CXVDbb2M.js} +1 -1
- package/dist/chunks/{LpCard-Gbr8a1xK.js → LpCard-B2D0GIUU.js} +1 -1
- package/dist/chunks/{LpCheckbox-B_C8sOoT.js → LpCheckbox-DV9W6T3H.js} +1 -1
- package/dist/chunks/{LpCodeBlock-D6zhp30a.js → LpCodeBlock-t6MLA3fb.js} +1 -1
- package/dist/chunks/{LpColorPicker-CVXwjEtX.js → LpColorPicker-CvBF8TeL.js} +2 -2
- package/dist/chunks/{LpConfirmDialog-DkgIT-Xg.js → LpConfirmDialog-tkgyY3eu.js} +3 -3
- package/dist/chunks/{LpConfirmHost-CYzXWFOI.js → LpConfirmHost-CoYIcUdl.js} +1 -1
- package/dist/chunks/{LpContextMenu-DRFd-iyc.js → LpContextMenu-BnN1k7ga.js} +17 -5
- package/dist/chunks/{LpDatePicker-B-VMHMgy.js → LpDatePicker-DxdrVNCG.js} +3 -3
- package/dist/chunks/{LpDateRangePicker-B68KPKPl.js → LpDateRangePicker-DjeaqikC.js} +2 -2
- package/dist/chunks/{LpDisclosure-Ct-VBHxt.js → LpDisclosure-s8cQ7KQq.js} +1 -1
- package/dist/chunks/{LpDrawer-Rc6eAJrr.js → LpDrawer-C97yoWmh.js} +1 -1
- package/dist/chunks/{LpDropdownMenu-BoJQsjzt.js → LpDropdownMenu-CbyYu4Rw.js} +11 -4
- package/dist/chunks/{LpEmptyState-CBwwkkdA.js → LpEmptyState-CX8fdGSU.js} +1 -1
- package/dist/chunks/{LpFieldNotice-9hH4ITZa.js → LpFieldNotice-B--RzKfj.js} +1 -1
- package/dist/chunks/{LpFileTree-Bs57DhVa.js → LpFileTree-DEqh2ySW.js} +2 -2
- package/dist/chunks/{LpFileTreeNode-XgJW65v5.js → LpFileTreeNode-DCZA7sQ-.js} +3 -3
- package/dist/chunks/{LpFormField-BpQ6WJPe.js → LpFormField-DMPPL1jF.js} +1 -1
- package/dist/chunks/{LpHintLayer-B5-6FyEf.js → LpHintLayer-DsclGYcD.js} +1 -1
- package/dist/chunks/{LpHints-BqoZXHZk.js → LpHints-BTpvisgP.js} +10 -4
- package/dist/chunks/{LpIcon-B5guGKrW.js → LpIcon-CTuDVTYv.js} +1 -1
- package/dist/chunks/{LpInput-WvyP02ID.js → LpInput-C7FHxzj2.js} +2 -2
- package/dist/chunks/{LpLightbox-Dq-e36uT.js → LpLightbox-DiksFa4L.js} +1 -1
- package/dist/chunks/{LpLogViewer-B92bAftG.js → LpLogViewer-BuPe23sZ.js} +2 -2
- package/dist/chunks/{LpMapPicker-BH5csaBt.js → LpMapPicker-DybIlWnF.js} +1 -1
- package/dist/chunks/{LpMediaGallery-B1kDypJ-.js → LpMediaGallery-Cic9UHsa.js} +2 -2
- package/dist/chunks/{LpModal-DvGD6kEe.js → LpModal-QFfctZsj.js} +1 -1
- package/dist/chunks/{LpModalNav-B-_zRTS-.js → LpModalNav-Cw7m-eks.js} +4 -4
- package/dist/chunks/{LpNotificationBell-63pvatBj.js → LpNotificationBell-xH_JphpS.js} +4 -4
- package/dist/chunks/{LpNumberField-CJPjmoDz.js → LpNumberField-BFSRVGkJ.js} +1 -1
- package/dist/chunks/{LpPagination-DehAaJLY.js → LpPagination-BFl0I7tL.js} +1 -1
- package/dist/chunks/{LpPasswordInput-BK25_vNG.js → LpPasswordInput-C1G4k_r0.js} +2 -2
- package/dist/chunks/{LpPhoneInput-Bxg7a_qD.js → LpPhoneInput-CZrpVxla.js} +2 -2
- package/dist/chunks/{LpPie-Coa2GMHt.js → LpPie-BD5Lsh-2.js} +2 -2
- package/dist/chunks/{LpRangeCalendar-D5sDID9W.js → LpRangeCalendar-COeOYF52.js} +1 -1
- package/dist/chunks/{LpSection-B19VPYmr.js → LpSection-BAkbf0OK.js} +1 -1
- package/dist/chunks/{LpSegmented-DbrUjuSA.js → LpSegmented-DslFku0N.js} +1 -1
- package/dist/chunks/{LpSelect-DynjWK1A.js → LpSelect-C4OXN_q3.js} +1 -1
- package/dist/chunks/{LpSidebar-CKamWtPo.js → LpSidebar-B3E_iViL.js} +3 -3
- package/dist/chunks/{LpSidebarNav-Y4LV0ZEn.js → LpSidebarNav-32sAXNM-.js} +2 -2
- package/dist/chunks/{LpStat-BS2TEXYK.js → LpStat-oYk6V1LZ.js} +1 -1
- package/dist/chunks/{LpStepper-BSglWF45.js → LpStepper-YgHGzgfD.js} +1 -1
- package/dist/chunks/{LpTableFilter-CwHXVxJt.js → LpTableFilter-Ba-rS4H1.js} +2 -2
- package/dist/chunks/{LpTabs-D01b8jBI.js → LpTabs-00v3VQx4.js} +1 -1
- package/dist/chunks/{LpTagsInput-CHbQoAAA.js → LpTagsInput-Sc56iy_j.js} +3 -3
- package/dist/chunks/{LpTextarea-Bz2IWhTH.js → LpTextarea-CQZccQI3.js} +1 -1
- package/dist/chunks/{LpThemeSwitcher-CbzL6ipO.js → LpThemeSwitcher-CeBG0e_D.js} +2 -2
- package/dist/chunks/{LpTimeField-DvGXgdES.js → LpTimeField-BTEt0kvL.js} +1 -1
- package/dist/chunks/{LpToaster-C9EacEfR.js → LpToaster-BcKs7vX7.js} +1 -1
- package/dist/chunks/{LpTour-D7m9ZxNk.js → LpTour-C29-1wha.js} +4 -1
- package/dist/chunks/{MenuTitle-B9HdaBwE.js → MenuTitle-FeC6I24N.js} +1 -1
- package/dist/chunks/{TourCard-DCHOjr6e.js → TourCard-AjN0uhs1.js} +2 -2
- package/dist/chunks/{icons-QqBscG5I.js → icons-CuO3W46H.js} +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.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/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCalendar.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/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +30 -19
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.d.ts +7 -2
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.d.ts +7 -2
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +1 -1
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.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/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +4 -2
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.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/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +1 -1
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpTable.vue.js +11 -10
- 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/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/composables/useHintSystem.d.ts +65 -0
- package/dist/composables/useHintSystem.js +98 -12
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +62 -58
- package/package.json +1 -1
- package/src/components/LpCommandPalette.vue +26 -4
- package/src/components/LpContextMenu.vue +19 -1
- package/src/components/LpDropdownMenu.vue +13 -2
- package/src/components/LpHints.vue +7 -1
- package/src/components/LpTable.vue +1 -1
- package/src/components/LpTour.vue +3 -0
- package/src/composables/useHintSystem.ts +130 -12
- package/src/index.ts +2 -1
- package/src/kit-icons.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { _ } from "./chunks/LayoutCanvas-
|
|
2
|
-
import { _ as _2 } from "./chunks/LpAddressInput-
|
|
3
|
-
import { _ as _3 } from "./chunks/LpMapPicker-
|
|
1
|
+
import { _ } from "./chunks/LayoutCanvas-t7LWFCEn.js";
|
|
2
|
+
import { _ as _2 } from "./chunks/LpAddressInput-DD4zTN4P.js";
|
|
3
|
+
import { _ as _3 } from "./chunks/LpMapPicker-DybIlWnF.js";
|
|
4
4
|
import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
|
|
5
|
-
import { _ as _4 } from "./chunks/LpActionBar-
|
|
6
|
-
import { _ as _5 } from "./chunks/LpAlert
|
|
7
|
-
import { _ as _6 } from "./chunks/LpAppShell-
|
|
8
|
-
import { _ as _7 } from "./chunks/LpAutocomplete-
|
|
9
|
-
import { _ as _8 } from "./chunks/LpAvatar-
|
|
5
|
+
import { _ as _4 } from "./chunks/LpActionBar-BsSp66S_.js";
|
|
6
|
+
import { _ as _5 } from "./chunks/LpAlert--KLL4NLk.js";
|
|
7
|
+
import { _ as _6 } from "./chunks/LpAppShell-Cv-Y9qNA.js";
|
|
8
|
+
import { _ as _7 } from "./chunks/LpAutocomplete-PnL2ntKl.js";
|
|
9
|
+
import { _ as _8 } from "./chunks/LpAvatar-CwGs1JCQ.js";
|
|
10
10
|
import { _ as _9 } from "./chunks/LpBadge-Fe0D1bYx.js";
|
|
11
|
-
import { _ as _10 } from "./chunks/LpBreadcrumbs-
|
|
12
|
-
import { _ as _11 } from "./chunks/LpButton-
|
|
13
|
-
import { _ as _12 } from "./chunks/LpCalendar-
|
|
14
|
-
import { _ as _13 } from "./chunks/LpCard-
|
|
11
|
+
import { _ as _10 } from "./chunks/LpBreadcrumbs-CndzPYiG.js";
|
|
12
|
+
import { _ as _11 } from "./chunks/LpButton-CJSD7N0Z.js";
|
|
13
|
+
import { _ as _12 } from "./chunks/LpCalendar-CXVDbb2M.js";
|
|
14
|
+
import { _ as _13 } from "./chunks/LpCard-B2D0GIUU.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-
|
|
19
|
-
import { _ as _15 } from "./chunks/LpCodeBlock-
|
|
18
|
+
import { _ as _14 } from "./chunks/LpCheckbox-DV9W6T3H.js";
|
|
19
|
+
import { _ as _15 } from "./chunks/LpCodeBlock-t6MLA3fb.js";
|
|
20
20
|
import { tokenizeLines } from "./components/codeHighlight.js";
|
|
21
|
-
import { _ as _16 } from "./chunks/LpColorPicker-
|
|
21
|
+
import { _ as _16 } from "./chunks/LpColorPicker-CvBF8TeL.js";
|
|
22
22
|
import { DEFAULT_SWATCHES, clampHsv, formatColor, hsvToHsl, hsvToRgb, isLight, normalizeHue, opaqueCss, parseColor, parseHex, rgbToHex, rgbToHsv } from "./components/color.js";
|
|
23
23
|
import { default as default3 } from "./components/LpCommandPalette.vue.js";
|
|
24
24
|
import { applyQueryFilters, highlightParts, parseCommandQuery, parsePaletteQuery, rankCommandItems } from "./components/commandSearch.js";
|
|
@@ -30,46 +30,46 @@ 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-
|
|
34
|
-
import { _ as _19 } from "./chunks/LpConfirmHost-
|
|
33
|
+
import { _ as _18 } from "./chunks/LpConfirmDialog-tkgyY3eu.js";
|
|
34
|
+
import { _ as _19 } from "./chunks/LpConfirmHost-CoYIcUdl.js";
|
|
35
35
|
import { confirm, useConfirm } from "./components/confirm.js";
|
|
36
|
-
import { _ as _20 } from "./chunks/LpContextMenu-
|
|
37
|
-
import { _ as _21 } from "./chunks/LpDatePicker-
|
|
38
|
-
import { _ as _22 } from "./chunks/LpDateRangePicker-
|
|
39
|
-
import { _ as _23 } from "./chunks/LpRangeCalendar-
|
|
36
|
+
import { _ as _20 } from "./chunks/LpContextMenu-BnN1k7ga.js";
|
|
37
|
+
import { _ as _21 } from "./chunks/LpDatePicker-DxdrVNCG.js";
|
|
38
|
+
import { _ as _22 } from "./chunks/LpDateRangePicker-DjeaqikC.js";
|
|
39
|
+
import { _ as _23 } from "./chunks/LpRangeCalendar-COeOYF52.js";
|
|
40
40
|
import { clampRange, defaultRangePresets, formatRange, normalizeRange, sameRange } from "./components/dateRange.js";
|
|
41
|
-
import { _ as _24 } from "./chunks/LpDisclosure-
|
|
41
|
+
import { _ as _24 } from "./chunks/LpDisclosure-s8cQ7KQq.js";
|
|
42
42
|
import { _ as _25 } from "./chunks/LpDivider-CUX46KR0.js";
|
|
43
|
-
import { _ as _26 } from "./chunks/LpDrawer-
|
|
44
|
-
import { _ as _27 } from "./chunks/LpDropdownMenu-
|
|
43
|
+
import { _ as _26 } from "./chunks/LpDrawer-C97yoWmh.js";
|
|
44
|
+
import { _ as _27 } from "./chunks/LpDropdownMenu-CbyYu4Rw.js";
|
|
45
45
|
import { default as default9 } from "./components/LpDropzone.vue.js";
|
|
46
|
-
import { _ as _28 } from "./chunks/LpEmptyState-
|
|
47
|
-
import { _ as _29 } from "./chunks/LpFileTree-
|
|
46
|
+
import { _ as _28 } from "./chunks/LpEmptyState-CX8fdGSU.js";
|
|
47
|
+
import { _ as _29 } from "./chunks/LpFileTree-DEqh2ySW.js";
|
|
48
48
|
import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
|
|
49
|
-
import { _ as _30 } from "./chunks/LpFieldNotice-
|
|
50
|
-
import { _ as _31 } from "./chunks/LpFormField-
|
|
51
|
-
import { _ as _32 } from "./chunks/LpIcon-
|
|
52
|
-
import { i, b, a, c } from "./chunks/icons-
|
|
49
|
+
import { _ as _30 } from "./chunks/LpFieldNotice-B--RzKfj.js";
|
|
50
|
+
import { _ as _31 } from "./chunks/LpFormField-DMPPL1jF.js";
|
|
51
|
+
import { _ as _32 } from "./chunks/LpIcon-CTuDVTYv.js";
|
|
52
|
+
import { i, b, a, c } from "./chunks/icons-CuO3W46H.js";
|
|
53
53
|
import { default as default10 } from "./components/LpImageEditor.vue.js";
|
|
54
54
|
import { _ as _33 } from "./chunks/LpInfraNode-Ds_8SZgN.js";
|
|
55
|
-
import { _ as _34 } from "./chunks/LpInput-
|
|
56
|
-
import { _ as _35 } from "./chunks/LpLightbox-
|
|
55
|
+
import { _ as _34 } from "./chunks/LpInput-C7FHxzj2.js";
|
|
56
|
+
import { _ as _35 } from "./chunks/LpLightbox-DiksFa4L.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-
|
|
59
|
+
import { _ as _37 } from "./chunks/LpLogViewer-BuPe23sZ.js";
|
|
60
60
|
import { countLevels, matchPositions, matchesTerm, ringWindow, stepMatch } from "./components/logSearch.js";
|
|
61
|
-
import { _ as _38 } from "./chunks/LpMediaGallery-
|
|
62
|
-
import { _ as _39 } from "./chunks/LpModal-
|
|
63
|
-
import { _ as _40 } from "./chunks/LpModalNav-
|
|
64
|
-
import { _ as _41 } from "./chunks/LpNotificationBell-
|
|
65
|
-
import { _ as _42 } from "./chunks/LpNumberField-
|
|
66
|
-
import { _ as _43 } from "./chunks/LpTimeField-
|
|
61
|
+
import { _ as _38 } from "./chunks/LpMediaGallery-Cic9UHsa.js";
|
|
62
|
+
import { _ as _39 } from "./chunks/LpModal-QFfctZsj.js";
|
|
63
|
+
import { _ as _40 } from "./chunks/LpModalNav-Cw7m-eks.js";
|
|
64
|
+
import { _ as _41 } from "./chunks/LpNotificationBell-xH_JphpS.js";
|
|
65
|
+
import { _ as _42 } from "./chunks/LpNumberField-BFSRVGkJ.js";
|
|
66
|
+
import { _ as _43 } from "./chunks/LpTimeField-BTEt0kvL.js";
|
|
67
67
|
import { _ as _44 } from "./chunks/LpNumberFlow-z4WPZcZu.js";
|
|
68
68
|
import { _ as _45 } from "./chunks/LpOtpInput-PbeNJ5In.js";
|
|
69
|
-
import { _ as _46 } from "./chunks/LpPagination-
|
|
70
|
-
import { _ as _47 } from "./chunks/LpPasswordInput-
|
|
71
|
-
import { _ as _48 } from "./chunks/LpPie-
|
|
72
|
-
import { _ as _49 } from "./chunks/LpPhoneInput-
|
|
69
|
+
import { _ as _46 } from "./chunks/LpPagination-BFl0I7tL.js";
|
|
70
|
+
import { _ as _47 } from "./chunks/LpPasswordInput-C1G4k_r0.js";
|
|
71
|
+
import { _ as _48 } from "./chunks/LpPie-BD5Lsh-2.js";
|
|
72
|
+
import { _ as _49 } from "./chunks/LpPhoneInput-CZrpVxla.js";
|
|
73
73
|
import { filterCountries, flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
|
|
74
74
|
import { _ as _50 } from "./chunks/LpPopover-DCKeqiVn.js";
|
|
75
75
|
import { _ as _51 } from "./chunks/LpProgress-CBU1iI69.js";
|
|
@@ -77,38 +77,38 @@ import { _ as _52 } from "./chunks/LpRadio-CWA5Eb3M.js";
|
|
|
77
77
|
import { _ as _53 } from "./chunks/LpRadioGroup-CCn-Q2_c.js";
|
|
78
78
|
import { _ as _54 } from "./chunks/LpRollingText-DB7upf-5.js";
|
|
79
79
|
import { _ as _55 } from "./chunks/LpScrollArea-Hz3-JWUG.js";
|
|
80
|
-
import { _ as _56 } from "./chunks/LpSegmented-
|
|
81
|
-
import { _ as _57 } from "./chunks/LpSection-
|
|
82
|
-
import { _ as _58 } from "./chunks/LpSelect-
|
|
80
|
+
import { _ as _56 } from "./chunks/LpSegmented-DslFku0N.js";
|
|
81
|
+
import { _ as _57 } from "./chunks/LpSection-BAkbf0OK.js";
|
|
82
|
+
import { _ as _58 } from "./chunks/LpSelect-C4OXN_q3.js";
|
|
83
83
|
import { _ as _59 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
|
|
84
84
|
import { _ as _60 } from "./chunks/LpShift-DXNsauQZ.js";
|
|
85
85
|
import { default as default11 } from "./components/LpShortcutsDialog.vue.js";
|
|
86
|
-
import { _ as _61 } from "./chunks/LpSidebar-
|
|
86
|
+
import { _ as _61 } from "./chunks/LpSidebar-B3E_iViL.js";
|
|
87
87
|
import { _ as _62 } from "./chunks/LpSkeleton-BB6XIV-w.js";
|
|
88
88
|
import { _ as _63 } from "./chunks/LpSlider-Cuzmrd7p.js";
|
|
89
89
|
import { _ as _64 } from "./chunks/LpRangeSlider-C1yF9-nP.js";
|
|
90
90
|
import { _ as _65 } from "./chunks/LpVideoBackdrop-qWRYBOTQ.js";
|
|
91
91
|
import { formatClipTime, isNativeLoop, planLoop, seamProgress, seamReached } from "./components/videoBackdrop.js";
|
|
92
92
|
import { _ as _66 } from "./chunks/LpSparkline-CB80N8SJ.js";
|
|
93
|
-
import { _ as _67 } from "./chunks/LpStat-
|
|
94
|
-
import { _ as _68 } from "./chunks/LpStepper-
|
|
93
|
+
import { _ as _67 } from "./chunks/LpStat-oYk6V1LZ.js";
|
|
94
|
+
import { _ as _68 } from "./chunks/LpStepper-YgHGzgfD.js";
|
|
95
95
|
import { _ as _69 } from "./chunks/LpSwitch-DG2AhXIL.js";
|
|
96
96
|
import { default as default12 } from "./components/LpTable.vue.js";
|
|
97
97
|
import { compareValues } from "./components/tableSort.js";
|
|
98
98
|
import { _ as _70 } from "./chunks/LpTableOfContents-DYuqkByy.js";
|
|
99
|
-
import { _ as _71 } from "./chunks/LpTabs-
|
|
100
|
-
import { _ as _72 } from "./chunks/LpTagsInput-
|
|
99
|
+
import { _ as _71 } from "./chunks/LpTabs-00v3VQx4.js";
|
|
100
|
+
import { _ as _72 } from "./chunks/LpTagsInput-Sc56iy_j.js";
|
|
101
101
|
import { addTags, splitTags } from "./components/tags.js";
|
|
102
|
-
import { _ as _73 } from "./chunks/LpTextarea-
|
|
103
|
-
import { _ as _74 } from "./chunks/LpThemeSwitcher-
|
|
102
|
+
import { _ as _73 } from "./chunks/LpTextarea-CQZccQI3.js";
|
|
103
|
+
import { _ as _74 } from "./chunks/LpThemeSwitcher-CeBG0e_D.js";
|
|
104
104
|
import { _ as _75 } from "./chunks/LpTilt-B7KHX1zH.js";
|
|
105
|
-
import { _ as _76 } from "./chunks/LpToaster-
|
|
105
|
+
import { _ as _76 } from "./chunks/LpToaster-BcKs7vX7.js";
|
|
106
106
|
import { _ as _77 } from "./chunks/LpTooltip-suFCM34F.js";
|
|
107
|
-
import { _ as _78 } from "./chunks/LpTour-
|
|
107
|
+
import { _ as _78 } from "./chunks/LpTour-C29-1wha.js";
|
|
108
108
|
import { holeOf, openContextMenu, panelsAround } from "./components/tour.js";
|
|
109
|
-
import { _ as _79 } from "./chunks/LpHintLayer-
|
|
110
|
-
import { _ as _80 } from "./chunks/LpHints-
|
|
111
|
-
import { createHintSystem, hintKey, hintSummary, localHintStorage, provideHintSystem, useHintSystem } from "./composables/useHintSystem.js";
|
|
109
|
+
import { _ as _79 } from "./chunks/LpHintLayer-DsclGYcD.js";
|
|
110
|
+
import { _ as _80 } from "./chunks/LpHints-BTpvisgP.js";
|
|
111
|
+
import { HINT_SIGNALS, contextMenuTip, createHintSystem, hintKey, hintSummary, localHintStorage, paletteTip, provideHintSystem, runningHintSystem, useHintSystem } from "./composables/useHintSystem.js";
|
|
112
112
|
import { _ as _81 } from "./chunks/LpTooltipProvider-CftjV7Xc.js";
|
|
113
113
|
import { _ as _82 } from "./chunks/LpTopologyCanvas-6ozNrQKh.js";
|
|
114
114
|
import { _ as _83 } from "./chunks/LpUptimeBar-B4ltCfno.js";
|
|
@@ -184,6 +184,7 @@ export {
|
|
|
184
184
|
DEFAULT_SWATCHES,
|
|
185
185
|
FIELD_NOTICE_MS,
|
|
186
186
|
G as GLASS_BACKDROP_ATTR,
|
|
187
|
+
HINT_SIGNALS,
|
|
187
188
|
LP_CONFIG,
|
|
188
189
|
LP_FIELD,
|
|
189
190
|
_ as LayoutCanvas,
|
|
@@ -314,6 +315,7 @@ export {
|
|
|
314
315
|
compareValues,
|
|
315
316
|
computeStats,
|
|
316
317
|
confirm,
|
|
318
|
+
contextMenuTip,
|
|
317
319
|
countBlocks,
|
|
318
320
|
countLeaves,
|
|
319
321
|
countLevels,
|
|
@@ -388,6 +390,7 @@ export {
|
|
|
388
390
|
k as normalizeTheme,
|
|
389
391
|
opaqueCss,
|
|
390
392
|
openContextMenu,
|
|
393
|
+
paletteTip,
|
|
391
394
|
panelsAround,
|
|
392
395
|
parseColor,
|
|
393
396
|
parseCommandQuery,
|
|
@@ -424,6 +427,7 @@ export {
|
|
|
424
427
|
rgbToHsv,
|
|
425
428
|
ringWindow,
|
|
426
429
|
o as rose,
|
|
430
|
+
runningHintSystem,
|
|
427
431
|
sameRange,
|
|
428
432
|
scrollParent,
|
|
429
433
|
scrollToElement,
|
package/package.json
CHANGED
|
@@ -44,6 +44,8 @@ import { useAsyncTask } from "../composables/useAsyncTask"
|
|
|
44
44
|
import { useGlass } from "../composables/useGlass"
|
|
45
45
|
import { useClipboard } from "../composables/useClipboard"
|
|
46
46
|
import { useHotkeys } from "../composables/useHotkeys"
|
|
47
|
+
import { hints } from "../composables/useHints"
|
|
48
|
+
import { HINT_SIGNALS, runningHintSystem } from "../composables/useHintSystem"
|
|
47
49
|
import { useModalLayer } from "./modalDepth"
|
|
48
50
|
import { useLabels } from "../composables/useLpConfig"
|
|
49
51
|
import {
|
|
@@ -516,9 +518,20 @@ function onTab(event: KeyboardEvent) {
|
|
|
516
518
|
event.stopPropagation()
|
|
517
519
|
const actionsMode: Command = { id: `${c.id}:actions`, label: c.label, icon: c.icon, children: actions }
|
|
518
520
|
syntheticModes.add(actionsMode)
|
|
521
|
+
hints.use(HINT_SIGNALS.paletteActions)
|
|
519
522
|
enter(actionsMode)
|
|
520
523
|
}
|
|
521
524
|
|
|
525
|
+
// A returning user who never pressed Tab gets the footer key lit up, nothing
|
|
526
|
+
// more: the palette is the one place they already came to on purpose.
|
|
527
|
+
const PALETTE_ACTIONS_AFTER = 3
|
|
528
|
+
const showActionsKey = computed(() => {
|
|
529
|
+
const system = runningHintSystem()
|
|
530
|
+
return !!system?.state.loaded
|
|
531
|
+
&& system.count(HINT_SIGNALS.palette) >= PALETTE_ACTIONS_AFTER
|
|
532
|
+
&& system.count(HINT_SIGNALS.paletteActions) === 0
|
|
533
|
+
})
|
|
534
|
+
|
|
522
535
|
/*
|
|
523
536
|
* A mode holds the command it was entered through, and a static `children`
|
|
524
537
|
* list is a snapshot of that moment. When the app rebuilds its commands (a
|
|
@@ -1162,8 +1175,10 @@ function onEscape(event: KeyboardEvent) {
|
|
|
1162
1175
|
watch(
|
|
1163
1176
|
() => props.open,
|
|
1164
1177
|
async (o) => {
|
|
1165
|
-
if (o)
|
|
1166
|
-
|
|
1178
|
+
if (o) {
|
|
1179
|
+
claim()
|
|
1180
|
+
hints.use(HINT_SIGNALS.palette)
|
|
1181
|
+
} else release()
|
|
1167
1182
|
cancel()
|
|
1168
1183
|
query.value = ""
|
|
1169
1184
|
select(0)
|
|
@@ -1461,8 +1476,15 @@ useHotkeys(() =>
|
|
|
1461
1476
|
</span>
|
|
1462
1477
|
<!-- Only inside a mode: at the root Backspace just edits the query,
|
|
1463
1478
|
and advertising it there would be a lie. -->
|
|
1464
|
-
<span
|
|
1465
|
-
|
|
1479
|
+
<span
|
|
1480
|
+
v-if="selectedActions.length"
|
|
1481
|
+
class="flex items-center gap-1 transition-colors"
|
|
1482
|
+
:class="showActionsKey && 'font-medium text-brand'"
|
|
1483
|
+
>
|
|
1484
|
+
<kbd
|
|
1485
|
+
class="rounded-small border px-1 text-[10px] transition-colors"
|
|
1486
|
+
:class="showActionsKey ? 'border-brand' : 'border-line'"
|
|
1487
|
+
>tab</kbd>
|
|
1466
1488
|
{{ text.actions }}
|
|
1467
1489
|
</span>
|
|
1468
1490
|
<span v-if="trail.length" class="flex items-center gap-1">
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { ContextMenuContent, ContextMenuPortal, ContextMenuRoot, ContextMenuTrigger } from "reka-ui"
|
|
10
10
|
import { computed } from "vue"
|
|
11
|
+
import { hints } from "../composables/useHints"
|
|
12
|
+
import { HINT_SIGNALS } from "../composables/useHintSystem"
|
|
11
13
|
import ContextMenuItems from "./ContextMenuItems.vue"
|
|
12
14
|
import MenuTitle from "./MenuTitle.vue"
|
|
13
15
|
import { POPOVER_PANEL } from "./dropdown"
|
|
@@ -52,6 +54,11 @@ const props = defineProps<{
|
|
|
52
54
|
/** An icon beside the title, or `titleImage` for a picture (an avatar, a logo). */
|
|
53
55
|
titleIcon?: string
|
|
54
56
|
titleImage?: string
|
|
57
|
+
/**
|
|
58
|
+
* Do not count this element as "has a right-click menu" for hint tips: for
|
|
59
|
+
* menus that only hold generic items (a whole table without row actions).
|
|
60
|
+
*/
|
|
61
|
+
noHint?: boolean
|
|
55
62
|
}>()
|
|
56
63
|
|
|
57
64
|
// With no items the trigger is disabled, so the element keeps the browser's
|
|
@@ -59,6 +66,7 @@ const props = defineProps<{
|
|
|
59
66
|
// per element. `always` overrides this so a late-populated menu is ready on the
|
|
60
67
|
// very first click.
|
|
61
68
|
const enabled = computed(() => props.always || props.items.length > 0)
|
|
69
|
+
const hinted = computed(() => enabled.value && !props.noHint)
|
|
62
70
|
|
|
63
71
|
const PANEL = `${POPOVER_PANEL} z-(--z-popover) min-w-48 p-1 outline-none`
|
|
64
72
|
|
|
@@ -91,6 +99,14 @@ function keepContextMenu(event: Event) {
|
|
|
91
99
|
if (enabled.value) event.stopPropagation()
|
|
92
100
|
}
|
|
93
101
|
|
|
102
|
+
function opened(open: boolean) {
|
|
103
|
+
if (open) hints.use(HINT_SIGNALS.contextMenu)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function leftClick() {
|
|
107
|
+
if (hinted.value) hints.use(HINT_SIGNALS.contextTarget)
|
|
108
|
+
}
|
|
109
|
+
|
|
94
110
|
function returnFocus(event: Event) {
|
|
95
111
|
const saved = field
|
|
96
112
|
field = null
|
|
@@ -106,10 +122,12 @@ function returnFocus(event: Event) {
|
|
|
106
122
|
the reka trigger remounted the wrapped content whenever items arrived
|
|
107
123
|
late, losing its state and focus. A disabled trigger leaves the browser's
|
|
108
124
|
own menu in place. -->
|
|
109
|
-
<ContextMenuRoot>
|
|
125
|
+
<ContextMenuRoot @update:open="opened">
|
|
110
126
|
<ContextMenuTrigger
|
|
111
127
|
as-child
|
|
112
128
|
:disabled="!enabled"
|
|
129
|
+
:data-lp-context-menu="hinted ? '' : undefined"
|
|
130
|
+
@click.capture="leftClick"
|
|
113
131
|
@contextmenu.capture="rememberField"
|
|
114
132
|
@contextmenu="keepContextMenu"
|
|
115
133
|
>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { hints } from "../composables/useHints"
|
|
3
|
+
import { HINT_SIGNALS } from "../composables/useHintSystem"
|
|
2
4
|
import {
|
|
3
5
|
DropdownMenuContent,
|
|
4
6
|
DropdownMenuItem,
|
|
@@ -20,18 +22,27 @@ export interface MenuItem {
|
|
|
20
22
|
onSelect?: () => void
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
defineProps<{
|
|
25
|
+
const props = defineProps<{
|
|
24
26
|
items: MenuItem[]
|
|
25
27
|
/** A heading naming what the menu acts on; see LpContextMenu's `title`. */
|
|
26
28
|
title?: string
|
|
27
29
|
subtitle?: string
|
|
28
30
|
titleIcon?: string
|
|
29
31
|
titleImage?: string
|
|
32
|
+
/**
|
|
33
|
+
* The same items are also on a right click (a row's "…" next to its context
|
|
34
|
+
* menu). Opening it then counts toward the hint system's right-click tip.
|
|
35
|
+
*/
|
|
36
|
+
rightClickToo?: boolean
|
|
30
37
|
}>()
|
|
38
|
+
|
|
39
|
+
function opened(open: boolean) {
|
|
40
|
+
if (open && props.rightClickToo) hints.use(HINT_SIGNALS.menuButton)
|
|
41
|
+
}
|
|
31
42
|
</script>
|
|
32
43
|
|
|
33
44
|
<template>
|
|
34
|
-
<DropdownMenuRoot>
|
|
45
|
+
<DropdownMenuRoot @update:open="opened">
|
|
35
46
|
<DropdownMenuTrigger as-child>
|
|
36
47
|
<slot name="trigger" />
|
|
37
48
|
</DropdownMenuTrigger>
|
|
@@ -68,6 +68,7 @@ const title = computed(() => {
|
|
|
68
68
|
const o = offer.value
|
|
69
69
|
if (!o) return ""
|
|
70
70
|
if (o.kind === "nudge") return notes.value[o.nudge.feature]?.title ?? ""
|
|
71
|
+
if (o.kind === "tip") return o.tip.title
|
|
71
72
|
if (o.kind === "news") return fill(labels.value.newsTitle)
|
|
72
73
|
return fill(o.kind === "assigned" ? labels.value.assignedTitle : labels.value.tourTitle)
|
|
73
74
|
})
|
|
@@ -76,6 +77,7 @@ const description = computed(() => {
|
|
|
76
77
|
const o = offer.value
|
|
77
78
|
if (!o) return ""
|
|
78
79
|
if (o.kind === "nudge") return o.nudge.text
|
|
80
|
+
if (o.kind === "tip") return o.tip.keys ? `${o.tip.text} ${o.tip.keys}` : o.tip.text
|
|
79
81
|
if (o.kind === "news") return o.items.map((n) => n.text).join(" ")
|
|
80
82
|
return o.kind === "assigned" ? labels.value.assignedText : labels.value.tourText
|
|
81
83
|
})
|
|
@@ -86,6 +88,10 @@ const actions = computed<ActionBarAction[]>(() => {
|
|
|
86
88
|
const answer = (choice: "show" | "later" | "never") => () => props.system.answer(choice)
|
|
87
89
|
const show: ActionBarAction = { label: labels.value.show, icon: "lucide:sparkles", onClick: answer("show") }
|
|
88
90
|
if (o.kind === "nudge") return [{ label: labels.value.noThanks, variant: "ghost", onClick: answer("never") }, show]
|
|
91
|
+
if (o.kind === "tip") {
|
|
92
|
+
const later: ActionBarAction = { label: labels.value.gotIt, variant: o.tip.step ? "ghost" : undefined, onClick: answer("later") }
|
|
93
|
+
return [{ label: labels.value.never, variant: "ghost", onClick: answer("never") }, later, ...(o.tip.step ? [show] : [])]
|
|
94
|
+
}
|
|
89
95
|
if (o.kind === "news") return [{ label: labels.value.gotIt, variant: "ghost", onClick: answer("later") }, show]
|
|
90
96
|
return [
|
|
91
97
|
...(o.kind === "tour" ? [{ label: labels.value.never, variant: "ghost" as const, onClick: answer("never") }] : []),
|
|
@@ -109,7 +115,7 @@ const actions = computed<ActionBarAction[]>(() => {
|
|
|
109
115
|
:open="!!offer"
|
|
110
116
|
:title="title"
|
|
111
117
|
:description="description"
|
|
112
|
-
:icon="offer?.kind === 'news' ? 'lucide:gift' : 'lucide:compass'"
|
|
118
|
+
:icon="offer?.kind === 'news' ? 'lucide:gift' : offer?.kind === 'tip' ? 'lucide:lightbulb' : 'lucide:compass'"
|
|
113
119
|
:actions="actions"
|
|
114
120
|
/>
|
|
115
121
|
</template>
|
|
@@ -1157,7 +1157,7 @@ const barInsetTop = computed(() =>
|
|
|
1157
1157
|
<!-- The table-wide menu, which is what a right-click on empty header space
|
|
1158
1158
|
reaches: rows and headers carry their own and take the event first, so
|
|
1159
1159
|
this is the fallback rather than a competitor. -->
|
|
1160
|
-
<LpContextMenu :items="contextMenu" always>
|
|
1160
|
+
<LpContextMenu :items="contextMenu" always :no-hint="!rowMenu">
|
|
1161
1161
|
<table ref="tableEl" class="w-full border-collapse text-sm">
|
|
1162
1162
|
<!-- The background belongs on `thead` itself, not only on its row:
|
|
1163
1163
|
`border-collapse` collapses the borders, and with a sticky header the
|
|
@@ -270,10 +270,12 @@ watch(
|
|
|
270
270
|
if (value) {
|
|
271
271
|
direction = 1
|
|
272
272
|
document.addEventListener("click", onTargetClick, true)
|
|
273
|
+
document.addEventListener("contextmenu", onTargetClick, true)
|
|
273
274
|
frame ||= requestAnimationFrame(track)
|
|
274
275
|
void show()
|
|
275
276
|
} else {
|
|
276
277
|
document.removeEventListener("click", onTargetClick, true)
|
|
278
|
+
document.removeEventListener("contextmenu", onTargetClick, true)
|
|
277
279
|
end()
|
|
278
280
|
}
|
|
279
281
|
},
|
|
@@ -286,6 +288,7 @@ watch(index, () => {
|
|
|
286
288
|
|
|
287
289
|
onBeforeUnmount(() => {
|
|
288
290
|
document.removeEventListener("click", onTargetClick, true)
|
|
291
|
+
document.removeEventListener("contextmenu", onTargetClick, true)
|
|
289
292
|
if (open.value) end()
|
|
290
293
|
})
|
|
291
294
|
|