@leavepulse/ui 0.78.3 → 0.79.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 (223) hide show
  1. package/dist/chunks/{ContextMenuItems-DmaKSJVv.js → ContextMenuItems-DLK4q-mm.js} +1 -1
  2. package/dist/chunks/{DropzoneLinkField-CyE7TJ5f.js → DropzoneLinkField-CcJu8De3.js} +1 -1
  3. package/dist/chunks/{FieldLeading-mr81aEAP.js → FieldLeading-CldGLINn.js} +1 -1
  4. package/dist/chunks/{FieldWrapper-DnuMTrqW.js → FieldWrapper-Cj8ZgoKp.js} +1 -1
  5. package/dist/chunks/{IconCloseButton-COZEsa9u.js → IconCloseButton-CV4iHRpy.js} +1 -1
  6. package/dist/chunks/{LayoutCanvas-CZKOltfA.js → LayoutCanvas-BQbq7Ekw.js} +1 -1
  7. package/dist/chunks/{LayoutNode-D2f7v683.js → LayoutNode-BMedRk3g.js} +1 -1
  8. package/dist/chunks/{LpActionBar-BGMk5KoG.js → LpActionBar-C7g52Cyo.js} +1 -1
  9. package/dist/chunks/{LpAddressInput-ft8fQOGx.js → LpAddressInput-1uakhQk5.js} +7 -7
  10. package/dist/chunks/{LpAlert-CjvTZIKF.js → LpAlert-DWFeR82L.js} +1 -1
  11. package/dist/chunks/{LpAppShell-DRHoQtr-.js → LpAppShell-InIK01Nn.js} +4 -4
  12. package/dist/chunks/{LpAutocomplete-CrZbd0uv.js → LpAutocomplete-DY3LvpB9.js} +4 -4
  13. package/dist/chunks/{LpAvatar-cQVsNk6F.js → LpAvatar-CEZmMcGh.js} +1 -1
  14. package/dist/chunks/{LpBadge-D5QQdDQ_.js → LpBadge-C_VqLHtg.js} +1 -1
  15. package/dist/chunks/{LpBottomNav-zxLGGbjm.js → LpBottomNav-4I89sPDZ.js} +1 -1
  16. package/dist/chunks/{LpBreadcrumbs-CIIBsygI.js → LpBreadcrumbs-1BBzrfxG.js} +1 -1
  17. package/dist/chunks/{LpCalendar-D4-LVjfF.js → LpCalendar-D2dcXjUK.js} +1 -1
  18. package/dist/chunks/{LpCheckbox-CCWCwD0y.js → LpCheckbox-CN-MEnbX.js} +2 -2
  19. package/dist/chunks/{LpCodeBlock-DBqy4RLd.js → LpCodeBlock-Cj7zk4QE.js} +2 -2
  20. package/dist/chunks/{LpCodeDisplay-D59uPwRb.js → LpCodeDisplay-COzosm77.js} +4 -4
  21. package/dist/chunks/{LpColorPicker-BONURBFN.js → LpColorPicker-BezW6DX1.js} +3 -3
  22. package/dist/chunks/{LpConfirmDialog-CnrmzkuN.js → LpConfirmDialog-D9GkDMYr.js} +2 -2
  23. package/dist/chunks/{LpConfirmHost-CwbObVGH.js → LpConfirmHost-BH7kf0dm.js} +1 -1
  24. package/dist/chunks/{LpContextMenu-Bx_IhQDS.js → LpContextMenu-bn5bc9t7.js} +2 -2
  25. package/dist/chunks/{LpContextSwitcher-1C1tExdl.js → LpContextSwitcher-CGr6ZAuq.js} +2 -2
  26. package/dist/chunks/{LpCopyButton-sAMvWeLP.js → LpCopyButton-BSr6YaFR.js} +1 -1
  27. package/dist/chunks/{LpDataList-CaVfsozH.js → LpDataList-Cv7ZUlyy.js} +2 -2
  28. package/dist/chunks/{LpDatePicker-C2AOtxgF.js → LpDatePicker-CR7vsb5M.js} +5 -5
  29. package/dist/chunks/{LpDateRangePicker-CiXdIAyh.js → LpDateRangePicker-B9fRO3G6.js} +3 -3
  30. package/dist/chunks/{LpDisclosure-DG7JCo-d.js → LpDisclosure-CE4mneaE.js} +1 -1
  31. package/dist/chunks/{LpDrawer-DXNQFpAA.js → LpDrawer-DU_5MqBz.js} +1 -1
  32. package/dist/chunks/{LpDropdownMenu-CLzxIOgM.js → LpDropdownMenu-_u6GPWhp.js} +2 -2
  33. package/dist/chunks/{LpEditable-DVT0Rh8F.js → LpEditable-DYoMayjt.js} +2 -2
  34. package/dist/chunks/{LpEmptyState-DurPF001.js → LpEmptyState-DpdHeSfz.js} +1 -1
  35. package/dist/chunks/{LpFieldNotice-DJ10cYIo.js → LpFieldNotice-DONFCWV7.js} +1 -1
  36. package/dist/chunks/{LpFileTree-CpNurwZp.js → LpFileTree-f5ktGqsN.js} +4 -4
  37. package/dist/chunks/{LpFileTreeNode-DdF8Cq-s.js → LpFileTreeNode-nbp-JwV9.js} +4 -4
  38. package/dist/chunks/{LpFormField-BKYn9dyP.js → LpFormField-Bz50_LZW.js} +1 -1
  39. package/dist/chunks/{LpHintLayer-BeKRsRon.js → LpHintLayer-B6bA5Cb_.js} +1 -1
  40. package/dist/chunks/{LpHints-qf3xYsza.js → LpHints-DyJ5hVcr.js} +3 -3
  41. package/dist/chunks/{LpIcon-C6JpQ5td.js → LpIcon-BCQLuHSP.js} +1 -1
  42. package/dist/chunks/{LpInfraNode-Bb5nbuFY.js → LpInfraNode-BS1RXYAs.js} +2 -2
  43. package/dist/chunks/{LpInput-CbI7z5fQ.js → LpInput-BjbXdjcW.js} +3 -3
  44. package/dist/chunks/{LpInspector-DO3fTCQ1.js → LpInspector-BIyJyM6r.js} +4 -4
  45. package/dist/chunks/{LpLightbox-CtDTQV01.js → LpLightbox-CSAJuUaJ.js} +2 -2
  46. package/dist/chunks/{LpLogInspector-CcSJSGan.js → LpLogInspector-OJEz1vod.js} +2 -2
  47. package/dist/chunks/{LpLogViewer-CWu49Dko.js → LpLogViewer-CRLwQpk0.js} +6 -6
  48. package/dist/chunks/{LpMapPicker-D5_YLLBC.js → LpMapPicker-DW2EnrCJ.js} +1 -1
  49. package/dist/chunks/{LpMediaGallery-BYEwySoF.js → LpMediaGallery-BNEYctDP.js} +3 -3
  50. package/dist/chunks/{LpModal-DDvrSAnf.js → LpModal-DdTqdf4x.js} +1 -1
  51. package/dist/chunks/{LpModalNav-DI3BW5ff.js → LpModalNav-BL7Dp0om.js} +3 -3
  52. package/dist/chunks/LpNotificationBell-d0F6MWxD.js +163 -0
  53. package/dist/chunks/LpNotificationFeed-BIe5lapb.js +470 -0
  54. package/dist/chunks/{LpNumberField-C8LfUz_R.js → LpNumberField-D5Dx-hzD.js} +3 -3
  55. package/dist/chunks/{LpOtpInput-B1X9l9no.js → LpOtpInput-BVl74Lfl.js} +1 -1
  56. package/dist/chunks/{LpPagination-snQ020xQ.js → LpPagination-D0wb-Uru.js} +1 -1
  57. package/dist/chunks/{LpPaletteTheme-B-xuZiKK.js → LpPaletteTheme-DdilCBXA.js} +2 -2
  58. package/dist/chunks/{LpPasswordInput-Duc_3wPv.js → LpPasswordInput-DUtqWMkA.js} +2 -2
  59. package/dist/chunks/{LpPhoneInput-CctcRK9K.js → LpPhoneInput-CalRjkqc.js} +3 -3
  60. package/dist/chunks/{LpPie-oVNHjsKD.js → LpPie-BVAEmVBT.js} +2 -2
  61. package/dist/chunks/{LpPipeline-BSXT6oUJ.js → LpPipeline-Dk7_sRP1.js} +2 -2
  62. package/dist/chunks/{LpQuota-CgWPgdVt.js → LpQuota-DKx0IZYA.js} +1 -1
  63. package/dist/chunks/{LpRadioGroup-DTM0nd9G.js → LpRadioGroup-E3SP6j9h.js} +2 -2
  64. package/dist/chunks/{LpRangeCalendar-BrqlGZzE.js → LpRangeCalendar-BFJFaen4.js} +1 -1
  65. package/dist/chunks/{LpRangeSlider-DJsEZXad.js → LpRangeSlider-b6ipywRB.js} +1 -1
  66. package/dist/chunks/{LpRepeater-Czib3rmv.js → LpRepeater-BLrw62Bh.js} +2 -2
  67. package/dist/chunks/{LpSecretField-BtlCk3IH.js → LpSecretField-BV8BNjKc.js} +5 -5
  68. package/dist/chunks/{LpSection-BfteipxU.js → LpSection-CghNNxIv.js} +1 -1
  69. package/dist/chunks/{LpSegmented-sskrJKJJ.js → LpSegmented-DjvrHL_G.js} +2 -2
  70. package/dist/chunks/{LpSelect-JFZehOkd.js → LpSelect-DYPimzAZ.js} +4 -4
  71. package/dist/chunks/{LpSidebar-CvRvVBTt.js → LpSidebar-D3S8rYFf.js} +4 -4
  72. package/dist/chunks/{LpSidebarNav-CE0jQS8i.js → LpSidebarNav-Dlse8vxT.js} +3 -3
  73. package/dist/chunks/{LpSidebarRow-DOTg1txp.js → LpSidebarRow-Cqd_6tGG.js} +3 -3
  74. package/dist/chunks/{LpSlider-C4ilCtZX.js → LpSlider-B9XIC75O.js} +1 -1
  75. package/dist/chunks/{LpStat-DPjc6_fX.js → LpStat-kyLRmX-m.js} +2 -2
  76. package/dist/chunks/{LpStatus-DGJFwk5F.js → LpStatus-szB2dWzM.js} +1 -1
  77. package/dist/chunks/{LpStepMark-Dw2MRTrt.js → LpStepMark-DP3CDSm9.js} +1 -1
  78. package/dist/chunks/{LpStepper-DNnh7lCu.js → LpStepper-BS3iaJIz.js} +1 -1
  79. package/dist/chunks/{LpSwitch-DyAYTchz.js → LpSwitch-DRFy8RNr.js} +1 -1
  80. package/dist/chunks/{LpTabFace-DQoV8mQG.js → LpTabFace-C9-OperL.js} +2 -2
  81. package/dist/chunks/{LpTableFilter-CJg5eIcV.js → LpTableFilter-CEIwLupk.js} +2 -2
  82. package/dist/chunks/{LpTagsInput-CkNxpNYa.js → LpTagsInput-ClDeF_aU.js} +5 -5
  83. package/dist/chunks/{LpTextarea-CFK_5QB8.js → LpTextarea-DEY6pUBy.js} +1 -1
  84. package/dist/chunks/{LpThemeStudio-R-wohbCY.js → LpThemeStudio-WY72Z1Db.js} +5 -5
  85. package/dist/chunks/{LpThemeSwitcher-Bzy15MCP.js → LpThemeSwitcher-9uCH9c-K.js} +3 -3
  86. package/dist/chunks/{LpTimeField-B5n0m8m0.js → LpTimeField-BmgxCzQO.js} +2 -2
  87. package/dist/chunks/{LpToaster-Ct_ZOhCh.js → LpToaster-DLKO-efn.js} +2 -2
  88. package/dist/chunks/{LpTopologyCanvas-BNgw9RyZ.js → LpTopologyCanvas-B-PhPa7k.js} +4 -4
  89. package/dist/chunks/{LpTour-ClKYhx4h.js → LpTour-ODlBcat2.js} +1 -1
  90. package/dist/chunks/{LpTruncate-ellq9RYM.js → LpTruncate--nhT0iUo.js} +1 -1
  91. package/dist/chunks/{LpWindow-B8YSRVTH.js → LpWindow-DJxE8Zl-.js} +2 -2
  92. package/dist/chunks/{LpWorkspaceSwitcher-ugv-fyig.js → LpWorkspaceSwitcher-Bpf41Bw5.js} +3 -3
  93. package/dist/chunks/{MenuTitle-Bh5dAdV1.js → MenuTitle-CMjvLsvC.js} +1 -1
  94. package/dist/chunks/{OptionContent-CGb8QlHA.js → OptionContent-DY8NaG8s.js} +1 -1
  95. package/dist/chunks/{PickerField-BM1dyafh.js → PickerField-CgfkaBgg.js} +1 -1
  96. package/dist/chunks/{RevealToggle-D_iyrB8d.js → RevealToggle-CPMXxaKv.js} +1 -1
  97. package/dist/chunks/{TourCard-DAzTYfav.js → TourCard-D4b3lMHi.js} +1 -1
  98. package/dist/chunks/icons-C1vppR4f.js +59 -0
  99. package/dist/component-names.d.ts +1 -1
  100. package/dist/components/ContextMenuItems.vue.js +1 -1
  101. package/dist/components/DropzoneLinkField.vue.js +1 -1
  102. package/dist/components/FieldLeading.vue.js +1 -1
  103. package/dist/components/FieldWrapper.vue.js +1 -1
  104. package/dist/components/IconCloseButton.vue.js +1 -1
  105. package/dist/components/LayoutCanvas.vue.js +1 -1
  106. package/dist/components/LayoutNode.vue.js +1 -1
  107. package/dist/components/LpActionBar.vue.js +1 -1
  108. package/dist/components/LpAddressInput.vue.js +1 -1
  109. package/dist/components/LpAlert.vue.js +1 -1
  110. package/dist/components/LpAppShell.vue.js +1 -1
  111. package/dist/components/LpAutocomplete.vue.js +1 -1
  112. package/dist/components/LpAvatar.vue.js +1 -1
  113. package/dist/components/LpBadge.vue.js +1 -1
  114. package/dist/components/LpBottomNav.vue.js +1 -1
  115. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  116. package/dist/components/LpCalendar.vue.js +1 -1
  117. package/dist/components/LpChart.vue.js +2 -2
  118. package/dist/components/LpCheckbox.vue.js +1 -1
  119. package/dist/components/LpCodeBlock.vue.js +1 -1
  120. package/dist/components/LpCodeDisplay.vue.js +1 -1
  121. package/dist/components/LpColorPicker.vue.js +1 -1
  122. package/dist/components/LpCommandPalette.vue.js +2 -2
  123. package/dist/components/LpConfirmDialog.vue.js +1 -1
  124. package/dist/components/LpConfirmHost.vue.js +1 -1
  125. package/dist/components/LpContextMenu.vue.js +1 -1
  126. package/dist/components/LpContextSwitcher.vue.js +1 -1
  127. package/dist/components/LpCopyButton.vue.js +1 -1
  128. package/dist/components/LpDataList.vue.js +1 -1
  129. package/dist/components/LpDatePicker.vue.js +1 -1
  130. package/dist/components/LpDateRangePicker.vue.js +1 -1
  131. package/dist/components/LpDisclosure.vue.js +1 -1
  132. package/dist/components/LpDock.vue.js +1 -1
  133. package/dist/components/LpDrawer.vue.js +1 -1
  134. package/dist/components/LpDropdownMenu.vue.js +1 -1
  135. package/dist/components/LpDropzone.vue.js +2 -2
  136. package/dist/components/LpEditable.vue.js +1 -1
  137. package/dist/components/LpEmptyState.vue.js +1 -1
  138. package/dist/components/LpFieldNotice.vue.js +1 -1
  139. package/dist/components/LpFileTree.vue.js +1 -1
  140. package/dist/components/LpFileTreeNode.vue.js +1 -1
  141. package/dist/components/LpFormField.vue.js +1 -1
  142. package/dist/components/LpHintLayer.vue.js +1 -1
  143. package/dist/components/LpHints.vue.js +1 -1
  144. package/dist/components/LpIcon.vue.js +1 -1
  145. package/dist/components/LpImageEditor.vue.js +1 -1
  146. package/dist/components/LpInfraNode.vue.js +1 -1
  147. package/dist/components/LpInput.vue.js +1 -1
  148. package/dist/components/LpInspector.vue.js +1 -1
  149. package/dist/components/LpLightbox.vue.js +1 -1
  150. package/dist/components/LpLogInspector.vue.js +1 -1
  151. package/dist/components/LpLogViewer.vue.js +1 -1
  152. package/dist/components/LpMapPicker.vue.js +1 -1
  153. package/dist/components/LpMediaGallery.vue.js +1 -1
  154. package/dist/components/LpModal.vue.js +1 -1
  155. package/dist/components/LpModalNav.vue.js +1 -1
  156. package/dist/components/LpNotificationBell.vue.d.ts +28 -64
  157. package/dist/components/LpNotificationBell.vue.js +1 -1
  158. package/dist/components/LpNotificationFeed.vue.d.ts +78 -0
  159. package/dist/components/LpNotificationFeed.vue.js +4 -0
  160. package/dist/components/LpNumberField.vue.js +1 -1
  161. package/dist/components/LpOtpInput.vue.js +1 -1
  162. package/dist/components/LpPagination.vue.js +1 -1
  163. package/dist/components/LpPaletteFacts.vue.js +1 -1
  164. package/dist/components/LpPaletteHeader.vue.js +2 -2
  165. package/dist/components/LpPaletteTheme.vue.js +1 -1
  166. package/dist/components/LpPasswordInput.vue.js +1 -1
  167. package/dist/components/LpPhoneInput.vue.js +1 -1
  168. package/dist/components/LpPie.vue.js +1 -1
  169. package/dist/components/LpPipeline.vue.js +1 -1
  170. package/dist/components/LpQuota.vue.js +1 -1
  171. package/dist/components/LpRadioGroup.vue.js +1 -1
  172. package/dist/components/LpRangeCalendar.vue.js +1 -1
  173. package/dist/components/LpRangeSlider.vue.js +1 -1
  174. package/dist/components/LpRepeater.vue.js +1 -1
  175. package/dist/components/LpSecretField.vue.js +1 -1
  176. package/dist/components/LpSection.vue.js +1 -1
  177. package/dist/components/LpSegmented.vue.js +1 -1
  178. package/dist/components/LpSelect.vue.js +1 -1
  179. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  180. package/dist/components/LpSidebar.vue.js +1 -1
  181. package/dist/components/LpSidebarNav.vue.js +1 -1
  182. package/dist/components/LpSidebarRow.vue.js +1 -1
  183. package/dist/components/LpSlider.vue.js +1 -1
  184. package/dist/components/LpStat.vue.js +1 -1
  185. package/dist/components/LpStatus.vue.js +1 -1
  186. package/dist/components/LpStepMark.vue.js +1 -1
  187. package/dist/components/LpStepper.vue.js +1 -1
  188. package/dist/components/LpSwitch.vue.js +1 -1
  189. package/dist/components/LpTabFace.vue.js +1 -1
  190. package/dist/components/LpTable.vue.js +9 -9
  191. package/dist/components/LpTableFilter.vue.js +1 -1
  192. package/dist/components/LpTabs.vue.js +2 -2
  193. package/dist/components/LpTagsInput.vue.js +1 -1
  194. package/dist/components/LpTextarea.vue.js +1 -1
  195. package/dist/components/LpThemeStudio.vue.js +1 -1
  196. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  197. package/dist/components/LpTimeField.vue.js +1 -1
  198. package/dist/components/LpToaster.vue.js +1 -1
  199. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  200. package/dist/components/LpTour.vue.js +1 -1
  201. package/dist/components/LpTruncate.vue.js +1 -1
  202. package/dist/components/LpWindow.vue.js +1 -1
  203. package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
  204. package/dist/components/MenuTitle.vue.js +1 -1
  205. package/dist/components/OptionContent.vue.js +1 -1
  206. package/dist/components/PickerField.vue.js +1 -1
  207. package/dist/components/RevealToggle.vue.js +1 -1
  208. package/dist/components/TourCard.vue.js +1 -1
  209. package/dist/components/menuWhen.js +1 -1
  210. package/dist/components/notifications.d.ts +156 -0
  211. package/dist/components/notifications.js +59 -0
  212. package/dist/icons-all.js +1 -1
  213. package/dist/index.d.ts +2 -1
  214. package/dist/index.js +208 -206
  215. package/package.json +1 -1
  216. package/src/component-names.ts +1 -0
  217. package/src/components/LpNotificationBell.vue +105 -279
  218. package/src/components/LpNotificationFeed.vue +404 -0
  219. package/src/components/notifications.ts +197 -0
  220. package/src/index.ts +6 -1
  221. package/src/kit-icons.ts +1 -1
  222. package/dist/chunks/LpNotificationBell-DUbVyK6R.js +0 -311
  223. package/dist/chunks/icons-CYfcpSDS.js +0 -59
