@leavepulse/ui 0.59.0 → 0.61.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 (168) hide show
  1. package/README.md +8 -0
  2. package/dist/assets/{LpCommandPalette-BM_IyzwB.css → LpCommandPalette-DA5pmuPi.css} +21 -21
  3. package/dist/assets/{LpTable-B_QCQCbB.css → LpTable-DpXyPzs8.css} +19 -19
  4. package/dist/chunks/{ContextMenuItems-CioDScj3.js → ContextMenuItems-qXReFtQW.js} +1 -1
  5. package/dist/chunks/{LayoutCanvas-BcGLJVBq.js → LayoutCanvas-t7LWFCEn.js} +1 -1
  6. package/dist/chunks/{LayoutNode-BkBn6dvM.js → LayoutNode-DHsE6GwM.js} +1 -1
  7. package/dist/chunks/{LpActionBar-DCN-_pZP.js → LpActionBar-BsSp66S_.js} +2 -2
  8. package/dist/chunks/{LpAddressInput-D-H94m4q.js → LpAddressInput-CzdZguBo.js} +7 -7
  9. package/dist/chunks/{LpAlert-CXMn1GYE.js → LpAlert--KLL4NLk.js} +1 -1
  10. package/dist/chunks/{LpAppShell-BeMuKEjh.js → LpAppShell-BXMNDEpF.js} +3 -3
  11. package/dist/chunks/{LpAutocomplete-hJ_6CHlh.js → LpAutocomplete-D9mY5Tqk.js} +102 -37
  12. package/dist/chunks/{LpAvatar-CeW4Z5CL.js → LpAvatar-K6MOMfgn.js} +2 -2
  13. package/dist/chunks/{LpBreadcrumbs-BLzOEgAF.js → LpBreadcrumbs-CndzPYiG.js} +1 -1
  14. package/dist/chunks/{LpButton-vhlwmpBy.js → LpButton-CJSD7N0Z.js} +1 -1
  15. package/dist/chunks/{LpCalendar-BLoE8Qm7.js → LpCalendar-CXVDbb2M.js} +1 -1
  16. package/dist/chunks/{LpCard-Gbr8a1xK.js → LpCard-D9HVgX8Y.js} +1 -1
  17. package/dist/chunks/{LpCheckbox-B_C8sOoT.js → LpCheckbox-DV9W6T3H.js} +1 -1
  18. package/dist/chunks/{LpCodeBlock-D6zhp30a.js → LpCodeBlock-t6MLA3fb.js} +1 -1
  19. package/dist/chunks/{LpColorPicker-CVXwjEtX.js → LpColorPicker-BO1ZTY51.js} +2 -2
  20. package/dist/chunks/{LpConfirmDialog-DkgIT-Xg.js → LpConfirmDialog-tkgyY3eu.js} +3 -3
  21. package/dist/chunks/{LpConfirmHost-CYzXWFOI.js → LpConfirmHost-CoYIcUdl.js} +1 -1
  22. package/dist/chunks/{LpContextMenu-DRFd-iyc.js → LpContextMenu-Cv_F2iCG.js} +20 -5
  23. package/dist/chunks/{LpDatePicker-B-VMHMgy.js → LpDatePicker-DxdrVNCG.js} +3 -3
  24. package/dist/chunks/{LpDateRangePicker-B68KPKPl.js → LpDateRangePicker-DjeaqikC.js} +2 -2
  25. package/dist/chunks/{LpDisclosure-Ct-VBHxt.js → LpDisclosure-s8cQ7KQq.js} +1 -1
  26. package/dist/chunks/{LpDrawer-Rc6eAJrr.js → LpDrawer-C97yoWmh.js} +1 -1
  27. package/dist/chunks/{LpDropdownMenu-BoJQsjzt.js → LpDropdownMenu-CbyYu4Rw.js} +11 -4
  28. package/dist/chunks/{LpEmptyState-CBwwkkdA.js → LpEmptyState-CX8fdGSU.js} +1 -1
  29. package/dist/chunks/{LpFieldNotice-9hH4ITZa.js → LpFieldNotice-B--RzKfj.js} +1 -1
  30. package/dist/chunks/{LpFileTree-Bs57DhVa.js → LpFileTree-DTwUj0L-.js} +2 -2
  31. package/dist/chunks/{LpFileTreeNode-XgJW65v5.js → LpFileTreeNode-D-XLPZ6T.js} +3 -3
  32. package/dist/chunks/{LpFormField-BpQ6WJPe.js → LpFormField-DMPPL1jF.js} +1 -1
  33. package/dist/chunks/{LpHintLayer-B5-6FyEf.js → LpHintLayer-DsclGYcD.js} +1 -1
  34. package/dist/chunks/{LpHints-BqoZXHZk.js → LpHints-BTpvisgP.js} +10 -4
  35. package/dist/chunks/{LpIcon-B5guGKrW.js → LpIcon-CTuDVTYv.js} +1 -1
  36. package/dist/chunks/{LpInput-WvyP02ID.js → LpInput-C7FHxzj2.js} +2 -2
  37. package/dist/chunks/{LpLightbox-Dq-e36uT.js → LpLightbox-DiksFa4L.js} +1 -1
  38. package/dist/chunks/{LpLogViewer-B92bAftG.js → LpLogViewer-D9UgNz2m.js} +2 -2
  39. package/dist/chunks/{LpMapPicker-BH5csaBt.js → LpMapPicker-DybIlWnF.js} +1 -1
  40. package/dist/chunks/{LpMediaGallery-B1kDypJ-.js → LpMediaGallery-Cic9UHsa.js} +2 -2
  41. package/dist/chunks/{LpModal-DvGD6kEe.js → LpModal-QFfctZsj.js} +1 -1
  42. package/dist/chunks/{LpModalNav-B-_zRTS-.js → LpModalNav-D4rmflQn.js} +4 -4
  43. package/dist/chunks/{LpNotificationBell-63pvatBj.js → LpNotificationBell-CyylOlZR.js} +4 -4
  44. package/dist/chunks/{LpNumberField-CJPjmoDz.js → LpNumberField-BFSRVGkJ.js} +1 -1
  45. package/dist/chunks/{LpPagination-DehAaJLY.js → LpPagination-BFl0I7tL.js} +1 -1
  46. package/dist/chunks/{LpPasswordInput-BK25_vNG.js → LpPasswordInput-C1G4k_r0.js} +2 -2
  47. package/dist/chunks/{LpPhoneInput-Bxg7a_qD.js → LpPhoneInput-CZrpVxla.js} +2 -2
  48. package/dist/chunks/{LpPie-Coa2GMHt.js → LpPie-B2deu8CI.js} +2 -2
  49. package/dist/chunks/{LpRangeCalendar-D5sDID9W.js → LpRangeCalendar-COeOYF52.js} +1 -1
  50. package/dist/chunks/{LpSection-B19VPYmr.js → LpSection-BAkbf0OK.js} +1 -1
  51. package/dist/chunks/{LpSegmented-DbrUjuSA.js → LpSegmented-DslFku0N.js} +1 -1
  52. package/dist/chunks/{LpSelect-DynjWK1A.js → LpSelect-C4OXN_q3.js} +1 -1
  53. package/dist/chunks/{LpSidebar-CKamWtPo.js → LpSidebar-D8tub3bt.js} +3 -3
  54. package/dist/chunks/{LpSidebarNav-Y4LV0ZEn.js → LpSidebarNav-BBSRg34G.js} +2 -2
  55. package/dist/chunks/{LpStat-BS2TEXYK.js → LpStat-oYk6V1LZ.js} +1 -1
  56. package/dist/chunks/{LpStepper-BSglWF45.js → LpStepper-YgHGzgfD.js} +1 -1
  57. package/dist/chunks/LpSwap-D82jiecV.js +38 -0
  58. package/dist/chunks/{LpTableFilter-CwHXVxJt.js → LpTableFilter-Ba-rS4H1.js} +2 -2
  59. package/dist/chunks/{LpTabs-D01b8jBI.js → LpTabs-00v3VQx4.js} +1 -1
  60. package/dist/chunks/{LpTagsInput-CHbQoAAA.js → LpTagsInput-Sc56iy_j.js} +3 -3
  61. package/dist/chunks/{LpTextarea-Bz2IWhTH.js → LpTextarea-CQZccQI3.js} +1 -1
  62. package/dist/chunks/{LpThemeSwitcher-CbzL6ipO.js → LpThemeSwitcher-ZFFftBQn.js} +2 -2
  63. package/dist/chunks/{LpTimeField-DvGXgdES.js → LpTimeField-BTEt0kvL.js} +1 -1
  64. package/dist/chunks/{LpToaster-C9EacEfR.js → LpToaster-D3OisETH.js} +2 -2
  65. package/dist/chunks/{LpTour-D7m9ZxNk.js → LpTour-C29-1wha.js} +4 -1
  66. package/dist/chunks/{MenuTitle-B9HdaBwE.js → MenuTitle-FeC6I24N.js} +1 -1
  67. package/dist/chunks/{TourCard-DCHOjr6e.js → TourCard-AjN0uhs1.js} +2 -2
  68. package/dist/chunks/{icons-QqBscG5I.js → icons-CuO3W46H.js} +1 -1
  69. package/dist/component-names.d.ts +1 -1
  70. package/dist/components/ContextMenuItems.vue.js +1 -1
  71. package/dist/components/LayoutCanvas.vue.js +1 -1
  72. package/dist/components/LayoutNode.vue.js +1 -1
  73. package/dist/components/LpActionBar.vue.js +1 -1
  74. package/dist/components/LpAddressInput.vue.js +1 -1
  75. package/dist/components/LpAlert.vue.js +1 -1
  76. package/dist/components/LpAppShell.vue.js +1 -1
  77. package/dist/components/LpAutocomplete.vue.d.ts +24 -0
  78. package/dist/components/LpAutocomplete.vue.js +1 -1
  79. package/dist/components/LpAvatar.vue.js +1 -1
  80. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  81. package/dist/components/LpButton.vue.js +1 -1
  82. package/dist/components/LpCalendar.vue.js +1 -1
  83. package/dist/components/LpCard.vue.js +1 -1
  84. package/dist/components/LpChart.vue.js +2 -2
  85. package/dist/components/LpCheckbox.vue.js +1 -1
  86. package/dist/components/LpCodeBlock.vue.js +1 -1
  87. package/dist/components/LpColorPicker.vue.js +1 -1
  88. package/dist/components/LpCommandPalette.vue.js +30 -19
  89. package/dist/components/LpConfirmDialog.vue.js +1 -1
  90. package/dist/components/LpConfirmHost.vue.js +1 -1
  91. package/dist/components/LpContextMenu.vue.d.ts +7 -2
  92. package/dist/components/LpContextMenu.vue.js +1 -1
  93. package/dist/components/LpDatePicker.vue.js +1 -1
  94. package/dist/components/LpDateRangePicker.vue.js +1 -1
  95. package/dist/components/LpDisclosure.vue.js +1 -1
  96. package/dist/components/LpDrawer.vue.js +1 -1
  97. package/dist/components/LpDropdownMenu.vue.d.ts +7 -2
  98. package/dist/components/LpDropdownMenu.vue.js +1 -1
  99. package/dist/components/LpDropzone.vue.js +1 -1
  100. package/dist/components/LpEmptyState.vue.js +1 -1
  101. package/dist/components/LpFieldNotice.vue.js +1 -1
  102. package/dist/components/LpFileTree.vue.js +1 -1
  103. package/dist/components/LpFileTreeNode.vue.js +1 -1
  104. package/dist/components/LpFormField.vue.js +1 -1
  105. package/dist/components/LpHintLayer.vue.js +1 -1
  106. package/dist/components/LpHints.vue.js +1 -1
  107. package/dist/components/LpIcon.vue.js +1 -1
  108. package/dist/components/LpImageEditor.vue.js +4 -2
  109. package/dist/components/LpInput.vue.js +1 -1
  110. package/dist/components/LpLightbox.vue.js +1 -1
  111. package/dist/components/LpLogViewer.vue.js +1 -1
  112. package/dist/components/LpMapPicker.vue.js +1 -1
  113. package/dist/components/LpMediaGallery.vue.js +1 -1
  114. package/dist/components/LpModal.vue.js +1 -1
  115. package/dist/components/LpModalNav.vue.js +1 -1
  116. package/dist/components/LpNotificationBell.vue.js +1 -1
  117. package/dist/components/LpNumberField.vue.js +1 -1
  118. package/dist/components/LpPagination.vue.js +1 -1
  119. package/dist/components/LpPaletteFacts.vue.js +1 -1
  120. package/dist/components/LpPaletteHeader.vue.js +2 -2
  121. package/dist/components/LpPasswordInput.vue.js +1 -1
  122. package/dist/components/LpPhoneInput.vue.js +1 -1
  123. package/dist/components/LpPie.vue.js +1 -1
  124. package/dist/components/LpRangeCalendar.vue.js +1 -1
  125. package/dist/components/LpSection.vue.js +1 -1
  126. package/dist/components/LpSegmented.vue.js +1 -1
  127. package/dist/components/LpSelect.vue.js +1 -1
  128. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  129. package/dist/components/LpSidebar.vue.js +1 -1
  130. package/dist/components/LpSidebarNav.vue.js +1 -1
  131. package/dist/components/LpStat.vue.js +1 -1
  132. package/dist/components/LpStepper.vue.js +1 -1
  133. package/dist/components/LpSwap.vue.d.ts +19 -0
  134. package/dist/components/LpSwap.vue.js +4 -0
  135. package/dist/components/LpTable.vue.js +13 -11
  136. package/dist/components/LpTableFilter.vue.js +1 -1
  137. package/dist/components/LpTabs.vue.js +1 -1
  138. package/dist/components/LpTagsInput.vue.js +1 -1
  139. package/dist/components/LpTextarea.vue.js +1 -1
  140. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  141. package/dist/components/LpTimeField.vue.js +1 -1
  142. package/dist/components/LpToaster.vue.js +1 -1
  143. package/dist/components/LpTour.vue.js +1 -1
  144. package/dist/components/MenuTitle.vue.js +1 -1
  145. package/dist/components/TourCard.vue.js +1 -1
  146. package/dist/composables/useHintSystem.d.ts +67 -0
  147. package/dist/composables/useHintSystem.js +110 -12
  148. package/dist/composables/useToast.d.ts +13 -4
  149. package/dist/composables/useToast.js +13 -2
  150. package/dist/icons-all.js +1 -1
  151. package/dist/index.d.ts +5 -4
  152. package/dist/index.js +101 -95
  153. package/package.json +2 -1
  154. package/src/component-names.ts +1 -0
  155. package/src/components/LpAutocomplete.vue +110 -24
  156. package/src/components/LpCommandPalette.vue +26 -4
  157. package/src/components/LpContextMenu.vue +22 -1
  158. package/src/components/LpDropdownMenu.vue +13 -2
  159. package/src/components/LpHints.vue +7 -1
  160. package/src/components/LpSwap.vue +45 -0
  161. package/src/components/LpTable.vue +2 -1
  162. package/src/components/LpToaster.vue +1 -1
  163. package/src/components/LpTour.vue +3 -0
  164. package/src/composables/useHintSystem.ts +152 -12
  165. package/src/composables/useToast.ts +32 -5
  166. package/src/index.ts +5 -2
  167. package/src/kit-icons.ts +1 -1
  168. package/src/tokens/selection.css +20 -0
