@leavepulse/ui 0.44.0 → 0.45.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 (265) hide show
  1. package/README.md +49 -3
  2. package/dist/assets/{LpCommandPalette-DCP5g2ik.css → LpCommandPalette-nGNnzXqQ.css} +21 -21
  3. package/dist/assets/{LpRollingText-CR1mb0Vt.css → LpRollingText-BGnE6q9j.css} +3 -0
  4. package/dist/assets/{LpShortcutsDialog-ChUyU7oV.css → LpShortcutsDialog-CqYX3yy6.css} +28 -7
  5. package/dist/assets/{LpTable-DDQNdf86.css → LpTable-CPwWxTJS.css} +49 -9
  6. package/dist/chunks/{ContextMenuItems-CrfeNPWT.js → ContextMenuItems-BtKU7074.js} +2 -1
  7. package/dist/chunks/{LayoutCanvas-D-jPOAvg.js → LayoutCanvas-BkaGXTjx.js} +1 -1
  8. package/dist/chunks/{LayoutNode-D8Xy9N-o.js → LayoutNode-B3_9E1Xa.js} +9 -5
  9. package/dist/chunks/{LpActionBar-BbwCF6l5.js → LpActionBar-CnfFVIwC.js} +3 -3
  10. package/dist/chunks/{LpAddressInput-BrOqkZqg.js → LpAddressInput-BwX8uo4_.js} +7 -7
  11. package/dist/chunks/{LpAlert-DkOIjsbq.js → LpAlert-B6ilrM7T.js} +1 -1
  12. package/dist/chunks/{LpAppShell-BUKPcHco.js → LpAppShell-C53_RaGF.js} +4 -4
  13. package/dist/chunks/{LpAutocomplete-DxV3Y9h4.js → LpAutocomplete-C8IgSMsi.js} +2 -1
  14. package/dist/chunks/{LpAvatar-ClBbEYZN.js → LpAvatar-C1XStdOo.js} +3 -3
  15. package/dist/chunks/{LpBreadcrumbs-B8IJgFIc.js → LpBreadcrumbs-CQJd73Gm.js} +1 -1
  16. package/dist/chunks/{LpButton-kqJBHIIb.js → LpButton-CKSwC6Mu.js} +1 -1
  17. package/dist/chunks/{LpCalendar-B7Ko5RdR.js → LpCalendar-DrA2McTU.js} +1 -1
  18. package/dist/chunks/{LpCard-CpRByR0q.js → LpCard-C2IvucmX.js} +1 -1
  19. package/dist/chunks/{LpCheckbox-DpqchzH4.js → LpCheckbox-Bkj13CbW.js} +1 -1
  20. package/dist/chunks/{LpCodeBlock-DeHJPq7p.js → LpCodeBlock-ca7ANFyW.js} +1 -1
  21. package/dist/chunks/{LpColorPicker-Bhf1qxhB.js → LpColorPicker-zz4VGkG4.js} +46 -20
  22. package/dist/chunks/{LpConfirmDialog-CIUOSnWo.js → LpConfirmDialog-DCw5jR1t.js} +3 -3
  23. package/dist/chunks/{LpConfirmHost-CDm0Wtpv.js → LpConfirmHost-CbywMpMP.js} +1 -1
  24. package/dist/chunks/{LpContextMenu-DQw5dGfG.js → LpContextMenu-BqkAYa9X.js} +2 -1
  25. package/dist/chunks/{LpDatePicker-Drirx1AK.js → LpDatePicker-DuusgT69.js} +13 -9
  26. package/dist/chunks/LpDateRangePicker-DHeuznfC.js +208 -0
  27. package/dist/chunks/{LpDisclosure-ChQYmjlR.js → LpDisclosure-Cc23-JOT.js} +1 -1
  28. package/dist/chunks/{LpDrawer-bScx-KMO.js → LpDrawer-Dt4aB4Fr.js} +2 -2
  29. package/dist/chunks/{LpDropdownMenu-DJpoqRCb.js → LpDropdownMenu-DdJGQzPn.js} +2 -1
  30. package/dist/chunks/{LpEmptyState-Dsdqz1Wj.js → LpEmptyState-BJbZXC8D.js} +1 -1
  31. package/dist/chunks/LpFieldNotice-wtieLUTj.js +64 -0
  32. package/dist/chunks/{LpFileTree-CSI_5SK2.js → LpFileTree-CNurOvkV.js} +3 -3
  33. package/dist/chunks/{LpFileTreeNode-B4MiSQX2.js → LpFileTreeNode-D_qRRdsH.js} +3 -3
  34. package/dist/chunks/{LpFormField-CIk5qosh.js → LpFormField-CtVYj6tO.js} +29 -15
  35. package/dist/chunks/{LpIcon-CCnX5_2j.js → LpIcon-DYtaid0K.js} +20 -6
  36. package/dist/chunks/{LpInput-C0e8y8_d.js → LpInput-D-YGQbEv.js} +39 -16
  37. package/dist/chunks/{LpLightbox-Mr0W_6HK.js → LpLightbox-DSDahF23.js} +1 -1
  38. package/dist/chunks/{LpLogViewer-YBOaFnc_.js → LpLogViewer-KypbgOyo.js} +252 -58
  39. package/dist/chunks/{LpMapPicker-NUzS9e37.js → LpMapPicker-Cc84LaM3.js} +1 -1
  40. package/dist/chunks/{LpMediaGallery-DfJmMW0I.js → LpMediaGallery-YKr-cQPN.js} +2 -2
  41. package/dist/chunks/{LpModal-DPwGKBPv.js → LpModal-DMMDQHAu.js} +3 -3
  42. package/dist/chunks/{LpModalNav-DPg5H9f3.js → LpModalNav-BVPDyIup.js} +4 -4
  43. package/dist/chunks/{LpNotificationBell-t5yn-siX.js → LpNotificationBell-CCwyJP5C.js} +26 -14
  44. package/dist/chunks/{LpNumberField-DWnQKktS.js → LpNumberField-B77O-z28.js} +1 -1
  45. package/dist/chunks/{LpPagination-DFngX7Xo.js → LpPagination-BcDlo3r_.js} +1 -1
  46. package/dist/chunks/{LpPasswordInput-CWVDuBJ5.js → LpPasswordInput-eKzQhbQP.js} +2 -2
  47. package/dist/chunks/{LpPhoneInput-CD-ZTeSd.js → LpPhoneInput-BCbrrhgE.js} +126 -23
  48. package/dist/chunks/{LpPie-BLco31Nx.js → LpPie-BEJ2SfI6.js} +9 -10
  49. package/dist/chunks/{LpPopover-p_e_shN3.js → LpPopover-DCKeqiVn.js} +1 -0
  50. package/dist/chunks/LpRangeCalendar-DZuaRV0W.js +331 -0
  51. package/dist/chunks/{LpRollingText-CM5gkSeF.js → LpRollingText-DB7upf-5.js} +1 -1
  52. package/dist/chunks/{LpScrollArea-D8xyKXcF.js → LpScrollArea-Bry1fdOM.js} +14 -2
  53. package/dist/chunks/{LpSection-aM6J_u51.js → LpSection-tKEH0jYf.js} +1 -1
  54. package/dist/chunks/{LpSegmented-Dejd7cIx.js → LpSegmented-C09EEam2.js} +1 -1
  55. package/dist/chunks/{LpSelect-DrRD9I7L.js → LpSelect-DNIL6MB9.js} +20 -23
  56. package/dist/chunks/{LpSidebar-BgwUNWpJ.js → LpSidebar-CQNB0-yU.js} +3 -3
  57. package/dist/chunks/{LpSidebarNav-Bqxz8aWT.js → LpSidebarNav-kx-LdqNU.js} +3 -3
  58. package/dist/chunks/{LpStat-dXtyrdX9.js → LpStat-B-7udBRP.js} +1 -1
  59. package/dist/chunks/{LpStepper-Bk-XaQYU.js → LpStepper-C7XiVKZj.js} +34 -19
  60. package/dist/chunks/{LpSwitch-B1aLKulj.js → LpSwitch-OrcOJX9m.js} +1 -1
  61. package/dist/chunks/LpTableFilter-BV8PpLM9.js +158 -0
  62. package/dist/chunks/{LpTabs-_qMVaZJ6.js → LpTabs-29iW1XOx.js} +1 -1
  63. package/dist/chunks/LpTagsInput-D1SuqbhB.js +300 -0
  64. package/dist/chunks/{LpTextarea-yP8hGedR.js → LpTextarea-uuScWo6-.js} +1 -1
  65. package/dist/chunks/{LpThemeProvider-Wjm7Tuit.js → LpThemeProvider-Be4r2TQX.js} +1 -1
  66. package/dist/chunks/{LpThemeSwitcher-CKLc10KZ.js → LpThemeSwitcher-B4aVPbNC.js} +19 -22
  67. package/dist/chunks/{LpTimeField-C5HRgS5H.js → LpTimeField-Cqe7fXnh.js} +1 -1
  68. package/dist/chunks/{LpToaster--oT6lfhL.js → LpToaster-DpJvoCOh.js} +37 -3
  69. package/dist/chunks/{LpTooltip-CBdzeKNf.js → LpTooltip-CXVKcOXT.js} +3 -2
  70. package/dist/chunks/{LpTopologyCanvas-DocsLal3.js → LpTopologyCanvas-6ozNrQKh.js} +2 -1
  71. package/dist/chunks/{LpUptimeBar-DLtxOMRy.js → LpUptimeBar-ugcv25xj.js} +2 -2
  72. package/dist/chunks/icons-CkA0njzm.js +43 -0
  73. package/dist/chunks/{useTheme-C8JHUlPM.js → useTheme-DJm1JSsY.js} +47 -50
  74. package/dist/component-names.d.ts +1 -1
  75. package/dist/components/ContextMenuItems.vue.js +1 -1
  76. package/dist/components/LayoutCanvas.vue.js +1 -1
  77. package/dist/components/LayoutNode.vue.js +1 -1
  78. package/dist/components/LpActionBar.vue.js +1 -1
  79. package/dist/components/LpAddressInput.vue.js +1 -1
  80. package/dist/components/LpAlert.vue.js +1 -1
  81. package/dist/components/LpAppShell.vue.js +1 -1
  82. package/dist/components/LpAutocomplete.vue.js +1 -1
  83. package/dist/components/LpAvatar.vue.js +1 -1
  84. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  85. package/dist/components/LpButton.vue.d.ts +2 -2
  86. package/dist/components/LpButton.vue.js +1 -1
  87. package/dist/components/LpCalendar.vue.js +1 -1
  88. package/dist/components/LpCard.vue.js +1 -1
  89. package/dist/components/LpChart.vue.d.ts +16 -1
  90. package/dist/components/LpChart.vue.js +63 -5
  91. package/dist/components/LpCheckbox.vue.js +1 -1
  92. package/dist/components/LpCodeBlock.vue.js +1 -1
  93. package/dist/components/LpColorPicker.vue.d.ts +2 -2
  94. package/dist/components/LpColorPicker.vue.js +1 -1
  95. package/dist/components/LpCommandPalette.vue.d.ts +6 -0
  96. package/dist/components/LpCommandPalette.vue.js +61 -10
  97. package/dist/components/LpConfirmDialog.vue.js +1 -1
  98. package/dist/components/LpConfirmHost.vue.js +1 -1
  99. package/dist/components/LpContextMenu.vue.js +1 -1
  100. package/dist/components/LpDatePicker.vue.js +1 -1
  101. package/dist/components/LpDateRangePicker.vue.d.ts +60 -0
  102. package/dist/components/LpDateRangePicker.vue.js +4 -0
  103. package/dist/components/LpDisclosure.vue.js +1 -1
  104. package/dist/components/LpDrawer.vue.js +1 -1
  105. package/dist/components/LpDropdownMenu.vue.js +1 -1
  106. package/dist/components/LpDropzone.vue.js +1 -1
  107. package/dist/components/LpEmptyState.vue.js +1 -1
  108. package/dist/components/LpFieldNotice.vue.d.ts +8 -0
  109. package/dist/components/LpFieldNotice.vue.js +4 -0
  110. package/dist/components/LpFileTree.vue.js +1 -1
  111. package/dist/components/LpFileTreeNode.vue.js +1 -1
  112. package/dist/components/LpFormField.vue.d.ts +4 -1
  113. package/dist/components/LpFormField.vue.js +1 -1
  114. package/dist/components/LpIcon.vue.d.ts +0 -1
  115. package/dist/components/LpIcon.vue.js +1 -1
  116. package/dist/components/LpImageEditor.vue.js +2 -2
  117. package/dist/components/LpInput.vue.d.ts +19 -0
  118. package/dist/components/LpInput.vue.js +1 -1
  119. package/dist/components/LpLightbox.vue.js +1 -1
  120. package/dist/components/LpLogViewer.vue.d.ts +52 -1
  121. package/dist/components/LpLogViewer.vue.js +1 -1
  122. package/dist/components/LpMapPicker.vue.js +1 -1
  123. package/dist/components/LpMediaGallery.vue.js +1 -1
  124. package/dist/components/LpModal.vue.js +1 -1
  125. package/dist/components/LpModalNav.vue.js +1 -1
  126. package/dist/components/LpNotificationBell.vue.js +1 -1
  127. package/dist/components/LpNumberField.vue.js +1 -1
  128. package/dist/components/LpPagination.vue.js +1 -1
  129. package/dist/components/LpPasswordInput.vue.js +1 -1
  130. package/dist/components/LpPhoneInput.vue.d.ts +13 -0
  131. package/dist/components/LpPhoneInput.vue.js +1 -1
  132. package/dist/components/LpPie.vue.js +1 -1
  133. package/dist/components/LpPopover.vue.js +1 -1
  134. package/dist/components/LpProgress.vue.d.ts +1 -1
  135. package/dist/components/LpRangeCalendar.vue.d.ts +51 -0
  136. package/dist/components/LpRangeCalendar.vue.js +4 -0
  137. package/dist/components/LpRollingText.vue.d.ts +1 -1
  138. package/dist/components/LpRollingText.vue.js +1 -1
  139. package/dist/components/LpScrollArea.vue.d.ts +2 -2
  140. package/dist/components/LpScrollArea.vue.js +1 -1
  141. package/dist/components/LpSection.vue.js +1 -1
  142. package/dist/components/LpSegmented.vue.js +1 -1
  143. package/dist/components/LpSelect.vue.js +1 -1
  144. package/dist/components/LpShortcutsDialog.vue.d.ts +6 -0
  145. package/dist/components/LpShortcutsDialog.vue.js +56 -14
  146. package/dist/components/LpSidebar.vue.js +1 -1
  147. package/dist/components/LpSidebarNav.vue.js +1 -1
  148. package/dist/components/LpStat.vue.js +1 -1
  149. package/dist/components/LpStepper.vue.js +1 -1
  150. package/dist/components/LpSwitch.vue.js +1 -1
  151. package/dist/components/LpTable.vue.d.ts +84 -2
  152. package/dist/components/LpTable.vue.js +481 -107
  153. package/dist/components/LpTableFilter.vue.d.ts +31 -0
  154. package/dist/components/LpTableFilter.vue.js +4 -0
  155. package/dist/components/LpTabs.vue.js +1 -1
  156. package/dist/components/LpTagsInput.vue.d.ts +77 -0
  157. package/dist/components/LpTagsInput.vue.js +4 -0
  158. package/dist/components/LpTextarea.vue.js +1 -1
  159. package/dist/components/LpThemeProvider.vue.js +1 -1
  160. package/dist/components/LpThemeSwitcher.vue.d.ts +2 -2
  161. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  162. package/dist/components/LpTimeField.vue.js +1 -1
  163. package/dist/components/LpToaster.vue.js +1 -1
  164. package/dist/components/LpTooltip.vue.js +1 -1
  165. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  166. package/dist/components/LpUptimeBar.vue.js +1 -1
  167. package/dist/components/chart.js +3 -2
  168. package/dist/components/commandSearch.js +3 -0
  169. package/dist/components/dateRange.d.ts +43 -0
  170. package/dist/components/dateRange.js +76 -0
  171. package/dist/components/exportData.d.ts +58 -0
  172. package/dist/components/exportData.js +165 -0
  173. package/dist/components/logSearch.d.ts +18 -0
  174. package/dist/components/logSearch.js +36 -0
  175. package/dist/components/phone.d.ts +41 -0
  176. package/dist/components/phone.js +80 -0
  177. package/dist/components/tableFilter.d.ts +36 -0
  178. package/dist/components/tableFilter.js +84 -0
  179. package/dist/components/tags.d.ts +20 -0
  180. package/dist/components/tags.js +37 -0
  181. package/dist/composables/useField.d.ts +4 -0
  182. package/dist/composables/useFieldNotice.d.ts +17 -0
  183. package/dist/composables/useFieldNotice.js +28 -0
  184. package/dist/composables/useForm.d.ts +53 -0
  185. package/dist/composables/useForm.js +207 -0
  186. package/dist/composables/useHotkeys.d.ts +65 -5
  187. package/dist/composables/useHotkeys.js +170 -9
  188. package/dist/composables/useInputMask.d.ts +59 -0
  189. package/dist/composables/useInputMask.js +170 -0
  190. package/dist/composables/usePaintSelect.d.ts +22 -0
  191. package/dist/composables/usePaintSelect.js +169 -0
  192. package/dist/composables/useShift.js +7 -2
  193. package/dist/icons-all.d.ts +1 -0
  194. package/dist/icons-all.js +3 -0
  195. package/dist/icons.d.ts +14 -1
  196. package/dist/index.d.ts +29 -3
  197. package/dist/index.js +195 -138
  198. package/dist/kit-icons.d.ts +2 -0
  199. package/dist/theme/backdrop.d.ts +12 -0
  200. package/dist/theme/presets.d.ts +0 -2
  201. package/package.json +13 -4
  202. package/src/component-names.ts +4 -0
  203. package/src/components/ContextMenuItems.vue +1 -1
  204. package/src/components/LayoutNode.vue +11 -2
  205. package/src/components/LpActionBar.vue +1 -1
  206. package/src/components/LpAutocomplete.vue +1 -0
  207. package/src/components/LpAvatar.vue +2 -2
  208. package/src/components/LpButton.vue +1 -1
  209. package/src/components/LpChart.vue +80 -1
  210. package/src/components/LpColorPicker.vue +34 -1
  211. package/src/components/LpCommandPalette.vue +81 -7
  212. package/src/components/LpContextMenu.vue +1 -1
  213. package/src/components/LpDatePicker.vue +8 -3
  214. package/src/components/LpDateRangePicker.vue +224 -0
  215. package/src/components/LpDropdownMenu.vue +1 -0
  216. package/src/components/LpFieldNotice.vue +65 -0
  217. package/src/components/LpFormField.vue +33 -4
  218. package/src/components/LpIcon.vue +22 -4
  219. package/src/components/LpInput.vue +46 -6
  220. package/src/components/LpLogViewer.vue +225 -22
  221. package/src/components/LpModal.vue +1 -1
  222. package/src/components/LpNotificationBell.vue +15 -7
  223. package/src/components/LpPhoneInput.vue +179 -20
  224. package/src/components/LpPie.vue +8 -5
  225. package/src/components/LpPopover.vue +1 -0
  226. package/src/components/LpRangeCalendar.vue +365 -0
  227. package/src/components/LpRollingText.vue +3 -0
  228. package/src/components/LpScrollArea.vue +22 -2
  229. package/src/components/LpSelect.vue +0 -0
  230. package/src/components/LpShortcutsDialog.vue +77 -8
  231. package/src/components/LpStepper.vue +23 -10
  232. package/src/components/LpSwitch.vue +1 -1
  233. package/src/components/LpTable.vue +584 -65
  234. package/src/components/LpTableFilter.vue +175 -0
  235. package/src/components/LpTagsInput.vue +364 -0
  236. package/src/components/LpThemeSwitcher.vue +19 -23
  237. package/src/components/LpToaster.vue +49 -1
  238. package/src/components/LpTooltip.vue +9 -2
  239. package/src/components/LpTopologyCanvas.vue +7 -1
  240. package/src/components/chart.ts +5 -3
  241. package/src/components/commandSearch.ts +6 -0
  242. package/src/components/dateRange.ts +134 -0
  243. package/src/components/exportData.ts +228 -0
  244. package/src/components/logSearch.ts +46 -0
  245. package/src/components/phone.ts +140 -0
  246. package/src/components/tableFilter.ts +122 -0
  247. package/src/components/tags.ts +62 -0
  248. package/src/composables/useField.ts +4 -0
  249. package/src/composables/useFieldNotice.ts +59 -0
  250. package/src/composables/useForm.ts +314 -0
  251. package/src/composables/useHotkeys.ts +269 -13
  252. package/src/composables/useInputMask.ts +254 -0
  253. package/src/composables/usePaintSelect.ts +243 -0
  254. package/src/composables/useShift.ts +13 -2
  255. package/src/iconSubset.d.mts +10 -0
  256. package/src/iconSubset.mjs +51 -0
  257. package/src/icons-all.ts +10 -0
  258. package/src/icons.ts +59 -8
  259. package/src/index.ts +37 -3
  260. package/src/kit-icons.ts +5 -0
  261. package/src/nuxt.ts +30 -2
  262. package/src/runtime/theme.plugin.ts +2 -2
  263. package/src/theme/backdrop.ts +69 -0
  264. package/src/theme/presets.ts +6 -64
  265. package/src/tokens/tokens.css +46 -0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, useId, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, createVNode, Fragment, renderList, createBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import { Motion } from "motion-v";