@@ -0,0 +1,470 @@
1
+ import { defineComponent, useModel, computed, getCurrentInstance, ref, openBlock, createElementBlock, createElementVNode, toDisplayString, createCommentVNode, createBlock, withCtx, normalizeClass, createVNode, Fragment, renderList, resolveDynamicComponent, normalizeProps, mergeProps, unref, createTextVNode, renderSlot, mergeModels } from "vue";
2
+ import { useLabels } from "../composables/useLpConfig.js";
3
+ import { useNow } from "../composables/useNow.js";
4
+ import { isHTMLElement } from "../composables/realm.js";
5
+ import { _ as _sfc_main$8 } from "./LpAvatar-CEZmMcGh.js";
6
+ import { _ as _sfc_main$a } from "./LpButton-DSHioIfD.js";
7
+ import { _ as _sfc_main$7 } from "./LpContextMenu-bn5bc9t7.js";
8
+ import { _ as _sfc_main$5 } from "./LpEmptyState-DpdHeSfz.js";
9
+ import { _ as _sfc_main$2 } from "./LpIcon-BCQLuHSP.js";
10
+ import { _ as _sfc_main$9 } from "./LpRelativeTime-0zI-44ve.js";
11
+ import { _ as _sfc_main$6 } from "./LpScrollArea-CqvwfZs2.js";
12
+ import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
13
+ import { _ as _sfc_main$4 } from "./LpSkeleton-BB6XIV-w.js";
14
+ import LpTabs from "../components/LpTabs.vue.js";
15
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bz_rrq5S.js";
16
+ import { NOTIFICATION_LABELS, groupByDay, untilMidnight } from "../components/notifications.js";
17
+ import { toneLook } from "../components/tone.js";
18
+ const _hoisted_1 = ["aria-label"];
19
+ const _hoisted_2 = { class: "flex flex-col gap-1.5 px-3 pt-2.5" };
20
+ const _hoisted_3 = {
21
+ key: 0,
22
+ class: "flex min-h-7 items-center justify-between gap-2"
23
+ };
24
+ const _hoisted_4 = { class: "text-sm font-semibold text-ink" };
25
+ const _hoisted_5 = { class: "flex items-center gap-0.5" };
26
+ const _hoisted_6 = {
27
+ key: 0,
28
+ class: "space-y-1 p-2"
29
+ };
30
+ const _hoisted_7 = { class: "flex-1 space-y-1.5" };
31
+ const _hoisted_8 = ["aria-label"];
32
+ const _hoisted_9 = {
33
+ key: 0,
34
+ class: "px-4 pb-1 pt-2.5 text-[11px] font-medium uppercase tracking-wide text-muted"
35
+ };
36
+ const _hoisted_10 = { class: "flex flex-col gap-px px-1.5" };
37
+ const _hoisted_11 = ["data-lp-notification", "data-read"];
38
+ const _hoisted_12 = { class: "relative mt-0.5 flex shrink-0 self-start" };
39
+ const _hoisted_13 = { class: "min-w-0 flex-1" };
40
+ const _hoisted_14 = { class: "flex items-baseline gap-2" };
41
+ const _hoisted_15 = {
42
+ key: 0,
43
+ class: "sr-only"
44
+ };
45
+ const _hoisted_16 = {
46
+ key: 0,
47
+ class: "shrink-0 text-[11px] text-muted transition-opacity group-focus-within/notif:opacity-0 group-hover/notif:opacity-0 [@media(hover:none)]:opacity-100!"
48
+ };
49
+ const _hoisted_17 = {
50
+ key: 1,
51
+ "aria-hidden": "true",
52
+ class: "size-2 shrink-0 self-center rounded-full bg-brand"
53
+ };
54
+ const _hoisted_18 = {
55
+ key: 0,
56
+ class: "mt-0.5 line-clamp-2 text-xs leading-relaxed text-muted"
57
+ };
58
+ const _hoisted_19 = {
59
+ key: 1,
60
+ class: "mt-1.5 flex items-center gap-1 text-xs font-medium text-muted-strong"
61
+ };
62
+ const _hoisted_20 = ["aria-label"];
63
+ const _hoisted_21 = { class: "absolute right-2 top-1.5 z-1 flex gap-0.5 rounded-inner bg-surface-soft opacity-0 transition-opacity group-focus-within/notif:opacity-100 group-hover/notif:opacity-100 [@media(hover:none)]:static [@media(hover:none)]:self-start [@media(hover:none)]:bg-transparent [@media(hover:none)]:opacity-100" };
64
+ const _hoisted_22 = ["onClick"];
65
+ const _hoisted_23 = ["onClick"];
66
+ const _hoisted_24 = {
67
+ key: 0,
68
+ class: "px-3 pb-1 pt-2"
69
+ };
70
+ const _hoisted_25 = {
71
+ key: 0,
72
+ class: "border-t border-line px-2 py-1.5"
73
+ };
74
+ const _hoisted_26 = ["href"];
75
+ const QUICK = "relative z-1 grid size-7 place-items-center rounded-inner text-muted outline-none transition-colors hover:bg-ink/[0.07] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring";
76
+ const _sfc_main = /* @__PURE__ */ defineComponent({
77
+ __name: "LpNotificationFeed",
78
+ props: /* @__PURE__ */ mergeModels({
79
+ items: { default: () => [] },
80
+ unreadCount: {},
81
+ loading: { type: Boolean },
82
+ hasMore: { type: Boolean },
83
+ loadingMore: { type: Boolean },
84
+ title: {},
85
+ emptyLabel: {},
86
+ categories: {},
87
+ groupByDay: { type: Boolean, default: true },
88
+ hideTitle: { type: Boolean },
89
+ allLink: {},
90
+ maxHeight: { type: [String, Boolean], default: "min(28rem, 70dvh)" },
91
+ itemMenu: {},
92
+ labels: {},
93
+ formatTime: {}
94
+ }, {
95
+ "filter": { default: "all" },
96
+ "filterModifiers": {}
97
+ }),
98
+ emits: /* @__PURE__ */ mergeModels(["markRead", "markUnread", "markAllRead", "clear", "dismiss", "select", "action", "settings", "loadMore"], ["update:filter"]),
99
+ setup(__props, { emit: __emit }) {
100
+ const props = __props;
101
+ const filter = useModel(__props, "filter");
102
+ const emit = __emit;
103
+ const text = useLabels("notifications", NOTIFICATION_LABELS, () => props.labels);
104
+ const l = computed(() => ({
105
+ ...text.value,
106
+ title: props.title ?? text.value.title,
107
+ empty: props.emptyLabel ?? text.value.empty
108
+ }));
109
+ const instance = getCurrentInstance();
110
+ const handles = (name) => Boolean(instance?.vnode.props?.[name]);
111
+ const handlesClear = computed(() => handles("onClear"));
112
+ const handlesSettings = computed(() => handles("onSettings"));
113
+ const unread = computed(() => props.unreadCount ?? props.items.filter((n) => !n.read).length);
114
+ const hasUnread = computed(() => unread.value > 0);
115
+ const tabs = computed(() => [
116
+ { value: "all", label: l.value.all },
117
+ { value: "unread", label: l.value.unreadTab, badge: unread.value || void 0 },
118
+ ...(props.categories ?? []).map((c) => ({ value: c.value, label: c.label, icon: c.icon }))
119
+ ]);
120
+ const shown = computed(() => {
121
+ const f = filter.value;
122
+ if (f === "all") return props.items;
123
+ if (f === "unread") return props.items.filter((n) => !n.read);
124
+ return props.items.filter((n) => n.category === f);
125
+ });
126
+ const now = useNow(() => props.groupByDay, { nextIn: untilMidnight });
127
+ const groups = computed(() => groupByDay(shown.value, now.value, props.groupByDay));
128
+ const emptyTitle = computed(() => filter.value === "unread" && props.items.length ? l.value.emptyUnread : l.value.empty);
129
+ function select(item) {
130
+ if (!item.read) emit("markRead", item.id);
131
+ emit("select", item);
132
+ }
133
+ function toggleRead(item) {
134
+ if (item.read) emit("markUnread", item.id);
135
+ else emit("markRead", item.id);
136
+ }
137
+ const pending = ref({});
138
+ const busy = (item) => pending.value[item.id] !== void 0;
139
+ async function runAction(item, action, index) {
140
+ if (busy(item)) return;
141
+ if (!item.read) emit("markRead", item.id);
142
+ const result = action.onSelect?.(item);
143
+ emit("action", item, action);
144
+ if (typeof result?.then !== "function") return;
145
+ pending.value = { ...pending.value, [item.id]: index };
146
+ try {
147
+ await result;
148
+ } finally {
149
+ const { [item.id]: _, ...rest } = pending.value;
150
+ pending.value = rest;
151
+ }
152
+ }
153
+ const ACTION_VARIANT = { primary: "solid", secondary: "soft", danger: "danger" };
154
+ function rowMenu(item) {
155
+ const actions = [
156
+ item.read ? { label: l.value.markAsUnread, icon: "lucide:mail", onSelect: () => emit("markUnread", item.id) } : { label: l.value.markAsRead, icon: "lucide:check", onSelect: () => emit("markRead", item.id) }
157
+ ];
158
+ if (item.link) actions.push({ label: l.value.open, icon: "lucide:external-link", onSelect: () => select(item) });
159
+ const extra = props.itemMenu?.(item) ?? [];
160
+ if (extra.length) actions.push({ ...extra[0], separatorBefore: true }, ...extra.slice(1));
161
+ actions.push({ label: l.value.dismiss, icon: "lucide:x", danger: true, separatorBefore: true, onSelect: () => emit("dismiss", item.id) });
162
+ return actions;
163
+ }
164
+ const customNow = useNow(() => !!props.formatTime, { nextIn: () => 3e4 });
165
+ function customTime(iso) {
166
+ void customNow.value;
167
+ return props.formatTime ? props.formatTime(iso) : "";
168
+ }
169
+ const listEl = ref(null);
170
+ function onListKeydown(event) {
171
+ const target = event.target;
172
+ if (!isHTMLElement(target) || !target.matches("[data-lp-notification-main]")) return;
173
+ const rows = [...listEl.value?.querySelectorAll("[data-lp-notification-main]") ?? []];
174
+ const at = rows.indexOf(target);
175
+ const to = event.key === "ArrowDown" ? Math.min(rows.length - 1, at + 1) : event.key === "ArrowUp" ? Math.max(0, at - 1) : event.key === "Home" ? 0 : event.key === "End" ? rows.length - 1 : -1;
176
+ if (to >= 0) {
177
+ event.preventDefault();
178
+ rows[to]?.focus();
179
+ return;
180
+ }
181
+ if (event.key === "Delete") {
182
+ const id = target.dataset.lpNotificationMain;
183
+ if (!id) return;
184
+ event.preventDefault();
185
+ (rows[at + 1] ?? rows[at - 1])?.focus();
186
+ emit("dismiss", id);
187
+ }
188
+ }
189
+ return (_ctx, _cache) => {
190
+ return openBlock(), createElementBlock("section", {
191
+ class: "flex min-w-0 flex-col",
192
+ "aria-label": l.value.title
193
+ }, [
194
+ createElementVNode("header", _hoisted_2, [
195
+ !__props.hideTitle ? (openBlock(), createElementBlock("div", _hoisted_3, [
196
+ createElementVNode("h2", _hoisted_4, toDisplayString(l.value.title), 1),
197
+ createElementVNode("span", _hoisted_5, [
198
+ hasUnread.value ? (openBlock(), createElementBlock("button", {
199
+ key: 0,
200
+ type: "button",
201
+ class: "rounded-inner px-1.5 py-1 text-xs font-medium text-brand outline-none transition-colors hover:bg-brand-soft focus-visible:ring-2 focus-visible:ring-ring",
202
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("markAllRead"))
203
+ }, toDisplayString(l.value.markAllRead), 1)) : createCommentVNode("", true),
204
+ __props.items.length && handlesClear.value ? (openBlock(), createBlock(_sfc_main$1, {
205
+ key: 1,
206
+ content: l.value.clear,
207
+ label: ""
208
+ }, {
209
+ default: withCtx(() => [
210
+ createElementVNode("button", {
211
+ type: "button",
212
+ class: normalizeClass(QUICK),
213
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("clear"))
214
+ }, [
215
+ createVNode(_sfc_main$2, {
216
+ name: "lucide:trash-2",
217
+ size: 15
218
+ })
219
+ ])
220
+ ]),
221
+ _: 1
222
+ }, 8, ["content"])) : createCommentVNode("", true),
223
+ handlesSettings.value ? (openBlock(), createBlock(_sfc_main$1, {
224
+ key: 2,
225
+ content: l.value.settings,
226
+ label: ""
227
+ }, {
228
+ default: withCtx(() => [
229
+ createElementVNode("button", {
230
+ type: "button",
231
+ class: normalizeClass(QUICK),
232
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("settings"))
233
+ }, [
234
+ createVNode(_sfc_main$2, {
235
+ name: "lucide:settings",
236
+ size: 15
237
+ })
238
+ ])
239
+ ]),
240
+ _: 1
241
+ }, 8, ["content"])) : createCommentVNode("", true)
242
+ ])
243
+ ])) : createCommentVNode("", true),
244
+ createVNode(LpTabs, {
245
+ modelValue: filter.value,
246
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => filter.value = $event),
247
+ items: tabs.value,
248
+ variant: "underline",
249
+ "hover-follow": false,
250
+ label: l.value.title,
251
+ class: "-mx-1"
252
+ }, null, 8, ["modelValue", "items", "label"])
253
+ ]),
254
+ createVNode(_sfc_main$3, { axis: "height" }, {
255
+ default: withCtx(() => [
256
+ __props.loading ? (openBlock(), createElementBlock("div", _hoisted_6, [
257
+ (openBlock(), createElementBlock(Fragment, null, renderList(4, (i) => {
258
+ return createElementVNode("div", {
259
+ key: i,
260
+ class: "flex gap-3 px-2 py-2"
261
+ }, [
262
+ createVNode(_sfc_main$4, { class: "size-8 rounded-full" }),
263
+ createElementVNode("div", _hoisted_7, [
264
+ createVNode(_sfc_main$4, { class: "h-3.5 w-2/3" }),
265
+ createVNode(_sfc_main$4, { class: "h-3 w-full" })
266
+ ])
267
+ ]);
268
+ }), 64))
269
+ ])) : !shown.value.length ? (openBlock(), createBlock(_sfc_main$5, {
270
+ key: 1,
271
+ icon: filter.value === "unread" && __props.items.length ? "lucide:check-check" : "lucide:bell-off",
272
+ title: emptyTitle.value,
273
+ class: "px-3 py-10"
274
+ }, null, 8, ["icon", "title"])) : (openBlock(), createBlock(resolveDynamicComponent(__props.maxHeight === false ? "div" : _sfc_main$6), normalizeProps(mergeProps({ key: 2 }, __props.maxHeight === false ? {} : { style: { maxHeight: __props.maxHeight }, contentClass: "py-1" })), {
275
+ default: withCtx(() => [
276
+ createElementVNode("div", {
277
+ ref_key: "listEl",
278
+ ref: listEl,
279
+ onKeydown: onListKeydown
280
+ }, [
281
+ (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
282
+ return openBlock(), createElementBlock("section", {
283
+ key: group.key,
284
+ "aria-label": group.day ? l.value[group.day] : void 0
285
+ }, [
286
+ group.day ? (openBlock(), createElementBlock("h3", _hoisted_9, toDisplayString(l.value[group.day]), 1)) : createCommentVNode("", true),
287
+ createElementVNode("ul", _hoisted_10, [
288
+ (openBlock(true), createElementBlock(Fragment, null, renderList(group.items, (item) => {
289
+ return openBlock(), createBlock(_sfc_main$7, {
290
+ key: item.id,
291
+ items: rowMenu(item)
292
+ }, {
293
+ default: withCtx(() => [
294
+ createElementVNode("li", {
295
+ class: normalizeClass(["group/notif relative flex gap-3 rounded-control px-2.5 py-2.5 transition-colors hover:bg-surface-soft focus-within:bg-surface-soft", item.read ? "" : "bg-brand-soft/30"]),
296
+ "data-lp-notification": item.id,
297
+ "data-read": item.read ? "" : void 0
298
+ }, [
299
+ createElementVNode("span", _hoisted_12, [
300
+ item.actor ? (openBlock(), createBlock(_sfc_main$8, {
301
+ key: 0,
302
+ src: item.actor.avatar,
303
+ alt: item.actor.name,
304
+ size: "sm"
305
+ }, null, 8, ["src", "alt"])) : createCommentVNode("", true),
306
+ !item.actor || item.icon ? (openBlock(), createElementBlock("span", {
307
+ key: 1,
308
+ class: normalizeClass(["grid place-items-center", [
309
+ item.actor ? "absolute -bottom-1 -right-1.5 size-3.5 rounded-full ring-2 ring-surface-overlay" : "size-7 rounded-control",
310
+ item.read ? "bg-surface-soft text-muted" : unref(toneLook)(item.tone, "brand").chip
311
+ ]])
312
+ }, [
313
+ createVNode(_sfc_main$2, {
314
+ name: item.icon || "lucide:bell",
315
+ size: item.actor ? 9 : 15
316
+ }, null, 8, ["name", "size"])
317
+ ], 2)) : createCommentVNode("", true)
318
+ ]),
319
+ createElementVNode("div", _hoisted_13, [
320
+ createElementVNode("div", _hoisted_14, [
321
+ (openBlock(), createBlock(resolveDynamicComponent(item.link ? "a" : "button"), {
322
+ href: item.link || void 0,
323
+ type: item.link ? void 0 : "button",
324
+ "data-lp-notification-main": item.id,
325
+ class: normalizeClass(["min-w-0 flex-1 truncate text-left text-sm outline-none after:absolute after:inset-0 after:rounded-control focus-visible:after:ring-2 focus-visible:after:ring-ring", item.read ? "font-normal text-muted-strong" : "font-semibold text-ink"]),
326
+ onClick: ($event) => select(item)
327
+ }, {
328
+ default: withCtx(() => [
329
+ !item.read ? (openBlock(), createElementBlock("span", _hoisted_15, toDisplayString(l.value.unreadItem) + ": ", 1)) : createCommentVNode("", true),
330
+ createTextVNode(toDisplayString(item.title), 1)
331
+ ]),
332
+ _: 2
333
+ }, 1032, ["href", "type", "data-lp-notification-main", "class", "onClick"])),
334
+ item.createdAt ? (openBlock(), createElementBlock("span", _hoisted_16, [
335
+ __props.formatTime ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
336
+ createTextVNode(toDisplayString(customTime(item.createdAt)), 1)
337
+ ], 64)) : (openBlock(), createBlock(_sfc_main$9, {
338
+ key: 1,
339
+ date: item.createdAt,
340
+ format: "narrow",
341
+ tooltip: false
342
+ }, null, 8, ["date"]))
343
+ ])) : createCommentVNode("", true),
344
+ !item.read ? (openBlock(), createElementBlock("span", _hoisted_17)) : createCommentVNode("", true)
345
+ ]),
346
+ item.body ? (openBlock(), createElementBlock("p", _hoisted_18, toDisplayString(item.body), 1)) : createCommentVNode("", true),
347
+ item.outcome ? (openBlock(), createElementBlock("p", _hoisted_19, [
348
+ createVNode(_sfc_main$2, {
349
+ name: "lucide:check",
350
+ size: 13
351
+ }),
352
+ createTextVNode(toDisplayString(item.outcome), 1)
353
+ ])) : item.actions?.length ? (openBlock(), createElementBlock("div", {
354
+ key: 2,
355
+ role: "group",
356
+ "aria-label": l.value.actions,
357
+ class: "relative z-1 mt-2 flex flex-wrap gap-1.5"
358
+ }, [
359
+ (openBlock(true), createElementBlock(Fragment, null, renderList(item.actions, (action, i) => {
360
+ return openBlock(), createBlock(_sfc_main$a, {
361
+ key: action.label,
362
+ size: "xs",
363
+ class: "h-7",
364
+ variant: ACTION_VARIANT[action.variant ?? "secondary"],
365
+ href: action.href,
366
+ loading: pending.value[item.id] === i,
367
+ disabled: busy(item) && pending.value[item.id] !== i,
368
+ onClick: ($event) => runAction(item, action, i)
369
+ }, {
370
+ default: withCtx(() => [
371
+ action.icon ? (openBlock(), createBlock(_sfc_main$2, {
372
+ key: 0,
373
+ name: action.icon,
374
+ size: 13
375
+ }, null, 8, ["name"])) : createCommentVNode("", true),
376
+ createTextVNode(toDisplayString(action.label), 1)
377
+ ]),
378
+ _: 2
379
+ }, 1032, ["variant", "href", "loading", "disabled", "onClick"]);
380
+ }), 128))
381
+ ], 8, _hoisted_20)) : createCommentVNode("", true)
382
+ ]),
383
+ createElementVNode("span", _hoisted_21, [
384
+ createVNode(_sfc_main$1, {
385
+ content: item.read ? l.value.markAsUnread : l.value.markAsRead,
386
+ label: ""
387
+ }, {
388
+ default: withCtx(() => [
389
+ createElementVNode("button", {
390
+ type: "button",
391
+ class: normalizeClass(QUICK),
392
+ onClick: ($event) => toggleRead(item)
393
+ }, [
394
+ createVNode(_sfc_main$2, {
395
+ name: item.read ? "lucide:mail" : "lucide:check",
396
+ size: 15
397
+ }, null, 8, ["name"])
398
+ ], 8, _hoisted_22)
399
+ ]),
400
+ _: 2
401
+ }, 1032, ["content"]),
402
+ createVNode(_sfc_main$1, {
403
+ content: l.value.dismiss,
404
+ label: ""
405
+ }, {
406
+ default: withCtx(() => [
407
+ createElementVNode("button", {
408
+ type: "button",
409
+ class: normalizeClass(QUICK),
410
+ onClick: ($event) => emit("dismiss", item.id)
411
+ }, [
412
+ createVNode(_sfc_main$2, {
413
+ name: "lucide:x",
414
+ size: 15
415
+ })
416
+ ], 8, _hoisted_23)
417
+ ]),
418
+ _: 2
419
+ }, 1032, ["content"])
420
+ ])
421
+ ], 10, _hoisted_11)
422
+ ]),
423
+ _: 2
424
+ }, 1032, ["items"]);
425
+ }), 128))
426
+ ])
427
+ ], 8, _hoisted_8);
428
+ }), 128)),
429
+ __props.hasMore ? (openBlock(), createElementBlock("div", _hoisted_24, [
430
+ createVNode(_sfc_main$a, {
431
+ variant: "muted",
432
+ size: "sm",
433
+ block: "",
434
+ loading: __props.loadingMore,
435
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("loadMore"))
436
+ }, {
437
+ default: withCtx(() => [
438
+ createTextVNode(toDisplayString(l.value.loadMore), 1)
439
+ ]),
440
+ _: 1
441
+ }, 8, ["loading"])
442
+ ])) : createCommentVNode("", true)
443
+ ], 544)
444
+ ]),
445
+ _: 1
446
+ }, 16))
447
+ ]),
448
+ _: 1
449
+ }),
450
+ __props.allLink || _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_25, [
451
+ renderSlot(_ctx.$slots, "footer", {}, () => [
452
+ createElementVNode("a", {
453
+ href: __props.allLink,
454
+ class: "flex items-center justify-center gap-1 rounded-inner py-1.5 text-xs font-medium text-brand outline-none transition-colors hover:bg-brand-soft focus-visible:ring-2 focus-visible:ring-ring"
455
+ }, [
456
+ createTextVNode(toDisplayString(l.value.viewAll), 1),
457
+ createVNode(_sfc_main$2, {
458
+ name: "lucide:arrow-right",
459
+ size: 13
460
+ })
461
+ ], 8, _hoisted_26)
462
+ ])
463
+ ])) : createCommentVNode("", true)
464
+ ], 8, _hoisted_1);
465
+ };
466
+ }
467
+ });
468
+ export {
469
+ _sfc_main as _
470
+ };
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, useId, useAttrs, computed, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, normalizeStyle, normalizeClass, createSlots, renderSlot, createCommentVNode, mergeProps, createElementBlock, toDisplayString } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { CONTROL_SIZE } from "../components/controlSize.js";
4
4
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
5
5
  import { NumberFieldRoot, NumberFieldDecrement, NumberFieldInput, NumberFieldIncrement } from "reka-ui";
