@leavepulse/ui 0.46.0 → 0.48.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 (75) hide show
  1. package/dist/assets/HighlightText-BwC5xbqn.css +6 -0
  2. package/dist/assets/{LpCommandPalette-5miKYsb-.css → LpCommandPalette-DmQUsJqA.css} +21 -21
  3. package/dist/assets/LpKeys-BxRhfQda.css +36 -0
  4. package/dist/assets/LpPaletteFacts-B9FdVmIO.css +93 -0
  5. package/dist/assets/LpPaletteHeader-BVOu1UX5.css +70 -0
  6. package/dist/assets/LpPalettePreview-CJmAKgYW.css +43 -0
  7. package/dist/assets/LpPaletteStats-ClE-37MK.css +33 -0
  8. package/dist/assets/LpPaletteSwatches-CA0B8y2E.css +21 -0
  9. package/dist/assets/{LpShortcutsDialog-CqYX3yy6.css → LpShortcutsDialog-BUp_BX4s.css} +7 -28
  10. package/dist/assets/{LpTable-BoeA_TgK.css → LpTable-xWwI4KPZ.css} +17 -17
  11. package/dist/chunks/HighlightText-BvnYZkhi.js +27 -0
  12. package/dist/chunks/{LpAvatar-DeSb6H0c.js → LpAvatar-Cb1jtOVv.js} +21 -3
  13. package/dist/chunks/{LpLightbox-DSDahF23.js → LpLightbox-EVXzAq62.js} +3 -3
  14. package/dist/chunks/{LpMediaGallery-YKr-cQPN.js → LpMediaGallery-BnlkN_1f.js} +1 -1
  15. package/dist/chunks/LpPalettePreview-CFav_7co.js +19 -0
  16. package/dist/chunks/LpRangeSlider-C1yF9-nP.js +86 -0
  17. package/dist/chunks/LpVideoBackdrop-DN6xPUav.js +251 -0
  18. package/dist/component-names.d.ts +1 -1
  19. package/dist/components/HighlightText.vue.d.ts +7 -0
  20. package/dist/components/HighlightText.vue.js +4 -0
  21. package/dist/components/LpAvatar.vue.d.ts +12 -0
  22. package/dist/components/LpAvatar.vue.js +1 -1
  23. package/dist/components/LpCommandPalette.vue.d.ts +152 -15
  24. package/dist/components/LpCommandPalette.vue.js +178 -92
  25. package/dist/components/LpKeys.vue.d.ts +22 -0
  26. package/dist/components/LpKeys.vue.js +52 -0
  27. package/dist/components/LpLightbox.vue.js +1 -1
  28. package/dist/components/LpMediaGallery.vue.js +1 -1
  29. package/dist/components/LpPaletteFacts.vue.d.ts +25 -0
  30. package/dist/components/LpPaletteFacts.vue.js +85 -0
  31. package/dist/components/LpPaletteHeader.vue.d.ts +32 -0
  32. package/dist/components/LpPaletteHeader.vue.js +103 -0
  33. package/dist/components/LpPalettePreview.vue.d.ts +19 -0
  34. package/dist/components/LpPalettePreview.vue.js +4 -0
  35. package/dist/components/LpPaletteStats.vue.d.ts +11 -0
  36. package/dist/components/LpPaletteStats.vue.js +47 -0
  37. package/dist/components/LpPaletteSwatches.vue.d.ts +10 -0
  38. package/dist/components/LpPaletteSwatches.vue.js +34 -0
  39. package/dist/components/LpRangeSlider.vue.d.ts +39 -0
  40. package/dist/components/LpRangeSlider.vue.js +4 -0
  41. package/dist/components/LpShortcutsDialog.vue.js +8 -28
  42. package/dist/components/LpTable.vue.js +5 -3
  43. package/dist/components/LpVideoBackdrop.vue.d.ts +61 -0
  44. package/dist/components/LpVideoBackdrop.vue.js +4 -0
  45. package/dist/components/commandPalette.d.ts +157 -0
  46. package/dist/components/commandPalette.js +103 -0
  47. package/dist/components/commandSearch.d.ts +32 -0
  48. package/dist/components/commandSearch.js +48 -0
  49. package/dist/components/keys.d.ts +2 -0
  50. package/dist/components/keys.js +11 -0
  51. package/dist/components/videoBackdrop.d.ts +37 -0
  52. package/dist/components/videoBackdrop.js +40 -0
  53. package/dist/index.d.ts +16 -3
  54. package/dist/index.js +167 -134
  55. package/package.json +1 -1
  56. package/src/component-names.ts +9 -1
  57. package/src/components/HighlightText.vue +28 -0
  58. package/src/components/LpAvatar.vue +21 -2
  59. package/src/components/LpCommandPalette.vue +387 -87
  60. package/src/components/LpKeys.vue +79 -0
  61. package/src/components/LpLightbox.vue +4 -1
  62. package/src/components/LpPaletteFacts.vue +165 -0
  63. package/src/components/LpPaletteHeader.vue +155 -0
  64. package/src/components/LpPalettePreview.vue +77 -0
  65. package/src/components/LpPaletteStats.vue +81 -0
  66. package/src/components/LpPaletteSwatches.vue +56 -0
  67. package/src/components/LpRangeSlider.vue +96 -0
  68. package/src/components/LpShortcutsDialog.vue +2 -45
  69. package/src/components/LpTable.vue +6 -1
  70. package/src/components/LpVideoBackdrop.vue +303 -0
  71. package/src/components/commandPalette.ts +264 -0
  72. package/src/components/commandSearch.ts +79 -0
  73. package/src/components/keys.ts +13 -0
  74. package/src/components/videoBackdrop.ts +73 -0
  75. package/src/index.ts +16 -3
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { _ as _4 } from "./chunks/LpActionBar-CnfFVIwC.js";
6
6
  import { _ as _5 } from "./chunks/LpAlert-B6ilrM7T.js";
