@stfrigerio/sito-template 0.1.77 → 0.1.79

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 (195) hide show
  1. package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.d.ts +25 -0
  2. package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.d.ts.map +1 -0
  3. package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.stories.d.ts +10 -0
  4. package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.stories.d.ts.map +1 -0
  5. package/dist/components/organisms/charts/index.d.ts +2 -0
  6. package/dist/components/organisms/charts/index.d.ts.map +1 -1
  7. package/dist/components/organisms/index.d.ts +2 -0
  8. package/dist/components/organisms/index.d.ts.map +1 -1
  9. package/dist/index.esm.js +522 -220
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.js +525 -222
  12. package/dist/index.js.map +1 -1
  13. package/dist/styles.css +1 -1
  14. package/dist/styles.css.map +1 -1
  15. package/package.json +1 -1
  16. package/storybook-static/assets/{ASCIIText.stories-CAN16AEY.js → ASCIIText.stories-CNJ4kDUK.js} +1 -1
  17. package/storybook-static/assets/{AllAtoms.stories-DRGVjxhg.js → AllAtoms.stories-DVD9dXtt.js} +1 -1
  18. package/storybook-static/assets/{AnimatedContent.stories-C2U9Faty.js → AnimatedContent.stories-DR2sBRO4.js} +1 -1
  19. package/storybook-static/assets/{AnimatedList.stories-Dp1Ya8b0.js → AnimatedList.stories-ByvQmQtJ.js} +1 -1
  20. package/storybook-static/assets/{Antigravity.stories-C2Bde5L9.js → Antigravity.stories-CCkzQRZD.js} +1 -1
  21. package/storybook-static/assets/{ArrayInput.stories-BTiKcCDH.js → ArrayInput.stories-DiYj5x-F.js} +1 -1
  22. package/storybook-static/assets/{Aurora.stories-BwEDe4qb.js → Aurora.stories-CdZgtcXa.js} +1 -1
  23. package/storybook-static/assets/{Beams.stories-nIxKNrpc.js → Beams.stories-DIbbV8Wj.js} +1 -1
  24. package/storybook-static/assets/{BlobCursor.stories-CyVhuFRR.js → BlobCursor.stories-DdtPdrmO.js} +1 -1
  25. package/storybook-static/assets/{BlurText.stories-D5vEHUr3.js → BlurText.stories-DvS0BuFx.js} +1 -1
  26. package/storybook-static/assets/{BooleansHeatmap.stories-DCAgsGDe.js → BooleansHeatmap.stories-CCdofxGc.js} +1 -1
  27. package/storybook-static/assets/{BorderGlow.stories-nELrDs05.js → BorderGlow.stories-DGsaUwxy.js} +1 -1
  28. package/storybook-static/assets/{BubbleMenu.stories-DwVh3hon.js → BubbleMenu.stories-Di7OQBuA.js} +1 -1
  29. package/storybook-static/assets/{Button-CzEsoYbA.js → Button-CZA7o1Gt.js} +1 -1
  30. package/storybook-static/assets/{Button.stories-g0uRxSKm.js → Button.stories-D9fq9LoH.js} +1 -1
  31. package/storybook-static/assets/{Calendar.stories-CReDFTFG.js → Calendar.stories-B4XpP2tI.js} +1 -1
  32. package/storybook-static/assets/{Card-BC1JBcMp.js → Card-CfovP7n4.js} +1 -1
  33. package/storybook-static/assets/{Card.stories-DMXKDrjL.js → Card.stories-DLez3UFF.js} +1 -1
  34. package/storybook-static/assets/{CardNav.stories-DFnuL51i.js → CardNav.stories-B_sxJWJ4.js} +1 -1
  35. package/storybook-static/assets/{Carousel.stories-Bf7l7zA0.js → Carousel.stories-CxkfJY34.js} +1 -1
  36. package/storybook-static/assets/{Checkbox-CZHrsOdB.js → Checkbox-DmCypF1c.js} +1 -1
  37. package/storybook-static/assets/{Checkbox.stories-Dv7gxTEr.js → Checkbox.stories-D6HzUoQr.js} +1 -1
  38. package/storybook-static/assets/{ChromaGrid.stories-CMfVxkkr.js → ChromaGrid.stories-BefBbLue.js} +1 -1
  39. package/storybook-static/assets/{CircularGallery.stories-CuHeDn6H.js → CircularGallery.stories-BcibPZCH.js} +1 -1
  40. package/storybook-static/assets/{CircularText.stories-D3qEBi7V.js → CircularText.stories-DIkPGool.js} +1 -1
  41. package/storybook-static/assets/{ClickSpark.stories-hRHKlgyZ.js → ClickSpark.stories-BI-Yfaob.js} +1 -1
  42. package/storybook-static/assets/{ColorBends.stories-a0p7haNt.js → ColorBends.stories-BQpzL3Of.js} +1 -1
  43. package/storybook-static/assets/{CountUp.stories-CkenhDLf.js → CountUp.stories-yxjUQWLc.js} +1 -1
  44. package/storybook-static/assets/{Counter.stories-BIDGgLqS.js → Counter.stories-CX_TeOip.js} +1 -1
  45. package/storybook-static/assets/{Crosshair.stories-Bwfjmhbz.js → Crosshair.stories-BnZfEvwU.js} +1 -1
  46. package/storybook-static/assets/{Cubes.stories-DHm5SLpR.js → Cubes.stories-BOjKWGyh.js} +1 -1
  47. package/storybook-static/assets/{CurvedLoop.stories-CJ5c-bCz.js → CurvedLoop.stories-Bctfe2P4.js} +1 -1
  48. package/storybook-static/assets/{DarkVeil.stories-BQqwTv41.js → DarkVeil.stories-BVsZBa_C.js} +1 -1
  49. package/storybook-static/assets/{DateInput-CIJZfbN4.js → DateInput-Bn4ALgyD.js} +1 -1
  50. package/storybook-static/assets/{DateInput.stories-DFMuh4Wf.js → DateInput.stories-DrNT5Gye.js} +1 -1
  51. package/storybook-static/assets/{DecayCard.stories-BR1hXUEk.js → DecayCard.stories-ZAjuihaF.js} +1 -1
  52. package/storybook-static/assets/{DecryptedText.stories-I0Zns_UO.js → DecryptedText.stories-BNLBedmV.js} +1 -1
  53. package/storybook-static/assets/{Dither.stories-BY9eSI-i.js → Dither.stories-DeBS3s8S.js} +1 -1
  54. package/storybook-static/assets/{Dock.stories-BGtbSGdN.js → Dock.stories-DX259yLm.js} +1 -1
  55. package/storybook-static/assets/{EditFAB.stories-BD4vmfXF.js → EditFAB.stories-CXbljVLg.js} +1 -1
  56. package/storybook-static/assets/{EvilEye.stories-ByTTfAJM.js → EvilEye.stories-BPfAuarL.js} +1 -1
  57. package/storybook-static/assets/{FadeContent.stories-Cap8qc5H.js → FadeContent.stories-1Q_taF5y.js} +1 -1
  58. package/storybook-static/assets/{FaultyTerminal.stories-BOCyN79M.js → FaultyTerminal.stories-BNxD1bl4.js} +1 -1
  59. package/storybook-static/assets/{Fbo-C2hv63gy.js → Fbo-BhpPCYiS.js} +1 -1
  60. package/storybook-static/assets/{FloatingLines.stories-G3s09BJl.js → FloatingLines.stories-BBO0vuh5.js} +1 -1
  61. package/storybook-static/assets/{FlowingMenu.stories-CVY2MRto.js → FlowingMenu.stories-Ce_oHJmB.js} +1 -1
  62. package/storybook-static/assets/{FluidGlass.stories-BenQvmzA.js → FluidGlass.stories-De3WLO5E.js} +1 -1
  63. package/storybook-static/assets/{Folder.stories-DVrewKHX.js → Folder.stories-Cep1OjrT.js} +1 -1
  64. package/storybook-static/assets/{FuzzyText.stories-B5SQlD8u.js → FuzzyText.stories-BEZXg7AD.js} +1 -1
  65. package/storybook-static/assets/{Galaxy.stories-BgC2gENi.js → Galaxy.stories-kNaxCPmL.js} +1 -1
  66. package/storybook-static/assets/{GhostCursor.stories-D2IeZnFc.js → GhostCursor.stories-D4Kv4klo.js} +1 -1
  67. package/storybook-static/assets/{GlareHover.stories-DTFMcE4T.js → GlareHover.stories-BH3m_5y-.js} +1 -1
  68. package/storybook-static/assets/{GlassSurface.stories-aa36tQOs.js → GlassSurface.stories-CfwkNRL4.js} +1 -1
  69. package/storybook-static/assets/{GlitchText.stories-DrVJa_iG.js → GlitchText.stories-DuO-fHXi.js} +1 -1
  70. package/storybook-static/assets/{GooeyNav.stories-CK-i5TYG.js → GooeyNav.stories-BqH1CBQo.js} +1 -1
  71. package/storybook-static/assets/{GradientBlinds.stories-Z5YmW-kF.js → GradientBlinds.stories-2D_yKjY6.js} +1 -1
  72. package/storybook-static/assets/{GradientText.stories-0Yw6cjx7.js → GradientText.stories-BvTcplbJ.js} +1 -1
  73. package/storybook-static/assets/{Grainient.stories-JZylDRjp.js → Grainient.stories-NWnMI8Xp.js} +1 -1
  74. package/storybook-static/assets/{GridMotion.stories-CMqBnFoX.js → GridMotion.stories-Cxy1K244.js} +1 -1
  75. package/storybook-static/assets/HabitTimeOfDayChart-DXBihkny.css +1 -0
  76. package/storybook-static/assets/HabitTimeOfDayChart.stories-bjfkGp9C.js +44 -0
  77. package/storybook-static/assets/{ImageSlideshow.stories-CUMjObLi.js → ImageSlideshow.stories-Bf_0mud8.js} +1 -1
  78. package/storybook-static/assets/{Iridescence.stories-BiJ23RkZ.js → Iridescence.stories-DnnilFqh.js} +1 -1
  79. package/storybook-static/assets/{LaserFlow.stories-DyVGQfLI.js → LaserFlow.stories-7s8gLKYx.js} +1 -1
  80. package/storybook-static/assets/{LetterGlitch.stories-Dg5UyDmn.js → LetterGlitch.stories-CvBnmQHD.js} +1 -1
  81. package/storybook-static/assets/{LightPillar.stories-CeRBWebc.js → LightPillar.stories-C4gn8aMz.js} +1 -1
  82. package/storybook-static/assets/{LightRays.stories-U36Z_7VB.js → LightRays.stories-Dmlh3Q9t.js} +1 -1
  83. package/storybook-static/assets/{Lightning.stories-isM2FE_A.js → Lightning.stories-BazErqXA.js} +1 -1
  84. package/storybook-static/assets/{LineWaves.stories-Bu4iHjAe.js → LineWaves.stories-8-taZp01.js} +1 -1
  85. package/storybook-static/assets/{LiquidChrome.stories-DiXhJV1-.js → LiquidChrome.stories-BvXdtHGD.js} +1 -1
  86. package/storybook-static/assets/{LiquidEther.stories-DYbFymig.js → LiquidEther.stories-CgUivNv7.js} +1 -1
  87. package/storybook-static/assets/{LoadingSpinner-DbnnzL33.js → LoadingSpinner-DzthkB3E.js} +1 -1
  88. package/storybook-static/assets/{LoadingSpinner.stories-COkS9D4a.js → LoadingSpinner.stories-CbAc9FJ-.js} +1 -1
  89. package/storybook-static/assets/{MagicRings.stories-D2_dxXz3.js → MagicRings.stories-CJ71krX5.js} +1 -1
  90. package/storybook-static/assets/{Magnet.stories-CXMp90QP.js → Magnet.stories-BsTkNBFY.js} +1 -1
  91. package/storybook-static/assets/{MagnetLines.stories-DBb0fXSr.js → MagnetLines.stories-SP6oXQ_2.js} +1 -1
  92. package/storybook-static/assets/{Masonry.stories-Bft2Irkr.js → Masonry.stories-DCSFPxZr.js} +1 -1
  93. package/storybook-static/assets/{MetaBalls.stories-z3baaVT0.js → MetaBalls.stories-3Xq-kFCK.js} +1 -1
  94. package/storybook-static/assets/{MetallicPaint.stories-CcMqTJds.js → MetallicPaint.stories-D_k0CxAm.js} +1 -1
  95. package/storybook-static/assets/{MoodChart.stories-BR7FmD6u.js → MoodChart.stories-ounmGULU.js} +1 -1
  96. package/storybook-static/assets/{MotionConfigContext-CFyliiaM.js → MotionConfigContext-DczW6Yp-.js} +1 -1
  97. package/storybook-static/assets/{Navbar.stories-BgpPNytt.js → Navbar.stories-DojGSwog.js} +1 -1
  98. package/storybook-static/assets/{Noise.stories-fbyosJec.js → Noise.stories-vRT-DWUc.js} +1 -1
  99. package/storybook-static/assets/{NumberStepper-8cni0D0d.js → NumberStepper-BnxsrXAQ.js} +1 -1
  100. package/storybook-static/assets/{NumberStepper.stories-C0PYKy7p.js → NumberStepper.stories-DvgxX1LG.js} +1 -1
  101. package/storybook-static/assets/{Orb.stories-DTjKIRbB.js → Orb.stories-DBBm3Vlu.js} +1 -1
  102. package/storybook-static/assets/{OrbitImages.stories-BWJkD3sE.js → OrbitImages.stories-BdWzV4SL.js} +1 -1
  103. package/storybook-static/assets/{PieChart.stories-C_Vy5CDv.js → PieChart.stories-DWLPu9uj.js} +1 -1
  104. package/storybook-static/assets/{PixelBlast.stories-D7MArtMI.js → PixelBlast.stories-D72sMDxa.js} +1 -1
  105. package/storybook-static/assets/{PixelCard.stories-DcDl8RHc.js → PixelCard.stories-DFENqlra.js} +1 -1
  106. package/storybook-static/assets/{PixelSnow.stories-Bw5QOROR.js → PixelSnow.stories-DHxvb6cq.js} +1 -1
  107. package/storybook-static/assets/{PixelTransition.stories-DstxQxN0.js → PixelTransition.stories-BtH9jB6w.js} +1 -1
  108. package/storybook-static/assets/{Plasma.stories-BZExPMRR.js → Plasma.stories-C8Mk042y.js} +1 -1
  109. package/storybook-static/assets/{Prism.stories-C4g9fQvm.js → Prism.stories-BTgOMqrd.js} +1 -1
  110. package/storybook-static/assets/{PrismaticBurst.stories-Dj18a10c.js → PrismaticBurst.stories-DALOTiqj.js} +1 -1
  111. package/storybook-static/assets/{ProfileCard.stories-CR3_Bja7.js → ProfileCard.stories-oL7niYZn.js} +1 -1
  112. package/storybook-static/assets/{QuantifiableHabitsChart.stories-Cy3rQowQ.js → QuantifiableHabitsChart.stories-DA3YPiD8.js} +1 -1
  113. package/storybook-static/assets/{Radar.stories-j4rdU9TF.js → Radar.stories-twX25gB2.js} +1 -1
  114. package/storybook-static/assets/{Ribbons.stories-lB4uNezs.js → Ribbons.stories-BiPE3cPE.js} +1 -1
  115. package/storybook-static/assets/{RippleGrid.stories-DqEVml_y.js → RippleGrid.stories-Bk1e8QQS.js} +1 -1
  116. package/storybook-static/assets/{RotatingText.stories-Cej8-VcB.js → RotatingText.stories-DMBMDGJf.js} +1 -1
  117. package/storybook-static/assets/{ScrollFloat.stories-CQ5Fsjxi.js → ScrollFloat.stories-Di679x-t.js} +1 -1
  118. package/storybook-static/assets/{ScrollReveal.stories-Cy8EVZkw.js → ScrollReveal.stories-CzHU4qTi.js} +1 -1
  119. package/storybook-static/assets/{ScrollVelocity.stories-DjQBi2C8.js → ScrollVelocity.stories-B-M2g5Mn.js} +1 -1
  120. package/storybook-static/assets/{SearchBar.stories-B893-BA0.js → SearchBar.stories-BEuQ2rlz.js} +1 -1
  121. package/storybook-static/assets/{SearchableDropdown-DA44b3_Q.js → SearchableDropdown-DizFzcKo.js} +1 -1
  122. package/storybook-static/assets/{SearchableDropdown.stories-IcQsEwL-.js → SearchableDropdown.stories-CqNKYUxm.js} +1 -1
  123. package/storybook-static/assets/{SelectInput-zadEZpDI.js → SelectInput-DT_d_NsJ.js} +1 -1
  124. package/storybook-static/assets/{SelectInput.stories-BXN5Qngu.js → SelectInput.stories-C8C-Ug2L.js} +1 -1
  125. package/storybook-static/assets/{ShapeBlur.stories-DanNCmFJ.js → ShapeBlur.stories-ChsMhfJI.js} +1 -1
  126. package/storybook-static/assets/{ShapeGrid.stories-bj6mmNeF.js → ShapeGrid.stories-DQF8IwUP.js} +1 -1
  127. package/storybook-static/assets/{ShinyText.stories-DZCLKCXK.js → ShinyText.stories-Bz13tovD.js} +1 -1
  128. package/storybook-static/assets/{Silk.stories-Cb9mE2Hj.js → Silk.stories-CFE1SlNL.js} +1 -1
  129. package/storybook-static/assets/SleepChart.stories-BhbOQfha.js +58 -0
  130. package/storybook-static/assets/{Slider-D_4YKC2Y.js → Slider-CBwYFVIV.js} +1 -1
  131. package/storybook-static/assets/{Slider.stories-8Hdg_mMo.js → Slider.stories-Cvrm2QcX.js} +1 -1
  132. package/storybook-static/assets/{SoftAurora.stories-kKJ2b_Ur.js → SoftAurora.stories-Ba1fSqh7.js} +1 -1
  133. package/storybook-static/assets/{SoundDemo.stories-DfpiNWa7.js → SoundDemo.stories-CwWEzXr9.js} +1 -1
  134. package/storybook-static/assets/{SplashCursor.stories-DEK6Z0xq.js → SplashCursor.stories-COuSOYSq.js} +1 -1
  135. package/storybook-static/assets/{SpotlightCard.stories-BlItI_g6.js → SpotlightCard.stories-DRDHbHp3.js} +1 -1
  136. package/storybook-static/assets/{Stack.stories-okh30gCA.js → Stack.stories-DzRVjsMf.js} +1 -1
  137. package/storybook-static/assets/{StaggeredMenu.stories-DbW10UGC.js → StaggeredMenu.stories-bfCto5B9.js} +1 -1
  138. package/storybook-static/assets/{StarBorder.stories-lB-mSYuP.js → StarBorder.stories-OTbSoJbQ.js} +1 -1
  139. package/storybook-static/assets/{SunburstChart.stories-CUQO5n-z.js → SunburstChart.stories-J08jid7S.js} +1 -1
  140. package/storybook-static/assets/{Table.stories-CI2Lq6v3.js → Table.stories-B9lBkLrU.js} +1 -1
  141. package/storybook-static/assets/{Tabs.stories-ID_jWavD.js → Tabs.stories-D-cdG7ef.js} +1 -1
  142. package/storybook-static/assets/{TargetCursor.stories-B98zAoY0.js → TargetCursor.stories-Ci156vkX.js} +1 -1
  143. package/storybook-static/assets/{TextArea-C9Aq9zxZ.js → TextArea-D6xA-G9E.js} +1 -1
  144. package/storybook-static/assets/{TextArea.stories-C_VBUKyL.js → TextArea.stories-B_6KeOwd.js} +1 -1
  145. package/storybook-static/assets/{TextCursor.stories-CX8nKLLU.js → TextCursor.stories-CB25PS6c.js} +1 -1
  146. package/storybook-static/assets/{TextInput-BoxLFzTk.js → TextInput-p0yvLHu7.js} +1 -1
  147. package/storybook-static/assets/{TextInput.stories-BzWh4NqX.js → TextInput.stories-37MBq_e1.js} +1 -1
  148. package/storybook-static/assets/{TextPressure.stories-0LcC3gwS.js → TextPressure.stories-Dzqg-H9s.js} +1 -1
  149. package/storybook-static/assets/{TextType.stories-vQijf7Fh.js → TextType.stories-DUKIfs4s.js} +1 -1
  150. package/storybook-static/assets/{ThemeSwitcher.stories-htv9l1m1.js → ThemeSwitcher.stories-CJbuQZQI.js} +1 -1
  151. package/storybook-static/assets/{Threads.stories-d29kyOOr.js → Threads.stories-FB9S5grf.js} +1 -1
  152. package/storybook-static/assets/{TimeInput.stories-igCFdI2N.js → TimeInput.stories-B652mfyC.js} +1 -1
  153. package/storybook-static/assets/{Toggle-DjamEjzj.js → Toggle-BdFbb1UM.js} +1 -1
  154. package/storybook-static/assets/{Toggle.stories-BF1yeXWA.js → Toggle.stories-DdFeqCx2.js} +1 -1
  155. package/storybook-static/assets/{ToggleButton-BUoy14By.js → ToggleButton-vGUT5jzh.js} +1 -1
  156. package/storybook-static/assets/{ToggleButton.stories-SWs4TTv0.js → ToggleButton.stories-Cl9RpKGP.js} +1 -1
  157. package/storybook-static/assets/{TrueFocus.stories-8DtWKBV2.js → TrueFocus.stories-XySm1xyG.js} +1 -1
  158. package/storybook-static/assets/{VariableProximity.stories-BSbzaWRj.js → VariableProximity.stories-9PoxTKjP.js} +1 -1
  159. package/storybook-static/assets/{Waves.stories-rUGOxeuC.js → Waves.stories-Lkqs6tQG.js} +1 -1
  160. package/storybook-static/assets/band-BYy0bT_S.js +1 -0
  161. package/storybook-static/assets/{check-Dq_aEYsO.js → check-B86E6LSY.js} +1 -1
  162. package/storybook-static/assets/{chevron-down-ve2JpfhS.js → chevron-down-CRL8GnB3.js} +1 -1
  163. package/storybook-static/assets/{chevron-right-BBDTkyhE.js → chevron-right-Cc0-LXrS.js} +1 -1
  164. package/storybook-static/assets/client-BdOc8Iwm.js +1 -0
  165. package/storybook-static/assets/{createLucideIcon-BM4zhNrq.js → createLucideIcon-BaQziuVh.js} +1 -1
  166. package/storybook-static/assets/{download-jjjb1SND.js → download-D-Dc-DRw.js} +1 -1
  167. package/storybook-static/assets/{folder-B8Xf_S6e.js → folder-LWy7LxYm.js} +1 -1
  168. package/storybook-static/assets/{iconBase-DqqHGLu2.js → iconBase-Dq0q1wEJ.js} +1 -1
  169. package/storybook-static/assets/{iframe-gZo2MXmI.js → iframe-Dmyojefl.js} +3 -3
  170. package/storybook-static/assets/{index-MVch72cm.js → index-CBPAvggo.js} +1 -1
  171. package/storybook-static/assets/{index-BBC3qpWH.js → index-D3YYeaiv.js} +1 -1
  172. package/storybook-static/assets/{index-CnBOj3gc.js → index-OfKv-nrT.js} +1 -1
  173. package/storybook-static/assets/{linear-dkJHgUri.js → linear-DhrdWH9x.js} +1 -1
  174. package/storybook-static/assets/{monotone-DHdPkfDP.js → monotone-DouxdRGd.js} +1 -1
  175. package/storybook-static/assets/{proxy-kI6f2DWO.js → proxy-CUfCpc2M.js} +1 -1
  176. package/storybook-static/assets/{react-18-BrpFS0dN.js → react-18-7-InEuKG.js} +1 -1
  177. package/storybook-static/assets/{react-three-fiber.esm-IUdAdhlX.js → react-three-fiber.esm-D8auPM-f.js} +1 -1
  178. package/storybook-static/assets/{search-C4-LKbEC.js → search-B-uMmupb.js} +1 -1
  179. package/storybook-static/assets/{settings-DTq0tcCA.js → settings-DSempBZ6.js} +1 -1
  180. package/storybook-static/assets/{sun-DPttwspc.js → sun-DmiR43p8.js} +1 -1
  181. package/storybook-static/assets/{transform-BKmuZieF.js → transform-QOf3tDlt.js} +1 -1
  182. package/storybook-static/assets/{trash-2-BtZ70InV.js → trash-2-Cv2Upoyz.js} +1 -1
  183. package/storybook-static/assets/{use-animation-frame-n9NDjnpE.js → use-animation-frame-BveKCpLW.js} +1 -1
  184. package/storybook-static/assets/{use-in-view-BdoFJdsB.js → use-in-view-DmuwqwED.js} +1 -1
  185. package/storybook-static/assets/{use-motion-value-B7WuPdBk.js → use-motion-value-DdLmNMGm.js} +1 -1
  186. package/storybook-static/assets/{use-spring-CiIl7xIy.js → use-spring-CYf3QXIz.js} +1 -1
  187. package/storybook-static/assets/{use-transform-fbMCilo3.js → use-transform-Cbq_kN5a.js} +1 -1
  188. package/storybook-static/assets/{useSound-D0jddJxs.js → useSound-C6xZ8qn8.js} +1 -1
  189. package/storybook-static/assets/{users-B9Qro682.js → users-BRQppT-i.js} +1 -1
  190. package/storybook-static/assets/{x-BBEombe_.js → x-B2tzyKY2.js} +1 -1
  191. package/storybook-static/iframe.html +1 -1
  192. package/storybook-static/index.json +1 -1
  193. package/storybook-static/project.json +1 -1
  194. package/storybook-static/assets/SleepChart.stories-BsnisMa9.js +0 -58
  195. package/storybook-static/assets/client-ukgowvey.js +0 -1
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ var dayjs = require('dayjs');
9
9
  var MobileTimePicker = require('@mui/x-date-pickers/MobileTimePicker');
10
10
  var LocalizationProvider = require('@mui/x-date-pickers/LocalizationProvider');
11
11
  var AdapterDayjs = require('@mui/x-date-pickers/AdapterDayjs');
12
- var styles$B = require('@mui/material/styles');
12
+ var styles$C = require('@mui/material/styles');
13
13
  var d3 = require('d3');
14
14
 
15
15
  function _interopNamespaceDefault(e) {
@@ -31,7 +31,7 @@ function _interopNamespaceDefault(e) {
31
31
 
32
32
  var d3__namespace = /*#__PURE__*/_interopNamespaceDefault(d3);
33
33
 
34
- var styles$A = {"button":"Button-module_button__c6nkW","primary":"Button-module_primary__pMqAs","secondary":"Button-module_secondary__mBWx9","outline":"Button-module_outline__NGGGN","ghost":"Button-module_ghost__u2QBF","danger":"Button-module_danger__2ewhr","small":"Button-module_small__ZI9RX","medium":"Button-module_medium__Wnf9t","large":"Button-module_large__cQCpA","fullWidth":"Button-module_fullWidth__N8vYg","loading":"Button-module_loading__hcSI4","spinner":"Button-module_spinner__HtM96","spin":"Button-module_spin__jblrj","iconLeft":"Button-module_iconLeft__Fpz-y","iconRight":"Button-module_iconRight__kTfjS"};
34
+ var styles$B = {"button":"Button-module_button__c6nkW","primary":"Button-module_primary__pMqAs","secondary":"Button-module_secondary__mBWx9","outline":"Button-module_outline__NGGGN","ghost":"Button-module_ghost__u2QBF","danger":"Button-module_danger__2ewhr","small":"Button-module_small__ZI9RX","medium":"Button-module_medium__Wnf9t","large":"Button-module_large__cQCpA","fullWidth":"Button-module_fullWidth__N8vYg","loading":"Button-module_loading__hcSI4","spinner":"Button-module_spinner__HtM96","spin":"Button-module_spin__jblrj","iconLeft":"Button-module_iconLeft__Fpz-y","iconRight":"Button-module_iconRight__kTfjS"};
35
35
 
36
36
  const SOUND_PACKS = {
37
37
  digital: {
@@ -596,11 +596,11 @@ function useComponentSound(config, options) {
596
596
  const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loading = false, iconLeft, iconRight, children, className = '', disabled, motionProps, soundConfig, onClick, onMouseEnter, onFocus, ...rest }) => {
597
597
  const { handlers } = useComponentSound(soundConfig);
598
598
  const buttonClasses = [
599
- styles$A.button,
600
- styles$A[variant],
601
- styles$A[size],
602
- fullWidth && styles$A.fullWidth,
603
- loading && styles$A.loading,
599
+ styles$B.button,
600
+ styles$B[variant],
601
+ styles$B[size],
602
+ fullWidth && styles$B.fullWidth,
603
+ loading && styles$B.loading,
604
604
  className
605
605
  ].filter(Boolean).join(' ');
606
606
  const handleClick = (e) => {
@@ -611,10 +611,10 @@ const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loadi
611
611
  handlers.onMouseEnter?.();
612
612
  onMouseEnter?.(e);
613
613
  };
614
- return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: handleClick, onMouseEnter: handleMouseEnter, onFocus: onFocus, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$A.spinner }), iconLeft && jsxRuntime.jsx("span", { className: styles$A.iconLeft, children: iconLeft }), children, iconRight && jsxRuntime.jsx("span", { className: styles$A.iconRight, children: iconRight })] }));
614
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: handleClick, onMouseEnter: handleMouseEnter, onFocus: onFocus, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$B.spinner }), iconLeft && jsxRuntime.jsx("span", { className: styles$B.iconLeft, children: iconLeft }), children, iconRight && jsxRuntime.jsx("span", { className: styles$B.iconRight, children: iconRight })] }));
615
615
  };