6
- import { _ as _sfc_main$2 } from "./FieldLeading-mr81aEAP.js";
7
- import { _ as _sfc_main$3 } from "./LpIcon-C6JpQ5td.js";
6
+ import { _ as _sfc_main$2 } from "./FieldLeading-CldGLINn.js";
7
+ import { _ as _sfc_main$3 } from "./LpIcon-BCQLuHSP.js";
8
8
  import { useOwnField, mergeDescribedBy, focusLeft } from "../composables/useField.js";
9
9
  import { useLabels } from "../composables/useLpConfig.js";
10
10
  import { useMergedClass } from "../composables/useMergedClass.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, mergeProps, createElementBlock, Fragment, renderList, normalizeClass, createCommentVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { PinInputRoot, PinInputInput } from "reka-ui";
4
4
  import { useOwnField, mergeDescribedBy } from "../composables/useField.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
@@ -3,7 +3,7 @@ import { nodeWindow } from "../composables/realm.js";
3
3
  import { clamp } from "../composables/clamp.js";
4
4
  import { Motion } from "motion-v";
5
5
  import { usePillTransition } from "../composables/usePillTransition.js";
6
- import { _ as _sfc_main$1 } from "./LpIcon-C6JpQ5td.js";
6
+ import { _ as _sfc_main$1 } from "./LpIcon-BCQLuHSP.js";
7
7
  import { useMergedAttrs } from "../composables/useMergedClass.js";