7
7
  import { _ as _6 } from "./chunks/LpAppShell-BmMYcEVx.js";
8
8
  import { _ as _7 } from "./chunks/LpAutocomplete-C8IgSMsi.js";
9
- import { _ as _8 } from "./chunks/LpAvatar-DeSb6H0c.js";
9
+ import { _ as _8 } from "./chunks/LpAvatar-Cb1jtOVv.js";
10
10
  import { _ as _9 } from "./chunks/LpBadge-Fe0D1bYx.js";
11
11
  import { _ as _10 } from "./chunks/LpBreadcrumbs-CQJd73Gm.js";
12
12
  import { _ as _11 } from "./chunks/LpButton-CKSwC6Mu.js";
@@ -21,81 +21,92 @@ import { tokenizeLines } from "./components/codeHighlight.js";
21
21
  import { _ as _16 } from "./chunks/LpColorPicker-BLqPX5Vw.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
- import { parseCommandQuery, rankCommandItems } from "./components/commandSearch.js";
25
- import { _ as _17 } from "./chunks/LpConfirmDialog-Ca-CTlxT.js";
26
- import { _ as _18 } from "./chunks/LpConfirmHost-BAaSaT2b.js";
24
+ import { applyQueryFilters, highlightParts, parseCommandQuery, parsePaletteQuery, rankCommandItems } from "./components/commandSearch.js";
25
+ import { commandHasPreview, pushRecent, readRecent, toRecentItem } from "./components/commandPalette.js";
26
+ import { _ as _17 } from "./chunks/LpPalettePreview-CFav_7co.js";
27
+ import { default as default4 } from "./components/LpPaletteHeader.vue.js";
28
+ import { default as default5 } from "./components/LpPaletteFacts.vue.js";
29
+ import { default as default6 } from "./components/LpPaletteStats.vue.js";
30
+ import { default as default7 } from "./components/LpPaletteSwatches.vue.js";
31
+ import { default as default8 } from "./components/LpKeys.vue.js";
32
+ import { comboKeys, comboSteps } from "./components/keys.js";
33
+ import { _ as _18 } from "./chunks/LpConfirmDialog-Ca-CTlxT.js";
34
+ import { _ as _19 } from "./chunks/LpConfirmHost-BAaSaT2b.js";
27
35
  import { confirm, useConfirm } from "./components/confirm.js";
28
- import { _ as _19 } from "./chunks/LpContextMenu-1cKew_Dc.js";
29
- import { _ as _20 } from "./chunks/LpDatePicker-BrdFtSTy.js";
30
- import { _ as _21 } from "./chunks/LpDateRangePicker-Drd7EbIz.js";
31
- import { _ as _22 } from "./chunks/LpRangeCalendar-DZuaRV0W.js";
36
+ import { _ as _20 } from "./chunks/LpContextMenu-1cKew_Dc.js";
37
+ import { _ as _21 } from "./chunks/LpDatePicker-BrdFtSTy.js";
38
+ import { _ as _22 } from "./chunks/LpDateRangePicker-Drd7EbIz.js";
39
+ import { _ as _23 } from "./chunks/LpRangeCalendar-DZuaRV0W.js";
32
40
  import { clampRange, defaultRangePresets, formatRange, normalizeRange, sameRange } from "./components/dateRange.js";