3
3
  import { usePillTransition } from "../composables/usePillTransition.js";
4
- import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
4
+ import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  import { useLabels } from "../composables/useLpConfig.js";
7
7
  const _hoisted_1 = ["aria-label"];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, openBlock, createBlock, mergeProps, createSlots, withCtx, createElementVNode, unref, createVNode, renderSlot } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
- import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$1 } from "./LpInput-C0e8y8_d.js";
3
+ import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
4
+ import { _ as _sfc_main$1 } from "./LpInput-D-YGQbEv.js";
5
5
  const _hoisted_1 = ["aria-label"];
6
6
  const __default__ = { inheritAttrs: false };
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,11 +1,14 @@
1
- import { defineComponent, ref, computed, onMounted, useAttrs, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createVNode, withCtx, createElementVNode, toDisplayString, createTextVNode, Fragment, renderList, createBlock, withModifiers, mergeProps } from "vue";
1
+ import { defineComponent, ref, computed, shallowRef, onMounted, useAttrs, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createVNode, withCtx, createElementVNode, toDisplayString, createTextVNode, Fragment, renderList, createBlock, withModifiers, mergeProps, createCommentVNode } from "vue";
2
2
  import { ComboboxRoot, ComboboxAnchor, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxInput, ComboboxViewport, ComboboxEmpty, ComboboxItem } from "reka-ui";
