@stachelock/ui 0.3.1 → 0.5.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 (714) hide show
  1. package/dist/{AlertModal.vue_vue_type_script_setup_true_lang-CxwewAVy.js → AlertModal.vue_vue_type_script_setup_true_lang-C6q8Mpl4.js} +2 -2
  2. package/dist/{AlertModal.vue_vue_type_script_setup_true_lang-CxwewAVy.js.map → AlertModal.vue_vue_type_script_setup_true_lang-C6q8Mpl4.js.map} +1 -1
  3. package/dist/{BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-B570pdYL.js → BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-C8msTrTn.js} +6 -6
  4. package/dist/{BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-B570pdYL.js.map → BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-C8msTrTn.js.map} +1 -1
  5. package/dist/{BarChart.vue_vue_type_script_setup_true_lang-Dnuzd7vZ.js → BarChart.vue_vue_type_script_setup_true_lang-xCb0DCbf.js} +19 -19
  6. package/dist/{BarChart.vue_vue_type_script_setup_true_lang-Dnuzd7vZ.js.map → BarChart.vue_vue_type_script_setup_true_lang-xCb0DCbf.js.map} +1 -1
  7. package/dist/{BaseModal.vue_vue_type_script_setup_true_lang-Cr_GAD6Q.js → BaseModal.vue_vue_type_script_setup_true_lang-B67Pt3tW.js} +5 -6
  8. package/dist/{BaseModal.vue_vue_type_script_setup_true_lang-Cr_GAD6Q.js.map → BaseModal.vue_vue_type_script_setup_true_lang-B67Pt3tW.js.map} +1 -1
  9. package/dist/{CalendarHeader.vue_vue_type_script_setup_true_lang-DRwe4rw8.js → CalendarHeader.vue_vue_type_script_setup_true_lang-CkSUiLOH.js} +109 -108
  10. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-CkSUiLOH.js.map +1 -0
  11. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-BikR9rgi.js +187 -0
  12. package/dist/{CheckboxInput.vue_vue_type_script_setup_true_lang-B8wJVkPP.js.map → CheckboxInput.vue_vue_type_script_setup_true_lang-BikR9rgi.js.map} +1 -1
  13. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-kEj-NYqm.js +1362 -0
  14. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-kEj-NYqm.js.map +1 -0
  15. package/dist/{ComingSoon.vue_vue_type_script_setup_true_lang-C5GU-yiK.js → ComingSoon.vue_vue_type_script_setup_true_lang-CJ8FXE42.js} +19 -19
  16. package/dist/{ComingSoon.vue_vue_type_script_setup_true_lang-C5GU-yiK.js.map → ComingSoon.vue_vue_type_script_setup_true_lang-CJ8FXE42.js.map} +1 -1
  17. package/dist/{DashboardLayout.vue_vue_type_script_setup_true_lang-DV-XVWqh.js → DashboardLayout.vue_vue_type_script_setup_true_lang-B0M6-9os.js} +7 -8
  18. package/dist/{DashboardLayout.vue_vue_type_script_setup_true_lang-DV-XVWqh.js.map → DashboardLayout.vue_vue_type_script_setup_true_lang-B0M6-9os.js.map} +1 -1
  19. package/dist/DatepickerInput.vue_vue_type_style_index_0_lang-BdkGLw0H.js.map +1 -1
  20. package/dist/{DayCalendar.vue_vue_type_script_setup_true_lang-BV9vYYuX.js → DayCalendar.vue_vue_type_script_setup_true_lang-8al4Fotu.js} +47 -47
  21. package/dist/{DayCalendar.vue_vue_type_script_setup_true_lang-BV9vYYuX.js.map → DayCalendar.vue_vue_type_script_setup_true_lang-8al4Fotu.js.map} +1 -1
  22. package/dist/{DisclosureWrapper.vue_vue_type_script_setup_true_lang-B-Mr_vdx.js → DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js} +38 -38
  23. package/dist/{DisclosureWrapper.vue_vue_type_script_setup_true_lang-B-Mr_vdx.js.map → DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js.map} +1 -1
  24. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-CxSaO5Cl.js +253 -0
  25. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-CxSaO5Cl.js.map +1 -0
  26. package/dist/{DynamicFormField.vue_vue_type_script_setup_true_lang-Ct8b80dM.js → DynamicFormField.vue_vue_type_script_setup_true_lang-CSLSRFM7.js} +16 -16
  27. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-CSLSRFM7.js.map +1 -0
  28. package/dist/EmailInput.vue_vue_type_script_setup_true_lang-BicPMIop.js +122 -0
  29. package/dist/{EmailInput.vue_vue_type_script_setup_true_lang-Dhfgs2Jn.js.map → EmailInput.vue_vue_type_script_setup_true_lang-BicPMIop.js.map} +1 -1
  30. package/dist/{EmptyInput.vue_vue_type_script_setup_true_lang-BDxgc5Bs.js → EmptyInput.vue_vue_type_script_setup_true_lang-FWDCFF2c.js} +9 -9
  31. package/dist/{EmptyInput.vue_vue_type_script_setup_true_lang-BDxgc5Bs.js.map → EmptyInput.vue_vue_type_script_setup_true_lang-FWDCFF2c.js.map} +1 -1
  32. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-7mcKkOWP.js +74 -0
  33. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-7mcKkOWP.js.map +1 -0
  34. package/dist/{EventsList.vue_vue_type_script_setup_true_lang-D3q9wJ4E.js → EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js} +30 -31
  35. package/dist/{EventsList.vue_vue_type_script_setup_true_lang-D3q9wJ4E.js.map → EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js.map} +1 -1
  36. package/dist/{FunnelChart.vue_vue_type_script_setup_true_lang-B8QYlJ-s.js → FunnelChart.vue_vue_type_script_setup_true_lang-B4pH6xCV.js} +12 -12
  37. package/dist/{FunnelChart.vue_vue_type_script_setup_true_lang-B8QYlJ-s.js.map → FunnelChart.vue_vue_type_script_setup_true_lang-B4pH6xCV.js.map} +1 -1
  38. package/dist/{HiddenInput.vue_vue_type_script_setup_true_lang-DYdvWmVE.js → HiddenInput.vue_vue_type_script_setup_true_lang-PtGZ4eLW.js} +10 -10
  39. package/dist/{HiddenInput.vue_vue_type_script_setup_true_lang-DYdvWmVE.js.map → HiddenInput.vue_vue_type_script_setup_true_lang-PtGZ4eLW.js.map} +1 -1
  40. package/dist/{InlineTabs.vue_vue_type_script_setup_true_lang-DhkX5sWS.js → InlineTabs.vue_vue_type_script_setup_true_lang-CD0lnkUm.js} +29 -29
  41. package/dist/{InlineTabs.vue_vue_type_script_setup_true_lang-DhkX5sWS.js.map → InlineTabs.vue_vue_type_script_setup_true_lang-CD0lnkUm.js.map} +1 -1
  42. package/dist/{LineChart.vue_vue_type_script_setup_true_lang-DszQ-a5L.js → LineChart.vue_vue_type_script_setup_true_lang-DJo0edLJ.js} +17 -17
  43. package/dist/{LineChart.vue_vue_type_script_setup_true_lang-DszQ-a5L.js.map → LineChart.vue_vue_type_script_setup_true_lang-DJo0edLJ.js.map} +1 -1
  44. package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-swmHdR0_.js +36 -0
  45. package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-CwOOShcM.js.map → LottieAnimation.vue_vue_type_script_setup_true_lang-swmHdR0_.js.map} +1 -1
  46. package/dist/{MonthCalendar.vue_vue_type_style_index_0_lang-CnX3Ih0W.js → MonthCalendar.vue_vue_type_style_index_0_lang-Cyzq7A9j.js} +2 -2
  47. package/dist/{MonthCalendar.vue_vue_type_style_index_0_lang-CnX3Ih0W.js.map → MonthCalendar.vue_vue_type_style_index_0_lang-Cyzq7A9j.js.map} +1 -1
  48. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-BWq5fpEm.js +30 -0
  49. package/dist/{NavigationGroup.vue_vue_type_script_setup_true_lang-2tAB9Hbx.js.map → NavigationGroup.vue_vue_type_script_setup_true_lang-BWq5fpEm.js.map} +1 -1
  50. package/dist/{NavigationItem.vue_vue_type_script_setup_true_lang-CEsuYl3S.js → NavigationItem.vue_vue_type_script_setup_true_lang-C8aX-84Q.js} +18 -18
  51. package/dist/{NavigationItem.vue_vue_type_script_setup_true_lang-CEsuYl3S.js.map → NavigationItem.vue_vue_type_script_setup_true_lang-C8aX-84Q.js.map} +1 -1
  52. package/dist/NotificationContainer.vue_vue_type_style_index_0_lang-DSfNw4Ge.js +110 -0
  53. package/dist/NotificationContainer.vue_vue_type_style_index_0_lang-DSfNw4Ge.js.map +1 -0
  54. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-CU__ORw8.js +238 -0
  55. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-CU__ORw8.js.map +1 -0
  56. package/dist/{PieChart.vue_vue_type_script_setup_true_lang-DJRcsty7.js → PieChart.vue_vue_type_script_setup_true_lang-e3wsA9O4.js} +12 -12
  57. package/dist/{PieChart.vue_vue_type_script_setup_true_lang-DJRcsty7.js.map → PieChart.vue_vue_type_script_setup_true_lang-e3wsA9O4.js.map} +1 -1
  58. package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-DkABeWJt.js +130 -0
  59. package/dist/{ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-Cri9BiBy.js.map → ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-DkABeWJt.js.map} +1 -1
  60. package/dist/{ProjectLogo.vue_vue_type_script_setup_true_lang-CtroDq7L.js → ProjectLogo.vue_vue_type_script_setup_true_lang-DYjp-RNh.js} +24 -24
  61. package/dist/{ProjectLogo.vue_vue_type_script_setup_true_lang-CtroDq7L.js.map → ProjectLogo.vue_vue_type_script_setup_true_lang-DYjp-RNh.js.map} +1 -1
  62. package/dist/{SelectInput.vue_vue_type_script_setup_true_lang--yUL7bcx.js → SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js} +111 -111
  63. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js.map +1 -0
  64. package/dist/{SelectTextInput.vue_vue_type_script_setup_true_lang-B2Gw_se2.js → SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js} +2 -2
  65. package/dist/{SelectTextInput.vue_vue_type_script_setup_true_lang-B2Gw_se2.js.map → SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js.map} +1 -1
  66. package/dist/{SidebarLayout.vue_vue_type_script_setup_true_lang-BD2PF5xp.js → SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js} +9 -10
  67. package/dist/{SidebarLayout.vue_vue_type_script_setup_true_lang-BD2PF5xp.js.map → SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js.map} +1 -1
  68. package/dist/{SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js → SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js} +17 -17
  69. package/dist/{SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js.map → SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js.map} +1 -1
  70. package/dist/{StatCard.vue_vue_type_script_setup_true_lang-DTOT0-WB.js → StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js} +40 -40
  71. package/dist/{StatCard.vue_vue_type_script_setup_true_lang-DTOT0-WB.js.map → StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js.map} +1 -1
  72. package/dist/{StepperPanels.vue_vue_type_script_setup_true_lang-BtHrfqFI.js → StepperPanels.vue_vue_type_script_setup_true_lang-D6Fv7iz3.js} +38 -38
  73. package/dist/{StepperPanels.vue_vue_type_script_setup_true_lang-BtHrfqFI.js.map → StepperPanels.vue_vue_type_script_setup_true_lang-D6Fv7iz3.js.map} +1 -1
  74. package/dist/{SwitchInput.vue_vue_type_script_setup_true_lang-D6M1qwP1.js → SwitchInput.vue_vue_type_script_setup_true_lang-C88FcxuK.js} +110 -108
  75. package/dist/{SwitchInput.vue_vue_type_script_setup_true_lang-D6M1qwP1.js.map → SwitchInput.vue_vue_type_script_setup_true_lang-C88FcxuK.js.map} +1 -1
  76. package/dist/{SwitchInputGroup.vue_vue_type_script_setup_true_lang-BNKKEAMq.js → SwitchInputGroup.vue_vue_type_script_setup_true_lang-CK9JWl4F.js} +2 -2
  77. package/dist/{SwitchInputGroup.vue_vue_type_script_setup_true_lang-BNKKEAMq.js.map → SwitchInputGroup.vue_vue_type_script_setup_true_lang-CK9JWl4F.js.map} +1 -1
  78. package/dist/{TabGroup.vue_vue_type_script_setup_true_lang-DrhDwLL3.js → TabGroup.vue_vue_type_script_setup_true_lang-DVVeOgWH.js} +3 -3
  79. package/dist/{TabGroup.vue_vue_type_script_setup_true_lang-DrhDwLL3.js.map → TabGroup.vue_vue_type_script_setup_true_lang-DVVeOgWH.js.map} +1 -1
  80. package/dist/{TabGroupUnderline.vue_vue_type_script_setup_true_lang-Di33js6c.js → TabGroupUnderline.vue_vue_type_script_setup_true_lang-_3XtOn3w.js} +32 -32
  81. package/dist/{TabGroupUnderline.vue_vue_type_script_setup_true_lang-Di33js6c.js.map → TabGroupUnderline.vue_vue_type_script_setup_true_lang-_3XtOn3w.js.map} +1 -1
  82. package/dist/{TabsInPills.vue_vue_type_script_setup_true_lang-CMxaK0Kw.js → TabsInPills.vue_vue_type_script_setup_true_lang-DY1NkXCQ.js} +21 -21
  83. package/dist/{TabsInPills.vue_vue_type_script_setup_true_lang-CMxaK0Kw.js.map → TabsInPills.vue_vue_type_script_setup_true_lang-DY1NkXCQ.js.map} +1 -1
  84. package/dist/{TagifyInput.vue_vue_type_script_setup_true_lang-CAK6ZIiz.js → TagifyInput.vue_vue_type_script_setup_true_lang-Da6-pRJ2.js} +2 -2
  85. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-Da6-pRJ2.js.map +1 -0
  86. package/dist/{TextAreaInput.vue_vue_type_script_setup_true_lang-BMpc-5ln.js → TextAreaInput.vue_vue_type_script_setup_true_lang-Cf0MJobG.js} +47 -47
  87. package/dist/{TextAreaInput.vue_vue_type_script_setup_true_lang-BMpc-5ln.js.map → TextAreaInput.vue_vue_type_script_setup_true_lang-Cf0MJobG.js.map} +1 -1
  88. package/dist/{UiAvatar.vue_vue_type_script_setup_true_lang-Ci7VLRZx.js → UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js} +36 -36
  89. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js.map +1 -0
  90. package/dist/{UiBadge.vue_vue_type_script_setup_true_lang-CV8WVEXL.js → UiBadge.vue_vue_type_script_setup_true_lang-DOtbLb9x.js} +19 -19
  91. package/dist/{UiBadge.vue_vue_type_script_setup_true_lang-CV8WVEXL.js.map → UiBadge.vue_vue_type_script_setup_true_lang-DOtbLb9x.js.map} +1 -1
  92. package/dist/{UiButtonGroup.vue_vue_type_script_setup_true_lang-BKyznfxi.js → UiButtonGroup.vue_vue_type_script_setup_true_lang-CVwXB-cb.js} +28 -28
  93. package/dist/{UiButtonGroup.vue_vue_type_script_setup_true_lang-BKyznfxi.js.map → UiButtonGroup.vue_vue_type_script_setup_true_lang-CVwXB-cb.js.map} +1 -1
  94. package/dist/{UiCheckbox.vue_vue_type_script_setup_true_lang-B5fPB7PH.js → UiCheckbox.vue_vue_type_script_setup_true_lang-BxyM_F-V.js} +37 -37
  95. package/dist/{UiCheckbox.vue_vue_type_script_setup_true_lang-B5fPB7PH.js.map → UiCheckbox.vue_vue_type_script_setup_true_lang-BxyM_F-V.js.map} +1 -1
  96. package/dist/{UiLoading.vue_vue_type_script_setup_true_lang-DldleD-3.js → UiLoading.vue_vue_type_script_setup_true_lang-rNvtzKbq.js} +42 -42
  97. package/dist/{UiLoading.vue_vue_type_script_setup_true_lang-DldleD-3.js.map → UiLoading.vue_vue_type_script_setup_true_lang-rNvtzKbq.js.map} +1 -1
  98. package/dist/{UiMenu.vue_vue_type_script_setup_true_lang-aJddpshR.js → UiMenu.vue_vue_type_script_setup_true_lang-bQdfCzk6.js} +74 -74
  99. package/dist/{UiMenu.vue_vue_type_script_setup_true_lang-aJddpshR.js.map → UiMenu.vue_vue_type_script_setup_true_lang-bQdfCzk6.js.map} +1 -1
  100. package/dist/{UiModal.vue_vue_type_script_setup_true_lang-CFgLuifQ.js → UiModal.vue_vue_type_script_setup_true_lang-CpwFUDVU.js} +9 -10
  101. package/dist/{UiModal.vue_vue_type_script_setup_true_lang-CFgLuifQ.js.map → UiModal.vue_vue_type_script_setup_true_lang-CpwFUDVU.js.map} +1 -1
  102. package/dist/{UiNavLink.vue_vue_type_script_setup_true_lang-C23h6Do0.js → UiNavLink.vue_vue_type_script_setup_true_lang-DnWMn40M.js} +2 -2
  103. package/dist/{UiNavLink.vue_vue_type_script_setup_true_lang-C23h6Do0.js.map → UiNavLink.vue_vue_type_script_setup_true_lang-DnWMn40M.js.map} +1 -1
  104. package/dist/{UiProgressBar.vue_vue_type_script_setup_true_lang-BioTMORv.js → UiProgressBar.vue_vue_type_script_setup_true_lang-BCh4orZW.js} +24 -24
  105. package/dist/{UiProgressBar.vue_vue_type_script_setup_true_lang-BioTMORv.js.map → UiProgressBar.vue_vue_type_script_setup_true_lang-BCh4orZW.js.map} +1 -1
  106. package/dist/{UiTable.vue_vue_type_script_setup_true_lang-BuOCaPzi.js → UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js} +80 -83
  107. package/dist/UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js.map +1 -0
  108. package/dist/{UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js → UiTransition.vue_vue_type_script_setup_true_lang-C4jb9I-3.js} +15 -15
  109. package/dist/{UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js.map → UiTransition.vue_vue_type_script_setup_true_lang-C4jb9I-3.js.map} +1 -1
  110. package/dist/{YearCalendar.vue_vue_type_script_setup_true_lang-C01PTLg8.js → YearCalendar.vue_vue_type_script_setup_true_lang-CfKSpLLN.js} +15 -15
  111. package/dist/{YearCalendar.vue_vue_type_script_setup_true_lang-C01PTLg8.js.map → YearCalendar.vue_vue_type_script_setup_true_lang-CfKSpLLN.js.map} +1 -1
  112. package/dist/{calendar-DyIP7WGv.js → calendar-BlSSD4nO.js} +2 -2
  113. package/dist/calendar-BlSSD4nO.js.map +1 -0
  114. package/dist/calendars/CalendarDashboard.d.ts +1 -3
  115. package/dist/calendars/CalendarDashboard.js +34 -36
  116. package/dist/calendars/CalendarDashboard.js.map +1 -1
  117. package/dist/calendars/CalendarHeader.d.ts +1 -3
  118. package/dist/calendars/CalendarHeader.js +1 -1
  119. package/dist/calendars/DayCalendar.d.ts +1 -3
  120. package/dist/calendars/DayCalendar.js +1 -1
  121. package/dist/calendars/EventCard.d.ts +1 -3
  122. package/dist/calendars/EventsList.d.ts +1 -3
  123. package/dist/calendars/EventsList.js +1 -1
  124. package/dist/calendars/MonthCalendar.d.ts +1 -3
  125. package/dist/calendars/MonthCalendar.js +1 -1
  126. package/dist/calendars/WeekCalendar.d.ts +1 -3
  127. package/dist/calendars/WeekCalendar.js +118 -118
  128. package/dist/calendars/WeekCalendar.js.map +1 -1
  129. package/dist/calendars/YearCalendar.d.ts +1 -3
  130. package/dist/calendars/YearCalendar.js +1 -1
  131. package/dist/charts/BarChart.d.ts +1 -3
  132. package/dist/charts/BarChart.js +1 -1
  133. package/dist/charts/BaseChart.d.ts +1 -3
  134. package/dist/charts/BaseChart.js +54 -54
  135. package/dist/charts/BaseChart.js.map +1 -1
  136. package/dist/charts/FunnelChart.d.ts +1 -3
  137. package/dist/charts/FunnelChart.js +1 -1
  138. package/dist/charts/LineChart.d.ts +1 -3
  139. package/dist/charts/LineChart.js +1 -1
  140. package/dist/charts/PieChart.d.ts +1 -3
  141. package/dist/charts/PieChart.js +1 -1
  142. package/dist/charts/SparklineChart.d.ts +1 -3
  143. package/dist/charts/SparklineChart.js +1 -1
  144. package/dist/charts/StatCard.d.ts +1 -3
  145. package/dist/charts/StatCard.js +1 -1
  146. package/dist/charts/chartTheme.d.ts +3 -0
  147. package/dist/charts/index.d.ts +1 -0
  148. package/dist/charts/index.js +6 -6
  149. package/dist/components/Avatar.d.ts +1 -3
  150. package/dist/components/Avatar.js +1 -1
  151. package/dist/components/Badge.d.ts +1 -3
  152. package/dist/components/Badge.js +1 -1
  153. package/dist/components/Banner.d.ts +1 -3
  154. package/dist/components/Banner.js +69 -69
  155. package/dist/components/Banner.js.map +1 -1
  156. package/dist/components/Breadcrumb.d.ts +1 -3
  157. package/dist/components/Breadcrumb.js +5 -5
  158. package/dist/components/Breadcrumb.js.map +1 -1
  159. package/dist/components/Button.d.ts +1 -3
  160. package/dist/components/Button.js +29 -29
  161. package/dist/components/Button.js.map +1 -1
  162. package/dist/components/ButtonGroup.d.ts +1 -3
  163. package/dist/components/ButtonGroup.js +1 -1
  164. package/dist/components/Checkbox.d.ts +1 -3
  165. package/dist/components/Checkbox.js +1 -1
  166. package/dist/components/CloudinaryImage.d.ts +1 -3
  167. package/dist/components/Loading.d.ts +1 -3
  168. package/dist/components/Loading.js +1 -1
  169. package/dist/components/LoadingDots.d.ts +1 -3
  170. package/dist/components/LottieAnimation.d.ts +1 -3
  171. package/dist/components/LottieAnimation.js +1 -1
  172. package/dist/components/Menu.d.ts +1 -3
  173. package/dist/components/Menu.js +1 -1
  174. package/dist/components/Modal.d.ts +1 -3
  175. package/dist/components/Modal.js +1 -1
  176. package/dist/components/NavLink.d.ts +1 -3
  177. package/dist/components/NavLink.js +1 -1
  178. package/dist/components/ProgressBar.d.ts +1 -3
  179. package/dist/components/ProgressBar.js +1 -1
  180. package/dist/components/RadialProgressBar.d.ts +1 -3
  181. package/dist/components/RadialProgressBar.js +1 -1
  182. package/dist/components/Table.d.ts +1 -3
  183. package/dist/components/Table.js +1 -1
  184. package/dist/components/Transition.d.ts +1 -3
  185. package/dist/components/Transition.js +1 -1
  186. package/dist/composables/index.d.ts +1 -0
  187. package/dist/composables/useCalendar.d.ts +3 -0
  188. package/dist/composables/useCalendar.js +1 -1
  189. package/dist/composables/useFormValidation.d.ts +3 -0
  190. package/dist/composables/useMap.d.ts +3 -0
  191. package/dist/composables/useModal.d.ts +3 -0
  192. package/dist/composables/useNotifications.d.ts +3 -0
  193. package/dist/composables/useNotifications.js +221 -58
  194. package/dist/composables/useNotifications.js.map +1 -1
  195. package/dist/composables/useTabs.d.ts +1 -0
  196. package/dist/composables/useTheme.d.ts +3 -0
  197. package/dist/{dialog-B2WA4G25.js → dialog-BJ2Ld8l3.js} +2 -2
  198. package/dist/{dialog-B2WA4G25.js.map → dialog-BJ2Ld8l3.js.map} +1 -1
  199. package/dist/empty-state/ComingSoon.d.ts +1 -3
  200. package/dist/empty-state/ComingSoon.js +1 -1
  201. package/dist/empty-state/EmptyState.d.ts +1 -3
  202. package/dist/empty-state/EmptyState.js +1 -1
  203. package/dist/empty-state/index.d.ts +1 -0
  204. package/dist/empty-state/index.js +2 -2
  205. package/dist/forms/DynamicForm.d.ts +1 -3
  206. package/dist/forms/DynamicForm.js +1 -1
  207. package/dist/forms/DynamicFormField.d.ts +1 -3
  208. package/dist/forms/DynamicFormField.js +1 -1
  209. package/dist/forms/FormFieldWrapper.d.ts +1 -3
  210. package/dist/forms/FormFieldWrapper.js +56 -56
  211. package/dist/forms/FormFieldWrapper.js.map +1 -1
  212. package/dist/index.d.ts +3 -0
  213. package/dist/index.js +559 -565
  214. package/dist/index.js.map +1 -1
  215. package/dist/inputs/AddDeleteButtonGroup.d.ts +1 -3
  216. package/dist/inputs/CheckboxInput.d.ts +1 -3
  217. package/dist/inputs/CheckboxInput.js +1 -1
  218. package/dist/inputs/ComboboxInput.d.ts +1 -3
  219. package/dist/inputs/ComboboxInput.js +1 -1
  220. package/dist/inputs/DatepickerInput.d.ts +1 -3
  221. package/dist/inputs/EmailInput.d.ts +1 -3
  222. package/dist/inputs/EmailInput.js +1 -1
  223. package/dist/inputs/EmptyInput.d.ts +1 -3
  224. package/dist/inputs/EmptyInput.js +1 -1
  225. package/dist/inputs/FileDropzoneInput.d.ts +1 -3
  226. package/dist/inputs/HiddenInput.d.ts +1 -3
  227. package/dist/inputs/HiddenInput.js +1 -1
  228. package/dist/inputs/PhoneInput.d.ts +1 -3
  229. package/dist/inputs/PhoneInput.js +33 -23
  230. package/dist/inputs/PhoneInput.js.map +1 -1
  231. package/dist/inputs/RichTextInput.d.ts +1 -3
  232. package/dist/inputs/RichTextInput.js +693 -693
  233. package/dist/inputs/RichTextInput.js.map +1 -1
  234. package/dist/inputs/SelectInput.d.ts +1 -3
  235. package/dist/inputs/SelectInput.js +1 -1
  236. package/dist/inputs/SelectTextInput.d.ts +1 -3
  237. package/dist/inputs/SelectTextInput.js +1 -1
  238. package/dist/inputs/SwitchInput.d.ts +1 -3
  239. package/dist/inputs/SwitchInput.js +1 -1
  240. package/dist/inputs/SwitchInputGroup.d.ts +1 -3
  241. package/dist/inputs/SwitchInputGroup.js +1 -1
  242. package/dist/inputs/TagifyInput.d.ts +1 -3
  243. package/dist/inputs/TagifyInput.js +1 -1
  244. package/dist/inputs/TextAreaInput.d.ts +1 -3
  245. package/dist/inputs/TextAreaInput.js +1 -1
  246. package/dist/inputs/TextInput.d.ts +1 -3
  247. package/dist/inputs/TextInput.js +43 -43
  248. package/dist/inputs/TextInput.js.map +1 -1
  249. package/dist/layouts/DashboardLayout.d.ts +1 -3
  250. package/dist/layouts/DashboardLayout.js +1 -1
  251. package/dist/layouts/DefaultLayout.d.ts +1 -3
  252. package/dist/layouts/HeaderLayout.d.ts +1 -3
  253. package/dist/layouts/NavigationGroup.d.ts +1 -3
  254. package/dist/layouts/NavigationGroup.js +1 -1
  255. package/dist/layouts/NavigationItem.d.ts +1 -3
  256. package/dist/layouts/NavigationItem.js +1 -1
  257. package/dist/layouts/ProfileHeaderAvatar.d.ts +1 -3
  258. package/dist/layouts/ProfileHeaderAvatar.js +1 -1
  259. package/dist/layouts/ProjectLogo.d.ts +1 -3
  260. package/dist/layouts/ProjectLogo.js +1 -1
  261. package/dist/layouts/SidebarLayout.d.ts +1 -3
  262. package/dist/layouts/SidebarLayout.js +1 -1
  263. package/dist/{listbox-p2_4hUSD.js → listbox-YaWWZiiG.js} +2 -2
  264. package/dist/{listbox-p2_4hUSD.js.map → listbox-YaWWZiiG.js.map} +1 -1
  265. package/dist/loading/ContentSkeleton.d.ts +1 -3
  266. package/dist/loading/ContentSkeleton.js +32 -32
  267. package/dist/loading/ContentSkeleton.js.map +1 -1
  268. package/dist/loading/SmartLoadingIndicator.d.ts +1 -3
  269. package/dist/loading/SmartLoadingIndicator.js +92 -92
  270. package/dist/loading/SmartLoadingIndicator.js.map +1 -1
  271. package/dist/loading/index.d.ts +1 -0
  272. package/dist/maps/GoogleMap.d.ts +1 -3
  273. package/dist/maps/GoogleMap.js +2 -2
  274. package/dist/maps/GoogleMap.js.map +1 -1
  275. package/dist/maps/UiInfoWindow.d.ts +1 -3
  276. package/dist/maps/UiMap.d.ts +1 -3
  277. package/dist/maps/UiMap.js +18 -15
  278. package/dist/maps/UiMap.js.map +1 -1
  279. package/dist/maps/UiMapAll.d.ts +1 -3
  280. package/dist/maps/UiMapMarker.d.ts +1 -3
  281. package/dist/maps/index.d.ts +1 -0
  282. package/dist/modals/AlertModal.d.ts +1 -3
  283. package/dist/modals/AlertModal.js +1 -1
  284. package/dist/modals/BaseModal.d.ts +1 -3
  285. package/dist/modals/BaseModal.js +1 -1
  286. package/dist/modals/ImageCropperModal.d.ts +1 -3
  287. package/dist/modals/ImageCropperModal.js +182 -185
  288. package/dist/modals/ImageCropperModal.js.map +1 -1
  289. package/dist/notifications/NotificationContainer.d.ts +1 -3
  290. package/dist/notifications/NotificationContainer.js +2 -22
  291. package/dist/notifications/NotificationContainer.js.map +1 -1
  292. package/dist/notifications/NotificationToast.d.ts +1 -3
  293. package/dist/notifications/NotificationToast.js +1 -1
  294. package/dist/notifications/index.d.ts +1 -0
  295. package/dist/notifications/index.js +4 -4
  296. package/dist/src/components/CloudinaryImage.d.ts +7 -9
  297. package/dist/src/components/LottieAnimation.d.ts +6 -38
  298. package/dist/src/components/ThemeDebugModal.d.ts +6 -17
  299. package/dist/src/components/UiAvatar.d.ts +26 -37
  300. package/dist/src/components/UiBadge.d.ts +6 -34
  301. package/dist/src/components/UiBanner.d.ts +34 -108
  302. package/dist/src/components/UiBreadcrumb.d.ts +10 -12
  303. package/dist/src/components/UiButton.d.ts +13 -67
  304. package/dist/src/components/UiButtonGroup.d.ts +7 -38
  305. package/dist/src/components/UiCheckbox.d.ts +8 -34
  306. package/dist/src/components/UiLoading.d.ts +2 -29
  307. package/dist/src/components/UiLoadingDots.d.ts +1 -2
  308. package/dist/src/components/UiMenu.d.ts +4 -33
  309. package/dist/src/components/UiModal.d.ts +3 -3
  310. package/dist/src/components/UiNavLink.d.ts +6 -41
  311. package/dist/src/components/UiProgressBar.d.ts +3 -33
  312. package/dist/src/components/UiRadialProgressBar.d.ts +3 -35
  313. package/dist/src/components/UiTable.d.ts +25 -68
  314. package/dist/src/components/UiTransition.d.ts +3 -27
  315. package/dist/src/components/calendars/CalendarDashboard.d.ts +5 -18
  316. package/dist/src/components/calendars/CalendarHeader.d.ts +8 -8
  317. package/dist/src/components/calendars/DayCalendar.d.ts +11 -18
  318. package/dist/src/components/calendars/EventCard.d.ts +1 -3
  319. package/dist/src/components/calendars/EventsList.d.ts +6 -19
  320. package/dist/src/components/calendars/MonthCalendar.d.ts +6 -31
  321. package/dist/src/components/calendars/WeekCalendar.d.ts +10 -17
  322. package/dist/src/components/calendars/YearCalendar.d.ts +5 -30
  323. package/dist/src/components/calendars/index.d.ts +0 -1
  324. package/dist/src/components/charts/BarChart.d.ts +6 -40
  325. package/dist/src/components/charts/FunnelChart.d.ts +5 -35
  326. package/dist/src/components/charts/LineChart.d.ts +6 -38
  327. package/dist/src/components/charts/PieChart.d.ts +6 -38
  328. package/dist/src/components/charts/SparklineChart.d.ts +3 -33
  329. package/dist/src/components/charts/StatCard.d.ts +2 -25
  330. package/dist/src/components/charts/chartTheme.d.ts +0 -2
  331. package/dist/src/components/charts/index.d.ts +0 -1
  332. package/dist/src/components/empty-state/ComingSoon.d.ts +2 -30
  333. package/dist/src/components/empty-state/EmptyState.d.ts +4 -27
  334. package/dist/src/components/empty-state/index.d.ts +0 -1
  335. package/dist/src/components/forms/DynamicForm.d.ts +21 -48
  336. package/dist/src/components/forms/DynamicFormField.d.ts +8 -19
  337. package/dist/src/components/forms/FormFieldWrapper.d.ts +14 -59
  338. package/dist/src/components/forms/index.d.ts +0 -1
  339. package/dist/src/components/index.d.ts +0 -1
  340. package/dist/src/components/inputs/AddDeleteButtonGroup.d.ts +3 -5
  341. package/dist/src/components/inputs/CheckboxInput.d.ts +10 -38
  342. package/dist/src/components/inputs/ComboboxInput.d.ts +13 -49
  343. package/dist/src/components/inputs/DatepickerInput.d.ts +1045 -43
  344. package/dist/src/components/inputs/EmailInput.d.ts +10 -55
  345. package/dist/src/components/inputs/EmptyInput.d.ts +2 -27
  346. package/dist/src/components/inputs/FileDropzoneInput.d.ts +8 -8
  347. package/dist/src/components/inputs/HiddenInput.d.ts +2 -24
  348. package/dist/src/components/inputs/InputsShowcase.d.ts +1 -2
  349. package/dist/src/components/inputs/PhoneInput.d.ts +79 -17
  350. package/dist/src/components/inputs/RichTextInput.d.ts +22 -81
  351. package/dist/src/components/inputs/SelectInput.d.ts +49 -43
  352. package/dist/src/components/inputs/SelectTextInput.d.ts +52 -13
  353. package/dist/src/components/inputs/SwitchInput.d.ts +115 -43
  354. package/dist/src/components/inputs/SwitchInputGroup.d.ts +2 -4
  355. package/dist/src/components/inputs/TagifyInput.d.ts +30 -21
  356. package/dist/src/components/inputs/TextAreaInput.d.ts +9 -36
  357. package/dist/src/components/inputs/TextInput.d.ts +13 -74
  358. package/dist/src/components/inputs/index.d.ts +0 -1
  359. package/dist/src/components/layouts/CardLayout.d.ts +20 -67
  360. package/dist/src/components/layouts/DashboardLayout.d.ts +8 -6
  361. package/dist/src/components/layouts/DefaultLayout.d.ts +1 -2
  362. package/dist/src/components/layouts/HeaderLayout.d.ts +4 -5
  363. package/dist/src/components/layouts/InfoCard.d.ts +2 -26
  364. package/dist/src/components/layouts/NavigationGroup.d.ts +5 -17
  365. package/dist/src/components/layouts/NavigationItem.d.ts +7 -25
  366. package/dist/src/components/layouts/ProfileHeaderAvatar.d.ts +10 -41
  367. package/dist/src/components/layouts/ProjectLogo.d.ts +2 -34
  368. package/dist/src/components/layouts/PropsTable.d.ts +2 -24
  369. package/dist/src/components/layouts/ShowcaseCard.d.ts +2 -30
  370. package/dist/src/components/layouts/ShowcaseLayout.d.ts +5 -29
  371. package/dist/src/components/layouts/SidebarLayout.d.ts +7 -5
  372. package/dist/src/components/layouts/StateDisplay.d.ts +2 -24
  373. package/dist/src/components/layouts/index.d.ts +0 -1
  374. package/dist/src/components/loading/ContentSkeleton.d.ts +2 -32
  375. package/dist/src/components/loading/SmartLoadingIndicator.d.ts +6 -48
  376. package/dist/src/components/loading/index.d.ts +0 -1
  377. package/dist/src/components/maps/GoogleMap.d.ts +7 -9
  378. package/dist/src/components/maps/UiInfoWindow.d.ts +229 -15
  379. package/dist/src/components/maps/UiMap.d.ts +5091 -102
  380. package/dist/src/components/maps/UiMapAll.d.ts +1130 -21
  381. package/dist/src/components/maps/UiMapMarker.d.ts +16 -18
  382. package/dist/src/components/maps/index.d.ts +0 -1
  383. package/dist/src/components/modals/AlertModal.d.ts +9 -11
  384. package/dist/src/components/modals/BaseModal.d.ts +6 -8
  385. package/dist/src/components/modals/ImageCropperModal.d.ts +379 -76
  386. package/dist/src/components/modals/index.d.ts +0 -1
  387. package/dist/src/components/notifications/NotificationContainer.d.ts +0 -1
  388. package/dist/src/components/notifications/NotificationToast.d.ts +9 -19
  389. package/dist/src/components/notifications/index.d.ts +0 -1
  390. package/dist/src/components/stepper/StepperPanels.d.ts +4 -15
  391. package/dist/src/components/stepper/index.d.ts +0 -1
  392. package/dist/src/components/tabs/InlineTabs.d.ts +4 -29
  393. package/dist/src/components/tabs/TabGroup.d.ts +6 -33
  394. package/dist/src/components/tabs/TabGroupUnderline.d.ts +6 -33
  395. package/dist/src/components/tabs/TabsInPills.d.ts +4 -27
  396. package/dist/src/components/tabs/index.d.ts +0 -1
  397. package/dist/src/components/wrappers/BackgroundGradientWrapper.d.ts +2 -38
  398. package/dist/src/components/wrappers/CardWrapper.d.ts +1 -2
  399. package/dist/src/components/wrappers/DisclosureWrapper.d.ts +2 -24
  400. package/dist/src/components/wrappers/FormErrorWrapper.d.ts +2 -26
  401. package/dist/src/components/wrappers/index.d.ts +0 -1
  402. package/dist/src/composables/index.d.ts +0 -1
  403. package/dist/src/composables/useCalendar.d.ts +4 -6
  404. package/dist/src/composables/useEventSegments.d.ts +0 -1
  405. package/dist/src/composables/useFormValidation.d.ts +0 -2
  406. package/dist/src/composables/useMap.d.ts +0 -2
  407. package/dist/src/composables/useModal.d.ts +0 -1
  408. package/dist/src/composables/useNotifications.d.ts +1308 -31
  409. package/dist/src/composables/useSimpleTabs.d.ts +0 -2
  410. package/dist/src/composables/useStringTransform.d.ts +0 -2
  411. package/dist/src/composables/useTabs.d.ts +0 -2
  412. package/dist/src/composables/useTheme.d.ts +0 -1
  413. package/dist/src/config/css-variables.d.ts +0 -2
  414. package/dist/src/config/design-tokens.d.ts +1 -2
  415. package/dist/src/config/index.d.ts +0 -1
  416. package/dist/src/dev.d.ts +0 -2
  417. package/dist/src/index.d.ts +0 -1
  418. package/dist/src/plugin/configure.d.ts +0 -2
  419. package/dist/src/plugin/index.d.ts +0 -1
  420. package/dist/src/types/avatars.d.ts +0 -1
  421. package/dist/src/types/badges.d.ts +0 -1
  422. package/dist/src/types/calendars.d.ts +12 -12
  423. package/dist/src/types/core.d.ts +3 -5
  424. package/dist/src/types/form.d.ts +15 -14
  425. package/dist/src/types/forms.d.ts +2 -2
  426. package/dist/src/types/index.d.ts +0 -1
  427. package/dist/src/types/inputs.d.ts +14 -10
  428. package/dist/src/types/layouts.d.ts +0 -2
  429. package/dist/src/types/loading.d.ts +0 -1
  430. package/dist/src/types/maps.d.ts +0 -1
  431. package/dist/src/types/navigation.d.ts +2 -2
  432. package/dist/src/types/tables.d.ts +8 -7
  433. package/dist/src/types/tabs.d.ts +0 -1
  434. package/dist/src/types/transitions.d.ts +0 -1
  435. package/dist/src/types/ui.d.ts +1 -3
  436. package/dist/src/utils/calendar.d.ts +1 -2
  437. package/dist/src/utils/component-registry.d.ts +0 -2
  438. package/dist/src/utils/countryCodes.d.ts +0 -1
  439. package/dist/src/utils/id.d.ts +0 -1
  440. package/dist/src/utils/index.d.ts +0 -1
  441. package/dist/src/utils/mapThemes.d.ts +0 -2
  442. package/dist/src/utils/phone.d.ts +0 -2
  443. package/dist/src/utils/transitions.d.ts +0 -1
  444. package/dist/src/views/ButtonsShowcase.d.ts +2 -0
  445. package/dist/src/views/CalendarsShowcase.d.ts +2 -0
  446. package/dist/src/views/CardsShowcase.d.ts +2 -0
  447. package/dist/src/views/ChartsShowcase.d.ts +2 -0
  448. package/dist/src/views/EmptyStatesShowcase.d.ts +2 -0
  449. package/dist/src/views/InputsShowcase.d.ts +2 -0
  450. package/dist/src/views/KitchenSink.d.ts +2 -0
  451. package/dist/src/views/LayoutsShowcase.d.ts +2 -0
  452. package/dist/src/views/LoadingShowcase.d.ts +2 -0
  453. package/dist/src/views/MapsShowcase.d.ts +2 -0
  454. package/dist/src/views/ModalsShowcase.d.ts +2 -0
  455. package/dist/src/views/NotificationsShowcase.d.ts +2 -0
  456. package/dist/src/views/StepperShowcase.d.ts +2 -0
  457. package/dist/src/views/TabsShowcase.d.ts +2 -0
  458. package/dist/src/views/ValidationDemo.d.ts +2 -0
  459. package/dist/src/views/WrappersShowcase.d.ts +2 -0
  460. package/dist/src/views/components/AvatarPage.d.ts +2 -0
  461. package/dist/src/views/components/BadgePage.d.ts +2 -0
  462. package/dist/src/views/components/BannerPage.d.ts +2 -0
  463. package/dist/src/views/components/BreadcrumbPage.d.ts +2 -0
  464. package/dist/src/views/components/ButtonPage.d.ts +2 -0
  465. package/dist/src/views/components/CloudinaryImagePage.d.ts +2 -0
  466. package/dist/src/views/components/LoadingPage.d.ts +2 -0
  467. package/dist/src/views/components/MenuPage.d.ts +2 -0
  468. package/dist/src/views/components/ModalPage.d.ts +2 -0
  469. package/dist/src/views/components/ProgressPage.d.ts +2 -0
  470. package/dist/src/views/components/RichTextInputPage.d.ts +2 -0
  471. package/dist/src/views/components/TablePage.d.ts +2 -0
  472. package/dist/src/views/components/TextInputPage.d.ts +2 -0
  473. package/dist/src/views/components/TransitionPage.d.ts +2 -0
  474. package/dist/src/views/components/index.d.ts +0 -1
  475. package/dist/src/views/examples/CheckoutFormExample.d.ts +2 -0
  476. package/dist/src/views/examples/ContactFormExample.d.ts +2 -0
  477. package/dist/src/views/examples/RegistrationFormExample.d.ts +2 -0
  478. package/dist/src/views/examples/SettingsFormExample.d.ts +2 -0
  479. package/dist/src/views/examples/index.d.ts +0 -1
  480. package/dist/src/views/forms/ValidationPage.d.ts +2 -0
  481. package/dist/src/views/forms/index.d.ts +0 -1
  482. package/dist/src/views/index.d.ts +0 -1
  483. package/dist/src/views/inputs/CheckboxPage.d.ts +2 -0
  484. package/dist/src/views/inputs/ComboboxPage.d.ts +2 -0
  485. package/dist/src/views/inputs/DatepickerPage.d.ts +2 -0
  486. package/dist/src/views/inputs/EmailPage.d.ts +2 -0
  487. package/dist/src/views/inputs/FileDropzonePage.d.ts +2 -0
  488. package/dist/src/views/inputs/MiscInputsPage.d.ts +2 -0
  489. package/dist/src/views/inputs/PhonePage.d.ts +2 -0
  490. package/dist/src/views/inputs/SelectPage.d.ts +2 -0
  491. package/dist/src/views/inputs/SelectTextPage.d.ts +2 -0
  492. package/dist/src/views/inputs/SwitchGroupPage.d.ts +2 -0
  493. package/dist/src/views/inputs/SwitchPage.d.ts +2 -0
  494. package/dist/src/views/inputs/TextAreaPage.d.ts +2 -0
  495. package/dist/src/views/inputs/index.d.ts +0 -1
  496. package/dist/src/views/layouts/CardLayoutPage.d.ts +2 -0
  497. package/dist/src/views/layouts/DashboardLayoutPage.d.ts +2 -0
  498. package/dist/src/views/layouts/HeaderLayoutPage.d.ts +2 -0
  499. package/dist/src/views/layouts/SidebarLayoutPage.d.ts +2 -0
  500. package/dist/src/views/layouts/index.d.ts +0 -1
  501. package/dist/stepper/StepperPanels.d.ts +1 -3
  502. package/dist/stepper/StepperPanels.js +1 -1
  503. package/dist/stepper/index.d.ts +1 -0
  504. package/dist/stepper/index.js +1 -1
  505. package/dist/style.css +1 -1
  506. package/dist/tabs/InlineTabs.d.ts +1 -3
  507. package/dist/tabs/InlineTabs.js +1 -1
  508. package/dist/tabs/TabGroup.d.ts +1 -3
  509. package/dist/tabs/TabGroup.js +1 -1
  510. package/dist/tabs/TabGroupUnderline.d.ts +1 -3
  511. package/dist/tabs/TabGroupUnderline.js +1 -1
  512. package/dist/tabs/TabsInPills.d.ts +1 -3
  513. package/dist/tabs/TabsInPills.js +1 -1
  514. package/dist/tabs/index.d.ts +1 -0
  515. package/dist/tabs/index.js +4 -4
  516. package/dist/{tabs-Da32Mbhf.js → tabs-J5phClGv.js} +2 -2
  517. package/dist/{tabs-Da32Mbhf.js.map → tabs-J5phClGv.js.map} +1 -1
  518. package/dist/ui.css +1 -0
  519. package/dist/{use-outside-click-DNDV36Sc.js → use-outside-click-14T0Zn98.js} +3 -3
  520. package/dist/{use-outside-click-DNDV36Sc.js.map → use-outside-click-14T0Zn98.js.map} +1 -1
  521. package/dist/{use-tree-walker-BHCORE7u.js → use-tree-walker-Bo9gIb_K.js} +2 -2
  522. package/dist/{use-tree-walker-BHCORE7u.js.map → use-tree-walker-Bo9gIb_K.js.map} +1 -1
  523. package/dist/vue-router-B3K2xmg_.js +120 -0
  524. package/dist/vue-router-B3K2xmg_.js.map +1 -0
  525. package/dist/vue3-lottie.es-DT4qZE-F.js +7981 -0
  526. package/dist/{vue3-lottie.es-C_MDkNwR.js.map → vue3-lottie.es-DT4qZE-F.js.map} +1 -1
  527. package/dist/wrappers/BackgroundGradientWrapper.d.ts +1 -3
  528. package/dist/wrappers/BackgroundGradientWrapper.js +1 -1
  529. package/dist/wrappers/CardWrapper.d.ts +1 -3
  530. package/dist/wrappers/DisclosureWrapper.d.ts +1 -3
  531. package/dist/wrappers/DisclosureWrapper.js +1 -1
  532. package/dist/wrappers/FormErrorWrapper.d.ts +1 -3
  533. package/dist/wrappers/index.d.ts +1 -0
  534. package/dist/wrappers/index.js +2 -2
  535. package/package.json +13 -1
  536. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-DRwe4rw8.js.map +0 -1
  537. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-B8wJVkPP.js +0 -187
  538. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-ClGP5YU0.js +0 -1315
  539. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-ClGP5YU0.js.map +0 -1
  540. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-DRDP86Yc.js +0 -253
  541. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-DRDP86Yc.js.map +0 -1
  542. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-Ct8b80dM.js.map +0 -1
  543. package/dist/EmailInput.vue_vue_type_script_setup_true_lang-Dhfgs2Jn.js +0 -122
  544. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-B_XAq5Sr.js +0 -74
  545. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-B_XAq5Sr.js.map +0 -1
  546. package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-CwOOShcM.js +0 -36
  547. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2tAB9Hbx.js +0 -30
  548. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-Cm5RsC7C.js +0 -162
  549. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-Cm5RsC7C.js.map +0 -1
  550. package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-Cri9BiBy.js +0 -130
  551. package/dist/SelectInput.vue_vue_type_script_setup_true_lang--yUL7bcx.js.map +0 -1
  552. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-CAK6ZIiz.js.map +0 -1
  553. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-Ci7VLRZx.js.map +0 -1
  554. package/dist/UiTable.vue_vue_type_script_setup_true_lang-BuOCaPzi.js.map +0 -1
  555. package/dist/calendar-DyIP7WGv.js.map +0 -1
  556. package/dist/src/components/CloudinaryImage.d.ts.map +0 -1
  557. package/dist/src/components/LottieAnimation.d.ts.map +0 -1
  558. package/dist/src/components/ThemeDebugModal.d.ts.map +0 -1
  559. package/dist/src/components/UiAvatar.d.ts.map +0 -1
  560. package/dist/src/components/UiBadge.d.ts.map +0 -1
  561. package/dist/src/components/UiBanner.d.ts.map +0 -1
  562. package/dist/src/components/UiBreadcrumb.d.ts.map +0 -1
  563. package/dist/src/components/UiButton.d.ts.map +0 -1
  564. package/dist/src/components/UiButtonGroup.d.ts.map +0 -1
  565. package/dist/src/components/UiCheckbox.d.ts.map +0 -1
  566. package/dist/src/components/UiLoading.d.ts.map +0 -1
  567. package/dist/src/components/UiLoadingDots.d.ts.map +0 -1
  568. package/dist/src/components/UiMenu.d.ts.map +0 -1
  569. package/dist/src/components/UiModal.d.ts.map +0 -1
  570. package/dist/src/components/UiNavLink.d.ts.map +0 -1
  571. package/dist/src/components/UiProgressBar.d.ts.map +0 -1
  572. package/dist/src/components/UiRadialProgressBar.d.ts.map +0 -1
  573. package/dist/src/components/UiTable.d.ts.map +0 -1
  574. package/dist/src/components/UiTransition.d.ts.map +0 -1
  575. package/dist/src/components/calendars/CalendarDashboard.d.ts.map +0 -1
  576. package/dist/src/components/calendars/CalendarHeader.d.ts.map +0 -1
  577. package/dist/src/components/calendars/DayCalendar.d.ts.map +0 -1
  578. package/dist/src/components/calendars/EventCard.d.ts.map +0 -1
  579. package/dist/src/components/calendars/EventsList.d.ts.map +0 -1
  580. package/dist/src/components/calendars/MonthCalendar.d.ts.map +0 -1
  581. package/dist/src/components/calendars/WeekCalendar.d.ts.map +0 -1
  582. package/dist/src/components/calendars/YearCalendar.d.ts.map +0 -1
  583. package/dist/src/components/calendars/index.d.ts.map +0 -1
  584. package/dist/src/components/charts/BarChart.d.ts.map +0 -1
  585. package/dist/src/components/charts/BaseChart.d.ts +0 -81
  586. package/dist/src/components/charts/BaseChart.d.ts.map +0 -1
  587. package/dist/src/components/charts/FunnelChart.d.ts.map +0 -1
  588. package/dist/src/components/charts/LineChart.d.ts.map +0 -1
  589. package/dist/src/components/charts/PieChart.d.ts.map +0 -1
  590. package/dist/src/components/charts/SparklineChart.d.ts.map +0 -1
  591. package/dist/src/components/charts/StatCard.d.ts.map +0 -1
  592. package/dist/src/components/charts/chartTheme.d.ts.map +0 -1
  593. package/dist/src/components/charts/index.d.ts.map +0 -1
  594. package/dist/src/components/empty-state/ComingSoon.d.ts.map +0 -1
  595. package/dist/src/components/empty-state/EmptyState.d.ts.map +0 -1
  596. package/dist/src/components/empty-state/index.d.ts.map +0 -1
  597. package/dist/src/components/forms/DynamicForm.d.ts.map +0 -1
  598. package/dist/src/components/forms/DynamicFormField.d.ts.map +0 -1
  599. package/dist/src/components/forms/FormFieldWrapper.d.ts.map +0 -1
  600. package/dist/src/components/forms/index.d.ts.map +0 -1
  601. package/dist/src/components/index.d.ts.map +0 -1
  602. package/dist/src/components/inputs/AddDeleteButtonGroup.d.ts.map +0 -1
  603. package/dist/src/components/inputs/CheckboxInput.d.ts.map +0 -1
  604. package/dist/src/components/inputs/ComboboxInput.d.ts.map +0 -1
  605. package/dist/src/components/inputs/DatepickerInput.d.ts.map +0 -1
  606. package/dist/src/components/inputs/EmailInput.d.ts.map +0 -1
  607. package/dist/src/components/inputs/EmptyInput.d.ts.map +0 -1
  608. package/dist/src/components/inputs/FileDropzoneInput.d.ts.map +0 -1
  609. package/dist/src/components/inputs/HiddenInput.d.ts.map +0 -1
  610. package/dist/src/components/inputs/InputsShowcase.d.ts.map +0 -1
  611. package/dist/src/components/inputs/PhoneInput.d.ts.map +0 -1
  612. package/dist/src/components/inputs/RichTextInput.d.ts.map +0 -1
  613. package/dist/src/components/inputs/SelectInput.d.ts.map +0 -1
  614. package/dist/src/components/inputs/SelectTextInput.d.ts.map +0 -1
  615. package/dist/src/components/inputs/SwitchInput.d.ts.map +0 -1
  616. package/dist/src/components/inputs/SwitchInputGroup.d.ts.map +0 -1
  617. package/dist/src/components/inputs/TagifyInput.d.ts.map +0 -1
  618. package/dist/src/components/inputs/TextAreaInput.d.ts.map +0 -1
  619. package/dist/src/components/inputs/TextInput.d.ts.map +0 -1
  620. package/dist/src/components/inputs/index.d.ts.map +0 -1
  621. package/dist/src/components/layouts/CardLayout.d.ts.map +0 -1
  622. package/dist/src/components/layouts/DashboardLayout.d.ts.map +0 -1
  623. package/dist/src/components/layouts/DefaultLayout.d.ts.map +0 -1
  624. package/dist/src/components/layouts/HeaderLayout.d.ts.map +0 -1
  625. package/dist/src/components/layouts/InfoCard.d.ts.map +0 -1
  626. package/dist/src/components/layouts/NavigationGroup.d.ts.map +0 -1
  627. package/dist/src/components/layouts/NavigationItem.d.ts.map +0 -1
  628. package/dist/src/components/layouts/ProfileHeaderAvatar.d.ts.map +0 -1
  629. package/dist/src/components/layouts/ProjectLogo.d.ts.map +0 -1
  630. package/dist/src/components/layouts/PropsTable.d.ts.map +0 -1
  631. package/dist/src/components/layouts/ShowcaseCard.d.ts.map +0 -1
  632. package/dist/src/components/layouts/ShowcaseLayout.d.ts.map +0 -1
  633. package/dist/src/components/layouts/SidebarLayout.d.ts.map +0 -1
  634. package/dist/src/components/layouts/StateDisplay.d.ts.map +0 -1
  635. package/dist/src/components/layouts/index.d.ts.map +0 -1
  636. package/dist/src/components/loading/ContentSkeleton.d.ts.map +0 -1
  637. package/dist/src/components/loading/SmartLoadingIndicator.d.ts.map +0 -1
  638. package/dist/src/components/loading/index.d.ts.map +0 -1
  639. package/dist/src/components/maps/GoogleMap.d.ts.map +0 -1
  640. package/dist/src/components/maps/UiInfoWindow.d.ts.map +0 -1
  641. package/dist/src/components/maps/UiMap.d.ts.map +0 -1
  642. package/dist/src/components/maps/UiMapAll.d.ts.map +0 -1
  643. package/dist/src/components/maps/UiMapMarker.d.ts.map +0 -1
  644. package/dist/src/components/maps/index.d.ts.map +0 -1
  645. package/dist/src/components/modals/AlertModal.d.ts.map +0 -1
  646. package/dist/src/components/modals/BaseModal.d.ts.map +0 -1
  647. package/dist/src/components/modals/ImageCropperModal.d.ts.map +0 -1
  648. package/dist/src/components/modals/index.d.ts.map +0 -1
  649. package/dist/src/components/notifications/NotificationContainer.d.ts.map +0 -1
  650. package/dist/src/components/notifications/NotificationToast.d.ts.map +0 -1
  651. package/dist/src/components/notifications/index.d.ts.map +0 -1
  652. package/dist/src/components/stepper/StepperPanels.d.ts.map +0 -1
  653. package/dist/src/components/stepper/index.d.ts.map +0 -1
  654. package/dist/src/components/tabs/InlineTabs.d.ts.map +0 -1
  655. package/dist/src/components/tabs/TabGroup.d.ts.map +0 -1
  656. package/dist/src/components/tabs/TabGroupUnderline.d.ts.map +0 -1
  657. package/dist/src/components/tabs/TabsInPills.d.ts.map +0 -1
  658. package/dist/src/components/tabs/index.d.ts.map +0 -1
  659. package/dist/src/components/wrappers/BackgroundGradientWrapper.d.ts.map +0 -1
  660. package/dist/src/components/wrappers/CardWrapper.d.ts.map +0 -1
  661. package/dist/src/components/wrappers/DisclosureWrapper.d.ts.map +0 -1
  662. package/dist/src/components/wrappers/FormErrorWrapper.d.ts.map +0 -1
  663. package/dist/src/components/wrappers/index.d.ts.map +0 -1
  664. package/dist/src/composables/index.d.ts.map +0 -1
  665. package/dist/src/composables/useCalendar.d.ts.map +0 -1
  666. package/dist/src/composables/useEventSegments.d.ts.map +0 -1
  667. package/dist/src/composables/useFormValidation.d.ts.map +0 -1
  668. package/dist/src/composables/useMap.d.ts.map +0 -1
  669. package/dist/src/composables/useModal.d.ts.map +0 -1
  670. package/dist/src/composables/useNotifications.d.ts.map +0 -1
  671. package/dist/src/composables/useSimpleTabs.d.ts.map +0 -1
  672. package/dist/src/composables/useStringTransform.d.ts.map +0 -1
  673. package/dist/src/composables/useTabs.d.ts.map +0 -1
  674. package/dist/src/composables/useTheme.d.ts.map +0 -1
  675. package/dist/src/config/css-variables.d.ts.map +0 -1
  676. package/dist/src/config/design-tokens.d.ts.map +0 -1
  677. package/dist/src/config/index.d.ts.map +0 -1
  678. package/dist/src/dev.d.ts.map +0 -1
  679. package/dist/src/index.d.ts.map +0 -1
  680. package/dist/src/plugin/configure.d.ts.map +0 -1
  681. package/dist/src/plugin/index.d.ts.map +0 -1
  682. package/dist/src/types/avatars.d.ts.map +0 -1
  683. package/dist/src/types/badges.d.ts.map +0 -1
  684. package/dist/src/types/calendars.d.ts.map +0 -1
  685. package/dist/src/types/core.d.ts.map +0 -1
  686. package/dist/src/types/form.d.ts.map +0 -1
  687. package/dist/src/types/forms.d.ts.map +0 -1
  688. package/dist/src/types/index.d.ts.map +0 -1
  689. package/dist/src/types/inputs.d.ts.map +0 -1
  690. package/dist/src/types/layouts.d.ts.map +0 -1
  691. package/dist/src/types/loading.d.ts.map +0 -1
  692. package/dist/src/types/maps.d.ts.map +0 -1
  693. package/dist/src/types/navigation.d.ts.map +0 -1
  694. package/dist/src/types/tables.d.ts.map +0 -1
  695. package/dist/src/types/tabs.d.ts.map +0 -1
  696. package/dist/src/types/transitions.d.ts.map +0 -1
  697. package/dist/src/types/ui.d.ts.map +0 -1
  698. package/dist/src/utils/calendar.d.ts.map +0 -1
  699. package/dist/src/utils/component-registry.d.ts.map +0 -1
  700. package/dist/src/utils/countryCodes.d.ts.map +0 -1
  701. package/dist/src/utils/id.d.ts.map +0 -1
  702. package/dist/src/utils/index.d.ts.map +0 -1
  703. package/dist/src/utils/mapThemes.d.ts.map +0 -1
  704. package/dist/src/utils/phone.d.ts.map +0 -1
  705. package/dist/src/utils/transitions.d.ts.map +0 -1
  706. package/dist/src/views/components/index.d.ts.map +0 -1
  707. package/dist/src/views/examples/index.d.ts.map +0 -1
  708. package/dist/src/views/forms/index.d.ts.map +0 -1
  709. package/dist/src/views/index.d.ts.map +0 -1
  710. package/dist/src/views/inputs/index.d.ts.map +0 -1
  711. package/dist/src/views/layouts/index.d.ts.map +0 -1
  712. package/dist/vue-router-BPbyZ7xA.js +0 -145
  713. package/dist/vue-router-BPbyZ7xA.js.map +0 -1
  714. package/dist/vue3-lottie.es-C_MDkNwR.js +0 -7976
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js","sources":["../src/components/inputs/SelectInput.vue"],"sourcesContent":["<!--\n @component SelectInput\n @description Dropdown select input with Headless UI integration.\n \n A select/dropdown component built on Headless UI's Listbox with support\n for single and multiple selection, icons, and validation.\n \n @props\n - name (string, required): Field name for form binding\n - items (SelectItem[], required): Options array with id/name or custom keys\n - label (string, optional): Display label\n - placeholder (string, optional): Placeholder text\n - disabled (boolean, optional): Disabled state\n - multiple (boolean, optional): Enable multiple selection\n - showAll (boolean, optional): Show \"Select All\" option for multiple\n - itemKey (string, optional): Property for item key (default: 'id')\n - itemText (string, optional): Property for item text (default: 'name')\n - rules (Schema, optional): Validation rules\n - modelValue (any, optional): Selected value(s) via v-model\n \n @emits\n - update:modelValue: Emitted when selection changes\n \n @example\n <SelectInput\n name=\"country\"\n label=\"Country\"\n :items=\"countries\"\n v-model=\"form.country\"\n placeholder=\"Select a country\"\n />\n \n @example Multiple selection with Select All\n <SelectInput\n name=\"languages\"\n label=\"Languages\"\n :items=\"languages\"\n v-model=\"form.languages\"\n multiple\n show-all\n />\n-->\n<template>\n <div class=\"sl-w-full\">\n <FormFieldWrapper\n :id=\"id\"\n :name=\"name\"\n :label=\"label\"\n :disabled=\"disabled\"\n :optional=\"!rules\"\n :tertiary-label=\"tertiaryLabel\"\n :box-shadow=\"boxShadow\"\n :error-message=\"errorMessage\"\n :success-message=\"successMessage\"\n :is-valid=\"meta.valid\"\n :is-touched=\"meta.touched\"\n >\n <Listbox\n v-model=\"selectedValue\"\n :disabled=\"disabled\"\n :multiple=\"multiple\"\n @update:model-value=\"handleChange\"\n v-slot=\"{ open }\"\n >\n <div class=\"sl-relative\">\n <!-- Track open state changes to sync position updates -->\n <DropdownPositionTracker :open=\"open\" :update-fn=\"updateDropdownPosition\" />\n <ListboxButton\n ref=\"listboxButtonRef\"\n :id=\"id\"\n :class=\"[\n selectClasses,\n buttonClass\n ]\"\n @click=\"updateDropdownPosition\"\n >\n <span class=\"sl-flex sl-items-center sl-gap-2\">\n <!-- Selected item icon -->\n <component\n v-if=\"selectedIcon\"\n :is=\"selectedIcon\"\n class=\"sl-h-4 sl-w-4 sl-flex-shrink-0\"\n aria-hidden=\"true\"\n />\n \n <!-- Selected value display -->\n <span\n v-if=\"displayValue\"\n class=\"sl-block sl-truncate sl-text-left\"\n >\n {{ displayValue }}\n </span>\n <span\n v-else\n class=\"sl-block sl-truncate sl-text-left sl-text-gray-500 dark:sl-text-slate-300\"\n >\n {{ placeholder || 'Select an option' }}\n </span>\n </span>\n \n <span class=\"sl-pointer-events-none sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-2\">\n <ChevronUpDownIcon\n class=\"sl-h-5 sl-w-5 sl-text-gray-400 dark:sl-text-slate-300\"\n aria-hidden=\"true\"\n />\n </span>\n </ListboxButton>\n\n <Teleport to=\"body\">\n <transition\n leave-active-class=\"sl-transition sl-duration-100 sl-ease-in\"\n leave-from-class=\"sl-opacity-100\"\n leave-to-class=\"sl-opacity-0\"\n >\n <ListboxOptions\n class=\"sl-fixed sl-z-[9999] sl-overflow-auto sl-rounded-md sl-bg-white dark:sl-bg-slate-800 sl-py-1 sl-text-base sl-shadow-lg dark:sl-shadow-slate-900/50 sl-ring-1 sl-ring-black sl-ring-opacity-5 dark:sl-ring-slate-700 focus:sl-outline-none sm:sl-text-sm\"\n :style=\"dropdownStyle\"\n >\n <!-- Show All option for multiple select -->\n <li\n v-if=\"multiple && showAll\"\n role=\"button\"\n tabindex=\"0\"\n @mousedown.prevent\n @click.prevent.stop=\"toggleSelectAll\"\n :class=\"[\n 'sl-relative sl-cursor-pointer sl-select-none sl-py-2 sl-pl-3 sl-pr-9 sl-text-gray-900 dark:sl-text-slate-200',\n 'hover:sl-bg-stachelock-600 hover:sl-text-white',\n ]\"\n >\n <span class=\"sl-block sl-truncate sl-font-medium\">\n {{ isAllSelected ? 'Unselect All' : 'Select All' }}\n </span>\n </li>\n\n <!-- Regular options -->\n <ListboxOption\n v-for=\"item in items\"\n :key=\"getItemKey(item)\"\n :value=\"item\"\n as=\"template\"\n :disabled=\"item.disabled\"\n v-slot=\"{ active, selected }\"\n >\n <li\n :class=\"[\n 'sl-relative sl-cursor-default sl-select-none sl-py-2 sl-pl-3 sl-pr-9',\n active ? 'sl-bg-stachelock-600 sl-text-white' : 'sl-text-gray-900 dark:sl-text-slate-200',\n item.disabled ? 'sl-opacity-50 sl-cursor-not-allowed' : ''\n ]\"\n >\n <div class=\"sl-flex sl-items-center sl-gap-2\">\n <!-- Item icon -->\n <component\n v-if=\"item.icon\"\n :is=\"item.icon\"\n class=\"sl-h-4 sl-w-4 sl-flex-shrink-0\"\n :class=\"active ? 'sl-text-white' : 'sl-text-gray-400 dark:sl-text-slate-300'\"\n aria-hidden=\"true\"\n />\n \n <span\n :class=\"[\n 'sl-block sl-truncate',\n selected ? 'sl-font-medium' : 'sl-font-normal'\n ]\"\n >\n {{ getItemText(item) }}\n </span>\n </div>\n\n <span\n v-if=\"selected\"\n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-4\"\n >\n <CheckIcon class=\"sl-h-5 sl-w-5\" aria-hidden=\"true\" />\n </span>\n </li>\n </ListboxOption>\n </ListboxOptions>\n </transition>\n </Teleport>\n </div>\n </Listbox>\n \n <template #success-message>\n <span v-if=\"successMessage\">{{ successMessage }}</span>\n </template>\n </FormFieldWrapper>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SelectInput - Dropdown select with Headless UI\n * \n * Provides a styled select/dropdown component with single and multiple\n * selection modes. Uses Headless UI's Listbox for accessibility.\n * \n * ## Features\n * - Single and multiple selection modes\n * - \"Select All\" option for multiple mode\n * - Item icons support\n * - vee-validate integration\n * - Accessible keyboard navigation\n * - Customizable item key/text properties\n * - Teleported dropdown to avoid z-index/overflow issues\n * \n * @module components/inputs/SelectInput\n * @see {@link SelectItem} for item interface\n */\nimport { computed, ref, watch, onBeforeUnmount, defineComponent } from 'vue'\nimport {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n} from '@headlessui/vue'\nimport { CheckIcon, ChevronUpDownIcon } from '@heroicons/vue/20/solid'\nimport { useField } from 'vee-validate'\nimport FormFieldWrapper from '../forms/FormFieldWrapper.vue'\nimport type { ValidationRule } from '../../types/form'\nimport { generateId } from '../../utils/id'\n\n/**\n * DropdownPositionTracker - Renderless component that watches HeadlessUI open state\n * and triggers position updates when dropdown opens or scroll/resize occurs\n */\nconst DropdownPositionTracker = defineComponent({\n props: {\n open: { type: Boolean, required: true },\n updateFn: { type: Function, required: true }\n },\n setup(props) {\n // Define handleScroll in setup scope so it's a stable reference\n const handleScroll = () => {\n if (props.open) {\n props.updateFn()\n }\n }\n \n // Watch the open prop and trigger position update + attach scroll listeners\n watch(() => props.open, (isOpen) => {\n if (isOpen) {\n // Update position immediately when opening\n props.updateFn()\n // Add scroll/resize listeners - use capture to catch scroll events from any container\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleScroll)\n } else {\n // Remove listeners when closed\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleScroll)\n }\n }, { immediate: true })\n \n // Cleanup on unmount\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleScroll)\n })\n \n // Render nothing\n return () => null\n }\n})\n\n// Refs for floating dropdown positioning\nconst listboxButtonRef = ref<InstanceType<typeof ListboxButton> | null>(null)\nconst dropdownStyle = ref<Record<string, string>>({\n top: '0px',\n left: '0px',\n width: '200px'\n})\n\n// Estimated dropdown height for flip calculation (max-h-56 = 14rem = 224px)\nconst DROPDOWN_MAX_HEIGHT = 224\nconst DROPDOWN_GAP = 4\n\nfunction updateDropdownPosition() {\n // Get the actual DOM element from the Headless UI component\n const el = listboxButtonRef.value?.$el as HTMLElement | undefined\n if (!el) return\n \n const rect = el.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n \n // Calculate available space below and above the button\n const spaceBelow = viewportHeight - rect.bottom - DROPDOWN_GAP\n const spaceAbove = rect.top - DROPDOWN_GAP\n \n // Determine if we should flip to show above\n const shouldFlipAbove = spaceBelow < DROPDOWN_MAX_HEIGHT && spaceAbove > spaceBelow\n \n if (shouldFlipAbove) {\n // Position above the button\n dropdownStyle.value = {\n bottom: `${viewportHeight - rect.top + DROPDOWN_GAP}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n maxHeight: `${Math.min(spaceAbove, DROPDOWN_MAX_HEIGHT)}px`\n }\n } else {\n // Position below the button (default)\n dropdownStyle.value = {\n top: `${rect.bottom + DROPDOWN_GAP}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n maxHeight: `${Math.min(spaceBelow, DROPDOWN_MAX_HEIGHT)}px`\n }\n }\n}\n\nimport type { SelectItem, SelectItemValue } from '../../types/inputs'\n\ninterface Props {\n name: string\n items: SelectItem[]\n label?: string\n placeholder?: string\n disabled?: boolean\n rules?: ValidationRule\n validateOnMount?: boolean\n successMessage?: string\n tertiaryLabel?: string\n buttonClass?: string\n multiple?: boolean\n showAll?: boolean\n itemKey?: string\n itemText?: string\n modelValue?: SelectItemValue | SelectItem | SelectItem[]\n boxShadow?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n itemKey: 'id',\n itemText: 'name',\n multiple: false,\n showAll: false,\n boxShadow: false\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: SelectItemValue | SelectItem | SelectItem[]]\n}>()\n\nconst id = generateId(props.name)\n\n// Use vee-validate for form validation\nconst { value, errorMessage, handleChange: handleValidation, meta, setTouched } = useField(\n () => props.name,\n props.rules,\n {\n validateOnMount: props.validateOnMount,\n initialValue: props.modelValue\n }\n)\n\nconst selectedValue = ref<any>(\n props.multiple\n ? (Array.isArray(props.modelValue) ? props.modelValue : [])\n : props.modelValue\n)\n\n// Watch for external changes\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (props.multiple) {\n const coerced = Array.isArray(newValue) ? newValue : []\n if (coerced !== selectedValue.value) {\n selectedValue.value = coerced\n value.value = coerced\n }\n } else {\n if (newValue !== selectedValue.value) {\n selectedValue.value = newValue\n value.value = newValue\n }\n }\n },\n { immediate: true }\n)\n\nwatch(\n selectedValue,\n (newValue) => {\n emit('update:modelValue', newValue)\n }\n)\n\nconst selectClasses = computed(() => {\n const baseClasses = [\n 'sl-relative',\n 'sl-w-full',\n 'sl-cursor-default',\n 'sl-rounded-md',\n 'sl-bg-white',\n 'dark:sl-bg-slate-900',\n 'sl-text-gray-900',\n 'dark:sl-text-slate-100',\n 'sl-py-2',\n 'sl-pl-3',\n 'sl-pr-10',\n 'sl-text-left',\n 'sl-border',\n 'sl-text-sm',\n 'focus:sl-outline-none',\n 'focus:sl-ring-2',\n 'focus:sl-ring-stachelock-500',\n 'focus:sl-border-stachelock-500',\n 'sl-transition-all',\n 'sl-duration-200'\n ]\n\n if (props.disabled) {\n baseClasses.push(\n 'sl-bg-gray-50',\n 'dark:sl-bg-slate-800',\n 'sl-text-gray-500',\n 'dark:sl-text-slate-300',\n 'sl-cursor-not-allowed',\n 'sl-border-gray-200',\n 'dark:sl-border-slate-700'\n )\n } else if (errorMessage.value) {\n baseClasses.push(\n 'sl-border-red-300',\n 'dark:sl-border-red-500',\n 'focus:sl-ring-red-500',\n 'focus:sl-border-red-500'\n )\n } else if (meta.valid && meta.touched) {\n baseClasses.push(\n 'sl-border-green-300',\n 'dark:sl-border-green-500',\n 'focus:sl-ring-green-500',\n 'focus:sl-border-green-500'\n )\n } else {\n baseClasses.push(\n 'sl-border-gray-300',\n 'dark:sl-border-slate-600',\n 'hover:sl-border-gray-400',\n 'dark:hover:sl-border-slate-500'\n )\n }\n\n return baseClasses.join(' ')\n})\n\nconst getItemKey = (item: SelectItem): SelectItemValue => {\n return item[props.itemKey] as SelectItemValue\n}\n\nconst getItemText = (item: SelectItem): string => {\n return item[props.itemText] || item.toString()\n}\n\nconst displayValue = computed(() => {\n if (!selectedValue.value) return ''\n \n if (props.multiple && Array.isArray(selectedValue.value)) {\n if (selectedValue.value.length === 0) return ''\n if (selectedValue.value.length === 1) {\n return getItemText(selectedValue.value[0])\n }\n return `${selectedValue.value.length} items selected`\n }\n \n return getItemText(selectedValue.value)\n})\n\nconst selectedIcon = computed(() => {\n if (!selectedValue.value) return null\n \n if (props.multiple && Array.isArray(selectedValue.value)) {\n return selectedValue.value.length === 1 ? selectedValue.value[0].icon : null\n }\n \n return selectedValue.value.icon\n})\n\nconst allItems = computed(() => {\n return props.items.filter(item => !item.disabled)\n})\n\nconst handleChange = (value: SelectItemValue | SelectItem | SelectItem[]) => {\n selectedValue.value = value\n setTouched(true)\n handleValidation(value)\n}\n\nconst isAllSelected = computed(() => {\n if (!props.multiple || !Array.isArray(selectedValue.value)) return false\n const selectable = allItems.value\n if (selectable.length === 0) return false\n // Compare by item key instead of reference for reliable equality check\n const selectedKeys = new Set((selectedValue.value as SelectItem[]).map(item => getItemKey(item)))\n return selectable.every(item => selectedKeys.has(getItemKey(item)))\n})\n\nconst toggleSelectAll = () => {\n if (!props.multiple) return\n if (isAllSelected.value) {\n selectedValue.value = []\n } else {\n selectedValue.value = [...allItems.value]\n }\n handleValidation(selectedValue.value)\n}\n</script>\n\n\n"],"names":["DROPDOWN_MAX_HEIGHT","DROPDOWN_GAP","DropdownPositionTracker","defineComponent","props","handleScroll","watch","isOpen","onBeforeUnmount","listboxButtonRef","ref","dropdownStyle","updateDropdownPosition","el","rect","viewportHeight","spaceBelow","spaceAbove","__props","emit","__emit","id","generateId","value","errorMessage","handleValidation","meta","setTouched","useField","selectedValue","newValue","coerced","selectClasses","computed","baseClasses","getItemKey","item","getItemText","displayValue","selectedIcon","allItems","handleChange","isAllSelected","selectable","selectedKeys","toggleSelectAll","_openBlock","_createElementBlock","_hoisted_1","_createVNode","FormFieldWrapper","_unref","Listbox","$event","_withCtx","open","_createElementVNode","_hoisted_2","ListboxButton","_normalizeClass","_hoisted_3","_createBlock","_resolveDynamicComponent","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","ChevronUpDownIcon","_Teleport","_Transition","ListboxOptions","_hoisted_7","_Fragment","_renderList","ListboxOption","active","selected","_hoisted_8","_hoisted_9","CheckIcon"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { defineComponent as X, ref as B, onMounted as P, onBeforeUnmount as Z, r
2
2
  import { r as ie, a as oe } from "./ExclamationCircleIcon-DmL8Wwjo.js";