616
616
 
617
- var styles$z = {"card":"Card-module_card__r2DB2","hoverable":"Card-module_hoverable__X3OpS","elevated":"Card-module_elevated__hGV6-","outlined":"Card-module_outlined__ngRag","flat":"Card-module_flat__xy-xt","glass":"Card-module_glass__Sv-Vs","imageContainer":"Card-module_imageContainer__L4ma6","image":"Card-module_image__bQBt6","header":"Card-module_header__0dtj3","headerContent":"Card-module_headerContent__W7-jD","expandButton":"Card-module_expandButton__I7f49","expandIcon":"Card-module_expandIcon__Lu-OY","expandableContent":"Card-module_expandableContent__BFgO5","expandable":"Card-module_expandable__GMXzo","body":"Card-module_body__K7eL3","footer":"Card-module_footer__L5wO-","title":"Card-module_title__pW9g8","subtitle":"Card-module_subtitle__gejH4","clickable":"Card-module_clickable__Y6fm8","padding":"Card-module_padding__wtyDo","noPadding":"Card-module_noPadding__r5Qq0","loading":"Card-module_loading__S4Wng","loadingShimmer":"Card-module_loadingShimmer__Q1Osr","loadingPulse":"Card-module_loadingPulse__bXQmC"};
617
+ var styles$A = {"card":"Card-module_card__r2DB2","hoverable":"Card-module_hoverable__X3OpS","elevated":"Card-module_elevated__hGV6-","outlined":"Card-module_outlined__ngRag","flat":"Card-module_flat__xy-xt","glass":"Card-module_glass__Sv-Vs","imageContainer":"Card-module_imageContainer__L4ma6","image":"Card-module_image__bQBt6","header":"Card-module_header__0dtj3","headerContent":"Card-module_headerContent__W7-jD","expandButton":"Card-module_expandButton__I7f49","expandIcon":"Card-module_expandIcon__Lu-OY","expandableContent":"Card-module_expandableContent__BFgO5","expandable":"Card-module_expandable__GMXzo","body":"Card-module_body__K7eL3","footer":"Card-module_footer__L5wO-","title":"Card-module_title__pW9g8","subtitle":"Card-module_subtitle__gejH4","clickable":"Card-module_clickable__Y6fm8","padding":"Card-module_padding__wtyDo","noPadding":"Card-module_noPadding__r5Qq0","loading":"Card-module_loading__S4Wng","loadingShimmer":"Card-module_loadingShimmer__Q1Osr","loadingPulse":"Card-module_loadingPulse__bXQmC"};
618
618
 
619
619
  /**
620
620
  * Card Component
@@ -679,28 +679,28 @@ const Card = ({ variant = 'elevated', hoverable = false, clickable = false, padd
679
679
  onExpandChange?.(newExpanded);
680
680
  };
681
681
  const cardClasses = [
682
- styles$z.card,
683
- styles$z[variant],
684
- hoverable && styles$z.hoverable,
685
- clickable && styles$z.clickable,
686
- !padding && styles$z.noPadding,
687
- expandable && styles$z.expandable,
682
+ styles$A.card,
683
+ styles$A[variant],
684
+ hoverable && styles$A.hoverable,
685
+ clickable && styles$A.clickable,
686
+ !padding && styles$A.noPadding,
687
+ expandable && styles$A.expandable,
688
688
  className
689
689
  ].filter(Boolean).join(' ');
690
690
  const renderHeader = () => {
691
691
  if (header) {
692
- return (jsxRuntime.jsxs("div", { className: styles$z.header, children: [jsxRuntime.jsx("div", { className: styles$z.headerContent, children: header }), expandable && (jsxRuntime.jsx("button", { className: styles$z.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$z.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
692
+ return (jsxRuntime.jsxs("div", { className: styles$A.header, children: [jsxRuntime.jsx("div", { className: styles$A.headerContent, children: header }), expandable && (jsxRuntime.jsx("button", { className: styles$A.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$A.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
693
693
  }
694
694
  if (title || subtitle) {
695
- return (jsxRuntime.jsxs("div", { className: styles$z.header, children: [jsxRuntime.jsxs("div", { className: styles$z.headerContent, children: [title && jsxRuntime.jsx("h3", { className: styles$z.title, children: title }), subtitle && jsxRuntime.jsx("p", { className: styles$z.subtitle, children: subtitle })] }), expandable && (jsxRuntime.jsx("button", { className: styles$z.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$z.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
695
+ return (jsxRuntime.jsxs("div", { className: styles$A.header, children: [jsxRuntime.jsxs("div", { className: styles$A.headerContent, children: [title && jsxRuntime.jsx("h3", { className: styles$A.title, children: title }), subtitle && jsxRuntime.jsx("p", { className: styles$A.subtitle, children: subtitle })] }), expandable && (jsxRuntime.jsx("button", { className: styles$A.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$A.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
696
696
  }
697
697
  return null;
698
698
  };
699
- const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$z.imageContainer, children: jsxRuntime.jsx("img", { src: image, alt: imageAlt, className: styles$z.image }) })), renderHeader(), jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: (!expandable || isExpanded) && (jsxRuntime.jsxs(framerMotion.motion.div, { initial: expandable ? { height: 0, opacity: 0 } : undefined, animate: expandable ? { height: 'auto', opacity: 1 } : undefined, exit: expandable ? { height: 0, opacity: 0 } : undefined, transition: { duration: 0.3, ease: "easeInOut" }, className: styles$z.expandableContent, children: [children && (jsxRuntime.jsx("div", { className: padding ? styles$z.body : undefined, children: children })), footer && jsxRuntime.jsx("div", { className: styles$z.footer, children: footer })] }, "content")) })] }));
699
+ const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$A.imageContainer, children: jsxRuntime.jsx("img", { src: image, alt: imageAlt, className: styles$A.image }) })), renderHeader(), jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: (!expandable || isExpanded) && (jsxRuntime.jsxs(framerMotion.motion.div, { initial: expandable ? { height: 0, opacity: 0 } : undefined, animate: expandable ? { height: 'auto', opacity: 1 } : undefined, exit: expandable ? { height: 0, opacity: 0 } : undefined, transition: { duration: 0.3, ease: "easeInOut" }, className: styles$A.expandableContent, children: [children && (jsxRuntime.jsx("div", { className: padding ? styles$A.body : undefined, children: children })), footer && jsxRuntime.jsx("div", { className: styles$A.footer, children: footer })] }, "content")) })] }));
700
700
  return (jsxRuntime.jsx(framerMotion.motion.div, { className: cardClasses, onClick: clickable ? onClick : undefined, whileHover: hoverable ? { y: -4 } : undefined, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: cardContent }));
701
701
  };
702
702
 
703
- var styles$y = {"wrapper":"EmptyState-module_wrapper__h3Y2E","compact":"EmptyState-module_compact__HdYu1","default":"EmptyState-module_default__ACAbn","large":"EmptyState-module_large__H3ELo","icon":"EmptyState-module_icon__i7-3M","title":"EmptyState-module_title__xCyfH","message":"EmptyState-module_message__Bc5xK","action":"EmptyState-module_action__UpnvZ"};
703
+ var styles$z = {"wrapper":"EmptyState-module_wrapper__h3Y2E","compact":"EmptyState-module_compact__HdYu1","default":"EmptyState-module_default__ACAbn","large":"EmptyState-module_large__H3ELo","icon":"EmptyState-module_icon__i7-3M","title":"EmptyState-module_title__xCyfH","message":"EmptyState-module_message__Bc5xK","action":"EmptyState-module_action__UpnvZ"};
704
704
 
705
705
  /**
706
706
  * EmptyState Component
@@ -737,11 +737,11 @@ var styles$y = {"wrapper":"EmptyState-module_wrapper__h3Y2E","compact":"EmptySta
737
737
  * @returns {JSX.Element} The rendered EmptyState component
738
738
  */
739
739
  const EmptyState = ({ icon, title, message, action, size = 'default', }) => {
740
- const wrapperClass = [styles$y.wrapper, styles$y[size]].filter(Boolean).join(' ');
741
- return (jsxRuntime.jsxs("div", { className: wrapperClass, children: [icon && jsxRuntime.jsx("div", { className: styles$y.icon, children: icon }), title && jsxRuntime.jsx("h3", { className: styles$y.title, children: title }), jsxRuntime.jsx("p", { className: styles$y.message, children: message }), action && jsxRuntime.jsx("div", { className: styles$y.action, children: action })] }));
740
+ const wrapperClass = [styles$z.wrapper, styles$z[size]].filter(Boolean).join(' ');
741
+ return (jsxRuntime.jsxs("div", { className: wrapperClass, children: [icon && jsxRuntime.jsx("div", { className: styles$z.icon, children: icon }), title && jsxRuntime.jsx("h3", { className: styles$z.title, children: title }), jsxRuntime.jsx("p", { className: styles$z.message, children: message }), action && jsxRuntime.jsx("div", { className: styles$z.action, children: action })] }));
742
742
  };
743
743
 
744
- var styles$x = {"backdrop":"Modal-module_backdrop__yOx-a","dialog":"Modal-module_dialog__yEXTq","dialogCompact":"Modal-module_dialogCompact__z1Wxp","dialogWide":"Modal-module_dialogWide__9PTXK","header":"Modal-module_header__NHHKd","title":"Modal-module_title__i3R0x","headerActions":"Modal-module_headerActions__g28UN","closeButton":"Modal-module_closeButton__siC-1","body":"Modal-module_body__U7jvM","bodyFlush":"Modal-module_bodyFlush__wtk3q"};
744
+ var styles$y = {"backdrop":"Modal-module_backdrop__yOx-a","dialog":"Modal-module_dialog__yEXTq","dialogCompact":"Modal-module_dialogCompact__z1Wxp","dialogWide":"Modal-module_dialogWide__9PTXK","header":"Modal-module_header__NHHKd","title":"Modal-module_title__i3R0x","headerActions":"Modal-module_headerActions__g28UN","closeButton":"Modal-module_closeButton__siC-1","body":"Modal-module_body__U7jvM","bodyFlush":"Modal-module_bodyFlush__wtk3q"};
745
745
 
