@leavepulse/ui 0.71.1 → 0.72.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 (297) hide show
  1. package/dist/assets/{LpCommandPalette-DgPZX0us.css → LpCommandPalette-Rtbg669l.css} +19 -19
  2. package/dist/assets/{LpNumberFlow-rZkwQwlU.css → LpNumberFlow-Chp9pEDe.css} +8 -0
  3. package/dist/assets/LpTabs-CDchzoRL.css +18 -0
  4. package/dist/chunks/{ContextMenuItems-eS7qx9gD.js → ContextMenuItems-BXumicbh.js} +1 -1
  5. package/dist/chunks/{DropzoneLinkField-DkFhdfEJ.js → DropzoneLinkField-D2Rnkcys.js} +2 -2
  6. package/dist/chunks/{FieldWrapper-YzbvvC3M.js → FieldWrapper-DnA1rxZ8.js} +1 -1
  7. package/dist/chunks/{LayoutCanvas-Ba4A9QC5.js → LayoutCanvas-CNOAUk7D.js} +1 -1
  8. package/dist/chunks/{LayoutNode-CTTTLMDM.js → LayoutNode-DF5BMN0J.js} +1 -1
  9. package/dist/chunks/{LpActionBar-B7anGlkI.js → LpActionBar-DfiBL1dE.js} +3 -3
  10. package/dist/chunks/{LpAddressInput-CD0bzrt-.js → LpAddressInput-B1bB3F6M.js} +7 -7
  11. package/dist/chunks/{LpAlert-BHi7ARqu.js → LpAlert-CpRF9eYr.js} +3 -3
  12. package/dist/chunks/{LpAppShell-1RmBp6xQ.js → LpAppShell-D8Q0Jv9d.js} +68 -18
  13. package/dist/chunks/{LpAutocomplete-DDqe2M5g.js → LpAutocomplete-DOu7FN5P.js} +2 -2
  14. package/dist/chunks/{LpAvatar-DqfKCIdr.js → LpAvatar-Cg6Az3wz.js} +1 -1
  15. package/dist/chunks/{LpBadge-C8fKEmTF.js → LpBadge-vtCpsDmv.js} +3 -3
  16. package/dist/chunks/LpBottomNav-VXJf0cKc.js +89 -0
  17. package/dist/chunks/{LpBreadcrumbs-DhcoStFa.js → LpBreadcrumbs-BdzjQcql.js} +3 -3
  18. package/dist/chunks/{LpButton-BQDAFXBd.js → LpButton-Dk7eT4ro.js} +1 -1
  19. package/dist/chunks/{LpCalendar-NmrA47J9.js → LpCalendar-CuoWks-0.js} +1 -1
  20. package/dist/chunks/{LpCard-CqKLnEhl.js → LpCard-Ce3rw8zm.js} +1 -1
  21. package/dist/chunks/{LpCheckbox-BoOuLnGB.js → LpCheckbox-DLX4amba.js} +2 -2
  22. package/dist/chunks/{LpCodeBlock-Czu-fq1M.js → LpCodeBlock-j0W5bpmF.js} +2 -2
  23. package/dist/chunks/{LpCodeDisplay-BK2FHbtM.js → LpCodeDisplay-COdiv4xu.js} +6 -6
  24. package/dist/chunks/{LpColorPicker-Ee1DZiRd.js → LpColorPicker-1y1QJHZR.js} +56 -28
  25. package/dist/chunks/{LpCommandScope-ubtWDMa0.js → LpCommandScope-BlKcgBnK.js} +1 -1
  26. package/dist/chunks/{LpConfirmDialog-i15pulMT.js → LpConfirmDialog-w1ni5nxh.js} +3 -3
  27. package/dist/chunks/{LpConfirmHost-D0oGavtd.js → LpConfirmHost-Br_-Gn-6.js} +1 -1
  28. package/dist/chunks/{LpContextMenu-DXpFJjlO.js → LpContextMenu-rx2tCjwk.js} +2 -2
  29. package/dist/chunks/{LpCopyButton-Dmq7DmFw.js → LpCopyButton-DaD1KCn6.js} +2 -2
  30. package/dist/chunks/{LpCountdown-DTdMF8DL.js → LpCountdown-Cgy0mVEq.js} +3 -3
  31. package/dist/chunks/{LpDataList-CFPtSsBB.js → LpDataList-CkcGFJgv.js} +3 -3
  32. package/dist/chunks/{LpDatePicker-cC9K-Pk8.js → LpDatePicker-CA0QTfBC.js} +4 -4
  33. package/dist/chunks/{LpDateRangePicker-BVQKPbvo.js → LpDateRangePicker-u3J51xXk.js} +2 -2
  34. package/dist/chunks/{LpDisclosure-hRnX3FWL.js → LpDisclosure-Cpa7Hc5T.js} +1 -1
  35. package/dist/chunks/{LpDrawer-u4rxnuR-.js → LpDrawer-RRamxbLV.js} +1 -1
  36. package/dist/chunks/{LpDropdownMenu-BgZ0Z_Im.js → LpDropdownMenu-Dl7Z4ZhS.js} +2 -2
  37. package/dist/chunks/{LpEditable-CjxuOVh_.js → LpEditable-D3PvD6Zm.js} +5 -5
  38. package/dist/chunks/{LpEmptyState-CKFTtQgJ.js → LpEmptyState-EQHiRYhG.js} +7 -3
  39. package/dist/chunks/{LpFieldNotice-CPI8EwtU.js → LpFieldNotice-CzQ2_5rQ.js} +1 -1
  40. package/dist/chunks/{LpFileTree-BH0gNlSJ.js → LpFileTree-D7KTaJiM.js} +2 -2
  41. package/dist/chunks/{LpFileTreeNode-gPVB1oXM.js → LpFileTreeNode-14GVqQTd.js} +5 -5
  42. package/dist/chunks/{LpFormField-gRASfyj2.js → LpFormField-MSQhRCTz.js} +2 -2
  43. package/dist/chunks/{LpGauge-BdjPGnqw.js → LpGauge-BO1PYYqD.js} +2 -2
  44. package/dist/chunks/{LpHintLayer-C2asBIfs.js → LpHintLayer-CmYm37z7.js} +2 -2
  45. package/dist/chunks/{LpHints-CNZQ76JV.js → LpHints-iLIRUkCj.js} +3 -3
  46. package/dist/chunks/{LpIcon-DkP-9mzK.js → LpIcon--5WSb3jJ.js} +1 -1
  47. package/dist/chunks/{LpInfraNode-yTh4-5qa.js → LpInfraNode-BT0VQrOa.js} +2 -2
  48. package/dist/chunks/{LpInput-2H-5ILOB.js → LpInput-1eNvtzXs.js} +2 -2
  49. package/dist/chunks/{LpLightbox-lAt5uIfx.js → LpLightbox-DWw6OSA4.js} +3 -3
  50. package/dist/chunks/{LpLoader-DjJEX8hL.js → LpLoader-B82_CcV0.js} +1 -1
  51. package/dist/chunks/{LpLogViewer-x78YfhJf.js → LpLogViewer-pzanZASC.js} +6 -6
  52. package/dist/chunks/{LpMapPicker-Dp5RSCi9.js → LpMapPicker-DNIUvF6V.js} +2 -2
  53. package/dist/chunks/{LpMediaGallery-D92oJfY_.js → LpMediaGallery-Dx8xzg5N.js} +3 -3
  54. package/dist/chunks/{LpModal-CpH0bNo7.js → LpModal-BnjZ2iem.js} +1 -1
  55. package/dist/chunks/{LpModalNav-BH4ANQGJ.js → LpModalNav-Cu04W1pV.js} +4 -4
  56. package/dist/chunks/{LpNotificationBell-BdUQqZhs.js → LpNotificationBell-PSQqFqEv.js} +8 -8
  57. package/dist/chunks/{LpNumberField-DZY3Z670.js → LpNumberField-e0IBkWU1.js} +1 -1
  58. package/dist/chunks/{LpNumberFlow-5khYxsfX.js → LpNumberFlow-CcxEGUy0.js} +10 -7
  59. package/dist/chunks/{LpPagination-DbeACavM.js → LpPagination-BIIiYHXR.js} +1 -1
  60. package/dist/chunks/{LpPaletteTheme-CqWNRwHE.js → LpPaletteTheme-D05ywM1W.js} +8 -6
  61. package/dist/chunks/{LpPasswordInput-BzAZsf5V.js → LpPasswordInput-vdcw-koG.js} +2 -2
  62. package/dist/chunks/{LpPhoneInput-BMpd-0QR.js → LpPhoneInput-CETEp5W7.js} +2 -2
  63. package/dist/chunks/{LpPie-DdFSTbGE.js → LpPie-BlWDxCtG.js} +6 -6
  64. package/dist/chunks/{LpPipeline-zjEM1Lwc.js → LpPipeline-BXjoxkq_.js} +4 -4
  65. package/dist/chunks/{LpProgress-BX33EKkN.js → LpProgress-rOlyafqp.js} +1 -1
  66. package/dist/chunks/{LpQuota-DqNv1yjs.js → LpQuota-B12yijdB.js} +3 -3
  67. package/dist/chunks/{LpRadioGroup-CsXeV9Ct.js → LpRadioGroup-ggaPL92T.js} +1 -1
  68. package/dist/chunks/{LpRangeCalendar-l-0nSFmY.js → LpRangeCalendar-CYYUYqJ7.js} +1 -1
  69. package/dist/chunks/{LpRelativeTime-UM8EkfrN.js → LpRelativeTime-DwgCb5-8.js} +1 -1
  70. package/dist/chunks/{LpRepeater-OvzByE5L.js → LpRepeater-fliVBcN7.js} +3 -3
  71. package/dist/chunks/LpRollingText-B54Pje7P.js +86 -0
  72. package/dist/chunks/{LpScramble-TDO5Kdou.js → LpScramble-Cw-af0Yh.js} +1 -1
  73. package/dist/chunks/{LpSecretField-DwQiPOko.js → LpSecretField-D_IMxEGW.js} +7 -7
  74. package/dist/chunks/{LpSection-DcQsieHG.js → LpSection-DFK_uoJE.js} +1 -1
  75. package/dist/chunks/{LpSegmented-D2VST0o3.js → LpSegmented-CeACsMMA.js} +4 -2
  76. package/dist/chunks/{LpSelect-DYX2-u5A.js → LpSelect-Cxq4yBGd.js} +7 -7
  77. package/dist/chunks/LpShift-BAp8lGoa.js +160 -0
  78. package/dist/chunks/LpSidebar-BftYsk5d.js +494 -0
  79. package/dist/chunks/LpSidebarNav-BzNWMZfc.js +357 -0
  80. package/dist/chunks/LpSidebarRow-BIReMT1f.js +302 -0
  81. package/dist/chunks/{LpStat-DIsQfbeD.js → LpStat-BFCM6fUn.js} +9 -7
  82. package/dist/chunks/{LpStatus-BQU1TUsv.js → LpStatus-BWTLVPVh.js} +3 -3
  83. package/dist/chunks/{LpStepMark-CXa7DJy_.js → LpStepMark-DkdkebLC.js} +3 -3
  84. package/dist/chunks/{LpStepper-C9RM_yTG.js → LpStepper-BgqjKrqg.js} +1 -1
  85. package/dist/chunks/{LpSwap-DzE6M3Mg.js → LpSwap-B5YOXgtx.js} +1 -1
  86. package/dist/chunks/{LpSwitch-bGZxUDSx.js → LpSwitch-DyrRes7s.js} +1 -1
  87. package/dist/chunks/LpTabFace-D6BMCbAP.js +77 -0
  88. package/dist/chunks/{LpTableFilter-CTZMqFDU.js → LpTableFilter-Dkzamzkl.js} +3 -3
  89. package/dist/chunks/{LpTagsInput-DrjmrOge.js → LpTagsInput-DAZNNehI.js} +5 -5
  90. package/dist/chunks/{LpTextarea-BbYqmG1S.js → LpTextarea-DbmVPj2X.js} +32 -7
  91. package/dist/chunks/{useTheme-BOV_-AiY.js → LpThemeProvider-8MG6yqU9.js} +66 -1
  92. package/dist/chunks/{LpThemeStudio-B2nPaG-h.js → LpThemeStudio-DWtG6OZZ.js} +140 -106
  93. package/dist/chunks/LpThemeStudioSection-B7bt8Iyg.js +32 -0
  94. package/dist/chunks/{LpThemeSwitcher-C0A5sg_E.js → LpThemeSwitcher-Dcx-VkSk.js} +9 -8
  95. package/dist/chunks/{LpTimeField-DQ8WvPr2.js → LpTimeField-BawSVsmt.js} +1 -1
  96. package/dist/chunks/{LpToaster-BTTl_wuy.js → LpToaster-50hp_B5O.js} +2 -2
  97. package/dist/chunks/{LpTopologyCanvas-B0wEvAoq.js → LpTopologyCanvas-CnUh8uzS.js} +43 -13
  98. package/dist/chunks/{LpTour-BgCfNlaW.js → LpTour-DC3LTlxg.js} +1 -1
  99. package/dist/chunks/{LpTruncate-TcqfkyJM.js → LpTruncate-Ced4gquB.js} +1 -1
  100. package/dist/chunks/{LpUptimeBar-DRadGq4Y.js → LpUptimeBar-CuB0LX8K.js} +4 -4
  101. package/dist/chunks/{MenuTitle-Dab3EGOp.js → MenuTitle-BmCNNTKH.js} +1 -1
  102. package/dist/chunks/{OptionContent-DPzNsybd.js → OptionContent-22UT8zLn.js} +1 -1
  103. package/dist/chunks/{PickerField-DwLw7j0L.js → PickerField-Bfh8id3d.js} +2 -2
  104. package/dist/chunks/{RevealToggle-BVFM_FAU.js → RevealToggle-B0ITuIX-.js} +2 -2
  105. package/dist/chunks/{TourCard--2IfgnUU.js → TourCard-CBkj1GYi.js} +5 -5
  106. package/dist/chunks/{icons-CLu1iR1j.js → icons-DMITlfw5.js} +1 -1
  107. package/dist/chunks/{palette-BiY7yQZL.js → palette-Cvxl_1tM.js} +1 -1
  108. package/dist/component-names.d.ts +1 -1
  109. package/dist/components/ContextMenuItems.vue.js +1 -1
  110. package/dist/components/DropzoneLinkField.vue.js +1 -1
  111. package/dist/components/FieldWrapper.vue.js +1 -1
  112. package/dist/components/LayoutCanvas.vue.js +1 -1
  113. package/dist/components/LayoutNode.vue.js +1 -1
  114. package/dist/components/LpActionBar.vue.js +1 -1
  115. package/dist/components/LpAddressInput.vue.js +1 -1
  116. package/dist/components/LpAlert.vue.js +1 -1
  117. package/dist/components/LpAppShell.vue.d.ts +67 -2
  118. package/dist/components/LpAppShell.vue.js +1 -1
  119. package/dist/components/LpAutocomplete.vue.js +1 -1
  120. package/dist/components/LpAvatar.vue.js +1 -1
  121. package/dist/components/LpBadge.vue.js +1 -1
  122. package/dist/components/LpBottomNav.vue.d.ts +28 -0
  123. package/dist/components/LpBottomNav.vue.js +4 -0
  124. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  125. package/dist/components/LpButton.vue.js +1 -1
  126. package/dist/components/LpCalendar.vue.js +1 -1
  127. package/dist/components/LpCard.vue.js +1 -1
  128. package/dist/components/LpChart.vue.js +26 -8
  129. package/dist/components/LpCheckbox.vue.js +1 -1
  130. package/dist/components/LpCodeBlock.vue.js +1 -1
  131. package/dist/components/LpCodeDisplay.vue.js +1 -1
  132. package/dist/components/LpColorPicker.vue.d.ts +15 -2
  133. package/dist/components/LpColorPicker.vue.js +1 -1
  134. package/dist/components/LpCommandPalette.vue.js +47 -26
  135. package/dist/components/LpCommandScope.vue.js +1 -1
  136. package/dist/components/LpConfirmDialog.vue.js +1 -1
  137. package/dist/components/LpConfirmHost.vue.js +1 -1
  138. package/dist/components/LpContextMenu.vue.js +1 -1
  139. package/dist/components/LpCopyButton.vue.js +1 -1
  140. package/dist/components/LpCountdown.vue.js +1 -1
  141. package/dist/components/LpDataList.vue.js +1 -1
  142. package/dist/components/LpDatePicker.vue.js +1 -1
  143. package/dist/components/LpDateRangePicker.vue.js +1 -1
  144. package/dist/components/LpDisclosure.vue.js +1 -1
  145. package/dist/components/LpDock.vue.js +1 -1
  146. package/dist/components/LpDrawer.vue.js +1 -1
  147. package/dist/components/LpDropdownMenu.vue.js +1 -1
  148. package/dist/components/LpDropzone.vue.js +2 -2
  149. package/dist/components/LpEditable.vue.js +1 -1
  150. package/dist/components/LpEmptyState.vue.d.ts +2 -0
  151. package/dist/components/LpEmptyState.vue.js +1 -1
  152. package/dist/components/LpFieldNotice.vue.js +1 -1
  153. package/dist/components/LpFileTree.vue.js +1 -1
  154. package/dist/components/LpFileTreeNode.vue.js +1 -1
  155. package/dist/components/LpFormField.vue.js +1 -1
  156. package/dist/components/LpGauge.vue.js +1 -1
  157. package/dist/components/LpHintLayer.vue.js +1 -1
  158. package/dist/components/LpHints.vue.js +1 -1
  159. package/dist/components/LpIcon.vue.js +1 -1
  160. package/dist/components/LpImageEditor.vue.js +2 -2
  161. package/dist/components/LpInfraNode.vue.js +1 -1
  162. package/dist/components/LpInput.vue.js +1 -1
  163. package/dist/components/LpLightbox.vue.js +1 -1
  164. package/dist/components/LpLoader.vue.js +1 -1
  165. package/dist/components/LpLogViewer.vue.d.ts +1 -1
  166. package/dist/components/LpLogViewer.vue.js +1 -1
  167. package/dist/components/LpMapPicker.vue.js +1 -1
  168. package/dist/components/LpMediaGallery.vue.js +1 -1
  169. package/dist/components/LpModal.vue.js +1 -1
  170. package/dist/components/LpModalNav.vue.js +1 -1
  171. package/dist/components/LpNotificationBell.vue.js +1 -1
  172. package/dist/components/LpNumberField.vue.js +1 -1
  173. package/dist/components/LpNumberFlow.vue.js +1 -1
  174. package/dist/components/LpPagination.vue.js +1 -1
  175. package/dist/components/LpPaletteFacts.vue.js +2 -2
  176. package/dist/components/LpPaletteHeader.vue.js +2 -2
  177. package/dist/components/LpPaletteStats.vue.js +2 -2
  178. package/dist/components/LpPaletteTheme.vue.d.ts +2 -0
  179. package/dist/components/LpPaletteTheme.vue.js +1 -1
  180. package/dist/components/LpPasswordInput.vue.js +1 -1
  181. package/dist/components/LpPhoneInput.vue.js +1 -1
  182. package/dist/components/LpPie.vue.js +1 -1
  183. package/dist/components/LpPipeline.vue.js +1 -1
  184. package/dist/components/LpProgress.vue.js +1 -1
  185. package/dist/components/LpQuota.vue.js +1 -1
  186. package/dist/components/LpRadioGroup.vue.js +1 -1
  187. package/dist/components/LpRangeCalendar.vue.js +1 -1
  188. package/dist/components/LpRelativeTime.vue.js +1 -1
  189. package/dist/components/LpRepeater.vue.js +1 -1
  190. package/dist/components/LpRollingText.vue.d.ts +2 -2
  191. package/dist/components/LpRollingText.vue.js +1 -1
  192. package/dist/components/LpScramble.vue.js +1 -1
  193. package/dist/components/LpSecretField.vue.js +1 -1
  194. package/dist/components/LpSection.vue.js +1 -1
  195. package/dist/components/LpSegmented.vue.js +1 -1
  196. package/dist/components/LpSelect.vue.js +1 -1
  197. package/dist/components/LpShift.vue.d.ts +20 -0
  198. package/dist/components/LpShift.vue.js +1 -1
  199. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  200. package/dist/components/LpSidebar.vue.d.ts +74 -23
  201. package/dist/components/LpSidebar.vue.js +1 -1
  202. package/dist/components/LpSidebarNav.vue.d.ts +30 -2
  203. package/dist/components/LpSidebarNav.vue.js +1 -1
  204. package/dist/components/LpSidebarRow.vue.d.ts +49 -0
  205. package/dist/components/LpSidebarRow.vue.js +4 -0
  206. package/dist/components/LpStat.vue.d.ts +11 -0
  207. package/dist/components/LpStat.vue.js +1 -1
  208. package/dist/components/LpStatus.vue.js +1 -1
  209. package/dist/components/LpStepMark.vue.js +1 -1
  210. package/dist/components/LpStepper.vue.js +1 -1
  211. package/dist/components/LpSwap.vue.js +1 -1
  212. package/dist/components/LpSwitch.vue.js +1 -1
  213. package/dist/components/LpTabFace.vue.d.ts +14 -0
  214. package/dist/components/LpTabFace.vue.js +4 -0
  215. package/dist/components/LpTable.vue.js +11 -11
  216. package/dist/components/LpTableFilter.vue.js +1 -1
  217. package/dist/components/LpTabs.vue.d.ts +12 -4
  218. package/dist/components/LpTabs.vue.js +22 -74
  219. package/dist/components/LpTagsInput.vue.js +1 -1
  220. package/dist/components/LpTextarea.vue.d.ts +19 -1
  221. package/dist/components/LpTextarea.vue.js +1 -1
  222. package/dist/components/LpThemeProvider.vue.js +1 -1
  223. package/dist/components/LpThemeStudio.vue.d.ts +2 -2
  224. package/dist/components/LpThemeStudio.vue.js +1 -1
  225. package/dist/components/LpThemeStudioSection.vue.d.ts +4 -1
  226. package/dist/components/LpThemeStudioSection.vue.js +1 -1
  227. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  228. package/dist/components/LpTimeField.vue.js +1 -1
  229. package/dist/components/LpToaster.vue.js +1 -1
  230. package/dist/components/LpTopologyCanvas.vue.d.ts +3 -1
  231. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  232. package/dist/components/LpTour.vue.js +1 -1
  233. package/dist/components/LpTruncate.vue.js +1 -1
  234. package/dist/components/LpUptimeBar.vue.js +1 -1
  235. package/dist/components/MenuTitle.vue.js +1 -1
  236. package/dist/components/OptionContent.vue.js +1 -1
  237. package/dist/components/PickerField.vue.js +1 -1
  238. package/dist/components/RevealToggle.vue.js +1 -1
  239. package/dist/components/TourCard.vue.js +1 -1
  240. package/dist/components/chart.d.ts +14 -0
  241. package/dist/components/chart.js +13 -0
  242. package/dist/components/format.d.ts +10 -3
  243. package/dist/components/format.js +14 -2
  244. package/dist/components/menuWhen.js +1 -1
  245. package/dist/components/rolling.d.ts +5 -0
  246. package/dist/components/rolling.js +23 -0
  247. package/dist/components/sidebar.d.ts +33 -0
  248. package/dist/components/tabs.d.ts +3 -0
  249. package/dist/components/tabs.js +6 -0
  250. package/dist/composables/usePaletteCommands.js +1 -0
  251. package/dist/composables/useReveal.js +1 -22
  252. package/dist/icons-all.js +1 -1
  253. package/dist/index.d.ts +2 -1
  254. package/dist/index.js +156 -154
  255. package/dist/theme/palette.d.ts +3 -0
  256. package/package.json +1 -1
  257. package/src/component-names.ts +1 -0
  258. package/src/components/LpAppShell.vue +75 -7
  259. package/src/components/LpBottomNav.vue +84 -0
  260. package/src/components/LpChart.vue +23 -3
  261. package/src/components/LpColorPicker.vue +32 -1
  262. package/src/components/LpCommandPalette.vue +23 -5
  263. package/src/components/LpEmptyState.vue +4 -1
  264. package/src/components/LpNumberFlow.vue +23 -9
  265. package/src/components/LpPaletteTheme.vue +3 -3
  266. package/src/components/LpRollingText.vue +27 -2
  267. package/src/components/LpSegmented.vue +3 -1
  268. package/src/components/LpSelect.vue +5 -4
  269. package/src/components/LpShift.vue +174 -2
  270. package/src/components/LpSidebar.vue +304 -18
  271. package/src/components/LpSidebarNav.vue +200 -70
  272. package/src/components/LpSidebarRow.vue +238 -0
  273. package/src/components/LpStat.vue +12 -4
  274. package/src/components/LpTabFace.vue +52 -0
  275. package/src/components/LpTabs.vue +15 -42
  276. package/src/components/LpTextarea.vue +34 -4
  277. package/src/components/LpThemeStudio.vue +92 -56
  278. package/src/components/LpThemeStudioSection.vue +15 -7
  279. package/src/components/LpThemeSwitcher.vue +4 -1
  280. package/src/components/LpTopologyCanvas.vue +35 -4
  281. package/src/components/chart.ts +26 -0
  282. package/src/components/format.ts +31 -5
  283. package/src/components/rolling.ts +28 -0
  284. package/src/components/sidebar.ts +33 -0
  285. package/src/components/tabs.ts +9 -0
  286. package/src/composables/usePaletteCommands.ts +3 -0
  287. package/src/composables/useReveal.ts +7 -30
  288. package/src/index.ts +2 -1
  289. package/src/kit-icons.ts +1 -1
  290. package/src/theme/palette.ts +4 -2
  291. package/dist/assets/LpTabs-CO3EcsNV.css +0 -18
  292. package/dist/chunks/LpRollingText-DiL717LK.js +0 -51
  293. package/dist/chunks/LpShift-DXNsauQZ.js +0 -40
  294. package/dist/chunks/LpSidebar-D44peKq2.js +0 -256
  295. package/dist/chunks/LpSidebarNav--VwkXO_a.js +0 -211
  296. package/dist/chunks/LpThemeProvider-DcbfOxsU.js +0 -69
  297. package/dist/chunks/LpThemeStudioSection-BwhqYDLf.js +0 -20