3
- import { useFieldControl } from "../composables/useField.js";
3
+ import { useField, useFieldControl } from "../composables/useField.js";
4
+ import { useFieldNotice } from "../composables/useFieldNotice.js";
4
5
  import { useInputFilter } from "../composables/useInputFilter.js";
5
6
  import { useLabels } from "../composables/useLpConfig.js";
6
7
  import { matchCountryByValue, filterCountries, loadCountries, flagEmoji } from "../components/countries.js";
7
8
  import { POPOVER_PANEL, OPTION_ITEM } from "../components/dropdown.js";
8
- import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
9
+ import { _ as _sfc_main$2 } from "./LpFieldNotice-wtieLUTj.js";
10
+ import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
11
+ import { loadPhoneLib, formatPhone, loadPhoneExamples, digitsBefore, caretAfterDigits, digitsOf } from "../components/phone.js";
9
12
  import { useMergedAttrs } from "../composables/useMergedClass.js";
10
13
  const _hoisted_1 = { class: "text-base leading-none" };
11
14
  const _hoisted_2 = { class: "border-b border-line p-2" };
@@ -21,7 +24,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21
24
  modelValue: {},
22
25
  only: {},
23
26
  defaultCountry: {},
24
- placeholder: { default: "Phone number" },
27
+ placeholder: { default: void 0 },
25
28
  disabled: { type: Boolean },
