@leavepulse/ui 0.43.3 → 0.44.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 (340) hide show
  1. package/README.md +75 -7
  2. package/dist/assets/{LpCommandPalette-DH7sPcKP.css → LpCommandPalette-DCP5g2ik.css} +21 -21
  3. package/dist/assets/{LpDropzone-BBoWvi-J.css → LpDropzone-i4BdMi1H.css} +12 -12
  4. package/dist/assets/{LpImageEditor-Ct7Y3aNu.css → LpImageEditor-CbMA82g8.css} +6 -6
  5. package/dist/assets/{LpShortcutsDialog-C6YoQ8_M.css → LpShortcutsDialog-ChUyU7oV.css} +7 -7
  6. package/dist/assets/{LpSkeleton-D7xU8IPV.css → LpSkeleton-H3Z5dEIk.css} +4 -1
  7. package/dist/assets/{LpTable-BgPLJOXa.css → LpTable-DDQNdf86.css} +9 -9
  8. package/dist/chunks/ContextMenuItems-CrfeNPWT.js +123 -0
  9. package/dist/chunks/{LayoutCanvas-Dd20boUG.js → LayoutCanvas-D-jPOAvg.js} +26 -9
  10. package/dist/chunks/{LayoutNode-DGpZA9LX.js → LayoutNode-D8Xy9N-o.js} +20 -8
  11. package/dist/chunks/{LpActionBar-BlvtGB2P.js → LpActionBar-BbwCF6l5.js} +24 -10
  12. package/dist/chunks/{LpAddressInput-B-Zvxsn7.js → LpAddressInput-BrOqkZqg.js} +53 -48
  13. package/dist/chunks/{LpAlert-BAYHDSS1.js → LpAlert-DkOIjsbq.js} +15 -8
  14. package/dist/chunks/{LpAppShell-BGQVIY-3.js → LpAppShell-BUKPcHco.js} +51 -24
  15. package/dist/chunks/{LpAutocomplete-DExlIZe_.js → LpAutocomplete-DxV3Y9h4.js} +50 -23
  16. package/dist/chunks/{LpAvatar-B3-xAOH3.js → LpAvatar-ClBbEYZN.js} +17 -8
  17. package/dist/chunks/LpBreadcrumbs-B8IJgFIc.js +95 -0
  18. package/dist/chunks/{LpButton-5VXXCjwF.js → LpButton-kqJBHIIb.js} +44 -14
  19. package/dist/chunks/{LpCard-BhI1N_vL.js → LpCard-CpRByR0q.js} +1 -1
  20. package/dist/chunks/{LpCheckbox-CVccKYaH.js → LpCheckbox-DpqchzH4.js} +7 -3
  21. package/dist/chunks/{LpCodeBlock-Bo0B4TFR.js → LpCodeBlock-DeHJPq7p.js} +48 -16
  22. package/dist/chunks/{LpColorPicker-BlXea7LM.js → LpColorPicker-Bhf1qxhB.js} +32 -9
  23. package/dist/chunks/{LpConfirmDialog-Q-bxff8z.js → LpConfirmDialog-CIUOSnWo.js} +58 -16
  24. package/dist/chunks/LpConfirmHost-CDm0Wtpv.js +49 -0
  25. package/dist/chunks/LpContextMenu-DQw5dGfG.js +68 -0
  26. package/dist/chunks/LpDatePicker-Drirx1AK.js +191 -0
  27. package/dist/chunks/{LpDrawer-BZ6k3hvo.js → LpDrawer-bScx-KMO.js} +63 -26
  28. package/dist/chunks/{LpFileTree-_5vFBgaK.js → LpFileTree-CSI_5SK2.js} +23 -8
  29. package/dist/chunks/{LpFileTreeNode-BdcIYKIE.js → LpFileTreeNode-B4MiSQX2.js} +2 -2
  30. package/dist/chunks/LpFormField-CIk5qosh.js +87 -0
  31. package/dist/chunks/{LpInput-9EXWUM9B.js → LpInput-C0e8y8_d.js} +26 -11
  32. package/dist/chunks/{LpLightbox-2sYVMY-S.js → LpLightbox-Mr0W_6HK.js} +147 -60
  33. package/dist/chunks/{LpLink-DCND-zyu.js → LpLink-Krkjhe_y.js} +15 -6
  34. package/dist/chunks/{LpLogViewer-CaRy5MeS.js → LpLogViewer-YBOaFnc_.js} +68 -34
  35. package/dist/chunks/{LpMapPicker-ul4oYno6.js → LpMapPicker-NUzS9e37.js} +38 -13
  36. package/dist/chunks/{LpMediaGallery-FF-NquIo.js → LpMediaGallery-DfJmMW0I.js} +6 -3
  37. package/dist/chunks/{LpModal-Bt0pQCI_.js → LpModal-DPwGKBPv.js} +49 -26
  38. package/dist/chunks/{LpModalNav-YaifHrXC.js → LpModalNav-DPg5H9f3.js} +9 -6
  39. package/dist/chunks/{LpNotificationBell-DyGGsMAM.js → LpNotificationBell-t5yn-siX.js} +58 -24
  40. package/dist/chunks/{LpNumberField-CWuX08iX.js → LpNumberField-DWnQKktS.js} +20 -7
  41. package/dist/chunks/{LpNumberFlow-amWYaeuA.js → LpNumberFlow-z4WPZcZu.js} +22 -12
  42. package/dist/chunks/{LpOtpInput-y2v-pmiN.js → LpOtpInput-CziPF3Oq.js} +37 -8
  43. package/dist/chunks/{LpPagination-5FxjmmB5.js → LpPagination-DFngX7Xo.js} +30 -19
  44. package/dist/chunks/{LpPasswordInput--sjYCkLS.js → LpPasswordInput-CWVDuBJ5.js} +10 -7
  45. package/dist/chunks/{LpPhoneInput-BDSKVl_z.js → LpPhoneInput-CD-ZTeSd.js} +57 -33
  46. package/dist/chunks/{LpPie-D6OnzwlJ.js → LpPie-BLco31Nx.js} +78 -21
  47. package/dist/chunks/{LpPopover-8268UmlC.js → LpPopover-p_e_shN3.js} +4 -2
  48. package/dist/chunks/{LpProgress-Btq5W4Ut.js → LpProgress-CBU1iI69.js} +5 -4
  49. package/dist/chunks/{LpRadioGroup-xPIuVDO_.js → LpRadioGroup-DmEW0l78.js} +9 -2
  50. package/dist/chunks/{LpSegmented-fV0Sk92p.js → LpSegmented-Dejd7cIx.js} +7 -3
  51. package/dist/chunks/{LpSelect-ANIVtrpM.js → LpSelect-DrRD9I7L.js} +40 -18
  52. package/dist/chunks/{LpSidebar-ClBUwoEz.js → LpSidebar-BgwUNWpJ.js} +30 -22
  53. package/dist/chunks/{LpSidebarNav-llOcs_Fn.js → LpSidebarNav-Bqxz8aWT.js} +14 -9
  54. package/dist/chunks/{LpSkeleton-CTI-vBgW.js → LpSkeleton-BB6XIV-w.js} +1 -1
  55. package/dist/chunks/{LpSlider-BwNIBkAK.js → LpSlider-Cuzmrd7p.js} +7 -2
  56. package/dist/chunks/{LpSparkline-C6xQ2dwv.js → LpSparkline-CB80N8SJ.js} +11 -4
  57. package/dist/chunks/{LpStat-CQaW8R--.js → LpStat-dXtyrdX9.js} +1 -1
  58. package/dist/chunks/{LpSwitch-Blizvqyt.js → LpSwitch-B1aLKulj.js} +40 -26
  59. package/dist/chunks/{LpTableOfContents-CjvxPMpU.js → LpTableOfContents-BUcAfGPQ.js} +36 -41
  60. package/dist/chunks/{LpTabs-Cefe_lys.js → LpTabs-_qMVaZJ6.js} +19 -5
  61. package/dist/chunks/LpTextarea-yP8hGedR.js +77 -0
  62. package/dist/chunks/LpThemeProvider-Wjm7Tuit.js +35 -0
  63. package/dist/chunks/LpThemeSwitcher-CKLc10KZ.js +169 -0
  64. package/dist/chunks/{LpTilt-DuyKbpkA.js → LpTilt-B7KHX1zH.js} +2 -2
  65. package/dist/chunks/{LpTimeField-K6nAGboX.js → LpTimeField-C5HRgS5H.js} +13 -7
  66. package/dist/chunks/{LpToaster-gDB1EaU3.js → LpToaster--oT6lfhL.js} +57 -28
  67. package/dist/chunks/{LpTooltip-hCLPAqMG.js → LpTooltip-CBdzeKNf.js} +13 -6
  68. package/dist/chunks/LpTooltipProvider-CftjV7Xc.js +25 -0
  69. package/dist/chunks/{LpTopologyCanvas-Cm1L39uL.js → LpTopologyCanvas-DocsLal3.js} +6 -1
  70. package/dist/chunks/{LpUptimeBar-DvAMno0S.js → LpUptimeBar-DLtxOMRy.js} +43 -14
  71. package/dist/chunks/{LpThemeSwitcher-Cue-myST.js → useTheme-C8JHUlPM.js} +173 -215
  72. package/dist/component-names.d.ts +1 -1
  73. package/dist/components/ContextMenuItems.vue.d.ts +8 -0
  74. package/dist/components/ContextMenuItems.vue.js +4 -0
  75. package/dist/components/LayoutCanvas.vue.js +1 -1
  76. package/dist/components/LayoutNode.vue.d.ts +4 -0
  77. package/dist/components/LayoutNode.vue.js +1 -1
  78. package/dist/components/LpActionBar.vue.d.ts +3 -0
  79. package/dist/components/LpActionBar.vue.js +1 -1
  80. package/dist/components/LpAddressInput.vue.d.ts +1 -1
  81. package/dist/components/LpAddressInput.vue.js +1 -1
  82. package/dist/components/LpAlert.vue.d.ts +9 -0
  83. package/dist/components/LpAlert.vue.js +1 -1
  84. package/dist/components/LpAppShell.vue.d.ts +10 -0
  85. package/dist/components/LpAppShell.vue.js +1 -1
  86. package/dist/components/LpAutocomplete.vue.d.ts +31 -6
  87. package/dist/components/LpAutocomplete.vue.js +1 -1
  88. package/dist/components/LpAvatar.vue.d.ts +3 -3
  89. package/dist/components/LpAvatar.vue.js +1 -1
  90. package/dist/components/LpBadge.vue.d.ts +2 -2
  91. package/dist/components/LpBreadcrumbs.vue.d.ts +13 -9
  92. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  93. package/dist/components/LpButton.vue.d.ts +35 -98
  94. package/dist/components/LpButton.vue.js +1 -1
  95. package/dist/components/LpCard.vue.js +1 -1
  96. package/dist/components/LpChart.vue.d.ts +31 -2
  97. package/dist/components/LpChart.vue.js +317 -95
  98. package/dist/components/LpCheckbox.vue.js +1 -1
  99. package/dist/components/LpCodeBlock.vue.d.ts +2 -0
  100. package/dist/components/LpCodeBlock.vue.js +1 -1
  101. package/dist/components/LpColorPicker.vue.js +1 -1
  102. package/dist/components/LpCommandPalette.vue.d.ts +8 -10
  103. package/dist/components/LpCommandPalette.vue.js +88 -78
  104. package/dist/components/LpConfirmDialog.vue.d.ts +15 -3
  105. package/dist/components/LpConfirmDialog.vue.js +1 -1
  106. package/dist/components/LpConfirmHost.vue.d.ts +9 -0
  107. package/dist/components/LpConfirmHost.vue.js +4 -0
  108. package/dist/components/LpContextMenu.vue.d.ts +3 -5
  109. package/dist/components/LpContextMenu.vue.js +1 -1
  110. package/dist/components/LpDatePicker.vue.d.ts +24 -6
  111. package/dist/components/LpDatePicker.vue.js +1 -1
  112. package/dist/components/LpDrawer.vue.d.ts +10 -0
  113. package/dist/components/LpDrawer.vue.js +1 -1
  114. package/dist/components/LpDropzone.vue.js +22 -6
  115. package/dist/components/LpFileTree.vue.d.ts +11 -2
  116. package/dist/components/LpFileTree.vue.js +1 -1
  117. package/dist/components/LpFileTreeNode.vue.js +1 -1
  118. package/dist/components/LpFormField.vue.d.ts +9 -0
  119. package/dist/components/LpFormField.vue.js +1 -1
  120. package/dist/components/LpImageEditor.vue.js +92 -57
  121. package/dist/components/LpInput.vue.d.ts +3 -3
  122. package/dist/components/LpInput.vue.js +1 -1
  123. package/dist/components/LpLightbox.vue.d.ts +17 -0
  124. package/dist/components/LpLightbox.vue.js +1 -1
  125. package/dist/components/LpLink.vue.d.ts +11 -11
  126. package/dist/components/LpLink.vue.js +1 -1
  127. package/dist/components/LpLogViewer.vue.d.ts +20 -2
  128. package/dist/components/LpLogViewer.vue.js +1 -1
  129. package/dist/components/LpMapPicker.vue.d.ts +4 -4
  130. package/dist/components/LpMapPicker.vue.js +1 -1
  131. package/dist/components/LpMediaGallery.vue.js +1 -1
  132. package/dist/components/LpModal.vue.d.ts +16 -6
  133. package/dist/components/LpModal.vue.js +1 -1
  134. package/dist/components/LpModalNav.vue.d.ts +0 -1
  135. package/dist/components/LpModalNav.vue.js +1 -1
  136. package/dist/components/LpNotificationBell.vue.d.ts +11 -2
  137. package/dist/components/LpNotificationBell.vue.js +1 -1
  138. package/dist/components/LpNumberField.vue.d.ts +2 -0
  139. package/dist/components/LpNumberField.vue.js +1 -1
  140. package/dist/components/LpNumberFlow.vue.js +1 -1
  141. package/dist/components/LpOtpInput.vue.js +1 -1
  142. package/dist/components/LpPagination.vue.d.ts +2 -0
  143. package/dist/components/LpPagination.vue.js +1 -1
  144. package/dist/components/LpPasswordInput.vue.js +1 -1
  145. package/dist/components/LpPhoneInput.vue.js +1 -1
  146. package/dist/components/LpPie.vue.d.ts +21 -2
  147. package/dist/components/LpPie.vue.js +1 -1
  148. package/dist/components/LpPopover.vue.d.ts +2 -0
  149. package/dist/components/LpPopover.vue.js +1 -1
  150. package/dist/components/LpProgress.vue.js +1 -1
  151. package/dist/components/LpRadioGroup.vue.js +1 -1
  152. package/dist/components/LpSection.vue.d.ts +1 -1
  153. package/dist/components/LpSegmented.vue.d.ts +5 -0
  154. package/dist/components/LpSegmented.vue.js +1 -1
  155. package/dist/components/LpSelect.vue.d.ts +1 -0
  156. package/dist/components/LpSelect.vue.js +1 -1
  157. package/dist/components/LpShortcutsDialog.vue.d.ts +1 -1
  158. package/dist/components/LpShortcutsDialog.vue.js +11 -8
  159. package/dist/components/LpSidebar.vue.d.ts +6 -2
  160. package/dist/components/LpSidebar.vue.js +1 -1
  161. package/dist/components/LpSidebarNav.vue.js +1 -1
  162. package/dist/components/LpSkeleton.vue.js +1 -1
  163. package/dist/components/LpSlider.vue.js +1 -1
  164. package/dist/components/LpSparkline.vue.d.ts +1 -0
  165. package/dist/components/LpSparkline.vue.js +1 -1
  166. package/dist/components/LpStat.vue.js +1 -1
  167. package/dist/components/LpSwitch.vue.js +1 -1
  168. package/dist/components/LpTable.vue.d.ts +23 -1
  169. package/dist/components/LpTable.vue.js +74 -36
  170. package/dist/components/LpTableOfContents.vue.d.ts +4 -2
  171. package/dist/components/LpTableOfContents.vue.js +1 -1
  172. package/dist/components/LpTabs.vue.d.ts +2 -0
  173. package/dist/components/LpTabs.vue.js +1 -1
  174. package/dist/components/LpTextarea.vue.d.ts +19 -6
  175. package/dist/components/LpTextarea.vue.js +1 -1
  176. package/dist/components/LpThemeProvider.vue.d.ts +22 -0
  177. package/dist/components/LpThemeProvider.vue.js +4 -0
  178. package/dist/components/LpThemeSwitcher.vue.d.ts +13 -0
  179. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  180. package/dist/components/LpTilt.vue.js +1 -1
  181. package/dist/components/LpTimeField.vue.js +1 -1
  182. package/dist/components/LpToaster.vue.d.ts +6 -1
  183. package/dist/components/LpToaster.vue.js +1 -1
  184. package/dist/components/LpTooltip.vue.d.ts +1 -2
  185. package/dist/components/LpTooltip.vue.js +1 -1
  186. package/dist/components/LpTooltipProvider.vue.d.ts +22 -0
  187. package/dist/components/LpTooltipProvider.vue.js +4 -0
  188. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  189. package/dist/components/LpUptimeBar.vue.d.ts +4 -0
  190. package/dist/components/LpUptimeBar.vue.js +1 -1
  191. package/dist/components/chart.d.ts +32 -1
  192. package/dist/components/chart.js +39 -4
  193. package/dist/components/codeHighlight.d.ts +6 -0
  194. package/dist/components/codeHighlight.js +92 -20
  195. package/dist/components/color.d.ts +1 -1
  196. package/dist/components/color.js +20 -9
  197. package/dist/components/commandSearch.d.ts +0 -1
  198. package/dist/components/commandSearch.js +1 -17
  199. package/dist/components/confirm.d.ts +25 -0
  200. package/dist/components/confirm.js +26 -0
  201. package/dist/components/countries.d.ts +6 -0
  202. package/dist/components/countries.js +7 -0
  203. package/dist/components/fileTree.js +16 -7
  204. package/dist/components/imageCrop.d.ts +42 -0
  205. package/dist/components/imageCrop.js +47 -0
  206. package/dist/components/link.d.ts +12 -0
  207. package/dist/components/link.js +19 -0
  208. package/dist/components/modalDepth.d.ts +18 -2
  209. package/dist/components/modalDepth.js +17 -5
  210. package/dist/components/otp.d.ts +5 -0
  211. package/dist/components/otp.js +10 -0
  212. package/dist/components/sidebar.d.ts +7 -1
  213. package/dist/components/tableSort.d.ts +8 -0
  214. package/dist/components/tableSort.js +31 -0
  215. package/dist/composables/useField.d.ts +34 -0
  216. package/dist/composables/useField.js +45 -0
  217. package/dist/composables/useFormDraft.d.ts +10 -3
  218. package/dist/composables/useFormDraft.js +9 -14
  219. package/dist/composables/useHotkeys.d.ts +17 -1
  220. package/dist/composables/useHotkeys.js +55 -18
  221. package/dist/composables/useInputFilter.d.ts +17 -0
  222. package/dist/composables/useInputFilter.js +47 -10
  223. package/dist/composables/useLpConfig.d.ts +24 -0
  224. package/dist/composables/useLpConfig.js +44 -0
  225. package/dist/composables/useRovingFocus.js +7 -0
  226. package/dist/composables/useTilt.d.ts +2 -2
  227. package/dist/composables/useTilt.js +5 -6
  228. package/dist/composables/useToast.d.ts +20 -0
  229. package/dist/composables/useToast.js +28 -4
  230. package/dist/composables/useZoomPan.d.ts +3 -3
  231. package/dist/composables/useZoomPan.js +4 -4
  232. package/dist/index.d.ts +33 -3
  233. package/dist/index.js +185 -139
  234. package/dist/layout/tree.d.ts +2 -0
  235. package/dist/layout/tree.js +16 -1
  236. package/dist/layout/useLayout.d.ts +15 -0
  237. package/dist/layout/useLayout.js +41 -14
  238. package/dist/theme/useTheme.d.ts +32 -9
  239. package/package.json +8 -7
  240. package/src/component-names.ts +5 -7
  241. package/src/components/ContextMenuItems.vue +88 -0
  242. package/src/components/LayoutCanvas.vue +26 -6
  243. package/src/components/LayoutNode.vue +19 -2
  244. package/src/components/LpActionBar.vue +30 -7
  245. package/src/components/LpAddressInput.vue +57 -41
  246. package/src/components/LpAlert.vue +16 -3
  247. package/src/components/LpAppShell.vue +45 -12
  248. package/src/components/LpAutocomplete.vue +46 -10
  249. package/src/components/LpAvatar.vue +19 -5
  250. package/src/components/LpBreadcrumbs.vue +65 -41
  251. package/src/components/LpButton.vue +59 -13
  252. package/src/components/LpChart.vue +272 -28
  253. package/src/components/LpCheckbox.vue +7 -3
  254. package/src/components/LpCodeBlock.vue +50 -14
  255. package/src/components/LpColorPicker.vue +39 -9
  256. package/src/components/LpCommandPalette.vue +36 -25
  257. package/src/components/LpConfirmDialog.vue +68 -17
  258. package/src/components/LpConfirmHost.vue +59 -0
  259. package/src/components/LpContextMenu.vue +14 -115
  260. package/src/components/LpDatePicker.vue +99 -68
  261. package/src/components/LpDrawer.vue +56 -19
  262. package/src/components/LpDropzone.vue +21 -4
  263. package/src/components/LpFileTree.vue +33 -7
  264. package/src/components/LpFormField.vue +30 -7
  265. package/src/components/LpImageEditor.vue +96 -57
  266. package/src/components/LpInput.vue +18 -7
  267. package/src/components/LpLightbox.vue +140 -29
  268. package/src/components/LpLink.vue +24 -13
  269. package/src/components/LpLogViewer.vue +86 -17
  270. package/src/components/LpMapPicker.vue +36 -13
  271. package/src/components/LpMediaGallery.vue +8 -2
  272. package/src/components/LpModal.vue +53 -27
  273. package/src/components/LpModalNav.vue +5 -2
  274. package/src/components/LpNotificationBell.vue +63 -17
  275. package/src/components/LpNumberField.vue +21 -6
  276. package/src/components/LpNumberFlow.vue +26 -10
  277. package/src/components/LpOtpInput.vue +43 -8
  278. package/src/components/LpPagination.vue +23 -7
  279. package/src/components/LpPasswordInput.vue +4 -1
  280. package/src/components/LpPhoneInput.vue +53 -27
  281. package/src/components/LpPie.vue +94 -15
  282. package/src/components/LpPopover.vue +3 -0
  283. package/src/components/LpProgress.vue +5 -3
  284. package/src/components/LpRadioGroup.vue +9 -2
  285. package/src/components/LpSegmented.vue +12 -2
  286. package/src/components/LpSelect.vue +0 -0
  287. package/src/components/LpShortcutsDialog.vue +8 -3
  288. package/src/components/LpSidebar.vue +14 -9
  289. package/src/components/LpSidebarNav.vue +17 -5
  290. package/src/components/LpSkeleton.vue +4 -1
  291. package/src/components/LpSlider.vue +7 -1
  292. package/src/components/LpSparkline.vue +11 -3
  293. package/src/components/LpSwitch.vue +30 -7
  294. package/src/components/LpTable.vue +91 -32
  295. package/src/components/LpTableOfContents.vue +50 -32
  296. package/src/components/LpTabs.vue +23 -6
  297. package/src/components/LpTextarea.vue +44 -6
  298. package/src/components/LpThemeProvider.vue +41 -0
  299. package/src/components/LpThemeSwitcher.vue +64 -17
  300. package/src/components/LpTilt.vue +2 -2
  301. package/src/components/LpTimeField.vue +14 -3
  302. package/src/components/LpToaster.vue +66 -26
  303. package/src/components/LpTooltip.vue +22 -5
  304. package/src/components/LpTooltipProvider.vue +24 -0
  305. package/src/components/LpTopologyCanvas.vue +12 -1
  306. package/src/components/LpUptimeBar.vue +46 -8
  307. package/src/components/chart.ts +77 -5
  308. package/src/components/codeHighlight.ts +111 -15
  309. package/src/components/color.ts +30 -9
  310. package/src/components/commandSearch.ts +0 -17
  311. package/src/components/confirm.ts +58 -0
  312. package/src/components/countries.ts +12 -0
  313. package/src/components/fileTree.ts +19 -7
  314. package/src/components/imageCrop.ts +107 -0
  315. package/src/components/link.ts +34 -0
  316. package/src/components/modalDepth.ts +48 -6
  317. package/src/components/otp.ts +16 -0
  318. package/src/components/sidebar.ts +7 -1
  319. package/src/components/tableSort.ts +37 -0
  320. package/src/composables/useField.ts +79 -0
  321. package/src/composables/useFormDraft.ts +25 -20
  322. package/src/composables/useHotkeys.ts +89 -18
  323. package/src/composables/useInputFilter.ts +77 -14
  324. package/src/composables/useLpConfig.ts +87 -0
  325. package/src/composables/useRovingFocus.ts +11 -0
  326. package/src/composables/useTilt.ts +5 -6
  327. package/src/composables/useToast.ts +56 -4
  328. package/src/composables/useZoomPan.ts +6 -6
  329. package/src/index.ts +38 -3
  330. package/src/layout/tree.ts +30 -0
  331. package/src/layout/useLayout.ts +68 -18
  332. package/src/nuxt.ts +59 -17
  333. package/src/runtime/config.plugin.ts +14 -0
  334. package/src/runtime/theme.plugin.ts +42 -22
  335. package/src/theme/useTheme.ts +206 -100
  336. package/dist/chunks/LpBreadcrumbs-p4jHe_V-.js +0 -62
  337. package/dist/chunks/LpContextMenu-CwW1QXe_.js +0 -217
  338. package/dist/chunks/LpDatePicker-CwOToxGq.js +0 -164
  339. package/dist/chunks/LpFormField-CazBc2-a.js +0 -62
  340. package/dist/chunks/LpTextarea-t7F6gv8E.js +0 -47