8
8
  import { useLabels } from "../composables/useLpConfig.js";
9
9
  import { useResizeObserver } from "../composables/useResizeObserver.js";
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode, toDisplayString, unref } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { suppressPaletteDiscovery } from "../composables/usePaletteCommands.js";
4
- import { _ as _sfc_main$4 } from "./LpThemeStudio-R-wohbCY.js";
4
+ import { _ as _sfc_main$4 } from "./LpThemeStudio-WY72Z1Db.js";
5
5
  import { _ as _sfc_main$2 } from "./LpThemeProvider-XK6ZeWAE.js";
6
6
  import { _ as _sfc_main$1 } from "./LpButton-DSHioIfD.js";
7
- import { _ as _sfc_main$3 } from "./LpInput-CbI7z5fQ.js";
7
+ import { _ as _sfc_main$3 } from "./LpInput-BjbXdjcW.js";
8
8
  const _hoisted_1 = { class: "flex min-w-0 flex-col gap-4" };
9
9
  const _hoisted_2 = { class: "sticky top-0 z-10 flex gap-2 border-b border-line bg-surface-overlay pb-3" };
10
10
  const _hoisted_3 = { class: "text-sm font-semibold" };
@@ -2,8 +2,8 @@ import { defineComponent, useModel, ref, openBlock, createBlock, mergeProps, unr
2
2
  import { suppressPaletteDiscovery } from "../composables/usePaletteCommands.js";
3
3
  import { useFieldControl } from "../composables/useField.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
- import { _ as _sfc_main$1 } from "./LpInput-CbI7z5fQ.js";
6
- import { _ as _sfc_main$2 } from "./RevealToggle-D_iyrB8d.js";
5
+ import { _ as _sfc_main$1 } from "./LpInput-BjbXdjcW.js";
6
+ import { _ as _sfc_main$2 } from "./RevealToggle-CPMXxaKv.js";
7
7
  const __default__ = { inheritAttrs: false };
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  ...__default__,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, computed, shallowRef, onMounted, useAttrs, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createElementVNode, normalizeStyle, normalizeClass, createVNode, toDisplayString, mergeProps, createTextVNode, createElementBlock, Fragment, renderList, withModifiers, createCommentVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { CONTROL_SIZE } from "../components/controlSize.js";
4
4
  import { ComboboxRoot, ComboboxAnchor, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxInput, ComboboxViewport, ComboboxEmpty, ComboboxItem } from "reka-ui";
5
5
  import { useField, useOwnField, mergeDescribedBy } from "../composables/useField.js";
@@ -8,8 +8,8 @@ import { useInputFilter } from "../composables/useInputFilter.js";
8
8
  import { useLabels } from "../composables/useLpConfig.js";
9
9
  import { matchCountryByValue, filterCountries, loadCountries, flagEmoji } from "../components/countries.js";
10
10
  import { COMBOBOX_PANEL, POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
11
- import { _ as _sfc_main$3 } from "./LpFieldNotice-DJ10cYIo.js";
12
- import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
11
+ import { _ as _sfc_main$3 } from "./LpFieldNotice-DONFCWV7.js";
12
+ import { _ as _sfc_main$2 } from "./LpIcon-BCQLuHSP.js";
13
13
  import { loadPhoneLib, formatPhone, loadPhoneExamples, digitsBefore, caretAfterDigits, digitsOf } from "../components/phone.js";
14
14
  import { useMergedAttrs } from "../composables/useMergedClass.js";
15
15
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
@@ -7,8 +7,8 @@ import { useReveal } from "../composables/useReveal.js";
7
7
  import { useTween, lerp, mixColor } from "../composables/useTween.js";
8
8
  import { resolveSlices, arcPath, calloutLabels, formatTick } from "../components/chart.js";
9
9
  import { _ as _sfc_main$9 } from "./LegendSwatch-BhRjrtzv.js";
10
- import { _ as _sfc_main$4 } from "./LpContextMenu-Bx_IhQDS.js";
11
- import { _ as _sfc_main$3 } from "./LpEmptyState-DurPF001.js";
10
+ import { _ as _sfc_main$4 } from "./LpContextMenu-bn5bc9t7.js";
11
+ import { _ as _sfc_main$3 } from "./LpEmptyState-DpdHeSfz.js";
12
12
  import { _ as _sfc_main$6 } from "./LpNumberFlow-Vqj0tP7B.js";
13
13
  import { _ as _sfc_main$7 } from "./LpRollingText-B54Pje7P.js";
14
14
  import { _ as _sfc_main$8 } from "./LpShift-DAgS_d2x.js";
@@ -6,10 +6,10 @@ import { useLabels } from "../composables/useLpConfig.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { useNow } from "../composables/useNow.js";
8
8
  import { _ as _sfc_main$6 } from "./LpCollapse-DrAw5DBZ.js";
9
- import { _ as _sfc_main$5 } from "./LpIcon-C6JpQ5td.js";
9
+ import { _ as _sfc_main$5 } from "./LpIcon-BCQLuHSP.js";
10
10
  import { _ as _sfc_main$4 } from "./LpRollingText-B54Pje7P.js";
11
11
  import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
12
- import { _ as _sfc_main$1 } from "./LpStepMark-Dw2MRTrt.js";
12
+ import { _ as _sfc_main$1 } from "./LpStepMark-DP3CDSm9.js";
13
13
  import { _ as _sfc_main$7 } from "./LpTooltip-Bz_rrq5S.js";
14
14
  import { _ as _sfc_main$2 } from "./StepConnector-37OgEOXA.js";
15
15
  import { stepKey, duplicateStepKeys, connectorFilled, currentStepIndex, stepElapsed, childProgress } from "../components/pipeline.js";
@@ -3,7 +3,7 @@ import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useLocale } from "../composables/useLocale.js";
4
4
  import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { useRevealedValue } from "../composables/useRevealedValue.js";
6
- import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
6
+ import { _ as _sfc_main$2 } from "./LpIcon-BCQLuHSP.js";
7
7
  import { _ as _sfc_main$1 } from "./LpNumberFlow-Vqj0tP7B.js";
8
8
  import { _ as _sfc_main$3 } from "./LpRollingText-B54Pje7P.js";
9
9
  import { METER_HEADER, METER_TRACK } from "../components/meter.js";
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, useId, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, mergeProps, renderSlot, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, createCommentVNode, toDisplayString, createTextVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
4
4
  import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator } from "reka-ui";