package/README.md CHANGED
@@ -161,6 +161,14 @@ scroll restoration and anchor jumps keep working:
161
161
 
162
162
  Hide a specific scrollbar with the `lp-scrollbar-none` class.
163
163
 
164
+ Selected text takes the operating system's accent unless told otherwise (on
165
+ Linux that is the GTK theme, so it can come out red or green next to the kit
166
+ palette). Opt into the theme's colour the same way:
167
+
168
+ ```css
169
+ @import "@leavepulse/ui/selection.css"; /* after the tokens — reads --color-brand */
170
+ ```
171
+
164
172
  ## Develop
165
173
 
166
174
  ```bash
@@ -5,81 +5,81 @@
5
5
  * pane from its right edge as it grows. Animating the columns themselves made
6
6
  * every line of the list and the pane re-wrap on every frame.
7
7
  */
8
- .lp-cmd-dialog[data-v-14ce7a99] {
8
+ .lp-cmd-dialog[data-v-a545acf6] {
9
9
  --lp-cmd-list: min(92vw, 40rem);
10
10
  --lp-cmd-pane: max(0px, min(26rem, 96vw - var(--lp-cmd-list)));
11
11
  width: var(--lp-cmd-list);
12
12
  }
13
- .lp-cmd-split[data-v-14ce7a99] {
13
+ .lp-cmd-split[data-v-a545acf6] {
14
14
  transition:
15
15
  width 300ms var(--ease-emphasized, ease),
16
16
  min-height 300ms var(--ease-emphasized, ease);
17
17
  }
18
18
  @media (min-width: 768px) {
19
- .lp-cmd-split .lp-cmd-list[data-v-14ce7a99] {
19
+ .lp-cmd-split .lp-cmd-list[data-v-a545acf6] {
20
20
  flex: 0 0 auto;
21
21
  /* the dialog's 1px border on each side */
22
22
  width: calc(var(--lp-cmd-list) - 2px);
23
23
  }
24
- .lp-cmd-dialog[data-pane="open"][data-v-14ce7a99] {
24
+ .lp-cmd-dialog[data-pane="open"][data-v-a545acf6] {
25
25
  width: calc(var(--lp-cmd-list) + var(--lp-cmd-pane));
26
26
  min-height: min(76vh, 36rem);
27
27
  }
28
28
  }
29
- .lp-cmd-pane[data-v-14ce7a99] {
29
+ .lp-cmd-pane[data-v-a545acf6] {
30
30
  width: var(--lp-cmd-pane);
31
31
  }
32
32
  /*
33
33
  * The pane rides in from the right edge while the dialog opens up to it, and
34
34
  * leaves the same way, for as long as the dialog takes to close over it.
35
35
  */
36
- .lp-cmd-pane-enter-active[data-v-14ce7a99],
37
- .lp-cmd-pane-leave-active[data-v-14ce7a99] {
36
+ .lp-cmd-pane-enter-active[data-v-a545acf6],
37
+ .lp-cmd-pane-leave-active[data-v-a545acf6] {
38
38
  transition:
39
39
  transform 300ms var(--ease-emphasized, ease),
40
40
  opacity 300ms ease;
41
41
  }
42
- .lp-cmd-pane-enter-from[data-v-14ce7a99],
43
- .lp-cmd-pane-leave-to[data-v-14ce7a99] {
42
+ .lp-cmd-pane-enter-from[data-v-a545acf6],
43
+ .lp-cmd-pane-leave-to[data-v-a545acf6] {
44
44
  opacity: 0;
45
45
  transform: translateX(40%);
46
46
  }
47
- .lp-cmd-para[data-v-14ce7a99] {
48
- animation: lp-cmd-para-in-14ce7a99 260ms ease-out both;
47
+ .lp-cmd-para[data-v-a545acf6] {
48
+ animation: lp-cmd-para-in-a545acf6 260ms ease-out both;
49
49
  }
50
- @keyframes lp-cmd-para-in-14ce7a99 {
50
+ @keyframes lp-cmd-para-in-a545acf6 {
51
51
  from {
52
52
  opacity: 0;
53
53
  transform: translateY(4px);
54
54
  }
55
55
  }
56
56
  @media (prefers-reduced-motion: reduce) {
57
- .lp-cmd-split[data-v-14ce7a99],
58
- .lp-cmd-pane-enter-active[data-v-14ce7a99],
59
- .lp-cmd-pane-leave-active[data-v-14ce7a99] {
57
+ .lp-cmd-split[data-v-a545acf6],
58
+ .lp-cmd-pane-enter-active[data-v-a545acf6],
59
+ .lp-cmd-pane-leave-active[data-v-a545acf6] {
60
60
  transition: none;
61
61
  }
62
- .lp-cmd-para[data-v-14ce7a99] {
62
+ .lp-cmd-para[data-v-a545acf6] {
63
63
  animation: none;
64
64
  }
65
65
  }
66
- .lp-cmd-excerpt[data-v-14ce7a99] {
66
+ .lp-cmd-excerpt[data-v-a545acf6] {
67
67
  display: -webkit-box;
68
68
  -webkit-box-orient: vertical;
69
69
  overflow: hidden;
70
70
  }
71
71
  /* Each result eases in; honours reduced motion. */
72
- .lp-cmd-item[data-v-14ce7a99] {
73
- animation: lp-cmd-in-14ce7a99 140ms ease-out both;
72
+ .lp-cmd-item[data-v-a545acf6] {
73
+ animation: lp-cmd-in-a545acf6 140ms ease-out both;
74
74
  }
75
- @keyframes lp-cmd-in-14ce7a99 {
75
+ @keyframes lp-cmd-in-a545acf6 {
76
76
  from {
77
77
  opacity: 0;
78
78
  transform: translateY(3px);
79
79
  }
80
80
  }
81
81
  @media (prefers-reduced-motion: reduce) {
82
- .lp-cmd-item[data-v-14ce7a99] {
82
+ .lp-cmd-item[data-v-a545acf6] {
83
83
  animation: none;
84
84
  }
85
85
  }
@@ -11,17 +11,17 @@
11
11
  * fade before closing the gap and the whole list lurches at the end instead of
12
12
  * gliding.
13
13
  */
14
- .lp-row-enter-active[data-v-344d1bc2],
15
- .lp-row-leave-active[data-v-344d1bc2] {
14
+ .lp-row-enter-active[data-v-a9d69d56],
15
+ .lp-row-leave-active[data-v-a9d69d56] {
16
16
  transition:
17
17
  opacity var(--duration-fast) var(--ease-emphasized),
18
18
  transform var(--duration-fast) var(--ease-emphasized);
19
19
  }
20
- .lp-row-move[data-v-344d1bc2] {
20
+ .lp-row-move[data-v-a9d69d56] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-344d1bc2],
24
- .lp-row-leave-to[data-v-344d1bc2] {
23
+ .lp-row-enter-from[data-v-a9d69d56],
24
+ .lp-row-leave-to[data-v-a9d69d56] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
@@ -35,7 +35,7 @@
35
35
  * drops out of the table layout entirely. Nothing sits below this row to be
36
36
  * dragged around, so simply not animating its exit costs nothing.
37
37
  */
38
- .lp-row-empty.lp-row-leave-active[data-v-344d1bc2] {
38
+ .lp-row-empty.lp-row-leave-active[data-v-a9d69d56] {
39
39
  display: none;
40
40
  }
41
41
 
@@ -54,7 +54,7 @@
54
54
  * once anything is selected. An earlier version collapsed the column to nothing
55
55
  * and floated the hover box over the first cell, where it sat on the text.
56
56
  */
57
- .lp-tick[data-v-344d1bc2] {
57
+ .lp-tick[data-v-a9d69d56] {
58
58
  display: flex;
59
59
  align-items: center;
60
60
  max-width: 0;
@@ -66,17 +66,17 @@
66
66
  padding var(--duration-medium) var(--ease-emphasized),
67
67
  opacity var(--duration-fast) ease;
68
68
  }
69
- .lp-tick-open[data-v-344d1bc2] {
69
+ .lp-tick-open[data-v-a9d69d56] {
70
70
  max-width: 3.25rem;
71
71
  padding-inline: 1rem;
72
72
  opacity: 1;
73
73
  }
74
- .lp-tick-hidden[data-v-344d1bc2],
75
- .lp-tick-cue[data-v-344d1bc2] {
74
+ .lp-tick-hidden[data-v-a9d69d56],
75
+ .lp-tick-cue[data-v-a9d69d56] {
76
76
  opacity: 0;
77
77
  }
78
- tr:hover .lp-tick-cue[data-v-344d1bc2],
79
- .lp-tick-cue[data-v-344d1bc2]:focus-within {
78
+ tr:hover .lp-tick-cue[data-v-a9d69d56],
79
+ .lp-tick-cue[data-v-a9d69d56]:focus-within {
80
80
  opacity: 1;
81
81
  }
82
82
 
@@ -84,24 +84,24 @@ tr:hover .lp-tick-cue[data-v-344d1bc2],
84
84
  turned down the rows change without animating rather than not changing. */
85
85
  /* Only where there is a hover to reveal it; a finger long-presses instead. */
86
86
  @media (hover: none) {
87
- tr:hover .lp-tick-cue[data-v-344d1bc2] {
87
+ tr:hover .lp-tick-cue[data-v-a9d69d56] {
88
88
  opacity: 0;
89
89
  }
90
90
 
91
91
  /* Nor is there anything for the column's width to hold until then: on a
92
92
  touch screen it stays closed until a long press starts selecting, and
93
93
  eases open like the rest of the column. */
94
- .lp-tick-hidden[data-v-344d1bc2],
95
- .lp-tick-cue[data-v-344d1bc2] {
94
+ .lp-tick-hidden[data-v-a9d69d56],
95
+ .lp-tick-cue[data-v-a9d69d56] {
96
96
  max-width: 0;
97
97
  padding-inline: 0;
98
98
  }
99
99
  }
100
100
  @media (prefers-reduced-motion: reduce) {
101
- .lp-row-enter-active[data-v-344d1bc2],
102
- .lp-row-leave-active[data-v-344d1bc2],
103
- .lp-row-move[data-v-344d1bc2],
104
- .lp-tick[data-v-344d1bc2] {
101
+ .lp-row-enter-active[data-v-a9d69d56],
102
+ .lp-row-leave-active[data-v-a9d69d56],
103
+ .lp-row-move[data-v-a9d69d56],
104
+ .lp-tick[data-v-a9d69d56] {
105
105
  transition: none;
106
106
  }
107
107
  }
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, unref, createCommentVNode, withCtx, createVNode, normalizeClass, createElementVNode, createTextVNode, toDisplayString, withModifiers } from "vue";
2
2
  import { ContextMenuSeparator, ContextMenuSub, ContextMenuSubTrigger, ContextMenuPortal, ContextMenuSubContent, ContextMenuCheckboxItem, ContextMenuItem } from "reka-ui";
3
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
3
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
4
4
  const _hoisted_1 = { class: "flex items-center gap-2" };
5
5
  const _hoisted_2 = { class: "flex items-center gap-2" };
6
6
  const _hoisted_3 = {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createVNode, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
- import { _ as _sfc_main$1 } from "./LayoutNode-BkBn6dvM.js";
2
+ import { _ as _sfc_main$1 } from "./LayoutNode-DHsE6GwM.js";
3
3
  import { resizeAt, setActiveTab, reorderTab, removeBlock, moveLeaf } from "../layout/tree.js";
4
4
  import { layoutController } from "../layout/useLayout.js";
5
5
  const _hoisted_1 = { class: "flex min-h-0 min-w-0 flex-1" };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, ref, onBeforeUnmount, resolveComponent, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createVNode, normalizeStyle, withCtx, renderSlot, mergeProps, createElementVNode, createCommentVNode, createBlock, unref, withModifiers, toDisplayString } from "vue";
2
2
  import { useReducedMotion, Motion } from "motion-v";
3
3
  import { blockTitle } from "../layout/registry.js";
4
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
4
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
5
5
  const _hoisted_1 = ["onPointerdown"];
6
6
  const _hoisted_2 = {
7
7
  key: 1,
@@ -2,8 +2,8 @@ import { defineComponent, useSlots, computed, ref, watch, onBeforeUnmount, openB
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useBarStack } from "../components/actionBar.js";
4
4
  import { CLOSE_ICON } from "../components/dropdown.js";
5
- import { _ as _sfc_main$2 } from "./LpButton-vhlwmpBy.js";
6
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
5
+ import { _ as _sfc_main$2 } from "./LpButton-CJSD7N0Z.js";
6
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
7
7
  const _hoisted_1 = ["aria-label"];
8
8
  const _hoisted_2 = {
9
9
  key: 1,
@@ -2,13 +2,13 @@ import { defineComponent, defineAsyncComponent, computed, watch, ref, onMounted,
2
2
  import { useAsyncTask } from "../composables/useAsyncTask.js";
3
3
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress } from "../components/address.js";
4
4
  import { flagEmoji, loadCountries } from "../components/countries.js";
5
- import { _ as _sfc_main$2 } from "./LpAutocomplete-hJ_6CHlh.js";
6
- import { _ as _sfc_main$3 } from "./LpButton-vhlwmpBy.js";
7
- import { _ as _sfc_main$1 } from "./LpFormField-BpQ6WJPe.js";
8
- import { _ as _sfc_main$4 } from "./LpIcon-B5guGKrW.js";
9
- import { _ as _sfc_main$5 } from "./LpInput-WvyP02ID.js";
10
- import { _ as _sfc_main$7 } from "./LpModal-DvGD6kEe.js";
11
- import { _ as _sfc_main$6 } from "./LpSelect-DynjWK1A.js";
5
+ import { _ as _sfc_main$2 } from "./LpAutocomplete-D9mY5Tqk.js";
6
+ import { _ as _sfc_main$3 } from "./LpButton-CJSD7N0Z.js";
7
+ import { _ as _sfc_main$1 } from "./LpFormField-DMPPL1jF.js";
8
+ import { _ as _sfc_main$4 } from "./LpIcon-CTuDVTYv.js";
9
+ import { _ as _sfc_main$5 } from "./LpInput-C7FHxzj2.js";
10
+ import { _ as _sfc_main$7 } from "./LpModal-QFfctZsj.js";
11
+ import { _ as _sfc_main$6 } from "./LpSelect-C4OXN_q3.js";
12
12
  import { useMergedAttrs } from "../composables/useMergedClass.js";
13
13
  const _hoisted_1 = { class: "flex items-stretch gap-2" };
14
14
  const _hoisted_2 = { class: "grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem]" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, createVNode, createElementVNode, toDisplayString, createCommentVNode, renderSlot } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
3
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
4
4
  const _hoisted_1 = ["role"];
5
5
  const _hoisted_2 = { class: "min-w-0" };
6
6
  const _hoisted_3 = {
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, computed, ref, useId, watch, openBlock, createElementBlock, mergeProps, unref, createElementVNode, withModifiers, toDisplayString, createVNode, createSlots, withCtx, renderSlot, normalizeProps, guardReactiveProps, normalizeClass, createBlock } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
- import { _ as _sfc_main$2 } from "./LpButton-vhlwmpBy.js";
4
- import { _ as _sfc_main$3 } from "./LpIcon-B5guGKrW.js";
3
+ import { _ as _sfc_main$2 } from "./LpButton-CJSD7N0Z.js";
4
+ import { _ as _sfc_main$3 } from "./LpIcon-CTuDVTYv.js";
5
5
  import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
- import { _ as _sfc_main$1 } from "./LpSidebar-CKamWtPo.js";
7
+ import { _ as _sfc_main$1 } from "./LpSidebar-D8tub3bt.js";
8
8
  import { useMergedAttrs } from "../composables/useMergedClass.js";
9
9
  const _hoisted_1 = ["href"];
10
10
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
@@ -1,18 +1,27 @@
1
- import { defineComponent, computed, useAttrs, ref, watch, openBlock, createBlock, unref, normalizeStyle, normalizeClass, withCtx, createVNode, createCommentVNode, mergeProps, createElementBlock, withModifiers, toDisplayString, createTextVNode, Fragment, renderList, createElementVNode } from "vue";
1
+ import { defineComponent, computed, useAttrs, ref, watch, openBlock, createBlock, unref, normalizeStyle, normalizeClass, withCtx, createVNode, createElementBlock, createCommentVNode, createElementVNode, mergeProps, Transition, toDisplayString, withModifiers, createTextVNode, Fragment, renderList, nextTick } from "vue";
2
2
  import { ComboboxRoot, ComboboxAnchor, ComboboxInput, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxItem } from "reka-ui";
3
3
  import { useFieldControl } from "../composables/useField.js";
4
4
  import { useInputFilter } from "../composables/useInputFilter.js";
5
5
  import { useLabels } from "../composables/useLpConfig.js";
6
6
  import { CLOSE_ICON, POPOVER_PANEL, OPTION_ITEM } from "../components/dropdown.js";
7
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
8
- const _hoisted_1 = ["aria-label"];
9
- const _hoisted_2 = {
7
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
8
+ const _hoisted_1 = ["src"];
9
+ const _hoisted_2 = { class: "relative flex min-w-0 flex-1 self-stretch" };
10
+ const _hoisted_3 = {
10
11
  key: 0,
11
- class: "px-3 py-4 text-center text-sm italic text-muted"
12
+ class: "pointer-events-none absolute inset-0 flex min-w-0 items-center gap-1.5",
13
+ "aria-hidden": "true"
12
14
  };
13
- const _hoisted_3 = { class: "flex min-w-0 flex-col" };
14
- const _hoisted_4 = { class: "truncate" };
15
+ const _hoisted_4 = ["aria-label"];
15
16
  const _hoisted_5 = {
17
+ key: 0,
18
+ class: "px-3 py-4 text-center text-sm italic text-muted"
19
+ };
20
+ const _hoisted_6 = { class: "flex min-w-0 items-center gap-2.5" };
21
+ const _hoisted_7 = ["src"];
22
+ const _hoisted_8 = { class: "flex min-w-0 flex-col" };
23
+ const _hoisted_9 = { class: "truncate" };
24
+ const _hoisted_10 = {
16
25
  key: 0,
17
26
  class: "truncate text-xs text-muted"
18
27
  };
@@ -35,7 +44,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
35
44
  filter: { type: Boolean, default: true },
36
45
  minChars: { default: 1 },
37
46
  pattern: {},
38
- restrict: {}
47
+ restrict: {},
48
+ selected: {}
39
49
  },
40
50
  emits: ["update:modelValue", "select"],
41
51
  setup(__props, { emit: __emit }) {
@@ -78,6 +88,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
78
88
  });
79
89
  const open = ref(false);
80
90
  const focused = ref(false);
91
+ const showSelected = computed(() => !!props.selected?.label && !focused.value);
92
+ const draft = ref(null);
93
+ const showImage = computed(() => !!props.selected?.image && (!focused.value || draft.value !== null));
81
94
  const canOpen = computed(
82
95
  () => text.value.length >= props.minChars && (props.loading || filtered.value.length > 0)
83
96
  );
@@ -96,21 +109,33 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
96
109
  function onInput(event) {
97
110
  filterInput(event);
98
111
  typing.value = true;
112
+ draft.value = null;
99
113
  text.value = event.target.value;
100
114
  }
101
- function onFocus() {
115
+ function onFocus(event) {
102
116
  typing.value = false;
103
117
  focused.value = true;
118
+ if (props.selected?.label) {
119
+ draft.value = props.selected.label;
120
+ const input = event.target;
121
+ void nextTick(() => input.select());
122
+ }
104
123
  if (canOpen.value) open.value = true;
105
124
  }
125
+ function onBlur() {
126
+ focused.value = false;
127
+ draft.value = null;
128
+ }
106
129
  function choose(opt) {
107
130
  typing.value = false;
131
+ draft.value = null;
108
132
  emit("update:modelValue", opt.value);
109
133
  emit("select", opt.value);
110
134
  open.value = false;
111
135
  }
112
136
  function clear() {
113
137
  typing.value = false;
138
+ draft.value = null;
114
139
  emit("update:modelValue", "");
115
140
  open.value = false;
116
141
  }
@@ -134,34 +159,66 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
134
159
  ]])
135
160
  }, {
136
161
  default: withCtx(() => [
137
- __props.icon ? (openBlock(), createBlock(_sfc_main$1, {
162
+ __props.icon || __props.selected?.image ? (openBlock(), createElementBlock("span", {
138
163
  key: 0,
139
- name: __props.icon,
140
- size: 16,
141
- class: "shrink-0 text-muted"
142
- }, null, 8, ["name"])) : createCommentVNode("", true),
143
- createVNode(unref(ComboboxInput), mergeProps(inputAttrs.value, {
144
- id: unref(field).id,
145
- "model-value": text.value,
146
- placeholder: __props.placeholder,
147
- disabled: unref(field).disabled,
148
- required: unref(field).required || void 0,
149
- "aria-invalid": isInvalidState.value || void 0,
150
- "aria-describedby": unref(field).describedBy,
151
- class: "lp-autofill min-w-0 flex-1 self-stretch bg-transparent outline-none placeholder:text-muted",
152
- onBeforeinput: unref(onBeforeInput),
153
- onPaste: unref(onPaste),
154
- onCompositionend: unref(onCompositionEnd),
155
- onInput,
156
- onFocus,
157
- onBlur: _cache[0] || (_cache[0] = ($event) => focused.value = false)
158
- }), null, 16, ["id", "model-value", "placeholder", "disabled", "required", "aria-invalid", "aria-describedby", "onBeforeinput", "onPaste", "onCompositionend"]),
164
+ class: normalizeClass(["relative grid shrink-0 place-items-center", __props.selected?.image ? "size-5" : "size-4"])
165
+ }, [
166
+ __props.icon ? (openBlock(), createBlock(_sfc_main$1, {
167
+ key: 0,
168
+ name: __props.icon,
169
+ size: 16,
170
+ class: normalizeClass(["col-start-1 row-start-1 text-muted transition-[opacity,scale] duration-[var(--duration-fast)] motion-reduce:transition-none", showImage.value ? "scale-75 opacity-0" : "opacity-100"])
171
+ }, null, 8, ["name", "class"])) : createCommentVNode("", true),
172
+ __props.selected?.image ? (openBlock(), createElementBlock("img", {
173
+ key: 1,
174
+ src: __props.selected.image,
175
+ alt: "",
176
+ class: normalizeClass(["col-start-1 row-start-1 size-5 rounded-full object-cover transition-[opacity,scale] duration-[var(--duration-fast)] motion-reduce:transition-none", showImage.value ? "opacity-100" : "scale-75 opacity-0"])
177
+ }, null, 10, _hoisted_1)) : createCommentVNode("", true)
178
+ ], 2)) : createCommentVNode("", true),
179
+ createElementVNode("div", _hoisted_2, [
180
+ createVNode(unref(ComboboxInput), mergeProps(inputAttrs.value, {
181
+ id: unref(field).id,
182
+ "model-value": draft.value ?? text.value,
183
+ placeholder: __props.placeholder,
184
+ disabled: unref(field).disabled,
185
+ required: unref(field).required || void 0,
186
+ "aria-invalid": isInvalidState.value || void 0,
187
+ "aria-describedby": unref(field).describedBy,
188
+ class: ["lp-autofill min-w-0 flex-1 self-stretch bg-transparent outline-none placeholder:text-muted", showSelected.value && "text-transparent placeholder:text-transparent"],
189
+ onBeforeinput: unref(onBeforeInput),
190
+ onPaste: unref(onPaste),
191
+ onCompositionend: unref(onCompositionEnd),
192
+ onInput,
193
+ onFocus,
194
+ onBlur
195
+ }), null, 16, ["id", "model-value", "placeholder", "disabled", "required", "aria-invalid", "aria-describedby", "class", "onBeforeinput", "onPaste", "onCompositionend"]),
196
+ createVNode(Transition, {
197
+ "enter-active-class": "transition-opacity duration-[var(--duration-fast)] motion-reduce:transition-none",
198
+ "leave-active-class": "transition-opacity duration-[var(--duration-fast)] motion-reduce:transition-none",
199
+ "enter-from-class": "opacity-0",
200
+ "leave-to-class": "opacity-0"
201
+ }, {
202
+ default: withCtx(() => [
203
+ __props.selected?.label ? (openBlock(), createElementBlock("span", _hoisted_3, [
204
+ createElementVNode("span", {
205
+ class: normalizeClass(["max-w-full shrink-0 truncate", showSelected.value ? "" : "invisible"])
206
+ }, toDisplayString(__props.selected.label), 3),
207
+ __props.selected.hint ? (openBlock(), createElementBlock("span", {
208
+ key: 0,
209
+ class: normalizeClass(["min-w-0 truncate text-sm text-muted transition-[opacity,translate] duration-[var(--duration-fast)] motion-reduce:transition-none", showSelected.value ? "opacity-100" : "-translate-x-1 opacity-0"])
210
+ }, toDisplayString(__props.selected.hint), 3)) : createCommentVNode("", true)
211
+ ])) : createCommentVNode("", true)
212
+ ]),
213
+ _: 1
214
+ })
215
+ ]),
159
216
  __props.clearable && hasValue.value ? (openBlock(), createElementBlock("button", {
160
217
  key: 1,
161
218
  type: "button",
162
219
  class: "group flex shrink-0 items-center text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink",
163
220
  "aria-label": unref(labels).clear,
164
- onPointerdown: _cache[1] || (_cache[1] = withModifiers(() => {
221
+ onPointerdown: _cache[0] || (_cache[0] = withModifiers(() => {
165
222
  }, ["prevent"])),
166
223
  onClick: clear
167
224
  }, [
@@ -170,7 +227,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
170
227
  size: 16,
171
228
  class: normalizeClass(unref(CLOSE_ICON))
172
229
  }, null, 8, ["class"])
173
- ], 40, _hoisted_1)) : createCommentVNode("", true)
230
+ ], 40, _hoisted_4)) : createCommentVNode("", true)
174
231
  ]),
175
232
  _: 1
176
233
  }, 8, ["class"]),
@@ -181,13 +238,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
181
238
  position: "popper",
182
239
  "side-offset": 6,
183
240
  class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) max-h-72 w-(--reka-combobox-trigger-width) overflow-hidden"]),
184
- onOpenAutoFocus: _cache[2] || (_cache[2] = withModifiers(() => {
241
+ onOpenAutoFocus: _cache[1] || (_cache[1] = withModifiers(() => {
185
242
  }, ["prevent"]))
186
243
  }, {
187
244
  default: withCtx(() => [
188
245
  createVNode(unref(ComboboxViewport), { class: "max-h-72 overflow-y-auto p-1" }, {
189
246
  default: withCtx(() => [
190
- __props.loading ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(__props.loadingText), 1)) : (openBlock(), createBlock(unref(ComboboxEmpty), {
247
+ __props.loading ? (openBlock(), createElementBlock("div", _hoisted_5, toDisplayString(__props.loadingText), 1)) : (openBlock(), createBlock(unref(ComboboxEmpty), {
191
248
  key: 1,
192
249
  class: "px-3 py-4 text-center text-sm italic text-muted"
193
250
  }, {
@@ -205,9 +262,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
205
262
  onSelect: withModifiers(($event) => choose(opt), ["prevent"])
206
263
  }, {
207
264
  default: withCtx(() => [
208
- createElementVNode("span", _hoisted_3, [
209
- createElementVNode("span", _hoisted_4, toDisplayString(opt.label ?? opt.value), 1),
210
- opt.description ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(opt.description), 1)) : createCommentVNode("", true)
265
+ createElementVNode("span", _hoisted_6, [
266
+ opt.image ? (openBlock(), createElementBlock("img", {
267
+ key: 0,
268
+ src: opt.image,
269
+ alt: "",
270
+ class: "size-6 shrink-0 rounded-full object-cover"
271
+ }, null, 8, _hoisted_7)) : createCommentVNode("", true),
272
+ createElementVNode("span", _hoisted_8, [
273
+ createElementVNode("span", _hoisted_9, toDisplayString(opt.label ?? opt.value), 1),
274
+ opt.description ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(opt.description), 1)) : createCommentVNode("", true)
275
+ ])
211
276
  ])
212
277
  ]),
213
278
  _: 2
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, computed, ref, onMounted, openBlock, createBlock, withCtx, createVNode, unref, mergeProps, createCommentVNode, createElementBlock, Fragment, createTextVNode, toDisplayString } from "vue";
2
2
  import { AvatarRoot, AvatarImage, AvatarFallback } from "reka-ui";
3
3
  import { tv } from "tailwind-variants";
4
- import { _ as _sfc_main$1 } from "./LpContextMenu-DRFd-iyc.js";
5
- import { _ as _sfc_main$2 } from "./LpIcon-B5guGKrW.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cv_F2iCG.js";
5
+ import { _ as _sfc_main$2 } from "./LpIcon-CTuDVTYv.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  const __default__ = { inheritAttrs: false };
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, Fragment, renderList, createBlock, createCommentVNode, resolveDynamicComponent, withCtx, toDisplayString } from "vue";
2
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
2
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
3
3
  import { useLabels, useLinkComponent } from "../composables/useLpConfig.js";
4
4
  import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { resolveLink } from "../components/link.js";
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createBlock, resolveDynamicCompon
2
2
  import { tv } from "tailwind-variants";
3
3
  import { useLinkComponent } from "../composables/useLpConfig.js";
4
4
  import { useMergedAttrs } from "../composables/useMergedClass.js";
5
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
5
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
6
6
  import { resolveLink } from "../components/link.js";
7
7
  const __default__ = { inheritAttrs: false };
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString } from "vue";
2
2
  import { today, getLocalTimeZone, parseDate } from "@internationalized/date";
3
3
  import { CalendarRoot, CalendarHeader, CalendarPrev, CalendarHeading, CalendarNext, CalendarGrid, CalendarGridHead, CalendarGridRow, CalendarHeadCell, CalendarGridBody, CalendarCell, CalendarCellTrigger } from "reka-ui";
4
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
4
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  const __default__ = { inheritAttrs: false };
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, withCtx, resolveDynamicComponent, mergeProps, unref, renderSlot } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- import { _ as _sfc_main$1 } from "./LpContextMenu-DRFd-iyc.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cv_F2iCG.js";
5
5
  const __default__ = { inheritAttrs: false };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  ...__default__,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, mergeProps, unref, createVNode, withCtx, renderSlot, createTextVNode, toDisplayString } from "vue";
2
2
  import { CheckboxRoot, CheckboxIndicator } from "reka-ui";
3
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
3
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
4
4
  import { useFieldControl } from "../composables/useField.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  const __default__ = { inheritAttrs: false };
@@ -2,7 +2,7 @@ import { defineComponent, computed, reactive, watch, ref, openBlock, createEleme
2
2
  import { useClipboard } from "../composables/useClipboard.js";
3
3
  import { tokenizeLines } from "../components/codeHighlight.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
- import { _ as _sfc_main$1 } from "./LpIcon-B5guGKrW.js";
5
+ import { _ as _sfc_main$1 } from "./LpIcon-CTuDVTYv.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  const _hoisted_1 = {
8
8
  key: 0,
@@ -5,8 +5,8 @@ import { useFieldControl } from "../composables/useField.js";
5
5
  import { DEFAULT_SWATCHES, formatColor, opaqueCss, parseColor, rgbToHsv, isLight, clampHsv } from "../components/color.js";
6
6
  import { useClipboard } from "../composables/useClipboard.js";
7
7
  import { POPOVER_PANEL } from "../components/dropdown.js";
8
- import { _ as _sfc_main$1 } from "./LpContextMenu-DRFd-iyc.js";
9
- import { _ as _sfc_main$2 } from "./LpIcon-B5guGKrW.js";
8
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cv_F2iCG.js";
9
+ import { _ as _sfc_main$2 } from "./LpIcon-CTuDVTYv.js";
10
10
  import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
11
11
  const _hoisted_1 = ["id", "disabled", "aria-label", "aria-invalid", "aria-describedby"];
12
12
  const _hoisted_2 = { class: "min-w-0 flex-1 truncate font-mono text-xs text-muted-strong" };
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createBlock, createSlots, withCtx, renderSlot, createElementBlock, toDisplayString, createCommentVNode, createVNode, createTextVNode, unref, createElementVNode, normalizeClass, nextTick } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
- import { _ as _sfc_main$2 } from "./LpButton-vhlwmpBy.js";
4
- import { _ as _sfc_main$3 } from "./LpIcon-B5guGKrW.js";
5
- import { _ as _sfc_main$1 } from "./LpModal-DvGD6kEe.js";
3
+ import { _ as _sfc_main$2 } from "./LpButton-CJSD7N0Z.js";
4
+ import { _ as _sfc_main$3 } from "./LpIcon-CTuDVTYv.js";
5
+ import { _ as _sfc_main$1 } from "./LpModal-QFfctZsj.js";
6
6
  const _hoisted_1 = { class: "inline-flex items-center gap-2.5" };
7
7
  const _hoisted_2 = {
8
8
  key: 0,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createBlock, createCommentVNode } from "vue";
2
2
  import { confirmQueue, settleConfirm } from "../components/confirm.js";
3
- import { _ as _sfc_main$1 } from "./LpConfirmDialog-DkgIT-Xg.js";
3
+ import { _ as _sfc_main$1 } from "./LpConfirmDialog-tkgyY3eu.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpConfirmHost",
6
6
  props: {