3
3
  import { r as de } from "./ChevronUpDownIcon-Bq_fsgrb.js";
4
4
  import { r as ce } from "./CheckIcon-BGlsmVwT.js";
5
- import { I as ue, j as fe, A as ve, F as ye } from "./listbox-p2_4hUSD.js";
5
+ import { I as ue, j as fe, A as ve, F as ye } from "./listbox-YaWWZiiG.js";
6
6
  const xe = {
7
7
  class: "sl-space-y-1",
8
8
  "data-testid": "select-text-input"
@@ -336,4 +336,4 @@ const xe = {
336
336
  export {
337
337
  Ne as _
338
338
  };
339
- //# sourceMappingURL=SelectTextInput.vue_vue_type_script_setup_true_lang-B2Gw_se2.js.map
339
+ //# sourceMappingURL=SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTextInput.vue_vue_type_script_setup_true_lang-B2Gw_se2.js","sources":["../src/components/inputs/SelectTextInput.vue"],"sourcesContent":["<!--\n @component SelectTextInput\n @description Combined select dropdown and text input field.\n \n A composite input that combines a select dropdown with a text input,\n useful for inputs like \"Fall 2023\" where the user selects a term\n and enters a year. Uses Headless UI Listbox for accessible select.\n \n @props\n - name (string, required): Field name for form binding\n - label (string, optional): Main label text\n - value (CompositeValue | string, optional): Combined value object or string\n - select (object, optional): Select configuration { options, placeholder, label }\n - text (object, optional): Text input config { placeholder, inputMode, maxLength, label }\n - delimiter (string, optional): Character between select and text in display\n - showErrors (boolean, optional): Force show validation errors\n - hasError (boolean, optional): External error state\n - disabled (boolean, optional): Disabled state\n - colorfulValidation (boolean, optional): Color-coded validation states\n - showValidCheck (boolean, optional): Show success icon when valid\n \n @emits\n - update:value: Emitted when composite value changes\n - update:validity: Emitted when validation state changes\n \n @example\n <SelectTextInput\n name=\"graduation\"\n label=\"Expected Graduation\"\n :value=\"{ select: 'Fall', text: '2024' }\"\n :select=\"{ options: [{ label: 'Fall', value: 'Fall' }, { label: 'Spring', value: 'Spring' }] }\"\n :text=\"{ placeholder: 'Year', inputMode: 'numeric', maxLength: 4 }\"\n @update:value=\"handleUpdate\"\n />\n-->\n<template>\n <div class=\"sl-space-y-1\" data-testid=\"select-text-input\">\n <!-- Main label row -->\n <div \n v-if=\"label || secondaryLabel || tertiaryLabel || (disabled && disabledMessage)\" \n class=\"sl-grid sl-grid-cols-3 sl-items-center\"\n >\n <div class=\"sl-col-span-2 sl-flex sl-items-center\">\n <component \n v-if=\"labelIconLeft\" \n :is=\"labelIconLeft\" \n class=\"sl-mr-2 sl-h-4 sl-w-4 sl-text-yellow-300\" \n />\n <label v-if=\"label\" class=\"sl-text-sm sl-font-medium\" :style=\"{ color: 'var(--sl-text-primary)' }\">\n {{ label }}\n </label>\n </div>\n <div class=\"sl-justify-self-end sl-col-start-3 sl-text-right sl-space-y-0.5\">\n <p \n v-if=\"disabled && disabledMessage\" \n class=\"sl-text-xs\" :style=\"{ color: 'var(--sl-text-muted)' }\"\n >\n {{ disabledMessage }}\n </p>\n <span \n v-if=\"secondaryLabel\" \n class=\"sl-text-2xs sl-uppercase sl-truncate sl-font-semibold sl-block\" :style=\"{ color: 'var(--sl-text-secondary)' }\"\n >\n {{ secondaryLabel }}\n </span>\n <span \n v-if=\"tertiaryLabel\" \n class=\"sl-text-xs sl-uppercase sl-truncate sl-font-semibold sl-block\" :style=\"{ color: 'var(--sl-text-secondary)' }\"\n >\n {{ tertiaryLabel }}\n </span>\n </div>\n </div>\n\n <!-- Input container -->\n <div class=\"sl-relative sl-mt-1\">\n <!-- Error icon -->\n <div \n v-if=\"showError\" \n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-3 sl-z-20 sl-pointer-events-none\"\n >\n <ExclamationCircleIcon class=\"sl-h-5 sl-w-5 sl-text-red-500\" aria-hidden=\"true\" />\n </div>\n <!-- Success icon -->\n <div \n v-else-if=\"showSuccess\" \n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-3 sl-z-20 sl-pointer-events-none\"\n >\n <CheckCircleIcon class=\"sl-h-5 sl-w-5 sl-text-green-500\" aria-hidden=\"true\" />\n </div>\n\n <div \n class=\"sl-flex sl-rounded-md sl-shadow-sm sl-ring-1 sl-ring-inset focus-within:sl-ring-2 focus-within:sl-ring-inset\"\n :class=\"containerRingClass\"\n >\n <!-- Select dropdown using Headless UI Listbox -->\n <Listbox\n :model-value=\"selectedOption\"\n @update:model-value=\"onSelectChange\"\n :disabled=\"disabled\"\n >\n <div class=\"sl-relative\">\n <ListboxButton\n ref=\"listboxButtonRef\"\n :class=\"[\n 'sl-relative sl-cursor-default sl-rounded-l-md sl-border-0 sl-py-2 sl-pl-3 sl-pr-10 sl-text-left sl-text-sm',\n 'sl-bg-white dark:sl-bg-slate-900 sl-text-gray-900 dark:sl-text-slate-100',\n 'focus:sl-outline-none focus:sl-ring-0',\n disabled ? 'sl-cursor-not-allowed sl-bg-gray-50 dark:sl-bg-slate-800 sl-text-gray-500 dark:sl-text-slate-400' : ''\n ]\"\n data-testid=\"select-dropdown\"\n @click=\"onDropdownClick\"\n >\n <span \n class=\"sl-block sl-truncate sl-min-w-[80px]\"\n :class=\"selectedOption ? '' : 'sl-text-gray-500 dark:sl-text-slate-400'\"\n >\n {{ selectedOption?.label || select?.placeholder || 'Select…' }}\n </span>\n <span class=\"sl-pointer-events-none sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-2\">\n <ChevronUpDownIcon class=\"sl-h-5 sl-w-5 sl-text-gray-400 dark:sl-text-slate-300\" aria-hidden=\"true\" />\n </span>\n </ListboxButton>\n \n <Teleport to=\"body\">\n <transition\n leave-active-class=\"sl-transition sl-duration-100 sl-ease-in\"\n leave-from-class=\"sl-opacity-100\"\n leave-to-class=\"sl-opacity-0\"\n >\n <ListboxOptions\n class=\"sl-fixed sl-z-[9999] sl-max-h-56 sl-overflow-auto sl-rounded-md sl-bg-white dark:sl-bg-slate-800 sl-py-1 sl-text-base sl-shadow-lg dark:sl-shadow-slate-900/50 sl-ring-1 sl-ring-black sl-ring-opacity-5 dark:sl-ring-slate-700 focus:sl-outline-none sm:sl-text-sm\"\n :style=\"dropdownStyle\"\n >\n <ListboxOption\n v-for=\"opt in selectOptions\"\n :key=\"opt.value\"\n :value=\"opt\"\n as=\"template\"\n v-slot=\"{ active, selected }\"\n >\n <li\n :class=\"[\n 'sl-relative sl-cursor-default sl-select-none sl-py-2 sl-pl-3 sl-pr-9',\n active ? 'sl-bg-stachelock-600 sl-text-white' : 'sl-text-gray-900 dark:sl-text-slate-200'\n ]\"\n >\n <span :class=\"['sl-block sl-truncate', selected ? 'sl-font-medium' : 'sl-font-normal']\">\n {{ opt.label }}\n </span>\n <span\n v-if=\"selected\"\n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-4\"\n >\n <CheckIcon class=\"sl-h-5 sl-w-5\" aria-hidden=\"true\" />\n </span>\n </li>\n </ListboxOption>\n </ListboxOptions>\n </transition>\n </Teleport>\n </div>\n </Listbox>\n\n <!-- Vertical divider -->\n <div class=\"sl-w-px sl-bg-gray-200 dark:sl-bg-slate-700 sl-self-stretch\" />\n\n <!-- Text input -->\n <div class=\"sl-flex-1 sl-relative\">\n <input\n :class=\"[\n 'sl-block sl-w-full sl-text-sm focus:sl-outline-none focus:sl-ring-0 sl-border-0 sl-py-2 sl-pl-3 sl-pr-10 sl-rounded-r-md',\n 'sl-placeholder:text-gray-400 dark:sl-placeholder:text-slate-500',\n disabled \n ? 'sl-bg-gray-50 dark:sl-bg-slate-800 sl-text-gray-500 dark:sl-text-slate-400 sl-cursor-not-allowed' \n : 'sl-bg-white dark:sl-bg-slate-900 sl-text-gray-900 dark:sl-text-slate-100'\n ]\"\n :aria-invalid=\"showError || undefined\"\n :name=\"`${name}__text`\"\n :placeholder=\"text?.placeholder || ''\"\n :inputmode=\"text?.inputMode ?? 'text'\"\n :maxlength=\"text?.maxLength || undefined\"\n :value=\"localValue.text || ''\"\n @input=\"onTextChange(($event.target as HTMLInputElement).value)\"\n :disabled=\"disabled\"\n data-testid=\"text-input\"\n />\n </div>\n </div>\n </div>\n\n <!-- Error message -->\n <Transition\n enter-active-class=\"sl-transition sl-ease-out sl-duration-300\"\n enter-from-class=\"sl-opacity-0 sl-transform sl-scale-95\"\n enter-to-class=\"sl-opacity-100 sl-transform sl-scale-100\"\n leave-active-class=\"sl-transition sl-ease-in sl-duration-200\"\n leave-from-class=\"sl-opacity-100 sl-transform sl-scale-100\"\n leave-to-class=\"sl-opacity-0 sl-transform sl-scale-95\"\n >\n <p \n v-if=\"showError\"\n class=\"sl-mt-2 sl-text-sm sl-text-red-600 dark:sl-text-red-400 sl-bg-red-50 dark:sl-bg-red-900/20 sl-ring-1 sl-ring-red-100 dark:sl-ring-red-800 sl-rounded-md sl-p-2\"\n >\n {{ friendlyErrorMessage }}\n </p>\n </Transition>\n\n <!-- Display value hint -->\n <p \n v-if=\"!showError && computedDisplay\" \n class=\"sl-text-xs sl-text-gray-500 dark:sl-text-slate-400\"\n >\n {{ computedDisplay }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, reactive, toRefs, watch, onMounted, ref, onBeforeUnmount, type PropType, type Component } from 'vue'\nimport { CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/vue/20/solid'\nimport { CheckIcon, ChevronUpDownIcon } from '@heroicons/vue/20/solid'\nimport {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n} from '@headlessui/vue'\n\n// Refs for floating dropdown positioning\nconst listboxButtonRef = ref<InstanceType<typeof ListboxButton> | null>(null)\nconst dropdownStyle = ref<{ top: string; left: string; width: string }>({\n top: '0px',\n left: '0px',\n width: '120px'\n})\nconst dropdownOpen = ref(false)\n\nfunction updateDropdownPosition() {\n // Get the actual DOM element from the Headless UI component\n const el = listboxButtonRef.value?.$el as HTMLElement | undefined\n if (!el) return\n const rect = el.getBoundingClientRect()\n dropdownStyle.value = {\n top: `${rect.bottom + 4}px`,\n left: `${rect.left}px`,\n width: `${Math.max(rect.width, 120)}px`\n }\n}\n\nfunction onDropdownClick() {\n dropdownOpen.value = !dropdownOpen.value\n if (dropdownOpen.value) {\n updateDropdownPosition()\n }\n}\n\n// Update position on scroll/resize when dropdown is open\nfunction handleScrollOrResize() {\n if (dropdownOpen.value) {\n updateDropdownPosition()\n }\n}\n\nonMounted(() => {\n window.addEventListener('scroll', handleScrollOrResize, true)\n window.addEventListener('resize', handleScrollOrResize)\n})\n\nonBeforeUnmount(() => {\n window.removeEventListener('scroll', handleScrollOrResize, true)\n window.removeEventListener('resize', handleScrollOrResize)\n})\n\ntype SelectOption = { label: string; value: string }\n\ntype CompositeValue = {\n select?: string\n text?: string\n display?: string\n}\n\ntype CompositePropValue = CompositeValue | string | number | Record<string, unknown> | null | undefined\n\nconst YEAR_PATTERN = /\\b(19|20)\\d{2}\\b$/\n\nfunction coerceString(input: unknown): string | undefined {\n if (typeof input === 'string') {\n const trimmed = input.trim()\n return trimmed.length ? trimmed : undefined\n }\n if (typeof input === 'number') {\n const str = String(input)\n return str.length ? str : undefined\n }\n return undefined\n}\n\nfunction isCompositeLike(value: unknown): value is CompositeValue {\n return (\n !!value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n ('select' in (value as Record<string, unknown>) ||\n 'text' in (value as Record<string, unknown>) ||\n 'display' in (value as Record<string, unknown>))\n )\n}\n\nfunction hasMeaningfulComposite(value: CompositeValue): boolean {\n return !!(value.select || value.text || value.display)\n}\n\nfunction buildDisplay(select?: string, text?: string, fallback?: string): string | undefined {\n if (fallback) return fallback\n if (select && text) return `${select} ${text}`.trim()\n return select || text || undefined\n}\n\nfunction normalizeCompositeValue(rawValue: CompositePropValue): CompositeValue {\n const result: CompositeValue = {}\n\n if (rawValue === null || rawValue === undefined) return result\n\n if (typeof rawValue === 'string' || typeof rawValue === 'number') {\n const str = coerceString(rawValue)\n if (!str) return result\n\n const yearMatch = str.match(YEAR_PATTERN)\n if (yearMatch) {\n const year = yearMatch[0]\n const prefix = str.slice(0, str.length - year.length).trim()\n if (prefix) result.select = prefix\n result.text = year\n result.display = buildDisplay(result.select, result.text)\n } else {\n result.text = str\n result.display = str\n }\n return result\n }\n\n if (isCompositeLike(rawValue)) {\n const composite = rawValue as CompositeValue\n const select = coerceString(composite.select)\n const text = coerceString(composite.text)\n const display = coerceString(composite.display)\n\n if (select) result.select = select\n if (text) result.text = text\n result.display = buildDisplay(result.select, result.text, display)\n return result\n }\n\n if (typeof rawValue === 'object' && !Array.isArray(rawValue)) {\n const obj = rawValue as Record<string, unknown>\n const select =\n coerceString(obj.select) ?? coerceString(obj.term) ?? coerceString(obj.semester)\n const text =\n coerceString(obj.text) ?? coerceString(obj.year) ?? coerceString(obj.value)\n const display = coerceString(obj.display) ?? coerceString(obj.label)\n\n if (select) result.select = select\n if (text) result.text = text\n result.display = buildDisplay(result.select, result.text, display)\n return result\n }\n\n return result\n}\n\nconst props = defineProps({\n name: { type: String, required: true },\n label: { type: String, default: '' },\n tertiaryLabel: { type: String, default: '' },\n secondaryLabel: { type: String, default: '' },\n labelIconLeft: { type: [Object, Function] as PropType<Component>, default: undefined },\n value: {\n type: [Object, String, Number] as PropType<CompositePropValue>,\n default: undefined\n },\n select: {\n type: Object as PropType<{ label?: string; options: SelectOption[]; placeholder?: string }>,\n default: () => ({ options: [] })\n },\n text: {\n type: Object as PropType<{\n label?: string\n placeholder?: string\n inputMode?: 'text' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\n maxLength?: number\n }>,\n default: () => ({})\n },\n delimiter: { type: String, default: ' ' },\n formatter: { type: Function as PropType<(v: CompositeValue) => string | undefined> },\n showErrors: { type: Boolean, default: false },\n hasError: { type: Boolean, default: false },\n validateOnMount: { type: Boolean, default: false },\n textValidationRegex: { type: [RegExp, Object] as PropType<RegExp>, default: undefined },\n requiredText: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n disabledMessage: { type: String, default: '' },\n colorfulValidation: { type: Boolean, default: true },\n showValidCheck: { type: Boolean, default: true }\n})\n\nconst emit = defineEmits<{\n 'update:value': [value: CompositeValue]\n 'update:validity': [isValid: boolean]\n}>()\n\nconst initialNormalizedValue = normalizeCompositeValue(props.value)\n\nconst state = reactive({\n localValue: initialNormalizedValue\n})\n\nconst { localValue } = toRefs(state)\n\nconst shouldEmitNormalizedInitialValue = computed(\n () => hasMeaningfulComposite(initialNormalizedValue) && !isCompositeLike(props.value)\n)\n\nconst selectOptions = computed<SelectOption[]>(() => props.select?.options || [])\n\n// Find the selected option object based on localValue.select\nconst selectedOption = computed<SelectOption | null>(() => {\n if (!localValue.value.select) return null\n return selectOptions.value.find(opt => opt.value === localValue.value.select) || null\n})\n\nconst isTextInvalid = computed(() => {\n const t = localValue.value.text\n if (!props.textValidationRegex) {\n return false\n }\n if (!t || String(t).trim() === '') {\n return props.requiredText === true\n }\n return !props.textValidationRegex.test(String(t))\n})\n\nconst showError = computed(() => props.showErrors && (props.hasError || isTextInvalid.value))\nconst showSuccess = computed(\n () => props.showValidCheck && !showError.value && !!computedDisplay.value\n)\n\nconst containerRingClass = computed(() => {\n if (props.disabled) return 'sl-ring-gray-200 dark:sl-ring-slate-700'\n if (!props.colorfulValidation) return 'sl-ring-gray-300 dark:sl-ring-slate-600 focus-within:sl-ring-stachelock-600'\n if (showError.value) return 'sl-ring-red-300 dark:sl-ring-red-500 focus-within:sl-ring-stachelock-600'\n if (showSuccess.value) return 'sl-ring-green-300 dark:sl-ring-green-500 focus-within:sl-ring-stachelock-600'\n return 'sl-ring-gray-300 dark:sl-ring-slate-600 focus-within:sl-ring-stachelock-600'\n})\n\nconst computedDisplay = computed(() => {\n const raw = { select: localValue.value.select, text: localValue.value.text } as CompositeValue\n const custom = props.formatter ? props.formatter(raw) : undefined\n if (custom !== undefined) return custom\n const parts = [raw.select, raw.text].filter(Boolean)\n return parts.join(props.delimiter).trim()\n})\n\nconst friendlyErrorMessage = computed(() => {\n if (!showError.value) return ''\n const hasSelect = !!localValue.value.select\n const hasText = !!localValue.value.text && String(localValue.value.text).trim() !== ''\n const yearOk = !!localValue.value.text && /^\\d{4}$/.test(String(localValue.value.text))\n if (!hasSelect && !hasText) return 'Please select an option and enter a value.'\n if (!hasSelect) return 'Please select an option.'\n if (!hasText) return 'Please enter a value.'\n if (!yearOk && props.textValidationRegex) return 'Please enter a valid value.'\n return 'Please complete both fields.'\n})\n\nfunction emitValueAndValidity() {\n const display = computedDisplay.value || undefined\n const payload: CompositeValue = {\n select: localValue.value.select,\n text: localValue.value.text,\n display\n }\n emit('update:value', payload)\n const isValid = !!(payload.select && payload.text && String(payload.text).length > 0)\n emit('update:validity', isValid)\n}\n\nfunction onSelectChange(opt: SelectOption | null) {\n localValue.value.select = opt?.value || undefined\n dropdownOpen.value = false\n emitValueAndValidity()\n}\n\nfunction onTextChange(val: string) {\n localValue.value.text = val || undefined\n emitValueAndValidity()\n}\n\n// Sync down-prop changes\nwatch(\n () => props.value,\n (v) => {\n state.localValue = normalizeCompositeValue(v)\n },\n { deep: true }\n)\n\nonMounted(() => {\n if (shouldEmitNormalizedInitialValue.value) {\n emitValueAndValidity()\n }\n})\n\n// Validate on mount if requested\nif (props.validateOnMount) {\n emitValueAndValidity()\n}\n</script>\n\n"],"names":["listboxButtonRef","ref","dropdownStyle","dropdownOpen","updateDropdownPosition","el","rect","onDropdownClick","handleScrollOrResize","onMounted","onBeforeUnmount","YEAR_PATTERN","coerceString","input","trimmed","str","isCompositeLike","value","hasMeaningfulComposite","buildDisplay","select","text","fallback","normalizeCompositeValue","rawValue","result","yearMatch","year","prefix","composite","display","obj","props","__props","emit","__emit","initialNormalizedValue","state","reactive","localValue","toRefs","shouldEmitNormalizedInitialValue","computed","selectOptions","selectedOption","opt","isTextInvalid","t","showError","showSuccess","computedDisplay","containerRingClass","raw","custom","friendlyErrorMessage","hasSelect","hasText","yearOk","emitValueAndValidity","payload","isValid","onSelectChange","onTextChange","val","watch","v","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_createBlock","_resolveDynamicComponent","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createVNode","_unref","ExclamationCircleIcon","_hoisted_11","CheckCircleIcon","_normalizeClass","Listbox","_hoisted_12","ListboxButton","_hoisted_13","ChevronUpDownIcon","_Teleport","_Transition","ListboxOptions","_Fragment","_renderList","ListboxOption","active","selected","_hoisted_14","CheckIcon","_hoisted_15","$event","_hoisted_17","_hoisted_18"],"mappings":"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"}
1
+ {"version":3,"file":"SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js","sources":["../src/components/inputs/SelectTextInput.vue"],"sourcesContent":["<!--\n @component SelectTextInput\n @description Combined select dropdown and text input field.\n \n A composite input that combines a select dropdown with a text input,\n useful for inputs like \"Fall 2023\" where the user selects a term\n and enters a year. Uses Headless UI Listbox for accessible select.\n \n @props\n - name (string, required): Field name for form binding\n - label (string, optional): Main label text\n - value (CompositeValue | string, optional): Combined value object or string\n - select (object, optional): Select configuration { options, placeholder, label }\n - text (object, optional): Text input config { placeholder, inputMode, maxLength, label }\n - delimiter (string, optional): Character between select and text in display\n - showErrors (boolean, optional): Force show validation errors\n - hasError (boolean, optional): External error state\n - disabled (boolean, optional): Disabled state\n - colorfulValidation (boolean, optional): Color-coded validation states\n - showValidCheck (boolean, optional): Show success icon when valid\n \n @emits\n - update:value: Emitted when composite value changes\n - update:validity: Emitted when validation state changes\n \n @example\n <SelectTextInput\n name=\"graduation\"\n label=\"Expected Graduation\"\n :value=\"{ select: 'Fall', text: '2024' }\"\n :select=\"{ options: [{ label: 'Fall', value: 'Fall' }, { label: 'Spring', value: 'Spring' }] }\"\n :text=\"{ placeholder: 'Year', inputMode: 'numeric', maxLength: 4 }\"\n @update:value=\"handleUpdate\"\n />\n-->\n<template>\n <div class=\"sl-space-y-1\" data-testid=\"select-text-input\">\n <!-- Main label row -->\n <div \n v-if=\"label || secondaryLabel || tertiaryLabel || (disabled && disabledMessage)\" \n class=\"sl-grid sl-grid-cols-3 sl-items-center\"\n >\n <div class=\"sl-col-span-2 sl-flex sl-items-center\">\n <component \n v-if=\"labelIconLeft\" \n :is=\"labelIconLeft\" \n class=\"sl-mr-2 sl-h-4 sl-w-4 sl-text-yellow-300\" \n />\n <label v-if=\"label\" class=\"sl-text-sm sl-font-medium\" :style=\"{ color: 'var(--sl-text-primary)' }\">\n {{ label }}\n </label>\n </div>\n <div class=\"sl-justify-self-end sl-col-start-3 sl-text-right sl-space-y-0.5\">\n <p \n v-if=\"disabled && disabledMessage\" \n class=\"sl-text-xs\" :style=\"{ color: 'var(--sl-text-muted)' }\"\n >\n {{ disabledMessage }}\n </p>\n <span \n v-if=\"secondaryLabel\" \n class=\"sl-text-2xs sl-uppercase sl-truncate sl-font-semibold sl-block\" :style=\"{ color: 'var(--sl-text-secondary)' }\"\n >\n {{ secondaryLabel }}\n </span>\n <span \n v-if=\"tertiaryLabel\" \n class=\"sl-text-xs sl-uppercase sl-truncate sl-font-semibold sl-block\" :style=\"{ color: 'var(--sl-text-secondary)' }\"\n >\n {{ tertiaryLabel }}\n </span>\n </div>\n </div>\n\n <!-- Input container -->\n <div class=\"sl-relative sl-mt-1\">\n <!-- Error icon -->\n <div \n v-if=\"showError\" \n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-3 sl-z-20 sl-pointer-events-none\"\n >\n <ExclamationCircleIcon class=\"sl-h-5 sl-w-5 sl-text-red-500\" aria-hidden=\"true\" />\n </div>\n <!-- Success icon -->\n <div \n v-else-if=\"showSuccess\" \n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-3 sl-z-20 sl-pointer-events-none\"\n >\n <CheckCircleIcon class=\"sl-h-5 sl-w-5 sl-text-green-500\" aria-hidden=\"true\" />\n </div>\n\n <div \n class=\"sl-flex sl-rounded-md sl-shadow-sm sl-ring-1 sl-ring-inset focus-within:sl-ring-2 focus-within:sl-ring-inset\"\n :class=\"containerRingClass\"\n >\n <!-- Select dropdown using Headless UI Listbox -->\n <Listbox\n :model-value=\"selectedOption\"\n @update:model-value=\"onSelectChange\"\n :disabled=\"disabled\"\n >\n <div class=\"sl-relative\">\n <ListboxButton\n ref=\"listboxButtonRef\"\n :class=\"[\n 'sl-relative sl-cursor-default sl-rounded-l-md sl-border-0 sl-py-2 sl-pl-3 sl-pr-10 sl-text-left sl-text-sm',\n 'sl-bg-white dark:sl-bg-slate-900 sl-text-gray-900 dark:sl-text-slate-100',\n 'focus:sl-outline-none focus:sl-ring-0',\n disabled ? 'sl-cursor-not-allowed sl-bg-gray-50 dark:sl-bg-slate-800 sl-text-gray-500 dark:sl-text-slate-400' : ''\n ]\"\n data-testid=\"select-dropdown\"\n @click=\"onDropdownClick\"\n >\n <span \n class=\"sl-block sl-truncate sl-min-w-[80px]\"\n :class=\"selectedOption ? '' : 'sl-text-gray-500 dark:sl-text-slate-400'\"\n >\n {{ selectedOption?.label || select?.placeholder || 'Select…' }}\n </span>\n <span class=\"sl-pointer-events-none sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-2\">\n <ChevronUpDownIcon class=\"sl-h-5 sl-w-5 sl-text-gray-400 dark:sl-text-slate-300\" aria-hidden=\"true\" />\n </span>\n </ListboxButton>\n \n <Teleport to=\"body\">\n <transition\n leave-active-class=\"sl-transition sl-duration-100 sl-ease-in\"\n leave-from-class=\"sl-opacity-100\"\n leave-to-class=\"sl-opacity-0\"\n >\n <ListboxOptions\n class=\"sl-fixed sl-z-[9999] sl-max-h-56 sl-overflow-auto sl-rounded-md sl-bg-white dark:sl-bg-slate-800 sl-py-1 sl-text-base sl-shadow-lg dark:sl-shadow-slate-900/50 sl-ring-1 sl-ring-black sl-ring-opacity-5 dark:sl-ring-slate-700 focus:sl-outline-none sm:sl-text-sm\"\n :style=\"dropdownStyle\"\n >\n <ListboxOption\n v-for=\"opt in selectOptions\"\n :key=\"opt.value\"\n :value=\"opt\"\n as=\"template\"\n v-slot=\"{ active, selected }\"\n >\n <li\n :class=\"[\n 'sl-relative sl-cursor-default sl-select-none sl-py-2 sl-pl-3 sl-pr-9',\n active ? 'sl-bg-stachelock-600 sl-text-white' : 'sl-text-gray-900 dark:sl-text-slate-200'\n ]\"\n >\n <span :class=\"['sl-block sl-truncate', selected ? 'sl-font-medium' : 'sl-font-normal']\">\n {{ opt.label }}\n </span>\n <span\n v-if=\"selected\"\n class=\"sl-absolute sl-inset-y-0 sl-right-0 sl-flex sl-items-center sl-pr-4\"\n >\n <CheckIcon class=\"sl-h-5 sl-w-5\" aria-hidden=\"true\" />\n </span>\n </li>\n </ListboxOption>\n </ListboxOptions>\n </transition>\n </Teleport>\n </div>\n </Listbox>\n\n <!-- Vertical divider -->\n <div class=\"sl-w-px sl-bg-gray-200 dark:sl-bg-slate-700 sl-self-stretch\" />\n\n <!-- Text input -->\n <div class=\"sl-flex-1 sl-relative\">\n <input\n :class=\"[\n 'sl-block sl-w-full sl-text-sm focus:sl-outline-none focus:sl-ring-0 sl-border-0 sl-py-2 sl-pl-3 sl-pr-10 sl-rounded-r-md',\n 'sl-placeholder:text-gray-400 dark:sl-placeholder:text-slate-500',\n disabled \n ? 'sl-bg-gray-50 dark:sl-bg-slate-800 sl-text-gray-500 dark:sl-text-slate-400 sl-cursor-not-allowed' \n : 'sl-bg-white dark:sl-bg-slate-900 sl-text-gray-900 dark:sl-text-slate-100'\n ]\"\n :aria-invalid=\"showError || undefined\"\n :name=\"`${name}__text`\"\n :placeholder=\"text?.placeholder || ''\"\n :inputmode=\"text?.inputMode ?? 'text'\"\n :maxlength=\"text?.maxLength || undefined\"\n :value=\"localValue.text || ''\"\n @input=\"onTextChange(($event.target as HTMLInputElement).value)\"\n :disabled=\"disabled\"\n data-testid=\"text-input\"\n />\n </div>\n </div>\n </div>\n\n <!-- Error message -->\n <Transition\n enter-active-class=\"sl-transition sl-ease-out sl-duration-300\"\n enter-from-class=\"sl-opacity-0 sl-transform sl-scale-95\"\n enter-to-class=\"sl-opacity-100 sl-transform sl-scale-100\"\n leave-active-class=\"sl-transition sl-ease-in sl-duration-200\"\n leave-from-class=\"sl-opacity-100 sl-transform sl-scale-100\"\n leave-to-class=\"sl-opacity-0 sl-transform sl-scale-95\"\n >\n <p \n v-if=\"showError\"\n class=\"sl-mt-2 sl-text-sm sl-text-red-600 dark:sl-text-red-400 sl-bg-red-50 dark:sl-bg-red-900/20 sl-ring-1 sl-ring-red-100 dark:sl-ring-red-800 sl-rounded-md sl-p-2\"\n >\n {{ friendlyErrorMessage }}\n </p>\n </Transition>\n\n <!-- Display value hint -->\n <p \n v-if=\"!showError && computedDisplay\" \n class=\"sl-text-xs sl-text-gray-500 dark:sl-text-slate-400\"\n >\n {{ computedDisplay }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, reactive, toRefs, watch, onMounted, ref, onBeforeUnmount, type PropType, type Component } from 'vue'\nimport { CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/vue/20/solid'\nimport { CheckIcon, ChevronUpDownIcon } from '@heroicons/vue/20/solid'\nimport {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n} from '@headlessui/vue'\n\n// Refs for floating dropdown positioning\nconst listboxButtonRef = ref<InstanceType<typeof ListboxButton> | null>(null)\nconst dropdownStyle = ref<{ top: string; left: string; width: string }>({\n top: '0px',\n left: '0px',\n width: '120px'\n})\nconst dropdownOpen = ref(false)\n\nfunction updateDropdownPosition() {\n // Get the actual DOM element from the Headless UI component\n const el = listboxButtonRef.value?.$el as HTMLElement | undefined\n if (!el) return\n const rect = el.getBoundingClientRect()\n dropdownStyle.value = {\n top: `${rect.bottom + 4}px`,\n left: `${rect.left}px`,\n width: `${Math.max(rect.width, 120)}px`\n }\n}\n\nfunction onDropdownClick() {\n dropdownOpen.value = !dropdownOpen.value\n if (dropdownOpen.value) {\n updateDropdownPosition()\n }\n}\n\n// Update position on scroll/resize when dropdown is open\nfunction handleScrollOrResize() {\n if (dropdownOpen.value) {\n updateDropdownPosition()\n }\n}\n\nonMounted(() => {\n window.addEventListener('scroll', handleScrollOrResize, true)\n window.addEventListener('resize', handleScrollOrResize)\n})\n\nonBeforeUnmount(() => {\n window.removeEventListener('scroll', handleScrollOrResize, true)\n window.removeEventListener('resize', handleScrollOrResize)\n})\n\ntype SelectOption = { label: string; value: string }\n\ntype CompositeValue = {\n select?: string\n text?: string\n display?: string\n}\n\ntype CompositePropValue = CompositeValue | string | number | Record<string, unknown> | null | undefined\n\nconst YEAR_PATTERN = /\\b(19|20)\\d{2}\\b$/\n\nfunction coerceString(input: unknown): string | undefined {\n if (typeof input === 'string') {\n const trimmed = input.trim()\n return trimmed.length ? trimmed : undefined\n }\n if (typeof input === 'number') {\n const str = String(input)\n return str.length ? str : undefined\n }\n return undefined\n}\n\nfunction isCompositeLike(value: unknown): value is CompositeValue {\n return (\n !!value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n ('select' in (value as Record<string, unknown>) ||\n 'text' in (value as Record<string, unknown>) ||\n 'display' in (value as Record<string, unknown>))\n )\n}\n\nfunction hasMeaningfulComposite(value: CompositeValue): boolean {\n return !!(value.select || value.text || value.display)\n}\n\nfunction buildDisplay(select?: string, text?: string, fallback?: string): string | undefined {\n if (fallback) return fallback\n if (select && text) return `${select} ${text}`.trim()\n return select || text || undefined\n}\n\nfunction normalizeCompositeValue(rawValue: CompositePropValue): CompositeValue {\n const result: CompositeValue = {}\n\n if (rawValue === null || rawValue === undefined) return result\n\n if (typeof rawValue === 'string' || typeof rawValue === 'number') {\n const str = coerceString(rawValue)\n if (!str) return result\n\n const yearMatch = str.match(YEAR_PATTERN)\n if (yearMatch) {\n const year = yearMatch[0]\n const prefix = str.slice(0, str.length - year.length).trim()\n if (prefix) result.select = prefix\n result.text = year\n result.display = buildDisplay(result.select, result.text)\n } else {\n result.text = str\n result.display = str\n }\n return result\n }\n\n if (isCompositeLike(rawValue)) {\n const composite = rawValue as CompositeValue\n const select = coerceString(composite.select)\n const text = coerceString(composite.text)\n const display = coerceString(composite.display)\n\n if (select) result.select = select\n if (text) result.text = text\n result.display = buildDisplay(result.select, result.text, display)\n return result\n }\n\n if (typeof rawValue === 'object' && !Array.isArray(rawValue)) {\n const obj = rawValue as Record<string, unknown>\n const select =\n coerceString(obj.select) ?? coerceString(obj.term) ?? coerceString(obj.semester)\n const text =\n coerceString(obj.text) ?? coerceString(obj.year) ?? coerceString(obj.value)\n const display = coerceString(obj.display) ?? coerceString(obj.label)\n\n if (select) result.select = select\n if (text) result.text = text\n result.display = buildDisplay(result.select, result.text, display)\n return result\n }\n\n return result\n}\n\nconst props = defineProps({\n name: { type: String, required: true },\n label: { type: String, default: '' },\n tertiaryLabel: { type: String, default: '' },\n secondaryLabel: { type: String, default: '' },\n labelIconLeft: { type: [Object, Function] as PropType<Component>, default: undefined },\n value: {\n type: [Object, String, Number] as PropType<CompositePropValue>,\n default: undefined\n },\n select: {\n type: Object as PropType<{ label?: string; options: SelectOption[]; placeholder?: string }>,\n default: () => ({ options: [] })\n },\n text: {\n type: Object as PropType<{\n label?: string\n placeholder?: string\n inputMode?: 'text' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\n maxLength?: number\n }>,\n default: () => ({})\n },\n delimiter: { type: String, default: ' ' },\n formatter: { type: Function as PropType<(v: CompositeValue) => string | undefined> },\n showErrors: { type: Boolean, default: false },\n hasError: { type: Boolean, default: false },\n validateOnMount: { type: Boolean, default: false },\n textValidationRegex: { type: [RegExp, Object] as PropType<RegExp>, default: undefined },\n requiredText: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n disabledMessage: { type: String, default: '' },\n colorfulValidation: { type: Boolean, default: true },\n showValidCheck: { type: Boolean, default: true }\n})\n\nconst emit = defineEmits<{\n 'update:value': [value: CompositeValue]\n 'update:validity': [isValid: boolean]\n}>()\n\nconst initialNormalizedValue = normalizeCompositeValue(props.value)\n\nconst state = reactive({\n localValue: initialNormalizedValue\n})\n\nconst { localValue } = toRefs(state)\n\nconst shouldEmitNormalizedInitialValue = computed(\n () => hasMeaningfulComposite(initialNormalizedValue) && !isCompositeLike(props.value)\n)\n\nconst selectOptions = computed<SelectOption[]>(() => props.select?.options || [])\n\n// Find the selected option object based on localValue.select\nconst selectedOption = computed<SelectOption | null>(() => {\n if (!localValue.value.select) return null\n return selectOptions.value.find(opt => opt.value === localValue.value.select) || null\n})\n\nconst isTextInvalid = computed(() => {\n const t = localValue.value.text\n if (!props.textValidationRegex) {\n return false\n }\n if (!t || String(t).trim() === '') {\n return props.requiredText === true\n }\n return !props.textValidationRegex.test(String(t))\n})\n\nconst showError = computed(() => props.showErrors && (props.hasError || isTextInvalid.value))\nconst showSuccess = computed(\n () => props.showValidCheck && !showError.value && !!computedDisplay.value\n)\n\nconst containerRingClass = computed(() => {\n if (props.disabled) return 'sl-ring-gray-200 dark:sl-ring-slate-700'\n if (!props.colorfulValidation) return 'sl-ring-gray-300 dark:sl-ring-slate-600 focus-within:sl-ring-stachelock-600'\n if (showError.value) return 'sl-ring-red-300 dark:sl-ring-red-500 focus-within:sl-ring-stachelock-600'\n if (showSuccess.value) return 'sl-ring-green-300 dark:sl-ring-green-500 focus-within:sl-ring-stachelock-600'\n return 'sl-ring-gray-300 dark:sl-ring-slate-600 focus-within:sl-ring-stachelock-600'\n})\n\nconst computedDisplay = computed(() => {\n const raw = { select: localValue.value.select, text: localValue.value.text } as CompositeValue\n const custom = props.formatter ? props.formatter(raw) : undefined\n if (custom !== undefined) return custom\n const parts = [raw.select, raw.text].filter(Boolean)\n return parts.join(props.delimiter).trim()\n})\n\nconst friendlyErrorMessage = computed(() => {\n if (!showError.value) return ''\n const hasSelect = !!localValue.value.select\n const hasText = !!localValue.value.text && String(localValue.value.text).trim() !== ''\n const yearOk = !!localValue.value.text && /^\\d{4}$/.test(String(localValue.value.text))\n if (!hasSelect && !hasText) return 'Please select an option and enter a value.'\n if (!hasSelect) return 'Please select an option.'\n if (!hasText) return 'Please enter a value.'\n if (!yearOk && props.textValidationRegex) return 'Please enter a valid value.'\n return 'Please complete both fields.'\n})\n\nfunction emitValueAndValidity() {\n const display = computedDisplay.value || undefined\n const payload: CompositeValue = {\n select: localValue.value.select,\n text: localValue.value.text,\n display\n }\n emit('update:value', payload)\n const isValid = !!(payload.select && payload.text && String(payload.text).length > 0)\n emit('update:validity', isValid)\n}\n\nfunction onSelectChange(opt: SelectOption | null) {\n localValue.value.select = opt?.value || undefined\n dropdownOpen.value = false\n emitValueAndValidity()\n}\n\nfunction onTextChange(val: string) {\n localValue.value.text = val || undefined\n emitValueAndValidity()\n}\n\n// Sync down-prop changes\nwatch(\n () => props.value,\n (v) => {\n state.localValue = normalizeCompositeValue(v)\n },\n { deep: true }\n)\n\nonMounted(() => {\n if (shouldEmitNormalizedInitialValue.value) {\n emitValueAndValidity()\n }\n})\n\n// Validate on mount if requested\nif (props.validateOnMount) {\n emitValueAndValidity()\n}\n</script>\n\n"],"names":["listboxButtonRef","ref","dropdownStyle","dropdownOpen","updateDropdownPosition","el","rect","onDropdownClick","handleScrollOrResize","onMounted","onBeforeUnmount","YEAR_PATTERN","coerceString","input","trimmed","str","isCompositeLike","value","hasMeaningfulComposite","buildDisplay","select","text","fallback","normalizeCompositeValue","rawValue","result","yearMatch","year","prefix","composite","display","obj","props","__props","emit","__emit","initialNormalizedValue","state","reactive","localValue","toRefs","shouldEmitNormalizedInitialValue","computed","selectOptions","selectedOption","opt","isTextInvalid","t","showError","showSuccess","computedDisplay","containerRingClass","raw","custom","friendlyErrorMessage","hasSelect","hasText","yearOk","emitValueAndValidity","payload","isValid","onSelectChange","onTextChange","val","watch","v","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_createBlock","_resolveDynamicComponent","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createVNode","_unref","ExclamationCircleIcon","_hoisted_11","CheckCircleIcon","_normalizeClass","Listbox","_hoisted_12","ListboxButton","_hoisted_13","ChevronUpDownIcon","_Teleport","_Transition","ListboxOptions","_Fragment","_renderList","ListboxOption","active","selected","_hoisted_14","CheckIcon","_hoisted_15","$event","_hoisted_17","_hoisted_18"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { defineComponent as x, ref as g, createElementBlock as u, openBlock as v
2
2
  import { r as b } from "./XMarkIcon-Cwy3T6p8.js";
3
3
  import { r as y } from "./Bars3Icon-BdOqcGcY.js";
4
4
  import { S as h, h as f } from "./transition-_rPfnoET.js";
5
- import { Y as _, G as k } from "./dialog-B2WA4G25.js";
6
- const w = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }, S = { class: "sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5" }, C = {
5
+ import { Y as k, G as w } from "./dialog-BJ2Ld8l3.js";
6
+ const _ = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }, S = { class: "sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5" }, C = {
7
7
  class: "sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10",
8
8
  style: { "background-color": "#dc2626" }
9
9
  }, z = { class: "sl-flex sl-h-16 sl-shrink-0 sl-items-center" }, W = { class: "sl-flex sl-flex-1 sl-flex-col" }, B = {
@@ -23,13 +23,13 @@ const w = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }
23
23
  }, c = () => {
24
24
  n.value = !0;
25
25
  };
26
- return (e, l) => (v(), u("div", w, [
26
+ return (e, l) => (v(), u("div", _, [
27
27
  o(a(h), {
28
28
  as: "template",
29
29
  show: n.value
30
30
  }, {
31
31
  default: i(() => [
32
- o(a(_), {
32
+ o(a(k), {
33
33
  as: "div",
34
34
  class: "sl-relative sl-z-50 lg:sl-hidden",
35
35
  onClose: p
@@ -44,11 +44,10 @@ const w = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }
44
44
  "leave-from": "sl-opacity-100",
45
45
  "leave-to": "sl-opacity-0"
46
46
  }, {
47
- default: i(() => l[2] || (l[2] = [
47
+ default: i(() => [...l[2] || (l[2] = [
48
48
  s("div", { class: "sl-fixed sl-inset-0 sl-bg-gray-900/80" }, null, -1)
49
- ])),
50
- _: 1,
51
- __: [2]
49
+ ])]),
50
+ _: 1
52
51
  }),
53
52
  s("div", $, [
54
53
  o(a(f), {
@@ -61,7 +60,7 @@ const w = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }
61
60
  "leave-to": "-sl-translate-x-full"
62
61
  }, {
63
62
  default: i(() => [
64
- o(a(k), { class: "sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1" }, {
63
+ o(a(w), { class: "sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1" }, {
65
64
  default: i(() => [
66
65
  o(a(f), {
67
66
  as: "template",
@@ -182,4 +181,4 @@ const w = { class: "sl-relative" }, $ = { class: "sl-fixed sl-inset-0 sl-flex" }
182
181
  export {
183
182
  J as _
184
183
  };
185
- //# sourceMappingURL=SidebarLayout.vue_vue_type_script_setup_true_lang-BD2PF5xp.js.map
184
+ //# sourceMappingURL=SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarLayout.vue_vue_type_script_setup_true_lang-BD2PF5xp.js","sources":["../src/components/layouts/SidebarLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-relative\">\n <!-- Mobile sidebar overlay -->\n <TransitionRoot as=\"template\" :show=\"sidebarOpen\">\n <Dialog as=\"div\" class=\"sl-relative sl-z-50 lg:sl-hidden\" @close=\"closeSidebar\">\n <TransitionChild as=\"template\" enter=\"sl-transition-opacity sl-ease-linear sl-duration-300\"\n enter-from=\"sl-opacity-0\" enter-to=\"sl-opacity-100\"\n leave=\"sl-transition-opacity sl-ease-linear sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-fixed sl-inset-0 sl-bg-gray-900/80\" />\n </TransitionChild>\n\n <div class=\"sl-fixed sl-inset-0 sl-flex\">\n <TransitionChild as=\"template\" enter=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\"\n enter-from=\"-sl-translate-x-full\" enter-to=\"sl-translate-x-0\"\n leave=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\" leave-from=\"sl-translate-x-0\"\n leave-to=\"-sl-translate-x-full\">\n <DialogPanel class=\"sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1\">\n <TransitionChild as=\"template\" enter=\"sl-ease-in-out sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-ease-in-out sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5\" @click=\"closeSidebar()\">\n <span class=\"sl-sr-only\">Close sidebar</span>\n <XMarkIcon class=\"sl-h-6 sl-w-6 sl-text-stachelock-050\" aria-hidden=\"true\" />\n </button>\n </div>\n </TransitionChild>\n\n <div\n class=\"sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10\"\n style=\"background-color: #dc2626;\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center\">\n <slot name=\"logo\">\n <div class=\"sl-font-semibold sl-text-lg\" style=\"color: #fef2f2;\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-flex sl-flex-1 sl-flex-col\">\n <ul role=\"list\" class=\"-sl-mx-2 sl-flex-1 sl-space-y-1\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n </nav>\n <div class=\"sl-mt-auto\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n\n <!-- Desktop sidebar -->\n <div\n class=\"sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4\"\n style=\"background-color: #dc2626;\"\n :class=\"isWideSidebar ? 'lg:sl-w-72' : 'lg:sl-w-20'\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6\">\n <slot name=\"logo\">\n <div class=\"sl-font-semibold sl-text-lg\" style=\"color: #fef2f2;\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full\">\n <ul role=\"list\"\n :class=\"isWideSidebar ? 'sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1' : 'sl-flex sl-flex-col sl-items-center sl-space-y-1'\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n <div class=\"sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </nav>\n </div>\n\n <!-- Main content area -->\n <div :class=\"['lg:sl-pl-20', isWideSidebar ? 'lg:sl-pl-72' : 'lg:sl-pl-20']\">\n <!-- Header -->\n <div\n class=\"sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 dark:sl-border-slate-700 sl-bg-white dark:sl-bg-slate-800 sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5 sl-text-gray-700 dark:sl-text-slate-300 lg:sl-hidden\" @click=\"openSidebar()\">\n <span class=\"sl-sr-only\">Open sidebar</span>\n <Bars3Icon class=\"sl-h-6 sl-w-6\" aria-hidden=\"true\" />\n </button>\n\n <!-- Separator -->\n <div class=\"sl-h-6 sl-w-px sl-bg-gray-900/10 dark:sl-bg-slate-700 lg:sl-hidden\" aria-hidden=\"true\" />\n\n <div class=\"sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6\">\n <div class=\"sl-relative sl-flex sl-flex-1\">\n <slot name=\"header-content\">\n <!-- Header content -->\n </slot>\n </div>\n <div class=\"sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6\">\n <slot name=\"header-right\">\n <!-- Header right content (notifications, profile, etc.) -->\n </slot>\n </div>\n </div>\n </div>\n\n <!-- Main content -->\n <main class=\"sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6\">\n <slot name=\"main\">\n <!-- Main content slot -->\n </slot>\n </main>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { Bars3Icon, XMarkIcon } from '@heroicons/vue/24/outline';\n\ndefineProps({\n isWideSidebar: {\n type: Boolean,\n default: false\n }\n});\n\nconst sidebarOpen = ref(false);\n\nconst closeSidebar = () => {\n sidebarOpen.value = false;\n};\n\nconst openSidebar = () => {\n sidebarOpen.value = true;\n};\n</script>\n\n<style scoped></style>\n"],"names":["sidebarOpen","ref","closeSidebar","openSidebar","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TransitionRoot","Dialog","TransitionChild","_cache","_createElementVNode","_hoisted_2","DialogPanel","_hoisted_3","XMarkIcon","_hoisted_4","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_hoisted_7","_hoisted_8","_normalizeClass","__props","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","Bars3Icon","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16"],"mappings":"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"}
1
+ {"version":3,"file":"SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js","sources":["../src/components/layouts/SidebarLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-relative\">\n <!-- Mobile sidebar overlay -->\n <TransitionRoot as=\"template\" :show=\"sidebarOpen\">\n <Dialog as=\"div\" class=\"sl-relative sl-z-50 lg:sl-hidden\" @close=\"closeSidebar\">\n <TransitionChild as=\"template\" enter=\"sl-transition-opacity sl-ease-linear sl-duration-300\"\n enter-from=\"sl-opacity-0\" enter-to=\"sl-opacity-100\"\n leave=\"sl-transition-opacity sl-ease-linear sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-fixed sl-inset-0 sl-bg-gray-900/80\" />\n </TransitionChild>\n\n <div class=\"sl-fixed sl-inset-0 sl-flex\">\n <TransitionChild as=\"template\" enter=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\"\n enter-from=\"-sl-translate-x-full\" enter-to=\"sl-translate-x-0\"\n leave=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\" leave-from=\"sl-translate-x-0\"\n leave-to=\"-sl-translate-x-full\">\n <DialogPanel class=\"sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1\">\n <TransitionChild as=\"template\" enter=\"sl-ease-in-out sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-ease-in-out sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5\" @click=\"closeSidebar()\">\n <span class=\"sl-sr-only\">Close sidebar</span>\n <XMarkIcon class=\"sl-h-6 sl-w-6 sl-text-stachelock-050\" aria-hidden=\"true\" />\n </button>\n </div>\n </TransitionChild>\n\n <div\n class=\"sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10\"\n style=\"background-color: #dc2626;\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center\">\n <slot name=\"logo\">\n <div class=\"sl-font-semibold sl-text-lg\" style=\"color: #fef2f2;\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-flex sl-flex-1 sl-flex-col\">\n <ul role=\"list\" class=\"-sl-mx-2 sl-flex-1 sl-space-y-1\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n </nav>\n <div class=\"sl-mt-auto\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n\n <!-- Desktop sidebar -->\n <div\n class=\"sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4\"\n style=\"background-color: #dc2626;\"\n :class=\"isWideSidebar ? 'lg:sl-w-72' : 'lg:sl-w-20'\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6\">\n <slot name=\"logo\">\n <div class=\"sl-font-semibold sl-text-lg\" style=\"color: #fef2f2;\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full\">\n <ul role=\"list\"\n :class=\"isWideSidebar ? 'sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1' : 'sl-flex sl-flex-col sl-items-center sl-space-y-1'\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n <div class=\"sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </nav>\n </div>\n\n <!-- Main content area -->\n <div :class=\"['lg:sl-pl-20', isWideSidebar ? 'lg:sl-pl-72' : 'lg:sl-pl-20']\">\n <!-- Header -->\n <div\n class=\"sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 dark:sl-border-slate-700 sl-bg-white dark:sl-bg-slate-800 sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5 sl-text-gray-700 dark:sl-text-slate-300 lg:sl-hidden\" @click=\"openSidebar()\">\n <span class=\"sl-sr-only\">Open sidebar</span>\n <Bars3Icon class=\"sl-h-6 sl-w-6\" aria-hidden=\"true\" />\n </button>\n\n <!-- Separator -->\n <div class=\"sl-h-6 sl-w-px sl-bg-gray-900/10 dark:sl-bg-slate-700 lg:sl-hidden\" aria-hidden=\"true\" />\n\n <div class=\"sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6\">\n <div class=\"sl-relative sl-flex sl-flex-1\">\n <slot name=\"header-content\">\n <!-- Header content -->\n </slot>\n </div>\n <div class=\"sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6\">\n <slot name=\"header-right\">\n <!-- Header right content (notifications, profile, etc.) -->\n </slot>\n </div>\n </div>\n </div>\n\n <!-- Main content -->\n <main class=\"sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6\">\n <slot name=\"main\">\n <!-- Main content slot -->\n </slot>\n </main>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { Bars3Icon, XMarkIcon } from '@heroicons/vue/24/outline';\n\ndefineProps({\n isWideSidebar: {\n type: Boolean,\n default: false\n }\n});\n\nconst sidebarOpen = ref(false);\n\nconst closeSidebar = () => {\n sidebarOpen.value = false;\n};\n\nconst openSidebar = () => {\n sidebarOpen.value = true;\n};\n</script>\n\n<style scoped></style>\n"],"names":["sidebarOpen","ref","closeSidebar","openSidebar","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TransitionRoot","Dialog","TransitionChild","_cache","_createElementVNode","_hoisted_2","DialogPanel","_hoisted_3","XMarkIcon","_hoisted_4","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_hoisted_7","_hoisted_8","_normalizeClass","__props","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","Bars3Icon","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16"],"mappings":"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"}
@@ -1,27 +1,27 @@
1
- import { defineComponent as s, computed as r, createElementBlock as d, openBlock as a, normalizeStyle as m, createBlock as h, createCommentVNode as c, unref as y } from "vue";
1
+ import { defineComponent as d, computed as a, createElementBlock as m, openBlock as i, normalizeStyle as s, createBlock as c, createCommentVNode as h, unref as y } from "vue";
2
2
  import f from "vue-echarts";
3
3
  import { use as u } from "echarts/core";
4
4
  import { CanvasRenderer as w } from "echarts/renderers";
5
- import { LineChart as C, BarChart as b } from "echarts/charts";
6
- import { GridComponent as g } from "echarts/components";
7
- import { chartColors as x, getAreaGradient as S } from "./charts/chartTheme.js";
8
- const M = /* @__PURE__ */ s({
5
+ import { LineChart as x, BarChart as C } from "echarts/charts";
6
+ import { GridComponent as b } from "echarts/components";
7
+ import { chartColors as g, getAreaGradient as S } from "./charts/chartTheme.js";
8
+ const M = /* @__PURE__ */ d({
9
9
  __name: "SparklineChart",
10
10
  props: {
11
11
  data: {},
12
12
  type: { default: "line" },
13
13
  height: { default: 40 },
14
14
  width: { default: "100%" },
15
- color: { default: x.primary[0] },
15
+ color: { default: g.primary[0] },
16
16
  showEndpoint: { type: Boolean, default: !1 }
17
17
  },
18
- setup(i) {
19
- u([w, C, b, g]);
20
- const t = i, n = r(() => ({
18
+ setup(o) {
19
+ u([w, x, C, b]);
20
+ const t = o, n = a(() => ({
21
21
  height: `${t.height}px`,
22
22
  width: typeof t.width == "number" ? `${t.width}px` : t.width
23
- })), l = r(() => {
24
- const o = t.type === "area", e = t.type === "bar";
23
+ })), l = a(() => {
24
+ const r = t.type === "area", e = t.type === "bar";
25
25
  return {
26
26
  grid: {
27
27
  left: 0,
@@ -51,7 +51,7 @@ const M = /* @__PURE__ */ s({
51
51
  width: 2,
52
52
  color: t.color
53
53
  },
54
- areaStyle: o ? {
54
+ areaStyle: r ? {
55
55
  color: S(t.color)
56
56
  } : void 0,
57
57
  itemStyle: {
@@ -61,18 +61,18 @@ const M = /* @__PURE__ */ s({
61
61
  }]
62
62
  };
63
63
  });
64
- return (o, e) => (a(), d("div", {
65
- style: m(n.value)
64
+ return (r, e) => (i(), m("div", {
65
+ style: s(n.value)
66
66
  }, [
67
- o.data.length > 0 ? (a(), h(y(f), {
67
+ o.data.length > 0 ? (i(), c(y(f), {
68
68
  key: 0,
69
69
  option: l.value,
70
70
  autoresize: !0
71
- }, null, 8, ["option"])) : c("", !0)
71
+ }, null, 8, ["option"])) : h("", !0)
72
72
  ], 4));
73
73
  }
74
74
  });
75
75
  export {
76
76
  M as _
77
77
  };
78
- //# sourceMappingURL=SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js.map
78
+ //# sourceMappingURL=SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js","sources":["../src/components/charts/SparklineChart.vue"],"sourcesContent":["<!--\n @component SparklineChart\n @description Mini inline sparkline chart.\n \n A compact chart for displaying trends in small spaces,\n like table cells or stat cards.\n \n @props\n - data (array, required): Array of numeric values\n - type (string, optional): Chart type - 'line' | 'bar' | 'area'\n - height (number, optional): Chart height in pixels\n - width (number|string, optional): Chart width\n - color (string, optional): Primary chart color\n - showEndpoint (boolean, optional): Show endpoint marker\n \n @example\n <SparklineChart\n :data=\"[10, 25, 15, 30, 20, 35]\"\n type=\"area\"\n :height=\"40\"\n color=\"#10b981\"\n />\n-->\n<template>\n <div :style=\"containerStyle\">\n <VChart\n v-if=\"data.length > 0\"\n :option=\"chartOption\"\n :autoresize=\"true\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport VChart from 'vue-echarts';\nimport { use } from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChart, BarChart } from 'echarts/charts';\nimport { GridComponent } from 'echarts/components';\nimport { chartColors, getAreaGradient } from './chartTheme';\nimport type { EChartsOption } from 'echarts';\n\nuse([CanvasRenderer, LineChart, BarChart, GridComponent]);\n\ninterface Props {\n data: number[];\n type?: 'line' | 'bar' | 'area';\n height?: number;\n width?: number | string;\n color?: string;\n showEndpoint?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n type: 'line',\n height: 40,\n width: '100%',\n color: chartColors.primary[0],\n showEndpoint: false,\n});\n\nconst containerStyle = computed(() => ({\n height: `${props.height}px`,\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\n}));\n\nconst chartOption = computed<EChartsOption>(() => {\n const isArea = props.type === 'area';\n const isBar = props.type === 'bar';\n\n return {\n grid: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: props.data.map((_, i) => i),\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 'dataMin',\n max: 'dataMax',\n },\n series: [{\n type: isBar ? 'bar' : 'line',\n data: props.data,\n smooth: !isBar,\n symbol: props.showEndpoint ? 'circle' : 'none',\n symbolSize: props.showEndpoint ? 6 : 0,\n showSymbol: props.showEndpoint,\n lineStyle: isBar ? undefined : {\n width: 2,\n color: props.color,\n },\n areaStyle: isArea ? {\n color: getAreaGradient(props.color),\n } : undefined,\n itemStyle: {\n color: props.color,\n },\n barWidth: '60%',\n }],\n };\n});\n</script>\n\n"],"names":["use","CanvasRenderer","LineChart","BarChart","GridComponent","props","__props","containerStyle","computed","chartOption","isArea","isBar","_","i","getAreaGradient","_createElementBlock","data","_createBlock","_unref","VChart"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,IAAAA,EAAI,CAACC,GAAgBC,GAAWC,GAAUC,CAAa,CAAC;AAWxD,UAAMC,IAAQC,GAQRC,IAAiBC,EAAS,OAAO;AAAA,MACrC,QAAQ,GAAGH,EAAM,MAAM;AAAA,MACvB,OAAO,OAAOA,EAAM,SAAU,WAAW,GAAGA,EAAM,KAAK,OAAOA,EAAM;AAAA,IAAA,EACpE,GAEII,IAAcD,EAAwB,MAAM;AAChD,YAAME,IAASL,EAAM,SAAS,QACxBM,IAAQN,EAAM,SAAS;AAE7B,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,KAAK;AAAA,UACL,QAAQ;AAAA,QAAA;AAAA,QAEV,OAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAMA,EAAM,KAAK,IAAI,CAACO,GAAGC,MAAMA,CAAC;AAAA,QAAA;AAAA,QAElC,OAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,QAEP,QAAQ,CAAC;AAAA,UACP,MAAMF,IAAQ,QAAQ;AAAA,UACtB,MAAMN,EAAM;AAAA,UACZ,QAAQ,CAACM;AAAA,UACT,QAAQN,EAAM,eAAe,WAAW;AAAA,UACxC,YAAYA,EAAM,eAAe,IAAI;AAAA,UACrC,YAAYA,EAAM;AAAA,UAClB,WAAWM,IAAQ,SAAY;AAAA,YAC7B,OAAO;AAAA,YACP,OAAON,EAAM;AAAA,UAAA;AAAA,UAEf,WAAWK,IAAS;AAAA,YAClB,OAAOI,EAAgBT,EAAM,KAAK;AAAA,UAAA,IAChC;AAAA,UACJ,WAAW;AAAA,YACT,OAAOA,EAAM;AAAA,UAAA;AAAA,UAEf,UAAU;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAEL,CAAC;2BArFCU,EAMM,OAAA;AAAA,MANA,SAAOR,EAAA,KAAc;AAAA,IAAA;MAEjBS,EAAAA,KAAK,SAAM,UADnBC,EAIEC,EAAAC,CAAA,GAAA;AAAA;QAFC,QAAQV,EAAA;AAAA,QACR,YAAY;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js","sources":["../src/components/charts/SparklineChart.vue"],"sourcesContent":["<!--\n @component SparklineChart\n @description Mini inline sparkline chart.\n \n A compact chart for displaying trends in small spaces,\n like table cells or stat cards.\n \n @props\n - data (array, required): Array of numeric values\n - type (string, optional): Chart type - 'line' | 'bar' | 'area'\n - height (number, optional): Chart height in pixels\n - width (number|string, optional): Chart width\n - color (string, optional): Primary chart color\n - showEndpoint (boolean, optional): Show endpoint marker\n \n @example\n <SparklineChart\n :data=\"[10, 25, 15, 30, 20, 35]\"\n type=\"area\"\n :height=\"40\"\n color=\"#10b981\"\n />\n-->\n<template>\n <div :style=\"containerStyle\">\n <VChart\n v-if=\"data.length > 0\"\n :option=\"chartOption\"\n :autoresize=\"true\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport VChart from 'vue-echarts';\nimport { use } from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChart, BarChart } from 'echarts/charts';\nimport { GridComponent } from 'echarts/components';\nimport { chartColors, getAreaGradient } from './chartTheme';\nimport type { EChartsOption } from 'echarts';\n\nuse([CanvasRenderer, LineChart, BarChart, GridComponent]);\n\ninterface Props {\n data: number[];\n type?: 'line' | 'bar' | 'area';\n height?: number;\n width?: number | string;\n color?: string;\n showEndpoint?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n type: 'line',\n height: 40,\n width: '100%',\n color: chartColors.primary[0],\n showEndpoint: false,\n});\n\nconst containerStyle = computed(() => ({\n height: `${props.height}px`,\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\n}));\n\nconst chartOption = computed<EChartsOption>(() => {\n const isArea = props.type === 'area';\n const isBar = props.type === 'bar';\n\n return {\n grid: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: props.data.map((_, i) => i),\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 'dataMin',\n max: 'dataMax',\n },\n series: [{\n type: isBar ? 'bar' : 'line',\n data: props.data,\n smooth: !isBar,\n symbol: props.showEndpoint ? 'circle' : 'none',\n symbolSize: props.showEndpoint ? 6 : 0,\n showSymbol: props.showEndpoint,\n lineStyle: isBar ? undefined : {\n width: 2,\n color: props.color,\n },\n areaStyle: isArea ? {\n color: getAreaGradient(props.color),\n } : undefined,\n itemStyle: {\n color: props.color,\n },\n barWidth: '60%',\n }],\n };\n});\n</script>\n\n"],"names":["use","CanvasRenderer","LineChart","BarChart","GridComponent","props","__props","containerStyle","computed","chartOption","isArea","isBar","_","i","getAreaGradient","_createElementBlock","_createBlock","_unref","VChart"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,IAAAA,EAAI,CAACC,GAAgBC,GAAWC,GAAUC,CAAa,CAAC;AAWxD,UAAMC,IAAQC,GAQRC,IAAiBC,EAAS,OAAO;AAAA,MACrC,QAAQ,GAAGH,EAAM,MAAM;AAAA,MACvB,OAAO,OAAOA,EAAM,SAAU,WAAW,GAAGA,EAAM,KAAK,OAAOA,EAAM;AAAA,IAAA,EACpE,GAEII,IAAcD,EAAwB,MAAM;AAChD,YAAME,IAASL,EAAM,SAAS,QACxBM,IAAQN,EAAM,SAAS;AAE7B,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,KAAK;AAAA,UACL,QAAQ;AAAA,QAAA;AAAA,QAEV,OAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAMA,EAAM,KAAK,IAAI,CAACO,GAAGC,MAAMA,CAAC;AAAA,QAAA;AAAA,QAElC,OAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,QAEP,QAAQ,CAAC;AAAA,UACP,MAAMF,IAAQ,QAAQ;AAAA,UACtB,MAAMN,EAAM;AAAA,UACZ,QAAQ,CAACM;AAAA,UACT,QAAQN,EAAM,eAAe,WAAW;AAAA,UACxC,YAAYA,EAAM,eAAe,IAAI;AAAA,UACrC,YAAYA,EAAM;AAAA,UAClB,WAAWM,IAAQ,SAAY;AAAA,YAC7B,OAAO;AAAA,YACP,OAAON,EAAM;AAAA,UAAA;AAAA,UAEf,WAAWK,IAAS;AAAA,YAClB,OAAOI,EAAgBT,EAAM,KAAK;AAAA,UAAA,IAChC;AAAA,UACJ,WAAW;AAAA,YACT,OAAOA,EAAM;AAAA,UAAA;AAAA,UAEf,UAAU;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAEL,CAAC;2BArFCU,EAMM,OAAA;AAAA,MANA,SAAOR,EAAA,KAAc;AAAA,IAAA;MAEjBD,EAAA,KAAK,SAAM,UADnBU,EAIEC,EAAAC,CAAA,GAAA;AAAA;QAFC,QAAQT,EAAA;AAAA,QACR,YAAY;AAAA,MAAA;;;;"}
@@ -1,67 +1,67 @@
1
- import { createElementBlock as l, openBlock as s, createElementVNode as t, defineComponent as f, computed as r, createCommentVNode as o, createBlock as h, resolveDynamicComponent as g, toDisplayString as i, normalizeClass as k, createVNode as x } from "vue";
2
- import { _ } from "./SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js";
3
- import { chartColors as u } from "./charts/chartTheme.js";
4
- function w(n, a) {
5
- return s(), l("svg", {
1
+ import { createElementBlock as l, openBlock as t, createElementVNode as s, defineComponent as x, computed as n, createCommentVNode as r, createBlock as u, resolveDynamicComponent as h, toDisplayString as c, normalizeClass as f, createVNode as k } from "vue";
2
+ import { _ as w } from "./SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js";
3
+ import { chartColors as d } from "./charts/chartTheme.js";
4
+ function y(e, a) {
5
+ return t(), l("svg", {
6
6
  xmlns: "http://www.w3.org/2000/svg",
7
7
  viewBox: "0 0 20 20",
8
8
  fill: "currentColor",
9
9
  "aria-hidden": "true",
10
10
  "data-slot": "icon"
11
11
  }, [
12
- t("path", {
12
+ s("path", {
13
13
  "fill-rule": "evenodd",
14
14
  d: "M10 3a.75.75 0 0 1 .75.75v10.638l3.96-4.158a.75.75 0 1 1 1.08 1.04l-5.25 5.5a.75.75 0 0 1-1.08 0l-5.25-5.5a.75.75 0 1 1 1.08-1.04l3.96 4.158V3.75A.75.75 0 0 1 10 3Z",
15
15
  "clip-rule": "evenodd"
16
16
  })
17
17
  ]);
18
18
  }
19
- function y(n, a) {
20
- return s(), l("svg", {
19
+ function p(e, a) {
20
+ return t(), l("svg", {
21
21
  xmlns: "http://www.w3.org/2000/svg",
22
22
  viewBox: "0 0 20 20",
23
23
  fill: "currentColor",
24
24
  "aria-hidden": "true",
25
25
  "data-slot": "icon"
26
26
  }, [
27
- t("path", {
27
+ s("path", {
28
28
  "fill-rule": "evenodd",
29
29
  d: "M10 17a.75.75 0 0 1-.75-.75V5.612L5.29 9.77a.75.75 0 0 1-1.08-1.04l5.25-5.5a.75.75 0 0 1 1.08 0l5.25 5.5a.75.75 0 1 1-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0 1 10 17Z",
30
30
  "clip-rule": "evenodd"
31
31
  })
32
32
  ]);
33
33
  }
34
- function b(n, a) {
35
- return s(), l("svg", {
34
+ function b(e, a) {
35
+ return t(), l("svg", {
36
36
  xmlns: "http://www.w3.org/2000/svg",
37
37
  viewBox: "0 0 20 20",
38
38
  fill: "currentColor",
39
39
  "aria-hidden": "true",
40
40
  "data-slot": "icon"
41
41
  }, [
42
- t("path", {
42
+ s("path", {
43
43
  "fill-rule": "evenodd",
44
44
  d: "M4 10a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H4.75A.75.75 0 0 1 4 10Z",
45
45
  "clip-rule": "evenodd"
46
46
  })
47
47
  ]);
48
48
  }
49
- const C = { class: "sl-bg-white dark:sl-bg-slate-800 sl-rounded-xl sl-shadow-sm sl-ring-1 sl-ring-gray-900/5 dark:sl-ring-slate-700 sl-p-6" }, B = { class: "sl-flex sl-items-center sl-justify-between" }, D = { class: "sl-flex sl-items-center sl-gap-3" }, V = {
49
+ const _ = { class: "sl-bg-white dark:sl-bg-slate-800 sl-rounded-xl sl-shadow-sm sl-ring-1 sl-ring-gray-900/5 dark:sl-ring-slate-700 sl-p-6" }, C = { class: "sl-flex sl-items-center sl-justify-between" }, B = { class: "sl-flex sl-items-center sl-gap-3" }, D = {
50
50
  key: 0,
51
51
  class: "sl-flex sl-items-center sl-justify-center sl-w-10 sl-h-10 sl-rounded-lg sl-bg-stachelock-50 dark:sl-bg-stachelock-900/30"
52
- }, L = { class: "sl-text-sm sl-font-medium sl-text-gray-500 dark:sl-text-slate-400" }, M = { class: "sl-mt-4" }, N = {
52
+ }, V = { class: "sl-text-sm sl-font-medium sl-text-gray-500 dark:sl-text-slate-400" }, L = { class: "sl-mt-4" }, M = {
53
53
  key: 0,
54
54
  class: "sl-text-3xl sl-font-semibold sl-text-gray-900 dark:sl-text-white sl-tabular-nums"
55
- }, A = {
55
+ }, N = {
56
56
  key: 1,
57
57
  class: "sl-h-9 sl-w-24 sl-bg-gray-200 dark:sl-bg-slate-700 sl-rounded sl-animate-pulse"
58
- }, Z = {
58
+ }, A = {
59
59
  key: 0,
60
60
  class: "sl-mt-4"
61
- }, $ = {
61
+ }, Z = {
62
62
  key: 1,
63
63
  class: "sl-mt-2 sl-text-xs sl-text-gray-500 dark:sl-text-slate-400"
64
- }, H = /* @__PURE__ */ f({
64
+ }, H = /* @__PURE__ */ x({
65
65
  __name: "StatCard",
66
66
  props: {
67
67
  title: {},
@@ -72,40 +72,40 @@ const C = { class: "sl-bg-white dark:sl-bg-slate-800 sl-rounded-xl sl-shadow-sm
72
72
  icon: {},
73
73
  loading: { type: Boolean, default: !1 }
74
74
  },
75
- setup(n) {
76
- const a = n, c = r(() => a.change !== void 0 && a.change > 0), d = r(() => a.change !== void 0 && a.change < 0), v = r(() => c.value ? "sl-text-green-600 dark:sl-text-green-400" : d.value ? "sl-text-red-600 dark:sl-text-red-400" : "sl-text-gray-500 dark:sl-text-slate-400"), m = r(() => c.value ? y : d.value ? w : b), p = r(() => c.value ? u.success : d.value ? u.danger : u.primary[0]);
77
- return (e, j) => (s(), l("div", C, [
78
- t("div", B, [
79
- t("div", D, [
80
- e.icon ? (s(), l("div", V, [
81
- (s(), h(g(e.icon), { class: "sl-h-5 sl-w-5 sl-text-stachelock-600 dark:sl-text-stachelock-400" }))
82
- ])) : o("", !0),
83
- t("p", L, i(e.title), 1)
75
+ setup(e) {
76
+ const a = e, o = n(() => a.change !== void 0 && a.change > 0), i = n(() => a.change !== void 0 && a.change < 0), g = n(() => o.value ? "sl-text-green-600 dark:sl-text-green-400" : i.value ? "sl-text-red-600 dark:sl-text-red-400" : "sl-text-gray-500 dark:sl-text-slate-400"), v = n(() => o.value ? p : i.value ? y : b), m = n(() => o.value ? d.success : i.value ? d.danger : d.primary[0]);
77
+ return ($, j) => (t(), l("div", _, [
78
+ s("div", C, [
79
+ s("div", B, [
80
+ e.icon ? (t(), l("div", D, [
81
+ (t(), u(h(e.icon), { class: "sl-h-5 sl-w-5 sl-text-stachelock-600 dark:sl-text-stachelock-400" }))
82
+ ])) : r("", !0),
83
+ s("p", V, c(e.title), 1)
84
84
  ]),
85
- e.change !== void 0 ? (s(), l("div", {
85
+ e.change !== void 0 ? (t(), l("div", {
86
86
  key: 0,
87
- class: k(["sl-flex sl-items-center sl-gap-1 sl-text-sm sl-font-medium", v.value])
87
+ class: f(["sl-flex sl-items-center sl-gap-1 sl-text-sm sl-font-medium", g.value])
88
88
  }, [
89
- (s(), h(g(m.value), { class: "sl-h-4 sl-w-4" })),
90
- t("span", null, i(Math.abs(e.change)) + "%", 1)
91
- ], 2)) : o("", !0)
89
+ (t(), u(h(v.value), { class: "sl-h-4 sl-w-4" })),
90
+ s("span", null, c(Math.abs(e.change)) + "%", 1)
91
+ ], 2)) : r("", !0)
92
92
  ]),
93
- t("div", M, [
94
- e.loading ? (s(), l("div", A)) : (s(), l("p", N, i(e.value), 1))
93
+ s("div", L, [
94
+ e.loading ? (t(), l("div", N)) : (t(), l("p", M, c(e.value), 1))
95
95
  ]),
96
- e.sparklineData && e.sparklineData.length > 0 ? (s(), l("div", Z, [
97
- x(_, {
96
+ e.sparklineData && e.sparklineData.length > 0 ? (t(), l("div", A, [
97
+ k(w, {
98
98
  data: e.sparklineData,
99
99
  type: "area",
100
100
  height: 40,
101
- color: p.value
101
+ color: m.value
102
102
  }, null, 8, ["data", "color"])
103
- ])) : o("", !0),
104
- e.changeLabel ? (s(), l("p", $, i(e.changeLabel), 1)) : o("", !0)
103
+ ])) : r("", !0),
104
+ e.changeLabel ? (t(), l("p", Z, c(e.changeLabel), 1)) : r("", !0)
105
105
  ]));
106
106
  }
107
107
  });
108
108
  export {
109
109
  H as _
110
110
  };
111
- //# sourceMappingURL=StatCard.vue_vue_type_script_setup_true_lang-DTOT0-WB.js.map
111
+ //# sourceMappingURL=StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js.map