26
29
  invalid: { type: Boolean },
27
30
  size: { default: "md" },
@@ -52,21 +55,76 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
52
55
  const open = ref(false);
53
56
  const query = ref("");
54
57
  const filtered = computed(() => filterCountries(countries.value, query.value));
58
+ const phoneLib = shallowRef();
55
59
  function parse(value) {
56
- const country = matchCountryByValue(value, countries.value);
57
- const digits = value.replace(/[^\d]/g, "");
58
- if (country) {
59
- return { country, dialCode: country.dial, number: digits.slice(country.dial.length) };
60
- }
61
- return { country: void 0, dialCode: "", number: digits };
60
+ const formatted = formatPhone(value, phoneLib.value);
61
+ const country = (formatted.country && countries.value.find((c) => c.iso2 === formatted.country)) ?? matchCountryByValue(value, countries.value);
62
+ const digits = digitsOf(formatted.e164);
63
+ const base = { e164: formatted.e164, possible: formatted.possible, valid: formatted.valid, type: formatted.type };
64
+ if (country) return { ...base, country, dialCode: country.dial, number: digits.slice(country.dial.length) };
65
+ return { ...base, country: void 0, dialCode: "", number: digits };
62
66
  }
63
67
  function setValue(value) {
64
68
  emit("update:modelValue", value);
65
69
  emit("change", parse(value));
66
70
  }
71
+ const notice = useFieldNotice();
72
+ const outerField = useField();
73
+ const ownNotice = computed(() => !outerField?.value.notify);
74
+ function say(message, options) {
75
+ if (outerField?.value.notify) outerField.value.notify(message, options);
76
+ else notice.show(message, options);
77
+ }
78
+ function unsay() {
79
+ if (outerField?.value.clearNotice) outerField.value.clearNotice();
80
+ else notice.clear();
81
+ }
82
+ const flagged = ref(false);
83
+ const countryName = (iso) => iso && countries.value.find((c) => c.iso2 === iso)?.name || "";
67
84
  function onInput(e) {
68
85
  filterInput(e);
69
- setValue(e.target.value);
86
+ const el = e.target;
87
+ const before = digitsBefore(el.value, el.selectionStart ?? el.value.length);
88
+ const result = formatPhone(el.value, phoneLib.value);
89
+ if (el.value !== result.display) {
90
+ el.value = result.display;
91
+ const caret = caretAfterDigits(result.display, Math.min(before, digitsOf(result.display).length));
92
+ el.setSelectionRange(caret, caret);
93
+ }
94
+ if (flagged.value) {
95
+ flagged.value = false;
96
+ unsay();
97
+ }
98
+ if (result.dropped) {
99
+ const name = countryName(result.country);
100
+ say(
101
+ (name ? text.value.tooLongFor : text.value.tooLong).replace("{country}", name).replace("{max}", String(digitsOf(result.e164).length - (result.callingCode?.length ?? 0)))
102
+ );
103
+ }
104
+ setValue(result.display);
105
+ }
106
+ function onKeyEdit(e) {
107
+ const el = e.target;
108
+ const start = el.selectionStart ?? 0;
109
+ const end = el.selectionEnd ?? 0;
110
+ const backward = e.inputType === "deleteContentBackward";
111
+ const forward = e.inputType === "deleteContentForward";
112
+ if (!backward && !forward || start !== end) return;
113
+ const value = el.value;
114
+ const at = backward ? start - 1 : start;
115
+ if (at < 0 || at >= value.length || /\d/.test(value[at])) return;
116
+ let i = at;
117
+ while (i >= 0 && i < value.length && !/\d/.test(value[i])) i += backward ? -1 : 1;
118
+ if (i < 0 || i >= value.length) return;
119
+ e.preventDefault();
120
+ el.value = value.slice(0, i) + value.slice(i + 1);
121
+ const caret = backward ? i : start;
122
+ el.setSelectionRange(caret, caret);
123
+ el.dispatchEvent(new Event("input", { bubbles: true }));
124
+ }
125
+ function onBeforeEdit(e) {
126
+ onKeyEdit(e);
127
+ if (!e.defaultPrevented) onBeforeInput(e);
70
128
  }
