@leavepulse/ui 0.83.0 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/assets/{LpDropzone-DNbh_NFJ.css → LpDropzone-CfL3Vrx4.css} +10 -10
- package/dist/assets/{LpImageEditor-Bgu20XLs.css → LpImageEditor-y3B-aW3H.css} +6 -6
- package/dist/assets/{LpKeys-C5VMcBOW.css → LpKeys-5ijsXX-M.css} +6 -6
- package/dist/assets/{LpShortcutsDialog-C6uzPeMf.css → LpShortcutsDialog-BBdVWxZq.css} +7 -7
- package/dist/assets/LpVideoTrim-CMoUw3dJ.css +8 -0
- package/dist/chunks/{ContextMenuItems-h-apPY2d.js → ContextMenuItems-D15cGEw9.js} +1 -1
- package/dist/chunks/{DropzoneLinkField-_Op8b_ee.js → DropzoneLinkField-Dz7fIaLh.js} +1 -1
- package/dist/chunks/{FieldLeading-mOMcwNqi.js → FieldLeading-DZZLK02U.js} +1 -1
- package/dist/chunks/{FieldWrapper-DtT-AIcn.js → FieldWrapper-BDDw1F9H.js} +1 -1
- package/dist/chunks/{IconCloseButton-YmisskyZ.js → IconCloseButton-Cn_w4aN3.js} +1 -1
- package/dist/chunks/{LayoutCanvas-BrISZEBr.js → LayoutCanvas-Dr5eSfAu.js} +1 -1
- package/dist/chunks/{LayoutNode-CwMQ8ACa.js → LayoutNode-CViJnx6q.js} +1 -1
- package/dist/chunks/{LpActionBar-CVVC6YbC.js → LpActionBar-C0LK-Aqs.js} +1 -1
- package/dist/chunks/{LpAddressInput-tiuJ-bru.js → LpAddressInput-B9sSvodU.js} +7 -7
- package/dist/chunks/{LpAlert-8-x4H_Nk.js → LpAlert-Bpd7122M.js} +1 -1
- package/dist/chunks/{LpAppShell-BW2YMq-A.js → LpAppShell-DW8JmY1o.js} +4 -4
- package/dist/chunks/{LpAutocomplete-BZODIops.js → LpAutocomplete-CQID7Zc-.js} +4 -4
- package/dist/chunks/{LpAvatar-BZq4nH53.js → LpAvatar-DLkiMGKx.js} +1 -1
- package/dist/chunks/{LpBadge-Cz0pSSUu.js → LpBadge-RFp8uHFt.js} +1 -1
- package/dist/chunks/{LpBottomNav-DVdR5Mry.js → LpBottomNav-BcJVkAhh.js} +1 -1
- package/dist/chunks/{LpBreadcrumbs-B2jphAel.js → LpBreadcrumbs-DJ_DB45r.js} +1 -1
- package/dist/chunks/{LpCalendar-C0_N5LVT.js → LpCalendar-D6tfCr2G.js} +1 -1
- package/dist/chunks/{LpCheckbox-CwqLNdw4.js → LpCheckbox-DcXC2qd5.js} +2 -2
- package/dist/chunks/{LpCodeBlock-Dcss6bnl.js → LpCodeBlock-Dx0J9xlm.js} +2 -2
- package/dist/chunks/{LpCodeDisplay-CLms1zDY.js → LpCodeDisplay-BlN7U8Z-.js} +4 -4
- package/dist/chunks/{LpColorPicker-CbIY450X.js → LpColorPicker-Cjna_Bio.js} +3 -3
- package/dist/chunks/{LpConfirmDialog-RmP4z6va.js → LpConfirmDialog-bfcX5F9d.js} +2 -2
- package/dist/chunks/{LpConfirmHost-DheBgRMB.js → LpConfirmHost-DIgloymi.js} +1 -1
- package/dist/chunks/{LpContextMenu-DIYhlap8.js → LpContextMenu-CUFZIQX2.js} +2 -2
- package/dist/chunks/{LpContextSwitcher-fDA6ERl-.js → LpContextSwitcher-CMweLbv2.js} +2 -2
- package/dist/chunks/{LpCopyButton-DSqKFGEb.js → LpCopyButton-BrbvIVMG.js} +1 -1
- package/dist/chunks/{LpDataList-f9UjSx9m.js → LpDataList-DhETPjzv.js} +2 -2
- package/dist/chunks/{LpDatePicker-3kDQLVbg.js → LpDatePicker-B5gzwI3T.js} +5 -5
- package/dist/chunks/{LpDateRangePicker-DUPiTt0_.js → LpDateRangePicker-CwNnpyoL.js} +3 -3
- package/dist/chunks/{LpDisclosure-C5WZjhbQ.js → LpDisclosure-CsJ7nnFz.js} +1 -1
- package/dist/chunks/{LpDrawer-CkYvIGIa.js → LpDrawer-C1q2bl1r.js} +1 -1
- package/dist/chunks/{LpDropdownMenu-zSsK2Xra.js → LpDropdownMenu-DRABI-Bl.js} +2 -2
- package/dist/chunks/{LpEditable-CP7Y_lKg.js → LpEditable-DCPdDDBb.js} +2 -2
- package/dist/chunks/{LpEmptyState-dsc5x-ya.js → LpEmptyState-DT8U4R8L.js} +1 -1
- package/dist/chunks/{LpFieldNotice-TOTbWvgv.js → LpFieldNotice-mcmO-O-J.js} +1 -1
- package/dist/chunks/{LpFileTree-BPjnOTln.js → LpFileTree-wiXExcZI.js} +4 -4
- package/dist/chunks/{LpFileTreeNode-_-MiWmie.js → LpFileTreeNode-DfvIGmSz.js} +4 -4
- package/dist/chunks/{LpFormField-BJwD1iEF.js → LpFormField-C5GOuOY-.js} +1 -1
- package/dist/chunks/{LpHintLayer-CmfGnxYu.js → LpHintLayer-B0choo1r.js} +1 -1
- package/dist/chunks/{LpHints-C2Xvc1Fd.js → LpHints-BEetUVTl.js} +3 -3
- package/dist/chunks/{LpIcon-CoOLz1oJ.js → LpIcon-DCGhNsCU.js} +1 -1
- package/dist/chunks/{LpInfraNode-CW3qsM-U.js → LpInfraNode-BsExhdPE.js} +2 -2
- package/dist/chunks/{LpInput-BVWhkPuN.js → LpInput-CKMblRtp.js} +3 -3
- package/dist/chunks/{LpInspector-REmoX_es.js → LpInspector-CqPgVXrm.js} +4 -4
- package/dist/chunks/{LpLightbox-C3FFTYP5.js → LpLightbox-D7iJqdmH.js} +4 -4
- package/dist/chunks/{LpLogInspector-Cs8Z_fM0.js → LpLogInspector-Yj310k4n.js} +2 -2
- package/dist/chunks/{LpLogViewer-DQRGe-ZK.js → LpLogViewer-Bki-IdNC.js} +6 -6
- package/dist/chunks/{LpMapPicker-CQnQPgKm.js → LpMapPicker-CnpJhiY0.js} +1 -1
- package/dist/chunks/{LpMediaGallery-DkKqTy9P.js → LpMediaGallery-D6DyJDvL.js} +4 -4
- package/dist/chunks/{LpModal-DwejR7VP.js → LpModal-B5y9_LgA.js} +1 -1
- package/dist/chunks/{LpModalNav-D1-dSe6f.js → LpModalNav-BLvDVl2-.js} +3 -3
- package/dist/chunks/{LpNotificationBell-EKLkN0sp.js → LpNotificationBell-Bf0u3t5q.js} +4 -4
- package/dist/chunks/{LpNotificationFeed-Dc-yQ4NH.js → LpNotificationFeed-BPZM3zkS.js} +4 -4
- package/dist/chunks/{LpNumberField-DvUjEMp-.js → LpNumberField-BeYT7zzt.js} +3 -3
- package/dist/chunks/{LpOtpInput-xvDO14f4.js → LpOtpInput-DqwY-U5R.js} +1 -1
- package/dist/chunks/{LpPagination-BFZY8dFn.js → LpPagination-V1wEhu1K.js} +1 -1
- package/dist/chunks/{LpPaletteTheme-EBJv0Bwz.js → LpPaletteTheme-Bi6pD1GL.js} +2 -2
- package/dist/chunks/{LpPasswordInput-DRJR3fF1.js → LpPasswordInput-LaOXNYuV.js} +2 -2
- package/dist/chunks/{LpPhoneInput-BGOOtUoW.js → LpPhoneInput-D7Tq2iaz.js} +3 -3
- package/dist/chunks/{LpPie-Deyn8h5J.js → LpPie-Bzv8mnVR.js} +2 -2
- package/dist/chunks/{LpPipeline-9ChjeNh5.js → LpPipeline-D-uPcbMN.js} +2 -2
- package/dist/chunks/{LpQuota-CNh5eF_p.js → LpQuota-BR8ck2a9.js} +1 -1
- package/dist/chunks/{LpRadioGroup-Br2Nl9Gr.js → LpRadioGroup-DSOCL9MD.js} +2 -2
- package/dist/chunks/{LpRangeCalendar-D66Y3U_w.js → LpRangeCalendar-QepHrmba.js} +1 -1
- package/dist/chunks/{LpRangeSlider-eX-fIlOw.js → LpRangeSlider-BaAM7XIs.js} +1 -1
- package/dist/chunks/{LpRepeater-0XvnlVd_.js → LpRepeater-BKq5XPh4.js} +3 -3
- package/dist/chunks/{LpSecretField-1RCooChq.js → LpSecretField-_B2qPfk8.js} +5 -5
- package/dist/chunks/{LpSection-B9gbJJcP.js → LpSection-BGzlKIWO.js} +1 -1
- package/dist/chunks/{LpSegmented-hIjGzGTo.js → LpSegmented-CiaF9DUK.js} +2 -2
- package/dist/chunks/{LpSelect-DugubwTc.js → LpSelect-CB6Xbnfk.js} +4 -4
- package/dist/chunks/{LpSidebar-DevSoN8W.js → LpSidebar-DnqbKULj.js} +4 -4
- package/dist/chunks/{LpSidebarNav-DwQQ3KXe.js → LpSidebarNav-B3Eo_VIS.js} +4 -4
- package/dist/chunks/{LpSidebarRow-CAGgtJCS.js → LpSidebarRow-CDBnvvd8.js} +3 -3
- package/dist/chunks/{LpSlider-1fHpVxpB.js → LpSlider-DTb_Ivkm.js} +1 -1
- package/dist/chunks/{LpStat-Cm9-FaWQ.js → LpStat-BtxSto7K.js} +2 -2
- package/dist/chunks/{LpStatus-CE8FSAT1.js → LpStatus-_fIwWXQV.js} +1 -1
- package/dist/chunks/{LpStepMark-BWSlV69R.js → LpStepMark-iDZw1DYf.js} +1 -1
- package/dist/chunks/{LpStepper-1D0ZA7Nx.js → LpStepper-CjC3cp1F.js} +1 -1
- package/dist/chunks/{LpSwitch-D_kvE0oQ.js → LpSwitch-BNHyYDhX.js} +1 -1
- package/dist/chunks/{LpTabFace-CpbFKi-N.js → LpTabFace-gATEe9pQ.js} +2 -2
- package/dist/chunks/{LpTableFilter-BYHyCu38.js → LpTableFilter-B_BFoBqS.js} +2 -2
- package/dist/chunks/{LpTagsInput-Cqm38t5N.js → LpTagsInput-By7LMb47.js} +5 -5
- package/dist/chunks/{LpTextarea-DaSKBkiV.js → LpTextarea-Ck6RAfzu.js} +1 -1
- package/dist/chunks/{LpThemeStudio-BNdfi-Ds.js → LpThemeStudio-C1xKiv8C.js} +5 -5
- package/dist/chunks/{LpThemeSwitcher-CbC1nqBP.js → LpThemeSwitcher-Dk4Bk6u1.js} +3 -3
- package/dist/chunks/{LpTimeField-CCfPCWPT.js → LpTimeField-BTKJVeNt.js} +2 -2
- package/dist/chunks/{LpToaster-BhlI7h-h.js → LpToaster-C_CFWSys.js} +2 -2
- package/dist/chunks/{LpTopologyCanvas-DlKbu7E5.js → LpTopologyCanvas-paC1Dup-.js} +4 -4
- package/dist/chunks/{LpTour-CSLerA1B.js → LpTour-D_AN_SsZ.js} +1 -1
- package/dist/chunks/{LpTruncate-Ct26BSYB.js → LpTruncate-CBUKnr36.js} +1 -1
- package/dist/chunks/LpVideoCompress-DD2nShyT.js +242 -0
- package/dist/chunks/{LpVideoPlayer-DcWd9DDW.js → LpVideoPlayer-koYKHKkC.js} +4 -4
- package/dist/chunks/{LpWindow-YnF_knSj.js → LpWindow-Bo5qQgVY.js} +2 -2
- package/dist/chunks/{LpWorkspaceSwitcher-B-5UU6o4.js → LpWorkspaceSwitcher-D50sHs9N.js} +3 -3
- package/dist/chunks/{MenuTitle-BnZbFSwq.js → MenuTitle-DCHcfyPH.js} +1 -1
- package/dist/chunks/{OptionContent-D5e_eklA.js → OptionContent-o58kS7Zh.js} +1 -1
- package/dist/chunks/{PickerField-KpHiowNI.js → PickerField-DNo1k89A.js} +1 -1
- package/dist/chunks/{RevealToggle-CE1hAIJB.js → RevealToggle-w7-BMcgC.js} +1 -1
- package/dist/chunks/{TourCard-t2csiTDS.js → TourCard-0yYxSdd4.js} +1 -1
- package/dist/chunks/{VideoThumb-Csf9bUz3.js → VideoThumb-DL_QkAJY.js} +1 -1
- package/dist/chunks/{VideoVolume-B4_DNmNi.js → VideoVolume-D-2TmsVj.js} +2 -2
- package/dist/chunks/{icons-CdSlCrle.js → icons-V0k93Puc.js} +3 -3
- package/dist/component-names.d.ts +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldLeading.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.js +1 -1
- package/dist/components/HintSampleTag.vue.d.ts +5 -3
- package/dist/components/IconCloseButton.vue.js +1 -1
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LpActionBar.vue.d.ts +5 -3
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpActivityLine.vue.d.ts +6 -6
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.d.ts +1 -1
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +10 -14
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.d.ts +4 -0
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBottomNav.vue.d.ts +6 -4
- package/dist/components/LpBottomNav.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.d.ts +6 -6
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.d.ts +6 -6
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpChart.vue.js +2 -2
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.d.ts +12 -2
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.d.ts +1 -1
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.d.ts +1 -1
- package/dist/components/LpCommandPalette.vue.js +2 -2
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpContextSwitcher.vue.d.ts +6 -4
- package/dist/components/LpContextSwitcher.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDock.vue.js +1 -1
- package/dist/components/LpDrawer.vue.d.ts +6 -6
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.d.ts +10 -14
- package/dist/components/LpDropzone.vue.js +4 -4
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpHintExample.vue.d.ts +2 -3
- package/dist/components/LpHintLayer.vue.d.ts +7 -8
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.d.ts +6 -5
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.d.ts +14 -3
- package/dist/components/LpImageEditor.vue.js +3 -3
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.d.ts +6 -6
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpInspector.vue.d.ts +8 -6
- package/dist/components/LpInspector.vue.js +1 -1
- package/dist/components/LpKeys.vue.js +2 -2
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLogInspector.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.d.ts +8 -0
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.d.ts +3 -7
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.d.ts +5 -3
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.d.ts +4 -0
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNotificationFeed.vue.js +1 -1
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPagination.vue.d.ts +8 -2
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +1 -1
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPaletteTheme.vue.d.ts +12 -0
- package/dist/components/LpPaletteTheme.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/LpQuota.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpRangeSlider.vue.js +1 -1
- package/dist/components/LpRepeater.vue.d.ts +9 -7
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.d.ts +11 -1
- package/dist/components/LpShortcutsDialog.vue.js +3 -3
- package/dist/components/LpSidebar.vue.d.ts +13 -11
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSidebarRow.vue.js +1 -1
- package/dist/components/LpSlider.vue.js +1 -1
- package/dist/components/LpSparkline.vue.d.ts +10 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTabFace.vue.js +1 -1
- package/dist/components/LpTable.vue.js +9 -9
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTableOfContents.vue.d.ts +5 -3
- package/dist/components/LpTabs.vue.js +2 -2
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.d.ts +8 -6
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.d.ts +7 -5
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.d.ts +13 -20
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpTruncate.vue.js +1 -1
- package/dist/components/LpTypewriter.vue.d.ts +1 -1
- package/dist/components/LpUptimeBar.vue.d.ts +4 -2
- package/dist/components/LpVideoCompress.vue.d.ts +63 -0
- package/dist/components/LpVideoCompress.vue.js +4 -0
- package/dist/components/LpVideoPlayer.vue.d.ts +33 -3
- package/dist/components/LpVideoPlayer.vue.js +1 -1
- package/dist/components/LpVideoTrim.vue.d.ts +40 -3
- package/dist/components/LpVideoTrim.vue.js +6 -6
- package/dist/components/LpWindow.vue.d.ts +7 -8
- package/dist/components/LpWindow.vue.js +1 -1
- package/dist/components/LpWorkspaceSwitcher.vue.d.ts +13 -11
- package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/OptionContent.vue.js +1 -1
- package/dist/components/PickerField.vue.js +1 -1
- package/dist/components/RevealToggle.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/VideoFlash.vue.js +1 -1
- package/dist/components/VideoThumb.vue.js +1 -1
- package/dist/components/VideoVolume.vue.js +1 -1
- package/dist/components/menuWhen.js +1 -1
- package/dist/components/status.d.ts +3 -1
- package/dist/composables/usePaletteCommands.d.ts +4 -0
- package/dist/composables/videoTranscode.d.ts +55 -0
- package/dist/composables/videoTranscode.js +134 -0
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +44 -10
- package/dist/index.js +748 -170
- package/dist/locales/uk.d.ts +165 -0
- package/package.json +6 -2
- package/src/component-names.ts +1 -0
- package/src/components/HintSampleTag.vue +7 -2
- package/src/components/LpActionBar.vue +7 -2
- package/src/components/LpActivityLine.vue +7 -2
- package/src/components/LpAppShell.vue +11 -2
- package/src/components/LpBadge.vue +6 -1
- package/src/components/LpBottomNav.vue +8 -2
- package/src/components/LpBreadcrumbs.vue +7 -2
- package/src/components/LpButton.vue +7 -2
- package/src/components/LpCodeBlock.vue +13 -2
- package/src/components/LpContextSwitcher.vue +8 -2
- package/src/components/LpDrawer.vue +7 -2
- package/src/components/LpDropzone.vue +11 -2
- package/src/components/LpHintExample.vue +2 -2
- package/src/components/LpHintLayer.vue +9 -3
- package/src/components/LpHints.vue +17 -3
- package/src/components/LpImageEditor.vue +14 -7
- package/src/components/LpInput.vue +7 -2
- package/src/components/LpInspector.vue +10 -2
- package/src/components/LpKeys.vue +2 -1
- package/src/components/LpMapPicker.vue +10 -1
- package/src/components/LpMediaGallery.vue +12 -3
- package/src/components/LpModal.vue +7 -2
- package/src/components/LpModalNav.vue +6 -1
- package/src/components/LpPagination.vue +9 -2
- package/src/components/LpPaletteTheme.vue +14 -1
- package/src/components/LpRepeater.vue +11 -2
- package/src/components/LpShortcutsDialog.vue +12 -1
- package/src/components/LpSidebar.vue +15 -12
- package/src/components/LpSparkline.vue +12 -2
- package/src/components/LpTableOfContents.vue +7 -2
- package/src/components/LpThemeSwitcher.vue +10 -2
- package/src/components/LpToaster.vue +9 -2
- package/src/components/LpTour.vue +15 -3
- package/src/components/LpUptimeBar.vue +5 -2
- package/src/components/LpVideoCompress.vue +237 -0
- package/src/components/LpVideoPlayer.vue +33 -7
- package/src/components/LpVideoTrim.vue +40 -9
- package/src/components/LpWindow.vue +8 -2
- package/src/components/LpWorkspaceSwitcher.vue +15 -12
- package/src/components/status.ts +4 -1
- package/src/composables/usePaletteCommands.ts +6 -1
- package/src/composables/videoTranscode.ts +192 -0
- package/src/index.ts +51 -10
- package/src/locales/uk.ts +746 -0
- package/src/nuxt.ts +5 -1
- package/src/theme/palette.ts +2 -1
- package/dist/assets/LpVideoTrim-BcGs3Sh0.css +0 -8
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { AddressLabels } from "../components/address";
|
|
2
|
+
import type { CalendarLabels } from "../components/calendar";
|
|
3
|
+
import type { PaletteLabels } from "../components/LpCommandPalette.vue";
|
|
4
|
+
import type { NOTIFICATION_LABELS } from "../components/notifications";
|
|
5
|
+
import type { StatusLabels } from "../components/status";
|
|
6
|
+
import type { TimeUnitLabels } from "../components/timeSpan";
|
|
7
|
+
import type { CloseGuardLabels } from "../composables/useCloseGuard";
|
|
8
|
+
import type { PaletteControlLabels } from "../composables/usePaletteCommands";
|
|
9
|
+
import type { HintExampleLabels } from "../components/HintSampleTag.vue";
|
|
10
|
+
import type { ActionBarLabels } from "../components/LpActionBar.vue";
|
|
11
|
+
import type { ActivityLineLabels } from "../components/LpActivityLine.vue";
|
|
12
|
+
import type { AppShellLabels } from "../components/LpAppShell.vue";
|
|
13
|
+
import type { AutocompleteLabels } from "../components/LpAutocomplete.vue";
|
|
14
|
+
import type { BadgeLabels } from "../components/LpBadge.vue";
|
|
15
|
+
import type { BottomNavLabels } from "../components/LpBottomNav.vue";
|
|
16
|
+
import type { BreadcrumbsLabels } from "../components/LpBreadcrumbs.vue";
|
|
17
|
+
import type { ButtonLabels } from "../components/LpButton.vue";
|
|
18
|
+
import type { ChartText } from "../components/LpChart.vue";
|
|
19
|
+
import type { CodeBlockLabels } from "../components/LpCodeBlock.vue";
|
|
20
|
+
import type { CodeDisplayLabels } from "../components/LpCodeDisplay.vue";
|
|
21
|
+
import type { ColorPickerLabels } from "../components/LpColorPicker.vue";
|
|
22
|
+
import type { ConfirmLabels } from "../components/LpConfirmDialog.vue";
|
|
23
|
+
import type { ContextSwitcherLabels } from "../components/LpContextSwitcher.vue";
|
|
24
|
+
import type { CopyButtonLabels } from "../components/LpCopyButton.vue";
|
|
25
|
+
import type { CountdownLabels } from "../components/LpCountdown.vue";
|
|
26
|
+
import type { DataListLabels } from "../components/LpDataList.vue";
|
|
27
|
+
import type { DatePickerLabels } from "../components/LpDatePicker.vue";
|
|
28
|
+
import type { DateRangePickerLabels } from "../components/LpDateRangePicker.vue";
|
|
29
|
+
import type { DrawerLabels } from "../components/LpDrawer.vue";
|
|
30
|
+
import type { DropzoneLabels } from "../components/LpDropzone.vue";
|
|
31
|
+
import type { EditableLabels } from "../components/LpEditable.vue";
|
|
32
|
+
import type { FileTreeLabels } from "../components/LpFileTree.vue";
|
|
33
|
+
import type { GaugeLabels } from "../components/LpGauge.vue";
|
|
34
|
+
import type { HintLayerLabels } from "../components/LpHintLayer.vue";
|
|
35
|
+
import type { HintsLabels } from "../components/LpHints.vue";
|
|
36
|
+
import type { ImageEditorLabels } from "../components/LpImageEditor.vue";
|
|
37
|
+
import type { InputLabels } from "../components/LpInput.vue";
|
|
38
|
+
import type { InspectorLabels } from "../components/LpInspector.vue";
|
|
39
|
+
import type { LightboxLabels } from "../components/LpLightbox.vue";
|
|
40
|
+
import type { LoaderLabels } from "../components/LpLoader.vue";
|
|
41
|
+
import type { LogInspectorLabels } from "../components/LpLogInspector.vue";
|
|
42
|
+
import type { LogViewerLabels } from "../components/LpLogViewer.vue";
|
|
43
|
+
import type { MapPickerLabels } from "../components/LpMapPicker.vue";
|
|
44
|
+
import type { MediaGalleryLabels } from "../components/LpMediaGallery.vue";
|
|
45
|
+
import type { ModalLabels } from "../components/LpModal.vue";
|
|
46
|
+
import type { ModalNavLabels } from "../components/LpModalNav.vue";
|
|
47
|
+
import type { NumberFieldLabels } from "../components/LpNumberField.vue";
|
|
48
|
+
import type { PaginationLabels } from "../components/LpPagination.vue";
|
|
49
|
+
import type { PaletteThemeLabels } from "../components/LpPaletteTheme.vue";
|
|
50
|
+
import type { PasswordInputLabels } from "../components/LpPasswordInput.vue";
|
|
51
|
+
import type { PhoneInputLabels } from "../components/LpPhoneInput.vue";
|
|
52
|
+
import type { PieText } from "../components/LpPie.vue";
|
|
53
|
+
import type { PipelineLabels } from "../components/LpPipeline.vue";
|
|
54
|
+
import type { QuotaLabels } from "../components/LpQuota.vue";
|
|
55
|
+
import type { RangeCalendarLabels } from "../components/LpRangeCalendar.vue";
|
|
56
|
+
import type { RepeaterLabels } from "../components/LpRepeater.vue";
|
|
57
|
+
import type { SecretFieldLabels } from "../components/LpSecretField.vue";
|
|
58
|
+
import type { SelectLabels } from "../components/LpSelect.vue";
|
|
59
|
+
import type { ShortcutsLabels } from "../components/LpShortcutsDialog.vue";
|
|
60
|
+
import type { SidebarLabels } from "../components/LpSidebar.vue";
|
|
61
|
+
import type { SparklineLabels } from "../components/LpSparkline.vue";
|
|
62
|
+
import type { TableLabels } from "../components/LpTable.vue";
|
|
63
|
+
import type { TableOfContentsLabels } from "../components/LpTableOfContents.vue";
|
|
64
|
+
import type { TagsInputLabels } from "../components/LpTagsInput.vue";
|
|
65
|
+
import type { ThemeStudioLabels } from "../components/LpThemeStudio.vue";
|
|
66
|
+
import type { ThemeSwitcherLabels } from "../components/LpThemeSwitcher.vue";
|
|
67
|
+
import type { ToasterLabels } from "../components/LpToaster.vue";
|
|
68
|
+
import type { TopologyLabels } from "../components/LpTopologyCanvas.vue";
|
|
69
|
+
import type { TourLabels } from "../components/LpTour.vue";
|
|
70
|
+
import type { UptimeBarLabels } from "../components/LpUptimeBar.vue";
|
|
71
|
+
import type { VideoCompressLabels } from "../components/LpVideoCompress.vue";
|
|
72
|
+
import type { VideoPlayerLabels } from "../components/LpVideoPlayer.vue";
|
|
73
|
+
import type { VideoTrimLabels } from "../components/LpVideoTrim.vue";
|
|
74
|
+
import type { WindowLabels } from "../components/LpWindow.vue";
|
|
75
|
+
import type { WorkspaceSwitcherLabels } from "../components/LpWorkspaceSwitcher.vue";
|
|
76
|
+
/**
|
|
77
|
+
* Every declared key of a labels type, required, and nothing else: an index
|
|
78
|
+
* signature (`[key: string]: string`) is dropped so a misspelt key is an
|
|
79
|
+
* excess-property error instead of being silently accepted.
|
|
80
|
+
*/
|
|
81
|
+
export type FullLabels<T> = {
|
|
82
|
+
[K in keyof T as string extends K ? never : K]-?: string;
|
|
83
|
+
};
|
|
84
|
+
/** One full label set per scope: the shape of a complete language pack. */
|
|
85
|
+
export interface KitLabels {
|
|
86
|
+
actionBar: FullLabels<ActionBarLabels>;
|
|
87
|
+
activityLine: FullLabels<ActivityLineLabels>;
|
|
88
|
+
addressInput: FullLabels<AddressLabels>;
|
|
89
|
+
appShell: FullLabels<AppShellLabels>;
|
|
90
|
+
autocomplete: FullLabels<AutocompleteLabels>;
|
|
91
|
+
badge: FullLabels<BadgeLabels>;
|
|
92
|
+
bottomNav: FullLabels<BottomNavLabels>;
|
|
93
|
+
breadcrumbs: FullLabels<BreadcrumbsLabels>;
|
|
94
|
+
button: FullLabels<ButtonLabels>;
|
|
95
|
+
calendar: FullLabels<CalendarLabels>;
|
|
96
|
+
chart: FullLabels<ChartText>;
|
|
97
|
+
closeGuard: FullLabels<CloseGuardLabels>;
|
|
98
|
+
codeBlock: FullLabels<CodeBlockLabels>;
|
|
99
|
+
codeDisplay: FullLabels<CodeDisplayLabels>;
|
|
100
|
+
colorPicker: FullLabels<ColorPickerLabels>;
|
|
101
|
+
confirm: FullLabels<ConfirmLabels>;
|
|
102
|
+
contextSwitcher: FullLabels<ContextSwitcherLabels>;
|
|
103
|
+
copyButton: FullLabels<CopyButtonLabels>;
|
|
104
|
+
countdown: FullLabels<CountdownLabels>;
|
|
105
|
+
dataList: FullLabels<DataListLabels>;
|
|
106
|
+
datePicker: FullLabels<DatePickerLabels>;
|
|
107
|
+
dateRangePicker: FullLabels<DateRangePickerLabels>;
|
|
108
|
+
drawer: FullLabels<DrawerLabels>;
|
|
109
|
+
dropzone: FullLabels<DropzoneLabels>;
|
|
110
|
+
editable: FullLabels<EditableLabels & {
|
|
111
|
+
required: string;
|
|
112
|
+
}>;
|
|
113
|
+
fileTree: FullLabels<FileTreeLabels>;
|
|
114
|
+
gauge: FullLabels<GaugeLabels>;
|
|
115
|
+
hintExample: FullLabels<HintExampleLabels>;
|
|
116
|
+
hintLayer: FullLabels<HintLayerLabels>;
|
|
117
|
+
hints: FullLabels<HintsLabels>;
|
|
118
|
+
imageEditor: FullLabels<ImageEditorLabels>;
|
|
119
|
+
input: FullLabels<InputLabels>;
|
|
120
|
+
inspector: FullLabels<InspectorLabels>;
|
|
121
|
+
lightbox: FullLabels<LightboxLabels>;
|
|
122
|
+
loader: FullLabels<LoaderLabels>;
|
|
123
|
+
logInspector: FullLabels<LogInspectorLabels>;
|
|
124
|
+
logViewer: FullLabels<LogViewerLabels>;
|
|
125
|
+
mapPicker: FullLabels<MapPickerLabels>;
|
|
126
|
+
mediaGallery: FullLabels<MediaGalleryLabels>;
|
|
127
|
+
modal: FullLabels<ModalLabels>;
|
|
128
|
+
modalNav: FullLabels<ModalNavLabels>;
|
|
129
|
+
/** The deprecated keys of `NotificationLabels` are no longer read, so not required. */
|
|
130
|
+
notifications: FullLabels<typeof NOTIFICATION_LABELS>;
|
|
131
|
+
numberField: FullLabels<NumberFieldLabels>;
|
|
132
|
+
pagination: FullLabels<PaginationLabels>;
|
|
133
|
+
palette: FullLabels<PaletteLabels>;
|
|
134
|
+
paletteControl: FullLabels<PaletteControlLabels>;
|
|
135
|
+
paletteTheme: FullLabels<PaletteThemeLabels>;
|
|
136
|
+
passwordInput: FullLabels<PasswordInputLabels>;
|
|
137
|
+
phoneInput: FullLabels<PhoneInputLabels>;
|
|
138
|
+
pie: FullLabels<PieText>;
|
|
139
|
+
pipeline: FullLabels<PipelineLabels>;
|
|
140
|
+
quota: FullLabels<QuotaLabels>;
|
|
141
|
+
rangeCalendar: FullLabels<RangeCalendarLabels>;
|
|
142
|
+
repeater: FullLabels<RepeaterLabels>;
|
|
143
|
+
secretField: FullLabels<SecretFieldLabels>;
|
|
144
|
+
select: FullLabels<SelectLabels>;
|
|
145
|
+
shortcuts: FullLabels<ShortcutsLabels>;
|
|
146
|
+
sidebar: FullLabels<SidebarLabels>;
|
|
147
|
+
sparkline: FullLabels<SparklineLabels>;
|
|
148
|
+
status: FullLabels<StatusLabels>;
|
|
149
|
+
table: FullLabels<TableLabels>;
|
|
150
|
+
tagsInput: FullLabels<TagsInputLabels>;
|
|
151
|
+
themeStudio: FullLabels<ThemeStudioLabels>;
|
|
152
|
+
themeSwitcher: FullLabels<ThemeSwitcherLabels>;
|
|
153
|
+
time: FullLabels<TimeUnitLabels>;
|
|
154
|
+
toast: FullLabels<ToasterLabels>;
|
|
155
|
+
toc: FullLabels<TableOfContentsLabels>;
|
|
156
|
+
topology: FullLabels<TopologyLabels>;
|
|
157
|
+
tour: FullLabels<TourLabels>;
|
|
158
|
+
uptimeBar: FullLabels<UptimeBarLabels>;
|
|
159
|
+
videoCompress: FullLabels<VideoCompressLabels>;
|
|
160
|
+
videoPlayer: FullLabels<VideoPlayerLabels>;
|
|
161
|
+
videoTrim: FullLabels<VideoTrimLabels>;
|
|
162
|
+
window: FullLabels<WindowLabels>;
|
|
163
|
+
workspaces: FullLabels<WorkspaceSwitcherLabels>;
|
|
164
|
+
}
|
|
165
|
+
export declare const uk: KitLabels;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leavepulse/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "LeavePulse token-driven Vue component kit.",
|
|
6
6
|
"repository": {
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"types": "./dist/*.d.ts",
|
|
38
38
|
"default": "./dist/*.js"
|
|
39
39
|
},
|
|
40
|
-
"./dist/*":
|
|
40
|
+
"./dist/*": {
|
|
41
|
+
"types": "./dist/*.d.ts",
|
|
42
|
+
"default": "./dist/*"
|
|
43
|
+
}
|
|
41
44
|
},
|
|
42
45
|
"publishConfig": {
|
|
43
46
|
"registry": "https://registry.npmjs.org",
|
|
@@ -117,6 +120,7 @@
|
|
|
117
120
|
"@vue-flow/core": "^1.48.2",
|
|
118
121
|
"@vue-flow/minimap": "^1.5.4",
|
|
119
122
|
"libphonenumber-js": "^1.12.0",
|
|
123
|
+
"mediabunny": "^1.65.2",
|
|
120
124
|
"tailwind-merge": "^3.6.0",
|
|
121
125
|
"vaul-vue": "^0.4.1"
|
|
122
126
|
}
|
package/src/component-names.ts
CHANGED
|
@@ -6,9 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { useLabels } from "../composables/useLpConfig"
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
/** Wording of the example tag. */
|
|
10
|
+
export type HintExampleLabels = {
|
|
11
|
+
badge: string
|
|
12
|
+
}
|
|
10
13
|
|
|
11
|
-
const
|
|
14
|
+
const props = defineProps<{ labels?: Partial<HintExampleLabels> }>()
|
|
15
|
+
|
|
16
|
+
const labels = useLabels<HintExampleLabels>("hintExample", { badge: "Example" }, () => props.labels)
|
|
12
17
|
</script>
|
|
13
18
|
|
|
14
19
|
<template>
|
|
@@ -50,6 +50,11 @@ export interface ActionBarAction {
|
|
|
50
50
|
hotkey?: string
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/** Wording of the action bar's own controls. */
|
|
54
|
+
export type ActionBarLabels = {
|
|
55
|
+
dismiss: string
|
|
56
|
+
}
|
|
57
|
+
|
|
53
58
|
const props = withDefaults(
|
|
54
59
|
defineProps<{
|
|
55
60
|
/** Shown or not (v-model:open, or a plain :open). */
|
|
@@ -97,7 +102,7 @@ const props = withDefaults(
|
|
|
97
102
|
maxWidth?: string
|
|
98
103
|
/** Accessible name for the landmark. Falls back to `title`. */
|
|
99
104
|
ariaLabel?: string
|
|
100
|
-
labels?: Partial<
|
|
105
|
+
labels?: Partial<ActionBarLabels>
|
|
101
106
|
}>(),
|
|
102
107
|
{
|
|
103
108
|
open: true,
|
|
@@ -113,7 +118,7 @@ const emit = defineEmits<{
|
|
|
113
118
|
}>()
|
|
114
119
|
|
|
115
120
|
const slots = useSlots()
|
|
116
|
-
const text = useLabels("actionBar", { dismiss: "Dismiss" }, () => props.labels)
|
|
121
|
+
const text = useLabels<ActionBarLabels>("actionBar", { dismiss: "Dismiss" }, () => props.labels)
|
|
117
122
|
|
|
118
123
|
// The last action is the primary one unless the caller has said otherwise; the
|
|
119
124
|
// rest default to `ghost` so a bar with three buttons still has one obvious
|
|
@@ -25,6 +25,11 @@ import { useLabels } from "../composables/useLpConfig"
|
|
|
25
25
|
import { useMergedAttrs } from "../composables/useMergedClass"
|
|
26
26
|
import { meterFraction, TONE_COLOR, type MeterTone } from "./meter"
|
|
27
27
|
|
|
28
|
+
/** Wording of the activity line. */
|
|
29
|
+
export type ActivityLineLabels = {
|
|
30
|
+
busy: string
|
|
31
|
+
}
|
|
32
|
+
|
|
28
33
|
const props = withDefaults(
|
|
29
34
|
defineProps<{
|
|
30
35
|
/** Work is in flight. Going false finishes the line and fades it out. */
|
|
@@ -46,12 +51,12 @@ const props = withDefaults(
|
|
|
46
51
|
* line at all: a flash of activity for a 90 ms request is noise.
|
|
47
52
|
*/
|
|
48
53
|
delay?: number
|
|
49
|
-
labels?: Partial<
|
|
54
|
+
labels?: Partial<ActivityLineLabels>
|
|
50
55
|
}>(),
|
|
51
56
|
{ active: true, value: null, max: 100, tone: "brand", placement: "top", height: 2, delay: 150 },
|
|
52
57
|
)
|
|
53
58
|
|
|
54
|
-
const text = useLabels("activityLine", { busy: "Loading" }, () => props.labels)
|
|
59
|
+
const text = useLabels<ActivityLineLabels>("activityLine", { busy: "Loading" }, () => props.labels)
|
|
55
60
|
|
|
56
61
|
/*
|
|
57
62
|
* Whether it is up at all is the same question LpLoader answers, so it is
|
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
// appended to it, so opt out of the automatic pass-through that would add it
|
|
4
4
|
// a second time, unmerged.
|
|
5
5
|
export default { inheritAttrs: false }
|
|
6
|
+
|
|
7
|
+
/** Wording of the shell's own controls and landmarks. */
|
|
8
|
+
export type AppShellLabels = {
|
|
9
|
+
openMenu: string
|
|
10
|
+
skipToContent: string
|
|
11
|
+
backToTop: string
|
|
12
|
+
aside: string
|
|
13
|
+
contextNav: string
|
|
14
|
+
}
|
|
6
15
|
</script>
|
|
7
16
|
|
|
8
17
|
<script setup lang="ts">
|
|
@@ -151,7 +160,7 @@ const props = withDefaults(
|
|
|
151
160
|
/** Loading skeleton for the nav. */
|
|
152
161
|
loading?: boolean
|
|
153
162
|
/** Text overrides: the burger's name and the skip link. */
|
|
154
|
-
labels?: Partial<
|
|
163
|
+
labels?: Partial<AppShellLabels>
|
|
155
164
|
/** Icon-only rail (v-model:compact). Forwarded to LpSidebar. */
|
|
156
165
|
compact?: boolean
|
|
157
166
|
/** The person sizes the rail and folds it to icons. Forwarded to LpSidebar. */
|
|
@@ -292,7 +301,7 @@ const pageTitle = computed(() => {
|
|
|
292
301
|
// Its own state when the app does not bind it: the shell's burger must open
|
|
293
302
|
// the drawer either way. v-model:open still controls it from outside.
|
|
294
303
|
const drawerOpen = defineModel<boolean>("open", { default: false })
|
|
295
|
-
const text = useLabels(
|
|
304
|
+
const text = useLabels<AppShellLabels>(
|
|
296
305
|
"appShell",
|
|
297
306
|
{ openMenu: "Open menu", skipToContent: "Skip to content", backToTop: "Back to top", aside: "Details", contextNav: "In this section" },
|
|
298
307
|
() => props.labels,
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
// The root class is merged with the consumer's (useMergedClass), so the raw
|
|
3
3
|
// `class` must not also land on the span unmerged.
|
|
4
4
|
export default { inheritAttrs: false }
|
|
5
|
+
|
|
6
|
+
/** Wording of the badge's remove button. */
|
|
7
|
+
export type BadgeLabels = {
|
|
8
|
+
remove: string
|
|
9
|
+
}
|
|
5
10
|
</script>
|
|
6
11
|
|
|
7
12
|
<script setup lang="ts">
|
|
@@ -94,7 +99,7 @@ defineSlots<{
|
|
|
94
99
|
remove?: () => unknown
|
|
95
100
|
}>()
|
|
96
101
|
|
|
97
|
-
const text = useLabels("badge", { remove: "Remove" })
|
|
102
|
+
const text = useLabels<BadgeLabels>("badge", { remove: "Remove" })
|
|
98
103
|
|
|
99
104
|
const classes = useMergedClass(() => badge({ tone: props.tone, size: props.size, removable: props.removable }))
|
|
100
105
|
|
|
@@ -19,6 +19,12 @@ import LpTabFace from "./LpTabFace.vue"
|
|
|
19
19
|
import type { SidebarItem } from "./sidebar"
|
|
20
20
|
import { BOTTOM_BAR, BOTTOM_ITEM, BOTTOM_MARKER } from "./tabs"
|
|
21
21
|
|
|
22
|
+
/** Wording of the bottom navigation. */
|
|
23
|
+
export type BottomNavLabels = {
|
|
24
|
+
nav: string
|
|
25
|
+
more: string
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
const props = withDefaults(
|
|
23
29
|
defineProps<{
|
|
24
30
|
items: SidebarItem[]
|
|
@@ -34,7 +40,7 @@ const props = withDefaults(
|
|
|
34
40
|
/** The id of what "More" opens, while it is in the page. */
|
|
35
41
|
moreControls?: string
|
|
36
42
|
label?: string
|
|
37
|
-
labels?: Partial<
|
|
43
|
+
labels?: Partial<BottomNavLabels>
|
|
38
44
|
}>(),
|
|
39
45
|
{ more: false, moreActive: false, moreExpanded: false },
|
|
40
46
|
)
|
|
@@ -44,7 +50,7 @@ const emit = defineEmits<{
|
|
|
44
50
|
(e: "more"): void
|
|
45
51
|
}>()
|
|
46
52
|
|
|
47
|
-
const text = useLabels("bottomNav", { nav: "Main", more: "More" }, () => props.labels)
|
|
53
|
+
const text = useLabels<BottomNavLabels>("bottomNav", { nav: "Main", more: "More" }, () => props.labels)
|
|
48
54
|
const linkComponent = useLinkComponent()
|
|
49
55
|
const pillTransition = usePillTransition()
|
|
50
56
|
const markerId = `lp-bottom-nav-${useId()}`
|
|
@@ -24,6 +24,11 @@ export interface Crumb {
|
|
|
24
24
|
icon?: string
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/** Wording of the breadcrumb landmark. */
|
|
28
|
+
export type BreadcrumbsLabels = {
|
|
29
|
+
nav: string
|
|
30
|
+
}
|
|
31
|
+
|
|
27
32
|
const props = defineProps<{
|
|
28
33
|
items: Crumb[]
|
|
29
34
|
/**
|
|
@@ -31,11 +36,11 @@ const props = defineProps<{
|
|
|
31
36
|
* link component from provideLpConfig and other hrefs a plain <a>.
|
|
32
37
|
*/
|
|
33
38
|
as?: string | Component
|
|
34
|
-
labels?: Partial<
|
|
39
|
+
labels?: Partial<BreadcrumbsLabels>
|
|
35
40
|
}>()
|
|
36
41
|
defineEmits<{ (e: "navigate", item: Crumb, index: number): void }>()
|
|
37
42
|
|
|
38
|
-
const text = useLabels("breadcrumbs", { nav: "Breadcrumb" }, () => props.labels)
|
|
43
|
+
const text = useLabels<BreadcrumbsLabels>("breadcrumbs", { nav: "Breadcrumb" }, () => props.labels)
|
|
39
44
|
const linkComponent = useLinkComponent()
|
|
40
45
|
|
|
41
46
|
function linkOf(item: Crumb) {
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
// The consumer's `class` is merged into the root's own rather than appended,
|
|
3
3
|
// so `class="h-12"` or `class="px-6"` beats the size's defaults.
|
|
4
4
|
export default { inheritAttrs: false }
|
|
5
|
+
|
|
6
|
+
/** Wording of the button's menu group. */
|
|
7
|
+
export type ButtonLabels = {
|
|
8
|
+
group: string
|
|
9
|
+
}
|
|
5
10
|
</script>
|
|
6
11
|
|
|
7
12
|
<script setup lang="ts">
|
|
@@ -133,7 +138,7 @@ const props = withDefaults(
|
|
|
133
138
|
hotkey?: string
|
|
134
139
|
/** The key reference's section for `hotkey`. */
|
|
135
140
|
hotkeyGroup?: string
|
|
136
|
-
labels?: Partial<
|
|
141
|
+
labels?: Partial<ButtonLabels>
|
|
137
142
|
}>(),
|
|
138
143
|
{ palette: undefined, type: "button" },
|
|
139
144
|
)
|
|
@@ -145,7 +150,7 @@ const emit = defineEmits<{
|
|
|
145
150
|
(e: "error", error: unknown): void
|
|
146
151
|
}>()
|
|
147
152
|
|
|
148
|
-
const labels = useLabels("button", { group: "Actions" }, () => props.labels)
|
|
153
|
+
const labels = useLabels<ButtonLabels>("button", { group: "Actions" }, () => props.labels)
|
|
149
154
|
const toast = useToast()
|
|
150
155
|
const attrs = useAttrs()
|
|
151
156
|
const instance = getCurrentInstance()
|
|
@@ -29,6 +29,17 @@ import LpCopyButton from "./LpCopyButton.vue"
|
|
|
29
29
|
import LpIcon from "./LpIcon.vue"
|
|
30
30
|
import { useMergedAttrs } from "../composables/useMergedClass"
|
|
31
31
|
|
|
32
|
+
/** Wording of the code block. `{n}` in `lines` is the line count. */
|
|
33
|
+
export type CodeBlockLabels = {
|
|
34
|
+
unlock: string
|
|
35
|
+
lock: string
|
|
36
|
+
copy: string
|
|
37
|
+
copied: string
|
|
38
|
+
imports: string
|
|
39
|
+
details: string
|
|
40
|
+
lines: string
|
|
41
|
+
}
|
|
42
|
+
|
|
32
43
|
const props = withDefaults(
|
|
33
44
|
defineProps<{
|
|
34
45
|
/** The code (v-model when editable). */
|
|
@@ -50,7 +61,7 @@ const props = withDefaults(
|
|
|
50
61
|
height?: string
|
|
51
62
|
/** Auto-collapse a leading import/package block (no markers needed). */
|
|
52
63
|
foldImports?: boolean
|
|
53
|
-
labels?: Partial<
|
|
64
|
+
labels?: Partial<CodeBlockLabels>
|
|
54
65
|
}>(),
|
|
55
66
|
{
|
|
56
67
|
lang: "plain",
|
|
@@ -68,7 +79,7 @@ const emit = defineEmits<{
|
|
|
68
79
|
(e: "update:locked", value: boolean): void
|
|
69
80
|
}>()
|
|
70
81
|
|
|
71
|
-
const text = useLabels(
|
|
82
|
+
const text = useLabels<CodeBlockLabels>(
|
|
72
83
|
"codeBlock",
|
|
73
84
|
{
|
|
74
85
|
unlock: "Unlock to edit",
|
|
@@ -17,6 +17,12 @@ import LpIcon from "./LpIcon.vue"
|
|
|
17
17
|
import type { ContextMenuItemDef } from "./LpContextMenu.vue"
|
|
18
18
|
import type { AppContext } from "./sidebar"
|
|
19
19
|
|
|
20
|
+
/** Wording of the context switcher. `{label}` is the current context. */
|
|
21
|
+
export type ContextSwitcherLabels = {
|
|
22
|
+
switch: string
|
|
23
|
+
title: string
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
const props = withDefaults(
|
|
21
27
|
defineProps<{
|
|
22
28
|
contexts: AppContext[]
|
|
@@ -24,14 +30,14 @@ const props = withDefaults(
|
|
|
24
30
|
modelValue?: string
|
|
25
31
|
/** The icon rail: the trigger is a square with the icon or an initial. */
|
|
26
32
|
compact?: boolean
|
|
27
|
-
labels?: Partial<
|
|
33
|
+
labels?: Partial<ContextSwitcherLabels>
|
|
28
34
|
}>(),
|
|
29
35
|
{ compact: false },
|
|
30
36
|
)
|
|
31
37
|
|
|
32
38
|
const emit = defineEmits<{ (e: "update:modelValue", id: string): void }>()
|
|
33
39
|
|
|
34
|
-
const text = useLabels("contextSwitcher", { switch: "{label}, switch", title: "Switch to" }, () => props.labels)
|
|
40
|
+
const text = useLabels<ContextSwitcherLabels>("contextSwitcher", { switch: "{label}, switch", title: "Switch to" }, () => props.labels)
|
|
35
41
|
|
|
36
42
|
const current = computed(() => props.contexts.find((c) => c.id === props.modelValue) ?? props.contexts[0])
|
|
37
43
|
const initial = computed(() => [...(current.value?.label ?? "")][0] ?? "")
|
|
@@ -7,6 +7,11 @@ import { ref as sharedRef, type Ref } from "vue"
|
|
|
7
7
|
const EDGE_KEY = Symbol.for("@leavepulse/ui:drawer-edge-owner")
|
|
8
8
|
type GlobalWithEdge = typeof globalThis & { [EDGE_KEY]?: Ref<symbol | null> }
|
|
9
9
|
const edgeOwner = ((globalThis as GlobalWithEdge)[EDGE_KEY] ??= sharedRef<symbol | null>(null))
|
|
10
|
+
|
|
11
|
+
/** Wording of the drawer's close button. */
|
|
12
|
+
export type DrawerLabels = {
|
|
13
|
+
close: string
|
|
14
|
+
}
|
|
10
15
|
</script>
|
|
11
16
|
|
|
12
17
|
<script setup lang="ts">
|
|
@@ -142,7 +147,7 @@ const props = withDefaults(
|
|
|
142
147
|
* overlay the app already drives from its route.
|
|
143
148
|
*/
|
|
144
149
|
history?: OverlayHistoryMode
|
|
145
|
-
labels?: Partial<
|
|
150
|
+
labels?: Partial<DrawerLabels>
|
|
146
151
|
}>(),
|
|
147
152
|
{
|
|
148
153
|
history: undefined,
|
|
@@ -159,7 +164,7 @@ const props = withDefaults(
|
|
|
159
164
|
)
|
|
160
165
|
|
|
161
166
|
const frosted = useGlass(() => props.glass)
|
|
162
|
-
const text = useLabels("drawer", { close: "Close" }, () => props.labels)
|
|
167
|
+
const text = useLabels<DrawerLabels>("drawer", { close: "Close" }, () => props.labels)
|
|
163
168
|
|
|
164
169
|
const emit = defineEmits<{
|
|
165
170
|
(e: "update:open", value: boolean): void
|
|
@@ -48,6 +48,15 @@ import { inTextField } from "../composables/textEntry"
|
|
|
48
48
|
import { useOutsideGuard, usePortalTarget, useView, viewWindow } from "../composables/useView"
|
|
49
49
|
|
|
50
50
|
|
|
51
|
+
/** Wording of the dropzone's link entry. */
|
|
52
|
+
export type DropzoneLabels = {
|
|
53
|
+
orLink: string
|
|
54
|
+
placeholder: string
|
|
55
|
+
done: string
|
|
56
|
+
keys: string
|
|
57
|
+
invalid: string
|
|
58
|
+
}
|
|
59
|
+
|
|
51
60
|
const props = withDefaults(
|
|
52
61
|
defineProps<{
|
|
53
62
|
/** Same syntax as the input's: "image/*", ".yaml,.yml". */
|
|
@@ -89,7 +98,7 @@ const props = withDefaults(
|
|
|
89
98
|
* "or a link". Arrives as the `link` event.
|
|
90
99
|
*/
|
|
91
100
|
links?: boolean
|
|
92
|
-
labels?: Partial<
|
|
101
|
+
labels?: Partial<DropzoneLabels>
|
|
93
102
|
}>(),
|
|
94
103
|
{
|
|
95
104
|
accept: "",
|
|
@@ -120,7 +129,7 @@ const emit = defineEmits<{
|
|
|
120
129
|
(e: "link", url: string): void
|
|
121
130
|
}>()
|
|
122
131
|
|
|
123
|
-
const labels = useLabels(
|
|
132
|
+
const labels = useLabels<DropzoneLabels>(
|
|
124
133
|
"dropzone",
|
|
125
134
|
{
|
|
126
135
|
orLink: "or a link",
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import { computed, watch } from "vue"
|
|
34
34
|
import { hints } from "../composables/useHints"
|
|
35
|
-
import HintSampleTag from "./HintSampleTag.vue"
|
|
35
|
+
import HintSampleTag, { type HintExampleLabels } from "./HintSampleTag.vue"
|
|
36
36
|
import LpCollapse from "./LpCollapse.vue"
|
|
37
37
|
|
|
38
38
|
const props = defineProps<{
|
|
39
39
|
/** The hint id this stands in for, as in `v-hint`, or several for a sample with parts. */
|
|
40
40
|
hint: string | string[]
|
|
41
41
|
inline?: boolean
|
|
42
|
-
labels?: Partial<
|
|
42
|
+
labels?: Partial<HintExampleLabels>
|
|
43
43
|
}>()
|
|
44
44
|
|
|
45
45
|
const ids = computed(() => (Array.isArray(props.hint) ? props.hint : [props.hint]))
|
|
@@ -24,6 +24,12 @@ import LpBadge from "./LpBadge.vue"
|
|
|
24
24
|
import LpButton from "./LpButton.vue"
|
|
25
25
|
import { useOutsideGuard, usePortalTarget } from "../composables/useView"
|
|
26
26
|
|
|
27
|
+
/** Wording of a hint note. */
|
|
28
|
+
export type HintLayerLabels = {
|
|
29
|
+
gotIt: string
|
|
30
|
+
badge: string
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
const props = withDefaults(
|
|
28
34
|
defineProps<{
|
|
29
35
|
/** Ids to mark, most important first. */
|
|
@@ -31,15 +37,15 @@ const props = withDefaults(
|
|
|
31
37
|
notes: Record<string, HintNote>
|
|
32
38
|
/** At most this many dots at once, so a page full of news stays calm. */
|
|
33
39
|
limit?: number
|
|
34
|
-
labels?: Partial<
|
|
40
|
+
labels?: Partial<HintLayerLabels>
|
|
35
41
|
}>(),
|
|
36
42
|
{ limit: 3 },
|
|
37
43
|
)
|
|
38
44
|
|
|
39
45
|
const emit = defineEmits<{ (e: "read", id: string): void }>()
|
|
40
46
|
|
|
41
|
-
const DEFAULT_LABELS = { gotIt: "Got it", badge: "New" }
|
|
42
|
-
const labels = useLabels("hintLayer", DEFAULT_LABELS, () => props.labels)
|
|
47
|
+
const DEFAULT_LABELS: HintLayerLabels = { gotIt: "Got it", badge: "New" }
|
|
48
|
+
const labels = useLabels<HintLayerLabels>("hintLayer", DEFAULT_LABELS, () => props.labels)
|
|
43
49
|
|
|
44
50
|
const OPEN_DELAY_MS = 350
|
|
45
51
|
|
|
@@ -16,12 +16,26 @@ import LpActionBar, { type ActionBarAction } from "./LpActionBar.vue"
|
|
|
16
16
|
import LpHintLayer from "./LpHintLayer.vue"
|
|
17
17
|
import LpTour from "./LpTour.vue"
|
|
18
18
|
|
|
19
|
+
/** Wording of the hint offers. `{page}` is the page's name. */
|
|
20
|
+
export type HintsLabels = {
|
|
21
|
+
tourTitle: string
|
|
22
|
+
tourText: string
|
|
23
|
+
assignedTitle: string
|
|
24
|
+
assignedText: string
|
|
25
|
+
newsTitle: string
|
|
26
|
+
show: string
|
|
27
|
+
notNow: string
|
|
28
|
+
never: string
|
|
29
|
+
gotIt: string
|
|
30
|
+
noThanks: string
|
|
31
|
+
}
|
|
32
|
+
|
|
19
33
|
const props = defineProps<{
|
|
20
34
|
system: HintSystem
|
|
21
|
-
labels?: Partial<
|
|
35
|
+
labels?: Partial<HintsLabels>
|
|
22
36
|
}>()
|
|
23
37
|
|
|
24
|
-
const DEFAULT_LABELS = {
|
|
38
|
+
const DEFAULT_LABELS: HintsLabels = {
|
|
25
39
|
tourTitle: "New to {page}?",
|
|
26
40
|
tourText: "A one-minute look at what you can do here.",
|
|
27
41
|
assignedTitle: "You were asked to look at {page}",
|
|
@@ -33,7 +47,7 @@ const DEFAULT_LABELS = {
|
|
|
33
47
|
gotIt: "Got it",
|
|
34
48
|
noThanks: "No thanks",
|
|
35
49
|
}
|
|
36
|
-
const labels = useLabels("hints", DEFAULT_LABELS, () => props.labels)
|
|
50
|
+
const labels = useLabels<HintsLabels>("hints", DEFAULT_LABELS, () => props.labels)
|
|
37
51
|
|
|
38
52
|
provideHintSystem(props.system)
|
|
39
53
|
|