746
746
  /**
747
747
  * Modal Component
@@ -795,16 +795,16 @@ const Modal = ({ open, title, onClose, children, size = 'default', actions, padd
795
795
  if (typeof document === 'undefined')
796
796
  return null;
797
797
  const dialogClass = [
798
- styles$x.dialog,
799
- size === 'compact' && styles$x.dialogCompact,
800
- size === 'wide' && styles$x.dialogWide,
798
+ styles$y.dialog,
799
+ size === 'compact' && styles$y.dialogCompact,
800
+ size === 'wide' && styles$y.dialogWide,
801
801
  ]
802
802
  .filter(Boolean)
803
803
  .join(' ');
804
- return reactDom.createPortal(jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$x.backdrop, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.15 }, onClick: onClose, "aria-hidden": "true", children: jsxRuntime.jsxs(framerMotion.motion.div, { className: dialogClass, role: "dialog", "aria-modal": "true", "aria-label": title, initial: { opacity: 0, scale: 0.96, y: 8 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.96, y: 8 }, transition: { duration: 0.15, ease: 'easeOut' }, onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("div", { className: styles$x.header, children: [jsxRuntime.jsx("span", { className: styles$x.title, children: title }), actions && jsxRuntime.jsx("div", { className: styles$x.headerActions, children: actions }), jsxRuntime.jsx("button", { className: styles$x.closeButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: jsxRuntime.jsx(lucideReact.X, { size: 16 }) })] }), jsxRuntime.jsx("div", { className: padding ? styles$x.body : styles$x.bodyFlush, children: children })] }) })) }), document.body);
804
+ return reactDom.createPortal(jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$y.backdrop, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.15 }, onClick: onClose, "aria-hidden": "true", children: jsxRuntime.jsxs(framerMotion.motion.div, { className: dialogClass, role: "dialog", "aria-modal": "true", "aria-label": title, initial: { opacity: 0, scale: 0.96, y: 8 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.96, y: 8 }, transition: { duration: 0.15, ease: 'easeOut' }, onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("div", { className: styles$y.header, children: [jsxRuntime.jsx("span", { className: styles$y.title, children: title }), actions && jsxRuntime.jsx("div", { className: styles$y.headerActions, children: actions }), jsxRuntime.jsx("button", { className: styles$y.closeButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: jsxRuntime.jsx(lucideReact.X, { size: 16 }) })] }), jsxRuntime.jsx("div", { className: padding ? styles$y.body : styles$y.bodyFlush, children: children })] }) })) }), document.body);
805
805
  };
806
806
 
807
- var styles$w = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
807
+ var styles$x = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
808
808
 
809
809
  /**
810
810
  * Checkbox component - Modern interactive checkbox with animations
@@ -849,13 +849,13 @@ const Checkbox = ({ checked, onChange, label, disabled = false, indeterminate =
849
849
  checkboxRef.current.indeterminate = indeterminate;
850
850
  }
851
851
  }, [indeterminate]);
852
- return (jsxRuntime.jsxs("label", { className: styles$w.checkboxLabel, children: [jsxRuntime.jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => {
852
+ return (jsxRuntime.jsxs("label", { className: styles$x.checkboxLabel, children: [jsxRuntime.jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => {
853
853
  const isChecked = e.target.checked;
854
854
  onChange(isChecked);
855
855
  if (soundConfig?.onClick !== false) {
856
856
  playSound('toggle');
857
857
  }
858
- }, className: styles$w.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsxRuntime.jsx("span", { className: styles$w.checkboxText, children: label })] }));
858
+ }, className: styles$x.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsxRuntime.jsx("span", { className: styles$x.checkboxText, children: label })] }));
859
859
  };
860
860
 
861
861
  const formatDateToEuropean = (date) => {
@@ -886,7 +886,7 @@ const parseEuropeanDate = (dateString) => {
886
886
  return '';
887
887
  };
888
888
 
889
- var styles$v = {"dateInput":"DateInput-module_dateInput__54VPD","label":"DateInput-module_label__yDdUw","inputWrapper":"DateInput-module_inputWrapper__x-r1d","textInput":"DateInput-module_textInput__ToOSX","calendarButton":"DateInput-module_calendarButton__JzDGD","hiddenDateInput":"DateInput-module_hiddenDateInput__IWNg3","error":"DateInput-module_error__ieuPO","success":"DateInput-module_success__rPA93","loading":"DateInput-module_loading__1DAmD"};
889
+ var styles$w = {"dateInput":"DateInput-module_dateInput__54VPD","label":"DateInput-module_label__yDdUw","inputWrapper":"DateInput-module_inputWrapper__x-r1d","textInput":"DateInput-module_textInput__ToOSX","calendarButton":"DateInput-module_calendarButton__JzDGD","hiddenDateInput":"DateInput-module_hiddenDateInput__IWNg3","error":"DateInput-module_error__ieuPO","success":"DateInput-module_success__rPA93","loading":"DateInput-module_loading__1DAmD"};
890
890
 
891
891
  /**
892
892
  * DateInput component - European format date picker with manual input support
@@ -975,19 +975,19 @@ function DateInput({ label, value, onChange, placeholder = "25/12/2024", onFocus
975
975
  }
976
976
  };
977
977
  const getClassName = () => {
978
- const classes = [styles$v.dateInput];
978
+ const classes = [styles$w.dateInput];
979
979
  if (error)
980
- classes.push(styles$v.error);
980
+ classes.push(styles$w.error);
981
981
  if (success)
982
- classes.push(styles$v.success);
982
+ classes.push(styles$w.success);
983
983
  if (loading)
984
- classes.push(styles$v.loading);
984
+ classes.push(styles$w.loading);
985
985
  return classes.join(' ');
986
986
  };
987
- return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsx("label", { className: styles$v.label, children: label }), jsxRuntime.jsxs("div", { className: styles$v.inputWrapper, children: [jsxRuntime.jsx("input", { type: "text", value: value.includes('-') ? formatDateToEuropean(value) : value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$v.textInput, disabled: disabled || loading, ...handlers }), jsxRuntime.jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$v.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsxRuntime.jsx(lucideReact.Calendar, {}) }), jsxRuntime.jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$v.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
987
+ return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsx("label", { className: styles$w.label, children: label }), jsxRuntime.jsxs("div", { className: styles$w.inputWrapper, children: [jsxRuntime.jsx("input", { type: "text", value: value.includes('-') ? formatDateToEuropean(value) : value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$w.textInput, disabled: disabled || loading, ...handlers }), jsxRuntime.jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$w.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsxRuntime.jsx(lucideReact.Calendar, {}) }), jsxRuntime.jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$w.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
988
988
  }
989
989
 
990
- var styles$u = {"searchableDropdown":"SearchableDropdown-module_searchableDropdown__S2Nh5","dropdownTrigger":"SearchableDropdown-module_dropdownTrigger__dihdr","open":"SearchableDropdown-module_open__P7mRt","dropdownValue":"SearchableDropdown-module_dropdownValue__ydrc2","placeholder":"SearchableDropdown-module_placeholder__BwM2W","dropdownArrow":"SearchableDropdown-module_dropdownArrow__yd5fp","dropdownMenu":"SearchableDropdown-module_dropdownMenu__2Z5cc","dropdownSearch":"SearchableDropdown-module_dropdownSearch__NRk7j","searchInput":"SearchableDropdown-module_searchInput__VS2Hw","searchIcon":"SearchableDropdown-module_searchIcon__2vKFF","dropdownOptions":"SearchableDropdown-module_dropdownOptions__6YXqF","dropdownOption":"SearchableDropdown-module_dropdownOption__YwDr-","selected":"SearchableDropdown-module_selected__31JeB","highlighted":"SearchableDropdown-module_highlighted__P0bBq","checkIcon":"SearchableDropdown-module_checkIcon__YxowK","dropdownNoResults":"SearchableDropdown-module_dropdownNoResults__WW-Da","loading":"SearchableDropdown-module_loading__xlYf0"};
990
+ var styles$v = {"searchableDropdown":"SearchableDropdown-module_searchableDropdown__S2Nh5","dropdownTrigger":"SearchableDropdown-module_dropdownTrigger__dihdr","open":"SearchableDropdown-module_open__P7mRt","dropdownValue":"SearchableDropdown-module_dropdownValue__ydrc2","placeholder":"SearchableDropdown-module_placeholder__BwM2W","dropdownArrow":"SearchableDropdown-module_dropdownArrow__yd5fp","dropdownMenu":"SearchableDropdown-module_dropdownMenu__2Z5cc","dropdownSearch":"SearchableDropdown-module_dropdownSearch__NRk7j","searchInput":"SearchableDropdown-module_searchInput__VS2Hw","searchIcon":"SearchableDropdown-module_searchIcon__2vKFF","dropdownOptions":"SearchableDropdown-module_dropdownOptions__6YXqF","dropdownOption":"SearchableDropdown-module_dropdownOption__YwDr-","selected":"SearchableDropdown-module_selected__31JeB","highlighted":"SearchableDropdown-module_highlighted__P0bBq","checkIcon":"SearchableDropdown-module_checkIcon__YxowK","dropdownNoResults":"SearchableDropdown-module_dropdownNoResults__WW-Da","loading":"SearchableDropdown-module_loading__xlYf0"};
991
991
 
992
992
  /**
993
993
  * SearchableDropdown component - Modern filterable dropdown with animations
@@ -1092,23 +1092,23 @@ function SearchableDropdown({ label, value, onChange, options, placeholder = "Se
1092
1092
  }
1093
1093
  };
1094
1094
  const getTriggerClassName = () => {
1095
- const classes = [styles$u.dropdownTrigger];
1095
+ const classes = [styles$v.dropdownTrigger];
1096
1096
  if (isOpen)
1097
- classes.push(styles$u.open);
1097
+ classes.push(styles$v.open);
1098
1098
  if (loading)
1099
- classes.push(styles$u.loading);
1099
+ classes.push(styles$v.loading);
1100
1100
  if (error)
1101
- classes.push(styles$u.error);
1101
+ classes.push(styles$v.error);
1102
1102
  return classes.join(' ');
1103
1103
  };
1104
- return (jsxRuntime.jsxs("div", { className: styles$u.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsxRuntime.jsx("label", { children: label }), jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsxRuntime.jsx("span", { className: `${styles$u.dropdownValue} ${!displayValue ? styles$u.placeholder : ''}`, children: displayValue || placeholder }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$u.dropdownArrow })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isOpen && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$u.dropdownMenu, initial: { opacity: 0, y: -10, scale: 0.95 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: -10, scale: 0.95 }, transition: { duration: 0.2, ease: "easeOut" }, children: [jsxRuntime.jsxs("div", { className: styles$u.dropdownSearch, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$u.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", className: styles$u.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxRuntime.jsxs("div", { className: styles$u.dropdownOptions, children: [allOptions.map((opt, index) => {
1104
+ return (jsxRuntime.jsxs("div", { className: styles$v.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsxRuntime.jsx("label", { children: label }), jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsxRuntime.jsx("span", { className: `${styles$v.dropdownValue} ${!displayValue ? styles$v.placeholder : ''}`, children: displayValue || placeholder }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$v.dropdownArrow })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isOpen && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$v.dropdownMenu, initial: { opacity: 0, y: -10, scale: 0.95 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: -10, scale: 0.95 }, transition: { duration: 0.2, ease: "easeOut" }, children: [jsxRuntime.jsxs("div", { className: styles$v.dropdownSearch, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$v.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", className: styles$v.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxRuntime.jsxs("div", { className: styles$v.dropdownOptions, children: [allOptions.map((opt, index) => {
1105
1105
  const isSelected = value === opt.value;
1106
1106
  const isHighlighted = highlightedIndex === index;
1107
- return (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: `${styles$u.dropdownOption} ${isSelected ? styles$u.selected : ''} ${isHighlighted ? styles$u.highlighted : ''}`, onClick: () => handleSelect(opt.value), onMouseEnter: () => setHighlightedIndex(index), initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.02 }, whileTap: { scale: 0.98 }, style: { willChange: 'transform' }, children: [jsxRuntime.jsx("span", { children: opt.label }), isSelected && jsxRuntime.jsx(lucideReact.Check, { className: styles$u.checkIcon })] }, `${opt.value}-${index}`));
1108
- }), allOptions.length === 0 && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$u.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
1107
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: `${styles$v.dropdownOption} ${isSelected ? styles$v.selected : ''} ${isHighlighted ? styles$v.highlighted : ''}`, onClick: () => handleSelect(opt.value), onMouseEnter: () => setHighlightedIndex(index), initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.02 }, whileTap: { scale: 0.98 }, style: { willChange: 'transform' }, children: [jsxRuntime.jsx("span", { children: opt.label }), isSelected && jsxRuntime.jsx(lucideReact.Check, { className: styles$v.checkIcon })] }, `${opt.value}-${index}`));
1108
+ }), allOptions.length === 0 && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$v.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
1109
1109
  }
1110
1110
 
1111
- var styles$t = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWrapper":"SelectInput-module_selectWrapper__Qr4pl","selectIcon":"SelectInput-module_selectIcon__9pjhf","error":"SelectInput-module_error__3WNJc","success":"SelectInput-module_success__WJ5ga","loading":"SelectInput-module_loading__n35N9"};
1111
+ var styles$u = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWrapper":"SelectInput-module_selectWrapper__Qr4pl","selectIcon":"SelectInput-module_selectIcon__9pjhf","error":"SelectInput-module_error__3WNJc","success":"SelectInput-module_success__WJ5ga","loading":"SelectInput-module_loading__n35N9"};
1112
1112
 
1113
1113
  /**
1114
1114
  * SelectInput component - Styled dropdown selector with flexible option format
@@ -1146,26 +1146,26 @@ var styles$t = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWra
1146
1146
  function SelectInput({ label, value, onChange, options, placeholder = "Select...", disabled = false, error = false, success = false, loading = false, required = false, soundConfig, className }) {
1147
1147
  const { handlers, playSound } = useComponentSound(soundConfig);
1148
1148
  const getClassName = () => {
1149
- const classes = [styles$t.selectInput];
1149
+ const classes = [styles$u.selectInput];
1150
1150
  if (error)
1151
- classes.push(styles$t.error);
1151
+ classes.push(styles$u.error);
1152
1152
  if (success)
1153
- classes.push(styles$t.success);
1153
+ classes.push(styles$u.success);
1154
1154
  if (loading)
1155
- classes.push(styles$t.loading);
1155
+ classes.push(styles$u.loading);
1156
1156
  return classes.join(' ');
1157
1157
  };
1158
- return (jsxRuntime.jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsxs("label", { children: [label, required && jsxRuntime.jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxRuntime.jsxs("div", { className: styles$t.selectWrapper, children: [jsxRuntime.jsxs("select", { value: value, onChange: e => {
1158
+ return (jsxRuntime.jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsxs("label", { children: [label, required && jsxRuntime.jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxRuntime.jsxs("div", { className: styles$u.selectWrapper, children: [jsxRuntime.jsxs("select", { value: value, onChange: e => {
1159
1159
  playSound('click');
1160
1160
  onChange(e.target.value);
1161
1161
  }, disabled: disabled || loading, required: required, ...handlers, children: [jsxRuntime.jsx("option", { value: "", children: placeholder }), options.map(opt => {
1162
1162
  const optionValue = typeof opt === 'string' ? opt : opt.value;
1163
1163
  const optionLabel = typeof opt === 'string' ? opt : opt.label;
1164
1164
  return (jsxRuntime.jsx("option", { value: optionValue, children: optionLabel }, optionValue));
1165
- })] }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$t.selectIcon })] })] }));
1165
+ })] }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$u.selectIcon })] })] }));
1166
1166
  }
1167
1167
 
1168
- var styles$s = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","compact":"TextArea-module_compact__U5lPn","textareaLabel":"TextArea-module_textareaLabel__7Vmyx","requiredIndicator":"TextArea-module_requiredIndicator__3Fxyy","textareaInput":"TextArea-module_textareaInput__VCDZA","characterCount":"TextArea-module_characterCount__9FO5N","nearLimit":"TextArea-module_nearLimit__cUdnw","atLimit":"TextArea-module_atLimit__GoWCC","error":"TextArea-module_error__ciHgb","success":"TextArea-module_success__a0-xD","loading":"TextArea-module_loading__CSFBR","focusMode":"TextArea-module_focusMode__9A8U-"};
1168
+ var styles$t = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","compact":"TextArea-module_compact__U5lPn","textareaLabel":"TextArea-module_textareaLabel__7Vmyx","requiredIndicator":"TextArea-module_requiredIndicator__3Fxyy","textareaInput":"TextArea-module_textareaInput__VCDZA","characterCount":"TextArea-module_characterCount__9FO5N","nearLimit":"TextArea-module_nearLimit__cUdnw","atLimit":"TextArea-module_atLimit__GoWCC","error":"TextArea-module_error__ciHgb","success":"TextArea-module_success__a0-xD","loading":"TextArea-module_loading__CSFBR","focusMode":"TextArea-module_focusMode__9A8U-"};
1169
1169
 
1170
1170
  /**
1171
1171
  * TextArea component - Multi-line text input with character counting
@@ -1200,38 +1200,38 @@ var styles$s = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","
1200
1200
  function TextArea({ label, value, onChange, rows = 5, placeholder = "", required = false, maxLength, disabled = false, error = false, success = false, loading = false, focusMode = false, compact = false, className = "" }) {
1201
1201
  const textareaId = `textarea-${Math.random().toString(36).substr(2, 9)}`;
1202
1202
  const getContainerClassName = () => {
1203
- const classes = [styles$s.textareaContainer];
1203
+ const classes = [styles$t.textareaContainer];
1204
1204
  if (error)
1205
- classes.push(styles$s.error);
1205
+ classes.push(styles$t.error);
1206
1206
  if (success)
1207
- classes.push(styles$s.success);
1207
+ classes.push(styles$t.success);
1208
1208
  if (loading)
1209
- classes.push(styles$s.loading);
1209
+ classes.push(styles$t.loading);
1210
1210
  if (focusMode)
1211
- classes.push(styles$s.focusMode);
1211
+ classes.push(styles$t.focusMode);
1212
1212
  if (compact)
1213
- classes.push(styles$s.compact);
1213
+ classes.push(styles$t.compact);
1214
1214
  if (className)
1215
1215
  classes.push(className);
1216
1216
  return classes.join(' ');
1217
1217
  };
1218
1218
  const getCharCountClassName = () => {
1219
1219
  if (!maxLength)
1220
- return styles$s.characterCount;
1221
- const classes = [styles$s.characterCount];
1220
+ return styles$t.characterCount;
1221
+ const classes = [styles$t.characterCount];
1222
1222
  const percentage = (value.length / maxLength) * 100;
1223
1223
  if (percentage >= 100) {
1224
- classes.push(styles$s.atLimit);
1224
+ classes.push(styles$t.atLimit);
1225
1225
  }
1226
1226
  else if (percentage >= 80) {
1227
- classes.push(styles$s.nearLimit);
1227
+ classes.push(styles$t.nearLimit);
1228
1228
  }
1229
1229
  return classes.join(' ');
1230
1230
  };
1231
- return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { htmlFor: textareaId, className: styles$s.textareaLabel, children: [label, required && jsxRuntime.jsx("span", { className: styles$s.requiredIndicator, children: "*" })] })), jsxRuntime.jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, maxLength: maxLength, className: styles$s.textareaInput, "aria-required": required, disabled: disabled || loading, "aria-invalid": error }), maxLength && (jsxRuntime.jsxs("div", { className: getCharCountClassName(), children: [jsxRuntime.jsx("span", { children: value.length }), jsxRuntime.jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsxRuntime.jsx("span", { children: maxLength })] }))] }));
1231
+ return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { htmlFor: textareaId, className: styles$t.textareaLabel, children: [label, required && jsxRuntime.jsx("span", { className: styles$t.requiredIndicator, children: "*" })] })), jsxRuntime.jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, maxLength: maxLength, className: styles$t.textareaInput, "aria-required": required, disabled: disabled || loading, "aria-invalid": error }), maxLength && (jsxRuntime.jsxs("div", { className: getCharCountClassName(), children: [jsxRuntime.jsx("span", { children: value.length }), jsxRuntime.jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsxRuntime.jsx("span", { children: maxLength })] }))] }));
1232
1232
  }
1233
1233
 
1234
- var styles$r = {"textInput":"TextInput-module_textInput__b2LVM","required":"TextInput-module_required__7uLiM","inputError":"TextInput-module_inputError__QD0a-","errorMessage":"TextInput-module_errorMessage__nIDoQ","success":"TextInput-module_success__KbSS3","loading":"TextInput-module_loading__qXaca","withIcon":"TextInput-module_withIcon__-8swm","inputIcon":"TextInput-module_inputIcon__B4czN","withAction":"TextInput-module_withAction__JD3ku","actionButton":"TextInput-module_actionButton__zFJel"};
1234
+ var styles$s = {"textInput":"TextInput-module_textInput__b2LVM","required":"TextInput-module_required__7uLiM","inputError":"TextInput-module_inputError__QD0a-","errorMessage":"TextInput-module_errorMessage__nIDoQ","success":"TextInput-module_success__KbSS3","loading":"TextInput-module_loading__qXaca","withIcon":"TextInput-module_withIcon__-8swm","inputIcon":"TextInput-module_inputIcon__B4czN","withAction":"TextInput-module_withAction__JD3ku","actionButton":"TextInput-module_actionButton__zFJel"};
1235
1235
 
1236
1236
  /**
1237
1237
  * TextInput component - A versatile text input field with label and error handling
@@ -1268,21 +1268,21 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
1268
1268
  const { handlers, playSound } = useComponentSound(soundConfig);
1269
1269
  const prevValueRef = React.useRef(value);
1270
1270
  const getContainerClassName = () => {
1271
- const classes = [styles$r.textInput];
1271
+ const classes = [styles$s.textInput];
1272
1272
  if (success)
1273
- classes.push(styles$r.success);
1273
+ classes.push(styles$s.success);
1274
1274
  if (loading)
1275
- classes.push(styles$r.loading);
1275
+ classes.push(styles$s.loading);
1276
1276
  if (icon)
1277
- classes.push(styles$r.withIcon);
1277
+ classes.push(styles$s.withIcon);
1278
1278
  if (actionButton)
1279
- classes.push(styles$r.withAction);
1279
+ classes.push(styles$s.withAction);
1280
1280
  return classes.join(' ');
1281
1281
  };
1282
1282
  React.useEffect(() => {
1283
1283
  prevValueRef.current = value;
1284
1284
  }, [value]);
1285
- return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { className: styles$r.required, children: "*" })] }), jsxRuntime.jsxs("div", { style: { position: 'relative' }, children: [icon && jsxRuntime.jsx("div", { className: styles$r.inputIcon, children: icon }), jsxRuntime.jsx("input", { id: inputId, type: type, value: value, onChange: (e) => {
1285
+ return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { className: styles$s.required, children: "*" })] }), jsxRuntime.jsxs("div", { style: { position: 'relative' }, children: [icon && jsxRuntime.jsx("div", { className: styles$s.inputIcon, children: icon }), jsxRuntime.jsx("input", { id: inputId, type: type, value: value, onChange: (e) => {
1286
1286
  const newValue = e.target.value;
1287
1287
  const oldValue = prevValueRef.current;
1288
1288
  onChange(newValue);
@@ -1298,13 +1298,13 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
1298
1298
  if (error && soundConfig?.onError) {
1299
1299
  playSound(typeof soundConfig.onError === 'string' ? soundConfig.onError : 'error');
1300
1300
  }
1301
- }, onBlur: onBlur, placeholder: placeholder, className: error ? styles$r.inputError : '', "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : undefined, disabled: disabled || loading, maxLength: maxLength, autoComplete: autoComplete }), actionButton && (jsxRuntime.jsx("button", { type: "button", className: styles$r.actionButton, onClick: () => {
1301
+ }, onBlur: onBlur, placeholder: placeholder, className: error ? styles$s.inputError : '', "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : undefined, disabled: disabled || loading, maxLength: maxLength, autoComplete: autoComplete }), actionButton && (jsxRuntime.jsx("button", { type: "button", className: styles$s.actionButton, onClick: () => {
1302
1302
  handlers.onClick?.();
1303
1303
  actionButton.onClick();
1304
- }, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsxRuntime.jsx("span", { id: `${inputId}-error`, className: styles$r.errorMessage, children: error }))] }));
1304
+ }, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsxRuntime.jsx("span", { id: `${inputId}-error`, className: styles$s.errorMessage, children: error }))] }));
1305
1305
  }
1306
1306
 
1307
- var styles$q = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
1307
+ var styles$r = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
1308
1308
 
1309
1309
  /**
1310
1310
  * Toggle Component
@@ -1365,7 +1365,7 @@ function Toggle(props) {
1365
1365
  justifyContent: 'center',
1366
1366
  ...style
1367
1367
  };
1368
- return (jsxRuntime.jsxs("div", { className: `${styles$q.toggleContainer} ${className || ''}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { ref: leftButtonRef, className: `${styles$q.toggleButton} ${!isOn ? styles$q.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
1368
+ return (jsxRuntime.jsxs("div", { className: `${styles$r.toggleContainer} ${className || ''}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { ref: leftButtonRef, className: `${styles$r.toggleButton} ${!isOn ? styles$r.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
1369
1369
  if (!isOn) {
1370
1370
  // Already on left
1371
1371
  if (enableCelebration) {
@@ -1380,7 +1380,7 @@ function Toggle(props) {
1380
1380
  playSound('toggle');
1381
1381
  }
1382
1382
  onToggle(false);
1383
- }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxRuntime.jsxs(framerMotion.motion.button, { ref: rightButtonRef, className: `${styles$q.toggleButton} ${isOn ? styles$q.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
1383
+ }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxRuntime.jsxs(framerMotion.motion.button, { ref: rightButtonRef, className: `${styles$r.toggleButton} ${isOn ? styles$r.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
1384
1384
  if (isOn) {
1385
1385
  // Already on right
1386
1386
  if (enableCelebration) {
@@ -1398,7 +1398,7 @@ function Toggle(props) {
1398
1398
  }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: isOn ? 1.1 : 1, rotate: isOn ? [0, 5, -5, 0] : 0 }, transition: { duration: 0.3 }, children: rightIcon }), rightLabel] })] }));
1399
1399
  }
1400
1400
 
1401
- var styles$p = {"container":"NumberStepper-module_container__WSGlU","header":"NumberStepper-module_header__qXI1Y","icon":"NumberStepper-module_icon__vHgsw","label":"NumberStepper-module_label__AYr3g","stepper":"NumberStepper-module_stepper__oQhTp","disabled":"NumberStepper-module_disabled__kGB-g","button":"NumberStepper-module_button__YcjRt","buttonIcon":"NumberStepper-module_buttonIcon__odXec","valueContainer":"NumberStepper-module_valueContainer__87w2D","valueWrapper":"NumberStepper-module_valueWrapper__TH65N","value":"NumberStepper-module_value__BxJeD","limits":"NumberStepper-module_limits__-UrRE","limit":"NumberStepper-module_limit__7nbIP","small":"NumberStepper-module_small__P-k96","large":"NumberStepper-module_large__Lz6lk","outlined":"NumberStepper-module_outlined__CIXv7","filled":"NumberStepper-module_filled__IxOg-","minimal":"NumberStepper-module_minimal__y47-W","custom":"NumberStepper-module_custom__XGSVg","vertical":"NumberStepper-module_vertical__nBcL7","pulse":"NumberStepper-module_pulse__51oUo"};
1401
+ var styles$q = {"container":"NumberStepper-module_container__WSGlU","header":"NumberStepper-module_header__qXI1Y","icon":"NumberStepper-module_icon__vHgsw","label":"NumberStepper-module_label__AYr3g","stepper":"NumberStepper-module_stepper__oQhTp","disabled":"NumberStepper-module_disabled__kGB-g","button":"NumberStepper-module_button__YcjRt","buttonIcon":"NumberStepper-module_buttonIcon__odXec","valueContainer":"NumberStepper-module_valueContainer__87w2D","valueWrapper":"NumberStepper-module_valueWrapper__TH65N","value":"NumberStepper-module_value__BxJeD","limits":"NumberStepper-module_limits__-UrRE","limit":"NumberStepper-module_limit__7nbIP","small":"NumberStepper-module_small__P-k96","large":"NumberStepper-module_large__Lz6lk","outlined":"NumberStepper-module_outlined__CIXv7","filled":"NumberStepper-module_filled__IxOg-","minimal":"NumberStepper-module_minimal__y47-W","custom":"NumberStepper-module_custom__XGSVg","vertical":"NumberStepper-module_vertical__nBcL7","pulse":"NumberStepper-module_pulse__51oUo"};
1402
1402
 
1403
1403
  /**
1404
1404
  * NumberStepper Component
@@ -1585,32 +1585,32 @@ const NumberStepper = ({ value, onChange, min = -Infinity, max = Infinity, step
1585
1585
  setDisplayValue(finalValue);
1586
1586
  }, [displayValue, min, max, step, onChange]);
1587
1587
  const containerClasses = [
1588
- styles$p.container,
1589
- styles$p[size],
1590
- styles$p[variant],
1591
- layout === 'vertical' && styles$p.vertical,
1592
- disabled && styles$p.disabled,
1588
+ styles$q.container,
1589
+ styles$q[size],
1590
+ styles$q[variant],
1591
+ layout === 'vertical' && styles$q.vertical,
1592
+ disabled && styles$q.disabled,
1593
1593
  className
1594
1594
  ].filter(Boolean).join(' ');
1595
1595
  // Merge custom styles with hover states
1596
1596
  const [isButtonHovered, setIsButtonHovered] = React.useState(null);
1597
1597
  const isDecrementDisabled = disabled || value <= min;
1598
1598
  const isIncrementDisabled = disabled || value >= max;
1599
- const stepperContent = (jsxRuntime.jsxs("div", { className: styles$p.stepper, style: customStyles.stepper, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.button, { className: styles$p.button, style: {
1599
+ const stepperContent = (jsxRuntime.jsxs("div", { className: styles$q.stepper, style: customStyles.stepper, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.button, { className: styles$q.button, style: {
1600
1600
  ...customStyles.button,
1601
1601
  ...(isButtonHovered === 'decrement' && customStyles.buttonHover)
1602
- }, onMouseEnter: () => setIsButtonHovered('decrement'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleDecrement, disabled: isDecrementDisabled, whileTap: !isDecrementDisabled ? { scale: 0.9 } : undefined, animate: isDecrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Decrease value", children: customButtons.decrement || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, children: "\u2212" })) : (jsxRuntime.jsx("svg", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M15 18L9 12L15 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) }), jsxRuntime.jsx("div", { className: styles$p.valueContainer, style: customStyles.valueContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.div, { initial: { y: isIncrementing ? 10 : isDecrementing ? -10 : 0, opacity: 0 }, animate: { y: 0, opacity: 1 }, exit: { y: isIncrementing ? -10 : isDecrementing ? 10 : 0, opacity: 0 }, transition: { duration: 0.15 }, className: styles$p.valueWrapper, children: jsxRuntime.jsx("input", { type: "text", className: styles$p.value, style: customStyles.value, value: displayValue, onChange: handleInputChange, onBlur: handleInputBlur, disabled: disabled, "aria-label": label || "Number input", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value }) }, value) }) }), jsxRuntime.jsx(framerMotion.motion.button, { className: styles$p.button, style: {
1602
+ }, onMouseEnter: () => setIsButtonHovered('decrement'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleDecrement, disabled: isDecrementDisabled, whileTap: !isDecrementDisabled ? { scale: 0.9 } : undefined, animate: isDecrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Decrease value", children: customButtons.decrement || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, children: "\u2212" })) : (jsxRuntime.jsx("svg", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M15 18L9 12L15 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) }), jsxRuntime.jsx("div", { className: styles$q.valueContainer, style: customStyles.valueContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.div, { initial: { y: isIncrementing ? 10 : isDecrementing ? -10 : 0, opacity: 0 }, animate: { y: 0, opacity: 1 }, exit: { y: isIncrementing ? -10 : isDecrementing ? 10 : 0, opacity: 0 }, transition: { duration: 0.15 }, className: styles$q.valueWrapper, children: jsxRuntime.jsx("input", { type: "text", className: styles$q.value, style: customStyles.value, value: displayValue, onChange: handleInputChange, onBlur: handleInputBlur, disabled: disabled, "aria-label": label || "Number input", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value }) }, value) }) }), jsxRuntime.jsx(framerMotion.motion.button, { className: styles$q.button, style: {
1603
1603
  ...customStyles.button,
1604
1604
  ...(isButtonHovered === 'increment' && customStyles.buttonHover)
1605
- }, onMouseEnter: () => setIsButtonHovered('increment'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleIncrement, disabled: isIncrementDisabled, whileTap: !isIncrementDisabled ? { scale: 0.9 } : undefined, animate: isIncrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Increase value", children: customButtons.increment || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, children: "+" })) : (jsxRuntime.jsx("svg", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M9 18L15 12L9 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) })] }));
1605
+ }, onMouseEnter: () => setIsButtonHovered('increment'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleIncrement, disabled: isIncrementDisabled, whileTap: !isIncrementDisabled ? { scale: 0.9 } : undefined, animate: isIncrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Increase value", children: customButtons.increment || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, children: "+" })) : (jsxRuntime.jsx("svg", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M9 18L15 12L9 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) })] }));
1606
1606
  // For custom variant with horizontal layout, render differently
1607
1607
  if (variant === 'custom' && (label || icon)) {
1608
- return (jsxRuntime.jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxRuntime.jsxs("div", { className: styles$p.header, style: { ...customStyles.header, flex: 1, marginBottom: 0 }, children: [icon && jsxRuntime.jsx("span", { className: styles$p.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$p.label, style: customStyles.label, children: label })] }), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$p.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$p.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$p.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1608
+ return (jsxRuntime.jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxRuntime.jsxs("div", { className: styles$q.header, style: { ...customStyles.header, flex: 1, marginBottom: 0 }, children: [icon && jsxRuntime.jsx("span", { className: styles$q.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$q.label, style: customStyles.label, children: label })] }), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$q.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$q.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$q.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1609
1609
  }
1610
- return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxRuntime.jsxs("div", { className: styles$p.header, style: customStyles.header, children: [icon && jsxRuntime.jsx("span", { className: styles$p.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$p.label, style: customStyles.label, children: label })] })), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$p.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$p.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$p.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1610
+ return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxRuntime.jsxs("div", { className: styles$q.header, style: customStyles.header, children: [icon && jsxRuntime.jsx("span", { className: styles$q.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$q.label, style: customStyles.label, children: label })] })), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$q.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$q.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$q.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1611
1611
  };
1612
1612
 
1613
- var styles$o = {"button":"ToggleButton-module_button__DTuyY","background":"ToggleButton-module_background__NwfTp","content":"ToggleButton-module_content__NHqIN","iconWrapper":"ToggleButton-module_iconWrapper__yN4sP","icon":"ToggleButton-module_icon__r8juX","label":"ToggleButton-module_label__4mPJP","hideMobile":"ToggleButton-module_hideMobile__GFAc3","checkmark":"ToggleButton-module_checkmark__ZJwf-","ripple":"ToggleButton-module_ripple__2-faB","small":"ToggleButton-module_small__MhfoN","large":"ToggleButton-module_large__A3naL","default":"ToggleButton-module_default__q8QaZ","active":"ToggleButton-module_active__4DjlR","outlined":"ToggleButton-module_outlined__OtqJB","filled":"ToggleButton-module_filled__LySNn","ghost":"ToggleButton-module_ghost__9KXcb","active-primary":"ToggleButton-module_active-primary__vXMP7","active-secondary":"ToggleButton-module_active-secondary__9Ttdx","active-success":"ToggleButton-module_active-success__oi0rr","active-danger":"ToggleButton-module_active-danger__VUdxr","active-warning":"ToggleButton-module_active-warning__77nSu","animation-scale":"ToggleButton-module_animation-scale__j-3mJ","scaleAnimation":"ToggleButton-module_scaleAnimation__Ms1j2","animation-rotate":"ToggleButton-module_animation-rotate__pBmfc","rotateAnimation":"ToggleButton-module_rotateAnimation__xWZJ5","animation-flip":"ToggleButton-module_animation-flip__ErAbm","flipAnimation":"ToggleButton-module_flipAnimation__qwDTb","disabled":"ToggleButton-module_disabled__Gv5ji"};
1613
+ var styles$p = {"button":"ToggleButton-module_button__DTuyY","background":"ToggleButton-module_background__NwfTp","content":"ToggleButton-module_content__NHqIN","iconWrapper":"ToggleButton-module_iconWrapper__yN4sP","icon":"ToggleButton-module_icon__r8juX","label":"ToggleButton-module_label__4mPJP","hideMobile":"ToggleButton-module_hideMobile__GFAc3","checkmark":"ToggleButton-module_checkmark__ZJwf-","ripple":"ToggleButton-module_ripple__2-faB","small":"ToggleButton-module_small__MhfoN","large":"ToggleButton-module_large__A3naL","default":"ToggleButton-module_default__q8QaZ","active":"ToggleButton-module_active__4DjlR","outlined":"ToggleButton-module_outlined__OtqJB","filled":"ToggleButton-module_filled__LySNn","ghost":"ToggleButton-module_ghost__9KXcb","active-primary":"ToggleButton-module_active-primary__vXMP7","active-secondary":"ToggleButton-module_active-secondary__9Ttdx","active-success":"ToggleButton-module_active-success__oi0rr","active-danger":"ToggleButton-module_active-danger__VUdxr","active-warning":"ToggleButton-module_active-warning__77nSu","animation-scale":"ToggleButton-module_animation-scale__j-3mJ","scaleAnimation":"ToggleButton-module_scaleAnimation__Ms1j2","animation-rotate":"ToggleButton-module_animation-rotate__pBmfc","rotateAnimation":"ToggleButton-module_rotateAnimation__xWZJ5","animation-flip":"ToggleButton-module_animation-flip__ErAbm","flipAnimation":"ToggleButton-module_flipAnimation__qwDTb","disabled":"ToggleButton-module_disabled__Gv5ji"};
1614
1614
 
1615
1615
  /**
1616
1616
  * ToggleButton Component
@@ -1649,18 +1649,18 @@ var styles$o = {"button":"ToggleButton-module_button__DTuyY","background":"Toggl
1649
1649
  const ToggleButton = ({ active, onClick, icon, label, disabled = false, size = 'medium', variant = 'default', activeColor = 'primary', showCheckmark = false, animation = 'scale', className = '', style = {}, color, tooltip, hideLabelOnMobile = false, soundConfig }) => {
1650
1650
  const { handlers, playSound } = useComponentSound(soundConfig);
1651
1651
  const buttonClasses = [
1652
- styles$o.button,
1653
- styles$o[size],
1654
- styles$o[variant],
1655
- active && styles$o.active,
1656
- active && styles$o[`active-${activeColor}`],
1657
- disabled && styles$o.disabled,
1658
- animation !== 'none' && styles$o[`animation-${animation}`],
1652
+ styles$p.button,
1653
+ styles$p[size],
1654
+ styles$p[variant],
1655
+ active && styles$p.active,
1656
+ active && styles$p[`active-${activeColor}`],
1657
+ disabled && styles$p.disabled,
1658
+ animation !== 'none' && styles$p[`animation-${animation}`],
1659
1659
  className
1660
1660
  ].filter(Boolean).join(' ');
1661
1661
  const labelClasses = [
1662
- styles$o.label,
1663
- hideLabelOnMobile && styles$o.hideMobile
1662
+ styles$p.label,
1663
+ hideLabelOnMobile && styles$p.hideMobile
1664
1664
  ].filter(Boolean).join(' ');
1665
1665
  const iconVariants = {
1666
1666
  scale: {
@@ -1724,10 +1724,10 @@ const ToggleButton = ({ active, onClick, icon, label, disabled = false, size = '
1724
1724
  return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, style: dynamicStyle, onClick: () => {
1725
1725
  playSound('toggle');
1726
1726
  onClick();
1727
- }, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.background, variants: backgroundVariants, initial: "inactive", animate: active ? "active" : "inactive" }), jsxRuntime.jsxs("div", { className: styles$o.content, children: [icon && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.iconWrapper, variants: iconVariants[animation], initial: "inactive", animate: active ? "active" : "inactive", transition: { duration: 0.3 }, children: typeof icon === 'string' ? (jsxRuntime.jsx("span", { className: styles$o.icon, children: icon })) : (jsxRuntime.jsx("div", { className: styles$o.icon, children: icon })) })), label && jsxRuntime.jsx("span", { className: labelClasses, children: label }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showCheckmark && active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.checkmark, variants: checkmarkVariants, initial: "hidden", animate: "visible", exit: "hidden", children: jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.ripple, initial: { scale: 0, opacity: 0.5 }, animate: { scale: 2, opacity: 0 }, exit: { scale: 0, opacity: 0 }, transition: { duration: 0.6 } })) })] }));
1727
+ }, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$p.background, variants: backgroundVariants, initial: "inactive", animate: active ? "active" : "inactive" }), jsxRuntime.jsxs("div", { className: styles$p.content, children: [icon && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$p.iconWrapper, variants: iconVariants[animation], initial: "inactive", animate: active ? "active" : "inactive", transition: { duration: 0.3 }, children: typeof icon === 'string' ? (jsxRuntime.jsx("span", { className: styles$p.icon, children: icon })) : (jsxRuntime.jsx("div", { className: styles$p.icon, children: icon })) })), label && jsxRuntime.jsx("span", { className: labelClasses, children: label }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showCheckmark && active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$p.checkmark, variants: checkmarkVariants, initial: "hidden", animate: "visible", exit: "hidden", children: jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$p.ripple, initial: { scale: 0, opacity: 0.5 }, animate: { scale: 2, opacity: 0 }, exit: { scale: 0, opacity: 0 }, transition: { duration: 0.6 } })) })] }));
1728
1728
  };
1729
1729
 
1730
- var styles$n = {"slider":"Slider-module_slider__RD4G7","label":"Slider-module_label__j4H8M","sliderContainer":"Slider-module_sliderContainer__kQICC","track":"Slider-module_track__fQ-oP","fill":"Slider-module_fill__AYR4-","shimmer":"Slider-module_shimmer__271tL","input":"Slider-module_input__fqY-G","thumb":"Slider-module_thumb__yQJho","ripple":"Slider-module_ripple__gVS04","tooltip":"Slider-module_tooltip__ZubHR","tooltipArrow":"Slider-module_tooltipArrow__1aV9s","valueDisplay":"Slider-module_valueDisplay__V6caL","labelsContainer":"Slider-module_labelsContainer__F6ojF","labelItem":"Slider-module_labelItem__FuEaY","size-sm":"Slider-module_size-sm__Y2bmS","size-lg":"Slider-module_size-lg__RSnPf","disabled":"Slider-module_disabled__gxYoH","loading":"Slider-module_loading__6FkKb","loadingTrack":"Slider-module_loadingTrack__8ItT2","loadingIndicator":"Slider-module_loadingIndicator__Elydq"};
1730
+ var styles$o = {"slider":"Slider-module_slider__RD4G7","label":"Slider-module_label__j4H8M","sliderContainer":"Slider-module_sliderContainer__kQICC","track":"Slider-module_track__fQ-oP","fill":"Slider-module_fill__AYR4-","shimmer":"Slider-module_shimmer__271tL","input":"Slider-module_input__fqY-G","thumb":"Slider-module_thumb__yQJho","ripple":"Slider-module_ripple__gVS04","tooltip":"Slider-module_tooltip__ZubHR","tooltipArrow":"Slider-module_tooltipArrow__1aV9s","valueDisplay":"Slider-module_valueDisplay__V6caL","labelsContainer":"Slider-module_labelsContainer__F6ojF","labelItem":"Slider-module_labelItem__FuEaY","size-sm":"Slider-module_size-sm__Y2bmS","size-lg":"Slider-module_size-lg__RSnPf","disabled":"Slider-module_disabled__gxYoH","loading":"Slider-module_loading__6FkKb","loadingTrack":"Slider-module_loadingTrack__8ItT2","loadingIndicator":"Slider-module_loadingIndicator__Elydq"};
1731
1731
 
1732
1732
  /**
1733
1733
  * Slider component - A beautiful, animated range input
@@ -1815,16 +1815,16 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1815
1815
  setShowTooltipState(false);
1816
1816
  };
1817
1817
  const dynamicColor = getDynamicColor();
1818
- const sizeClass = styles$n[`size-${size}`];
1819
- const stateClass = disabled ? styles$n.disabled : loading ? styles$n.loading : '';
1818
+ const sizeClass = styles$o[`size-${size}`];
1819
+ const stateClass = disabled ? styles$o.disabled : loading ? styles$o.loading : '';
1820
1820
  if (loading) {
1821
- return (jsxRuntime.jsxs("div", { className: `${styles$n.slider} ${sizeClass} ${styles$n.loading} ${className}`, style: style, children: [label && jsxRuntime.jsx("label", { className: styles$n.label, children: label }), jsxRuntime.jsx("div", { className: styles$n.loadingTrack, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.loadingIndicator, animate: { x: ['-100%', '200%'] }, transition: {
1821
+ return (jsxRuntime.jsxs("div", { className: `${styles$o.slider} ${sizeClass} ${styles$o.loading} ${className}`, style: style, children: [label && jsxRuntime.jsx("label", { className: styles$o.label, children: label }), jsxRuntime.jsx("div", { className: styles$o.loadingTrack, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.loadingIndicator, animate: { x: ['-100%', '200%'] }, transition: {
1822
1822
  repeat: Infinity,
1823
1823
  duration: 1.5,
1824
1824
  ease: "easeInOut"
1825
1825
  } }) })] }));
1826
1826
  }
1827
- return (jsxRuntime.jsxs("div", { className: `${styles$n.slider} ${sizeClass} ${stateClass} ${className}`, style: style, children: [label && (jsxRuntime.jsx(framerMotion.motion.label, { className: styles$n.label, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.3 }, children: label })), jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$n.sliderContainer, ref: sliderRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, whileHover: { scale: 1.02 }, transition: { duration: 0.1 }, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.track, whileHover: { height: 8, marginTop: -1 }, transition: { duration: 0.1 }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.fill, style: {
1827
+ return (jsxRuntime.jsxs("div", { className: `${styles$o.slider} ${sizeClass} ${stateClass} ${className}`, style: style, children: [label && (jsxRuntime.jsx(framerMotion.motion.label, { className: styles$o.label, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.3 }, children: label })), jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$o.sliderContainer, ref: sliderRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, whileHover: { scale: 1.02 }, transition: { duration: 0.1 }, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.track, whileHover: { height: 8, marginTop: -1 }, transition: { duration: 0.1 }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.fill, style: {
1828
1828
  width: `${percentage}%`,
1829
1829
  backgroundColor: dynamicColor
1830
1830
  }, initial: { width: 0 }, animate: { width: `${percentage}%` }, transition: {
@@ -1834,7 +1834,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1834
1834
  damping: 30
1835
1835
  }, whileHover: {
1836
1836
  boxShadow: `inset 0 0 0 1px rgba(255,255,255,0.2)`
1837
- } }) }), jsxRuntime.jsx("input", { type: "range", min: min, max: max, step: step, value: value, onChange: handleChange, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, ...handlers, className: styles$n.input, disabled: disabled, "aria-label": label }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.thumb, style: {
1837
+ } }) }), jsxRuntime.jsx("input", { type: "range", min: min, max: max, step: step, value: value, onChange: handleChange, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, ...handlers, className: styles$o.input, disabled: disabled, "aria-label": label }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.thumb, style: {
1838
1838
  left: `${percentage}%`,
1839
1839
  backgroundColor: dynamicColor,
1840
1840
  borderColor: colors.thumb || dynamicColor
@@ -1851,14 +1851,14 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1851
1851
  }, whileHover: {
1852
1852
  scale: 1.1,
1853
1853
  transition: { duration: 0.1 }
1854
- }, children: isDragging && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.ripple, initial: { scale: 0, opacity: 0.6 }, animate: { scale: 2, opacity: 0 }, transition: { duration: 0.5 } })) }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showTooltipState && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$n.tooltip, style: {
1854
+ }, children: isDragging && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.ripple, initial: { scale: 0, opacity: 0.6 }, animate: { scale: 2, opacity: 0 }, transition: { duration: 0.5 } })) }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showTooltipState && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$o.tooltip, style: {
1855
1855
  left: `${percentage}%`,
1856
1856
  backgroundColor: dynamicColor
1857
- }, initial: { opacity: 0, y: 10, scale: 0.8 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: 10, scale: 0.8 }, transition: { duration: 0.2 }, children: [tooltipContent ? tooltipContent(value) : formatValue(value), jsxRuntime.jsx("div", { className: styles$n.tooltipArrow, style: { borderTopColor: dynamicColor } })] })) })] }), showValue && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.valueDisplay, style: { color: dynamicColor }, initial: { scale: 0.8 }, animate: { scale: 1 }, transition: {
1857
+ }, initial: { opacity: 0, y: 10, scale: 0.8 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: 10, scale: 0.8 }, transition: { duration: 0.2 }, children: [tooltipContent ? tooltipContent(value) : formatValue(value), jsxRuntime.jsx("div", { className: styles$o.tooltipArrow, style: { borderTopColor: dynamicColor } })] })) })] }), showValue && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.valueDisplay, style: { color: dynamicColor }, initial: { scale: 0.8 }, animate: { scale: 1 }, transition: {
1858
1858
  duration: 0.2,
1859
1859
  type: "spring",
1860
1860
  stiffness: 300
1861
- }, children: formatValue(value) }, value)), labels.length > 0 && (jsxRuntime.jsx("div", { className: styles$n.labelsContainer, children: labels.map((labelConfig, index) => {
1861
+ }, children: formatValue(value) }, value)), labels.length > 0 && (jsxRuntime.jsx("div", { className: styles$o.labelsContainer, children: labels.map((labelConfig, index) => {
1862
1862
  let position = 0;
1863
1863
  if (labelConfig.position === 'start')
1864
1864
  position = 0;
@@ -1866,7 +1866,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1866
1866
  position = 100;
1867
1867
  else if (typeof labelConfig.position === 'number')
1868
1868
  position = labelConfig.position;
1869
- return (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.labelItem, style: {
1869
+ return (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.labelItem, style: {
1870
1870
  left: `${position}%`,
1871
1871
  color: labelConfig.color
1872
1872
  }, initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 }, transition: {
@@ -1879,7 +1879,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1879
1879
  }) }))] }));
1880
1880
  }
1881
1881
 
1882
- var styles$m = {"loadingContainer":"LoadingSpinner-module_loadingContainer__m5u51","fullScreen":"LoadingSpinner-module_fullScreen__TuAem","overlay":"LoadingSpinner-module_overlay__X7FTa","shimmer":"LoadingSpinner-module_shimmer__xw4AH","small":"LoadingSpinner-module_small__nq8A3","loadingText":"LoadingSpinner-module_loadingText__wWwna","medium":"LoadingSpinner-module_medium__3JC1S","large":"LoadingSpinner-module_large__4MvAc","dotsSpinner":"LoadingSpinner-module_dotsSpinner__PXtfs","dot1":"LoadingSpinner-module_dot1__5YKSi","dot2":"LoadingSpinner-module_dot2__l6Rbu","dot3":"LoadingSpinner-module_dot3__b9YPW","circleSpinner":"LoadingSpinner-module_circleSpinner__ZmmWs","pulseSpinner":"LoadingSpinner-module_pulseSpinner__wTtDJ","textGradient":"LoadingSpinner-module_textGradient__QDrTY","sparkleContainer":"LoadingSpinner-module_sparkleContainer__9XLJG","sparkle":"LoadingSpinner-module_sparkle__LtFFf"};
1882
+ var styles$n = {"loadingContainer":"LoadingSpinner-module_loadingContainer__m5u51","fullScreen":"LoadingSpinner-module_fullScreen__TuAem","overlay":"LoadingSpinner-module_overlay__X7FTa","shimmer":"LoadingSpinner-module_shimmer__xw4AH","small":"LoadingSpinner-module_small__nq8A3","loadingText":"LoadingSpinner-module_loadingText__wWwna","medium":"LoadingSpinner-module_medium__3JC1S","large":"LoadingSpinner-module_large__4MvAc","dotsSpinner":"LoadingSpinner-module_dotsSpinner__PXtfs","dot1":"LoadingSpinner-module_dot1__5YKSi","dot2":"LoadingSpinner-module_dot2__l6Rbu","dot3":"LoadingSpinner-module_dot3__b9YPW","circleSpinner":"LoadingSpinner-module_circleSpinner__ZmmWs","pulseSpinner":"LoadingSpinner-module_pulseSpinner__wTtDJ","textGradient":"LoadingSpinner-module_textGradient__QDrTY","sparkleContainer":"LoadingSpinner-module_sparkleContainer__9XLJG","sparkle":"LoadingSpinner-module_sparkle__LtFFf"};
1883
1883
 
1884
1884
  const defaultMessages = [
1885
1885
  'Loading your content...',
@@ -1963,22 +1963,22 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1963
1963
  }
1964
1964
  }, [currentMessageIndex, message, messagesToUse, showMessage]);
1965
1965
  const containerClasses = [
1966
- styles$m.loadingContainer,
1967
- styles$m[size],
1968
- styles$m[variant],
1969
- fullScreen && styles$m.fullScreen,
1970
- overlay && styles$m.overlay,
1966
+ styles$n.loadingContainer,
1967
+ styles$n[size],
1968
+ styles$n[variant],
1969
+ fullScreen && styles$n.fullScreen,
1970
+ overlay && styles$n.overlay,
1971
1971
  className
1972
1972
  ].filter(Boolean).join(' ');
1973
1973
  const customStyle = {
1974
1974
  ...(color && { '--spinner-color': color }),
1975
1975
  ...(backgroundColor && { '--spinner-background': backgroundColor }),
1976
1976
  };
1977
- const renderDots = () => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$m.dotsSpinner, animate: { rotate: 360 }, transition: {
1977
+ const renderDots = () => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$n.dotsSpinner, animate: { rotate: 360 }, transition: {
1978
1978
  duration: 2,
1979
1979
  repeat: Infinity,
1980
1980
  ease: 'linear'
1981
- }, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.dot1, animate: {
1981
+ }, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.dot1, animate: {
1982
1982
  scale: [1, 1.3, 1],
1983
1983
  y: [0, -6, 0]
1984
1984
  }, transition: {
@@ -1986,7 +1986,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1986
1986
  repeat: Infinity,
1987
1987
  ease: 'easeInOut',
1988
1988
  delay: 0
1989
- } }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.dot2, animate: {
1989
+ } }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.dot2, animate: {
1990
1990
  scale: [1, 1.3, 1],
1991
1991
  y: [0, -6, 0]
1992
1992
  }, transition: {
@@ -1994,7 +1994,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1994
1994
  repeat: Infinity,
1995
1995
  ease: 'easeInOut',
1996
1996
  delay: 0.5
1997
- } }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.dot3, animate: {
1997
+ } }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.dot3, animate: {
1998
1998
  scale: [1, 1.3, 1],
1999
1999
  y: [0, -6, 0]
2000
2000
  }, transition: {
@@ -2003,12 +2003,12 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
2003
2003
  ease: 'easeInOut',
2004
2004
  delay: 1
2005
2005
  } })] }));
2006
- const renderSpinner = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.circleSpinner, animate: { rotate: 360 }, transition: {
2006
+ const renderSpinner = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.circleSpinner, animate: { rotate: 360 }, transition: {
2007
2007
  duration: 1,
2008
2008
  repeat: Infinity,
2009
2009
  ease: 'linear'
2010
2010
  } }));
2011
- const renderPulse = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.pulseSpinner, animate: {
2011
+ const renderPulse = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.pulseSpinner, animate: {
2012
2012
  scale: [1, 1.2, 1],
2013
2013
  opacity: [1, 0.7, 1]
2014
2014
  }, transition: {
@@ -2027,10 +2027,10 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
2027
2027
  return renderDots();
2028
2028
  }
2029
2029
  };
2030
- return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.p, { className: styles$m.loadingText, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: {
2030
+ return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.p, { className: styles$n.loadingText, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: {
2031
2031
  duration: 0.4,
2032
2032
  ease: 'easeOut'
2033
- }, children: currentMessage }, currentMessage) })), showSparkles && (jsxRuntime.jsx("div", { className: styles$m.sparkleContainer, children: [...Array(4)].map((_, i) => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$m.sparkle, animate: {
2033
+ }, children: currentMessage }, currentMessage) })), showSparkles && (jsxRuntime.jsx("div", { className: styles$n.sparkleContainer, children: [...Array(4)].map((_, i) => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$n.sparkle, animate: {
2034
2034
  opacity: [0, 1, 0],
2035
2035
  scale: [0.5, 1, 0.5],
2036
2036
  rotate: [0, 180, 360]
@@ -2045,7 +2045,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
2045
2045
  } }, i))) }))] }));
2046
2046
  };
2047
2047
 
2048
- var styles$l = {"wrapper":"DecryptedText-module_wrapper__tuLvf","srOnly":"DecryptedText-module_srOnly__A-K2T"};
2048
+ var styles$m = {"wrapper":"DecryptedText-module_wrapper__tuLvf","srOnly":"DecryptedText-module_srOnly__A-K2T"};
2049
2049
 
2050
2050
  /**
2051
2051
  * DecryptedText Component
@@ -2229,13 +2229,13 @@ const DecryptedText = ({ text, speed = 50, maxIterations = 10, sequential = fals
2229
2229
  onMouseLeave: () => setIsHovering(false),
2230
2230
  }
2231
2231
  : {};
2232
- return (jsxRuntime.jsxs(framerMotion.motion.span, { className: `${styles$l.wrapper} ${parentClassName}`, ref: containerRef, ...hoverProps, ...props, children: [jsxRuntime.jsx("span", { className: styles$l.srOnly, children: displayText }), jsxRuntime.jsx("span", { "aria-hidden": "true", children: displayText.split('').map((char, index) => {
2232
+ return (jsxRuntime.jsxs(framerMotion.motion.span, { className: `${styles$m.wrapper} ${parentClassName}`, ref: containerRef, ...hoverProps, ...props, children: [jsxRuntime.jsx("span", { className: styles$m.srOnly, children: displayText }), jsxRuntime.jsx("span", { "aria-hidden": "true", children: displayText.split('').map((char, index) => {
2233
2233
  const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;
2234
2234
  return (jsxRuntime.jsx("span", { className: isRevealedOrDone ? className : encryptedClassName, children: char }, index));
2235
2235
  }) })] }));
2236
2236
  };
2237
2237
 
2238
- var styles$k = {"arrayInput":"ArrayInput-module_arrayInput__q1x7A","arrayInputLabel":"ArrayInput-module_arrayInputLabel__HyUC7","arrayInputItem":"ArrayInput-module_arrayInputItem__bFtgl","inputWrapper":"ArrayInput-module_inputWrapper__ajhbW","input":"ArrayInput-module_input__1uywi","complexItem":"ArrayInput-module_complexItem__zr-Q-","fieldsWrapper":"ArrayInput-module_fieldsWrapper__7BVPa","removeButton":"ArrayInput-module_removeButton__gYf8Y","addButton":"ArrayInput-module_addButton__mia29"};
2238
+ var styles$l = {"arrayInput":"ArrayInput-module_arrayInput__q1x7A","arrayInputLabel":"ArrayInput-module_arrayInputLabel__HyUC7","arrayInputItem":"ArrayInput-module_arrayInputItem__bFtgl","inputWrapper":"ArrayInput-module_inputWrapper__ajhbW","input":"ArrayInput-module_input__1uywi","complexItem":"ArrayInput-module_complexItem__zr-Q-","fieldsWrapper":"ArrayInput-module_fieldsWrapper__7BVPa","removeButton":"ArrayInput-module_removeButton__gYf8Y","addButton":"ArrayInput-module_addButton__mia29"};
2239
2239
 
2240
2240
  /**
2241
2241
  * ArrayInput component - Versatile dynamic list manager
@@ -2302,11 +2302,11 @@ function SimpleArrayInput({ label, values, onChange, placeholder, itemStyle, inp
2302
2302
  itemIdsRef.current.splice(index, 1);
2303
2303
  onChange(newValues);
2304
2304
  };
2305
- return (jsxRuntime.jsxs("div", { className: styles$k.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$k.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$k.arrayInputItem, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2305
+ return (jsxRuntime.jsxs("div", { className: styles$l.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$l.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$l.arrayInputItem, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2306
2306
  duration: 0.3,
2307
2307
  ease: "easeInOut",
2308
2308
  layout: { duration: 0.2 }
2309
- }, children: [jsxRuntime.jsx("div", { className: styles$k.inputWrapper, children: multiline ? (jsxRuntime.jsx("div", { style: inputStyle, children: jsxRuntime.jsx(TextArea, { label: "", value: value, onChange: (newValue) => handleChange(index, newValue), placeholder: placeholder, rows: rows, compact: true }) })) : (jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$k.input, style: inputStyle })) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$k.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, itemIdsRef.current[index]))) }) }), jsxRuntime.jsx(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$k.addButton, children: label })] }));
2309
+ }, children: [jsxRuntime.jsx("div", { className: styles$l.inputWrapper, children: multiline ? (jsxRuntime.jsx("div", { style: inputStyle, children: jsxRuntime.jsx(TextArea, { label: "", value: value, onChange: (newValue) => handleChange(index, newValue), placeholder: placeholder, rows: rows, compact: true }) })) : (jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$l.input, style: inputStyle })) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$l.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, itemIdsRef.current[index]))) }) }), jsxRuntime.jsx(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$l.addButton, children: label })] }));
2310
2310
  }
2311
2311
  // Complex object array implementation
2312
2312
  function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle, inputStyle, buttonVariant = 'primary' }) {
@@ -2331,14 +2331,14 @@ function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle,
2331
2331
  // Generate key from all field values
2332
2332
  return fields.map(f => item[f.name] || '').join('-') + `-${index}`;
2333
2333
  };
2334
- return (jsxRuntime.jsxs("div", { className: styles$k.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$k.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$k.arrayInputItem} ${fields.length > 1 ? styles$k.complexItem : ''}`, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2334
+ return (jsxRuntime.jsxs("div", { className: styles$l.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$l.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$l.arrayInputItem} ${fields.length > 1 ? styles$l.complexItem : ''}`, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2335
2335
  duration: 0.3,
2336
2336
  ease: "easeInOut",
2337
2337
  layout: { duration: 0.2 }
2338
- }, children: [jsxRuntime.jsx("div", { className: styles$k.fieldsWrapper, children: fields.map((field) => (jsxRuntime.jsx("div", { style: inputStyle, children: field.multiline ? (jsxRuntime.jsx(TextArea, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, placeholder: field.placeholder, rows: field.rows, compact: true })) : (jsxRuntime.jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder })) }, field.name))) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$k.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, generateKey(value, index)))) }) }), jsxRuntime.jsxs(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$k.addButton, children: ["Add ", label] })] }));
2338
+ }, children: [jsxRuntime.jsx("div", { className: styles$l.fieldsWrapper, children: fields.map((field) => (jsxRuntime.jsx("div", { style: inputStyle, children: field.multiline ? (jsxRuntime.jsx(TextArea, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, placeholder: field.placeholder, rows: field.rows, compact: true })) : (jsxRuntime.jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder })) }, field.name))) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$l.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, generateKey(value, index)))) }) }), jsxRuntime.jsxs(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$l.addButton, children: ["Add ", label] })] }));
2339
2339
  }
2340
2340
 
2341
- var styles$j = {"fab":"EditFAB-module_fab__nSrTJ","primary":"EditFAB-module_primary__zbA9n","secondary":"EditFAB-module_secondary__BnXs0","success":"EditFAB-module_success__kcLg3","loader":"EditFAB-module_loader__TaJOm","draggable":"EditFAB-module_draggable__eE2vE","dragging":"EditFAB-module_dragging__btRJe"};
2341
+ var styles$k = {"fab":"EditFAB-module_fab__nSrTJ","primary":"EditFAB-module_primary__zbA9n","secondary":"EditFAB-module_secondary__BnXs0","success":"EditFAB-module_success__kcLg3","loader":"EditFAB-module_loader__TaJOm","draggable":"EditFAB-module_draggable__eE2vE","dragging":"EditFAB-module_dragging__btRJe"};
2342
2342
 
2343
2343
  const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = false, onEnterEditMode, onExitEditMode, position = { bottom: 32, right: 32 } }) => {
2344
2344
  const [isMobile, setIsMobile] = React.useState(false);
@@ -2423,15 +2423,15 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
2423
2423
  };
2424
2424
  const getVariantClass = () => {
2425
2425
  if (isSaving)
2426
- return styles$j.primary;
2426
+ return styles$k.primary;
2427
2427
  if (isEditMode) {
2428
- return hasUnsavedChanges ? styles$j.success : styles$j.secondary;
2428
+ return hasUnsavedChanges ? styles$k.success : styles$k.secondary;
2429
2429
  }
2430
- return styles$j.primary;
2430
+ return styles$k.primary;
2431
2431
  };
2432
2432
  const getIcon = () => {
2433
2433
  if (isSaving) {
2434
- return jsxRuntime.jsx("div", { className: styles$j.loader });
2434
+ return jsxRuntime.jsx("div", { className: styles$k.loader });
2435
2435
  }
2436
2436
  if (isEditMode) {
2437
2437
  return hasUnsavedChanges ? jsxRuntime.jsx(lucideReact.Check, { size: 24 }) : jsxRuntime.jsx(lucideReact.X, { size: 24 });
@@ -2446,14 +2446,14 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
2446
2446
  }
2447
2447
  return "Enter edit mode";
2448
2448
  };
2449
- return (jsxRuntime.jsx(framerMotion.motion.button, { ref: fabRef, className: `${styles$j.fab} ${getVariantClass()} ${isMobile ? styles$j.draggable : ''} ${isDragging ? styles$j.dragging : ''}`, style: getPositionStyles(), onClick: handleClick, onTouchStart: handleTouchStart, onTouchMove: handleTouchMove, onTouchEnd: handleTouchEnd, disabled: isSaving, "aria-label": getAriaLabel(), initial: { scale: 0, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0, opacity: 0 }, whileHover: !isSaving && !isDragging ? { scale: 1.1 } : {}, whileTap: !isSaving && !isDragging ? { scale: 0.9 } : {}, transition: {
2449
+ return (jsxRuntime.jsx(framerMotion.motion.button, { ref: fabRef, className: `${styles$k.fab} ${getVariantClass()} ${isMobile ? styles$k.draggable : ''} ${isDragging ? styles$k.dragging : ''}`, style: getPositionStyles(), onClick: handleClick, onTouchStart: handleTouchStart, onTouchMove: handleTouchMove, onTouchEnd: handleTouchEnd, disabled: isSaving, "aria-label": getAriaLabel(), initial: { scale: 0, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0, opacity: 0 }, whileHover: !isSaving && !isDragging ? { scale: 1.1 } : {}, whileTap: !isSaving && !isDragging ? { scale: 0.9 } : {}, transition: {
2450
2450
  type: "spring",
2451
2451
  stiffness: 260,
2452
2452
  damping: 20
2453
2453
  }, children: getIcon() }));
2454
2454
  };
2455
2455
 
2456
- var styles$i = {"searchContainer":"SearchBar-module_searchContainer__TdM1w","searchInputWrapper":"SearchBar-module_searchInputWrapper__kCZLU","searchIcon":"SearchBar-module_searchIcon__IIxEu","searchInput":"SearchBar-module_searchInput__V4gkE","clearButton":"SearchBar-module_clearButton__7fNIY","filterSelect":"SearchBar-module_filterSelect__xIVE4","resultsDropdown":"SearchBar-module_resultsDropdown__yh6NF","loadingState":"SearchBar-module_loadingState__4gidK","emptyState":"SearchBar-module_emptyState__RbI4s","spinner":"SearchBar-module_spinner__PMc6-","resultsGroups":"SearchBar-module_resultsGroups__U24DC","resultGroup":"SearchBar-module_resultGroup__SoTQH","groupHeader":"SearchBar-module_groupHeader__bFRHA","groupIcon":"SearchBar-module_groupIcon__9ENM-","groupTitle":"SearchBar-module_groupTitle__ZekZs","groupCount":"SearchBar-module_groupCount__PQIqw","groupResults":"SearchBar-module_groupResults__xTF52","resultItem":"SearchBar-module_resultItem__VaKKy","highlighted":"SearchBar-module_highlighted__Q-3sH","resultTitle":"SearchBar-module_resultTitle__i1uqL","resultSubtitle":"SearchBar-module_resultSubtitle__LQOJ1","resultMeta":"SearchBar-module_resultMeta__Kmkrn","resultContent":"SearchBar-module_resultContent__TzVzL","highlight":"SearchBar-module_highlight__Q3PSP"};
2456
+ var styles$j = {"searchContainer":"SearchBar-module_searchContainer__TdM1w","searchInputWrapper":"SearchBar-module_searchInputWrapper__kCZLU","searchIcon":"SearchBar-module_searchIcon__IIxEu","searchInput":"SearchBar-module_searchInput__V4gkE","clearButton":"SearchBar-module_clearButton__7fNIY","filterSelect":"SearchBar-module_filterSelect__xIVE4","resultsDropdown":"SearchBar-module_resultsDropdown__yh6NF","loadingState":"SearchBar-module_loadingState__4gidK","emptyState":"SearchBar-module_emptyState__RbI4s","spinner":"SearchBar-module_spinner__PMc6-","resultsGroups":"SearchBar-module_resultsGroups__U24DC","resultGroup":"SearchBar-module_resultGroup__SoTQH","groupHeader":"SearchBar-module_groupHeader__bFRHA","groupIcon":"SearchBar-module_groupIcon__9ENM-","groupTitle":"SearchBar-module_groupTitle__ZekZs","groupCount":"SearchBar-module_groupCount__PQIqw","groupResults":"SearchBar-module_groupResults__xTF52","resultItem":"SearchBar-module_resultItem__VaKKy","highlighted":"SearchBar-module_highlighted__Q-3sH","resultTitle":"SearchBar-module_resultTitle__i1uqL","resultSubtitle":"SearchBar-module_resultSubtitle__LQOJ1","resultMeta":"SearchBar-module_resultMeta__Kmkrn","resultContent":"SearchBar-module_resultContent__TzVzL","highlight":"SearchBar-module_highlight__Q3PSP"};
2457
2457
 
2458
2458
  // Default filter options for backwards compatibility
2459
2459
  const defaultFilterOptions = [
@@ -2646,20 +2646,20 @@ const SearchBar = ({ className, placeholder = "Search (Ctrl+Space)...", onSearch
2646
2646
  return text || '';
2647
2647
  const regex = new RegExp(`(${highlight.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
2648
2648
  const parts = text.split(regex);
2649
- return parts.map((part, index) => regex.test(part) ? (jsxRuntime.jsx("mark", { className: styles$i.highlight, children: part }, index)) : (part));
2649
+ return parts.map((part, index) => regex.test(part) ? (jsxRuntime.jsx("mark", { className: styles$j.highlight, children: part }, index)) : (part));
2650
2650
  };
2651
- return (jsxRuntime.jsxs("div", { ref: searchRef, className: `${styles$i.searchContainer} ${className || ''}`, children: [jsxRuntime.jsxs("div", { className: styles$i.searchInputWrapper, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$i.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, onFocus: () => query.trim() && results.length > 0 && setIsDropdownOpen(true), placeholder: placeholder, className: styles$i.searchInput, "aria-label": "Search", "aria-expanded": isDropdownOpen, "aria-controls": "search-results", "aria-autocomplete": "list" }), query && (jsxRuntime.jsx(framerMotion.motion.button, { className: styles$i.clearButton, onClick: handleClear, whileHover: { scale: 1.1 }, whileTap: { scale: 0.9 }, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, children: jsxRuntime.jsx(lucideReact.X, {}) })), showFilter && (jsxRuntime.jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$i.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isDropdownOpen && (jsxRuntime.jsx(framerMotion.motion.div, { ref: resultsRef, id: "search-results", className: styles$i.resultsDropdown, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, children: isLoading ? (jsxRuntime.jsxs("div", { className: styles$i.loadingState, children: [jsxRuntime.jsx("div", { className: styles$i.spinner }), jsxRuntime.jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxRuntime.jsxs("div", { className: styles$i.emptyState, children: ["No results found for \"", query, "\""] })) : (jsxRuntime.jsx("div", { className: styles$i.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
2651
+ return (jsxRuntime.jsxs("div", { ref: searchRef, className: `${styles$j.searchContainer} ${className || ''}`, children: [jsxRuntime.jsxs("div", { className: styles$j.searchInputWrapper, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$j.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, onFocus: () => query.trim() && results.length > 0 && setIsDropdownOpen(true), placeholder: placeholder, className: styles$j.searchInput, "aria-label": "Search", "aria-expanded": isDropdownOpen, "aria-controls": "search-results", "aria-autocomplete": "list" }), query && (jsxRuntime.jsx(framerMotion.motion.button, { className: styles$j.clearButton, onClick: handleClear, whileHover: { scale: 1.1 }, whileTap: { scale: 0.9 }, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, children: jsxRuntime.jsx(lucideReact.X, {}) })), showFilter && (jsxRuntime.jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$j.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isDropdownOpen && (jsxRuntime.jsx(framerMotion.motion.div, { ref: resultsRef, id: "search-results", className: styles$j.resultsDropdown, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, children: isLoading ? (jsxRuntime.jsxs("div", { className: styles$j.loadingState, children: [jsxRuntime.jsx("div", { className: styles$j.spinner }), jsxRuntime.jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxRuntime.jsxs("div", { className: styles$j.emptyState, children: ["No results found for \"", query, "\""] })) : (jsxRuntime.jsx("div", { className: styles$j.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
2652
2652
  const Icon = entityIcons[type];
2653
- return (jsxRuntime.jsxs("div", { className: styles$i.resultGroup, children: [jsxRuntime.jsxs("div", { className: styles$i.groupHeader, children: [Icon && jsxRuntime.jsx(Icon, { className: styles$i.groupIcon }), jsxRuntime.jsx("span", { className: styles$i.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsxRuntime.jsx("span", { className: styles$i.groupCount, children: groupResults.length })] }), jsxRuntime.jsx("div", { className: styles$i.groupResults, children: groupResults.map((result) => {
2653
+ return (jsxRuntime.jsxs("div", { className: styles$j.resultGroup, children: [jsxRuntime.jsxs("div", { className: styles$j.groupHeader, children: [Icon && jsxRuntime.jsx(Icon, { className: styles$j.groupIcon }), jsxRuntime.jsx("span", { className: styles$j.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsxRuntime.jsx("span", { className: styles$j.groupCount, children: groupResults.length })] }), jsxRuntime.jsx("div", { className: styles$j.groupResults, children: groupResults.map((result) => {
2654
2654
  const globalIndex = results.indexOf(result);
2655
- return (jsxRuntime.jsxs(framerMotion.motion.button, { "data-result-index": globalIndex, className: `${styles$i.resultItem} ${highlightedIndex === globalIndex ? styles$i.highlighted : ''}`, onClick: () => handleResultClick(result), whileHover: { x: 4 }, onMouseEnter: () => setHighlightedIndex(globalIndex), children: [jsxRuntime.jsxs("div", { className: styles$i.resultContent, children: [jsxRuntime.jsx("div", { className: styles$i.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsxRuntime.jsx("div", { className: styles$i.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsxRuntime.jsx("div", { className: styles$i.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
2655
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { "data-result-index": globalIndex, className: `${styles$j.resultItem} ${highlightedIndex === globalIndex ? styles$j.highlighted : ''}`, onClick: () => handleResultClick(result), whileHover: { x: 4 }, onMouseEnter: () => setHighlightedIndex(globalIndex), children: [jsxRuntime.jsxs("div", { className: styles$j.resultContent, children: [jsxRuntime.jsx("div", { className: styles$j.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsxRuntime.jsx("div", { className: styles$j.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsxRuntime.jsx("div", { className: styles$j.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
2656
2656
  }) })] }, type));
2657
2657
  }) })) })) })] }));
2658
2658
  };
2659
2659
 
2660
- var styles$h = {"timeInput":"TimeInput-module_timeInput__h1DpT","label":"TimeInput-module_label__d4rZw","required":"TimeInput-module_required__rc1vq","picker":"TimeInput-module_picker__9c6EI","error":"TimeInput-module_error__gJnpk","disabled":"TimeInput-module_disabled__wxiZ-"};
2660
+ var styles$i = {"timeInput":"TimeInput-module_timeInput__h1DpT","label":"TimeInput-module_label__d4rZw","required":"TimeInput-module_required__rc1vq","picker":"TimeInput-module_picker__9c6EI","error":"TimeInput-module_error__gJnpk","disabled":"TimeInput-module_disabled__wxiZ-"};
2661
2661
 
2662
- const lightTheme = styles$B.createTheme({
2662
+ const lightTheme = styles$C.createTheme({
2663
2663
  palette: {
2664
2664
  mode: 'light',
2665
2665
  primary: { main: '#3b82f6' },
@@ -2673,7 +2673,7 @@ const lightTheme = styles$B.createTheme({
2673
2673
  },
2674
2674
  },
2675
2675
  });
2676
- const darkTheme = styles$B.createTheme({
2676
+ const darkTheme = styles$C.createTheme({
2677
2677
  palette: {
2678
2678
  mode: 'dark',
2679
2679
  primary: { main: '#f5b829' },
@@ -2693,26 +2693,26 @@ function TimeInput({ label, value, onChange, error = false, success = false, loa
2693
2693
  !!document.documentElement.getAttribute('data-theme')?.includes('dark');
2694
2694
  const muiTheme = React.useMemo(() => (isDark ? darkTheme : lightTheme), [isDark]);
2695
2695
  const getContainerClassName = () => {
2696
- const classes = [styles$h.timeInput];
2696
+ const classes = [styles$i.timeInput];
2697
2697
  if (error)
2698
- classes.push(styles$h.error);
2698
+ classes.push(styles$i.error);
2699
2699
  if (success)
2700
- classes.push(styles$h.success);
2700
+ classes.push(styles$i.success);
2701
2701
  if (loading)
2702
- classes.push(styles$h.loading);
2702
+ classes.push(styles$i.loading);
2703
2703
  if (disabled)
2704
- classes.push(styles$h.disabled);
2704
+ classes.push(styles$i.disabled);
2705
2705
  if (className)
2706
2706
  classes.push(className);
2707
2707
  return classes.join(' ');
2708
2708
  };
2709
- return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { className: styles$h.label, children: [label, required && jsxRuntime.jsx("span", { className: styles$h.required, children: "*" })] })), jsxRuntime.jsx(styles$B.ThemeProvider, { theme: muiTheme, children: jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, children: jsxRuntime.jsx(MobileTimePicker.MobileTimePicker, { value: dayjsValue, onChange: (newValue) => {
2709
+ return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { className: styles$i.label, children: [label, required && jsxRuntime.jsx("span", { className: styles$i.required, children: "*" })] })), jsxRuntime.jsx(styles$C.ThemeProvider, { theme: muiTheme, children: jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, children: jsxRuntime.jsx(MobileTimePicker.MobileTimePicker, { value: dayjsValue, onChange: (newValue) => {
2710
2710
  onChange(newValue ? newValue.format('HH:mm') : '');
2711
2711
  }, ampm: false, views: ['hours', 'minutes'], disabled: disabled || loading, slotProps: {
2712
2712
  textField: {
2713
2713
  size: 'small',
2714
2714
  fullWidth: true,
2715
- className: styles$h.picker,
2715
+ className: styles$i.picker,
2716
2716
  sx: {
2717
2717
  '& .MuiPickersOutlinedInput-root': {
2718
2718
  fontFamily: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace",
@@ -2800,7 +2800,7 @@ const ThemeProvider = ({ children, defaultTheme = 'light', storageKey = 'app-the
2800
2800
  return (jsxRuntime.jsx(ThemeContext.Provider, { value: { theme, setTheme, toggleTheme }, children: children }));
2801
2801
  };
2802
2802
 
2803
- var styles$g = {"button":"ThemeSwitcher-module_button__VfRjU","iconWrapper":"ThemeSwitcher-module_iconWrapper__FpHo8","label":"ThemeSwitcher-module_label__2Hfkp","toggle":"ThemeSwitcher-module_toggle__ATXx4","toggleTrack":"ThemeSwitcher-module_toggleTrack__x28Rv","toggleThumb":"ThemeSwitcher-module_toggleThumb__V8QeN","dropdown":"ThemeSwitcher-module_dropdown__3qLdt","dropdownTrigger":"ThemeSwitcher-module_dropdownTrigger__UzYV5","dropdownMenu":"ThemeSwitcher-module_dropdownMenu__3L5hT","dropdownItem":"ThemeSwitcher-module_dropdownItem__inw-K","active":"ThemeSwitcher-module_active__OHP19","icon":"ThemeSwitcher-module_icon__iRZiJ","text":"ThemeSwitcher-module_text__OCOoA"};
2803
+ var styles$h = {"button":"ThemeSwitcher-module_button__VfRjU","iconWrapper":"ThemeSwitcher-module_iconWrapper__FpHo8","label":"ThemeSwitcher-module_label__2Hfkp","toggle":"ThemeSwitcher-module_toggle__ATXx4","toggleTrack":"ThemeSwitcher-module_toggleTrack__x28Rv","toggleThumb":"ThemeSwitcher-module_toggleThumb__V8QeN","dropdown":"ThemeSwitcher-module_dropdown__3qLdt","dropdownTrigger":"ThemeSwitcher-module_dropdownTrigger__UzYV5","dropdownMenu":"ThemeSwitcher-module_dropdownMenu__3L5hT","dropdownItem":"ThemeSwitcher-module_dropdownItem__inw-K","active":"ThemeSwitcher-module_active__OHP19","icon":"ThemeSwitcher-module_icon__iRZiJ","text":"ThemeSwitcher-module_text__OCOoA"};
2804
2804
 
2805
2805
  const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '', currentTheme, onThemeChange, themes: customThemes, }) => {
2806
2806
  // Use safe version that returns null when outside a ThemeProvider
@@ -2821,19 +2821,19 @@ const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '',
2821
2821
  if (variant === 'toggle') {
2822
2822
  // Simple toggle between light and dark
2823
2823
  const isDark = theme.includes('dark');
2824
- return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$g.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$g.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$g.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsxRuntime.jsx(lucideReact.Moon, { size: 14 }) : jsxRuntime.jsx(lucideReact.Sun, { size: 14 }) }) }), showLabel && jsxRuntime.jsx("span", { className: styles$g.label, children: isDark ? 'Dark' : 'Light' })] }));
2824
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$h.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$h.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$h.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsxRuntime.jsx(lucideReact.Moon, { size: 14 }) : jsxRuntime.jsx(lucideReact.Sun, { size: 14 }) }) }), showLabel && jsxRuntime.jsx("span", { className: styles$h.label, children: isDark ? 'Dark' : 'Light' })] }));
2825
2825
  }
2826
2826
  if (variant === 'dropdown') {
2827
- return (jsxRuntime.jsxs("div", { className: `${styles$g.dropdown} ${className}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$g.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentThemeData.icon, showLabel && jsxRuntime.jsx("span", { className: styles$g.label, children: currentThemeData.label })] }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$g.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$g.dropdownItem} ${theme === t.value ? styles$g.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsxRuntime.jsx("span", { className: styles$g.icon, children: t.icon }), jsxRuntime.jsx("span", { className: styles$g.text, children: t.label })] }, t.value))) })] }));
2827
+ return (jsxRuntime.jsxs("div", { className: `${styles$h.dropdown} ${className}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$h.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentThemeData.icon, showLabel && jsxRuntime.jsx("span", { className: styles$h.label, children: currentThemeData.label })] }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$h.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$h.dropdownItem} ${theme === t.value ? styles$h.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsxRuntime.jsx("span", { className: styles$h.icon, children: t.icon }), jsxRuntime.jsx("span", { className: styles$h.text, children: t.label })] }, t.value))) })] }));
2828
2828
  }
2829
2829
  // Default button variant - cycles through themes
2830
- return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$g.button} ${className}`, onClick: () => {
2830
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$h.button} ${className}`, onClick: () => {
2831
2831
  const nextIndex = (currentThemeIndex + 1) % themes.length;
2832
2832
  setTheme(themes[nextIndex].value);
2833
- }, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$g.iconWrapper, children: currentThemeData.icon }, theme), showLabel && jsxRuntime.jsx("span", { className: styles$g.label, children: currentThemeData.label })] }));
2833
+ }, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$h.iconWrapper, children: currentThemeData.icon }, theme), showLabel && jsxRuntime.jsx("span", { className: styles$h.label, children: currentThemeData.label })] }));
2834
2834
  };
2835
2835
 
2836
- var styles$f = {"tabs":"Tabs-module_tabs__Vlvn7","tab":"Tabs-module_tab__uQKim","tabIcon":"Tabs-module_tabIcon__AgN-O","fullWidth":"Tabs-module_fullWidth__X-GHP"};
2836
+ var styles$g = {"tabs":"Tabs-module_tabs__Vlvn7","tab":"Tabs-module_tab__uQKim","tabIcon":"Tabs-module_tabIcon__AgN-O","fullWidth":"Tabs-module_fullWidth__X-GHP"};
2837
2837
 
2838
2838
  // Default tabs for backwards compatibility
2839
2839
  const defaultTabs = [
@@ -2844,39 +2844,39 @@ const defaultTabs = [
2844
2844
  ];
2845
2845
  const Tabs = ({ activeTab, onTabChange, tabs: customTabs, className = '', fullWidth = false }) => {
2846
2846
  const tabs = customTabs ?? defaultTabs;
2847
- return (jsxRuntime.jsx("div", { className: `${styles$f.tabs} ${fullWidth ? styles$f.fullWidth : ''} ${className}`, children: tabs.map((tab) => {
2847
+ return (jsxRuntime.jsx("div", { className: `${styles$g.tabs} ${fullWidth ? styles$g.fullWidth : ''} ${className}`, children: tabs.map((tab) => {
2848
2848
  const isActive = activeTab === tab.id;
2849
- return (jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$f.tab, "data-active": isActive, onClick: () => onTabChange(tab.id), style: { position: 'relative' }, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: {
2849
+ return (jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$g.tab, "data-active": isActive, onClick: () => onTabChange(tab.id), style: { position: 'relative' }, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: {
2850
2850
  rotate: isActive ? [0, -10, 10, -5, 5, 0] : 0,
2851
2851
  }, transition: {
2852
2852
  rotate: {
2853
2853
  duration: 0.5,
2854
2854
  ease: 'easeInOut'
2855
2855
  }
2856
- }, children: tab.icon && (React.isValidElement(tab.icon) ? (jsxRuntime.jsx("span", { className: styles$f.tabIcon, children: tab.icon })) : (jsxRuntime.jsx("span", { className: styles$f.tabIcon, children: React.createElement(tab.icon) }))) }), jsxRuntime.jsx("span", { children: tab.label })] }, tab.id));
2856
+ }, children: tab.icon && (React.isValidElement(tab.icon) ? (jsxRuntime.jsx("span", { className: styles$g.tabIcon, children: tab.icon })) : (jsxRuntime.jsx("span", { className: styles$g.tabIcon, children: React.createElement(tab.icon) }))) }), jsxRuntime.jsx("span", { children: tab.label })] }, tab.id));
2857
2857
  }) }));
2858
2858
  };
2859
2859
 
2860
- var styles$e = {"toastContainer":"Toast-module_toastContainer__gp5C0","toast":"Toast-module_toast__eenNR","toastSuccess":"Toast-module_toastSuccess__e-cSx","toastError":"Toast-module_toastError__6JO9w","toastWarning":"Toast-module_toastWarning__pJoF1","toastInfo":"Toast-module_toastInfo__y33kR","icon":"Toast-module_icon__Z-D6i","iconSuccess":"Toast-module_iconSuccess__ehY27","iconError":"Toast-module_iconError__nXhZz","iconWarning":"Toast-module_iconWarning__Ie8oD","iconInfo":"Toast-module_iconInfo__8vOf5","content":"Toast-module_content__eBhK8","title":"Toast-module_title__EfUfZ","message":"Toast-module_message__l4pyr","closeButton":"Toast-module_closeButton__UWOVG","progressBar":"Toast-module_progressBar__fGwBU"};
2860
+ var styles$f = {"toastContainer":"Toast-module_toastContainer__gp5C0","toast":"Toast-module_toast__eenNR","toastSuccess":"Toast-module_toastSuccess__e-cSx","toastError":"Toast-module_toastError__6JO9w","toastWarning":"Toast-module_toastWarning__pJoF1","toastInfo":"Toast-module_toastInfo__y33kR","icon":"Toast-module_icon__Z-D6i","iconSuccess":"Toast-module_iconSuccess__ehY27","iconError":"Toast-module_iconError__nXhZz","iconWarning":"Toast-module_iconWarning__Ie8oD","iconInfo":"Toast-module_iconInfo__8vOf5","content":"Toast-module_content__eBhK8","title":"Toast-module_title__EfUfZ","message":"Toast-module_message__l4pyr","closeButton":"Toast-module_closeButton__UWOVG","progressBar":"Toast-module_progressBar__fGwBU"};
2861
2861
 
2862
2862
  const getIcon = (type) => {
2863
2863
  switch (type) {
2864
2864
  case 'success':
2865
- return (jsxRuntime.jsx("svg", { className: `${styles$e.icon} ${styles$e.iconSuccess}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
2865
+ return (jsxRuntime.jsx("svg", { className: `${styles$f.icon} ${styles$f.iconSuccess}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
2866
2866
  case 'error':
2867
- return (jsxRuntime.jsx("svg", { className: `${styles$e.icon} ${styles$e.iconError}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
2867
+ return (jsxRuntime.jsx("svg", { className: `${styles$f.icon} ${styles$f.iconError}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
2868
2868
  case 'warning':
2869
- return (jsxRuntime.jsx("svg", { className: `${styles$e.icon} ${styles$e.iconWarning}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }));
2869
+ return (jsxRuntime.jsx("svg", { className: `${styles$f.icon} ${styles$f.iconWarning}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }));
2870
2870
  case 'info':
2871
- return (jsxRuntime.jsx("svg", { className: `${styles$e.icon} ${styles$e.iconInfo}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }));
2871
+ return (jsxRuntime.jsx("svg", { className: `${styles$f.icon} ${styles$f.iconInfo}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }));
2872
2872
  }
2873
2873
  };
2874
2874
  const getToastStyle = (type) => {
2875
2875
  switch (type) {
2876
- case 'success': return styles$e.toastSuccess;
2877
- case 'error': return styles$e.toastError;
2878
- case 'warning': return styles$e.toastWarning;
2879
- case 'info': return styles$e.toastInfo;
2876
+ case 'success': return styles$f.toastSuccess;
2877
+ case 'error': return styles$f.toastError;
2878
+ case 'warning': return styles$f.toastWarning;
2879
+ case 'info': return styles$f.toastInfo;
2880
2880
  default: return '';
2881
2881
  }
2882
2882
  };
@@ -2898,7 +2898,7 @@ const ToastItem = ({ toast, removeToast, }) => {
2898
2898
  clearInterval(interval);
2899
2899
  };
2900
2900
  }, [toast.id, duration, removeToast]);
2901
- return (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$e.toast} ${getToastStyle(toast.type)}`, initial: { opacity: 0, x: 100, scale: 0.9 }, animate: { opacity: 1, x: 0, scale: 1 }, exit: { opacity: 0, x: 100, scale: 0.9 }, transition: { type: 'spring', stiffness: 500, damping: 40 }, layout: true, children: [getIcon(toast.type), jsxRuntime.jsxs("div", { className: styles$e.content, children: [toast.title && jsxRuntime.jsx("p", { className: styles$e.title, children: toast.title }), jsxRuntime.jsx("p", { className: styles$e.message, children: toast.message })] }), jsxRuntime.jsx("button", { className: styles$e.closeButton, onClick: () => removeToast(toast.id), "aria-label": "Close notification", children: jsxRuntime.jsx("svg", { width: "16", height: "16", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$e.progressBar, initial: { width: '100%' }, animate: { width: `${progress}%` }, style: {
2901
+ return (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$f.toast} ${getToastStyle(toast.type)}`, initial: { opacity: 0, x: 100, scale: 0.9 }, animate: { opacity: 1, x: 0, scale: 1 }, exit: { opacity: 0, x: 100, scale: 0.9 }, transition: { type: 'spring', stiffness: 500, damping: 40 }, layout: true, children: [getIcon(toast.type), jsxRuntime.jsxs("div", { className: styles$f.content, children: [toast.title && jsxRuntime.jsx("p", { className: styles$f.title, children: toast.title }), jsxRuntime.jsx("p", { className: styles$f.message, children: toast.message })] }), jsxRuntime.jsx("button", { className: styles$f.closeButton, onClick: () => removeToast(toast.id), "aria-label": "Close notification", children: jsxRuntime.jsx("svg", { width: "16", height: "16", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$f.progressBar, initial: { width: '100%' }, animate: { width: `${progress}%` }, style: {
2902
2902
  color: toast.type === 'success' ? '#10B981'
2903
2903
  : toast.type === 'error' ? '#EF4444'
2904
2904
  : toast.type === 'warning' ? '#F59E0B'
@@ -2908,10 +2908,10 @@ const ToastItem = ({ toast, removeToast, }) => {
2908
2908
  const ToastContainer = ({ toasts, removeToast }) => {
2909
2909
  if (typeof document === 'undefined')
2910
2910
  return null;
2911
- return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$e.toastContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "sync", children: toasts.map((toast) => (jsxRuntime.jsx(ToastItem, { toast: toast, removeToast: removeToast }, toast.id))) }) }), document.body);
2911
+ return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$f.toastContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "sync", children: toasts.map((toast) => (jsxRuntime.jsx(ToastItem, { toast: toast, removeToast: removeToast }, toast.id))) }) }), document.body);
2912
2912
  };
2913
2913
 
2914
- var styles$d = {"breadcrumb":"Breadcrumb-module_breadcrumb__pGabz","separator":"Breadcrumb-module_separator__UCmyy","item":"Breadcrumb-module_item__0cLOg","link":"Breadcrumb-module_link__udp8M","current":"Breadcrumb-module_current__3DpQc"};
2914
+ var styles$e = {"breadcrumb":"Breadcrumb-module_breadcrumb__pGabz","separator":"Breadcrumb-module_separator__UCmyy","item":"Breadcrumb-module_item__0cLOg","link":"Breadcrumb-module_link__udp8M","current":"Breadcrumb-module_current__3DpQc"};
2915
2915
 
2916
2916
  /**
2917
2917
  * Breadcrumb Component
@@ -2930,13 +2930,13 @@ var styles$d = {"breadcrumb":"Breadcrumb-module_breadcrumb__pGabz","separator":"
2930
2930
  * />
2931
2931
  */
