@stachelock/ui 0.3.0 → 0.4.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 (670) 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-P5ypRyGV.js} +111 -111
  10. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-P5ypRyGV.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-1YGa9Fnd.js +1351 -0
  14. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-1YGa9Fnd.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-B_XAq5Sr.js → EmptyState.vue_vue_type_script_setup_true_lang-Dxy-cLPT.js} +29 -29
  33. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-B_XAq5Sr.js.map → EmptyState.vue_vue_type_script_setup_true_lang-Dxy-cLPT.js.map} +1 -1
  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/NotificationToast.vue_vue_type_script_setup_true_lang-DZxcEZkP.js +277 -0
  53. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-DZxcEZkP.js.map +1 -0
  54. package/dist/{PieChart.vue_vue_type_script_setup_true_lang-DJRcsty7.js → PieChart.vue_vue_type_script_setup_true_lang-e3wsA9O4.js} +12 -12
  55. 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
  56. package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-DkABeWJt.js +130 -0
  57. 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
  58. 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
  59. 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
  60. 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
  61. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js.map +1 -0
  62. 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
  63. 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
  64. package/dist/{SidebarLayout.vue_vue_type_script_setup_true_lang-BD2PF5xp.js → SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js} +9 -10
  65. 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
  66. package/dist/{SparklineChart.vue_vue_type_script_setup_true_lang-DDTcpEjy.js → SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js} +17 -17
  67. 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
  68. 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
  69. 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
  70. package/dist/{StepperPanels.vue_vue_type_script_setup_true_lang-BtHrfqFI.js → StepperPanels.vue_vue_type_script_setup_true_lang-D6Fv7iz3.js} +38 -38
  71. 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
  72. package/dist/{SwitchInput.vue_vue_type_script_setup_true_lang-D6M1qwP1.js → SwitchInput.vue_vue_type_script_setup_true_lang-C88FcxuK.js} +110 -108
  73. 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
  74. package/dist/{SwitchInputGroup.vue_vue_type_script_setup_true_lang-BNKKEAMq.js → SwitchInputGroup.vue_vue_type_script_setup_true_lang-CK9JWl4F.js} +2 -2
  75. 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
  76. package/dist/{TabGroup.vue_vue_type_script_setup_true_lang-DrhDwLL3.js → TabGroup.vue_vue_type_script_setup_true_lang-DVVeOgWH.js} +3 -3
  77. 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
  78. package/dist/{TabGroupUnderline.vue_vue_type_script_setup_true_lang-Di33js6c.js → TabGroupUnderline.vue_vue_type_script_setup_true_lang-_3XtOn3w.js} +32 -32
  79. 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
  80. package/dist/{TabsInPills.vue_vue_type_script_setup_true_lang-CMxaK0Kw.js → TabsInPills.vue_vue_type_script_setup_true_lang-DY1NkXCQ.js} +21 -21
  81. 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
  82. 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
  83. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-Da6-pRJ2.js.map +1 -0
  84. 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
  85. 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
  86. package/dist/{UiAvatar.vue_vue_type_script_setup_true_lang-Ci7VLRZx.js → UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js} +36 -36
  87. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js.map +1 -0
  88. package/dist/{UiBadge.vue_vue_type_script_setup_true_lang-CV8WVEXL.js → UiBadge.vue_vue_type_script_setup_true_lang-DOtbLb9x.js} +19 -19
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. package/dist/{UiMenu.vue_vue_type_script_setup_true_lang-aJddpshR.js → UiMenu.vue_vue_type_script_setup_true_lang-bQdfCzk6.js} +74 -74
  97. 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
  98. package/dist/{UiModal.vue_vue_type_script_setup_true_lang-CFgLuifQ.js → UiModal.vue_vue_type_script_setup_true_lang-CpwFUDVU.js} +9 -10
  99. 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
  100. package/dist/{UiNavLink.vue_vue_type_script_setup_true_lang-C23h6Do0.js → UiNavLink.vue_vue_type_script_setup_true_lang-DnWMn40M.js} +2 -2
  101. 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
  102. package/dist/{UiProgressBar.vue_vue_type_script_setup_true_lang-BioTMORv.js → UiProgressBar.vue_vue_type_script_setup_true_lang-BCh4orZW.js} +24 -24
  103. 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
  104. package/dist/{UiTable.vue_vue_type_script_setup_true_lang-BuOCaPzi.js → UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js} +80 -83
  105. package/dist/UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js.map +1 -0
  106. 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
  107. 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
  108. package/dist/{YearCalendar.vue_vue_type_script_setup_true_lang-C01PTLg8.js → YearCalendar.vue_vue_type_script_setup_true_lang-CfKSpLLN.js} +15 -15
  109. 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
  110. package/dist/{calendar-DyIP7WGv.js → calendar-BlSSD4nO.js} +2 -2
  111. package/dist/calendar-BlSSD4nO.js.map +1 -0
  112. package/dist/calendars/CalendarDashboard.d.ts +1 -3
  113. package/dist/calendars/CalendarDashboard.js +32 -33
  114. package/dist/calendars/CalendarDashboard.js.map +1 -1
  115. package/dist/calendars/CalendarHeader.d.ts +1 -3
  116. package/dist/calendars/CalendarHeader.js +1 -1
  117. package/dist/calendars/DayCalendar.d.ts +1 -3
  118. package/dist/calendars/DayCalendar.js +1 -1
  119. package/dist/calendars/EventCard.d.ts +1 -3
  120. package/dist/calendars/EventsList.d.ts +1 -3
  121. package/dist/calendars/EventsList.js +1 -1
  122. package/dist/calendars/MonthCalendar.d.ts +1 -3
  123. package/dist/calendars/MonthCalendar.js +1 -1
  124. package/dist/calendars/WeekCalendar.d.ts +1 -3
  125. package/dist/calendars/WeekCalendar.js +118 -118
  126. package/dist/calendars/WeekCalendar.js.map +1 -1
  127. package/dist/calendars/YearCalendar.d.ts +1 -3
  128. package/dist/calendars/YearCalendar.js +1 -1
  129. package/dist/charts/BarChart.d.ts +1 -3
  130. package/dist/charts/BarChart.js +1 -1
  131. package/dist/charts/BaseChart.d.ts +1 -3
  132. package/dist/charts/BaseChart.js +54 -54
  133. package/dist/charts/BaseChart.js.map +1 -1
  134. package/dist/charts/FunnelChart.d.ts +1 -3
  135. package/dist/charts/FunnelChart.js +1 -1
  136. package/dist/charts/LineChart.d.ts +1 -3
  137. package/dist/charts/LineChart.js +1 -1
  138. package/dist/charts/PieChart.d.ts +1 -3
  139. package/dist/charts/PieChart.js +1 -1
  140. package/dist/charts/SparklineChart.d.ts +1 -3
  141. package/dist/charts/SparklineChart.js +1 -1
  142. package/dist/charts/StatCard.d.ts +1 -3
  143. package/dist/charts/StatCard.js +1 -1
  144. package/dist/charts/chartTheme.d.ts +3 -0
  145. package/dist/charts/index.d.ts +1 -0
  146. package/dist/charts/index.js +6 -6
  147. package/dist/components/Avatar.d.ts +1 -3
  148. package/dist/components/Avatar.js +1 -1
  149. package/dist/components/Badge.d.ts +1 -3
  150. package/dist/components/Badge.js +1 -1
  151. package/dist/components/Banner.d.ts +1 -3
  152. package/dist/components/Banner.js +69 -69
  153. package/dist/components/Banner.js.map +1 -1
  154. package/dist/components/Breadcrumb.d.ts +1 -3
  155. package/dist/components/Breadcrumb.js +5 -5
  156. package/dist/components/Breadcrumb.js.map +1 -1
  157. package/dist/components/Button.d.ts +1 -3
  158. package/dist/components/Button.js +29 -29
  159. package/dist/components/Button.js.map +1 -1
  160. package/dist/components/ButtonGroup.d.ts +1 -3
  161. package/dist/components/ButtonGroup.js +1 -1
  162. package/dist/components/Checkbox.d.ts +1 -3
  163. package/dist/components/Checkbox.js +1 -1
  164. package/dist/components/CloudinaryImage.d.ts +1 -3
  165. package/dist/components/Loading.d.ts +1 -3
  166. package/dist/components/Loading.js +1 -1
  167. package/dist/components/LoadingDots.d.ts +1 -3
  168. package/dist/components/LottieAnimation.d.ts +1 -3
  169. package/dist/components/LottieAnimation.js +1 -1
  170. package/dist/components/Menu.d.ts +1 -3
  171. package/dist/components/Menu.js +1 -1
  172. package/dist/components/Modal.d.ts +1 -3
  173. package/dist/components/Modal.js +1 -1
  174. package/dist/components/NavLink.d.ts +1 -3
  175. package/dist/components/NavLink.js +1 -1
  176. package/dist/components/ProgressBar.d.ts +1 -3
  177. package/dist/components/ProgressBar.js +1 -1
  178. package/dist/components/RadialProgressBar.d.ts +1 -3
  179. package/dist/components/RadialProgressBar.js +1 -1
  180. package/dist/components/Table.d.ts +1 -3
  181. package/dist/components/Table.js +1 -1
  182. package/dist/components/Transition.d.ts +1 -3
  183. package/dist/components/Transition.js +1 -1
  184. package/dist/composables/index.d.ts +1 -0
  185. package/dist/composables/useCalendar.d.ts +3 -0
  186. package/dist/composables/useCalendar.js +1 -1
  187. package/dist/composables/useFormValidation.d.ts +3 -0
  188. package/dist/composables/useMap.d.ts +3 -0
  189. package/dist/composables/useModal.d.ts +3 -0
  190. package/dist/composables/useNotifications.d.ts +3 -0
  191. package/dist/composables/useNotifications.js +221 -58
  192. package/dist/composables/useNotifications.js.map +1 -1
  193. package/dist/composables/useTabs.d.ts +1 -0
  194. package/dist/composables/useTheme.d.ts +3 -0
  195. package/dist/{dialog-B2WA4G25.js → dialog-BJ2Ld8l3.js} +2 -2
  196. package/dist/{dialog-B2WA4G25.js.map → dialog-BJ2Ld8l3.js.map} +1 -1
  197. package/dist/empty-state/ComingSoon.d.ts +1 -3
  198. package/dist/empty-state/ComingSoon.js +1 -1
  199. package/dist/empty-state/EmptyState.d.ts +1 -3
  200. package/dist/empty-state/EmptyState.js +1 -1
  201. package/dist/empty-state/index.d.ts +1 -0
  202. package/dist/empty-state/index.js +2 -2
  203. package/dist/forms/DynamicForm.d.ts +1 -3
  204. package/dist/forms/DynamicForm.js +1 -1
  205. package/dist/forms/DynamicFormField.d.ts +1 -3
  206. package/dist/forms/DynamicFormField.js +1 -1
  207. package/dist/forms/FormFieldWrapper.d.ts +1 -3
  208. package/dist/forms/FormFieldWrapper.js +56 -56
  209. package/dist/forms/FormFieldWrapper.js.map +1 -1
  210. package/dist/index.d.ts +3 -0
  211. package/dist/index.js +505 -511
  212. package/dist/index.js.map +1 -1
  213. package/dist/inputs/AddDeleteButtonGroup.d.ts +1 -3
  214. package/dist/inputs/CheckboxInput.d.ts +1 -3
  215. package/dist/inputs/CheckboxInput.js +1 -1
  216. package/dist/inputs/ComboboxInput.d.ts +1 -3
  217. package/dist/inputs/ComboboxInput.js +1 -1
  218. package/dist/inputs/DatepickerInput.d.ts +1 -3
  219. package/dist/inputs/EmailInput.d.ts +1 -3
  220. package/dist/inputs/EmailInput.js +1 -1
  221. package/dist/inputs/EmptyInput.d.ts +1 -3
  222. package/dist/inputs/EmptyInput.js +1 -1
  223. package/dist/inputs/FileDropzoneInput.d.ts +1 -3
  224. package/dist/inputs/HiddenInput.d.ts +1 -3
  225. package/dist/inputs/HiddenInput.js +1 -1
  226. package/dist/inputs/PhoneInput.d.ts +1 -3
  227. package/dist/inputs/PhoneInput.js +33 -23
  228. package/dist/inputs/PhoneInput.js.map +1 -1
  229. package/dist/inputs/RichTextInput.d.ts +1 -3
  230. package/dist/inputs/RichTextInput.js +693 -693
  231. package/dist/inputs/RichTextInput.js.map +1 -1
  232. package/dist/inputs/SelectInput.d.ts +1 -3
  233. package/dist/inputs/SelectInput.js +1 -1
  234. package/dist/inputs/SelectTextInput.d.ts +1 -3
  235. package/dist/inputs/SelectTextInput.js +1 -1
  236. package/dist/inputs/SwitchInput.d.ts +1 -3
  237. package/dist/inputs/SwitchInput.js +1 -1
  238. package/dist/inputs/SwitchInputGroup.d.ts +1 -3
  239. package/dist/inputs/SwitchInputGroup.js +1 -1
  240. package/dist/inputs/TagifyInput.d.ts +1 -3
  241. package/dist/inputs/TagifyInput.js +1 -1
  242. package/dist/inputs/TextAreaInput.d.ts +1 -3
  243. package/dist/inputs/TextAreaInput.js +1 -1
  244. package/dist/inputs/TextInput.d.ts +1 -3
  245. package/dist/inputs/TextInput.js +43 -43
  246. package/dist/inputs/TextInput.js.map +1 -1
  247. package/dist/layouts/DashboardLayout.d.ts +1 -3
  248. package/dist/layouts/DashboardLayout.js +1 -1
  249. package/dist/layouts/DefaultLayout.d.ts +1 -3
  250. package/dist/layouts/HeaderLayout.d.ts +1 -3
  251. package/dist/layouts/NavigationGroup.d.ts +1 -3
  252. package/dist/layouts/NavigationGroup.js +1 -1
  253. package/dist/layouts/NavigationItem.d.ts +1 -3
  254. package/dist/layouts/NavigationItem.js +1 -1
  255. package/dist/layouts/ProfileHeaderAvatar.d.ts +1 -3
  256. package/dist/layouts/ProfileHeaderAvatar.js +1 -1
  257. package/dist/layouts/ProjectLogo.d.ts +1 -3
  258. package/dist/layouts/ProjectLogo.js +1 -1
  259. package/dist/layouts/SidebarLayout.d.ts +1 -3
  260. package/dist/layouts/SidebarLayout.js +1 -1
  261. package/dist/{listbox-p2_4hUSD.js → listbox-YaWWZiiG.js} +2 -2
  262. package/dist/{listbox-p2_4hUSD.js.map → listbox-YaWWZiiG.js.map} +1 -1
  263. package/dist/loading/ContentSkeleton.d.ts +1 -3
  264. package/dist/loading/ContentSkeleton.js +32 -32
  265. package/dist/loading/ContentSkeleton.js.map +1 -1
  266. package/dist/loading/SmartLoadingIndicator.d.ts +1 -3
  267. package/dist/loading/SmartLoadingIndicator.js +92 -92
  268. package/dist/loading/SmartLoadingIndicator.js.map +1 -1
  269. package/dist/loading/index.d.ts +1 -0
  270. package/dist/maps/GoogleMap.d.ts +1 -3
  271. package/dist/maps/GoogleMap.js +2 -2
  272. package/dist/maps/GoogleMap.js.map +1 -1
  273. package/dist/maps/UiInfoWindow.d.ts +1 -3
  274. package/dist/maps/UiMap.d.ts +1 -3
  275. package/dist/maps/UiMap.js +18 -15
  276. package/dist/maps/UiMap.js.map +1 -1
  277. package/dist/maps/UiMapAll.d.ts +1 -3
  278. package/dist/maps/UiMapMarker.d.ts +1 -3
  279. package/dist/maps/index.d.ts +1 -0
  280. package/dist/modals/AlertModal.d.ts +1 -3
  281. package/dist/modals/AlertModal.js +1 -1
  282. package/dist/modals/BaseModal.d.ts +1 -3
  283. package/dist/modals/BaseModal.js +1 -1
  284. package/dist/modals/ImageCropperModal.d.ts +1 -3
  285. package/dist/modals/ImageCropperModal.js +182 -185
  286. package/dist/modals/ImageCropperModal.js.map +1 -1
  287. package/dist/notifications/NotificationContainer.d.ts +1 -3
  288. package/dist/notifications/NotificationContainer.js +30 -16
  289. package/dist/notifications/NotificationContainer.js.map +1 -1
  290. package/dist/notifications/NotificationToast.d.ts +1 -3
  291. package/dist/notifications/NotificationToast.js +1 -1
  292. package/dist/notifications/index.d.ts +1 -0
  293. package/dist/notifications/index.js +1 -1
  294. package/dist/src/components/CloudinaryImage.d.ts +7 -8
  295. package/dist/src/components/CloudinaryImage.d.ts.map +1 -1
  296. package/dist/src/components/LottieAnimation.d.ts +6 -37
  297. package/dist/src/components/LottieAnimation.d.ts.map +1 -1
  298. package/dist/src/components/ThemeDebugModal.d.ts +6 -16
  299. package/dist/src/components/ThemeDebugModal.d.ts.map +1 -1
  300. package/dist/src/components/UiAvatar.d.ts +26 -36
  301. package/dist/src/components/UiAvatar.d.ts.map +1 -1
  302. package/dist/src/components/UiBadge.d.ts +6 -33
  303. package/dist/src/components/UiBadge.d.ts.map +1 -1
  304. package/dist/src/components/UiBanner.d.ts +34 -107
  305. package/dist/src/components/UiBanner.d.ts.map +1 -1
  306. package/dist/src/components/UiBreadcrumb.d.ts +10 -11
  307. package/dist/src/components/UiBreadcrumb.d.ts.map +1 -1
  308. package/dist/src/components/UiButton.d.ts +13 -66
  309. package/dist/src/components/UiButton.d.ts.map +1 -1
  310. package/dist/src/components/UiButtonGroup.d.ts +7 -37
  311. package/dist/src/components/UiButtonGroup.d.ts.map +1 -1
  312. package/dist/src/components/UiCheckbox.d.ts +8 -33
  313. package/dist/src/components/UiCheckbox.d.ts.map +1 -1
  314. package/dist/src/components/UiLoading.d.ts +2 -28
  315. package/dist/src/components/UiLoading.d.ts.map +1 -1
  316. package/dist/src/components/UiLoadingDots.d.ts +1 -1
  317. package/dist/src/components/UiLoadingDots.d.ts.map +1 -1
  318. package/dist/src/components/UiMenu.d.ts +4 -32
  319. package/dist/src/components/UiMenu.d.ts.map +1 -1
  320. package/dist/src/components/UiModal.d.ts +3 -2
  321. package/dist/src/components/UiModal.d.ts.map +1 -1
  322. package/dist/src/components/UiNavLink.d.ts +6 -40
  323. package/dist/src/components/UiNavLink.d.ts.map +1 -1
  324. package/dist/src/components/UiProgressBar.d.ts +3 -32
  325. package/dist/src/components/UiProgressBar.d.ts.map +1 -1
  326. package/dist/src/components/UiRadialProgressBar.d.ts +3 -34
  327. package/dist/src/components/UiRadialProgressBar.d.ts.map +1 -1
  328. package/dist/src/components/UiTable.d.ts +25 -67
  329. package/dist/src/components/UiTable.d.ts.map +1 -1
  330. package/dist/src/components/UiTransition.d.ts +3 -26
  331. package/dist/src/components/UiTransition.d.ts.map +1 -1
  332. package/dist/src/components/calendars/CalendarDashboard.d.ts +5 -17
  333. package/dist/src/components/calendars/CalendarDashboard.d.ts.map +1 -1
  334. package/dist/src/components/calendars/CalendarHeader.d.ts +8 -7
  335. package/dist/src/components/calendars/CalendarHeader.d.ts.map +1 -1
  336. package/dist/src/components/calendars/DayCalendar.d.ts +11 -17
  337. package/dist/src/components/calendars/DayCalendar.d.ts.map +1 -1
  338. package/dist/src/components/calendars/EventCard.d.ts +1 -2
  339. package/dist/src/components/calendars/EventCard.d.ts.map +1 -1
  340. package/dist/src/components/calendars/EventsList.d.ts +6 -18
  341. package/dist/src/components/calendars/EventsList.d.ts.map +1 -1
  342. package/dist/src/components/calendars/MonthCalendar.d.ts +6 -30
  343. package/dist/src/components/calendars/MonthCalendar.d.ts.map +1 -1
  344. package/dist/src/components/calendars/WeekCalendar.d.ts +10 -16
  345. package/dist/src/components/calendars/WeekCalendar.d.ts.map +1 -1
  346. package/dist/src/components/calendars/YearCalendar.d.ts +5 -29
  347. package/dist/src/components/calendars/YearCalendar.d.ts.map +1 -1
  348. package/dist/src/components/charts/BarChart.d.ts +6 -39
  349. package/dist/src/components/charts/BarChart.d.ts.map +1 -1
  350. package/dist/src/components/charts/FunnelChart.d.ts +5 -34
  351. package/dist/src/components/charts/FunnelChart.d.ts.map +1 -1
  352. package/dist/src/components/charts/LineChart.d.ts +6 -37
  353. package/dist/src/components/charts/LineChart.d.ts.map +1 -1
  354. package/dist/src/components/charts/PieChart.d.ts +6 -37
  355. package/dist/src/components/charts/PieChart.d.ts.map +1 -1
  356. package/dist/src/components/charts/SparklineChart.d.ts +3 -32
  357. package/dist/src/components/charts/SparklineChart.d.ts.map +1 -1
  358. package/dist/src/components/charts/StatCard.d.ts +2 -24
  359. package/dist/src/components/charts/StatCard.d.ts.map +1 -1
  360. package/dist/src/components/charts/chartTheme.d.ts +0 -1
  361. package/dist/src/components/empty-state/ComingSoon.d.ts +2 -29
  362. package/dist/src/components/empty-state/ComingSoon.d.ts.map +1 -1
  363. package/dist/src/components/empty-state/EmptyState.d.ts +4 -26
  364. package/dist/src/components/empty-state/EmptyState.d.ts.map +1 -1
  365. package/dist/src/components/forms/DynamicForm.d.ts +21 -47
  366. package/dist/src/components/forms/DynamicForm.d.ts.map +1 -1
  367. package/dist/src/components/forms/DynamicFormField.d.ts +8 -18
  368. package/dist/src/components/forms/DynamicFormField.d.ts.map +1 -1
  369. package/dist/src/components/forms/FormFieldWrapper.d.ts +14 -58
  370. package/dist/src/components/forms/FormFieldWrapper.d.ts.map +1 -1
  371. package/dist/src/components/inputs/AddDeleteButtonGroup.d.ts +3 -4
  372. package/dist/src/components/inputs/AddDeleteButtonGroup.d.ts.map +1 -1
  373. package/dist/src/components/inputs/CheckboxInput.d.ts +10 -37
  374. package/dist/src/components/inputs/CheckboxInput.d.ts.map +1 -1
  375. package/dist/src/components/inputs/ComboboxInput.d.ts +13 -48
  376. package/dist/src/components/inputs/ComboboxInput.d.ts.map +1 -1
  377. package/dist/src/components/inputs/DatepickerInput.d.ts +1045 -42
  378. package/dist/src/components/inputs/DatepickerInput.d.ts.map +1 -1
  379. package/dist/src/components/inputs/EmailInput.d.ts +10 -54
  380. package/dist/src/components/inputs/EmailInput.d.ts.map +1 -1
  381. package/dist/src/components/inputs/EmptyInput.d.ts +2 -26
  382. package/dist/src/components/inputs/EmptyInput.d.ts.map +1 -1
  383. package/dist/src/components/inputs/FileDropzoneInput.d.ts +8 -7
  384. package/dist/src/components/inputs/FileDropzoneInput.d.ts.map +1 -1
  385. package/dist/src/components/inputs/HiddenInput.d.ts +2 -23
  386. package/dist/src/components/inputs/HiddenInput.d.ts.map +1 -1
  387. package/dist/src/components/inputs/InputsShowcase.d.ts +1 -1
  388. package/dist/src/components/inputs/InputsShowcase.d.ts.map +1 -1
  389. package/dist/src/components/inputs/PhoneInput.d.ts +79 -16
  390. package/dist/src/components/inputs/PhoneInput.d.ts.map +1 -1
  391. package/dist/src/components/inputs/RichTextInput.d.ts +22 -80
  392. package/dist/src/components/inputs/RichTextInput.d.ts.map +1 -1
  393. package/dist/src/components/inputs/SelectInput.d.ts +49 -42
  394. package/dist/src/components/inputs/SelectInput.d.ts.map +1 -1
  395. package/dist/src/components/inputs/SelectTextInput.d.ts +52 -12
  396. package/dist/src/components/inputs/SelectTextInput.d.ts.map +1 -1
  397. package/dist/src/components/inputs/SwitchInput.d.ts +115 -42
  398. package/dist/src/components/inputs/SwitchInput.d.ts.map +1 -1
  399. package/dist/src/components/inputs/SwitchInputGroup.d.ts +2 -3
  400. package/dist/src/components/inputs/SwitchInputGroup.d.ts.map +1 -1
  401. package/dist/src/components/inputs/TagifyInput.d.ts +30 -20
  402. package/dist/src/components/inputs/TagifyInput.d.ts.map +1 -1
  403. package/dist/src/components/inputs/TextAreaInput.d.ts +9 -35
  404. package/dist/src/components/inputs/TextAreaInput.d.ts.map +1 -1
  405. package/dist/src/components/inputs/TextInput.d.ts +13 -73
  406. package/dist/src/components/inputs/TextInput.d.ts.map +1 -1
  407. package/dist/src/components/layouts/CardLayout.d.ts +20 -66
  408. package/dist/src/components/layouts/CardLayout.d.ts.map +1 -1
  409. package/dist/src/components/layouts/DashboardLayout.d.ts +8 -5
  410. package/dist/src/components/layouts/DashboardLayout.d.ts.map +1 -1
  411. package/dist/src/components/layouts/DefaultLayout.d.ts +1 -1
  412. package/dist/src/components/layouts/DefaultLayout.d.ts.map +1 -1
  413. package/dist/src/components/layouts/HeaderLayout.d.ts +4 -4
  414. package/dist/src/components/layouts/HeaderLayout.d.ts.map +1 -1
  415. package/dist/src/components/layouts/InfoCard.d.ts +2 -25
  416. package/dist/src/components/layouts/InfoCard.d.ts.map +1 -1
  417. package/dist/src/components/layouts/NavigationGroup.d.ts +5 -16
  418. package/dist/src/components/layouts/NavigationGroup.d.ts.map +1 -1
  419. package/dist/src/components/layouts/NavigationItem.d.ts +7 -24
  420. package/dist/src/components/layouts/NavigationItem.d.ts.map +1 -1
  421. package/dist/src/components/layouts/ProfileHeaderAvatar.d.ts +10 -40
  422. package/dist/src/components/layouts/ProfileHeaderAvatar.d.ts.map +1 -1
  423. package/dist/src/components/layouts/ProjectLogo.d.ts +2 -33
  424. package/dist/src/components/layouts/ProjectLogo.d.ts.map +1 -1
  425. package/dist/src/components/layouts/PropsTable.d.ts +2 -23
  426. package/dist/src/components/layouts/PropsTable.d.ts.map +1 -1
  427. package/dist/src/components/layouts/ShowcaseCard.d.ts +2 -29
  428. package/dist/src/components/layouts/ShowcaseCard.d.ts.map +1 -1
  429. package/dist/src/components/layouts/ShowcaseLayout.d.ts +5 -28
  430. package/dist/src/components/layouts/ShowcaseLayout.d.ts.map +1 -1
  431. package/dist/src/components/layouts/SidebarLayout.d.ts +7 -4
  432. package/dist/src/components/layouts/SidebarLayout.d.ts.map +1 -1
  433. package/dist/src/components/layouts/StateDisplay.d.ts +2 -23
  434. package/dist/src/components/layouts/StateDisplay.d.ts.map +1 -1
  435. package/dist/src/components/loading/ContentSkeleton.d.ts +2 -31
  436. package/dist/src/components/loading/ContentSkeleton.d.ts.map +1 -1
  437. package/dist/src/components/loading/SmartLoadingIndicator.d.ts +6 -47
  438. package/dist/src/components/loading/SmartLoadingIndicator.d.ts.map +1 -1
  439. package/dist/src/components/maps/GoogleMap.d.ts +7 -8
  440. package/dist/src/components/maps/GoogleMap.d.ts.map +1 -1
  441. package/dist/src/components/maps/UiInfoWindow.d.ts +229 -14
  442. package/dist/src/components/maps/UiInfoWindow.d.ts.map +1 -1
  443. package/dist/src/components/maps/UiMap.d.ts +5091 -101
  444. package/dist/src/components/maps/UiMap.d.ts.map +1 -1
  445. package/dist/src/components/maps/UiMapAll.d.ts +1130 -20
  446. package/dist/src/components/maps/UiMapAll.d.ts.map +1 -1
  447. package/dist/src/components/maps/UiMapMarker.d.ts +16 -17
  448. package/dist/src/components/maps/UiMapMarker.d.ts.map +1 -1
  449. package/dist/src/components/modals/AlertModal.d.ts +9 -10
  450. package/dist/src/components/modals/AlertModal.d.ts.map +1 -1
  451. package/dist/src/components/modals/BaseModal.d.ts +6 -7
  452. package/dist/src/components/modals/BaseModal.d.ts.map +1 -1
  453. package/dist/src/components/modals/ImageCropperModal.d.ts +379 -75
  454. package/dist/src/components/modals/ImageCropperModal.d.ts.map +1 -1
  455. package/dist/src/components/notifications/NotificationContainer.d.ts.map +1 -1
  456. package/dist/src/components/notifications/NotificationToast.d.ts +9 -18
  457. package/dist/src/components/notifications/NotificationToast.d.ts.map +1 -1
  458. package/dist/src/components/stepper/StepperPanels.d.ts +4 -14
  459. package/dist/src/components/stepper/StepperPanels.d.ts.map +1 -1
  460. package/dist/src/components/tabs/InlineTabs.d.ts +4 -28
  461. package/dist/src/components/tabs/InlineTabs.d.ts.map +1 -1
  462. package/dist/src/components/tabs/TabGroup.d.ts +6 -32
  463. package/dist/src/components/tabs/TabGroup.d.ts.map +1 -1
  464. package/dist/src/components/tabs/TabGroupUnderline.d.ts +6 -32
  465. package/dist/src/components/tabs/TabGroupUnderline.d.ts.map +1 -1
  466. package/dist/src/components/tabs/TabsInPills.d.ts +4 -26
  467. package/dist/src/components/tabs/TabsInPills.d.ts.map +1 -1
  468. package/dist/src/components/wrappers/BackgroundGradientWrapper.d.ts +2 -37
  469. package/dist/src/components/wrappers/BackgroundGradientWrapper.d.ts.map +1 -1
  470. package/dist/src/components/wrappers/CardWrapper.d.ts +1 -1
  471. package/dist/src/components/wrappers/CardWrapper.d.ts.map +1 -1
  472. package/dist/src/components/wrappers/DisclosureWrapper.d.ts +2 -23
  473. package/dist/src/components/wrappers/DisclosureWrapper.d.ts.map +1 -1
  474. package/dist/src/components/wrappers/FormErrorWrapper.d.ts +2 -25
  475. package/dist/src/components/wrappers/FormErrorWrapper.d.ts.map +1 -1
  476. package/dist/src/composables/useCalendar.d.ts +4 -5
  477. package/dist/src/composables/useFormValidation.d.ts +0 -1
  478. package/dist/src/composables/useMap.d.ts +0 -1
  479. package/dist/src/composables/useNotifications.d.ts +1308 -30
  480. package/dist/src/composables/useNotifications.d.ts.map +1 -1
  481. package/dist/src/composables/useSimpleTabs.d.ts +0 -1
  482. package/dist/src/composables/useStringTransform.d.ts +0 -1
  483. package/dist/src/composables/useTabs.d.ts +0 -1
  484. package/dist/src/config/css-variables.d.ts +0 -1
  485. package/dist/src/config/design-tokens.d.ts +1 -1
  486. package/dist/src/config/design-tokens.d.ts.map +1 -1
  487. package/dist/src/dev.d.ts +0 -1
  488. package/dist/src/plugin/configure.d.ts +0 -1
  489. package/dist/src/types/calendars.d.ts +12 -11
  490. package/dist/src/types/calendars.d.ts.map +1 -1
  491. package/dist/src/types/core.d.ts +3 -4
  492. package/dist/src/types/core.d.ts.map +1 -1
  493. package/dist/src/types/form.d.ts +15 -13
  494. package/dist/src/types/form.d.ts.map +1 -1
  495. package/dist/src/types/forms.d.ts +2 -1
  496. package/dist/src/types/forms.d.ts.map +1 -1
  497. package/dist/src/types/inputs.d.ts +14 -9
  498. package/dist/src/types/inputs.d.ts.map +1 -1
  499. package/dist/src/types/layouts.d.ts +0 -1
  500. package/dist/src/types/navigation.d.ts +2 -1
  501. package/dist/src/types/navigation.d.ts.map +1 -1
  502. package/dist/src/types/tables.d.ts +8 -6
  503. package/dist/src/types/tables.d.ts.map +1 -1
  504. package/dist/src/types/ui.d.ts +1 -2
  505. package/dist/src/types/ui.d.ts.map +1 -1
  506. package/dist/src/utils/calendar.d.ts +1 -1
  507. package/dist/src/utils/calendar.d.ts.map +1 -1
  508. package/dist/src/utils/component-registry.d.ts +0 -1
  509. package/dist/src/utils/mapThemes.d.ts +0 -1
  510. package/dist/src/utils/phone.d.ts +0 -1
  511. package/dist/src/views/ButtonsShowcase.d.ts +3 -0
  512. package/dist/src/views/ButtonsShowcase.d.ts.map +1 -0
  513. package/dist/src/views/CalendarsShowcase.d.ts +3 -0
  514. package/dist/src/views/CalendarsShowcase.d.ts.map +1 -0
  515. package/dist/src/views/CardsShowcase.d.ts +3 -0
  516. package/dist/src/views/CardsShowcase.d.ts.map +1 -0
  517. package/dist/src/views/ChartsShowcase.d.ts +3 -0
  518. package/dist/src/views/ChartsShowcase.d.ts.map +1 -0
  519. package/dist/src/views/EmptyStatesShowcase.d.ts +3 -0
  520. package/dist/src/views/EmptyStatesShowcase.d.ts.map +1 -0
  521. package/dist/src/views/InputsShowcase.d.ts +3 -0
  522. package/dist/src/views/InputsShowcase.d.ts.map +1 -0
  523. package/dist/src/views/KitchenSink.d.ts +3 -0
  524. package/dist/src/views/KitchenSink.d.ts.map +1 -0
  525. package/dist/src/views/LayoutsShowcase.d.ts +3 -0
  526. package/dist/src/views/LayoutsShowcase.d.ts.map +1 -0
  527. package/dist/src/views/LoadingShowcase.d.ts +3 -0
  528. package/dist/src/views/LoadingShowcase.d.ts.map +1 -0
  529. package/dist/src/views/MapsShowcase.d.ts +3 -0
  530. package/dist/src/views/MapsShowcase.d.ts.map +1 -0
  531. package/dist/src/views/ModalsShowcase.d.ts +3 -0
  532. package/dist/src/views/ModalsShowcase.d.ts.map +1 -0
  533. package/dist/src/views/NotificationsShowcase.d.ts +3 -0
  534. package/dist/src/views/NotificationsShowcase.d.ts.map +1 -0
  535. package/dist/src/views/StepperShowcase.d.ts +3 -0
  536. package/dist/src/views/StepperShowcase.d.ts.map +1 -0
  537. package/dist/src/views/TabsShowcase.d.ts +3 -0
  538. package/dist/src/views/TabsShowcase.d.ts.map +1 -0
  539. package/dist/src/views/ValidationDemo.d.ts +3 -0
  540. package/dist/src/views/ValidationDemo.d.ts.map +1 -0
  541. package/dist/src/views/WrappersShowcase.d.ts +3 -0
  542. package/dist/src/views/WrappersShowcase.d.ts.map +1 -0
  543. package/dist/src/views/components/AvatarPage.d.ts +3 -0
  544. package/dist/src/views/components/AvatarPage.d.ts.map +1 -0
  545. package/dist/src/views/components/BadgePage.d.ts +3 -0
  546. package/dist/src/views/components/BadgePage.d.ts.map +1 -0
  547. package/dist/src/views/components/BannerPage.d.ts +3 -0
  548. package/dist/src/views/components/BannerPage.d.ts.map +1 -0
  549. package/dist/src/views/components/BreadcrumbPage.d.ts +3 -0
  550. package/dist/src/views/components/BreadcrumbPage.d.ts.map +1 -0
  551. package/dist/src/views/components/ButtonPage.d.ts +3 -0
  552. package/dist/src/views/components/ButtonPage.d.ts.map +1 -0
  553. package/dist/src/views/components/CloudinaryImagePage.d.ts +3 -0
  554. package/dist/src/views/components/CloudinaryImagePage.d.ts.map +1 -0
  555. package/dist/src/views/components/LoadingPage.d.ts +3 -0
  556. package/dist/src/views/components/LoadingPage.d.ts.map +1 -0
  557. package/dist/src/views/components/MenuPage.d.ts +3 -0
  558. package/dist/src/views/components/MenuPage.d.ts.map +1 -0
  559. package/dist/src/views/components/ModalPage.d.ts +3 -0
  560. package/dist/src/views/components/ModalPage.d.ts.map +1 -0
  561. package/dist/src/views/components/ProgressPage.d.ts +3 -0
  562. package/dist/src/views/components/ProgressPage.d.ts.map +1 -0
  563. package/dist/src/views/components/RichTextInputPage.d.ts +3 -0
  564. package/dist/src/views/components/RichTextInputPage.d.ts.map +1 -0
  565. package/dist/src/views/components/TablePage.d.ts +3 -0
  566. package/dist/src/views/components/TablePage.d.ts.map +1 -0
  567. package/dist/src/views/components/TextInputPage.d.ts +3 -0
  568. package/dist/src/views/components/TextInputPage.d.ts.map +1 -0
  569. package/dist/src/views/components/TransitionPage.d.ts +3 -0
  570. package/dist/src/views/components/TransitionPage.d.ts.map +1 -0
  571. package/dist/src/views/examples/CheckoutFormExample.d.ts +3 -0
  572. package/dist/src/views/examples/CheckoutFormExample.d.ts.map +1 -0
  573. package/dist/src/views/examples/ContactFormExample.d.ts +3 -0
  574. package/dist/src/views/examples/ContactFormExample.d.ts.map +1 -0
  575. package/dist/src/views/examples/RegistrationFormExample.d.ts +3 -0
  576. package/dist/src/views/examples/RegistrationFormExample.d.ts.map +1 -0
  577. package/dist/src/views/examples/SettingsFormExample.d.ts +3 -0
  578. package/dist/src/views/examples/SettingsFormExample.d.ts.map +1 -0
  579. package/dist/src/views/forms/ValidationPage.d.ts +3 -0
  580. package/dist/src/views/forms/ValidationPage.d.ts.map +1 -0
  581. package/dist/src/views/inputs/CheckboxPage.d.ts +3 -0
  582. package/dist/src/views/inputs/CheckboxPage.d.ts.map +1 -0
  583. package/dist/src/views/inputs/ComboboxPage.d.ts +3 -0
  584. package/dist/src/views/inputs/ComboboxPage.d.ts.map +1 -0
  585. package/dist/src/views/inputs/DatepickerPage.d.ts +3 -0
  586. package/dist/src/views/inputs/DatepickerPage.d.ts.map +1 -0
  587. package/dist/src/views/inputs/EmailPage.d.ts +3 -0
  588. package/dist/src/views/inputs/EmailPage.d.ts.map +1 -0
  589. package/dist/src/views/inputs/FileDropzonePage.d.ts +3 -0
  590. package/dist/src/views/inputs/FileDropzonePage.d.ts.map +1 -0
  591. package/dist/src/views/inputs/MiscInputsPage.d.ts +3 -0
  592. package/dist/src/views/inputs/MiscInputsPage.d.ts.map +1 -0
  593. package/dist/src/views/inputs/PhonePage.d.ts +3 -0
  594. package/dist/src/views/inputs/PhonePage.d.ts.map +1 -0
  595. package/dist/src/views/inputs/SelectPage.d.ts +3 -0
  596. package/dist/src/views/inputs/SelectPage.d.ts.map +1 -0
  597. package/dist/src/views/inputs/SelectTextPage.d.ts +3 -0
  598. package/dist/src/views/inputs/SelectTextPage.d.ts.map +1 -0
  599. package/dist/src/views/inputs/SwitchGroupPage.d.ts +3 -0
  600. package/dist/src/views/inputs/SwitchGroupPage.d.ts.map +1 -0
  601. package/dist/src/views/inputs/SwitchPage.d.ts +3 -0
  602. package/dist/src/views/inputs/SwitchPage.d.ts.map +1 -0
  603. package/dist/src/views/inputs/TextAreaPage.d.ts +3 -0
  604. package/dist/src/views/inputs/TextAreaPage.d.ts.map +1 -0
  605. package/dist/src/views/layouts/CardLayoutPage.d.ts +3 -0
  606. package/dist/src/views/layouts/CardLayoutPage.d.ts.map +1 -0
  607. package/dist/src/views/layouts/DashboardLayoutPage.d.ts +3 -0
  608. package/dist/src/views/layouts/DashboardLayoutPage.d.ts.map +1 -0
  609. package/dist/src/views/layouts/HeaderLayoutPage.d.ts +3 -0
  610. package/dist/src/views/layouts/HeaderLayoutPage.d.ts.map +1 -0
  611. package/dist/src/views/layouts/SidebarLayoutPage.d.ts +3 -0
  612. package/dist/src/views/layouts/SidebarLayoutPage.d.ts.map +1 -0
  613. package/dist/stepper/StepperPanels.d.ts +1 -3
  614. package/dist/stepper/StepperPanels.js +1 -1
  615. package/dist/stepper/index.d.ts +1 -0
  616. package/dist/stepper/index.js +1 -1
  617. package/dist/style.css +1 -1
  618. package/dist/tabs/InlineTabs.d.ts +1 -3
  619. package/dist/tabs/InlineTabs.js +1 -1
  620. package/dist/tabs/TabGroup.d.ts +1 -3
  621. package/dist/tabs/TabGroup.js +1 -1
  622. package/dist/tabs/TabGroupUnderline.d.ts +1 -3
  623. package/dist/tabs/TabGroupUnderline.js +1 -1
  624. package/dist/tabs/TabsInPills.d.ts +1 -3
  625. package/dist/tabs/TabsInPills.js +1 -1
  626. package/dist/tabs/index.d.ts +1 -0
  627. package/dist/tabs/index.js +4 -4
  628. package/dist/{tabs-Da32Mbhf.js → tabs-J5phClGv.js} +2 -2
  629. package/dist/{tabs-Da32Mbhf.js.map → tabs-J5phClGv.js.map} +1 -1
  630. package/dist/ui.css +1 -0
  631. package/dist/{use-outside-click-DNDV36Sc.js → use-outside-click-14T0Zn98.js} +3 -3
  632. package/dist/{use-outside-click-DNDV36Sc.js.map → use-outside-click-14T0Zn98.js.map} +1 -1
  633. package/dist/{use-tree-walker-BHCORE7u.js → use-tree-walker-Bo9gIb_K.js} +2 -2
  634. package/dist/{use-tree-walker-BHCORE7u.js.map → use-tree-walker-Bo9gIb_K.js.map} +1 -1
  635. package/dist/vue-router-B3K2xmg_.js +120 -0
  636. package/dist/vue-router-B3K2xmg_.js.map +1 -0
  637. package/dist/vue3-lottie.es-DT4qZE-F.js +7981 -0
  638. package/dist/{vue3-lottie.es-C_MDkNwR.js.map → vue3-lottie.es-DT4qZE-F.js.map} +1 -1
  639. package/dist/wrappers/BackgroundGradientWrapper.d.ts +1 -3
  640. package/dist/wrappers/BackgroundGradientWrapper.js +1 -1
  641. package/dist/wrappers/CardWrapper.d.ts +1 -3
  642. package/dist/wrappers/DisclosureWrapper.d.ts +1 -3
  643. package/dist/wrappers/DisclosureWrapper.js +1 -1
  644. package/dist/wrappers/FormErrorWrapper.d.ts +1 -3
  645. package/dist/wrappers/index.d.ts +1 -0
  646. package/dist/wrappers/index.js +2 -2
  647. package/package.json +26 -18
  648. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-DRwe4rw8.js.map +0 -1
  649. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-B8wJVkPP.js +0 -187
  650. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-ClGP5YU0.js +0 -1315
  651. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-ClGP5YU0.js.map +0 -1
  652. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-DRDP86Yc.js +0 -253
  653. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-DRDP86Yc.js.map +0 -1
  654. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-Ct8b80dM.js.map +0 -1
  655. package/dist/EmailInput.vue_vue_type_script_setup_true_lang-Dhfgs2Jn.js +0 -122
  656. package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-CwOOShcM.js +0 -36
  657. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2tAB9Hbx.js +0 -30
  658. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-Cm5RsC7C.js +0 -162
  659. package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-Cm5RsC7C.js.map +0 -1
  660. package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-Cri9BiBy.js +0 -130
  661. package/dist/SelectInput.vue_vue_type_script_setup_true_lang--yUL7bcx.js.map +0 -1
  662. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-CAK6ZIiz.js.map +0 -1
  663. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-Ci7VLRZx.js.map +0 -1
  664. package/dist/UiTable.vue_vue_type_script_setup_true_lang-BuOCaPzi.js.map +0 -1
  665. package/dist/calendar-DyIP7WGv.js.map +0 -1
  666. package/dist/src/components/charts/BaseChart.d.ts +0 -81
  667. package/dist/src/components/charts/BaseChart.d.ts.map +0 -1
  668. package/dist/vue-router-BPbyZ7xA.js +0 -145
  669. package/dist/vue-router-BPbyZ7xA.js.map +0 -1
  670. package/dist/vue3-lottie.es-C_MDkNwR.js +0 -7976
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"StatCard.vue_vue_type_script_setup_true_lang-DTOT0-WB.js","sources":["../node_modules/@heroicons/vue/20/solid/esm/ArrowDownIcon.js","../node_modules/@heroicons/vue/20/solid/esm/ArrowUpIcon.js","../node_modules/@heroicons/vue/20/solid/esm/MinusIcon.js","../src/components/charts/StatCard.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","<!--\n @component StatCard\n @description Stat display card with optional trend sparkline.\n \n A card component for displaying key metrics with optional\n trend indicator and sparkline chart.\n \n @props\n - title (string, required): Stat label\n - value (string|number, required): Main stat value\n - change (number, optional): Percentage change\n - changeLabel (string, optional): Change context (e.g., \"vs last month\")\n - sparklineData (array, optional): Data for sparkline\n - icon (Component, optional): Icon component\n - loading (boolean, optional): Loading state\n \n @example\n <StatCard\n title=\"Total Revenue\"\n value=\"$45,231\"\n :change=\"12.5\"\n change-label=\"vs last month\"\n :sparkline-data=\"[10, 15, 12, 20, 18, 25, 22]\"\n />\n-->\n<template>\n <div 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\">\n <!-- Header -->\n <div class=\"sl-flex sl-items-center sl-justify-between\">\n <div class=\"sl-flex sl-items-center sl-gap-3\">\n <div \n v-if=\"icon\" \n 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\"\n >\n <component \n :is=\"icon\" \n class=\"sl-h-5 sl-w-5 sl-text-stachelock-600 dark:sl-text-stachelock-400\" \n />\n </div>\n <p class=\"sl-text-sm sl-font-medium sl-text-gray-500 dark:sl-text-slate-400\">\n {{ title }}\n </p>\n </div>\n \n <!-- Change indicator -->\n <div \n v-if=\"change !== undefined\" \n class=\"sl-flex sl-items-center sl-gap-1 sl-text-sm sl-font-medium\"\n :class=\"changeClasses\"\n >\n <component :is=\"changeIcon\" class=\"sl-h-4 sl-w-4\" />\n <span>{{ Math.abs(change) }}%</span>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"sl-mt-4\">\n <p \n v-if=\"!loading\" \n class=\"sl-text-3xl sl-font-semibold sl-text-gray-900 dark:sl-text-white sl-tabular-nums\"\n >\n {{ value }}\n </p>\n <div v-else class=\"sl-h-9 sl-w-24 sl-bg-gray-200 dark:sl-bg-slate-700 sl-rounded sl-animate-pulse\" />\n </div>\n\n <!-- Sparkline -->\n <div v-if=\"sparklineData && sparklineData.length > 0\" class=\"sl-mt-4\">\n <SparklineChart\n :data=\"sparklineData\"\n type=\"area\"\n :height=\"40\"\n :color=\"sparklineColor\"\n />\n </div>\n\n <!-- Change label -->\n <p \n v-if=\"changeLabel\" \n class=\"sl-mt-2 sl-text-xs sl-text-gray-500 dark:sl-text-slate-400\"\n >\n {{ changeLabel }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, type Component } from 'vue';\nimport { ArrowUpIcon, ArrowDownIcon, MinusIcon } from '@heroicons/vue/20/solid';\nimport SparklineChart from './SparklineChart.vue';\nimport { chartColors } from './chartTheme';\n\ninterface Props {\n title: string;\n value: string | number;\n change?: number;\n changeLabel?: string;\n sparklineData?: number[];\n icon?: Component;\n loading?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n loading: false,\n});\n\nconst isPositive = computed(() => props.change !== undefined && props.change > 0);\nconst isNegative = computed(() => props.change !== undefined && props.change < 0);\n\nconst changeClasses = computed(() => {\n if (isPositive.value) return 'sl-text-green-600 dark:sl-text-green-400';\n if (isNegative.value) return 'sl-text-red-600 dark:sl-text-red-400';\n return 'sl-text-gray-500 dark:sl-text-slate-400';\n});\n\nconst changeIcon = computed(() => {\n if (isPositive.value) return ArrowUpIcon;\n if (isNegative.value) return ArrowDownIcon;\n return MinusIcon;\n});\n\nconst sparklineColor = computed(() => {\n if (isPositive.value) return chartColors.success;\n if (isNegative.value) return chartColors.danger;\n return chartColors.primary[0];\n});\n</script>\n\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","props","__props","isPositive","computed","isNegative","changeClasses","changeIcon","ArrowUpIcon","ArrowDownIcon","MinusIcon","sparklineColor","chartColors","_hoisted_1","_hoisted_2","_hoisted_3","icon","_hoisted_4","_createBlock","_resolveDynamicComponent","_hoisted_5","_toDisplayString","title","change","_normalizeClass","_hoisted_6","loading","_hoisted_8","_hoisted_7","value","sparklineData","_hoisted_9","_createVNode","SparklineChart","changeLabel","_hoisted_10"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js","sources":["../node_modules/@heroicons/vue/20/solid/esm/ArrowDownIcon.js","../node_modules/@heroicons/vue/20/solid/esm/ArrowUpIcon.js","../node_modules/@heroicons/vue/20/solid/esm/MinusIcon.js","../src/components/charts/StatCard.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n 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\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","<!--\n @component StatCard\n @description Stat display card with optional trend sparkline.\n \n A card component for displaying key metrics with optional\n trend indicator and sparkline chart.\n \n @props\n - title (string, required): Stat label\n - value (string|number, required): Main stat value\n - change (number, optional): Percentage change\n - changeLabel (string, optional): Change context (e.g., \"vs last month\")\n - sparklineData (array, optional): Data for sparkline\n - icon (Component, optional): Icon component\n - loading (boolean, optional): Loading state\n \n @example\n <StatCard\n title=\"Total Revenue\"\n value=\"$45,231\"\n :change=\"12.5\"\n change-label=\"vs last month\"\n :sparkline-data=\"[10, 15, 12, 20, 18, 25, 22]\"\n />\n-->\n<template>\n <div 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\">\n <!-- Header -->\n <div class=\"sl-flex sl-items-center sl-justify-between\">\n <div class=\"sl-flex sl-items-center sl-gap-3\">\n <div \n v-if=\"icon\" \n 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\"\n >\n <component \n :is=\"icon\" \n class=\"sl-h-5 sl-w-5 sl-text-stachelock-600 dark:sl-text-stachelock-400\" \n />\n </div>\n <p class=\"sl-text-sm sl-font-medium sl-text-gray-500 dark:sl-text-slate-400\">\n {{ title }}\n </p>\n </div>\n \n <!-- Change indicator -->\n <div \n v-if=\"change !== undefined\" \n class=\"sl-flex sl-items-center sl-gap-1 sl-text-sm sl-font-medium\"\n :class=\"changeClasses\"\n >\n <component :is=\"changeIcon\" class=\"sl-h-4 sl-w-4\" />\n <span>{{ Math.abs(change) }}%</span>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"sl-mt-4\">\n <p \n v-if=\"!loading\" \n class=\"sl-text-3xl sl-font-semibold sl-text-gray-900 dark:sl-text-white sl-tabular-nums\"\n >\n {{ value }}\n </p>\n <div v-else class=\"sl-h-9 sl-w-24 sl-bg-gray-200 dark:sl-bg-slate-700 sl-rounded sl-animate-pulse\" />\n </div>\n\n <!-- Sparkline -->\n <div v-if=\"sparklineData && sparklineData.length > 0\" class=\"sl-mt-4\">\n <SparklineChart\n :data=\"sparklineData\"\n type=\"area\"\n :height=\"40\"\n :color=\"sparklineColor\"\n />\n </div>\n\n <!-- Change label -->\n <p \n v-if=\"changeLabel\" \n class=\"sl-mt-2 sl-text-xs sl-text-gray-500 dark:sl-text-slate-400\"\n >\n {{ changeLabel }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, type Component } from 'vue';\nimport { ArrowUpIcon, ArrowDownIcon, MinusIcon } from '@heroicons/vue/20/solid';\nimport SparklineChart from './SparklineChart.vue';\nimport { chartColors } from './chartTheme';\n\ninterface Props {\n title: string;\n value: string | number;\n change?: number;\n changeLabel?: string;\n sparklineData?: number[];\n icon?: Component;\n loading?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n loading: false,\n});\n\nconst isPositive = computed(() => props.change !== undefined && props.change > 0);\nconst isNegative = computed(() => props.change !== undefined && props.change < 0);\n\nconst changeClasses = computed(() => {\n if (isPositive.value) return 'sl-text-green-600 dark:sl-text-green-400';\n if (isNegative.value) return 'sl-text-red-600 dark:sl-text-red-400';\n return 'sl-text-gray-500 dark:sl-text-slate-400';\n});\n\nconst changeIcon = computed(() => {\n if (isPositive.value) return ArrowUpIcon;\n if (isNegative.value) return ArrowDownIcon;\n return MinusIcon;\n});\n\nconst sparklineColor = computed(() => {\n if (isPositive.value) return chartColors.success;\n if (isNegative.value) return chartColors.danger;\n return chartColors.primary[0];\n});\n</script>\n\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","props","__props","isPositive","computed","isNegative","changeClasses","changeIcon","ArrowUpIcon","ArrowDownIcon","MinusIcon","sparklineColor","chartColors","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_resolveDynamicComponent","_hoisted_5","_toDisplayString","_normalizeClass","_hoisted_6","_hoisted_8","_hoisted_7","_hoisted_9","_createVNode","SparklineChart","_hoisted_10"],"mappings":"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","x_google_ignoreList":[0,1,2]}