@@ -1,256 +0,0 @@
1
- import { defineComponent, computed, ref, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createBlock, createVNode, createSlots, withCtx, normalizeProps, guardReactiveProps } from "vue";
2
- import { usePersisted } from "../composables/usePersisted.js";
3
- import { useLabels } from "../composables/useLpConfig.js";
4
- import { _ as _sfc_main$3 } from "./LpDrawer-u4rxnuR-.js";
5
- import { _ as _sfc_main$1 } from "./LpInput-2H-5ILOB.js";
6
- import { _ as _sfc_main$2 } from "./LpSidebarNav--VwkXO_a.js";
7
- const _hoisted_1 = ["aria-label"];
8
- const _hoisted_2 = {
9
- key: 2,
10
- class: "mt-2 flex shrink-0 flex-col gap-2"
11
- };
12
- const _hoisted_3 = {
13
- key: 3,
14
- class: "mt-2 shrink-0 border-t border-line pt-3"
15
- };
16
- const _hoisted_4 = ["aria-label"];
17
- const _hoisted_5 = {
18
- key: 2,
19
- class: "mt-2 flex shrink-0 flex-col gap-2"
20
- };
21
- const _hoisted_6 = {
22
- key: 3,
23
- class: "mt-2 shrink-0 border-t border-line pt-3"
24
- };
25
- const _sfc_main = /* @__PURE__ */ defineComponent({
26
- ...{ inheritAttrs: false },
27
- __name: "LpSidebar",
28
- props: {
29
- modelValue: {},
30
- items: {},
31
- sections: {},
32
- isActive: {},
33
- searchable: { type: Boolean },
34
- searchPlaceholder: {},
35
- labels: {},
36
- search: {},
37
- loading: { type: Boolean },
38
- skeletonRows: { default: 6 },
39
- skeletonHeader: { type: Boolean, default: true },
40
- responsive: { type: Boolean, default: false },
41
- open: { type: Boolean },
42
- mobileBreakpoint: { default: "md" },
43
- edgeOpen: { type: Boolean },
44
- divider: { type: Boolean, default: true },
45
- variant: { default: "rail" },
46
- width: {},
47
- collapsed: {},
48
- persist: {},
49
- autoCollapseAfter: { default: 14 },
50
- hoverFollow: { type: Boolean, default: false }
51
- },
52
- emits: ["update:modelValue", "update:open", "update:collapsed", "select", "update:search"],
53
- setup(__props, { emit: __emit }) {
54
- const props = __props;
55
- const emit = __emit;
56
- const text = useLabels("sidebar", { nav: "Sidebar", search: "Search" }, () => props.labels);
57
- const placeholder = computed(() => props.searchPlaceholder ?? text.value.search);
58
- const allGroups = computed(
59
- () => props.sections ?? (props.items ? [{ items: props.items }] : [])
60
- );
61
- const ownSearch = ref("");
62
- const query = computed({
63
- get: () => props.search ?? ownSearch.value,
64
- set: (v) => {
65
- ownSearch.value = v;
66
- emit("update:search", v);
67
- }
68
- });
69
- function normalise(s) {
70
- return s.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase();
71
- }
72
- function matches(item, needle) {
73
- if (normalise(item.label).includes(needle)) return true;
74
- return (item.keywords ?? []).some((k) => normalise(k).includes(needle));
75
- }
76
- const groups = computed(() => {
77
- const needle = normalise(query.value.trim());
78
- if (!needle) return allGroups.value;
79
- return allGroups.value.map((section) => ({ ...section, items: section.items.filter((i) => matches(i, needle)) })).filter((section) => section.items.length > 0);
80
- });
81
- const filtering = computed(() => query.value.trim().length > 0);
82
- function itemActive(item) {
83
- return props.isActive ? props.isActive(item) : item.id === props.modelValue;
84
- }
85
- function keyOf(section) {
86
- return section.key ?? section.title ?? "";
87
- }
88
- const ownCollapsed = usePersisted(
89
- () => props.persist && `lp-sidebar:${props.persist}`,
90
- null,
91
- { validate: (value) => value === null || Array.isArray(value) && value.every((k) => typeof k === "string") }
92
- );
93
- const navLength = computed(
94
- () => groups.value.reduce((n, g) => n + g.items.length + (g.title ? 1 : 0), 0)
95
- );
96
- const autoCollapsed = computed(() => {
97
- const limit = props.autoCollapseAfter;
98
- if (!limit || navLength.value <= limit) return [];
99
- return groups.value.filter((g) => g.collapsible && !g.items.some(itemActive)).map(keyOf).filter(Boolean);
100
- });
101
- const collapsedKeys = computed(
102
- () => (
103
- // Nothing stays folded while a query is on: a section that matched but is
104
- // closed looks exactly like a section that did not match, and the person is
105
- // typing precisely because they cannot find the thing by eye.
106
- filtering.value ? [] : props.collapsed ?? ownCollapsed.value ?? autoCollapsed.value
107
- )
108
- );
109
- function toggleSection(key, collapsed) {
110
- const next = collapsed ? [.../* @__PURE__ */ new Set([...collapsedKeys.value, key])] : collapsedKeys.value.filter((k) => k !== key);
111
- ownCollapsed.value = next;
112
- emit("update:collapsed", next);
113
- }
114
- function activate(item) {
115
- if (item.disabled) return;
116
- emit("update:modelValue", item.id);
117
- emit("select", item);
118
- if (props.responsive && props.open) emit("update:open", false);
119
- }
120
- const baseId = `lp-sidebar-${useId()}`;
121
- const railPillId = `${baseId}-rail`;
122
- const drawerPillId = `${baseId}-drawer`;
123
- const RAIL_VISIBILITY = {
124
- sm: "hidden sm:flex",
125
- md: "hidden md:flex",
126
- lg: "hidden lg:flex",
127
- xl: "hidden xl:flex"
128
- };
129
- const railClass = computed(
130
- () => props.responsive ? RAIL_VISIBILITY[props.mobileBreakpoint] : "flex"
131
- );
132
- const chromeClass = computed(
133
- () => props.variant === "panel" ? "rounded-card border border-line bg-surface-raised" : "border-r border-line bg-surface-raised"
134
- );
135
- return (_ctx, _cache) => {
136
- return openBlock(), createElementBlock(Fragment, null, [
137
- createElementVNode("nav", mergeProps({
138
- class: ["h-full flex-col gap-1 p-3", [railClass.value, chromeClass.value, __props.width ? "" : "w-60"]],
139
- style: __props.width ? { width: __props.width } : void 0,
140
- "aria-label": unref(text).nav
141
- }, _ctx.$attrs), [
142
- _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
143
- key: 0,
144
- class: normalizeClass(["mb-3 flex shrink-0 items-center", [
145
- __props.variant === "panel" ? "pb-3" : "-mx-3 -mt-3 h-16 px-3",
146
- __props.divider ? "border-b border-line" : ""
147
- ]])
148
- }, [
149
- renderSlot(_ctx.$slots, "header")
150
- ], 2)) : createCommentVNode("", true),
151
- __props.searchable ? (openBlock(), createBlock(_sfc_main$1, {
152
- key: 1,
153
- modelValue: query.value,
154
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => query.value = $event),
155
- size: "sm",
156
- icon: "lucide:search",
157
- clearable: "",
158
- class: "mb-2 shrink-0",
159
- placeholder: placeholder.value,
160
- "aria-label": placeholder.value
161
- }, null, 8, ["modelValue", "placeholder", "aria-label"])) : createCommentVNode("", true),
162
- createVNode(_sfc_main$2, {
163
- groups: groups.value,
164
- "pill-id": railPillId,
165
- "item-active": itemActive,
166
- loading: __props.loading,
167
- "skeleton-rows": __props.skeletonRows,
168
- "skeleton-header": __props.skeletonHeader,
169
- "collapsed-keys": collapsedKeys.value,
170
- "hover-follow": __props.hoverFollow,
171
- onActivate: activate,
172
- onToggleSection: toggleSection
173
- }, createSlots({ _: 2 }, [
174
- _ctx.$slots.item ? {
175
- name: "item",
176
- fn: withCtx((slotProps) => [
177
- renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps(slotProps)))
178
- ]),
179
- key: "0"
180
- } : void 0
181
- ]), 1032, ["groups", "loading", "skeleton-rows", "skeleton-header", "collapsed-keys", "hover-follow"]),
182
- _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_2, [
183
- renderSlot(_ctx.$slots, "actions")
184
- ])) : createCommentVNode("", true),
185
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_3, [
186
- renderSlot(_ctx.$slots, "footer")
187
- ])) : createCommentVNode("", true)
188
- ], 16, _hoisted_1),
189
- __props.responsive ? (openBlock(), createBlock(_sfc_main$3, {
190
- key: 0,
191
- open: __props.open,
192
- direction: "left",
193
- size: "sm",
194
- "edge-open": __props.edgeOpen,
195
- "edge-breakpoint": __props.mobileBreakpoint,
196
- "onUpdate:open": _cache[2] || (_cache[2] = (v) => emit("update:open", v))
197
- }, {
198
- default: withCtx(() => [
199
- createElementVNode("nav", {
200
- class: "flex h-full flex-col gap-1",
201
- "aria-label": unref(text).nav
202
- }, [
203
- _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
204
- key: 0,
205
- class: normalizeClass(["shrink-0", __props.divider ? "mb-3 border-b border-line pb-3" : "mb-2"])
206
- }, [
207
- renderSlot(_ctx.$slots, "header")
208
- ], 2)) : createCommentVNode("", true),
209
- __props.searchable ? (openBlock(), createBlock(_sfc_main$1, {
210
- key: 1,
211
- modelValue: query.value,
212
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => query.value = $event),
213
- size: "sm",
214
- icon: "lucide:search",
215
- clearable: "",
216
- class: "mb-2 shrink-0",
217
- placeholder: placeholder.value,
218
- "aria-label": placeholder.value
219
- }, null, 8, ["modelValue", "placeholder", "aria-label"])) : createCommentVNode("", true),
220
- createVNode(_sfc_main$2, {
221
- groups: groups.value,
222
- "pill-id": drawerPillId,
223
- "item-active": itemActive,
224
- loading: __props.loading,
225
- "skeleton-rows": __props.skeletonRows,
226
- "skeleton-header": __props.skeletonHeader,
227
- "collapsed-keys": collapsedKeys.value,
228
- "hover-follow": __props.hoverFollow,
229
- onActivate: activate,
230
- onToggleSection: toggleSection
231
- }, createSlots({ _: 2 }, [
232
- _ctx.$slots.item ? {
233
- name: "item",
234
- fn: withCtx((slotProps) => [
235
- renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps(slotProps)))
236
- ]),
237
- key: "0"
238
- } : void 0
239
- ]), 1032, ["groups", "loading", "skeleton-rows", "skeleton-header", "collapsed-keys", "hover-follow"]),
240
- _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5, [
241
- renderSlot(_ctx.$slots, "actions")
242
- ])) : createCommentVNode("", true),
243
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_6, [
244
- renderSlot(_ctx.$slots, "footer")
245
- ])) : createCommentVNode("", true)
246
- ], 8, _hoisted_4)
247
- ]),
248
- _: 3
249
- }, 8, ["open", "edge-open", "edge-breakpoint"])) : createCommentVNode("", true)
250
- ], 64);
251
- };
252
- }
253
- });
254
- export {
255
- _sfc_main as _
256
- };
@@ -1,211 +0,0 @@
1
- import { defineComponent, computed, ref, openBlock, createBlock, mergeProps, unref, withCtx, createElementBlock, createElementVNode, createCommentVNode, Fragment, renderList, toDisplayString, createVNode, normalizeClass, createTextVNode, resolveDynamicComponent, renderSlot } from "vue";
2
- import { Motion } from "motion-v";
3
- import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
4
- import { usePillTransition } from "../composables/usePillTransition.js";
5
- import { _ as _sfc_main$4 } from "./LpBadge-C8fKEmTF.js";
6
- import { _ as _sfc_main$5 } from "./LpContextMenu-DXpFJjlO.js";
7
- import { _ as _sfc_main$3 } from "./LpIcon-DkP-9mzK.js";
8
- import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
9
- import { _ as _sfc_main$1 } from "./LpSkeleton-BB6XIV-w.js";
10
- import { resolveLink } from "../components/link.js";
11
- import { useLinkComponent } from "../composables/useLpConfig.js";
12
- import { useMergedAttrs } from "../composables/useMergedClass.js";
13
- const _hoisted_1 = {
14
- key: 0,
15
- class: "flex items-center gap-3 px-1"
16
- };
17
- const _hoisted_2 = { class: "space-y-1" };
18
- const _hoisted_3 = { class: "min-w-0 flex-1 truncate text-left" };
19
- const _hoisted_4 = {
20
- key: 1,
21
- class: "px-2 pb-1 pt-2 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted"
22
- };
23
- const _hoisted_5 = { class: "relative z-10 min-w-0 flex-1 truncate text-left" };
24
- const __default__ = { inheritAttrs: false };
25
- const _sfc_main = /* @__PURE__ */ defineComponent({
26
- ...__default__,
27
- __name: "LpSidebarNav",
28
- props: {
29
- groups: {},
30
- pillId: {},
31
- itemActive: {},
32
- loading: { type: Boolean },
33
- skeletonRows: { default: 6 },
34
- skeletonHeader: { type: Boolean, default: true },
35
- collapsedKeys: { default: () => [] },
36
- hoverFollow: { type: Boolean, default: false }
37
- },
38
- emits: ["activate", "toggle-section"],
39
- setup(__props, { emit: __emit }) {
40
- const props = __props;
41
- const emit = __emit;
42
- function sectionKey(section) {
43
- return section.key ?? section.title ?? "";
44
- }
45
- const foldedKeys = computed(() => {
46
- const holdsActive = new Set(
47
- props.groups.filter((g) => g.items.some((i) => props.itemActive(i))).map(sectionKey)
48
- );
49
- return new Set(
50
- props.collapsedKeys.filter((k) => k && !holdsActive.has(k))
51
- );
52
- });
53
- function isOpen(section) {
54
- return !foldedKeys.value.has(sectionKey(section));
55
- }
56
- const pillTransition = usePillTransition();
57
- const hovered = ref(null);
58
- function hover(item) {
59
- if (props.hoverFollow && !item.disabled) hovered.value = item.id;
60
- }
61
- function pillUnder(item) {
62
- return hovered.value ? hovered.value === item.id : props.itemActive(item);
63
- }
64
- const linkComponent = useLinkComponent();
65
- function rowOf(item) {
66
- const link = item.disabled ? null : resolveLink(linkComponent.value, { to: item.to, href: item.href });
67
- if (link) return link;
68
- return { is: "button", props: { type: "button", disabled: item.disabled || void 0 } };
69
- }
70
- const { class: rootClass, attrs: rest } = useMergedAttrs(
71
- "flex min-h-0 flex-1 flex-col gap-4"
72
- );
73
- return (_ctx, _cache) => {
74
- return __props.loading ? (openBlock(), createBlock(_sfc_main$1, mergeProps({
75
- key: 0,
76
- class: unref(rootClass)
77
- }, unref(rest)), {
78
- default: withCtx(() => [
79
- __props.skeletonHeader ? (openBlock(), createElementBlock("div", _hoisted_1, [..._cache[1] || (_cache[1] = [
80
- createElementVNode("div", { class: "lp-skeleton-item size-10 shrink-0 rounded-pill bg-surface-soft" }, null, -1),
81
- createElementVNode("div", { class: "flex-1 space-y-2" }, [
82
- createElementVNode("div", { class: "lp-skeleton-item h-3.5 w-24 rounded-small bg-surface-soft" }),
83
- createElementVNode("div", { class: "lp-skeleton-item h-3 w-16 rounded-small bg-surface-soft/60" })
84
- ], -1)
85
- ])])) : createCommentVNode("", true),
86
- createElementVNode("div", _hoisted_2, [
87
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.skeletonRows, (n) => {
88
- return openBlock(), createElementBlock("div", {
89
- key: n,
90
- class: "lp-skeleton-item h-9 rounded-control bg-surface-soft"
91
- });
92
- }), 128))
93
- ])
94
- ]),
95
- _: 1
96
- }, 16, ["class"])) : (openBlock(), createBlock(_sfc_main$2, {
97
- key: 1,
98
- class: "min-h-0 flex-1",
99
- "content-class": "flex min-h-full flex-col gap-4",
100
- onPointerleave: _cache[0] || (_cache[0] = ($event) => hovered.value = null)
101
- }, {
102
- default: withCtx(() => [
103
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (section, si) => {
104
- return openBlock(), createBlock(unref(CollapsibleRoot), {
105
- key: si,
106
- as: "div",
107
- class: "flex flex-col gap-0.5",
108
- open: isOpen(section),
109
- disabled: !section.collapsible || !section.title,
110
- "onUpdate:open": (o) => emit("toggle-section", sectionKey(section), !o)
111
- }, {
112
- default: withCtx(() => [
113
- section.title && section.collapsible ? (openBlock(), createBlock(unref(CollapsibleTrigger), {
114
- key: 0,
115
- class: "group/section mt-2 flex cursor-pointer items-center gap-2 rounded-control px-2 py-1 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:bg-ink/[0.04] hover:text-ink focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"
116
- }, {
117
- default: withCtx(() => [
118
- section.icon ? (openBlock(), createBlock(_sfc_main$3, {
119
- key: 0,
120
- name: section.icon,
121
- size: 14,
122
- class: "shrink-0"
123
- }, null, 8, ["name"])) : createCommentVNode("", true),
124
- createElementVNode("span", _hoisted_3, toDisplayString(section.title), 1),
125
- createVNode(_sfc_main$4, {
126
- tone: "neutral",
127
- class: normalizeClass(["shrink-0 transition-opacity duration-[var(--duration-fast)] motion-reduce:transition-none", isOpen(section) ? "opacity-0" : "opacity-100"]),
128
- "aria-hidden": isOpen(section) || void 0
129
- }, {
130
- default: withCtx(() => [
131
- createTextVNode(toDisplayString(section.items.length), 1)
132
- ]),
133
- _: 2
134
- }, 1032, ["class", "aria-hidden"]),
135
- createVNode(_sfc_main$3, {
136
- name: "lucide:chevron-down",
137
- size: 14,
138
- class: "shrink-0 text-muted transition-transform duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-data-[state=closed]/section:-rotate-90 motion-reduce:transition-none"
139
- })
140
- ]),
141
- _: 2
142
- }, 1024)) : section.title ? (openBlock(), createElementBlock("p", _hoisted_4, toDisplayString(section.title), 1)) : createCommentVNode("", true),
143
- createVNode(unref(CollapsibleContent), { class: "flex flex-col gap-0.5 overflow-hidden data-[state=open]:animate-[collapsible-down_260ms_var(--ease-emphasized)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-emphasized)] motion-reduce:animate-none" }, {
144
- default: withCtx(() => [
145
- (openBlock(true), createElementBlock(Fragment, null, renderList(section.items, (item) => {
146
- return openBlock(), createBlock(_sfc_main$5, {
147
- key: item.id,
148
- items: item.menu ?? [],
149
- title: (item.menuTitle ?? item.label) || void 0,
150
- "title-icon": item.icon
151
- }, {
152
- default: withCtx(() => [
153
- (openBlock(), createBlock(resolveDynamicComponent(rowOf(item).is), mergeProps({ ref_for: true }, rowOf(item).props, {
154
- "aria-current": __props.itemActive(item) ? "page" : void 0,
155
- "aria-disabled": item.disabled || void 0,
156
- class: ["group/item relative flex items-center gap-3 rounded-control px-3 py-2 text-sm font-medium outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring", item.disabled ? "cursor-not-allowed text-muted/50" : __props.itemActive(item) || hovered.value === item.id ? "text-ink" : "text-muted hover:text-ink"],
157
- onClick: ($event) => emit("activate", item),
158
- onPointerenter: ($event) => hover(item)
159
- }), {
160
- default: withCtx(() => [
161
- pillUnder(item) ? (openBlock(), createBlock(unref(Motion), {
162
- key: 0,
163
- "layout-id": __props.pillId,
164
- transition: unref(pillTransition),
165
- class: "absolute inset-0 z-0 rounded-control bg-brand-soft"
166
- }, null, 8, ["layout-id", "transition"])) : createCommentVNode("", true),
167
- renderSlot(_ctx.$slots, "item", {
168
- item,
169
- active: __props.itemActive(item)
170
- }, () => [
171
- item.icon ? (openBlock(), createBlock(_sfc_main$3, {
172
- key: 0,
173
- name: item.icon,
174
- size: 17,
175
- class: normalizeClass(["relative z-10 shrink-0 transition-colors", __props.itemActive(item) ? "text-brand" : ""])
176
- }, null, 8, ["name", "class"])) : createCommentVNode("", true),
177
- createElementVNode("span", _hoisted_5, toDisplayString(item.label), 1),
178
- item.badge != null ? (openBlock(), createBlock(_sfc_main$4, {
179
- key: 1,
180
- tone: __props.itemActive(item) ? "brand" : "neutral",
181
- class: "relative z-10 shrink-0"
182
- }, {
183
- default: withCtx(() => [
184
- createTextVNode(toDisplayString(item.badge), 1)
185
- ]),
186
- _: 2
187
- }, 1032, ["tone"])) : createCommentVNode("", true)
188
- ])
189
- ]),
190
- _: 2
191
- }, 1040, ["aria-current", "aria-disabled", "class", "onClick", "onPointerenter"]))
192
- ]),
193
- _: 2
194
- }, 1032, ["items", "title", "title-icon"]);
195
- }), 128))
196
- ]),
197
- _: 2
198
- }, 1024)
199
- ]),
200
- _: 2
201
- }, 1032, ["open", "disabled", "onUpdate:open"]);
202
- }), 128))
203
- ]),
204
- _: 3
205
- }));
206
- };
207
- }
208
- });
209
- export {
210
- _sfc_main as _
211
- };
@@ -1,69 +0,0 @@
1
- import { defineComponent, ref, shallowRef, computed, watch, nextTick, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, renderSlot } from "vue";
2
- import { t as themeEntries, r as revealTransition } from "./useTheme-BOV_-AiY.js";
3
- import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- const PRESS_FRESH_MS = 1500;
5
- let lastPress = null;
6
- if (typeof window !== "undefined") {
7
- window.addEventListener(
8
- "pointerdown",
9
- (event) => lastPress = { x: event.clientX, y: event.clientY, at: performance.now() },
10
- { capture: true, passive: true }
11
- );
12
- }
13
- const __default__ = { inheritAttrs: false };
14
- const _sfc_main = /* @__PURE__ */ defineComponent({
15
- ...__default__,
16
- __name: "LpThemeProvider",
17
- props: {
18
- theme: {},
19
- as: { default: "div" },
20
- transition: { type: Boolean, default: false }
21
- },
22
- setup(__props) {
23
- const props = __props;
24
- const { class: rootClass, attrs: rest } = useMergedAttrs("bg-surface text-ink");
25
- const root = ref(null);
26
- const shown = shallowRef(props.theme);
27
- const style = computed(() => ({
28
- ...Object.fromEntries(themeEntries(shown.value)),
29
- colorScheme: shown.value.mode
30
- }));
31
- function originOf() {
32
- if (lastPress && performance.now() - lastPress.at < PRESS_FRESH_MS) return lastPress;
33
- const value = root.value;
34
- const el = value instanceof HTMLElement ? value : value?.$el;
35
- const box = el?.getBoundingClientRect?.();
36
- return box ? { x: box.left + box.width / 2, y: box.top + box.height / 2 } : void 0;
37
- }
38
- watch(
39
- () => props.theme,
40
- (next) => {
41
- if (!props.transition) {
42
- shown.value = next;
43
- return;
44
- }
45
- revealTransition(async () => {
46
- shown.value = next;
47
- await nextTick();
48
- }, originOf());
49
- }
50
- );
51
- return (_ctx, _cache) => {
52
- return openBlock(), createBlock(resolveDynamicComponent(__props.as), mergeProps({
53
- ref_key: "root",
54
- ref: root,
55
- style: style.value,
56
- "data-theme-mode": shown.value.mode,
57
- class: unref(rootClass)
58
- }, unref(rest)), {
59
- default: withCtx(() => [
60
- renderSlot(_ctx.$slots, "default")
61
- ]),
62
- _: 3
63
- }, 16, ["style", "data-theme-mode", "class"]);
64
- };
65
- }
66
- });
67
- export {
68
- _sfc_main as _
69
- };
@@ -1,20 +0,0 @@
1
- import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, renderSlot } from "vue";
2
- const _hoisted_1 = { class: "flex flex-col gap-2" };
3
- const _hoisted_2 = { class: "text-[11px] font-medium tracking-wide text-muted uppercase" };
4
- const _sfc_main = /* @__PURE__ */ defineComponent({
5
- __name: "LpThemeStudioSection",
6
- props: {
7
- label: {}
8
- },
9
- setup(__props) {
10
- return (_ctx, _cache) => {
11
- return openBlock(), createElementBlock("div", _hoisted_1, [
12
- createElementVNode("span", _hoisted_2, toDisplayString(__props.label), 1),
13
- renderSlot(_ctx.$slots, "default")
14
- ]);
15
- };
16
- }
17
- });
18
- export {
19
- _sfc_main as _
20
- };