2932
2932
  const Breadcrumb = ({ items, onNavigate, className = '' }) => {
2933
- return (jsxRuntime.jsx("nav", { className: `${styles$d.breadcrumb} ${className}`, "aria-label": "Breadcrumb", children: items.map((item, index) => {
2933
+ return (jsxRuntime.jsx("nav", { className: `${styles$e.breadcrumb} ${className}`, "aria-label": "Breadcrumb", children: items.map((item, index) => {
2934
2934
  const isLast = index === items.length - 1;
2935
- return (jsxRuntime.jsxs(React.Fragment, { children: [index > 0 && jsxRuntime.jsx(lucideReact.ChevronRight, { size: 14, className: styles$d.separator }), isLast || !item.href ? (jsxRuntime.jsx("span", { className: `${styles$d.item} ${isLast ? styles$d.current : ''}`, children: item.label })) : (jsxRuntime.jsx("button", { className: `${styles$d.item} ${styles$d.link}`, onClick: () => onNavigate?.(item.href), children: item.label }))] }, index));
2935
+ return (jsxRuntime.jsxs(React.Fragment, { children: [index > 0 && jsxRuntime.jsx(lucideReact.ChevronRight, { size: 14, className: styles$e.separator }), isLast || !item.href ? (jsxRuntime.jsx("span", { className: `${styles$e.item} ${isLast ? styles$e.current : ''}`, children: item.label })) : (jsxRuntime.jsx("button", { className: `${styles$e.item} ${styles$e.link}`, onClick: () => onNavigate?.(item.href), children: item.label }))] }, index));
2936
2936
  }) }));
2937
2937
  };
2938
2938
 
2939
- var styles$c = {"overlay":"LiquidButton-module_overlay__-P-xm","container":"LiquidButton-module_container__f1COS","actions":"LiquidButton-module_actions__XBz7p","actionButton":"LiquidButton-module_actionButton__PlEOk","actionLabel":"LiquidButton-module_actionLabel__tIGHE","button":"LiquidButton-module_button__znjyS"};
2939
+ var styles$d = {"overlay":"LiquidButton-module_overlay__-P-xm","container":"LiquidButton-module_container__f1COS","actions":"LiquidButton-module_actions__XBz7p","actionButton":"LiquidButton-module_actionButton__PlEOk","actionLabel":"LiquidButton-module_actionLabel__tIGHE","button":"LiquidButton-module_button__znjyS"};
2940
2940
 
2941
2941
  /**
2942
2942
  * LiquidButton Component
@@ -2962,13 +2962,13 @@ const LiquidButton = ({ actions, icon: Icon = lucideReact.Plus, className = '',
2962
2962
  setExpanded(false);
2963
2963
  action.onClick();
2964
2964
  }, []);
2965
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$c.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: handleToggle })) }), jsxRuntime.jsxs("div", { className: `${styles$c.container} ${className}`, children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx("div", { className: styles$c.actions, children: actions.map((action, index) => (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: styles$c.actionButton, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, transition: {
2965
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$d.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: handleToggle })) }), jsxRuntime.jsxs("div", { className: `${styles$d.container} ${className}`, children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx("div", { className: styles$d.actions, children: actions.map((action, index) => (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: styles$d.actionButton, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, transition: {
2966
2966
  duration: 0.15,
2967
2967
  delay: (actions.length - 1 - index) * 0.05,
2968
- }, onClick: () => handleAction(action), children: [jsxRuntime.jsx(action.icon, { size: 18, color: action.color }), jsxRuntime.jsx("span", { className: styles$c.actionLabel, children: action.label })] }, action.key))) })) }), jsxRuntime.jsx(framerMotion.motion.button, { type: "button", className: styles$c.button, onClick: handleToggle, animate: { rotate: expanded ? 45 : 0 }, transition: { duration: 0.2 }, "aria-label": expanded ? 'Close actions' : 'Open actions', children: jsxRuntime.jsx(Icon, { size: 24, strokeWidth: 2.5 }) })] })] }));
2968
+ }, onClick: () => handleAction(action), children: [jsxRuntime.jsx(action.icon, { size: 18, color: action.color }), jsxRuntime.jsx("span", { className: styles$d.actionLabel, children: action.label })] }, action.key))) })) }), jsxRuntime.jsx(framerMotion.motion.button, { type: "button", className: styles$d.button, onClick: handleToggle, animate: { rotate: expanded ? 45 : 0 }, transition: { duration: 0.2 }, "aria-label": expanded ? 'Close actions' : 'Open actions', children: jsxRuntime.jsx(Icon, { size: 24, strokeWidth: 2.5 }) })] })] }));
2969
2969
  };
2970
2970
 
2971
- var styles$b = {"wrap":"StreamConsole-module_wrap__MnVWw","header":"StreamConsole-module_header__FjnRM","headerLeft":"StreamConsole-module_headerLeft__gNDyh","statusDot":"StreamConsole-module_statusDot__xQ254","spin":"StreamConsole-module_spin__OrOeL","label":"StreamConsole-module_label__rJIDm","statusText":"StreamConsole-module_statusText__oG-ej","dismiss":"StreamConsole-module_dismiss__WH3Kv","body":"StreamConsole-module_body__-HIK-","hint":"StreamConsole-module_hint__BA4SI","line":"StreamConsole-module_line__5hMY2","linePrefix":"StreamConsole-module_linePrefix__xR-Oj","lineText":"StreamConsole-module_lineText__IyRSF","lineLabel":"StreamConsole-module_lineLabel__z-qj4"};
2971
+ var styles$c = {"wrap":"StreamConsole-module_wrap__MnVWw","header":"StreamConsole-module_header__FjnRM","headerLeft":"StreamConsole-module_headerLeft__gNDyh","statusDot":"StreamConsole-module_statusDot__xQ254","spin":"StreamConsole-module_spin__OrOeL","label":"StreamConsole-module_label__rJIDm","statusText":"StreamConsole-module_statusText__oG-ej","dismiss":"StreamConsole-module_dismiss__WH3Kv","body":"StreamConsole-module_body__-HIK-","hint":"StreamConsole-module_hint__BA4SI","line":"StreamConsole-module_line__5hMY2","linePrefix":"StreamConsole-module_linePrefix__xR-Oj","lineText":"StreamConsole-module_lineText__IyRSF","lineLabel":"StreamConsole-module_lineLabel__z-qj4"};
2972
2972
 
2973
2973
  // Known prefixes produced by stream-json summarizers (DAO-style):
2974
2974
  // "bash: ls -la", "read: path/to/file", "edit: path/to/file",
@@ -3034,21 +3034,21 @@ function StreamConsole({ stream, onCancel, onDismiss, hideDismiss = false, runni
3034
3034
  ? successLabel
3035
3035
  : errorLabel;
3036
3036
  const canShowDismiss = !hideDismiss && (stream.status === 'running' ? !!onCancel : !!onDismiss);
3037
- return (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$b.wrap, "data-status": stream.status, initial: { opacity: 0, y: -8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -8 }, transition: { duration: 0.18 }, children: [jsxRuntime.jsxs("header", { className: styles$b.header, children: [jsxRuntime.jsxs("div", { className: styles$b.headerLeft, children: [jsxRuntime.jsx("span", { className: styles$b.statusDot, "data-status": stream.status, children: jsxRuntime.jsx(Icon, { size: 12, className: stream.status === 'running' ? styles$b.spin : '' }) }), jsxRuntime.jsx("span", { className: styles$b.label, children: stream.label }), jsxRuntime.jsx("span", { className: styles$b.statusText, children: statusLabel })] }), canShowDismiss && (jsxRuntime.jsx("button", { type: "button", className: styles$b.dismiss, "aria-label": stream.status === 'running' ? 'Cancel' : 'Dismiss', onClick: () => {
3037
+ return (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$c.wrap, "data-status": stream.status, initial: { opacity: 0, y: -8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -8 }, transition: { duration: 0.18 }, children: [jsxRuntime.jsxs("header", { className: styles$c.header, children: [jsxRuntime.jsxs("div", { className: styles$c.headerLeft, children: [jsxRuntime.jsx("span", { className: styles$c.statusDot, "data-status": stream.status, children: jsxRuntime.jsx(Icon, { size: 12, className: stream.status === 'running' ? styles$c.spin : '' }) }), jsxRuntime.jsx("span", { className: styles$c.label, children: stream.label }), jsxRuntime.jsx("span", { className: styles$c.statusText, children: statusLabel })] }), canShowDismiss && (jsxRuntime.jsx("button", { type: "button", className: styles$c.dismiss, "aria-label": stream.status === 'running' ? 'Cancel' : 'Dismiss', onClick: () => {
3038
3038
  if (stream.status === 'running')
3039
3039
  onCancel?.(stream.id);
3040
3040
  else
3041
3041
  onDismiss?.(stream.id);
3042
- }, children: jsxRuntime.jsx(lucideReact.X, { size: 14 }) }))] }), jsxRuntime.jsxs("div", { className: styles$b.body, ref: listRef, children: [stream.events.length === 0 && stream.status === 'running' && (jsxRuntime.jsx("p", { className: styles$b.hint, children: "Waiting for output\u2026" })), stream.events.map((event, i) => {
3042
+ }, children: jsxRuntime.jsx(lucideReact.X, { size: 14 }) }))] }), jsxRuntime.jsxs("div", { className: styles$c.body, ref: listRef, children: [stream.events.length === 0 && stream.status === 'running' && (jsxRuntime.jsx("p", { className: styles$c.hint, children: "Waiting for output\u2026" })), stream.events.map((event, i) => {
3043
3043
  const step = event.type === 'step' ? parseStep(event.message) : null;
3044
3044
  const StepIcon = step?.subtype ? STEP_ICON[step.subtype] : null;
3045
- return (jsxRuntime.jsxs("p", { className: styles$b.line, "data-type": event.type, "data-subtype": step?.subtype ?? undefined, children: [jsxRuntime.jsx("span", { className: styles$b.linePrefix, children: StepIcon ? (jsxRuntime.jsx(StepIcon, { size: 11 })) : event.type === 'error' ? ('!') : event.type === 'warning' ? ('⚠') : event.type === 'success' ? ('✓') : ('·') }), step?.label ? (jsxRuntime.jsx("span", { className: styles$b.lineLabel, children: step.label })) : null, jsxRuntime.jsx("span", { className: styles$b.lineText, children: step ? step.body : event.message })] }, i));
3046
- }), stream.status === 'error' && stream.errorMessage && (jsxRuntime.jsxs("p", { className: styles$b.line, "data-type": "error", children: [jsxRuntime.jsx("span", { className: styles$b.linePrefix, children: "!" }), jsxRuntime.jsx("span", { className: styles$b.lineText, children: stream.errorMessage })] }))] })] }));
3045
+ return (jsxRuntime.jsxs("p", { className: styles$c.line, "data-type": event.type, "data-subtype": step?.subtype ?? undefined, children: [jsxRuntime.jsx("span", { className: styles$c.linePrefix, children: StepIcon ? (jsxRuntime.jsx(StepIcon, { size: 11 })) : event.type === 'error' ? ('!') : event.type === 'warning' ? ('⚠') : event.type === 'success' ? ('✓') : ('·') }), step?.label ? (jsxRuntime.jsx("span", { className: styles$c.lineLabel, children: step.label })) : null, jsxRuntime.jsx("span", { className: styles$c.lineText, children: step ? step.body : event.message })] }, i));
3046
+ }), stream.status === 'error' && stream.errorMessage && (jsxRuntime.jsxs("p", { className: styles$c.line, "data-type": "error", children: [jsxRuntime.jsx("span", { className: styles$c.linePrefix, children: "!" }), jsxRuntime.jsx("span", { className: styles$c.lineText, children: stream.errorMessage })] }))] })] }));
3047
3047
  }
3048
3048
 
3049
- var styles$a = {"calendar":"Calendar-module_calendar__3mIJS","loading":"Calendar-module_loading__59Z9-","loadingSpinner":"Calendar-module_loadingSpinner__7MXqV","header":"Calendar-module_header__cZHNA","navigation":"Calendar-module_navigation__PGkpY","navButton":"Calendar-module_navButton__kOe-w","title":"Calendar-module_title__oJZ7m","controls":"Calendar-module_controls__i1Z38","exportDropdown":"Calendar-module_exportDropdown__yQX4q","exportButton":"Calendar-module_exportButton__dx7--","nightToggle":"Calendar-module_nightToggle__JGvmM","exportMenu":"Calendar-module_exportMenu__-lZ-8","exportMenuItem":"Calendar-module_exportMenuItem__D9MdL","todayButton":"Calendar-module_todayButton__Ac9zc","viewToggle":"Calendar-module_viewToggle__Fhg2t","viewButton":"Calendar-module_viewButton__J2WY6","active":"Calendar-module_active__lIqH-","filterBar":"Calendar-module_filterBar__ZD-lX","filterPill":"Calendar-module_filterPill__f7S8p","filterPillActive":"Calendar-module_filterPillActive__9Wtm9","filterDot":"Calendar-module_filterDot__E1Hp8","weekDays":"Calendar-module_weekDays__4J-8f","withWeekNumbers":"Calendar-module_withWeekNumbers__qbnUY","weekNumberHeader":"Calendar-module_weekNumberHeader__xhKbB","weekDay":"Calendar-module_weekDay__cg8Gr","daysGrid":"Calendar-module_daysGrid__ER0GM","dayCell":"Calendar-module_dayCell__TV-HR","dayNumber":"Calendar-module_dayNumber__ICH-X","today":"Calendar-module_today__eGuUU","events":"Calendar-module_events__qdbs7","event":"Calendar-module_event__Q1Zq3","eventTitle":"Calendar-module_eventTitle__XU7Wd","eventTime":"Calendar-module_eventTime__pMGEB","otherMonth":"Calendar-module_otherMonth__r6VJK","selected":"Calendar-module_selected__5e6h0","compact":"Calendar-module_compact__i0SF3","dots":"Calendar-module_dots__1Q7QR","dot":"Calendar-module_dot__tsCR1","dotMore":"Calendar-module_dotMore__emasD","weekNumberCell":"Calendar-module_weekNumberCell__bydCw","completed":"Calendar-module_completed__B-SHI","completedIcon":"Calendar-module_completedIcon__-oDZ9","moreEvents":"Calendar-module_moreEvents__TIKaT","emptyState":"Calendar-module_emptyState__2fcj7","dayView":"Calendar-module_dayView__PCIos","dayViewHeader":"Calendar-module_dayViewHeader__Gvxx2","timeColumnHeader":"Calendar-module_timeColumnHeader__B0btR","dayColumnHeader":"Calendar-module_dayColumnHeader__Rjqwg","allDayStrip":"Calendar-module_allDayStrip__VOqbV","allDayLabel":"Calendar-module_allDayLabel__2AmyT","allDayList":"Calendar-module_allDayList__6hFSb","dayViewScrollContainer":"Calendar-module_dayViewScrollContainer__84Byq","dayTimelineGrid":"Calendar-module_dayTimelineGrid__r1BNI","hourRow":"Calendar-module_hourRow__U-YN-","hourLabel":"Calendar-module_hourLabel__im84k","hourSlots":"Calendar-module_hourSlots__vbtYy","halfHourSlot":"Calendar-module_halfHourSlot__UWIri","halfHourSlotBottom":"Calendar-module_halfHourSlotBottom__aE5Mo","dayEventAnchor":"Calendar-module_dayEventAnchor__oryAi","weekTimeline":"Calendar-module_weekTimeline__q75EF","weekTimelineHeader":"Calendar-module_weekTimelineHeader__n5i06","weekDayColumnHeader":"Calendar-module_weekDayColumnHeader__u2ghX","weekDayLabel":"Calendar-module_weekDayLabel__i8Rm9","weekDayNumber":"Calendar-module_weekDayNumber__tqFKO","weekTimelineScroll":"Calendar-module_weekTimelineScroll__jesa0","weekTimelineGrid":"Calendar-module_weekTimelineGrid__MxIHF","weekTimeColumn":"Calendar-module_weekTimeColumn__rK4ZV","weekTimeSlot":"Calendar-module_weekTimeSlot__IFPUz","weekHourLabel":"Calendar-module_weekHourLabel__0ANmg","weekDayColumns":"Calendar-module_weekDayColumns__soiyU","weekDayColumn":"Calendar-module_weekDayColumn__sXVu0","weekHourRow":"Calendar-module_weekHourRow__FHcB2","weekEventAnchor":"Calendar-module_weekEventAnchor__nhG4x","currentTimeIndicator":"Calendar-module_currentTimeIndicator__GntOZ"};
3049
+ var styles$b = {"calendar":"Calendar-module_calendar__3mIJS","loading":"Calendar-module_loading__59Z9-","loadingSpinner":"Calendar-module_loadingSpinner__7MXqV","header":"Calendar-module_header__cZHNA","navigation":"Calendar-module_navigation__PGkpY","navButton":"Calendar-module_navButton__kOe-w","title":"Calendar-module_title__oJZ7m","controls":"Calendar-module_controls__i1Z38","exportDropdown":"Calendar-module_exportDropdown__yQX4q","exportButton":"Calendar-module_exportButton__dx7--","nightToggle":"Calendar-module_nightToggle__JGvmM","exportMenu":"Calendar-module_exportMenu__-lZ-8","exportMenuItem":"Calendar-module_exportMenuItem__D9MdL","todayButton":"Calendar-module_todayButton__Ac9zc","viewToggle":"Calendar-module_viewToggle__Fhg2t","viewButton":"Calendar-module_viewButton__J2WY6","active":"Calendar-module_active__lIqH-","filterBar":"Calendar-module_filterBar__ZD-lX","filterPill":"Calendar-module_filterPill__f7S8p","filterPillActive":"Calendar-module_filterPillActive__9Wtm9","filterDot":"Calendar-module_filterDot__E1Hp8","weekDays":"Calendar-module_weekDays__4J-8f","withWeekNumbers":"Calendar-module_withWeekNumbers__qbnUY","weekNumberHeader":"Calendar-module_weekNumberHeader__xhKbB","weekDay":"Calendar-module_weekDay__cg8Gr","daysGrid":"Calendar-module_daysGrid__ER0GM","dayCell":"Calendar-module_dayCell__TV-HR","dayNumber":"Calendar-module_dayNumber__ICH-X","today":"Calendar-module_today__eGuUU","events":"Calendar-module_events__qdbs7","event":"Calendar-module_event__Q1Zq3","eventTitle":"Calendar-module_eventTitle__XU7Wd","eventTime":"Calendar-module_eventTime__pMGEB","otherMonth":"Calendar-module_otherMonth__r6VJK","selected":"Calendar-module_selected__5e6h0","compact":"Calendar-module_compact__i0SF3","dots":"Calendar-module_dots__1Q7QR","dot":"Calendar-module_dot__tsCR1","dotMore":"Calendar-module_dotMore__emasD","weekNumberCell":"Calendar-module_weekNumberCell__bydCw","completed":"Calendar-module_completed__B-SHI","completedIcon":"Calendar-module_completedIcon__-oDZ9","moreEvents":"Calendar-module_moreEvents__TIKaT","emptyState":"Calendar-module_emptyState__2fcj7","dayView":"Calendar-module_dayView__PCIos","dayViewHeader":"Calendar-module_dayViewHeader__Gvxx2","timeColumnHeader":"Calendar-module_timeColumnHeader__B0btR","dayColumnHeader":"Calendar-module_dayColumnHeader__Rjqwg","allDayStrip":"Calendar-module_allDayStrip__VOqbV","allDayLabel":"Calendar-module_allDayLabel__2AmyT","allDayList":"Calendar-module_allDayList__6hFSb","dayViewScrollContainer":"Calendar-module_dayViewScrollContainer__84Byq","dayTimelineGrid":"Calendar-module_dayTimelineGrid__r1BNI","hourRow":"Calendar-module_hourRow__U-YN-","hourLabel":"Calendar-module_hourLabel__im84k","hourSlots":"Calendar-module_hourSlots__vbtYy","halfHourSlot":"Calendar-module_halfHourSlot__UWIri","halfHourSlotBottom":"Calendar-module_halfHourSlotBottom__aE5Mo","dayEventAnchor":"Calendar-module_dayEventAnchor__oryAi","weekTimeline":"Calendar-module_weekTimeline__q75EF","weekTimelineHeader":"Calendar-module_weekTimelineHeader__n5i06","weekDayColumnHeader":"Calendar-module_weekDayColumnHeader__u2ghX","weekDayLabel":"Calendar-module_weekDayLabel__i8Rm9","weekDayNumber":"Calendar-module_weekDayNumber__tqFKO","weekTimelineScroll":"Calendar-module_weekTimelineScroll__jesa0","weekTimelineGrid":"Calendar-module_weekTimelineGrid__MxIHF","weekTimeColumn":"Calendar-module_weekTimeColumn__rK4ZV","weekTimeSlot":"Calendar-module_weekTimeSlot__IFPUz","weekHourLabel":"Calendar-module_weekHourLabel__0ANmg","weekDayColumns":"Calendar-module_weekDayColumns__soiyU","weekDayColumn":"Calendar-module_weekDayColumn__sXVu0","weekHourRow":"Calendar-module_weekHourRow__FHcB2","weekEventAnchor":"Calendar-module_weekEventAnchor__nhG4x","currentTimeIndicator":"Calendar-module_currentTimeIndicator__GntOZ"};
3050
3050
 
3051
- var styles$9 = {"wrapper":"DayEventCard-module_wrapper__qvRgl","deleteUnderlay":"DayEventCard-module_deleteUnderlay__fTtuX","card":"DayEventCard-module_card__V9xTi","dragging":"DayEventCard-module_dragging__q19ID","completed":"DayEventCard-module_completed__tq8ol","text":"DayEventCard-module_text__3dWF7","grip":"DayEventCard-module_grip__tmim4","checkIcon":"DayEventCard-module_checkIcon__Ki67j","time":"DayEventCard-module_time__Ojdye","editButton":"DayEventCard-module_editButton__nDi-e"};
3051
+ var styles$a = {"wrapper":"DayEventCard-module_wrapper__qvRgl","deleteUnderlay":"DayEventCard-module_deleteUnderlay__fTtuX","card":"DayEventCard-module_card__V9xTi","dragging":"DayEventCard-module_dragging__q19ID","completed":"DayEventCard-module_completed__tq8ol","text":"DayEventCard-module_text__3dWF7","grip":"DayEventCard-module_grip__tmim4","checkIcon":"DayEventCard-module_checkIcon__Ki67j","time":"DayEventCard-module_time__Ojdye","editButton":"DayEventCard-module_editButton__nDi-e"};
3052
3052
 
3053
3053
  const SWIPE_DELETE_THRESHOLD = -80;
3054
3054
  const DayEventCard = ({ event, color, textColor, onComplete, onEdit, onDelete, onDragEnd, draggable = true, }) => {
@@ -3110,9 +3110,9 @@ const DayEventCard = ({ event, color, textColor, onComplete, onEdit, onDelete, o
3110
3110
  };
3111
3111
  const canSwipe = !!onDelete;
3112
3112
  const showGrip = draggable && !!onDragEnd;
3113
- return (jsxRuntime.jsxs("div", { className: styles$9.wrapper, children: [canSwipe && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$9.deleteUnderlay, style: { opacity: deleteOpacity }, children: [jsxRuntime.jsx(lucideReact.Trash2, { size: 16 }), jsxRuntime.jsx("span", { children: "Delete" })] })), jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$9.card} ${completed ? styles$9.completed : ''} ${verticalDragging ? styles$9.dragging : ''}`, style: { x, y, background: color, color: textColor, borderLeftColor: color }, drag: canSwipe && !verticalDragging ? 'x' : false, dragConstraints: canSwipe ? { left: -200, right: 0 } : undefined, dragElastic: 0.15, dragDirectionLock: true, onDragStart: () => {
3113
+ return (jsxRuntime.jsxs("div", { className: styles$a.wrapper, children: [canSwipe && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$a.deleteUnderlay, style: { opacity: deleteOpacity }, children: [jsxRuntime.jsx(lucideReact.Trash2, { size: 16 }), jsxRuntime.jsx("span", { children: "Delete" })] })), jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$a.card} ${completed ? styles$a.completed : ''} ${verticalDragging ? styles$a.dragging : ''}`, style: { x, y, background: color, color: textColor, borderLeftColor: color }, drag: canSwipe && !verticalDragging ? 'x' : false, dragConstraints: canSwipe ? { left: -200, right: 0 } : undefined, dragElastic: 0.15, dragDirectionLock: true, onDragStart: () => {
3114
3114
  didSwipe.current = true;
3115
- }, onDragEnd: handleSwipeEnd, whileTap: verticalDragging ? undefined : { scale: 0.98 }, animate: verticalDragging ? { scale: 1.03 } : { scale: 1 }, onClick: handleCardClick, children: [showGrip && (jsxRuntime.jsx("div", { className: styles$9.grip, onPointerDown: handleGripPointerDown, onPointerMove: handleGripPointerMove, onPointerUp: handleGripPointerUp, onPointerCancel: handleGripPointerUp, onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(lucideReact.GripVertical, { size: 14 }) })), completed && jsxRuntime.jsx(lucideReact.Check, { size: 14, className: styles$9.checkIcon, strokeWidth: 3 }), jsxRuntime.jsx("span", { className: styles$9.text, children: event.title }), event.time && jsxRuntime.jsx("span", { className: styles$9.time, children: event.time }), onEdit && (jsxRuntime.jsx("button", { className: styles$9.editButton, onClick: (e) => {
3115
+ }, onDragEnd: handleSwipeEnd, whileTap: verticalDragging ? undefined : { scale: 0.98 }, animate: verticalDragging ? { scale: 1.03 } : { scale: 1 }, onClick: handleCardClick, children: [showGrip && (jsxRuntime.jsx("div", { className: styles$a.grip, onPointerDown: handleGripPointerDown, onPointerMove: handleGripPointerMove, onPointerUp: handleGripPointerUp, onPointerCancel: handleGripPointerUp, onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(lucideReact.GripVertical, { size: 14 }) })), completed && jsxRuntime.jsx(lucideReact.Check, { size: 14, className: styles$a.checkIcon, strokeWidth: 3 }), jsxRuntime.jsx("span", { className: styles$a.text, children: event.title }), event.time && jsxRuntime.jsx("span", { className: styles$a.time, children: event.time }), onEdit && (jsxRuntime.jsx("button", { className: styles$a.editButton, onClick: (e) => {
3116
3116
  e.stopPropagation();
3117
3117
  onEdit(event);
3118
3118
  }, "aria-label": "Edit event", children: jsxRuntime.jsx(lucideReact.Pencil, { size: 13 }) }))] })] }));
@@ -3536,15 +3536,15 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3536
3536
  return Math.floor(diff / oneWeek) + 1;
3537
3537
  };
3538
3538
  if (loading) {
3539
- return (jsxRuntime.jsx("div", { className: `${styles$a.calendar} ${styles$a.loading} ${className}`, style: style, children: jsxRuntime.jsx("div", { className: styles$a.loadingSpinner, children: "Loading..." }) }));
3539
+ return (jsxRuntime.jsx("div", { className: `${styles$b.calendar} ${styles$b.loading} ${className}`, style: style, children: jsxRuntime.jsx("div", { className: styles$b.loadingSpinner, children: "Loading..." }) }));
3540
3540
  }
3541
- return (jsxRuntime.jsxs("div", { className: `${styles$a.calendar} ${compact ? styles$a.compact : ''} ${className}`, style: style, children: [!hideHeader && (jsxRuntime.jsxs("div", { className: styles$a.header, children: [jsxRuntime.jsxs("div", { className: styles$a.navigation, children: [jsxRuntime.jsx("button", { onClick: handlePrevious, className: styles$a.navButton, "aria-label": "Previous", children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "15,18 9,12 15,6" }) }) }), jsxRuntime.jsx("h3", { className: styles$a.title, children: calendarData.displayTitle }), jsxRuntime.jsx("button", { onClick: handleNext, className: styles$a.navButton, "aria-label": "Next", children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "9,6 15,12 9,18" }) }) })] }), categories && categories.length > 0 && (jsxRuntime.jsxs("div", { className: styles$a.filterBar, role: "tablist", "aria-label": "Filter by category", children: [jsxRuntime.jsx("button", { type: "button", role: "tab", "aria-selected": activeCategoryId === null, className: `${styles$a.filterPill} ${activeCategoryId === null ? styles$a.filterPillActive : ''}`, onClick: () => handleCategoryPick(null), children: "All" }), categories.map(cat => {
3541
+ return (jsxRuntime.jsxs("div", { className: `${styles$b.calendar} ${compact ? styles$b.compact : ''} ${className}`, style: style, children: [!hideHeader && (jsxRuntime.jsxs("div", { className: styles$b.header, children: [jsxRuntime.jsxs("div", { className: styles$b.navigation, children: [jsxRuntime.jsx("button", { onClick: handlePrevious, className: styles$b.navButton, "aria-label": "Previous", children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "15,18 9,12 15,6" }) }) }), jsxRuntime.jsx("h3", { className: styles$b.title, children: calendarData.displayTitle }), jsxRuntime.jsx("button", { onClick: handleNext, className: styles$b.navButton, "aria-label": "Next", children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "9,6 15,12 9,18" }) }) })] }), categories && categories.length > 0 && (jsxRuntime.jsxs("div", { className: styles$b.filterBar, role: "tablist", "aria-label": "Filter by category", children: [jsxRuntime.jsx("button", { type: "button", role: "tab", "aria-selected": activeCategoryId === null, className: `${styles$b.filterPill} ${activeCategoryId === null ? styles$b.filterPillActive : ''}`, onClick: () => handleCategoryPick(null), children: "All" }), categories.map(cat => {
3542
3542
  const active = activeCategoryId === cat.id;
3543
- return (jsxRuntime.jsxs("button", { type: "button", role: "tab", "aria-selected": active, className: `${styles$a.filterPill} ${active ? styles$a.filterPillActive : ''}`, style: active ? { background: cat.color, borderColor: cat.color, color: '#ffffff' } : undefined, onClick: () => handleCategoryPick(cat.id), children: [!active && (jsxRuntime.jsx("span", { className: styles$a.filterDot, style: { background: cat.color } })), cat.label] }, cat.id));
3544
- })] })), jsxRuntime.jsxs("div", { className: styles$a.controls, children: [exportFormats && exportFormats.length > 0 && (jsxRuntime.jsxs("div", { className: styles$a.exportDropdown, ref: exportRef, children: [jsxRuntime.jsx("button", { type: "button", className: styles$a.exportButton, onClick: () => setExportOpen(v => !v), "aria-haspopup": "menu", "aria-expanded": exportOpen, "aria-label": "Export events", title: "Export events", children: jsxRuntime.jsx(lucideReact.Download, { size: 16 }) }), exportOpen && (jsxRuntime.jsx("div", { className: styles$a.exportMenu, role: "menu", children: exportFormats.map(format => (jsxRuntime.jsx("button", { type: "button", role: "menuitem", className: styles$a.exportMenuItem, onClick: () => {
3543
+ return (jsxRuntime.jsxs("button", { type: "button", role: "tab", "aria-selected": active, className: `${styles$b.filterPill} ${active ? styles$b.filterPillActive : ''}`, style: active ? { background: cat.color, borderColor: cat.color, color: '#ffffff' } : undefined, onClick: () => handleCategoryPick(cat.id), children: [!active && (jsxRuntime.jsx("span", { className: styles$b.filterDot, style: { background: cat.color } })), cat.label] }, cat.id));
3544
+ })] })), jsxRuntime.jsxs("div", { className: styles$b.controls, children: [exportFormats && exportFormats.length > 0 && (jsxRuntime.jsxs("div", { className: styles$b.exportDropdown, ref: exportRef, children: [jsxRuntime.jsx("button", { type: "button", className: styles$b.exportButton, onClick: () => setExportOpen(v => !v), "aria-haspopup": "menu", "aria-expanded": exportOpen, "aria-label": "Export events", title: "Export events", children: jsxRuntime.jsx(lucideReact.Download, { size: 16 }) }), exportOpen && (jsxRuntime.jsx("div", { className: styles$b.exportMenu, role: "menu", children: exportFormats.map(format => (jsxRuntime.jsx("button", { type: "button", role: "menuitem", className: styles$b.exportMenuItem, onClick: () => {
3545
3545
  downloadEvents(filteredEvents, format);
3546
3546
  setExportOpen(false);
3547
- }, children: format.toUpperCase() }, format))) }))] })), (currentViewMode === 'day' || currentViewMode === 'week') && (jsxRuntime.jsx("button", { type: "button", className: styles$a.nightToggle, onClick: () => setHideNightHours(v => !v), "aria-pressed": hideNightHours, title: hideNightHours ? 'Show night hours' : 'Hide night hours (00:00–08:00)', "aria-label": hideNightHours ? 'Show night hours' : 'Hide night hours', children: hideNightHours ? jsxRuntime.jsx(lucideReact.Sun, { size: 16 }) : jsxRuntime.jsx(lucideReact.Moon, { size: 16 }) })), jsxRuntime.jsx("button", { onClick: handleToday, className: styles$a.todayButton, children: "Today" }), jsxRuntime.jsxs("div", { className: styles$a.viewToggle, children: [jsxRuntime.jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'month' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('month'), children: "Month" }), jsxRuntime.jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'week' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('week'), children: "Week" }), jsxRuntime.jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'day' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('day'), children: "Day" })] })] })] })), currentViewMode === 'month' && (jsxRuntime.jsxs("div", { className: `${styles$a.weekDays} ${showWeekNumbers ? styles$a.withWeekNumbers : ''}`, children: [showWeekNumbers && jsxRuntime.jsx("div", { className: styles$a.weekNumberHeader, children: "Wk" }), finalDayLabels.map((day) => (jsxRuntime.jsx("div", { className: styles$a.weekDay, children: day }, day)))] })), currentViewMode === 'day' ? (
3547
+ }, children: format.toUpperCase() }, format))) }))] })), (currentViewMode === 'day' || currentViewMode === 'week') && (jsxRuntime.jsx("button", { type: "button", className: styles$b.nightToggle, onClick: () => setHideNightHours(v => !v), "aria-pressed": hideNightHours, title: hideNightHours ? 'Show night hours' : 'Hide night hours (00:00–08:00)', "aria-label": hideNightHours ? 'Show night hours' : 'Hide night hours', children: hideNightHours ? jsxRuntime.jsx(lucideReact.Sun, { size: 16 }) : jsxRuntime.jsx(lucideReact.Moon, { size: 16 }) })), jsxRuntime.jsx("button", { onClick: handleToday, className: styles$b.todayButton, children: "Today" }), jsxRuntime.jsxs("div", { className: styles$b.viewToggle, children: [jsxRuntime.jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'month' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('month'), children: "Month" }), jsxRuntime.jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'week' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('week'), children: "Week" }), jsxRuntime.jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'day' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('day'), children: "Day" })] })] })] })), currentViewMode === 'month' && (jsxRuntime.jsxs("div", { className: `${styles$b.weekDays} ${showWeekNumbers ? styles$b.withWeekNumbers : ''}`, children: [showWeekNumbers && jsxRuntime.jsx("div", { className: styles$b.weekNumberHeader, children: "Wk" }), finalDayLabels.map((day) => (jsxRuntime.jsx("div", { className: styles$b.weekDay, children: day }, day)))] })), currentViewMode === 'day' ? (
3548
3548
  // Day view layout — positioned events with duration, all-day strip, now-line
3549
3549
  (() => {
3550
3550
  const dayEvents = getDayEvents(currentDate);
@@ -3579,7 +3579,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3579
3579
  const handleEventDragEnd = (event, clientY) => {
3580
3580
  if (!onEventDrop)
3581
3581
  return;
3582
- const gridEl = dayViewScrollRef.current?.querySelector(`.${styles$a.dayTimelineGrid}`);
3582
+ const gridEl = dayViewScrollRef.current?.querySelector(`.${styles$b.dayTimelineGrid}`);
3583
3583
  if (!gridEl)
3584
3584
  return;
3585
3585
  const rect = gridEl.getBoundingClientRect();
@@ -3594,7 +3594,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3594
3594
  newDate.setHours(newHour, newMinute, 0, 0);
3595
3595
  onEventDrop(event, newDate);
3596
3596
  };
3597
- return (jsxRuntime.jsxs("div", { className: styles$a.dayView, children: [jsxRuntime.jsxs("div", { className: styles$a.dayViewHeader, children: [jsxRuntime.jsx("div", { className: styles$a.timeColumnHeader }), jsxRuntime.jsx("div", { className: styles$a.dayColumnHeader, children: currentDate.toLocaleDateString(locale, { weekday: 'short', day: 'numeric' }) })] }), allDayEvents.length > 0 && (jsxRuntime.jsxs("div", { className: styles$a.allDayStrip, children: [jsxRuntime.jsx("span", { className: styles$a.allDayLabel, children: "All day" }), jsxRuntime.jsx("div", { className: styles$a.allDayList, children: allDayEvents.map(event => (jsxRuntime.jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, draggable: false }, event.id))) })] })), jsxRuntime.jsx("div", { className: styles$a.dayViewScrollContainer, ref: dayViewScrollRef, children: jsxRuntime.jsxs("div", { className: styles$a.dayTimelineGrid, style: { height: timelineHeight }, children: [hours.map(hour => (jsxRuntime.jsxs("div", { className: styles$a.hourRow, style: { height: hourHeight }, children: [jsxRuntime.jsxs("span", { className: styles$a.hourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }), jsxRuntime.jsx("div", { className: styles$a.hourSlots, children: halfHourSlots ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleSlotClick(hour, 0) }), jsxRuntime.jsx("div", { className: `${styles$a.halfHourSlot} ${styles$a.halfHourSlotBottom}`, onClick: () => handleSlotClick(hour, 30) })] })) : (jsxRuntime.jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleSlotClick(hour, 0) })) })] }, hour))), scheduled.map((event) => {
3597
+ return (jsxRuntime.jsxs("div", { className: styles$b.dayView, children: [jsxRuntime.jsxs("div", { className: styles$b.dayViewHeader, children: [jsxRuntime.jsx("div", { className: styles$b.timeColumnHeader }), jsxRuntime.jsx("div", { className: styles$b.dayColumnHeader, children: currentDate.toLocaleDateString(locale, { weekday: 'short', day: 'numeric' }) })] }), allDayEvents.length > 0 && (jsxRuntime.jsxs("div", { className: styles$b.allDayStrip, children: [jsxRuntime.jsx("span", { className: styles$b.allDayLabel, children: "All day" }), jsxRuntime.jsx("div", { className: styles$b.allDayList, children: allDayEvents.map(event => (jsxRuntime.jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, draggable: false }, event.id))) })] })), jsxRuntime.jsx("div", { className: styles$b.dayViewScrollContainer, ref: dayViewScrollRef, children: jsxRuntime.jsxs("div", { className: styles$b.dayTimelineGrid, style: { height: timelineHeight }, children: [hours.map(hour => (jsxRuntime.jsxs("div", { className: styles$b.hourRow, style: { height: hourHeight }, children: [jsxRuntime.jsxs("span", { className: styles$b.hourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }), jsxRuntime.jsx("div", { className: styles$b.hourSlots, children: halfHourSlots ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleSlotClick(hour, 0) }), jsxRuntime.jsx("div", { className: `${styles$b.halfHourSlot} ${styles$b.halfHourSlotBottom}`, onClick: () => handleSlotClick(hour, 30) })] })) : (jsxRuntime.jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleSlotClick(hour, 0) })) })] }, hour))), scheduled.map((event) => {
3598
3598
  const [h, m] = event.time.split(':').map(Number);
3599
3599
  const top = (h - startHour) * hourHeight + (m / 60) * hourHeight;
3600
3600
  const duration = eventDuration(event);
@@ -3602,13 +3602,13 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3602
3602
  const lane = dayLayout.get(event.id);
3603
3603
  const totalCols = lane?.totalCols ?? 1;
3604
3604
  const col = lane?.col ?? 0;
3605
- return (jsxRuntime.jsx("div", { className: styles$a.dayEventAnchor, style: {
3605
+ return (jsxRuntime.jsx("div", { className: styles$b.dayEventAnchor, style: {
3606
3606
  top,
3607
3607
  height,
3608
3608
  '--lane-col': col,
3609
3609
  '--lane-total': totalCols,
3610
3610
  }, onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, onDragEnd: onEventDrop ? (clientY) => handleEventDragEnd(event, clientY) : undefined }) }, event.id));
3611
- }), showNow && (jsxRuntime.jsx("div", { className: styles$a.currentTimeIndicator, style: { top: `${nowOffset}px` } }))] }) })] }));
3611
+ }), showNow && (jsxRuntime.jsx("div", { className: styles$b.currentTimeIndicator, style: { top: `${nowOffset}px` } }))] }) })] }));
3612
3612
  })()) : currentViewMode === 'week' ? (
3613
3613
  // Week view layout — 7 side-by-side day timelines. Drag events across
3614
3614
  // columns to reschedule to a different day + hour in one gesture.
@@ -3642,7 +3642,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3642
3642
  const handleWeekDragEnd = (event, clientY, clientX) => {
3643
3643
  if (!onEventDrop)
3644
3644
  return;
3645
- const gridEl = weekViewScrollRef.current?.querySelector(`.${styles$a.weekDayColumns}`);
3645
+ const gridEl = weekViewScrollRef.current?.querySelector(`.${styles$b.weekDayColumns}`);
3646
3646
  if (!gridEl)
3647
3647
  return;
3648
3648
  const rect = gridEl.getBoundingClientRect();
@@ -3660,15 +3660,15 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3660
3660
  newDate.setHours(newHour, newMinute, 0, 0);
3661
3661
  onEventDrop(event, newDate);
3662
3662
  };
3663
- return (jsxRuntime.jsxs("div", { className: styles$a.weekTimeline, children: [jsxRuntime.jsxs("div", { className: styles$a.weekTimelineHeader, children: [jsxRuntime.jsx("div", { className: styles$a.timeColumnHeader }), days.map(day => {
3663
+ return (jsxRuntime.jsxs("div", { className: styles$b.weekTimeline, children: [jsxRuntime.jsxs("div", { className: styles$b.weekTimelineHeader, children: [jsxRuntime.jsx("div", { className: styles$b.timeColumnHeader }), days.map(day => {
3664
3664
  const dayIsToday = day.toDateString() === now.toDateString();
3665
3665
  const dayIsSelected = selectedDate && day.toDateString() === selectedDate.toDateString();
3666
- return (jsxRuntime.jsxs("button", { type: "button", className: `${styles$a.weekDayColumnHeader} ${dayIsToday ? styles$a.today : ''} ${dayIsSelected ? styles$a.selected : ''}`, onClick: () => handleDateClick(day), children: [jsxRuntime.jsx("span", { className: styles$a.weekDayLabel, children: day.toLocaleDateString(locale, { weekday: 'short' }) }), jsxRuntime.jsx("span", { className: styles$a.weekDayNumber, children: day.getDate() })] }, day.toISOString()));
3667
- })] }), jsxRuntime.jsx("div", { className: styles$a.weekTimelineScroll, ref: weekViewScrollRef, children: jsxRuntime.jsxs("div", { className: styles$a.weekTimelineGrid, style: { height: timelineHeight }, children: [jsxRuntime.jsx("div", { className: styles$a.weekTimeColumn, children: hours.map(hour => (jsxRuntime.jsx("div", { className: styles$a.weekTimeSlot, style: { height: hourHeight }, children: jsxRuntime.jsxs("span", { className: styles$a.weekHourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }) }, hour))) }), jsxRuntime.jsx("div", { className: styles$a.weekDayColumns, children: days.map(day => {
3666
+ return (jsxRuntime.jsxs("button", { type: "button", className: `${styles$b.weekDayColumnHeader} ${dayIsToday ? styles$b.today : ''} ${dayIsSelected ? styles$b.selected : ''}`, onClick: () => handleDateClick(day), children: [jsxRuntime.jsx("span", { className: styles$b.weekDayLabel, children: day.toLocaleDateString(locale, { weekday: 'short' }) }), jsxRuntime.jsx("span", { className: styles$b.weekDayNumber, children: day.getDate() })] }, day.toISOString()));
3667
+ })] }), jsxRuntime.jsx("div", { className: styles$b.weekTimelineScroll, ref: weekViewScrollRef, children: jsxRuntime.jsxs("div", { className: styles$b.weekTimelineGrid, style: { height: timelineHeight }, children: [jsxRuntime.jsx("div", { className: styles$b.weekTimeColumn, children: hours.map(hour => (jsxRuntime.jsx("div", { className: styles$b.weekTimeSlot, style: { height: hourHeight }, children: jsxRuntime.jsxs("span", { className: styles$b.weekHourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }) }, hour))) }), jsxRuntime.jsx("div", { className: styles$b.weekDayColumns, children: days.map(day => {
3668
3668
  const dayEvents = getDayEvents(day).filter(e => !e.allDay && e.time);
3669
3669
  const dayIsToday = day.toDateString() === now.toDateString();
3670
3670
  const dayLayout = layoutOverlappingEvents(dayEvents);
3671
- return (jsxRuntime.jsxs("div", { className: styles$a.weekDayColumn, children: [hours.map(hour => (jsxRuntime.jsx("div", { className: styles$a.weekHourRow, style: { height: hourHeight }, children: halfHourSlots ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) }), jsxRuntime.jsx("div", { className: `${styles$a.halfHourSlot} ${styles$a.halfHourSlotBottom}`, onClick: () => handleWeekSlotClick(day, hour, 30) })] })) : (jsxRuntime.jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) })) }, hour))), dayEvents.map(event => {
3671
+ return (jsxRuntime.jsxs("div", { className: styles$b.weekDayColumn, children: [hours.map(hour => (jsxRuntime.jsx("div", { className: styles$b.weekHourRow, style: { height: hourHeight }, children: halfHourSlots ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) }), jsxRuntime.jsx("div", { className: `${styles$b.halfHourSlot} ${styles$b.halfHourSlotBottom}`, onClick: () => handleWeekSlotClick(day, hour, 30) })] })) : (jsxRuntime.jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) })) }, hour))), dayEvents.map(event => {
3672
3672
  const [h, m] = event.time.split(':').map(Number);
3673
3673
  const top = (h - startHour) * hourHeight + (m / 60) * hourHeight;
3674
3674
  const duration = eventDuration(event);
@@ -3676,34 +3676,34 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3676
3676
  const lane = dayLayout.get(event.id);
3677
3677
  const totalCols = lane?.totalCols ?? 1;
3678
3678
  const col = lane?.col ?? 0;
3679
- return (jsxRuntime.jsx("div", { className: styles$a.weekEventAnchor, style: {
3679
+ return (jsxRuntime.jsx("div", { className: styles$b.weekEventAnchor, style: {
3680
3680
  top,
3681
3681
  height,
3682
3682
  '--lane-col': col,
3683
3683
  '--lane-total': totalCols,
3684
3684
  }, onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, onDragEnd: onEventDrop ? (cy, cx) => handleWeekDragEnd(event, cy, cx) : undefined }) }, event.id));
3685
- }), dayIsToday && showNow && (jsxRuntime.jsx("div", { className: styles$a.currentTimeIndicator, style: { top: `${nowOffset}px`, left: 0 } }))] }, day.toISOString()));
3685
+ }), dayIsToday && showNow && (jsxRuntime.jsx("div", { className: styles$b.currentTimeIndicator, style: { top: `${nowOffset}px`, left: 0 } }))] }, day.toISOString()));
3686
3686
  }) })] }) })] }));
3687
3687
  })()) : ((() => {
3688
3688
  // Fixed month-view cell height derived from maxEventsPerDay.
3689
3689
  // Day number + padding ≈ 40px, each event row ≈ 24px.
3690
3690
  // Week and compact views keep their own CSS-driven sizing.
3691
3691
  const monthCellHeight = !compact ? 40 + maxEventsPerDay * 24 : undefined;
3692
- return (jsxRuntime.jsx("div", { className: `${styles$a.daysGrid} ${showWeekNumbers ? styles$a.withWeekNumbers : ''}`, children: calendarData.days.map((day, index) => {
3692
+ return (jsxRuntime.jsx("div", { className: `${styles$b.daysGrid} ${showWeekNumbers ? styles$b.withWeekNumbers : ''}`, children: calendarData.days.map((day, index) => {
3693
3693
  const dayEvents = getDayEvents(day);
3694
3694
  const dayIsToday = isToday(day);
3695
3695
  const isInCurrentMonth = isCurrentMonth(day);
3696
3696
  const isWeekStart = showWeekNumbers && (index % 7 === 0);
3697
3697
  const dayIsSelected = selectedDate && day.toDateString() === selectedDate.toDateString();
3698
- return (jsxRuntime.jsxs(React.Fragment, { children: [isWeekStart && (jsxRuntime.jsx("div", { className: styles$a.weekNumberCell, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, children: getWeekNumber(day) })), jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$a.dayCell} ${dayIsToday ? styles$a.today : ''} ${!isInCurrentMonth ? styles$a.otherMonth : ''} ${dayIsSelected ? styles$a.selected : ''}`, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: {
3698
+ return (jsxRuntime.jsxs(React.Fragment, { children: [isWeekStart && (jsxRuntime.jsx("div", { className: styles$b.weekNumberCell, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, children: getWeekNumber(day) })), jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$b.dayCell} ${dayIsToday ? styles$b.today : ''} ${!isInCurrentMonth ? styles$b.otherMonth : ''} ${dayIsSelected ? styles$b.selected : ''}`, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: {
3699
3699
  duration: 0.3,
3700
3700
  delay: index * 0.02,
3701
3701
  ease: "easeOut"
3702
- }, onClick: () => handleDateClick(day), children: [jsxRuntime.jsx("div", { className: styles$a.dayNumber, children: day.getDate() }), dayEvents.length > 0 && compact && currentViewMode === 'month' ? (jsxRuntime.jsxs("div", { className: styles$a.dots, children: [dayEvents.slice(0, maxEventsPerDay).map((event) => (jsxRuntime.jsx("span", { className: styles$a.dot, style: {
3702
+ }, onClick: () => handleDateClick(day), children: [jsxRuntime.jsx("div", { className: styles$b.dayNumber, children: day.getDate() }), dayEvents.length > 0 && compact && currentViewMode === 'month' ? (jsxRuntime.jsxs("div", { className: styles$b.dots, children: [dayEvents.slice(0, maxEventsPerDay).map((event) => (jsxRuntime.jsx("span", { className: styles$b.dot, style: {
3703
3703
  backgroundColor: event.status === 'completed'
3704
3704
  ? '#10b981'
3705
3705
  : getEventColor(event),
3706
- } }, event.id))), dayEvents.length > maxEventsPerDay && (jsxRuntime.jsxs("span", { className: styles$a.dotMore, children: ["+", dayEvents.length - maxEventsPerDay] }))] })) : dayEvents.length > 0 ? (jsxRuntime.jsxs("div", { className: styles$a.events, children: [dayEvents.slice(0, maxEventsPerDay).map((event, eventIndex) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$a.event} ${event.status === 'completed' ? styles$a.completed : ''}`, style: {
3706
+ } }, event.id))), dayEvents.length > maxEventsPerDay && (jsxRuntime.jsxs("span", { className: styles$b.dotMore, children: ["+", dayEvents.length - maxEventsPerDay] }))] })) : dayEvents.length > 0 ? (jsxRuntime.jsxs("div", { className: styles$b.events, children: [dayEvents.slice(0, maxEventsPerDay).map((event, eventIndex) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$b.event} ${event.status === 'completed' ? styles$b.completed : ''}`, style: {
3707
3707
  backgroundColor: getEventColor(event),
3708
3708
  color: getEventTextColor(event),
3709
3709
  opacity: event.status === 'completed' ? 0.7 : 1
@@ -3721,7 +3721,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3721
3721
  }, whileTap: {
3722
3722
  scale: 0.98,
3723
3723
  transition: { duration: 0.1 }
3724
- }, children: [iconRenderer && iconRenderer(event), jsxRuntime.jsxs("span", { className: styles$a.eventTitle, children: [event.time && (jsxRuntime.jsx("span", { className: styles$a.eventTime, children: event.time })), event.title] }), event.status === 'completed' && (jsxRuntime.jsx("svg", { className: styles$a.completedIcon, width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "20,6 9,17 4,12" }) }))] }, event.id))), dayEvents.length > maxEventsPerDay && (jsxRuntime.jsxs("div", { className: styles$a.moreEvents, children: ["+", dayEvents.length - maxEventsPerDay, " more"] }))] })) : emptyState ? (jsxRuntime.jsx("div", { className: styles$a.emptyState, children: emptyState })) : null] })] }, `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`));
3724
+ }, children: [iconRenderer && iconRenderer(event), jsxRuntime.jsxs("span", { className: styles$b.eventTitle, children: [event.time && (jsxRuntime.jsx("span", { className: styles$b.eventTime, children: event.time })), event.title] }), event.status === 'completed' && (jsxRuntime.jsx("svg", { className: styles$b.completedIcon, width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsxRuntime.jsx("polyline", { points: "20,6 9,17 4,12" }) }))] }, event.id))), dayEvents.length > maxEventsPerDay && (jsxRuntime.jsxs("div", { className: styles$b.moreEvents, children: ["+", dayEvents.length - maxEventsPerDay, " more"] }))] })) : emptyState ? (jsxRuntime.jsx("div", { className: styles$b.emptyState, children: emptyState })) : null] })] }, `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`));
3725
3725
  }) }));
3726
3726
  })())] }));
3727
3727
  }
@@ -3858,7 +3858,7 @@ const Navbar = ({ items, logo, onItemClick, variant = 'sidebar', isMobile = fals
3858
3858
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(framerMotion.motion.nav, { className: `${styles.navbar} ${styles[`navbar${variant.charAt(0).toUpperCase() + variant.slice(1)}`]} ${className}`, "data-colored-icons": coloredIconsAttr, initial: variant === 'sidebar' ? { x: -300 } : { opacity: 0 }, animate: variant === 'sidebar' ? { x: 0 } : { opacity: 1 }, transition: { type: 'spring', stiffness: 300, damping: 30 }, children: navContent }) }));
3859
3859
  };
3860
3860
 
3861
- var styles$8 = {"container":"MoodChart-module_container__MB1Vr","chart":"MoodChart-module_chart__4-spu","gridLine":"MoodChart-module_gridLine__YJpZ8","line":"MoodChart-module_line__LfeUX","xAxis":"MoodChart-module_xAxis__SeIWG","yAxis":"MoodChart-module_yAxis__sRjjE","dataPoint":"MoodChart-module_dataPoint__112P1","tooltip":"MoodChart-module_tooltip__vW59y","tooltipHeader":"MoodChart-module_tooltipHeader__U7yvN","tooltipDate":"MoodChart-module_tooltipDate__6Jjeu","tooltipRating":"MoodChart-module_tooltipRating__5A2Yx","ratingValue":"MoodChart-module_ratingValue__7Gpfx","ratingMax":"MoodChart-module_ratingMax__10WcJ","tooltipTags":"MoodChart-module_tooltipTags__FUQrU","tag":"MoodChart-module_tag__QhCh5","tooltipComment":"MoodChart-module_tooltipComment__6driJ"};
3861
+ var styles$9 = {"container":"MoodChart-module_container__MB1Vr","chart":"MoodChart-module_chart__4-spu","gridLine":"MoodChart-module_gridLine__YJpZ8","line":"MoodChart-module_line__LfeUX","xAxis":"MoodChart-module_xAxis__SeIWG","yAxis":"MoodChart-module_yAxis__sRjjE","dataPoint":"MoodChart-module_dataPoint__112P1","tooltip":"MoodChart-module_tooltip__vW59y","tooltipHeader":"MoodChart-module_tooltipHeader__U7yvN","tooltipDate":"MoodChart-module_tooltipDate__6Jjeu","tooltipRating":"MoodChart-module_tooltipRating__5A2Yx","ratingValue":"MoodChart-module_ratingValue__7Gpfx","ratingMax":"MoodChart-module_ratingMax__10WcJ","tooltipTags":"MoodChart-module_tooltipTags__FUQrU","tag":"MoodChart-module_tag__QhCh5","tooltipComment":"MoodChart-module_tooltipComment__6driJ"};
3862
3862
 
3863
3863
  const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3864
3864
  const svgRef = React.useRef(null);
@@ -3916,27 +3916,27 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3916
3916
  g.selectAll('.grid-line-y')
3917
3917
  .data(yScale.ticks(5))
3918
3918
  .enter().append('line')
3919
- .attr('class', styles$8.gridLine)
3919
+ .attr('class', styles$9.gridLine)
3920
3920
  .attr('x1', 0)
3921
3921
  .attr('y1', d => yScale(d))
3922
3922
  .attr('x2', chartWidth)
3923
3923
  .attr('y2', d => yScale(d));
3924
3924
  g.append('path')
3925
3925
  .datum(processedData)
3926
- .attr('class', styles$8.line)
3926
+ .attr('class', styles$9.line)
3927
3927
  .attr('d', line);
3928
3928
  g.append('g')
3929
- .attr('class', styles$8.xAxis)
3929
+ .attr('class', styles$9.xAxis)
3930
3930
  .attr('transform', `translate(0,${chartHeight})`)
3931
3931
  .call(d3__namespace.axisBottom(xScale)
3932
3932
  .tickFormat(d => d3__namespace.timeFormat('%m/%d')(d)));
3933
3933
  g.append('g')
3934
- .attr('class', styles$8.yAxis)
3934
+ .attr('class', styles$9.yAxis)
3935
3935
  .call(d3__namespace.axisLeft(yScale));
3936
3936
  g.selectAll('.mood-circle')
3937
3937
  .data(processedData)
3938
3938
  .enter().append('circle')
3939
- .attr('class', styles$8.dataPoint)
3939
+ .attr('class', styles$9.dataPoint)
3940
3940
  .attr('cx', d => xScale(d.date))
3941
3941
  .attr('cy', d => yScale(d.rating))
3942
3942
  .attr('r', 5)
@@ -3990,7 +3990,7 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3990
3990
  setSelectedMood(null);
3991
3991
  };
3992
3992
  }, []);
3993
- return (jsxRuntime.jsxs("div", { className: styles$8.container, ref: containerRef, children: [jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$8.chart }), selectedMood && (jsxRuntime.jsxs("div", { ref: tooltipRef, className: styles$8.tooltip, style: {
3993
+ return (jsxRuntime.jsxs("div", { className: styles$9.container, ref: containerRef, children: [jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$9.chart }), selectedMood && (jsxRuntime.jsxs("div", { ref: tooltipRef, className: styles$9.tooltip, style: {
3994
3994
  position: 'absolute',
3995
3995
  pointerEvents: 'auto',
3996
3996
  left: tooltipPosition.x,
@@ -3999,13 +3999,13 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3999
3999
  }, onMouseEnter: () => setIsHoveringTooltip(true), onMouseLeave: () => {
4000
4000
  setIsHoveringTooltip(false);
4001
4001
  setSelectedMood(null);
4002
- }, children: [jsxRuntime.jsxs("div", { className: styles$8.tooltipHeader, children: [jsxRuntime.jsx("div", { className: styles$8.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxRuntime.jsxs("div", { className: styles$8.tooltipRating, children: [jsxRuntime.jsx("span", { className: styles$8.ratingValue, children: selectedMood.rating }), jsxRuntime.jsx("span", { className: styles$8.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsxRuntime.jsx("div", { className: styles$8.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsxRuntime.jsx("span", { className: styles$8.tag, children: tag }, index))) })), selectedMood.comment && (jsxRuntime.jsx("div", { className: styles$8.tooltipComment, children: selectedMood.comment }))] }))] }));
4002
+ }, children: [jsxRuntime.jsxs("div", { className: styles$9.tooltipHeader, children: [jsxRuntime.jsx("div", { className: styles$9.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxRuntime.jsxs("div", { className: styles$9.tooltipRating, children: [jsxRuntime.jsx("span", { className: styles$9.ratingValue, children: selectedMood.rating }), jsxRuntime.jsx("span", { className: styles$9.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsxRuntime.jsx("div", { className: styles$9.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsxRuntime.jsx("span", { className: styles$9.tag, children: tag }, index))) })), selectedMood.comment && (jsxRuntime.jsx("div", { className: styles$9.tooltipComment, children: selectedMood.comment }))] }))] }));
4003
4003
  };
4004
4004
 
4005
- var styles$7 = {"container":"QuantifiableHabitsChart-module_container__X5SBp","controls":"QuantifiableHabitsChart-module_controls__O-ObQ","viewToggle":"QuantifiableHabitsChart-module_viewToggle__24hKA","viewButton":"QuantifiableHabitsChart-module_viewButton__WFU6j","active":"QuantifiableHabitsChart-module_active__Pjqy9","viewIcon":"QuantifiableHabitsChart-module_viewIcon__b2mfk","viewLabel":"QuantifiableHabitsChart-module_viewLabel__9MjCU","aggregationToggle":"QuantifiableHabitsChart-module_aggregationToggle__WnxwB","aggregationButton":"QuantifiableHabitsChart-module_aggregationButton__sGCxX","aggregationIcon":"QuantifiableHabitsChart-module_aggregationIcon__HIaEf","aggregationLabel":"QuantifiableHabitsChart-module_aggregationLabel__Yc-S-","legend":"QuantifiableHabitsChart-module_legend__3Ki7c","compactLegend":"QuantifiableHabitsChart-module_compactLegend__jMpLB","legendItem":"QuantifiableHabitsChart-module_legendItem__Zl7fz","legendEmoji":"QuantifiableHabitsChart-module_legendEmoji__HG9CZ","legendLabel":"QuantifiableHabitsChart-module_legendLabel__H3oFL","inactive":"QuantifiableHabitsChart-module_inactive__TzZC-","legendColor":"QuantifiableHabitsChart-module_legendColor__zbPoV","chart":"QuantifiableHabitsChart-module_chart__FMeA-","gridLine":"QuantifiableHabitsChart-module_gridLine__CTNIq","line":"QuantifiableHabitsChart-module_line__CpYip","xAxis":"QuantifiableHabitsChart-module_xAxis__lbgBG","yAxis":"QuantifiableHabitsChart-module_yAxis__Y6WeV","dataPoint":"QuantifiableHabitsChart-module_dataPoint__s8UMX","tooltip":"QuantifiableHabitsChart-module_tooltip__Fay8N","visible":"QuantifiableHabitsChart-module_visible__-KSJq","tooltipHeader":"QuantifiableHabitsChart-module_tooltipHeader__7Q2up","tooltipEmoji":"QuantifiableHabitsChart-module_tooltipEmoji__atV3T","tooltipDot":"QuantifiableHabitsChart-module_tooltipDot__YbdFh","tooltipInfo":"QuantifiableHabitsChart-module_tooltipInfo__XC7WF","tooltipDate":"QuantifiableHabitsChart-module_tooltipDate__6V6Xi","tooltipValue":"QuantifiableHabitsChart-module_tooltipValue__ldASB"};
4005
+ var styles$8 = {"container":"QuantifiableHabitsChart-module_container__X5SBp","controls":"QuantifiableHabitsChart-module_controls__O-ObQ","viewToggle":"QuantifiableHabitsChart-module_viewToggle__24hKA","viewButton":"QuantifiableHabitsChart-module_viewButton__WFU6j","active":"QuantifiableHabitsChart-module_active__Pjqy9","viewIcon":"QuantifiableHabitsChart-module_viewIcon__b2mfk","viewLabel":"QuantifiableHabitsChart-module_viewLabel__9MjCU","aggregationToggle":"QuantifiableHabitsChart-module_aggregationToggle__WnxwB","aggregationButton":"QuantifiableHabitsChart-module_aggregationButton__sGCxX","aggregationIcon":"QuantifiableHabitsChart-module_aggregationIcon__HIaEf","aggregationLabel":"QuantifiableHabitsChart-module_aggregationLabel__Yc-S-","legend":"QuantifiableHabitsChart-module_legend__3Ki7c","compactLegend":"QuantifiableHabitsChart-module_compactLegend__jMpLB","legendItem":"QuantifiableHabitsChart-module_legendItem__Zl7fz","legendEmoji":"QuantifiableHabitsChart-module_legendEmoji__HG9CZ","legendLabel":"QuantifiableHabitsChart-module_legendLabel__H3oFL","inactive":"QuantifiableHabitsChart-module_inactive__TzZC-","legendColor":"QuantifiableHabitsChart-module_legendColor__zbPoV","chart":"QuantifiableHabitsChart-module_chart__FMeA-","gridLine":"QuantifiableHabitsChart-module_gridLine__CTNIq","line":"QuantifiableHabitsChart-module_line__CpYip","xAxis":"QuantifiableHabitsChart-module_xAxis__lbgBG","yAxis":"QuantifiableHabitsChart-module_yAxis__Y6WeV","dataPoint":"QuantifiableHabitsChart-module_dataPoint__s8UMX","tooltip":"QuantifiableHabitsChart-module_tooltip__Fay8N","visible":"QuantifiableHabitsChart-module_visible__-KSJq","tooltipHeader":"QuantifiableHabitsChart-module_tooltipHeader__7Q2up","tooltipEmoji":"QuantifiableHabitsChart-module_tooltipEmoji__atV3T","tooltipDot":"QuantifiableHabitsChart-module_tooltipDot__YbdFh","tooltipInfo":"QuantifiableHabitsChart-module_tooltipInfo__XC7WF","tooltipDate":"QuantifiableHabitsChart-module_tooltipDate__6V6Xi","tooltipValue":"QuantifiableHabitsChart-module_tooltipValue__ldASB"};
4006
4006
 
4007
4007
  // Default colors as fallback
4008
- const DEFAULT_HABIT_COLORS = {
4008
+ const DEFAULT_HABIT_COLORS$1 = {
4009
4009
  'Exercise': '#6BCB77',
4010
4010
  'Meditation': '#4D96FF',
4011
4011
  'Reading': '#FFB319',
@@ -4058,7 +4058,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4058
4058
  }, [periodType]);
4059
4059
  const getColor = React.useCallback((habit) => {
4060
4060
  // First check custom colors, then defaults, then generate deterministic color
4061
- return customHabitColors[habit] || DEFAULT_HABIT_COLORS[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
4061
+ return customHabitColors[habit] || DEFAULT_HABIT_COLORS$1[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
4062
4062
  }, [customHabitColors]);
4063
4063
  // Aggregate data based on view type
4064
4064
  const aggregateData = React.useMemo(() => {
@@ -4155,7 +4155,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4155
4155
  g.selectAll('.grid-line-y')
4156
4156
  .data(yScale.ticks(5))
4157
4157
  .enter().append('line')
4158
- .attr('class', styles$7.gridLine)
4158
+ .attr('class', styles$8.gridLine)
4159
4159
  .attr('x1', 0)
4160
4160
  .attr('y1', d => yScale(d))
4161
4161
  .attr('x2', chartWidth)
@@ -4168,7 +4168,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4168
4168
  const habitData = dates.map((date, i) => [date, aggregateData[habit][i]]).filter(d => typeof d[1] === 'number');
4169
4169
  g.append('path')
4170
4170
  .datum(habitData)
4171
- .attr('class', styles$7.line)
4171
+ .attr('class', styles$8.line)
4172
4172
  .attr('d', line)
4173
4173
  .attr('stroke', getColor(habit))
4174
4174
  .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
@@ -4215,7 +4215,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4215
4215
  g.selectAll(`.circle-${habit}`)
4216
4216
  .data(habitData)
4217
4217
  .enter().append('circle')
4218
- .attr('class', (_d, i) => `${styles$7.dataPoint} circle-${habit}-${i}`)
4218
+ .attr('class', (_d, i) => `${styles$8.dataPoint} circle-${habit}-${i}`)
4219
4219
  .attr('cx', d => xScale(d[0]))
4220
4220
  .attr('cy', d => yScale(d[1]))
4221
4221
  .attr('r', 4)
@@ -4277,7 +4277,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4277
4277
  xAxisGenerator.ticks(tickCount);
4278
4278
  }
4279
4279
  const xAxis = g.append('g')
4280
- .attr('class', styles$7.xAxis)
4280
+ .attr('class', styles$8.xAxis)
4281
4281
  .attr('transform', `translate(0,${chartHeight})`)
4282
4282
  .call(xAxisGenerator);
4283
4283
  // Rotate labels for better readability if needed
@@ -4289,7 +4289,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4289
4289
  .attr('transform', 'rotate(-45)');
4290
4290
  }
4291
4291
  g.append('g')
4292
- .attr('class', styles$7.yAxis)
4292
+ .attr('class', styles$8.yAxis)
4293
4293
  .call(d3__namespace.axisLeft(yScale));
4294
4294
  }, [aggregateData, activeHabits, chartWidth, chartHeight, margin, hoveredHabit, onDataPointClick, getColor, height, viewType, width]);
4295
4295
  // Format date for tooltip display
@@ -4321,10 +4321,312 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4321
4321
  quarterly: { icon: '📊', label: 'Quarterly' }
4322
4322
  };
4323
4323
  const shouldShowAggregationToggle = viewType !== 'daily';
4324
- return (jsxRuntime.jsxs("div", { className: styles$7.container, children: [!hideControls && (jsxRuntime.jsxs("div", { className: styles$7.controls, children: [jsxRuntime.jsx("div", { className: styles$7.viewToggle, children: availableViewTypes.map(type => (jsxRuntime.jsxs("button", { className: `${styles$7.viewButton} ${viewType === type ? styles$7.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsxRuntime.jsx("span", { className: styles$7.viewIcon, children: viewTypeConfig[type].icon }), jsxRuntime.jsx("span", { className: styles$7.viewLabel, children: viewTypeConfig[type].label })] }, type))) }), shouldShowAggregationToggle && (jsxRuntime.jsxs("div", { className: styles$7.aggregationToggle, children: [jsxRuntime.jsxs("button", { className: `${styles$7.aggregationButton} ${aggregationMode === 'average' ? styles$7.active : ''}`, onClick: () => setAggregationMode('average'), title: "Show average values for each period", children: [jsxRuntime.jsx("span", { className: styles$7.aggregationIcon, children: "\uD83D\uDCCA" }), jsxRuntime.jsx("span", { className: styles$7.aggregationLabel, children: "Average" })] }), jsxRuntime.jsxs("button", { className: `${styles$7.aggregationButton} ${aggregationMode === 'sum' ? styles$7.active : ''}`, onClick: () => setAggregationMode('sum'), title: "Show total values for each period", children: [jsxRuntime.jsx("span", { className: styles$7.aggregationIcon, children: "\u2795" }), jsxRuntime.jsx("span", { className: styles$7.aggregationLabel, children: "Sum" })] })] }))] })), jsxRuntime.jsx("div", { className: `${styles$7.legend}${compactLegend ? ` ${styles$7.compactLegend}` : ''}`, children: habits.map(habit => (jsxRuntime.jsxs("button", { className: `${styles$7.legendItem} ${!activeHabits.includes(habit) ? styles$7.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsxRuntime.jsx("span", { className: styles$7.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$7.legendColor, style: { backgroundColor: getColor(habit) } }), jsxRuntime.jsx("span", { className: styles$7.legendLabel, children: habit })] }, habit))) }), jsxRuntime.jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$7.chart }), tooltipData && (jsxRuntime.jsxs("div", { ref: tooltipRef, className: `${styles$7.tooltip} ${tooltipData ? styles$7.visible : ''}`, style: {
4324
+ return (jsxRuntime.jsxs("div", { className: styles$8.container, children: [!hideControls && (jsxRuntime.jsxs("div", { className: styles$8.controls, children: [jsxRuntime.jsx("div", { className: styles$8.viewToggle, children: availableViewTypes.map(type => (jsxRuntime.jsxs("button", { className: `${styles$8.viewButton} ${viewType === type ? styles$8.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsxRuntime.jsx("span", { className: styles$8.viewIcon, children: viewTypeConfig[type].icon }), jsxRuntime.jsx("span", { className: styles$8.viewLabel, children: viewTypeConfig[type].label })] }, type))) }), shouldShowAggregationToggle && (jsxRuntime.jsxs("div", { className: styles$8.aggregationToggle, children: [jsxRuntime.jsxs("button", { className: `${styles$8.aggregationButton} ${aggregationMode === 'average' ? styles$8.active : ''}`, onClick: () => setAggregationMode('average'), title: "Show average values for each period", children: [jsxRuntime.jsx("span", { className: styles$8.aggregationIcon, children: "\uD83D\uDCCA" }), jsxRuntime.jsx("span", { className: styles$8.aggregationLabel, children: "Average" })] }), jsxRuntime.jsxs("button", { className: `${styles$8.aggregationButton} ${aggregationMode === 'sum' ? styles$8.active : ''}`, onClick: () => setAggregationMode('sum'), title: "Show total values for each period", children: [jsxRuntime.jsx("span", { className: styles$8.aggregationIcon, children: "\u2795" }), jsxRuntime.jsx("span", { className: styles$8.aggregationLabel, children: "Sum" })] })] }))] })), jsxRuntime.jsx("div", { className: `${styles$8.legend}${compactLegend ? ` ${styles$8.compactLegend}` : ''}`, children: habits.map(habit => (jsxRuntime.jsxs("button", { className: `${styles$8.legendItem} ${!activeHabits.includes(habit) ? styles$8.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsxRuntime.jsx("span", { className: styles$8.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$8.legendColor, style: { backgroundColor: getColor(habit) } }), jsxRuntime.jsx("span", { className: styles$8.legendLabel, children: habit })] }, habit))) }), jsxRuntime.jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$8.chart }), tooltipData && (jsxRuntime.jsxs("div", { ref: tooltipRef, className: `${styles$8.tooltip} ${tooltipData ? styles$8.visible : ''}`, style: {
4325
4325
  left: `${tooltipData.x}px`,
4326
4326
  top: `${tooltipData.y - 80}px`
4327
- }, children: [jsxRuntime.jsxs("div", { className: styles$7.tooltipHeader, children: [jsxRuntime.jsx("span", { className: styles$7.tooltipEmoji, children: customHabitEmojis[tooltipData.habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsxRuntime.jsx("span", { children: tooltipData.habit })] }), jsxRuntime.jsxs("div", { className: styles$7.tooltipInfo, children: [jsxRuntime.jsx("div", { className: styles$7.tooltipDate, children: formatTooltipDate(tooltipData.date, viewType) }), jsxRuntime.jsxs("div", { className: styles$7.tooltipValue, children: [jsxRuntime.jsx("strong", { children: Math.round(tooltipData.value * 10) / 10 }), jsxRuntime.jsx("span", { style: { fontSize: '12px', fontWeight: 'normal', opacity: 0.6 }, children: "units" })] })] })] }))] }));
4327
+ }, children: [jsxRuntime.jsxs("div", { className: styles$8.tooltipHeader, children: [jsxRuntime.jsx("span", { className: styles$8.tooltipEmoji, children: customHabitEmojis[tooltipData.habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$8.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsxRuntime.jsx("span", { children: tooltipData.habit })] }), jsxRuntime.jsxs("div", { className: styles$8.tooltipInfo, children: [jsxRuntime.jsx("div", { className: styles$8.tooltipDate, children: formatTooltipDate(tooltipData.date, viewType) }), jsxRuntime.jsxs("div", { className: styles$8.tooltipValue, children: [jsxRuntime.jsx("strong", { children: Math.round(tooltipData.value * 10) / 10 }), jsxRuntime.jsx("span", { style: { fontSize: '12px', fontWeight: 'normal', opacity: 0.6 }, children: "units" })] })] })] }))] }));
4328
+ };
4329
+
4330
+ var styles$7 = {"container":"HabitTimeOfDayChart-module_container__DCW3B","controls":"HabitTimeOfDayChart-module_controls__2p7mW","viewToggle":"HabitTimeOfDayChart-module_viewToggle__SSfDu","viewButton":"HabitTimeOfDayChart-module_viewButton__DENLF","active":"HabitTimeOfDayChart-module_active__VRrF1","viewIcon":"HabitTimeOfDayChart-module_viewIcon__MXqrp","viewLabel":"HabitTimeOfDayChart-module_viewLabel__XNKhi","legend":"HabitTimeOfDayChart-module_legend__y4Apu","compactLegend":"HabitTimeOfDayChart-module_compactLegend__Gsodv","legendItem":"HabitTimeOfDayChart-module_legendItem__QEXr4","legendEmoji":"HabitTimeOfDayChart-module_legendEmoji__T7zLH","legendLabel":"HabitTimeOfDayChart-module_legendLabel__TUT29","inactive":"HabitTimeOfDayChart-module_inactive__xVIwD","legendColor":"HabitTimeOfDayChart-module_legendColor__SzkAm","chart":"HabitTimeOfDayChart-module_chart__7Plpd","dot":"HabitTimeOfDayChart-module_dot__rxGpu","bar":"HabitTimeOfDayChart-module_bar__F0Rwy","gridLine":"HabitTimeOfDayChart-module_gridLine__waZrZ","xAxis":"HabitTimeOfDayChart-module_xAxis__pQGbi","yAxis":"HabitTimeOfDayChart-module_yAxis__fblot","tooltip":"HabitTimeOfDayChart-module_tooltip__8EPnz","visible":"HabitTimeOfDayChart-module_visible__3yEYR","tooltipHeader":"HabitTimeOfDayChart-module_tooltipHeader__1ywo5","tooltipInfo":"HabitTimeOfDayChart-module_tooltipInfo__xizGe","tooltipValue":"HabitTimeOfDayChart-module_tooltipValue__DcYfO","tooltipUnits":"HabitTimeOfDayChart-module_tooltipUnits__Um-EN","tooltipBreakdown":"HabitTimeOfDayChart-module_tooltipBreakdown__AQ27l","tooltipBreakdownRow":"HabitTimeOfDayChart-module_tooltipBreakdownRow__jHc6D","tooltipDot":"HabitTimeOfDayChart-module_tooltipDot__Khfwh","tooltipCount":"HabitTimeOfDayChart-module_tooltipCount__BRgaU"};
4331
+
4332
+ const DEFAULT_HABIT_COLORS = {
4333
+ Exercise: '#6BCB77',
4334
+ Meditation: '#4D96FF',
4335
+ Reading: '#FFB319',
4336
+ Water: '#00D9FF',
4337
+ Steps: '#FF6B6B',
4338
+ Sleep: '#9B59B6',
4339
+ Calories: '#FF9F1C',
4340
+ Study: '#C774E8',
4341
+ };
4342
+ const getDateKey = (d) => {
4343
+ const y = d.getFullYear();
4344
+ const m = String(d.getMonth() + 1).padStart(2, '0');
4345
+ const day = String(d.getDate()).padStart(2, '0');
4346
+ return `${y}-${m}-${day}`;
4347
+ };
4348
+ const formatHour = (hour) => {
4349
+ const h = ((hour % 24) + 24) % 24;
4350
+ if (h === 0)
4351
+ return '12a';
4352
+ if (h === 12)
4353
+ return '12p';
4354
+ return h < 12 ? `${h}a` : `${h - 12}p`;
4355
+ };
4356
+ const formatTime$1 = (hour, minute) => {
4357
+ const h24 = ((hour % 24) + 24) % 24;
4358
+ const h12 = h24 % 12 === 0 ? 12 : h24 % 12;
4359
+ const ampm = h24 < 12 ? 'a' : 'p';
4360
+ return `${h12}:${String(minute).padStart(2, '0')}${ampm}`;
4361
+ };
4362
+ const enumerateDates = (start, end) => {
4363
+ const dates = [];
4364
+ const [sy, sm, sd] = start.split('-').map(Number);
4365
+ const [ey, em, ed] = end.split('-').map(Number);
4366
+ const current = new Date(sy, sm - 1, sd);
4367
+ const last = new Date(ey, em - 1, ed);
4368
+ while (current <= last) {
4369
+ dates.push(getDateKey(current));
4370
+ current.setDate(current.getDate() + 1);
4371
+ }
4372
+ return dates;
4373
+ };
4374
+ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, endDate, habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {}, defaultView = 'scatter', hideControls = false, compactLegend = false, }) => {
4375
+ const svgRef = React.useRef(null);
4376
+ const [view, setView] = React.useState(defaultView);
4377
+ const [activeHabits, setActiveHabits] = React.useState([]);
4378
+ const [hoveredHabit, setHoveredHabit] = React.useState(null);
4379
+ const [tooltipData, setTooltipData] = React.useState(null);
4380
+ const margin = React.useMemo(() => ({ top: 20, right: 20, bottom: 50, left: 70 }), []);
4381
+ const chartWidth = width - margin.left - margin.right;
4382
+ const chartHeight = height - margin.top - margin.bottom;
4383
+ const getColor = React.useCallback((habit) => {
4384
+ return (customHabitColors[habit] ||
4385
+ DEFAULT_HABIT_COLORS[habit] ||
4386
+ `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`);
4387
+ }, [customHabitColors]);
4388
+ const parsed = React.useMemo(() => {
4389
+ return events
4390
+ .map(e => {
4391
+ const d = new Date(e.loggedAt);
4392
+ if (Number.isNaN(d.getTime()))
4393
+ return null;
4394
+ const hour = d.getHours();
4395
+ const minute = d.getMinutes();
4396
+ const second = d.getSeconds();
4397
+ return {
4398
+ habitKey: e.habitKey,
4399
+ date: getDateKey(d),
4400
+ hour,
4401
+ minute,
4402
+ hourFraction: hour + minute / 60 + second / 3600,
4403
+ };
4404
+ })
4405
+ .filter((e) => e !== null);
4406
+ }, [events]);
4407
+ const habits = React.useMemo(() => {
4408
+ const set = new Set();
4409
+ parsed.forEach(e => set.add(e.habitKey));
4410
+ return Array.from(set).sort();
4411
+ }, [parsed]);
4412
+ React.useEffect(() => {
4413
+ setActiveHabits(habits);
4414
+ }, [habits]);
4415
+ React.useEffect(() => {
4416
+ const handleScroll = () => setTooltipData(null);
4417
+ window.addEventListener('scroll', handleScroll, true);
4418
+ return () => window.removeEventListener('scroll', handleScroll, true);
4419
+ }, []);
4420
+ const dateRange = React.useMemo(() => {
4421
+ if (startDate && endDate)
4422
+ return enumerateDates(startDate, endDate);
4423
+ if (parsed.length === 0)
4424
+ return [];
4425
+ const sorted = [...parsed].map(p => p.date).sort();
4426
+ return enumerateDates(sorted[0], sorted[sorted.length - 1]);
4427
+ }, [parsed, startDate, endDate]);
4428
+ const filtered = React.useMemo(() => {
4429
+ const active = new Set(activeHabits);
4430
+ return parsed.filter(e => active.has(e.habitKey));
4431
+ }, [parsed, activeHabits]);
4432
+ const hourlyTotals = React.useMemo(() => {
4433
+ const totals = Array.from({ length: 24 }, (_, hour) => ({
4434
+ hour,
4435
+ total: 0,
4436
+ byHabit: new Map(),
4437
+ }));
4438
+ filtered.forEach(e => {
4439
+ const bucket = totals[e.hour];
4440
+ bucket.total += 1;
4441
+ bucket.byHabit.set(e.habitKey, (bucket.byHabit.get(e.habitKey) || 0) + 1);
4442
+ });
4443
+ return totals;
4444
+ }, [filtered]);
4445
+ const maxHourTotal = React.useMemo(() => hourlyTotals.reduce((m, b) => Math.max(m, b.total), 0), [hourlyTotals]);
4446
+ const toggleHabit = (habit) => {
4447
+ setActiveHabits(prev => prev.includes(habit) ? prev.filter(h => h !== habit) : [...prev, habit]);
4448
+ };
4449
+ React.useEffect(() => {
4450
+ if (!svgRef.current)
4451
+ return;
4452
+ const svg = d3__namespace.select(svgRef.current);
4453
+ svg.selectAll('*').remove();
4454
+ svg.append('rect')
4455
+ .attr('width', width)
4456
+ .attr('height', height)
4457
+ .attr('fill', 'transparent')
4458
+ .style('pointer-events', 'all')
4459
+ .on('mouseleave', () => setTooltipData(null));
4460
+ const g = svg
4461
+ .append('g')
4462
+ .attr('transform', `translate(${margin.left},${margin.top})`);
4463
+ if (view === 'scatter') {
4464
+ if (dateRange.length === 0)
4465
+ return;
4466
+ const xScale = d3__namespace.scaleLinear()
4467
+ .domain([0, 24])
4468
+ .range([0, chartWidth]);
4469
+ const yScale = d3__namespace.scaleBand()
4470
+ .domain(dateRange)
4471
+ .range([0, chartHeight])
4472
+ .padding(0.1);
4473
+ // Vertical grid lines per 3 hours
4474
+ g.selectAll('line.xgrid')
4475
+ .data([0, 3, 6, 9, 12, 15, 18, 21, 24])
4476
+ .enter()
4477
+ .append('line')
4478
+ .attr('class', styles$7.gridLine)
4479
+ .attr('x1', d => xScale(d))
4480
+ .attr('x2', d => xScale(d))
4481
+ .attr('y1', 0)
4482
+ .attr('y2', chartHeight);
4483
+ // Dots
4484
+ const rowHeight = yScale.bandwidth();
4485
+ const radius = Math.min(5, Math.max(2, rowHeight / 2));
4486
+ g.selectAll('circle.dot')
4487
+ .data(filtered)
4488
+ .enter()
4489
+ .append('circle')
4490
+ .attr('class', styles$7.dot)
4491
+ .attr('cx', d => xScale(d.hourFraction))
4492
+ .attr('cy', d => (yScale(d.date) ?? 0) + rowHeight / 2)
4493
+ .attr('r', radius)
4494
+ .attr('fill', d => getColor(d.habitKey))
4495
+ .attr('opacity', d => hoveredHabit && hoveredHabit !== d.habitKey ? 0.15 : 0.8)
4496
+ .style('cursor', 'pointer')
4497
+ .on('mouseenter', function (_event, d) {
4498
+ const rect = svgRef.current?.getBoundingClientRect();
4499
+ if (!rect)
4500
+ return;
4501
+ setTooltipData({
4502
+ x: xScale(d.hourFraction) + margin.left + rect.left,
4503
+ y: (yScale(d.date) ?? 0) + margin.top + rect.top,
4504
+ habit: d.habitKey,
4505
+ hour: d.hour,
4506
+ minute: d.minute,
4507
+ date: d.date,
4508
+ count: 1,
4509
+ });
4510
+ })
4511
+ .on('mouseleave', () => setTooltipData(null));
4512
+ // X axis (hours)
4513
+ const xAxis = d3__namespace.axisBottom(xScale)
4514
+ .tickValues([0, 3, 6, 9, 12, 15, 18, 21])
4515
+ .tickFormat(d => formatHour(d));
4516
+ g.append('g')
4517
+ .attr('class', styles$7.xAxis)
4518
+ .attr('transform', `translate(0,${chartHeight})`)
4519
+ .call(xAxis);
4520
+ // Y axis (dates) — evenly spaced
4521
+ const yTickCount = Math.min(8, dateRange.length);
4522
+ const yStep = Math.max(1, Math.floor(dateRange.length / yTickCount));
4523
+ const yTickValues = dateRange.filter((_, i) => i % yStep === 0);
4524
+ const yAxis = d3__namespace.axisLeft(yScale)
4525
+ .tickValues(yTickValues)
4526
+ .tickFormat(d => {
4527
+ const [, m, day] = d.split('-');
4528
+ return `${m}/${day}`;
4529
+ });
4530
+ g.append('g').attr('class', styles$7.yAxis).call(yAxis);
4531
+ }
4532
+ else {
4533
+ // Totals view: stacked bar by hour
4534
+ const xScale = d3__namespace.scaleBand()
4535
+ .domain(d3__namespace.range(24))
4536
+ .range([0, chartWidth])
4537
+ .padding(0.15);
4538
+ const yScale = d3__namespace.scaleLinear()
4539
+ .domain([0, Math.max(1, maxHourTotal)])
4540
+ .nice()
4541
+ .range([chartHeight, 0]);
4542
+ g.selectAll('line.grid')
4543
+ .data(yScale.ticks(5))
4544
+ .enter()
4545
+ .append('line')
4546
+ .attr('class', styles$7.gridLine)
4547
+ .attr('x1', 0)
4548
+ .attr('x2', chartWidth)
4549
+ .attr('y1', d => yScale(d))
4550
+ .attr('y2', d => yScale(d));
4551
+ hourlyTotals.forEach(bucket => {
4552
+ let cumulative = 0;
4553
+ const entries = Array.from(bucket.byHabit.entries()).sort(([a], [b]) => a.localeCompare(b));
4554
+ entries.forEach(([habit, count]) => {
4555
+ const y = yScale(cumulative + count);
4556
+ const barHeight = Math.max(0, yScale(cumulative) - yScale(cumulative + count));
4557
+ g.append('rect')
4558
+ .attr('class', styles$7.bar)
4559
+ .attr('x', xScale(bucket.hour) ?? 0)
4560
+ .attr('y', y)
4561
+ .attr('width', xScale.bandwidth())
4562
+ .attr('height', barHeight)
4563
+ .attr('fill', getColor(habit))
4564
+ .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
4565
+ cumulative += count;
4566
+ });
4567
+ if (bucket.total > 0) {
4568
+ g.append('rect')
4569
+ .attr('x', xScale(bucket.hour) ?? 0)
4570
+ .attr('y', 0)
4571
+ .attr('width', xScale.bandwidth())
4572
+ .attr('height', chartHeight)
4573
+ .attr('fill', 'transparent')
4574
+ .style('cursor', 'pointer')
4575
+ .on('mouseenter', function () {
4576
+ const rect = svgRef.current?.getBoundingClientRect();
4577
+ if (!rect)
4578
+ return;
4579
+ setTooltipData({
4580
+ x: (xScale(bucket.hour) ?? 0) + xScale.bandwidth() / 2 + margin.left + rect.left,
4581
+ y: yScale(bucket.total) + margin.top + rect.top,
4582
+ hour: bucket.hour,
4583
+ count: bucket.total,
4584
+ breakdown: Array.from(bucket.byHabit.entries())
4585
+ .map(([habit, count]) => ({ habit, count }))
4586
+ .sort((a, b) => b.count - a.count),
4587
+ });
4588
+ })
4589
+ .on('mouseleave', () => setTooltipData(null));
4590
+ }
4591
+ });
4592
+ const xAxis = d3__namespace.axisBottom(xScale)
4593
+ .tickValues([0, 3, 6, 9, 12, 15, 18, 21])
4594
+ .tickFormat(d => formatHour(d));
4595
+ g.append('g')
4596
+ .attr('class', styles$7.xAxis)
4597
+ .attr('transform', `translate(0,${chartHeight})`)
4598
+ .call(xAxis);
4599
+ g.append('g').attr('class', styles$7.yAxis).call(d3__namespace.axisLeft(yScale).ticks(5));
4600
+ }
4601
+ }, [
4602
+ view,
4603
+ filtered,
4604
+ hourlyTotals,
4605
+ dateRange,
4606
+ maxHourTotal,
4607
+ chartWidth,
4608
+ chartHeight,
4609
+ margin,
4610
+ width,
4611
+ height,
4612
+ hoveredHabit,
4613
+ getColor,
4614
+ ]);
4615
+ const viewConfig = {
4616
+ scatter: { icon: '•••', label: 'Scatter' },
4617
+ totals: { icon: '📊', label: 'Totals' },
4618
+ };
4619
+ const formatTooltipDate = (date) => {
4620
+ const [y, m, d] = date.split('-').map(Number);
4621
+ return new Date(y, m - 1, d).toLocaleDateString('en-US', {
4622
+ weekday: 'short',
4623
+ month: 'short',
4624
+ day: 'numeric',
4625
+ });
4626
+ };
4627
+ return (jsxRuntime.jsxs("div", { className: styles$7.container, children: [!hideControls && (jsxRuntime.jsx("div", { className: styles$7.controls, children: jsxRuntime.jsx("div", { className: styles$7.viewToggle, children: ['scatter', 'totals'].map(type => (jsxRuntime.jsxs("button", { className: `${styles$7.viewButton} ${view === type ? styles$7.active : ''}`, onClick: () => setView(type), title: viewConfig[type].label, children: [jsxRuntime.jsx("span", { className: styles$7.viewIcon, children: viewConfig[type].icon }), jsxRuntime.jsx("span", { className: styles$7.viewLabel, children: viewConfig[type].label })] }, type))) }) })), habits.length > 0 && (jsxRuntime.jsx("div", { className: `${styles$7.legend}${compactLegend ? ` ${styles$7.compactLegend}` : ''}`, children: habits.map(habit => (jsxRuntime.jsxs("button", { className: `${styles$7.legendItem} ${!activeHabits.includes(habit) ? styles$7.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsxRuntime.jsx("span", { className: styles$7.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$7.legendColor, style: { backgroundColor: getColor(habit) } }), jsxRuntime.jsx("span", { className: styles$7.legendLabel, children: habit })] }, habit))) })), jsxRuntime.jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$7.chart }), tooltipData && (jsxRuntime.jsx("div", { className: `${styles$7.tooltip} ${styles$7.visible}`, style: { left: `${tooltipData.x}px`, top: `${tooltipData.y - 70}px` }, children: tooltipData.habit ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: styles$7.tooltipHeader, children: [jsxRuntime.jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsxRuntime.jsxs("span", { children: [customHabitEmojis[tooltipData.habit] || '', " ", tooltipData.habit] })] }), jsxRuntime.jsx("div", { className: styles$7.tooltipInfo, children: jsxRuntime.jsxs("div", { className: styles$7.tooltipDate, children: [tooltipData.date ? formatTooltipDate(tooltipData.date) : '', tooltipData.minute !== undefined
4628
+ ? ` · ${formatTime$1(tooltipData.hour, tooltipData.minute)}`
4629
+ : ''] }) })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$7.tooltipHeader, children: jsxRuntime.jsx("span", { children: formatHour(tooltipData.hour) }) }), jsxRuntime.jsxs("div", { className: styles$7.tooltipInfo, children: [jsxRuntime.jsxs("div", { className: styles$7.tooltipValue, children: [jsxRuntime.jsx("strong", { children: tooltipData.count }), jsxRuntime.jsxs("span", { className: styles$7.tooltipUnits, children: ["event", tooltipData.count === 1 ? '' : 's'] })] }), tooltipData.breakdown && tooltipData.breakdown.length > 1 && (jsxRuntime.jsx("div", { className: styles$7.tooltipBreakdown, children: tooltipData.breakdown.map(({ habit, count }) => (jsxRuntime.jsxs("div", { className: styles$7.tooltipBreakdownRow, children: [jsxRuntime.jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(habit) } }), jsxRuntime.jsxs("span", { children: [customHabitEmojis[habit] || '', " ", habit] }), jsxRuntime.jsx("span", { className: styles$7.tooltipCount, children: count })] }, habit))) }))] })] })) }))] }));
4328
4630
  };
4329
4631
 
4330
4632
  var styles$6 = {"container":"SleepChart-module_container__RjHVU","header":"SleepChart-module_header__bcoWe","title":"SleepChart-module_title__6-QII","legend":"SleepChart-module_legend__VsqQj","legendItem":"SleepChart-module_legendItem__2c1nd","sleepDot":"SleepChart-module_sleepDot__qCY6O","wakeDot":"SleepChart-module_wakeDot__-RcrT","chart":"SleepChart-module_chart__jC1nL","gridLine":"SleepChart-module_gridLine__hi715","sleepBar":"SleepChart-module_sleepBar__Hk76f","xAxis":"SleepChart-module_xAxis__xzXyM","yAxis":"SleepChart-module_yAxis__7N-LA","tooltip":"SleepChart-module_tooltip__jQBv1","visible":"SleepChart-module_visible__wy0ck","tooltipHeader":"SleepChart-module_tooltipHeader__5BdPL","tooltipEmoji":"SleepChart-module_tooltipEmoji__c5vtz","tooltipInfo":"SleepChart-module_tooltipInfo__9Yrno","tooltipRow":"SleepChart-module_tooltipRow__CuDaE","tooltipLabel":"SleepChart-module_tooltipLabel__7SNzQ","tooltipValue":"SleepChart-module_tooltipValue__FoAVy","tooltipDuration":"SleepChart-module_tooltipDuration__d2wBW"};
@@ -5965,6 +6267,7 @@ exports.DateInput = DateInput;
5965
6267
  exports.DecryptedText = DecryptedText;
5966
6268
  exports.EditFAB = EditFAB;
5967
6269
  exports.EmptyState = EmptyState;
6270
+ exports.HabitTimeOfDayChart = HabitTimeOfDayChart;
5968
6271
  exports.ImageSlideshow = ImageSlideshow;
5969
6272
  exports.LiquidButton = LiquidButton;
5970
6273
  exports.LoadingSpinner = LoadingSpinner;