33
- import { _ as _23 } from "./chunks/LpDisclosure-Cc23-JOT.js";
34
- import { _ as _24 } from "./chunks/LpDivider-CUX46KR0.js";
35
- import { _ as _25 } from "./chunks/LpDrawer-CBFVD624.js";
36
- import { _ as _26 } from "./chunks/LpDropdownMenu-DrpJJBp0.js";
37
- import { default as default4 } from "./components/LpDropzone.vue.js";
38
- import { _ as _27 } from "./chunks/LpEmptyState-BJbZXC8D.js";
39
- import { _ as _28 } from "./chunks/LpFileTree-bk5VjBey.js";
41
+ import { _ as _24 } from "./chunks/LpDisclosure-Cc23-JOT.js";
42
+ import { _ as _25 } from "./chunks/LpDivider-CUX46KR0.js";
43
+ import { _ as _26 } from "./chunks/LpDrawer-CBFVD624.js";
44
+ import { _ as _27 } from "./chunks/LpDropdownMenu-DrpJJBp0.js";
45
+ import { default as default9 } from "./components/LpDropzone.vue.js";
46
+ import { _ as _28 } from "./chunks/LpEmptyState-BJbZXC8D.js";
47
+ import { _ as _29 } from "./chunks/LpFileTree-bk5VjBey.js";
40
48
  import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
41
- import { _ as _29 } from "./chunks/LpFieldNotice-wtieLUTj.js";
42
- import { _ as _30 } from "./chunks/LpFormField-CtVYj6tO.js";
43
- import { _ as _31 } from "./chunks/LpIcon-DYtaid0K.js";
49
+ import { _ as _30 } from "./chunks/LpFieldNotice-wtieLUTj.js";
50
+ import { _ as _31 } from "./chunks/LpFormField-CtVYj6tO.js";
51
+ import { _ as _32 } from "./chunks/LpIcon-DYtaid0K.js";
44
52
  import { i, b, a, c } from "./chunks/icons-CkA0njzm.js";
45
- import { default as default5 } from "./components/LpImageEditor.vue.js";
46
- import { _ as _32 } from "./chunks/LpInfraNode-Ds_8SZgN.js";
47
- import { _ as _33 } from "./chunks/LpInput-D-YGQbEv.js";
48
- import { _ as _34 } from "./chunks/LpLightbox-DSDahF23.js";
53
+ import { default as default10 } from "./components/LpImageEditor.vue.js";
54
+ import { _ as _33 } from "./chunks/LpInfraNode-Ds_8SZgN.js";
55
+ import { _ as _34 } from "./chunks/LpInput-D-YGQbEv.js";
56
+ import { _ as _35 } from "./chunks/LpLightbox-EVXzAq62.js";
49
57
  import { fileNameOf } from "./components/lightbox.js";
50
- import { _ as _35 } from "./chunks/LpLink-Krkjhe_y.js";
51
- import { _ as _36 } from "./chunks/LpLogViewer-BDFXzvcl.js";
58
+ import { _ as _36 } from "./chunks/LpLink-Krkjhe_y.js";
59
+ import { _ as _37 } from "./chunks/LpLogViewer-BDFXzvcl.js";
52
60
  import { countLevels, matchPositions, matchesTerm, ringWindow, stepMatch } from "./components/logSearch.js";