@@ -1,4 +1,22 @@
1
1
  import { type ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ export interface LogViewerLabels {
3
+ [key: string]: string;
4
+ empty: string;
5
+ frozen: string;
6
+ noMatch: string;
7
+ loadingOlder: string;
8
+ copyMessage: string;
9
+ copyLine: string;
10
+ copyTimestamp: string;
11
+ copied: string;
12
+ /** `{source}` is replaced by the line's source. */
13
+ filterSource: string;
14
+ /** `{level}` is replaced by the line's level. */
15
+ filterLevel: string;
16
+ /** `{n}` is replaced by the count. */
17
+ identical: string;
18
+ jump: string;
19
+ }
2
20
  export type LogLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal" | "success";
3
21
  export interface LogLine {
4
22
  /** Body of the line. */
@@ -69,6 +87,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
69
87
  * so a duplicate level word / timestamp doesn't repeat in the message body.
70
88
  */
71
89
  parse?: boolean;
90
+ labels?: Partial<LogViewerLabels>;
72
91
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
73
92
  filter: (by: {
74
93
  source?: string;
@@ -133,6 +152,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
133
152
  * so a duplicate level word / timestamp doesn't repeat in the message body.
134
153
  */
135
154
  parse?: boolean;
155
+ labels?: Partial<LogViewerLabels>;
136
156
  }> & Readonly<{
137
157
  onFilter?: ((by: {
138
158
  source?: string;
@@ -142,12 +162,10 @@ declare const __VLS_export: import("vue").DefineComponent<{
142
162
  }>, {
143
163
  height: string;
144
164
  wrap: boolean;
145
- emptyLabel: string;
146
165
  lineNumbers: boolean;
147
166
  showTime: boolean;
148
167
  showLevel: boolean;
149
168
  tail: boolean;
150
- frozenLabel: string;
151
169
  rowMenu: boolean;
152
170
  parse: boolean;
153
171
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLogViewer-CaRy5MeS.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLogViewer-YBOaFnc_.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -19,6 +19,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
19
19
  zoomOutLabel?: string;
20
20
  locateLabel?: string;
21
21
  recentreLabel?: string;
22
+ /** Accessible name of the map itself. */
23
+ mapLabel?: string;
22
24
  }, {
23
25
  zoomIn: () => void;
24
26
  zoomOut: () => void;
@@ -44,6 +46,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
44
46
  zoomOutLabel?: string;
45
47
  locateLabel?: string;
46
48
  recentreLabel?: string;
49
+ /** Accessible name of the map itself. */
50
+ mapLabel?: string;
47
51
  }> & Readonly<{
48
52
  "onUpdate:modelValue"?: ((value: LatLon) => any) | undefined;
49
53
  }>, {
@@ -52,8 +56,4 @@ declare const __VLS_export: import("vue").DefineComponent<{
52
56
  zoom: number;
53
57
  tiles: TileSource;
54
58
  locatable: boolean;
55
- zoomInLabel: string;
56
- zoomOutLabel: string;
57
- locateLabel: string;
58
- recentreLabel: string;
59
59
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpMapPicker-ul4oYno6.js";
1
+ import { _ as _sfc_main } from "../chunks/LpMapPicker-NUzS9e37.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpMediaGallery-FF-NquIo.js";
1
+ import { _ as _sfc_main } from "../chunks/LpMediaGallery-DfJmMW0I.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -32,20 +32,30 @@ type __VLS_Props = {
32
32
  * `provideGlass`, and without one it is off.
33
33
  */
34
34
  glass?: boolean;
35
+ /**
36
+ * Accessible name for a dialog without a visible `title`. Rendered as a
37
+ * visually hidden title, so assistive tech still announces what opened.
38
+ */
39
+ ariaLabel?: string;
40
+ /** `alertdialog` for a prompt that interrupts the user (a confirmation). */
41
+ role?: "dialog" | "alertdialog";
42
+ labels?: Partial<{
43
+ close: string;
44
+ }>;
35
45
  };
36
- declare var __VLS_31: {}, __VLS_39: {}, __VLS_58: {}, __VLS_66: {}, __VLS_68: {}, __VLS_70: {};
46
+ declare var __VLS_31: {}, __VLS_45: {}, __VLS_64: {}, __VLS_72: {}, __VLS_74: {}, __VLS_76: {};
37
47
  type __VLS_Slots = {} & {
38
48
  aside?: (props: typeof __VLS_31) => any;
39
49
  } & {
40
- title?: (props: typeof __VLS_39) => any;
50
+ title?: (props: typeof __VLS_45) => any;
41
51
  } & {
42
- default?: (props: typeof __VLS_58) => any;
52
+ default?: (props: typeof __VLS_64) => any;
43
53
  } & {
44
- default?: (props: typeof __VLS_66) => any;
54
+ default?: (props: typeof __VLS_72) => any;
45
55
  } & {
46
- footer?: (props: typeof __VLS_68) => any;
56
+ footer?: (props: typeof __VLS_74) => any;
47
57
  } & {
48
- asideEnd?: (props: typeof __VLS_70) => any;
58
+ asideEnd?: (props: typeof __VLS_76) => any;
49
59
  };
50
60
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
51
61
  "update:open": (value: boolean) => any;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModal-Bt0pQCI_.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModal-DPwGKBPv.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -53,7 +53,6 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
53
53
  glass: boolean;
54
54
  mobileBreakpoint: Breakpoint;
55
55
  navWidth: string;
56
- navLabel: string;
57
56
  navSide: "start" | "end";
58
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
59
58
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModalNav-YaifHrXC.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModalNav-DPg5H9f3.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -36,6 +36,15 @@ export interface NotificationLabels {
36
36
  dismiss?: string;
37
37
  empty?: string;
38
38
  ariaLabel?: string;
39
+ /** Appended to the button's name while there is unread news; `{count}` is filled in. */
40
+ unread?: string;
41
+ /** Screen-reader marker on an unread row. */
42
+ unreadItem?: string;
43
+ /** Relative times; `{n}` is filled in. */
44
+ justNow?: string;
45
+ minutes?: string;
46
+ hours?: string;
47
+ days?: string;
39
48
  }
40
49
  type __VLS_Props = {
41
50
  items?: NotificationItem[];
@@ -66,17 +75,17 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
66
75
  clear: () => any;
67
76
  select: (item: NotificationItem) => any;
68
77
  dismiss: (id: string) => any;
78
+ markAllRead: () => any;
69
79
  markRead: (id: string) => any;
70
80
  markUnread: (id: string) => any;
71
- markAllRead: () => any;
72
81
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
73
82
  onClear?: (() => any) | undefined;
74
83
  onSelect?: ((item: NotificationItem) => any) | undefined;
75
84
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
76
85
  onDismiss?: ((id: string) => any) | undefined;
86
+ onMarkAllRead?: (() => any) | undefined;
77
87
  onMarkRead?: ((id: string) => any) | undefined;
78
88
  onMarkUnread?: ((id: string) => any) | undefined;
79
- onMarkAllRead?: (() => any) | undefined;
80
89
  }>, {
81
90
  items: NotificationItem[];
82
91
  maxBadge: number;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNotificationBell-DyGGsMAM.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNotificationBell-t5yn-siX.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -7,6 +7,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
7
7
  step?: number;
8
8
  disabled?: boolean;
9
9
  unit?: string;
10
+ invalid?: boolean;
10
11
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
11
12
  "update:modelValue": (value: number | null) => any;
12
13
  }, string, import("vue").PublicProps, Readonly<{
@@ -16,6 +17,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
16
17
  step?: number;
17
18
  disabled?: boolean;
18
19
  unit?: string;
20
+ invalid?: boolean;
19
21
  }> & Readonly<{
20
22
  "onUpdate:modelValue"?: ((value: number | null) => any) | undefined;
21
23
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNumberField-CWuX08iX.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNumberField-DWnQKktS.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNumberFlow-amWYaeuA.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNumberFlow-z4WPZcZu.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpOtpInput-y2v-pmiN.js";
1
+ import { _ as _sfc_main } from "../chunks/LpOtpInput-CziPF3Oq.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -11,6 +11,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
11
11
  /** Pages shown on each side of the current one in the inner run. */
12
12
  siblings?: number;
13
13
  disabled?: boolean;
14
+ labels?: Partial<Record<"nav" | "previous" | "next", string>>;
14
15
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
15
16
  change: (value: number) => any;
16
17
  "update:page": (value: number) => any;
@@ -25,6 +26,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
25
26
  /** Pages shown on each side of the current one in the inner run. */
26
27
  siblings?: number;
27
28
  disabled?: boolean;
29
+ labels?: Partial<Record<"nav" | "previous" | "next", string>>;
28
30
  }> & Readonly<{
29
31
  onChange?: ((value: number) => any) | undefined;
30
32
  "onUpdate:page"?: ((value: number) => any) | undefined;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPagination-5FxjmmB5.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPagination-DFngX7Xo.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPasswordInput--sjYCkLS.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPasswordInput-CWVDuBJ5.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPhoneInput-BDSKVl_z.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPhoneInput-CD-ZTeSd.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,5 +1,13 @@
1
1
  import { type PieSlice } from "./chart";
2
2
  import { type ContextMenuItemDef } from "./LpContextMenu.vue";
3
+ export interface PieText {
4
+ [key: string]: string;
5
+ empty: string;
6
+ other: string;
7
+ total: string;
8
+ /** "{n} selected"; `{n}` is replaced by the count. */
9
+ selected: string;
10
+ }
3
11
  /** A slice, as reported by every interaction event. */
4
12
  export interface SliceEvent {
5
13
  index: number;
@@ -75,6 +83,12 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
75
83
  */
76
84
  menuItems?: (slice: SliceEvent, selection: SliceEvent[]) => ContextMenuItemDef[];
77
85
  emptyLabel?: string;
86
+ /** Accessible name for the chart. Defaults to a generated summary. */
87
+ ariaLabel?: string;
88
+ /** Render the slices as a visually hidden table for screen readers. */
89
+ dataTable?: boolean;
90
+ /** Text overrides (`labels` is taken by the callout switch). */
91
+ text?: Partial<PieText>;
78
92
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
79
93
  sliceClick: (payload: SliceEvent) => any;
80
94
  selectionChange: (payload: SliceEvent[]) => any;
@@ -145,6 +159,12 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
145
159
  */
146
160
  menuItems?: (slice: SliceEvent, selection: SliceEvent[]) => ContextMenuItemDef[];
147
161
  emptyLabel?: string;
162
+ /** Accessible name for the chart. Defaults to a generated summary. */
163
+ ariaLabel?: string;
164
+ /** Render the slices as a visually hidden table for screen readers. */
165
+ dataTable?: boolean;
166
+ /** Text overrides (`labels` is taken by the callout switch). */
167
+ text?: Partial<PieText>;
148
168
  }> & Readonly<{
149
169
  onSliceClick?: ((payload: SliceEvent) => any) | undefined;
150
170
  onSelectionChange?: ((payload: SliceEvent[]) => any) | undefined;
@@ -154,10 +174,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
154
174
  size: number;
155
175
  animate: boolean;
156
176
  duration: number;
157
- emptyLabel: string;
177
+ dataTable: boolean;
158
178
  innerRatio: number;
159
179
  maxSlices: number;
160
- otherLabel: string;
161
180
  labelWidth: number;
162
181
  showPercent: boolean;
163
182
  showTotal: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPie-D6OnzwlJ.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPie-BLco31Nx.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -4,6 +4,8 @@ type __VLS_Props = {
4
4
  sideOffset?: number;
5
5
  /** Extra classes for the floating panel (width, padding, overflow). */
6
6
  panelClass?: string;
7
+ /** Accessible name of the panel, which reka exposes as a dialog. */
8
+ ariaLabel?: string;
7
9
  };
8
10
  type __VLS_ModelProps = {
9
11
  "open"?: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPopover-8268UmlC.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPopover-p_e_shN3.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpProgress-Btq5W4Ut.js";
1
+ import { _ as _sfc_main } from "../chunks/LpProgress-CBU1iI69.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpRadioGroup-xPIuVDO_.js";
1
+ import { _ as _sfc_main } from "../chunks/LpRadioGroup-DmEW0l78.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -108,7 +108,7 @@ type __VLS_Slots = {
108
108
  };
109
109
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
110
110
  as: "h1" | "h2" | "h3" | "h4" | "p";
111
- level: "sm" | "md" | "lg" | "xl";
111
+ level: "md" | "sm" | "lg" | "xl";
112
112
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
113
113
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
114
114
  declare const _default: typeof __VLS_export;
@@ -3,6 +3,11 @@ export interface SegmentedOption {
3
3
  label?: string;
4
4
  /** Optional iconify name shown before the label (or alone, icon-only). */
5
5
  icon?: string;
6
+ /**
7
+ * Accessible name for an icon-only segment. Without it the raw `value` is
8
+ * announced, which is an identifier rather than words.
9
+ */
10
+ ariaLabel?: string;
6
11
  }
7
12
  declare const _default: typeof __VLS_export;
8
13
  export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSegmented-fV0Sk92p.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSegmented-Dejd7cIx.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -14,6 +14,7 @@ declare const __VLS_export: <V extends SelectValue = string>(__VLS_props: NonNul
14
14
  multiple?: boolean;
15
15
  clearable?: boolean;
16
16
  disabled?: boolean;
17
+ invalid?: boolean;
17
18
  emptyText?: string;
18
19
  searchTerm?: string;
19
20
  loading?: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSelect-ANIVtrpM.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSelect-DrRD9I7L.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -17,8 +17,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
17
17
  title: string;
18
18
  open: boolean;
19
19
  glass: boolean;
20
- groups: ShortcutGroup[];
21
20
  live: boolean;
21
+ groups: ShortcutGroup[];
22
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
23
  declare const _default: typeof __VLS_export;
24
24
  export default _default;
@@ -1,21 +1,24 @@
1
- import { defineComponent, computed, openBlock, createBlock, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString, unref } from "vue";
2
- import { _ as _sfc_main$1 } from "../chunks/LpModal-Bt0pQCI_.js";
3
- import { mergeShortcutGroups, activeShortcuts, appleModifierLabel } from "../composables/useHotkeys.js";
1
+ import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString } from "vue";
2
+ import { _ as _sfc_main$1 } from "../chunks/LpModal-DPwGKBPv.js";
3
+ import { useAppleKeyboard, mergeShortcutGroups, activeShortcuts, appleModifierLabel } from "../composables/useHotkeys.js";
4
+ import { useLabels } from "../composables/useLpConfig.js";
4
5
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
5
- import '../assets/LpShortcutsDialog-C6YoQ8_M.css';const _hoisted_1 = { class: "shortcut-groups" };
6
+ import '../assets/LpShortcutsDialog-ChUyU7oV.css';const _hoisted_1 = { class: "shortcut-groups" };
6
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
8
  __name: "LpShortcutsDialog",
8
9
  props: {
9
10
  open: { type: Boolean, default: false },
10
11
  groups: { default: () => [] },
11
12
  live: { type: Boolean, default: false },
12
- title: { default: "Keyboard shortcuts" },
13
+ title: { default: void 0 },
13
14
  description: {},
14
15
  glass: { type: Boolean, default: void 0 }
15
16
  },
16
17
  emits: ["update:open"],
17
18
  setup(__props, { emit: __emit }) {
18
19
  const props = __props;
20
+ const text = useLabels("shortcuts", { title: "Keyboard shortcuts" });
21
+ const apple = useAppleKeyboard();
19
22
  function keysOf(combo) {
20
23
  return combo.split(/\+(?!$)/);
21
24
  }
@@ -26,7 +29,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
26
29
  glass: props.glass,
27
30
  open: props.open,
28
31
  size: "lg",
29
- title: props.title,
32
+ title: props.title ?? unref(text).title,
30
33
  description: props.description,
31
34
  "onUpdate:open": _cache[0] || (_cache[0] = (value) => emit("update:open", value))
32
35
  }, {
@@ -49,7 +52,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
49
52
  (openBlock(true), createElementBlock(Fragment, null, renderList(keysOf(entry.combo), (key, index) => {
50
53
  return openBlock(), createElementBlock("kbd", {
51
54
  key: `${key}-${index}`
52
- }, toDisplayString(unref(appleModifierLabel)(key.trim())), 1);
55
+ }, toDisplayString(unref(appleModifierLabel)(key.trim(), unref(apple))), 1);
53
56
  }), 128))
54
57
  ])
55
58
  ]);
@@ -64,7 +67,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
64
67
  };
65
68
  }
66
69
  });
67
- const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8af3bafc"]]);
70
+ const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b7784bfc"]]);
68
71
  export {
69
72
  LpShortcutsDialog as default
70
73
  };
@@ -23,8 +23,13 @@ type __VLS_Props = {
23
23
  * query is active — a hidden match is the same as no match.
24
24
  */
25
25
  searchable?: boolean;
26
- /** Placeholder for that field. */
26
+ /** Placeholder for that field (defaults to the `search` label). */
27
27
  searchPlaceholder?: string;
28
+ /** Text overrides: `nav` names the landmark, `search` the filter field. */
29
+ labels?: Partial<{
30
+ nav: string;
31
+ search: string;
32
+ }>;
28
33
  /** The query, when the app wants to own it (v-model:search). */
29
34
  search?: string;
30
35
  /** Show a skeleton placeholder instead of the items. */
@@ -128,7 +133,6 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
128
133
  "onUpdate:search"?: ((value: string) => any) | undefined;
129
134
  }>, {
130
135
  variant: "rail" | "panel";
131
- searchPlaceholder: string;
132
136
  skeletonRows: number;
133
137
  skeletonHeader: boolean;
134
138
  responsive: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-ClBUwoEz.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-BgwUNWpJ.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-llOcs_Fn.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-Bqxz8aWT.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSkeleton-CTI-vBgW.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSkeleton-BB6XIV-w.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSlider-BwNIBkAK.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSlider-Cuzmrd7p.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -35,6 +35,7 @@ type __VLS_Props = {
35
35
  * watched being drawn — not a figure mostly spent easing out.
36
36
  */
37
37
  duration?: number;
38
+ labels?: Partial<Record<"empty" | "up" | "down" | "flat" | "latest", string>>;
38
39
  };
39
40
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
40
41
  width: number;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSparkline-C6xQ2dwv.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSparkline-CB80N8SJ.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpStat-CQaW8R--.js";
1
+ import { _ as _sfc_main } from "../chunks/LpStat-dXtyrdX9.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSwitch-Blizvqyt.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSwitch-B1aLKulj.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -6,6 +6,10 @@ export interface TableColumn<Row> {
6
6
  width?: string;
7
7
  /** Allow clicking the header to sort by this column. */
8
8
  sortable?: boolean;
9
+ /** The value this column sorts by, when the cell holds something else. */
10
+ sortValue?: (row: Row) => unknown;
11
+ /** Full control over the order; wins over `sortValue`. Ascending order. */
12
+ compare?: (a: Row, b: Row) => number;
9
13
  /**
10
14
  * Offer "show only these values" in the header's menu, built from the values
11
15
  * actually present in the rows. For a column that holds a small vocabulary —
@@ -22,6 +26,18 @@ export interface TableColumn<Row> {
22
26
  * name to offer and nothing to gain from being hidden. */
23
27
  alwaysVisible?: boolean;
24
28
  }
29
+ export interface TableLabels {
30
+ [key: string]: string;
31
+ loading: string;
32
+ error: string;
33
+ empty: string;
34
+ sortAsc: string;
35
+ sortDesc: string;
36
+ sortClear: string;
37
+ filter: string;
38
+ showAll: string;
39
+ columns: string;
40
+ }
25
41
  export interface SortState {
26
42
  key: string;
27
43
  dir: "asc" | "desc";
@@ -67,7 +83,11 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
67
83
  debounce?: number;
68
84
  loadingLabel?: string;
69
85
  errorLabel?: string;
70
- /** Stable id per row — required for selection; falls back to index otherwise. */
86
+ /**
87
+ * Stable id per row. Without it a row is keyed by its position in `rows`,
88
+ * which survives sorting and filtering but not a new array; set it whenever
89
+ * rows are replaced (`load`, polling) and selection must carry over.
90
+ */
71
91
  rowKey?: keyof T | ((row: T) => string | number);
72
92
  emptyLabel?: string;
73
93
  emptyIcon?: string;
@@ -92,6 +112,8 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
92
112
  filterLabel?: string;
93
113
  showAllLabel?: string;
94
114
  columnsLabel?: string;
115
+ /** All of the wording above in one object, and the config-level scope "table". */
116
+ labels?: Partial<TableLabels>;
95
117
  } & {
96
118
  "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
97
119
  "onUpdate:sort"?: ((value: SortState | null) => any) | undefined;