71
129
  function chooseCountry(c) {
72
130
  const detail = parse(props.modelValue ?? "");
@@ -76,14 +134,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
134
  query.value = "";
77
135
  }
78
136
  onMounted(async () => {
79
- allCountries.value = await loadCountries();
137
+ const [list, phone] = await Promise.all([loadCountries(), loadPhoneLib().catch(() => void 0)]);
138
+ allCountries.value = list;
139
+ phoneLib.value = phone;
140
+ if (phone && props.modelValue) {
141
+ const display = formatPhone(props.modelValue, phone).display;
142
+ if (display !== props.modelValue) setValue(display);
143
+ }
144
+ if (props.placeholder === void 0) examplesFor.value = await loadPhoneExamples().catch(() => void 0);
145
+ });
146
+ const examplesFor = shallowRef();
147
+ const shownPlaceholder = computed(() => {
148
+ if (props.placeholder !== void 0) return props.placeholder;
149
+ const phone = phoneLib.value;
150
+ const iso = activeCountry.value?.iso2;
151
+ if (phone && examplesFor.value && iso) {
152
+ try {
153
+ return phone.getExampleNumber(iso, examplesFor.value)?.formatInternational() ?? text.value.placeholder;
154
+ } catch {
155
+ return text.value.placeholder;
156
+ }
157
+ }
158
+ return text.value.placeholder;
80
159
  });
81
160
  const seeded = computed(() => fallback.value ? `+${fallback.value.dial} ` : "");
82
161
  function onFocus() {
83
162
  if (!props.modelValue && seeded.value) setValue(seeded.value);
84
163
  }
85
164
  function onBlur() {
86
- if (seeded.value && props.modelValue?.trim() === seeded.value.trim()) setValue("");
165
+ if (seeded.value && props.modelValue?.trim() === seeded.value.trim()) {
166
+ setValue("");
167
+ return;
168
+ }
169
+ const result = phoneLib.value && props.modelValue ? formatPhone(props.modelValue, phoneLib.value) : void 0;
170
+ if (!result || result.valid || digitsOf(result.e164).length <= (activeCountry.value?.dial.length ?? 0)) return;
171
+ flagged.value = true;
172
+ const name = countryName(result.country) || activeCountry.value?.name || "";
173
+ const reason = result.problem === "too-short" ? name ? text.value.tooShortFor : text.value.tooShort : result.problem === "invalid-country" ? text.value.unknownCountry : text.value.invalidNumber;
174
+ say(reason.replace("{country}", name), { tone: "danger", duration: 0 });
87
175
  }