53
- import { _ as _37 } from "./chunks/LpMediaGallery-YKr-cQPN.js";
54
- import { _ as _38 } from "./chunks/LpModal-JNa3B_Lr.js";
55
- import { _ as _39 } from "./chunks/LpModalNav-BAxC9et7.js";
56
- import { _ as _40 } from "./chunks/LpNotificationBell-DsqSyMwS.js";
57
- import { _ as _41 } from "./chunks/LpNumberField-B77O-z28.js";
58
- import { _ as _42 } from "./chunks/LpTimeField-Cqe7fXnh.js";
59
- import { _ as _43 } from "./chunks/LpNumberFlow-z4WPZcZu.js";
60
- import { _ as _44 } from "./chunks/LpOtpInput-CziPF3Oq.js";
61
- import { _ as _45 } from "./chunks/LpPagination-BcDlo3r_.js";
62
- import { _ as _46 } from "./chunks/LpPasswordInput-eKzQhbQP.js";
63
- import { _ as _47 } from "./chunks/LpPie-BdSnta11.js";
64
- import { _ as _48 } from "./chunks/LpPhoneInput-BCbrrhgE.js";
61
+ import { _ as _38 } from "./chunks/LpMediaGallery-BnlkN_1f.js";
62
+ import { _ as _39 } from "./chunks/LpModal-JNa3B_Lr.js";
63
+ import { _ as _40 } from "./chunks/LpModalNav-BAxC9et7.js";
64
+ import { _ as _41 } from "./chunks/LpNotificationBell-DsqSyMwS.js";
65
+ import { _ as _42 } from "./chunks/LpNumberField-B77O-z28.js";
66
+ import { _ as _43 } from "./chunks/LpTimeField-Cqe7fXnh.js";
67
+ import { _ as _44 } from "./chunks/LpNumberFlow-z4WPZcZu.js";
68
+ import { _ as _45 } from "./chunks/LpOtpInput-CziPF3Oq.js";
69
+ import { _ as _46 } from "./chunks/LpPagination-BcDlo3r_.js";
70
+ import { _ as _47 } from "./chunks/LpPasswordInput-eKzQhbQP.js";
71
+ import { _ as _48 } from "./chunks/LpPie-BdSnta11.js";
72
+ import { _ as _49 } from "./chunks/LpPhoneInput-BCbrrhgE.js";
65
73
  import { filterCountries, flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
66
- import { _ as _49 } from "./chunks/LpPopover-DCKeqiVn.js";
67
- import { _ as _50 } from "./chunks/LpProgress-CBU1iI69.js";
68
- import { _ as _51 } from "./chunks/LpRadio-B5AfqTpZ.js";
69
- import { _ as _52 } from "./chunks/LpRadioGroup-DmEW0l78.js";
70
- import { _ as _53 } from "./chunks/LpRollingText-DB7upf-5.js";
71
- import { _ as _54 } from "./chunks/LpScrollArea-Hz3-JWUG.js";
72
- import { _ as _55 } from "./chunks/LpSegmented-C09EEam2.js";
73
- import { _ as _56 } from "./chunks/LpSection-tKEH0jYf.js";
74
- import { _ as _57 } from "./chunks/LpSelect-DNIL6MB9.js";
75
- import { _ as _58 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
76
- import { _ as _59 } from "./chunks/LpShift-DXNsauQZ.js";
77
- import { default as default6 } from "./components/LpShortcutsDialog.vue.js";
78
- import { _ as _60 } from "./chunks/LpSidebar-DpEiGi8L.js";
79
- import { _ as _61 } from "./chunks/LpSkeleton-BB6XIV-w.js";
80
- import { _ as _62 } from "./chunks/LpSlider-Cuzmrd7p.js";
81
- import { _ as _63 } from "./chunks/LpSparkline-CB80N8SJ.js";
82
- import { _ as _64 } from "./chunks/LpStat-B-7udBRP.js";
83
- import { _ as _65 } from "./chunks/LpStepper-C7XiVKZj.js";
84
- import { _ as _66 } from "./chunks/LpSwitch-OrcOJX9m.js";
85
- import { default as default7 } from "./components/LpTable.vue.js";
74
+ import { _ as _50 } from "./chunks/LpPopover-DCKeqiVn.js";
75
+ import { _ as _51 } from "./chunks/LpProgress-CBU1iI69.js";
76
+ import { _ as _52 } from "./chunks/LpRadio-B5AfqTpZ.js";
77
+ import { _ as _53 } from "./chunks/LpRadioGroup-DmEW0l78.js";
78
+ import { _ as _54 } from "./chunks/LpRollingText-DB7upf-5.js";
79
+ import { _ as _55 } from "./chunks/LpScrollArea-Hz3-JWUG.js";
80
+ import { _ as _56 } from "./chunks/LpSegmented-C09EEam2.js";
81
+ import { _ as _57 } from "./chunks/LpSection-tKEH0jYf.js";
82
+ import { _ as _58 } from "./chunks/LpSelect-DNIL6MB9.js";
83
+ import { _ as _59 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
84
+ import { _ as _60 } from "./chunks/LpShift-DXNsauQZ.js";
85
+ import { default as default11 } from "./components/LpShortcutsDialog.vue.js";
86
+ import { _ as _61 } from "./chunks/LpSidebar-DpEiGi8L.js";
87
+ import { _ as _62 } from "./chunks/LpSkeleton-BB6XIV-w.js";
88
+ import { _ as _63 } from "./chunks/LpSlider-Cuzmrd7p.js";
89
+ import { _ as _64 } from "./chunks/LpRangeSlider-C1yF9-nP.js";
90
+ import { _ as _65 } from "./chunks/LpVideoBackdrop-DN6xPUav.js";
91
+ import { formatClipTime, isNativeLoop, planLoop, seamProgress, seamReached } from "./components/videoBackdrop.js";
92
+ import { _ as _66 } from "./chunks/LpSparkline-CB80N8SJ.js";
93
+ import { _ as _67 } from "./chunks/LpStat-B-7udBRP.js";
94
+ import { _ as _68 } from "./chunks/LpStepper-C7XiVKZj.js";
95
+ import { _ as _69 } from "./chunks/LpSwitch-OrcOJX9m.js";
96
+ import { default as default12 } from "./components/LpTable.vue.js";
86
97
  import { compareValues } from "./components/tableSort.js";
87
- import { _ as _67 } from "./chunks/LpTableOfContents-BUcAfGPQ.js";
88
- import { _ as _68 } from "./chunks/LpTabs-29iW1XOx.js";
89
- import { _ as _69 } from "./chunks/LpTagsInput-D1SuqbhB.js";
98
+ import { _ as _70 } from "./chunks/LpTableOfContents-BUcAfGPQ.js";
99
+ import { _ as _71 } from "./chunks/LpTabs-29iW1XOx.js";
100
+ import { _ as _72 } from "./chunks/LpTagsInput-D1SuqbhB.js";
90
101
  import { addTags, splitTags } from "./components/tags.js";
91
- import { _ as _70 } from "./chunks/LpTextarea-uuScWo6-.js";
92
- import { _ as _71 } from "./chunks/LpThemeSwitcher-BbYFFT5w.js";
93
- import { _ as _72 } from "./chunks/LpTilt-B7KHX1zH.js";
94
- import { _ as _73 } from "./chunks/LpToaster-DTtWuKvq.js";
95
- import { _ as _74 } from "./chunks/LpTooltip-CXVKcOXT.js";
96
- import { _ as _75 } from "./chunks/LpTooltipProvider-CftjV7Xc.js";
97
- import { _ as _76 } from "./chunks/LpTopologyCanvas-6ozNrQKh.js";
98
- import { _ as _77 } from "./chunks/LpUptimeBar-ugcv25xj.js";
102
+ import { _ as _73 } from "./chunks/LpTextarea-uuScWo6-.js";
103
+ import { _ as _74 } from "./chunks/LpThemeSwitcher-BbYFFT5w.js";
104
+ import { _ as _75 } from "./chunks/LpTilt-B7KHX1zH.js";
105
+ import { _ as _76 } from "./chunks/LpToaster-DTtWuKvq.js";
106
+ import { _ as _77 } from "./chunks/LpTooltip-CXVKcOXT.js";
107
+ import { _ as _78 } from "./chunks/LpTooltipProvider-CftjV7Xc.js";
108
+ import { _ as _79 } from "./chunks/LpTopologyCanvas-6ozNrQKh.js";
109
+ import { _ as _80 } from "./chunks/LpUptimeBar-ugcv25xj.js";
99
110
  import { deserializeLayout, serializeLayout } from "./layout/tree.js";
100
111
  import { addLeaf, addTab, countBlocks, countLeaves, makeLayout, moveLeaf, removeBlock, removeLeaf, reorderTab, resizeAt, setActiveTab } from "./layout/tree.js";
101
112
  import { blockTitle, defineBlocks } from "./layout/registry.js";
@@ -124,7 +135,7 @@ import { useShift } from "./composables/useShift.js";
124
135
  import { useTilt } from "./composables/useTilt.js";
125
136
  import { useZoomPan } from "./composables/useZoomPan.js";
126
137
  import { useToast } from "./composables/useToast.js";
127
- import { _ as _78 } from "./chunks/LpThemeProvider-Be4r2TQX.js";
138
+ import { _ as _81 } from "./chunks/LpThemeProvider-Be4r2TQX.js";
128
139
  import { isInternalHref, resolveLink } from "./components/link.js";
129
140
  function defineTheme(base, overrides = {}) {
130
141
  const src = typeof base === "string" ? presets[base] : base;
@@ -182,73 +193,81 @@ export {
182
193
  _15 as LpCodeBlock,
183
194
  _16 as LpColorPicker,
184
195
  default3 as LpCommandPalette,
185
- _17 as LpConfirmDialog,
186
- _18 as LpConfirmHost,
187
- _19 as LpContextMenu,
188
- _20 as LpDatePicker,
189
- _21 as LpDateRangePicker,
190
- _23 as LpDisclosure,
191
- _24 as LpDivider,
192
- _25 as LpDrawer,
193
- _26 as LpDropdownMenu,
194
- default4 as LpDropzone,
195
- _27 as LpEmptyState,
196
- _29 as LpFieldNotice,
197
- _28 as LpFileTree,
198
- _30 as LpFormField,
199
- _31 as LpIcon,
200
- default5 as LpImageEditor,
201
- _32 as LpInfraNode,
202
- _33 as LpInput,
203
- _34 as LpLightbox,
204
- _35 as LpLink,
205
- _36 as LpLogViewer,
196
+ _18 as LpConfirmDialog,
197
+ _19 as LpConfirmHost,
198
+ _20 as LpContextMenu,
199
+ _21 as LpDatePicker,
200
+ _22 as LpDateRangePicker,
201
+ _24 as LpDisclosure,
202
+ _25 as LpDivider,
203
+ _26 as LpDrawer,
204
+ _27 as LpDropdownMenu,
205
+ default9 as LpDropzone,
206
+ _28 as LpEmptyState,
207
+ _30 as LpFieldNotice,
208
+ _29 as LpFileTree,
209
+ _31 as LpFormField,
210
+ _32 as LpIcon,
211
+ default10 as LpImageEditor,
212
+ _33 as LpInfraNode,
213
+ _34 as LpInput,
214
+ default8 as LpKeys,
215
+ _35 as LpLightbox,
216
+ _36 as LpLink,
217
+ _37 as LpLogViewer,
206
218
  _3 as LpMapPicker,
207
- _37 as LpMediaGallery,
208
- _38 as LpModal,
209
- _39 as LpModalNav,
210
- _40 as LpNotificationBell,
211
- _41 as LpNumberField,
212
- _43 as LpNumberFlow,
213
- _44 as LpOtpInput,
214
- _45 as LpPagination,
215
- _46 as LpPasswordInput,
216
- _48 as LpPhoneInput,
217
- _47 as LpPie,
218
- _49 as LpPopover,
219
- _50 as LpProgress,
220
- _51 as LpRadio,
221
- _52 as LpRadioGroup,
222
- _22 as LpRangeCalendar,
223
- _53 as LpRollingText,
224
- _54 as LpScrollArea,
225
- _56 as LpSection,
226
- _55 as LpSegmented,
227
- _57 as LpSelect,
228
- _58 as LpServiceNode,
229
- _59 as LpShift,
230
- default6 as LpShortcutsDialog,
231
- _60 as LpSidebar,
232
- _61 as LpSkeleton,
233
- _62 as LpSlider,
234
- _63 as LpSparkline,
235
- _64 as LpStat,
236
- _65 as LpStepper,
237
- _66 as LpSwitch,
238
- default7 as LpTable,
239
- _67 as LpTableOfContents,
240
- _68 as LpTabs,
241
- _69 as LpTagsInput,
242
- _70 as LpTextarea,
243
- _78 as LpThemeProvider,
244
- _71 as LpThemeSwitcher,
245
- _72 as LpTilt,
246
- _42 as LpTimeField,
247
- _73 as LpToaster,
248
- _74 as LpTooltip,
249
- _75 as LpTooltipProvider,
250
- _76 as LpTopologyCanvas,
251
- _77 as LpUptimeBar,
219
+ _38 as LpMediaGallery,
220
+ _39 as LpModal,
221
+ _40 as LpModalNav,
222
+ _41 as LpNotificationBell,
223
+ _42 as LpNumberField,
224
+ _44 as LpNumberFlow,
225
+ _45 as LpOtpInput,
226
+ _46 as LpPagination,
227
+ default5 as LpPaletteFacts,
228
+ default4 as LpPaletteHeader,
229
+ _17 as LpPalettePreview,
230
+ default6 as LpPaletteStats,
231
+ default7 as LpPaletteSwatches,
232
+ _47 as LpPasswordInput,
233
+ _49 as LpPhoneInput,
234
+ _48 as LpPie,
235
+ _50 as LpPopover,
236
+ _51 as LpProgress,
237
+ _52 as LpRadio,
238
+ _53 as LpRadioGroup,
239
+ _23 as LpRangeCalendar,
240
+ _64 as LpRangeSlider,
241
+ _54 as LpRollingText,
242
+ _55 as LpScrollArea,
243
+ _57 as LpSection,
244
+ _56 as LpSegmented,
245
+ _58 as LpSelect,
246
+ _59 as LpServiceNode,
247
+ _60 as LpShift,
248
+ default11 as LpShortcutsDialog,
249
+ _61 as LpSidebar,
250
+ _62 as LpSkeleton,
251
+ _63 as LpSlider,
252
+ _66 as LpSparkline,
253
+ _67 as LpStat,
254
+ _68 as LpStepper,
255
+ _69 as LpSwitch,
256
+ default12 as LpTable,
257
+ _70 as LpTableOfContents,
258
+ _71 as LpTabs,
259
+ _72 as LpTagsInput,
260
+ _73 as LpTextarea,
261
+ _81 as LpThemeProvider,
262
+ _74 as LpThemeSwitcher,
263
+ _75 as LpTilt,
264
+ _43 as LpTimeField,
265
+ _76 as LpToaster,
266
+ _77 as LpTooltip,
267
+ _78 as LpTooltipProvider,
268
+ _79 as LpTopologyCanvas,
269
+ _80 as LpUptimeBar,
270
+ _65 as LpVideoBackdrop,
252
271
  N as NO_BACKDROP_ATTR,
253
272
  OSM_TILES,
254
273
  T as THEME_COOKIE,
@@ -263,6 +282,7 @@ export {
263
282
  anyModalOpen,
264
283
  appleModifierLabel,
265
284
  applyMask,
285
+ applyQueryFilters,
266
286
  c2 as applyTheme,
267
287
  d as applyThemeWithTransition,
268
288
  axisTicks,
@@ -275,6 +295,9 @@ export {
275
295
  checkedCount,
276
296
  clampHsv,
277
297
  clampRange,
298
+ comboKeys,
299
+ comboSteps,
300
+ commandHasPreview,
278
301
  compareValues,
279
302
  computeStats,
280
303
  confirm,
@@ -303,11 +326,13 @@ export {
303
326
  findHotkeyConflicts,
304
327
  flagEmoji,
305
328
  formatAddress,
329
+ formatClipTime,
306
330
  formatColor,
307
331
  formatModified,
308
332
  formatRange,
309
333
  formatSize,
310
334
  formatTick,
335
+ highlightParts,
311
336
  hotkeyConflicts,
312
337
  hotkeySteps,
313
338
  hsvToHsl,
@@ -318,6 +343,7 @@ export {
318
343
  i2 as isBrokenBackdropEngine,
319
344
  isInternalHref,
320
345
  isLight,
346
+ isNativeLoop,
321
347
  layoutController,
322
348
  l as light,
323
349
  j as lime,
@@ -345,8 +371,10 @@ export {
345
371
  parseConfig,
346
372
  parseHex,
347
373
  parseMask,
374
+ parsePaletteQuery,
348
375
  parseTheme,
349
376
  pendingHotkey,
377
+ planLoop,
350
378
  m as prefersDarkScheme,
351
379
  prefersReducedMotion,
352
380
  presets,
@@ -354,7 +382,9 @@ export {
354
382
  provideField,
355
383
  provideGlass,
356
384
  provideLpConfig,
385
+ pushRecent,
357
386
  rankCommandItems,
387
+ readRecent,
358
388
  b as registerAllIcons,
359
389
  a as registerIconCollection,
360
390
  c as registerIcons,
@@ -370,6 +400,8 @@ export {
370
400
  ringWindow,
371
401
  r as rose,
372
402
  sameRange,
403
+ seamProgress,
404
+ seamReached,
373
405
  sequenceProgress,
374
406
  serializeConfig,
375
407
  serializeLayout,
@@ -389,6 +421,7 @@ export {
389
421
  w as themeToCssVars,
390
422
  tileUrl,
391
423
  toCsv,
424
+ toRecentItem,
392
425
  tokenizeLines,
393
426
  topModalElement,
394
427
  unproject,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.46.0",
3
+ "version": "0.48.0",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -37,6 +37,7 @@ export const COMPONENT_NAMES = [
37
37
  "LpImageEditor",
38
38
  "LpInfraNode",
39
39
  "LpInput",
40
+ "LpKeys",
40
41
  "LpLightbox",
41
42
  "LpLink",
42
43
  "LpLogViewer",
@@ -49,6 +50,11 @@ export const COMPONENT_NAMES = [
49
50
  "LpNumberFlow",
50
51
  "LpOtpInput",
51
52
  "LpPagination",
53
+ "LpPaletteFacts",
54
+ "LpPaletteHeader",
55
+ "LpPalettePreview",
56
+ "LpPaletteStats",
57
+ "LpPaletteSwatches",
52
58
  "LpPasswordInput",
53
59
  "LpPhoneInput",
54
60
  "LpPie",
@@ -57,6 +63,7 @@ export const COMPONENT_NAMES = [
57
63
  "LpRadio",
58
64
  "LpRadioGroup",
59
65
  "LpRangeCalendar",
66
+ "LpRangeSlider",
60
67
  "LpRollingText",
61
68
  "LpScrollArea",
62
69
  "LpSection",
@@ -85,5 +92,6 @@ export const COMPONENT_NAMES = [
85
92
  "LpTooltip",
86
93
  "LpTooltipProvider",
87
94
  "LpTopologyCanvas",
88
- "LpUptimeBar"
95
+ "LpUptimeBar",
96
+ "LpVideoBackdrop"
89
97
  ] as const
@@ -0,0 +1,28 @@
1
+ <script setup lang="ts">
2
+ /*
3
+ * Text that may arrive already split into matched and unmatched runs (the
4
+ * palette preview slot's `highlight(text)`), drawn with the same <mark> the
5
+ * palette's rows use. A plain string is drawn as is.
6
+ */
7
+ import type { HighlightPart } from "./commandSearch"
8
+
9
+ defineProps<{ text: string | HighlightPart[] }>()
10
+ </script>
11
+
12
+ <template>
13
+ <template v-if="typeof text === 'string'">{{ text }}</template>
14
+ <template v-else>
15
+ <template v-for="(part, index) in text" :key="index">
16
+ <mark v-if="part.hit" class="lp-highlight">{{ part.text }}</mark>
17
+ <template v-else>{{ part.text }}</template>
18
+ </template>
19
+ </template>
20
+ </template>
21
+
22
+ <style>
23
+ .lp-highlight {
24
+ border-radius: 2px;
25
+ background: color-mix(in srgb, var(--color-brand) 25%, transparent);
26
+ color: var(--color-ink);
27
+ }
28
+ </style>
@@ -10,6 +10,7 @@ import { AvatarFallback, AvatarImage, AvatarRoot } from "reka-ui"
10
10
  import { tv, type VariantProps } from "tailwind-variants"
11
11
  import { computed, onMounted, ref } from "vue"
12
12
  import LpContextMenu, { type ContextMenuItemDef } from "./LpContextMenu.vue"
13
+ import LpIcon from "./LpIcon.vue"
13
14
  import { useMergedAttrs } from "../composables/useMergedClass"
14
15
 
15
16
  const avatar = tv({
@@ -41,6 +42,12 @@ const props = withDefaults(
41
42
  src?: string
42
43
  alt?: string
43
44
  fallback?: string
45
+ /**
46
+ * An icon shown while there is no picture, instead of initials. For things
47
+ * that have no name worth abbreviating (a world, a mod, a file), where two
48
+ * letters read as noise. `fallback` text still wins when both are given.
49
+ */
50
+ icon?: string
44
51
  size?: AvatarVariants["size"]
45
52
  /** Explicit pixel size, wins over `size` — for avatars keyed to a layout. */
46
53
  pixelSize?: number
@@ -54,6 +61,12 @@ const props = withDefaults(
54
61
  { size: "md", shape: "circle", ring: false },
55
62
  )
56
63
 
64
+ // The icon follows the box the way the initials do: about half of it.
65
+ const ICON_SIZE = { xs: 11, sm: 14, md: 18, lg: 24, xl: 30 } as const
66
+ const iconSize = computed(() =>
67
+ props.pixelSize ? Math.max(10, Math.round(props.pixelSize * 0.55)) : ICON_SIZE[props.size ?? "md"],
68
+ )
69
+
57
70
  // A pixel size drives both box and glyph, so the initials keep their
58
71
  // proportion instead of staying at the preset's step.
59
72
  const sizeStyle = computed(() =>
@@ -99,11 +112,17 @@ onMounted(() => {
99
112
  <LpContextMenu v-if="menuItems?.length" :items="menuItems">
100
113
  <AvatarRoot :class="rootClass" :style="sizeStyle" v-bind="rest">
101
114
  <AvatarImage v-if="src && mounted" :src="src" :alt="alt" class="size-full object-cover animate-[fade-in_var(--duration-medium)_ease] motion-reduce:animate-none" />
102
- <AvatarFallback>{{ initials }}</AvatarFallback>
115
+ <AvatarFallback>
116
+ <LpIcon v-if="icon && !fallback" :name="icon" :size="iconSize" />
117
+ <template v-else>{{ initials }}</template>
118
+ </AvatarFallback>
103
119
  </AvatarRoot>
104
120
  </LpContextMenu>
105
121
  <AvatarRoot v-else :class="rootClass" :style="sizeStyle" v-bind="rest">
106
122
  <AvatarImage v-if="src && mounted" :src="src" :alt="alt" class="size-full object-cover animate-[fade-in_var(--duration-medium)_ease] motion-reduce:animate-none" />
107
- <AvatarFallback>{{ initials }}</AvatarFallback>
123
+ <AvatarFallback>
124
+ <LpIcon v-if="icon && !fallback" :name="icon" :size="iconSize" />
125
+ <template v-else>{{ initials }}</template>
126
+ </AvatarFallback>
108
127
  </AvatarRoot>
109
128
  </template>