5
5
  import { useOwnField, mergeDescribedBy } from "../composables/useField.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
- import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
7
+ import { _ as _sfc_main$2 } from "./LpIcon-BCQLuHSP.js";
8
8
  const _hoisted_1 = {
9
9
  key: 1,
10
10
  class: "flex min-w-0 flex-col"
@@ -5,7 +5,7 @@ import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  import { CALENDAR_LABELS, CALENDAR_NAV, CALENDAR_FRAME } from "../components/calendar.js";
7
7
  import { normalizeRange, parseIsoDay, reshapeRange } from "../components/dateRange.js";
8
- import { _ as _sfc_main$1 } from "./LpIcon-C6JpQ5td.js";
8
+ import { _ as _sfc_main$1 } from "./LpIcon-BCQLuHSP.js";
9
9
  const _hoisted_1 = { class: "flex gap-4" };
10
10
  const __default__ = { inheritAttrs: false };
11
11
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, mergeProps, createElementBlock, Fragment, renderList, normalizeClass, toDisplayString, createCommentVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { _ as _sfc_main$2 } from "./SliderRail-DhPREa_R.js";
4
4
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
5
5
  import { SliderRoot, SliderThumb } from "reka-ui";
@@ -1,12 +1,12 @@
1
1
  import { defineComponent, useModel, ref, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createElementVNode, mergeProps, createElementBlock, toDisplayString, createCommentVNode, createVNode, createTextVNode, TransitionGroup, Fragment, renderList, renderSlot, mergeModels, nextTick } from "vue";
2
- import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-Cj8ZgoKp.js";
3
3
  import { useOwnField, mergeDescribedBy } from "../composables/useField.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  import { useRepeater } from "../composables/useRepeater.js";
7
7
  import { usePrefersReducedMotion } from "../composables/useReducedMotion.js";
8
8
  import { _ as _sfc_main$2 } from "./LpButton-DSHioIfD.js";
9
- import { _ as _sfc_main$3 } from "./LpIcon-C6JpQ5td.js";
9
+ import { _ as _sfc_main$3 } from "./LpIcon-BCQLuHSP.js";
10
10
  import { _ as _sfc_main$4 } from "./LpShift-DAgS_d2x.js";
11
11
  import '../assets/LpRepeater-C1Cw27hj.css';const _hoisted_1 = ["aria-label", "aria-describedby"];
12
12
  const _hoisted_2 = { class: "flex items-center justify-between gap-2" };