88
176
  const sizeClass = {
89
177
  sm: "h-(--size-control-sm) text-xs",
@@ -94,13 +182,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
182
  const field = useFieldControl(() => ({
95
183
  wrapped: false,
96
184
  id: typeof attrs.id === "string" ? attrs.id : void 0,
97
- invalid: props.invalid,
185
+ invalid: props.invalid || flagged.value,
98
186
  disabled: props.disabled
99
187
  }));
100
- const text = useLabels("phoneInput", { selectCountry: "Select country" });
188
+ const text = useLabels("phoneInput", {
189
+ selectCountry: "Select country",
190
+ placeholder: "Phone number",
191
+ tooLong: "A phone number has at most {max} digits",
192
+ tooLongFor: "Numbers in {country} have at most {max} digits after the code",
193
+ tooShort: "This number is too short",
194
+ tooShortFor: "Too short for {country}",
195
+ invalidNumber: "Not a valid phone number",
196
+ unknownCountry: "Unknown country code"
197
+ });
198
+ const noticeId = `${field.value.id ?? "lp-phone"}-notice`;
101
199
  const { class: rootClass, attrs: rest } = useMergedAttrs(
102
200
  () => [
103
- "flex w-full items-stretch rounded-control border bg-surface-soft text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2 focus-within:ring-ring",
201
+ "relative flex w-full items-stretch rounded-control border bg-surface-soft text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2 focus-within:ring-ring",
104
202
  sizeClass[props.size],
105
203
  field.value.invalid ? "border-danger focus-within:border-danger focus-within:ring-danger-soft" : "border-line focus-within:border-brand",
106
204
  field.value.disabled ? "cursor-not-allowed opacity-55" : ""
@@ -150,6 +248,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
150
248
  createVNode(unref(ComboboxPortal), null, {
151
249
  default: withCtx(() => [
152
250
  createVNode(unref(ComboboxContent), {
251
+ "collision-padding": 8,
153
252
  position: "popper",
154
253
  align: "start",
155
254
  "side-offset": 6,
@@ -208,22 +307,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
208
307
  }, inputAttrs.value, {
209
308
  id: unref(field).id,
210
309
  value: __props.modelValue,
211
- placeholder: __props.placeholder,
310
+ placeholder: shownPlaceholder.value,
212
311
  disabled: unref(field).disabled,
213
312
  required: unref(field).required || void 0,
214
313
  "aria-invalid": unref(field).invalid || void 0,
215
- "aria-describedby": unref(field).describedBy,
314
+ "aria-describedby": [unref(field).describedBy, unref(notice).message.value ? noticeId : ""].filter(Boolean).join(" ") || void 0,
216
315
  class: "lp-autofill min-w-0 flex-1 self-stretch bg-transparent px-3 outline-none placeholder:text-muted",
217
- onBeforeinput: _cache[2] || (_cache[2] = //@ts-ignore
218
- (...args) => unref(onBeforeInput) && unref(onBeforeInput)(...args)),
219
- onPaste: _cache[3] || (_cache[3] = //@ts-ignore
316
+ onBeforeinput: onBeforeEdit,
317
+ onPaste: _cache[2] || (_cache[2] = //@ts-ignore
220
318
  (...args) => unref(onPaste) && unref(onPaste)(...args)),
221
- onCompositionend: _cache[4] || (_cache[4] = //@ts-ignore
319
+ onCompositionend: _cache[3] || (_cache[3] = //@ts-ignore
222
320
  (...args) => unref(onCompositionEnd) && unref(onCompositionEnd)(...args)),
223
321
  onInput,
224
322
  onFocus,
225
323
  onBlur
226
- }), null, 16, _hoisted_6)
324
+ }), null, 16, _hoisted_6),
325
+ ownNotice.value ? (openBlock(), createBlock(_sfc_main$2, {
326
+ key: 0,
327
+ notice: unref(notice),
328
+ id: noticeId
329
+ }, null, 8, ["notice"])) : createCommentVNode("", true)
227
330
  ], 6);
228
331
  };
229
332
  }
@@ -2,12 +2,12 @@ import { defineComponent, computed, ref, watch, onBeforeUnmount, openBlock, crea
2
2
  import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
3
3
  import { useReveal } from "../composables/useReveal.js";
4
4
  import { resolveSlices, arcPath, calloutLabels, formatTick } from "../components/chart.js";
5
- import { _ as _sfc_main$2 } from "./LpContextMenu-DQw5dGfG.js";
6
- import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
5
+ import { _ as _sfc_main$2 } from "./LpContextMenu-BqkAYa9X.js";
6
+ import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
7
7
  import { _ as _sfc_main$4 } from "./LpNumberFlow-z4WPZcZu.js";
8
- import { _ as _sfc_main$5 } from "./LpRollingText-CM5gkSeF.js";
8
+ import { _ as _sfc_main$5 } from "./LpRollingText-DB7upf-5.js";
9
9
  import { _ as _sfc_main$6 } from "./LpShift-DXNsauQZ.js";
10
- import { _ as _sfc_main$3 } from "./LpTooltip-CBdzeKNf.js";
10
+ import { _ as _sfc_main$3 } from "./LpTooltip-CXVKcOXT.js";
11
11
  import { useMergedAttrs } from "../composables/useMergedClass.js";
12
12
  import { useLabels } from "../composables/useLpConfig.js";
13
13
  const _hoisted_1 = {
@@ -25,7 +25,7 @@ const _hoisted_3 = {
25
25
  const _hoisted_4 = { class: "text-xs" };
26
26
  const _hoisted_5 = { class: "flex flex-wrap items-start gap-x-6 gap-y-3" };
27
27
  const _hoisted_6 = { class: "flex items-center gap-1.5" };
28
- const _hoisted_7 = ["width", "height", "aria-label"];
28
+ const _hoisted_7 = ["viewBox", "aria-label"];
29
29
  const _hoisted_8 = { key: 0 };
30
30
  const _hoisted_9 = ["id"];
31
31
  const _hoisted_10 = ["d"];
@@ -434,13 +434,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
434
434
  ]),
435
435
  default: withCtx(() => [
436
436
  createElementVNode("div", {
437
- class: "relative shrink-0",
438
- style: normalizeStyle({ width: `${canvasWidth.value}px`, height: `${canvasHeight.value}px` })
437
+ class: "relative max-w-full shrink-0 max-sm:mx-auto",
438
+ style: normalizeStyle({ width: `${canvasWidth.value}px`, aspectRatio: `${canvasWidth.value} / ${canvasHeight.value}` })
439
439
  }, [
440
440
  (openBlock(), createElementBlock("svg", {
441
- width: canvasWidth.value,
442
- height: canvasHeight.value,
443
- class: "touch-none select-none",
441
+ viewBox: `0 0 ${canvasWidth.value} ${canvasHeight.value}`,
442
+ class: "block size-full touch-none select-none",
444
443
  role: "img",
445
444
  "aria-label": summary.value,
446
445
  onPointerleave: leaveChart,
@@ -31,6 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  createVNode(unref(PopoverPortal), null, {
32
32
  default: withCtx(() => [
33
33
  createVNode(unref(PopoverContent), {
34
+ "collision-padding": 8,
34
35
  side: __props.side,
35
36
  align: __props.align,
36
37
  "side-offset": __props.sideOffset,
@@ -0,0 +1,331 @@
1
+ import { defineComponent, shallowRef, watch, computed, ref, onMounted, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementVNode, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString, nextTick } from "vue";
2
+ import { today, getLocalTimeZone } from "@internationalized/date";
3
+ import { RangeCalendarRoot, RangeCalendarHeader, RangeCalendarPrev, RangeCalendarHeading, RangeCalendarNext, RangeCalendarGrid, RangeCalendarGridHead, RangeCalendarGridRow, RangeCalendarHeadCell, RangeCalendarGridBody, RangeCalendarCell, RangeCalendarCellTrigger } from "reka-ui";
4
+ import { useLabels } from "../composables/useLpConfig.js";
5
+ import { useMergedAttrs } from "../composables/useMergedClass.js";
6
+ import { normalizeRange, parseIsoDay, reshapeRange } from "../components/dateRange.js";
7
+ import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
8
+ const _hoisted_1 = { class: "flex gap-4" };
9
+ const __default__ = { inheritAttrs: false };
10
+ const _sfc_main = /* @__PURE__ */ defineComponent({
11
+ ...__default__,
12
+ __name: "LpRangeCalendar",
13
+ props: {
14
+ modelValue: {},
15
+ min: {},
16
+ max: {},
17
+ isDisabled: {},
18
+ isDateUnavailable: {},
19
+ months: { default: 1 },
20
+ maximumDays: {},
21
+ locale: {},
22
+ weekdayFormat: { default: "short" },
23
+ labels: {}
24
+ },
25
+ emits: ["update:modelValue"],
26
+ setup(__props, { emit: __emit }) {
27
+ const props = __props;
28
+ const emit = __emit;
29
+ const text = useLabels(
30
+ "rangeCalendar",
31
+ { previous: "Previous month", next: "Next month" },
32
+ () => props.labels
33
+ );
34
+ function toReka(range) {
35
+ const r = normalizeRange(range);
36
+ return { start: parseIsoDay(r?.start), end: parseIsoDay(r?.end) };
37
+ }
38
+ const draft = shallowRef(toReka(props.modelValue));
39
+ watch(
40
+ () => [props.modelValue?.start, props.modelValue?.end],
41
+ () => {
42
+ draft.value = toReka(props.modelValue);
43
+ }
44
+ );
45
+ const placeholder = shallowRef(draft.value.start ?? today(getLocalTimeZone()));
46
+ function onUpdate(v) {
47
+ draft.value = v ?? { start: void 0, end: void 0 };
48
+ if (v?.start && v.end) emit("update:modelValue", { start: v.start.toString(), end: v.end.toString() }, { via: "pick" });
49
+ }
50
+ const committed = computed(() => normalizeRange(props.modelValue));
51
+ function allowed(iso) {
52
+ const day = parseIsoDay(iso);
53
+ if (!day) return false;
54
+ if (minValue.value && day.compare(minValue.value) < 0) return false;
55
+ if (maxValue.value && day.compare(maxValue.value) > 0) return false;
56
+ return !(props.isDisabled?.(iso) ?? false);
57
+ }
58
+ function reshape(anchor2, moving) {
59
+ return reshapeRange(anchor2, moving, {
60
+ allowed,
61
+ unavailable: props.isDateUnavailable,
62
+ maximumDays: props.maximumDays
63
+ });
64
+ }
65
+ const root = ref(null);
66
+ const HOLD_MS = 320;
67
+ const SLOP_PX = 8;
68
+ let anchor = null;
69
+ let pointerId = -1;
70
+ let armed = false;
71
+ let held = false;
72
+ let dragged = false;
73
+ let swallowClick = false;
74
+ let lastDay = "";
75
+ let startX = 0;
76
+ let startY = 0;
77
+ let holdTimer;
78
+ const dragging = ref(false);
79
+ function cellAt(x, y) {
80
+ const hit = document.elementFromPoint(x, y);
81
+ const cell = hit?.closest("[data-reka-calendar-cell-trigger]");
82
+ if (!cell || !root.value?.contains(cell)) return null;
83
+ if (cell.hasAttribute("data-outside-view") || cell.hasAttribute("data-disabled")) return null;
84
+ return cell;
85
+ }
86
+ function reset() {
87
+ if (holdTimer) clearTimeout(holdTimer);
88
+ holdTimer = void 0;
89
+ anchor = null;
90
+ armed = false;
91
+ held = false;
92
+ dragged = false;
93
+ dragging.value = false;
94
+ }
95
+ function onPointerDown(e) {
96
+ if (e.button !== 0) return;
97
+ const cell = e.target?.closest("[data-reka-calendar-cell-trigger]");
98
+ const day = cell?.dataset.value;
99
+ if (!cell || !day || cell.hasAttribute("data-disabled") || cell.hasAttribute("data-unavailable")) return;
100
+ reset();
101
+ const range = committed.value;
102
+ const onEdge = !!range && (day === range.start || day === range.end);
103
+ anchor = onEdge && range ? day === range.start ? range.end : range.start : day;
104
+ pointerId = e.pointerId;
105
+ lastDay = day;
106
+ startX = e.clientX;
107
+ startY = e.clientY;
108
+ if (e.pointerType !== "touch" || onEdge) {
109
+ armed = true;
110
+ return;
111
+ }
112
+ holdTimer = setTimeout(() => {
113
+ holdTimer = void 0;
114
+ armed = true;
115
+ held = true;
116
+ dragging.value = true;
117
+ draft.value = toReka({ start: day, end: day });
118
+ navigator.vibrate?.(8);
119
+ }, HOLD_MS);
120
+ }
121
+ function onPointerMove(e) {
122
+ if (anchor === null || e.pointerId !== pointerId) return;
123
+ if (!armed) {
124
+ if (Math.hypot(e.clientX - startX, e.clientY - startY) > SLOP_PX) reset();
125
+ return;
126
+ }
127
+ const day = cellAt(e.clientX, e.clientY)?.dataset.value;
128
+ if (!day || day === lastDay) return;
129
+ const next = reshape(anchor, day);
130
+ if (!next) return;
131
+ lastDay = day;
132
+ if (!dragged) {
133
+ dragged = true;
134
+ dragging.value = true;
135
+ try {
136
+ root.value?.setPointerCapture(e.pointerId);
137
+ } catch {
138
+ }
139
+ }
140
+ draft.value = toReka(next);
141
+ }
142
+ function onPointerUp(e) {
143
+ if (anchor === null || e.pointerId !== pointerId) return;
144
+ const finished = dragged || held;
145
+ if (root.value?.hasPointerCapture(e.pointerId)) root.value.releasePointerCapture(e.pointerId);
146
+ reset();
147
+ if (!finished || e.type === "pointercancel") {
148
+ if (finished) draft.value = toReka(props.modelValue);
149
+ return;
150
+ }
151
+ swallowClick = true;
152
+ setTimeout(() => swallowClick = false, 0);
153
+ const { start, end } = draft.value;
154
+ if (start && end) emit("update:modelValue", { start: start.toString(), end: end.toString() }, { via: "drag" });
155
+ }
156
+ function onClickCapture(e) {
157
+ if (!swallowClick) return;
158
+ swallowClick = false;
159
+ e.stopPropagation();
160
+ e.preventDefault();
161
+ }
162
+ function onTouchMove(e) {
163
+ if (armed && anchor !== null) e.preventDefault();
164
+ }
165
+ function onContextMenu(e) {
166
+ if (held || dragging.value) e.preventDefault();
167
+ }
168
+ onMounted(() => root.value?.addEventListener("touchmove", onTouchMove, { passive: false }));
169
+ onBeforeUnmount(() => {
170
+ root.value?.removeEventListener("touchmove", onTouchMove);
171
+ reset();
172
+ });
173
+ const STEP = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };
174
+ function onKeydownCapture(e) {
175
+ const step = STEP[e.key];
176
+ const range = committed.value;
177
+ if (!e.shiftKey || step === void 0 || !range) return;
178
+ const day = e.target?.dataset?.value;
179
+ if (!day || day !== range.start && day !== range.end) return;
180
+ const moved = parseIsoDay(day)?.add({ days: step }).toString();
181
+ if (!moved) return;
182
+ e.preventDefault();
183
+ e.stopPropagation();
184
+ const other = day === range.start ? range.end : range.start;
185
+ const next = reshape(other, moved);
186
+ if (!next) return;
187
+ placeholder.value = parseIsoDay(moved) ?? placeholder.value;
188
+ emit("update:modelValue", next, { via: "keyboard" });
189
+ void nextTick(() => root.value?.querySelector(`[data-value="${moved}"]:not([data-outside-view])`)?.focus());
190
+ }
191
+ const minValue = computed(() => parseIsoDay(props.min));
192
+ const maxValue = computed(() => parseIsoDay(props.max));
193
+ const disabledFor = (date) => props.isDisabled?.(date.toString()) ?? false;
194
+ const unavailableFor = (date) => props.isDateUnavailable?.(date.toString()) ?? false;
195
+ const navBtn = "flex size-8 items-center justify-center rounded-control text-muted outline-none transition-[color,background-color,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] hover:bg-surface-soft hover:text-ink active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring";
196
+ const { class: rootClass, attrs: rest } = useMergedAttrs(
197
+ "inline-block rounded-card border border-line bg-surface-raised p-3"
198
+ );
199
+ return (_ctx, _cache) => {
200
+ return openBlock(), createBlock(unref(RangeCalendarRoot), mergeProps({
201
+ ref: (c) => root.value = c?.$el ?? null,
202
+ placeholder: placeholder.value,
203
+ "onUpdate:placeholder": _cache[0] || (_cache[0] = ($event) => placeholder.value = $event),
204
+ "model-value": draft.value,
205
+ "min-value": minValue.value,
206
+ "max-value": maxValue.value,
207
+ "is-date-disabled": disabledFor,
208
+ "is-date-unavailable": unavailableFor,
209
+ "number-of-months": __props.months,
210
+ "maximum-days": __props.maximumDays,
211
+ locale: __props.locale,
212
+ "weekday-format": __props.weekdayFormat,
213
+ "prevent-deselect": "",
214
+ "paged-navigation": "",
215
+ "fixed-weeks": "",
216
+ class: unref(rootClass)
217
+ }, unref(rest), {
218
+ "data-dragging": dragging.value || void 0,
219
+ "onUpdate:modelValue": onUpdate,
220
+ onPointerdown: onPointerDown,
221
+ onPointermove: onPointerMove,
222
+ onPointerup: onPointerUp,
223
+ onPointercancel: onPointerUp,
224
+ onClickCapture,
225
+ onContextmenu: onContextMenu,
226
+ onKeydownCapture
227
+ }), {
228
+ default: withCtx(({ weekDays, grid }) => [
229
+ createVNode(unref(RangeCalendarHeader), { class: "mb-2 flex items-center justify-between gap-2" }, {
230
+ default: withCtx(() => [
231
+ createVNode(unref(RangeCalendarPrev), {
232
+ class: normalizeClass(navBtn),
233
+ "aria-label": unref(text).previous
234
+ }, {
235
+ default: withCtx(() => [
236
+ createVNode(_sfc_main$1, {
237
+ name: "lucide:chevron-left",
238
+ size: 16
239
+ })
240
+ ]),
241
+ _: 1
242
+ }, 8, ["aria-label"]),
243
+ createVNode(unref(RangeCalendarHeading), { class: "text-sm font-semibold text-ink" }),
244
+ createVNode(unref(RangeCalendarNext), {
245
+ class: normalizeClass(navBtn),
246
+ "aria-label": unref(text).next
247
+ }, {
248
+ default: withCtx(() => [
249
+ createVNode(_sfc_main$1, {
250
+ name: "lucide:chevron-right",
251
+ size: 16
252
+ })
253
+ ]),
254
+ _: 1
255
+ }, 8, ["aria-label"])
256
+ ]),
257
+ _: 1
258
+ }),
259
+ createElementVNode("div", _hoisted_1, [
260
+ (openBlock(true), createElementBlock(Fragment, null, renderList(grid, (month) => {
261
+ return openBlock(), createBlock(unref(RangeCalendarGrid), {
262
+ key: month.value.toString(),
263
+ class: "border-collapse select-none"
264
+ }, {
265
+ default: withCtx(() => [
266
+ createVNode(unref(RangeCalendarGridHead), null, {
267
+ default: withCtx(() => [
268
+ createVNode(unref(RangeCalendarGridRow), { class: "mb-1 flex" }, {
269
+ default: withCtx(() => [
270
+ (openBlock(true), createElementBlock(Fragment, null, renderList(weekDays, (day) => {
271
+ return openBlock(), createBlock(unref(RangeCalendarHeadCell), {
272
+ key: day,
273
+ class: "w-9 text-center text-[11px] font-medium text-muted"
274
+ }, {
275
+ default: withCtx(() => [
276
+ createTextVNode(toDisplayString(day), 1)
277
+ ]),
278
+ _: 2
279
+ }, 1024);
280
+ }), 128))
281
+ ]),
282
+ _: 2
283
+ }, 1024)
284
+ ]),
285
+ _: 2
286
+ }, 1024),
287
+ createVNode(unref(RangeCalendarGridBody), null, {
288
+ default: withCtx(() => [
289
+ (openBlock(true), createElementBlock(Fragment, null, renderList(month.rows, (weekDates, i) => {
290
+ return openBlock(), createBlock(unref(RangeCalendarGridRow), {
291
+ key: `w-${i}`,
292
+ class: "flex"
293
+ }, {
294
+ default: withCtx(() => [
295
+ (openBlock(true), createElementBlock(Fragment, null, renderList(weekDates, (weekDate) => {
296
+ return openBlock(), createBlock(unref(RangeCalendarCell), {
297
+ key: weekDate.toString(),
298
+ date: weekDate,
299
+ class: "py-0.5"
300
+ }, {
301
+ default: withCtx(() => [
302
+ createVNode(unref(RangeCalendarCellTrigger), {
303
+ day: weekDate,
304
+ month: month.value,
305
+ class: "flex h-8 w-9 items-center justify-center rounded-control text-sm text-ink outline-none transition-[color,background-color] duration-[var(--duration-fast)] hover:bg-surface-soft focus-visible:ring-2 focus-visible:ring-ring data-[outside-view]:text-muted/40 data-[today]:font-semibold data-[today]:not-data-[selected]:text-brand data-[selected]:rounded-none data-[selected]:bg-brand-soft data-[highlighted]:rounded-none data-[highlighted]:bg-brand-soft/60 data-[selection-start]:rounded-l-control data-[highlighted-start]:rounded-l-control data-[selection-end]:rounded-r-control data-[highlighted-end]:rounded-r-control data-[selection-start]:bg-brand data-[selection-start]:font-semibold data-[selection-start]:text-ink-inverse data-[selection-end]:bg-brand data-[selection-end]:font-semibold data-[selection-end]:text-ink-inverse data-[outside-view]:data-[selected]:bg-transparent data-[outside-view]:data-[highlighted]:bg-transparent data-[disabled]:pointer-events-none data-[disabled]:opacity-35 data-[unavailable]:pointer-events-none data-[unavailable]:line-through data-[unavailable]:opacity-35 data-[selection-start]:cursor-grab data-[selection-end]:cursor-grab data-[selection-start]:touch-none data-[selection-end]:touch-none [-webkit-touch-callout:none] in-data-[dragging]:cursor-grabbing"
306
+ }, null, 8, ["day", "month"])
307
+ ]),
308
+ _: 2
309
+ }, 1032, ["date"]);
310
+ }), 128))
311
+ ]),
312
+ _: 2
313
+ }, 1024);
314
+ }), 128))
315
+ ]),
316
+ _: 2
317
+ }, 1024)
318
+ ]),
319
+ _: 2
320
+ }, 1024);
321
+ }), 128))
322
+ ])
323
+ ]),
324
+ _: 1
325
+ }, 16, ["placeholder", "model-value", "min-value", "max-value", "number-of-months", "maximum-days", "locale", "weekday-format", "class", "data-dragging"]);
326
+ };
327
+ }
328
+ });
329
+ export {
330
+ _sfc_main as _
331
+ };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, Transition, withCtx, renderSlot, createTextVNode, toDisplayString } from "vue";
2
- import '../assets/LpRollingText-CR1mb0Vt.css';const _sfc_main = /* @__PURE__ */ defineComponent({
2
+ import '../assets/LpRollingText-BGnE6q9j.css';const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "LpRollingText",
4
4
  props: {
5
5
  value: {},