@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.esm.js CHANGED
@@ -10,7 +10,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
10
10
  import { createTheme, ThemeProvider as ThemeProvider$1 } from '@mui/material/styles';
11
11
  import * as d3 from 'd3';
12
12
 
13
- 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"};
13
+ 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"};
14
14
 
15
15
  const SOUND_PACKS = {
16
16
  digital: {
@@ -575,11 +575,11 @@ function useComponentSound(config, options) {
575
575
  const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loading = false, iconLeft, iconRight, children, className = '', disabled, motionProps, soundConfig, onClick, onMouseEnter, onFocus, ...rest }) => {
576
576
  const { handlers } = useComponentSound(soundConfig);
577
577
  const buttonClasses = [
578
- styles$A.button,
579
- styles$A[variant],
580
- styles$A[size],
581
- fullWidth && styles$A.fullWidth,
582
- loading && styles$A.loading,
578
+ styles$B.button,
579
+ styles$B[variant],
580
+ styles$B[size],
581
+ fullWidth && styles$B.fullWidth,
582
+ loading && styles$B.loading,
583
583
  className
584
584
  ].filter(Boolean).join(' ');
585
585
  const handleClick = (e) => {
@@ -590,10 +590,10 @@ const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loadi
590
590
  handlers.onMouseEnter?.();
591
591
  onMouseEnter?.(e);
592
592
  };
593
- return (jsxs(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 && jsx("span", { className: styles$A.spinner }), iconLeft && jsx("span", { className: styles$A.iconLeft, children: iconLeft }), children, iconRight && jsx("span", { className: styles$A.iconRight, children: iconRight })] }));
593
+ return (jsxs(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 && jsx("span", { className: styles$B.spinner }), iconLeft && jsx("span", { className: styles$B.iconLeft, children: iconLeft }), children, iconRight && jsx("span", { className: styles$B.iconRight, children: iconRight })] }));
594
594
  };
595
595
 
596
- 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"};
596
+ 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"};
597
597
 
598
598
  /**
599
599
  * Card Component
@@ -658,28 +658,28 @@ const Card = ({ variant = 'elevated', hoverable = false, clickable = false, padd
658
658
  onExpandChange?.(newExpanded);
659
659
  };
660
660
  const cardClasses = [
661
- styles$z.card,
662
- styles$z[variant],
663
- hoverable && styles$z.hoverable,
664
- clickable && styles$z.clickable,
665
- !padding && styles$z.noPadding,
666
- expandable && styles$z.expandable,
661
+ styles$A.card,
662
+ styles$A[variant],
663
+ hoverable && styles$A.hoverable,
664
+ clickable && styles$A.clickable,
665
+ !padding && styles$A.noPadding,
666
+ expandable && styles$A.expandable,
667
667
  className
668
668
  ].filter(Boolean).join(' ');
669
669
  const renderHeader = () => {
670
670
  if (header) {
671
- return (jsxs("div", { className: styles$z.header, children: [jsx("div", { className: styles$z.headerContent, children: header }), expandable && (jsx("button", { className: styles$z.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: 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: jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
671
+ return (jsxs("div", { className: styles$A.header, children: [jsx("div", { className: styles$A.headerContent, children: header }), expandable && (jsx("button", { className: styles$A.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: 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: jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
672
672
  }
673
673
  if (title || subtitle) {
674
- return (jsxs("div", { className: styles$z.header, children: [jsxs("div", { className: styles$z.headerContent, children: [title && jsx("h3", { className: styles$z.title, children: title }), subtitle && jsx("p", { className: styles$z.subtitle, children: subtitle })] }), expandable && (jsx("button", { className: styles$z.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: 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: jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
674
+ return (jsxs("div", { className: styles$A.header, children: [jsxs("div", { className: styles$A.headerContent, children: [title && jsx("h3", { className: styles$A.title, children: title }), subtitle && jsx("p", { className: styles$A.subtitle, children: subtitle })] }), expandable && (jsx("button", { className: styles$A.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: 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: jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
675
675
  }
676
676
  return null;
677
677
  };
678
- const cardContent = (jsxs(Fragment, { children: [image && (jsx("div", { className: styles$z.imageContainer, children: jsx("img", { src: image, alt: imageAlt, className: styles$z.image }) })), renderHeader(), jsx(AnimatePresence, { initial: false, children: (!expandable || isExpanded) && (jsxs(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 && (jsx("div", { className: padding ? styles$z.body : undefined, children: children })), footer && jsx("div", { className: styles$z.footer, children: footer })] }, "content")) })] }));
678
+ const cardContent = (jsxs(Fragment, { children: [image && (jsx("div", { className: styles$A.imageContainer, children: jsx("img", { src: image, alt: imageAlt, className: styles$A.image }) })), renderHeader(), jsx(AnimatePresence, { initial: false, children: (!expandable || isExpanded) && (jsxs(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 && (jsx("div", { className: padding ? styles$A.body : undefined, children: children })), footer && jsx("div", { className: styles$A.footer, children: footer })] }, "content")) })] }));
679
679
  return (jsx(motion.div, { className: cardClasses, onClick: clickable ? onClick : undefined, whileHover: hoverable ? { y: -4 } : undefined, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: cardContent }));
680
680
  };
681
681
 
682
- 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"};
682
+ 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"};
683
683
 
684
684
  /**
685
685
  * EmptyState Component
@@ -716,11 +716,11 @@ var styles$y = {"wrapper":"EmptyState-module_wrapper__h3Y2E","compact":"EmptySta
716
716
  * @returns {JSX.Element} The rendered EmptyState component
717
717
  */
718
718
  const EmptyState = ({ icon, title, message, action, size = 'default', }) => {
719
- const wrapperClass = [styles$y.wrapper, styles$y[size]].filter(Boolean).join(' ');
720
- return (jsxs("div", { className: wrapperClass, children: [icon && jsx("div", { className: styles$y.icon, children: icon }), title && jsx("h3", { className: styles$y.title, children: title }), jsx("p", { className: styles$y.message, children: message }), action && jsx("div", { className: styles$y.action, children: action })] }));
719
+ const wrapperClass = [styles$z.wrapper, styles$z[size]].filter(Boolean).join(' ');
720
+ return (jsxs("div", { className: wrapperClass, children: [icon && jsx("div", { className: styles$z.icon, children: icon }), title && jsx("h3", { className: styles$z.title, children: title }), jsx("p", { className: styles$z.message, children: message }), action && jsx("div", { className: styles$z.action, children: action })] }));
721
721
  };
722
722
 
723
- 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"};
723
+ 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"};
724
724
 
725
725
  /**
726
726
  * Modal Component
@@ -774,16 +774,16 @@ const Modal = ({ open, title, onClose, children, size = 'default', actions, padd
774
774
  if (typeof document === 'undefined')
775
775
  return null;
776
776
  const dialogClass = [
777
- styles$x.dialog,
778
- size === 'compact' && styles$x.dialogCompact,
779
- size === 'wide' && styles$x.dialogWide,
777
+ styles$y.dialog,
778
+ size === 'compact' && styles$y.dialogCompact,
779
+ size === 'wide' && styles$y.dialogWide,
780
780
  ]
781
781
  .filter(Boolean)
782
782
  .join(' ');
783
- return createPortal(jsx(AnimatePresence, { children: open && (jsx(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: jsxs(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: [jsxs("div", { className: styles$x.header, children: [jsx("span", { className: styles$x.title, children: title }), actions && jsx("div", { className: styles$x.headerActions, children: actions }), jsx("button", { className: styles$x.closeButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: jsx(X, { size: 16 }) })] }), jsx("div", { className: padding ? styles$x.body : styles$x.bodyFlush, children: children })] }) })) }), document.body);
783
+ return createPortal(jsx(AnimatePresence, { children: open && (jsx(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: jsxs(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: [jsxs("div", { className: styles$y.header, children: [jsx("span", { className: styles$y.title, children: title }), actions && jsx("div", { className: styles$y.headerActions, children: actions }), jsx("button", { className: styles$y.closeButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: jsx(X, { size: 16 }) })] }), jsx("div", { className: padding ? styles$y.body : styles$y.bodyFlush, children: children })] }) })) }), document.body);
784
784
  };
785
785
 
786
- var styles$w = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
786
+ var styles$x = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
787
787
 
788
788
  /**
789
789
  * Checkbox component - Modern interactive checkbox with animations
@@ -828,13 +828,13 @@ const Checkbox = ({ checked, onChange, label, disabled = false, indeterminate =
828
828
  checkboxRef.current.indeterminate = indeterminate;
829
829
  }
830
830
  }, [indeterminate]);
831
- return (jsxs("label", { className: styles$w.checkboxLabel, children: [jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => {
831
+ return (jsxs("label", { className: styles$x.checkboxLabel, children: [jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => {
832
832
  const isChecked = e.target.checked;
833
833
  onChange(isChecked);
834
834
  if (soundConfig?.onClick !== false) {
835
835
  playSound('toggle');
836
836
  }
837
- }, className: styles$w.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsx("span", { className: styles$w.checkboxText, children: label })] }));
837
+ }, className: styles$x.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsx("span", { className: styles$x.checkboxText, children: label })] }));
838
838
  };
839
839
 
840
840
  const formatDateToEuropean = (date) => {
@@ -865,7 +865,7 @@ const parseEuropeanDate = (dateString) => {
865
865
  return '';
866
866
  };
867
867
 
868
- 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"};
868
+ 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"};
869
869
 
870
870
  /**
871
871
  * DateInput component - European format date picker with manual input support
@@ -954,19 +954,19 @@ function DateInput({ label, value, onChange, placeholder = "25/12/2024", onFocus
954
954
  }
955
955
  };
956
956
  const getClassName = () => {
957
- const classes = [styles$v.dateInput];
957
+ const classes = [styles$w.dateInput];
958
958
  if (error)
959
- classes.push(styles$v.error);
959
+ classes.push(styles$w.error);
960
960
  if (success)
961
- classes.push(styles$v.success);
961
+ classes.push(styles$w.success);
962
962
  if (loading)
963
- classes.push(styles$v.loading);
963
+ classes.push(styles$w.loading);
964
964
  return classes.join(' ');
965
965
  };
966
- return (jsxs("div", { className: getClassName(), children: [jsx("label", { className: styles$v.label, children: label }), jsxs("div", { className: styles$v.inputWrapper, children: [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 }), jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$v.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsx(Calendar$1, {}) }), jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$v.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
966
+ return (jsxs("div", { className: getClassName(), children: [jsx("label", { className: styles$w.label, children: label }), jsxs("div", { className: styles$w.inputWrapper, children: [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 }), jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$w.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsx(Calendar$1, {}) }), jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$w.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
967
967
  }
968
968
 
969
- 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"};
969
+ 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"};
970
970
 
971
971
  /**
972
972
  * SearchableDropdown component - Modern filterable dropdown with animations
@@ -1071,23 +1071,23 @@ function SearchableDropdown({ label, value, onChange, options, placeholder = "Se
1071
1071
  }
1072
1072
  };
1073
1073
  const getTriggerClassName = () => {
1074
- const classes = [styles$u.dropdownTrigger];
1074
+ const classes = [styles$v.dropdownTrigger];
1075
1075
  if (isOpen)
1076
- classes.push(styles$u.open);
1076
+ classes.push(styles$v.open);
1077
1077
  if (loading)
1078
- classes.push(styles$u.loading);
1078
+ classes.push(styles$v.loading);
1079
1079
  if (error)
1080
- classes.push(styles$u.error);
1080
+ classes.push(styles$v.error);
1081
1081
  return classes.join(' ');
1082
1082
  };
1083
- return (jsxs("div", { className: styles$u.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsx("label", { children: label }), jsxs(motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsx("span", { className: `${styles$u.dropdownValue} ${!displayValue ? styles$u.placeholder : ''}`, children: displayValue || placeholder }), jsx(ChevronDown, { className: styles$u.dropdownArrow })] }), jsx(AnimatePresence, { children: isOpen && (jsxs(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: [jsxs("div", { className: styles$u.dropdownSearch, children: [jsx(Search, { className: styles$u.searchIcon }), jsx("input", { ref: inputRef, type: "text", className: styles$u.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxs("div", { className: styles$u.dropdownOptions, children: [allOptions.map((opt, index) => {
1083
+ return (jsxs("div", { className: styles$v.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsx("label", { children: label }), jsxs(motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsx("span", { className: `${styles$v.dropdownValue} ${!displayValue ? styles$v.placeholder : ''}`, children: displayValue || placeholder }), jsx(ChevronDown, { className: styles$v.dropdownArrow })] }), jsx(AnimatePresence, { children: isOpen && (jsxs(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: [jsxs("div", { className: styles$v.dropdownSearch, children: [jsx(Search, { className: styles$v.searchIcon }), jsx("input", { ref: inputRef, type: "text", className: styles$v.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxs("div", { className: styles$v.dropdownOptions, children: [allOptions.map((opt, index) => {
1084
1084
  const isSelected = value === opt.value;
1085
1085
  const isHighlighted = highlightedIndex === index;
1086
- return (jsxs(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: [jsx("span", { children: opt.label }), isSelected && jsx(Check, { className: styles$u.checkIcon })] }, `${opt.value}-${index}`));
1087
- }), allOptions.length === 0 && (jsx(motion.div, { className: styles$u.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
1086
+ return (jsxs(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: [jsx("span", { children: opt.label }), isSelected && jsx(Check, { className: styles$v.checkIcon })] }, `${opt.value}-${index}`));
1087
+ }), allOptions.length === 0 && (jsx(motion.div, { className: styles$v.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
1088
1088
  }
1089
1089
 
1090
- 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"};
1090
+ 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"};
1091
1091
 
1092
1092
  /**
1093
1093
  * SelectInput component - Styled dropdown selector with flexible option format
@@ -1125,26 +1125,26 @@ var styles$t = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWra
1125
1125
  function SelectInput({ label, value, onChange, options, placeholder = "Select...", disabled = false, error = false, success = false, loading = false, required = false, soundConfig, className }) {
1126
1126
  const { handlers, playSound } = useComponentSound(soundConfig);
1127
1127
  const getClassName = () => {
1128
- const classes = [styles$t.selectInput];
1128
+ const classes = [styles$u.selectInput];
1129
1129
  if (error)
1130
- classes.push(styles$t.error);
1130
+ classes.push(styles$u.error);
1131
1131
  if (success)
1132
- classes.push(styles$t.success);
1132
+ classes.push(styles$u.success);
1133
1133
  if (loading)
1134
- classes.push(styles$t.loading);
1134
+ classes.push(styles$u.loading);
1135
1135
  return classes.join(' ');
1136
1136
  };
1137
- return (jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxs("label", { children: [label, required && jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxs("div", { className: styles$t.selectWrapper, children: [jsxs("select", { value: value, onChange: e => {
1137
+ return (jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxs("label", { children: [label, required && jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxs("div", { className: styles$u.selectWrapper, children: [jsxs("select", { value: value, onChange: e => {
1138
1138
  playSound('click');
1139
1139
  onChange(e.target.value);
1140
1140
  }, disabled: disabled || loading, required: required, ...handlers, children: [jsx("option", { value: "", children: placeholder }), options.map(opt => {
1141
1141
  const optionValue = typeof opt === 'string' ? opt : opt.value;
1142
1142
  const optionLabel = typeof opt === 'string' ? opt : opt.label;
1143
1143
  return (jsx("option", { value: optionValue, children: optionLabel }, optionValue));
1144
- })] }), jsx(ChevronDown, { className: styles$t.selectIcon })] })] }));
1144
+ })] }), jsx(ChevronDown, { className: styles$u.selectIcon })] })] }));
1145
1145
  }
1146
1146
 
1147
- 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-"};
1147
+ 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-"};
1148
1148
 
1149
1149
  /**
1150
1150
  * TextArea component - Multi-line text input with character counting
@@ -1179,38 +1179,38 @@ var styles$s = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","
1179
1179
  function TextArea({ label, value, onChange, rows = 5, placeholder = "", required = false, maxLength, disabled = false, error = false, success = false, loading = false, focusMode = false, compact = false, className = "" }) {
1180
1180
  const textareaId = `textarea-${Math.random().toString(36).substr(2, 9)}`;
1181
1181
  const getContainerClassName = () => {
1182
- const classes = [styles$s.textareaContainer];
1182
+ const classes = [styles$t.textareaContainer];
1183
1183
  if (error)
1184
- classes.push(styles$s.error);
1184
+ classes.push(styles$t.error);
1185
1185
  if (success)
1186
- classes.push(styles$s.success);
1186
+ classes.push(styles$t.success);
1187
1187
  if (loading)
1188
- classes.push(styles$s.loading);
1188
+ classes.push(styles$t.loading);
1189
1189
  if (focusMode)
1190
- classes.push(styles$s.focusMode);
1190
+ classes.push(styles$t.focusMode);
1191
1191
  if (compact)
1192
- classes.push(styles$s.compact);
1192
+ classes.push(styles$t.compact);
1193
1193
  if (className)
1194
1194
  classes.push(className);
1195
1195
  return classes.join(' ');
1196
1196
  };
1197
1197
  const getCharCountClassName = () => {
1198
1198
  if (!maxLength)
1199
- return styles$s.characterCount;
1200
- const classes = [styles$s.characterCount];
1199
+ return styles$t.characterCount;
1200
+ const classes = [styles$t.characterCount];
1201
1201
  const percentage = (value.length / maxLength) * 100;
1202
1202
  if (percentage >= 100) {
1203
- classes.push(styles$s.atLimit);
1203
+ classes.push(styles$t.atLimit);
1204
1204
  }
1205
1205
  else if (percentage >= 80) {
1206
- classes.push(styles$s.nearLimit);
1206
+ classes.push(styles$t.nearLimit);
1207
1207
  }
1208
1208
  return classes.join(' ');
1209
1209
  };
1210
- return (jsxs("div", { className: getContainerClassName(), children: [label && (jsxs("label", { htmlFor: textareaId, className: styles$s.textareaLabel, children: [label, required && jsx("span", { className: styles$s.requiredIndicator, children: "*" })] })), 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 && (jsxs("div", { className: getCharCountClassName(), children: [jsx("span", { children: value.length }), jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsx("span", { children: maxLength })] }))] }));
1210
+ return (jsxs("div", { className: getContainerClassName(), children: [label && (jsxs("label", { htmlFor: textareaId, className: styles$t.textareaLabel, children: [label, required && jsx("span", { className: styles$t.requiredIndicator, children: "*" })] })), 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 && (jsxs("div", { className: getCharCountClassName(), children: [jsx("span", { children: value.length }), jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsx("span", { children: maxLength })] }))] }));
1211
1211
  }
1212
1212
 
1213
- 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"};
1213
+ 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"};
1214
1214
 
1215
1215
  /**
1216
1216
  * TextInput component - A versatile text input field with label and error handling
@@ -1247,21 +1247,21 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
1247
1247
  const { handlers, playSound } = useComponentSound(soundConfig);
1248
1248
  const prevValueRef = React.useRef(value);
1249
1249
  const getContainerClassName = () => {
1250
- const classes = [styles$r.textInput];
1250
+ const classes = [styles$s.textInput];
1251
1251
  if (success)
1252
- classes.push(styles$r.success);
1252
+ classes.push(styles$s.success);
1253
1253
  if (loading)
1254
- classes.push(styles$r.loading);
1254
+ classes.push(styles$s.loading);
1255
1255
  if (icon)
1256
- classes.push(styles$r.withIcon);
1256
+ classes.push(styles$s.withIcon);
1257
1257
  if (actionButton)
1258
- classes.push(styles$r.withAction);
1258
+ classes.push(styles$s.withAction);
1259
1259
  return classes.join(' ');
1260
1260
  };
1261
1261
  React.useEffect(() => {
1262
1262
  prevValueRef.current = value;
1263
1263
  }, [value]);
1264
- return (jsxs("div", { className: getContainerClassName(), children: [jsxs("label", { htmlFor: inputId, children: [label, required && jsx("span", { className: styles$r.required, children: "*" })] }), jsxs("div", { style: { position: 'relative' }, children: [icon && jsx("div", { className: styles$r.inputIcon, children: icon }), jsx("input", { id: inputId, type: type, value: value, onChange: (e) => {
1264
+ return (jsxs("div", { className: getContainerClassName(), children: [jsxs("label", { htmlFor: inputId, children: [label, required && jsx("span", { className: styles$s.required, children: "*" })] }), jsxs("div", { style: { position: 'relative' }, children: [icon && jsx("div", { className: styles$s.inputIcon, children: icon }), jsx("input", { id: inputId, type: type, value: value, onChange: (e) => {
1265
1265
  const newValue = e.target.value;
1266
1266
  const oldValue = prevValueRef.current;
1267
1267
  onChange(newValue);
@@ -1277,13 +1277,13 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
1277
1277
  if (error && soundConfig?.onError) {
1278
1278
  playSound(typeof soundConfig.onError === 'string' ? soundConfig.onError : 'error');
1279
1279
  }
1280
- }, 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 && (jsx("button", { type: "button", className: styles$r.actionButton, onClick: () => {
1280
+ }, 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 && (jsx("button", { type: "button", className: styles$s.actionButton, onClick: () => {
1281
1281
  handlers.onClick?.();
1282
1282
  actionButton.onClick();
1283
- }, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsx("span", { id: `${inputId}-error`, className: styles$r.errorMessage, children: error }))] }));
1283
+ }, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsx("span", { id: `${inputId}-error`, className: styles$s.errorMessage, children: error }))] }));
1284
1284
  }
1285
1285
 
1286
- var styles$q = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
1286
+ var styles$r = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
1287
1287
 
1288
1288
  /**
1289
1289
  * Toggle Component
@@ -1344,7 +1344,7 @@ function Toggle(props) {
1344
1344
  justifyContent: 'center',
1345
1345
  ...style
1346
1346
  };
1347
- return (jsxs("div", { className: `${styles$q.toggleContainer} ${className || ''}`, children: [jsxs(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: () => {
1347
+ return (jsxs("div", { className: `${styles$r.toggleContainer} ${className || ''}`, children: [jsxs(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: () => {
1348
1348
  if (!isOn) {
1349
1349
  // Already on left
1350
1350
  if (enableCelebration) {
@@ -1359,7 +1359,7 @@ function Toggle(props) {
1359
1359
  playSound('toggle');
1360
1360
  }
1361
1361
  onToggle(false);
1362
- }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsx(motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxs(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: () => {
1362
+ }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsx(motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxs(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: () => {
1363
1363
  if (isOn) {
1364
1364
  // Already on right
1365
1365
  if (enableCelebration) {
@@ -1377,7 +1377,7 @@ function Toggle(props) {
1377
1377
  }, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsx(motion.div, { animate: { scale: isOn ? 1.1 : 1, rotate: isOn ? [0, 5, -5, 0] : 0 }, transition: { duration: 0.3 }, children: rightIcon }), rightLabel] })] }));
1378
1378
  }
1379
1379
 
1380
- 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"};
1380
+ 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"};
1381
1381
 
1382
1382
  /**
1383
1383
  * NumberStepper Component
@@ -1564,32 +1564,32 @@ const NumberStepper = ({ value, onChange, min = -Infinity, max = Infinity, step
1564
1564
  setDisplayValue(finalValue);
1565
1565
  }, [displayValue, min, max, step, onChange]);
1566
1566
  const containerClasses = [
1567
- styles$p.container,
1568
- styles$p[size],
1569
- styles$p[variant],
1570
- layout === 'vertical' && styles$p.vertical,
1571
- disabled && styles$p.disabled,
1567
+ styles$q.container,
1568
+ styles$q[size],
1569
+ styles$q[variant],
1570
+ layout === 'vertical' && styles$q.vertical,
1571
+ disabled && styles$q.disabled,
1572
1572
  className
1573
1573
  ].filter(Boolean).join(' ');
1574
1574
  // Merge custom styles with hover states
1575
1575
  const [isButtonHovered, setIsButtonHovered] = useState(null);
1576
1576
  const isDecrementDisabled = disabled || value <= min;
1577
1577
  const isIncrementDisabled = disabled || value >= max;
1578
- const stepperContent = (jsxs("div", { className: styles$p.stepper, style: customStyles.stepper, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, ...handlers, children: [jsx(motion.button, { className: styles$p.button, style: {
1578
+ const stepperContent = (jsxs("div", { className: styles$q.stepper, style: customStyles.stepper, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, ...handlers, children: [jsx(motion.button, { className: styles$q.button, style: {
1579
1579
  ...customStyles.button,
1580
1580
  ...(isButtonHovered === 'decrement' && customStyles.buttonHover)
1581
- }, 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 ? (jsx("span", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, children: "\u2212" })) : (jsx("svg", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M15 18L9 12L15 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) }), jsx("div", { className: styles$p.valueContainer, style: customStyles.valueContainer, children: jsx(AnimatePresence, { mode: "wait", children: jsx(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: 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) }) }), jsx(motion.button, { className: styles$p.button, style: {
1581
+ }, 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 ? (jsx("span", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, children: "\u2212" })) : (jsx("svg", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M15 18L9 12L15 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) }), jsx("div", { className: styles$q.valueContainer, style: customStyles.valueContainer, children: jsx(AnimatePresence, { mode: "wait", children: jsx(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: 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) }) }), jsx(motion.button, { className: styles$q.button, style: {
1582
1582
  ...customStyles.button,
1583
1583
  ...(isButtonHovered === 'increment' && customStyles.buttonHover)
1584
- }, 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 ? (jsx("span", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, children: "+" })) : (jsx("svg", { className: styles$p.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M9 18L15 12L9 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) })] }));
1584
+ }, 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 ? (jsx("span", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, children: "+" })) : (jsx("svg", { className: styles$q.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M9 18L15 12L9 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) })] }));
1585
1585
  // For custom variant with horizontal layout, render differently
1586
1586
  if (variant === 'custom' && (label || icon)) {
1587
- return (jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxs("div", { className: styles$p.header, style: { ...customStyles.header, flex: 1, marginBottom: 0 }, children: [icon && jsx("span", { className: styles$p.icon, style: customStyles.icon, children: icon }), label && jsx("label", { className: styles$p.label, style: customStyles.label, children: label })] }), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxs("div", { className: styles$p.limits, style: customStyles.limits, children: [jsx("span", { className: styles$p.limit, children: min !== -Infinity && `Min: ${min}` }), jsx("span", { className: styles$p.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1587
+ return (jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxs("div", { className: styles$q.header, style: { ...customStyles.header, flex: 1, marginBottom: 0 }, children: [icon && jsx("span", { className: styles$q.icon, style: customStyles.icon, children: icon }), label && jsx("label", { className: styles$q.label, style: customStyles.label, children: label })] }), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxs("div", { className: styles$q.limits, style: customStyles.limits, children: [jsx("span", { className: styles$q.limit, children: min !== -Infinity && `Min: ${min}` }), jsx("span", { className: styles$q.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1588
1588
  }
1589
- return (jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxs("div", { className: styles$p.header, style: customStyles.header, children: [icon && jsx("span", { className: styles$p.icon, style: customStyles.icon, children: icon }), label && jsx("label", { className: styles$p.label, style: customStyles.label, children: label })] })), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxs("div", { className: styles$p.limits, style: customStyles.limits, children: [jsx("span", { className: styles$p.limit, children: min !== -Infinity && `Min: ${min}` }), jsx("span", { className: styles$p.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1589
+ return (jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxs("div", { className: styles$q.header, style: customStyles.header, children: [icon && jsx("span", { className: styles$q.icon, style: customStyles.icon, children: icon }), label && jsx("label", { className: styles$q.label, style: customStyles.label, children: label })] })), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxs("div", { className: styles$q.limits, style: customStyles.limits, children: [jsx("span", { className: styles$q.limit, children: min !== -Infinity && `Min: ${min}` }), jsx("span", { className: styles$q.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
1590
1590
  };
1591
1591
 
1592
- 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"};
1592
+ 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"};
1593
1593
 
1594
1594
  /**
1595
1595
  * ToggleButton Component
@@ -1628,18 +1628,18 @@ var styles$o = {"button":"ToggleButton-module_button__DTuyY","background":"Toggl
1628
1628
  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 }) => {
1629
1629
  const { handlers, playSound } = useComponentSound(soundConfig);
1630
1630
  const buttonClasses = [
1631
- styles$o.button,
1632
- styles$o[size],
1633
- styles$o[variant],
1634
- active && styles$o.active,
1635
- active && styles$o[`active-${activeColor}`],
1636
- disabled && styles$o.disabled,
1637
- animation !== 'none' && styles$o[`animation-${animation}`],
1631
+ styles$p.button,
1632
+ styles$p[size],
1633
+ styles$p[variant],
1634
+ active && styles$p.active,
1635
+ active && styles$p[`active-${activeColor}`],
1636
+ disabled && styles$p.disabled,
1637
+ animation !== 'none' && styles$p[`animation-${animation}`],
1638
1638
  className
1639
1639
  ].filter(Boolean).join(' ');
1640
1640
  const labelClasses = [
1641
- styles$o.label,
1642
- hideLabelOnMobile && styles$o.hideMobile
1641
+ styles$p.label,
1642
+ hideLabelOnMobile && styles$p.hideMobile
1643
1643
  ].filter(Boolean).join(' ');
1644
1644
  const iconVariants = {
1645
1645
  scale: {
@@ -1703,10 +1703,10 @@ const ToggleButton = ({ active, onClick, icon, label, disabled = false, size = '
1703
1703
  return (jsxs(motion.button, { className: buttonClasses, style: dynamicStyle, onClick: () => {
1704
1704
  playSound('toggle');
1705
1705
  onClick();
1706
- }, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsx(motion.div, { className: styles$o.background, variants: backgroundVariants, initial: "inactive", animate: active ? "active" : "inactive" }), jsxs("div", { className: styles$o.content, children: [icon && (jsx(motion.div, { className: styles$o.iconWrapper, variants: iconVariants[animation], initial: "inactive", animate: active ? "active" : "inactive", transition: { duration: 0.3 }, children: typeof icon === 'string' ? (jsx("span", { className: styles$o.icon, children: icon })) : (jsx("div", { className: styles$o.icon, children: icon })) })), label && jsx("span", { className: labelClasses, children: label }), jsx(AnimatePresence, { children: showCheckmark && active && (jsx(motion.div, { className: styles$o.checkmark, variants: checkmarkVariants, initial: "hidden", animate: "visible", exit: "hidden", children: jsx("svg", { viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) })] }), jsx(AnimatePresence, { children: active && (jsx(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 } })) })] }));
1706
+ }, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsx(motion.div, { className: styles$p.background, variants: backgroundVariants, initial: "inactive", animate: active ? "active" : "inactive" }), jsxs("div", { className: styles$p.content, children: [icon && (jsx(motion.div, { className: styles$p.iconWrapper, variants: iconVariants[animation], initial: "inactive", animate: active ? "active" : "inactive", transition: { duration: 0.3 }, children: typeof icon === 'string' ? (jsx("span", { className: styles$p.icon, children: icon })) : (jsx("div", { className: styles$p.icon, children: icon })) })), label && jsx("span", { className: labelClasses, children: label }), jsx(AnimatePresence, { children: showCheckmark && active && (jsx(motion.div, { className: styles$p.checkmark, variants: checkmarkVariants, initial: "hidden", animate: "visible", exit: "hidden", children: jsx("svg", { viewBox: "0 0 24 24", fill: "none", children: jsx("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) })] }), jsx(AnimatePresence, { children: active && (jsx(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 } })) })] }));
1707
1707
  };
1708
1708
 
1709
- 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"};
1709
+ 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"};
1710
1710
 
1711
1711
  /**
1712
1712
  * Slider component - A beautiful, animated range input
@@ -1794,16 +1794,16 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1794
1794
  setShowTooltipState(false);
1795
1795
  };
1796
1796
  const dynamicColor = getDynamicColor();
1797
- const sizeClass = styles$n[`size-${size}`];
1798
- const stateClass = disabled ? styles$n.disabled : loading ? styles$n.loading : '';
1797
+ const sizeClass = styles$o[`size-${size}`];
1798
+ const stateClass = disabled ? styles$o.disabled : loading ? styles$o.loading : '';
1799
1799
  if (loading) {
1800
- return (jsxs("div", { className: `${styles$n.slider} ${sizeClass} ${styles$n.loading} ${className}`, style: style, children: [label && jsx("label", { className: styles$n.label, children: label }), jsx("div", { className: styles$n.loadingTrack, children: jsx(motion.div, { className: styles$n.loadingIndicator, animate: { x: ['-100%', '200%'] }, transition: {
1800
+ return (jsxs("div", { className: `${styles$o.slider} ${sizeClass} ${styles$o.loading} ${className}`, style: style, children: [label && jsx("label", { className: styles$o.label, children: label }), jsx("div", { className: styles$o.loadingTrack, children: jsx(motion.div, { className: styles$o.loadingIndicator, animate: { x: ['-100%', '200%'] }, transition: {
1801
1801
  repeat: Infinity,
1802
1802
  duration: 1.5,
1803
1803
  ease: "easeInOut"
1804
1804
  } }) })] }));
1805
1805
  }
1806
- return (jsxs("div", { className: `${styles$n.slider} ${sizeClass} ${stateClass} ${className}`, style: style, children: [label && (jsx(motion.label, { className: styles$n.label, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.3 }, children: label })), jsxs(motion.div, { className: styles$n.sliderContainer, ref: sliderRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, whileHover: { scale: 1.02 }, transition: { duration: 0.1 }, children: [jsx(motion.div, { className: styles$n.track, whileHover: { height: 8, marginTop: -1 }, transition: { duration: 0.1 }, children: jsx(motion.div, { className: styles$n.fill, style: {
1806
+ return (jsxs("div", { className: `${styles$o.slider} ${sizeClass} ${stateClass} ${className}`, style: style, children: [label && (jsx(motion.label, { className: styles$o.label, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.3 }, children: label })), jsxs(motion.div, { className: styles$o.sliderContainer, ref: sliderRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, whileHover: { scale: 1.02 }, transition: { duration: 0.1 }, children: [jsx(motion.div, { className: styles$o.track, whileHover: { height: 8, marginTop: -1 }, transition: { duration: 0.1 }, children: jsx(motion.div, { className: styles$o.fill, style: {
1807
1807
  width: `${percentage}%`,
1808
1808
  backgroundColor: dynamicColor
1809
1809
  }, initial: { width: 0 }, animate: { width: `${percentage}%` }, transition: {
@@ -1813,7 +1813,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1813
1813
  damping: 30
1814
1814
  }, whileHover: {
1815
1815
  boxShadow: `inset 0 0 0 1px rgba(255,255,255,0.2)`
1816
- } }) }), 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 }), jsx(motion.div, { className: styles$n.thumb, style: {
1816
+ } }) }), 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 }), jsx(motion.div, { className: styles$o.thumb, style: {
1817
1817
  left: `${percentage}%`,
1818
1818
  backgroundColor: dynamicColor,
1819
1819
  borderColor: colors.thumb || dynamicColor
@@ -1830,14 +1830,14 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1830
1830
  }, whileHover: {
1831
1831
  scale: 1.1,
1832
1832
  transition: { duration: 0.1 }
1833
- }, children: isDragging && (jsx(motion.div, { className: styles$n.ripple, initial: { scale: 0, opacity: 0.6 }, animate: { scale: 2, opacity: 0 }, transition: { duration: 0.5 } })) }), jsx(AnimatePresence, { children: showTooltipState && (jsxs(motion.div, { className: styles$n.tooltip, style: {
1833
+ }, children: isDragging && (jsx(motion.div, { className: styles$o.ripple, initial: { scale: 0, opacity: 0.6 }, animate: { scale: 2, opacity: 0 }, transition: { duration: 0.5 } })) }), jsx(AnimatePresence, { children: showTooltipState && (jsxs(motion.div, { className: styles$o.tooltip, style: {
1834
1834
  left: `${percentage}%`,
1835
1835
  backgroundColor: dynamicColor
1836
- }, 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), jsx("div", { className: styles$n.tooltipArrow, style: { borderTopColor: dynamicColor } })] })) })] }), showValue && (jsx(motion.div, { className: styles$n.valueDisplay, style: { color: dynamicColor }, initial: { scale: 0.8 }, animate: { scale: 1 }, transition: {
1836
+ }, 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), jsx("div", { className: styles$o.tooltipArrow, style: { borderTopColor: dynamicColor } })] })) })] }), showValue && (jsx(motion.div, { className: styles$o.valueDisplay, style: { color: dynamicColor }, initial: { scale: 0.8 }, animate: { scale: 1 }, transition: {
1837
1837
  duration: 0.2,
1838
1838
  type: "spring",
1839
1839
  stiffness: 300
1840
- }, children: formatValue(value) }, value)), labels.length > 0 && (jsx("div", { className: styles$n.labelsContainer, children: labels.map((labelConfig, index) => {
1840
+ }, children: formatValue(value) }, value)), labels.length > 0 && (jsx("div", { className: styles$o.labelsContainer, children: labels.map((labelConfig, index) => {
1841
1841
  let position = 0;
1842
1842
  if (labelConfig.position === 'start')
1843
1843
  position = 0;
@@ -1845,7 +1845,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1845
1845
  position = 100;
1846
1846
  else if (typeof labelConfig.position === 'number')
1847
1847
  position = labelConfig.position;
1848
- return (jsx(motion.div, { className: styles$n.labelItem, style: {
1848
+ return (jsx(motion.div, { className: styles$o.labelItem, style: {
1849
1849
  left: `${position}%`,
1850
1850
  color: labelConfig.color
1851
1851
  }, initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 }, transition: {
@@ -1858,7 +1858,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
1858
1858
  }) }))] }));
1859
1859
  }
1860
1860
 
1861
- 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"};
1861
+ 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"};
1862
1862
 
1863
1863
  const defaultMessages = [
1864
1864
  'Loading your content...',
@@ -1942,22 +1942,22 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1942
1942
  }
1943
1943
  }, [currentMessageIndex, message, messagesToUse, showMessage]);
1944
1944
  const containerClasses = [
1945
- styles$m.loadingContainer,
1946
- styles$m[size],
1947
- styles$m[variant],
1948
- fullScreen && styles$m.fullScreen,
1949
- overlay && styles$m.overlay,
1945
+ styles$n.loadingContainer,
1946
+ styles$n[size],
1947
+ styles$n[variant],
1948
+ fullScreen && styles$n.fullScreen,
1949
+ overlay && styles$n.overlay,
1950
1950
  className
1951
1951
  ].filter(Boolean).join(' ');
1952
1952
  const customStyle = {
1953
1953
  ...(color && { '--spinner-color': color }),
1954
1954
  ...(backgroundColor && { '--spinner-background': backgroundColor }),
1955
1955
  };
1956
- const renderDots = () => (jsxs(motion.div, { className: styles$m.dotsSpinner, animate: { rotate: 360 }, transition: {
1956
+ const renderDots = () => (jsxs(motion.div, { className: styles$n.dotsSpinner, animate: { rotate: 360 }, transition: {
1957
1957
  duration: 2,
1958
1958
  repeat: Infinity,
1959
1959
  ease: 'linear'
1960
- }, children: [jsx(motion.div, { className: styles$m.dot1, animate: {
1960
+ }, children: [jsx(motion.div, { className: styles$n.dot1, animate: {
1961
1961
  scale: [1, 1.3, 1],
1962
1962
  y: [0, -6, 0]
1963
1963
  }, transition: {
@@ -1965,7 +1965,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1965
1965
  repeat: Infinity,
1966
1966
  ease: 'easeInOut',
1967
1967
  delay: 0
1968
- } }), jsx(motion.div, { className: styles$m.dot2, animate: {
1968
+ } }), jsx(motion.div, { className: styles$n.dot2, animate: {
1969
1969
  scale: [1, 1.3, 1],
1970
1970
  y: [0, -6, 0]
1971
1971
  }, transition: {
@@ -1973,7 +1973,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1973
1973
  repeat: Infinity,
1974
1974
  ease: 'easeInOut',
1975
1975
  delay: 0.5
1976
- } }), jsx(motion.div, { className: styles$m.dot3, animate: {
1976
+ } }), jsx(motion.div, { className: styles$n.dot3, animate: {
1977
1977
  scale: [1, 1.3, 1],
1978
1978
  y: [0, -6, 0]
1979
1979
  }, transition: {
@@ -1982,12 +1982,12 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
1982
1982
  ease: 'easeInOut',
1983
1983
  delay: 1
1984
1984
  } })] }));
1985
- const renderSpinner = () => (jsx(motion.div, { className: styles$m.circleSpinner, animate: { rotate: 360 }, transition: {
1985
+ const renderSpinner = () => (jsx(motion.div, { className: styles$n.circleSpinner, animate: { rotate: 360 }, transition: {
1986
1986
  duration: 1,
1987
1987
  repeat: Infinity,
1988
1988
  ease: 'linear'
1989
1989
  } }));
1990
- const renderPulse = () => (jsx(motion.div, { className: styles$m.pulseSpinner, animate: {
1990
+ const renderPulse = () => (jsx(motion.div, { className: styles$n.pulseSpinner, animate: {
1991
1991
  scale: [1, 1.2, 1],
1992
1992
  opacity: [1, 0.7, 1]
1993
1993
  }, transition: {
@@ -2006,10 +2006,10 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
2006
2006
  return renderDots();
2007
2007
  }
2008
2008
  };
2009
- return (jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsx(AnimatePresence, { mode: "wait", children: jsx(motion.p, { className: styles$m.loadingText, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: {
2009
+ return (jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsx(AnimatePresence, { mode: "wait", children: jsx(motion.p, { className: styles$n.loadingText, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: {
2010
2010
  duration: 0.4,
2011
2011
  ease: 'easeOut'
2012
- }, children: currentMessage }, currentMessage) })), showSparkles && (jsx("div", { className: styles$m.sparkleContainer, children: [...Array(4)].map((_, i) => (jsx(motion.div, { className: styles$m.sparkle, animate: {
2012
+ }, children: currentMessage }, currentMessage) })), showSparkles && (jsx("div", { className: styles$n.sparkleContainer, children: [...Array(4)].map((_, i) => (jsx(motion.div, { className: styles$n.sparkle, animate: {
2013
2013
  opacity: [0, 1, 0],
2014
2014
  scale: [0.5, 1, 0.5],
2015
2015
  rotate: [0, 180, 360]
@@ -2024,7 +2024,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
2024
2024
  } }, i))) }))] }));
2025
2025
  };
2026
2026
 
2027
- var styles$l = {"wrapper":"DecryptedText-module_wrapper__tuLvf","srOnly":"DecryptedText-module_srOnly__A-K2T"};
2027
+ var styles$m = {"wrapper":"DecryptedText-module_wrapper__tuLvf","srOnly":"DecryptedText-module_srOnly__A-K2T"};
2028
2028
 
2029
2029
  /**
2030
2030
  * DecryptedText Component
@@ -2208,13 +2208,13 @@ const DecryptedText = ({ text, speed = 50, maxIterations = 10, sequential = fals
2208
2208
  onMouseLeave: () => setIsHovering(false),
2209
2209
  }
2210
2210
  : {};
2211
- return (jsxs(motion.span, { className: `${styles$l.wrapper} ${parentClassName}`, ref: containerRef, ...hoverProps, ...props, children: [jsx("span", { className: styles$l.srOnly, children: displayText }), jsx("span", { "aria-hidden": "true", children: displayText.split('').map((char, index) => {
2211
+ return (jsxs(motion.span, { className: `${styles$m.wrapper} ${parentClassName}`, ref: containerRef, ...hoverProps, ...props, children: [jsx("span", { className: styles$m.srOnly, children: displayText }), jsx("span", { "aria-hidden": "true", children: displayText.split('').map((char, index) => {
2212
2212
  const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;
2213
2213
  return (jsx("span", { className: isRevealedOrDone ? className : encryptedClassName, children: char }, index));
2214
2214
  }) })] }));
2215
2215
  };
2216
2216
 
2217
- 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"};
2217
+ 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"};
2218
2218
 
2219
2219
  /**
2220
2220
  * ArrayInput component - Versatile dynamic list manager
@@ -2281,11 +2281,11 @@ function SimpleArrayInput({ label, values, onChange, placeholder, itemStyle, inp
2281
2281
  itemIdsRef.current.splice(index, 1);
2282
2282
  onChange(newValues);
2283
2283
  };
2284
- return (jsxs("div", { className: styles$k.arrayInput, children: [jsx("h3", { className: styles$k.arrayInputLabel, children: label }), jsx("div", { children: jsx(AnimatePresence, { children: values.map((value, index) => (jsxs(motion.div, { className: styles$k.arrayInputItem, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2284
+ return (jsxs("div", { className: styles$l.arrayInput, children: [jsx("h3", { className: styles$l.arrayInputLabel, children: label }), jsx("div", { children: jsx(AnimatePresence, { children: values.map((value, index) => (jsxs(motion.div, { className: styles$l.arrayInputItem, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
2285
2285
  duration: 0.3,
2286
2286
  ease: "easeInOut",
2287
2287
  layout: { duration: 0.2 }
2288
- }, children: [jsx("div", { className: styles$k.inputWrapper, children: multiline ? (jsx("div", { style: inputStyle, children: jsx(TextArea, { label: "", value: value, onChange: (newValue) => handleChange(index, newValue), placeholder: placeholder, rows: rows, compact: true }) })) : (jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$k.input, style: inputStyle })) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$k.removeButton, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: 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]))) }) }), jsx(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$k.addButton, children: label })] }));
2288
+ }, children: [jsx("div", { className: styles$l.inputWrapper, children: multiline ? (jsx("div", { style: inputStyle, children: jsx(TextArea, { label: "", value: value, onChange: (newValue) => handleChange(index, newValue), placeholder: placeholder, rows: rows, compact: true }) })) : (jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$l.input, style: inputStyle })) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$l.removeButton, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: 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]))) }) }), jsx(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$l.addButton, children: label })] }));
2289
2289
  }
2290
2290
  // Complex object array implementation
2291
2291
  function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle, inputStyle, buttonVariant = 'primary' }) {
@@ -2310,14 +2310,14 @@ function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle,
2310
2310
  // Generate key from all field values
2311
2311
  return fields.map(f => item[f.name] || '').join('-') + `-${index}`;
2312
2312
  };
2313
- return (jsxs("div", { className: styles$k.arrayInput, children: [jsx("h3", { className: styles$k.arrayInputLabel, children: label }), jsx("div", { children: jsx(AnimatePresence, { children: values.map((value, index) => (jsxs(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: {
2313
+ return (jsxs("div", { className: styles$l.arrayInput, children: [jsx("h3", { className: styles$l.arrayInputLabel, children: label }), jsx("div", { children: jsx(AnimatePresence, { children: values.map((value, index) => (jsxs(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: {
2314
2314
  duration: 0.3,
2315
2315
  ease: "easeInOut",
2316
2316
  layout: { duration: 0.2 }
2317
- }, children: [jsx("div", { className: styles$k.fieldsWrapper, children: fields.map((field) => (jsx("div", { style: inputStyle, children: field.multiline ? (jsx(TextArea, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, placeholder: field.placeholder, rows: field.rows, compact: true })) : (jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder })) }, field.name))) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$k.removeButton, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: 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)))) }) }), jsxs(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$k.addButton, children: ["Add ", label] })] }));
2317
+ }, children: [jsx("div", { className: styles$l.fieldsWrapper, children: fields.map((field) => (jsx("div", { style: inputStyle, children: field.multiline ? (jsx(TextArea, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, placeholder: field.placeholder, rows: field.rows, compact: true })) : (jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder })) }, field.name))) }), jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$l.removeButton, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: 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)))) }) }), jsxs(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$l.addButton, children: ["Add ", label] })] }));
2318
2318
  }
2319
2319
 
2320
- 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"};
2320
+ 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"};
2321
2321
 
2322
2322
  const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = false, onEnterEditMode, onExitEditMode, position = { bottom: 32, right: 32 } }) => {
2323
2323
  const [isMobile, setIsMobile] = useState(false);
@@ -2402,15 +2402,15 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
2402
2402
  };
2403
2403
  const getVariantClass = () => {
2404
2404
  if (isSaving)
2405
- return styles$j.primary;
2405
+ return styles$k.primary;
2406
2406
  if (isEditMode) {
2407
- return hasUnsavedChanges ? styles$j.success : styles$j.secondary;
2407
+ return hasUnsavedChanges ? styles$k.success : styles$k.secondary;
2408
2408
  }
2409
- return styles$j.primary;
2409
+ return styles$k.primary;
2410
2410
  };
2411
2411
  const getIcon = () => {
2412
2412
  if (isSaving) {
2413
- return jsx("div", { className: styles$j.loader });
2413
+ return jsx("div", { className: styles$k.loader });
2414
2414
  }
2415
2415
  if (isEditMode) {
2416
2416
  return hasUnsavedChanges ? jsx(Check, { size: 24 }) : jsx(X, { size: 24 });
@@ -2425,14 +2425,14 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
2425
2425
  }
2426
2426
  return "Enter edit mode";
2427
2427
  };
2428
- return (jsx(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: {
2428
+ return (jsx(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: {
2429
2429
  type: "spring",
2430
2430
  stiffness: 260,
2431
2431
  damping: 20
2432
2432
  }, children: getIcon() }));
2433
2433
  };
2434
2434
 
2435
- 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"};
2435
+ 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"};
2436
2436
 
2437
2437
  // Default filter options for backwards compatibility
2438
2438
  const defaultFilterOptions = [
@@ -2625,18 +2625,18 @@ const SearchBar = ({ className, placeholder = "Search (Ctrl+Space)...", onSearch
2625
2625
  return text || '';
2626
2626
  const regex = new RegExp(`(${highlight.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
2627
2627
  const parts = text.split(regex);
2628
- return parts.map((part, index) => regex.test(part) ? (jsx("mark", { className: styles$i.highlight, children: part }, index)) : (part));
2628
+ return parts.map((part, index) => regex.test(part) ? (jsx("mark", { className: styles$j.highlight, children: part }, index)) : (part));
2629
2629
  };
2630
- return (jsxs("div", { ref: searchRef, className: `${styles$i.searchContainer} ${className || ''}`, children: [jsxs("div", { className: styles$i.searchInputWrapper, children: [jsx(Search, { className: styles$i.searchIcon }), 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 && (jsx(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: jsx(X, {}) })), showFilter && (jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$i.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsx(AnimatePresence, { children: isDropdownOpen && (jsx(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 ? (jsxs("div", { className: styles$i.loadingState, children: [jsx("div", { className: styles$i.spinner }), jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxs("div", { className: styles$i.emptyState, children: ["No results found for \"", query, "\""] })) : (jsx("div", { className: styles$i.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
2630
+ return (jsxs("div", { ref: searchRef, className: `${styles$j.searchContainer} ${className || ''}`, children: [jsxs("div", { className: styles$j.searchInputWrapper, children: [jsx(Search, { className: styles$j.searchIcon }), 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 && (jsx(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: jsx(X, {}) })), showFilter && (jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$j.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsx(AnimatePresence, { children: isDropdownOpen && (jsx(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 ? (jsxs("div", { className: styles$j.loadingState, children: [jsx("div", { className: styles$j.spinner }), jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxs("div", { className: styles$j.emptyState, children: ["No results found for \"", query, "\""] })) : (jsx("div", { className: styles$j.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
2631
2631
  const Icon = entityIcons[type];
2632
- return (jsxs("div", { className: styles$i.resultGroup, children: [jsxs("div", { className: styles$i.groupHeader, children: [Icon && jsx(Icon, { className: styles$i.groupIcon }), jsx("span", { className: styles$i.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsx("span", { className: styles$i.groupCount, children: groupResults.length })] }), jsx("div", { className: styles$i.groupResults, children: groupResults.map((result) => {
2632
+ return (jsxs("div", { className: styles$j.resultGroup, children: [jsxs("div", { className: styles$j.groupHeader, children: [Icon && jsx(Icon, { className: styles$j.groupIcon }), jsx("span", { className: styles$j.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsx("span", { className: styles$j.groupCount, children: groupResults.length })] }), jsx("div", { className: styles$j.groupResults, children: groupResults.map((result) => {
2633
2633
  const globalIndex = results.indexOf(result);
2634
- return (jsxs(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: [jsxs("div", { className: styles$i.resultContent, children: [jsx("div", { className: styles$i.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsx("div", { className: styles$i.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsx("div", { className: styles$i.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
2634
+ return (jsxs(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: [jsxs("div", { className: styles$j.resultContent, children: [jsx("div", { className: styles$j.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsx("div", { className: styles$j.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsx("div", { className: styles$j.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
2635
2635
  }) })] }, type));
2636
2636
  }) })) })) })] }));
2637
2637
  };
2638
2638
 
2639
- 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-"};
2639
+ 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-"};
2640
2640
 
2641
2641
  const lightTheme = createTheme({
2642
2642
  palette: {
@@ -2672,26 +2672,26 @@ function TimeInput({ label, value, onChange, error = false, success = false, loa
2672
2672
  !!document.documentElement.getAttribute('data-theme')?.includes('dark');
2673
2673
  const muiTheme = useMemo(() => (isDark ? darkTheme : lightTheme), [isDark]);
2674
2674
  const getContainerClassName = () => {
2675
- const classes = [styles$h.timeInput];
2675
+ const classes = [styles$i.timeInput];
2676
2676
  if (error)
2677
- classes.push(styles$h.error);
2677
+ classes.push(styles$i.error);
2678
2678
  if (success)
2679
- classes.push(styles$h.success);
2679
+ classes.push(styles$i.success);
2680
2680
  if (loading)
2681
- classes.push(styles$h.loading);
2681
+ classes.push(styles$i.loading);
2682
2682
  if (disabled)
2683
- classes.push(styles$h.disabled);
2683
+ classes.push(styles$i.disabled);
2684
2684
  if (className)
2685
2685
  classes.push(className);
2686
2686
  return classes.join(' ');
2687
2687
  };
2688
- return (jsxs("div", { className: getContainerClassName(), children: [label && (jsxs("label", { className: styles$h.label, children: [label, required && jsx("span", { className: styles$h.required, children: "*" })] })), jsx(ThemeProvider$1, { theme: muiTheme, children: jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsx(MobileTimePicker, { value: dayjsValue, onChange: (newValue) => {
2688
+ return (jsxs("div", { className: getContainerClassName(), children: [label && (jsxs("label", { className: styles$i.label, children: [label, required && jsx("span", { className: styles$i.required, children: "*" })] })), jsx(ThemeProvider$1, { theme: muiTheme, children: jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsx(MobileTimePicker, { value: dayjsValue, onChange: (newValue) => {
2689
2689
  onChange(newValue ? newValue.format('HH:mm') : '');
2690
2690
  }, ampm: false, views: ['hours', 'minutes'], disabled: disabled || loading, slotProps: {
2691
2691
  textField: {
2692
2692
  size: 'small',
2693
2693
  fullWidth: true,
2694
- className: styles$h.picker,
2694
+ className: styles$i.picker,
2695
2695
  sx: {
2696
2696
  '& .MuiPickersOutlinedInput-root': {
2697
2697
  fontFamily: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace",
@@ -2779,7 +2779,7 @@ const ThemeProvider = ({ children, defaultTheme = 'light', storageKey = 'app-the
2779
2779
  return (jsx(ThemeContext.Provider, { value: { theme, setTheme, toggleTheme }, children: children }));
2780
2780
  };
2781
2781
 
2782
- 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"};
2782
+ 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"};
2783
2783
 
2784
2784
  const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '', currentTheme, onThemeChange, themes: customThemes, }) => {
2785
2785
  // Use safe version that returns null when outside a ThemeProvider
@@ -2800,19 +2800,19 @@ const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '',
2800
2800
  if (variant === 'toggle') {
2801
2801
  // Simple toggle between light and dark
2802
2802
  const isDark = theme.includes('dark');
2803
- return (jsxs(motion.button, { className: `${styles$g.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsx(motion.div, { className: styles$g.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsx(motion.div, { className: styles$g.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsx(Moon, { size: 14 }) : jsx(Sun, { size: 14 }) }) }), showLabel && jsx("span", { className: styles$g.label, children: isDark ? 'Dark' : 'Light' })] }));
2803
+ return (jsxs(motion.button, { className: `${styles$h.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsx(motion.div, { className: styles$h.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsx(motion.div, { className: styles$h.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsx(Moon, { size: 14 }) : jsx(Sun, { size: 14 }) }) }), showLabel && jsx("span", { className: styles$h.label, children: isDark ? 'Dark' : 'Light' })] }));
2804
2804
  }
2805
2805
  if (variant === 'dropdown') {
2806
- return (jsxs("div", { className: `${styles$g.dropdown} ${className}`, children: [jsxs(motion.button, { className: styles$g.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentThemeData.icon, showLabel && jsx("span", { className: styles$g.label, children: currentThemeData.label })] }), jsx(motion.div, { className: styles$g.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxs(motion.button, { className: `${styles$g.dropdownItem} ${theme === t.value ? styles$g.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsx("span", { className: styles$g.icon, children: t.icon }), jsx("span", { className: styles$g.text, children: t.label })] }, t.value))) })] }));
2806
+ return (jsxs("div", { className: `${styles$h.dropdown} ${className}`, children: [jsxs(motion.button, { className: styles$h.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentThemeData.icon, showLabel && jsx("span", { className: styles$h.label, children: currentThemeData.label })] }), jsx(motion.div, { className: styles$h.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxs(motion.button, { className: `${styles$h.dropdownItem} ${theme === t.value ? styles$h.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsx("span", { className: styles$h.icon, children: t.icon }), jsx("span", { className: styles$h.text, children: t.label })] }, t.value))) })] }));
2807
2807
  }
2808
2808
  // Default button variant - cycles through themes
2809
- return (jsxs(motion.button, { className: `${styles$g.button} ${className}`, onClick: () => {
2809
+ return (jsxs(motion.button, { className: `${styles$h.button} ${className}`, onClick: () => {
2810
2810
  const nextIndex = (currentThemeIndex + 1) % themes.length;
2811
2811
  setTheme(themes[nextIndex].value);
2812
- }, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsx(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 && jsx("span", { className: styles$g.label, children: currentThemeData.label })] }));
2812
+ }, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsx(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 && jsx("span", { className: styles$h.label, children: currentThemeData.label })] }));
2813
2813
  };
2814
2814
 
2815
- 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"};
2815
+ 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"};
2816
2816
 
2817
2817
  // Default tabs for backwards compatibility
2818
2818
  const defaultTabs = [
@@ -2823,39 +2823,39 @@ const defaultTabs = [
2823
2823
  ];
2824
2824
  const Tabs = ({ activeTab, onTabChange, tabs: customTabs, className = '', fullWidth = false }) => {
2825
2825
  const tabs = customTabs ?? defaultTabs;
2826
- return (jsx("div", { className: `${styles$f.tabs} ${fullWidth ? styles$f.fullWidth : ''} ${className}`, children: tabs.map((tab) => {
2826
+ return (jsx("div", { className: `${styles$g.tabs} ${fullWidth ? styles$g.fullWidth : ''} ${className}`, children: tabs.map((tab) => {
2827
2827
  const isActive = activeTab === tab.id;
2828
- return (jsxs(motion.button, { className: styles$f.tab, "data-active": isActive, onClick: () => onTabChange(tab.id), style: { position: 'relative' }, children: [jsx(motion.div, { animate: {
2828
+ return (jsxs(motion.button, { className: styles$g.tab, "data-active": isActive, onClick: () => onTabChange(tab.id), style: { position: 'relative' }, children: [jsx(motion.div, { animate: {
2829
2829
  rotate: isActive ? [0, -10, 10, -5, 5, 0] : 0,
2830
2830
  }, transition: {
2831
2831
  rotate: {
2832
2832
  duration: 0.5,
2833
2833
  ease: 'easeInOut'
2834
2834
  }
2835
- }, children: tab.icon && (React.isValidElement(tab.icon) ? (jsx("span", { className: styles$f.tabIcon, children: tab.icon })) : (jsx("span", { className: styles$f.tabIcon, children: React.createElement(tab.icon) }))) }), jsx("span", { children: tab.label })] }, tab.id));
2835
+ }, children: tab.icon && (React.isValidElement(tab.icon) ? (jsx("span", { className: styles$g.tabIcon, children: tab.icon })) : (jsx("span", { className: styles$g.tabIcon, children: React.createElement(tab.icon) }))) }), jsx("span", { children: tab.label })] }, tab.id));
2836
2836
  }) }));
2837
2837
  };
2838
2838
 
2839
- 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"};
2839
+ 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"};
2840
2840
 
2841
2841
  const getIcon = (type) => {
2842
2842
  switch (type) {
2843
2843
  case 'success':
2844
- return (jsx("svg", { className: `${styles$e.icon} ${styles$e.iconSuccess}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
2844
+ return (jsx("svg", { className: `${styles$f.icon} ${styles$f.iconSuccess}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
2845
2845
  case 'error':
2846
- return (jsx("svg", { className: `${styles$e.icon} ${styles$e.iconError}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
2846
+ return (jsx("svg", { className: `${styles$f.icon} ${styles$f.iconError}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
2847
2847
  case 'warning':
2848
- return (jsx("svg", { className: `${styles$e.icon} ${styles$e.iconWarning}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: 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" }) }));
2848
+ return (jsx("svg", { className: `${styles$f.icon} ${styles$f.iconWarning}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: 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" }) }));
2849
2849
  case 'info':
2850
- return (jsx("svg", { className: `${styles$e.icon} ${styles$e.iconInfo}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: 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" }) }));
2850
+ return (jsx("svg", { className: `${styles$f.icon} ${styles$f.iconInfo}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: 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" }) }));
2851
2851
  }
2852
2852
  };
2853
2853
  const getToastStyle = (type) => {
2854
2854
  switch (type) {
2855
- case 'success': return styles$e.toastSuccess;
2856
- case 'error': return styles$e.toastError;
2857
- case 'warning': return styles$e.toastWarning;
2858
- case 'info': return styles$e.toastInfo;
2855
+ case 'success': return styles$f.toastSuccess;
2856
+ case 'error': return styles$f.toastError;
2857
+ case 'warning': return styles$f.toastWarning;
2858
+ case 'info': return styles$f.toastInfo;
2859
2859
  default: return '';
2860
2860
  }
2861
2861
  };
@@ -2877,7 +2877,7 @@ const ToastItem = ({ toast, removeToast, }) => {
2877
2877
  clearInterval(interval);
2878
2878
  };
2879
2879
  }, [toast.id, duration, removeToast]);
2880
- return (jsxs(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), jsxs("div", { className: styles$e.content, children: [toast.title && jsx("p", { className: styles$e.title, children: toast.title }), jsx("p", { className: styles$e.message, children: toast.message })] }), jsx("button", { className: styles$e.closeButton, onClick: () => removeToast(toast.id), "aria-label": "Close notification", children: jsx("svg", { width: "16", height: "16", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), jsx(motion.div, { className: styles$e.progressBar, initial: { width: '100%' }, animate: { width: `${progress}%` }, style: {
2880
+ return (jsxs(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), jsxs("div", { className: styles$f.content, children: [toast.title && jsx("p", { className: styles$f.title, children: toast.title }), jsx("p", { className: styles$f.message, children: toast.message })] }), jsx("button", { className: styles$f.closeButton, onClick: () => removeToast(toast.id), "aria-label": "Close notification", children: jsx("svg", { width: "16", height: "16", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), jsx(motion.div, { className: styles$f.progressBar, initial: { width: '100%' }, animate: { width: `${progress}%` }, style: {
2881
2881
  color: toast.type === 'success' ? '#10B981'
2882
2882
  : toast.type === 'error' ? '#EF4444'
2883
2883
  : toast.type === 'warning' ? '#F59E0B'
@@ -2887,10 +2887,10 @@ const ToastItem = ({ toast, removeToast, }) => {
2887
2887
  const ToastContainer = ({ toasts, removeToast }) => {
2888
2888
  if (typeof document === 'undefined')
2889
2889
  return null;
2890
- return createPortal(jsx("div", { className: styles$e.toastContainer, children: jsx(AnimatePresence, { mode: "sync", children: toasts.map((toast) => (jsx(ToastItem, { toast: toast, removeToast: removeToast }, toast.id))) }) }), document.body);
2890
+ return createPortal(jsx("div", { className: styles$f.toastContainer, children: jsx(AnimatePresence, { mode: "sync", children: toasts.map((toast) => (jsx(ToastItem, { toast: toast, removeToast: removeToast }, toast.id))) }) }), document.body);
2891
2891
  };
2892
2892
 
2893
- 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"};
2893
+ 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"};
2894
2894
 
2895
2895
  /**
2896
2896
  * Breadcrumb Component
@@ -2909,13 +2909,13 @@ var styles$d = {"breadcrumb":"Breadcrumb-module_breadcrumb__pGabz","separator":"
2909
2909
  * />
2910
2910
  */
2911
2911
  const Breadcrumb = ({ items, onNavigate, className = '' }) => {
2912
- return (jsx("nav", { className: `${styles$d.breadcrumb} ${className}`, "aria-label": "Breadcrumb", children: items.map((item, index) => {
2912
+ return (jsx("nav", { className: `${styles$e.breadcrumb} ${className}`, "aria-label": "Breadcrumb", children: items.map((item, index) => {
2913
2913
  const isLast = index === items.length - 1;
2914
- return (jsxs(React.Fragment, { children: [index > 0 && jsx(ChevronRight, { size: 14, className: styles$d.separator }), isLast || !item.href ? (jsx("span", { className: `${styles$d.item} ${isLast ? styles$d.current : ''}`, children: item.label })) : (jsx("button", { className: `${styles$d.item} ${styles$d.link}`, onClick: () => onNavigate?.(item.href), children: item.label }))] }, index));
2914
+ return (jsxs(React.Fragment, { children: [index > 0 && jsx(ChevronRight, { size: 14, className: styles$e.separator }), isLast || !item.href ? (jsx("span", { className: `${styles$e.item} ${isLast ? styles$e.current : ''}`, children: item.label })) : (jsx("button", { className: `${styles$e.item} ${styles$e.link}`, onClick: () => onNavigate?.(item.href), children: item.label }))] }, index));
2915
2915
  }) }));
2916
2916
  };
2917
2917
 
2918
- 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"};
2918
+ 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"};
2919
2919
 
2920
2920
  /**
2921
2921
  * LiquidButton Component
@@ -2941,13 +2941,13 @@ const LiquidButton = ({ actions, icon: Icon = Plus, className = '', }) => {
2941
2941
  setExpanded(false);
2942
2942
  action.onClick();
2943
2943
  }, []);
2944
- return (jsxs(Fragment, { children: [jsx(AnimatePresence, { children: expanded && (jsx(motion.div, { className: styles$c.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: handleToggle })) }), jsxs("div", { className: `${styles$c.container} ${className}`, children: [jsx(AnimatePresence, { children: expanded && (jsx("div", { className: styles$c.actions, children: actions.map((action, index) => (jsxs(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: {
2944
+ return (jsxs(Fragment, { children: [jsx(AnimatePresence, { children: expanded && (jsx(motion.div, { className: styles$d.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: handleToggle })) }), jsxs("div", { className: `${styles$d.container} ${className}`, children: [jsx(AnimatePresence, { children: expanded && (jsx("div", { className: styles$d.actions, children: actions.map((action, index) => (jsxs(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: {
2945
2945
  duration: 0.15,
2946
2946
  delay: (actions.length - 1 - index) * 0.05,
2947
- }, onClick: () => handleAction(action), children: [jsx(action.icon, { size: 18, color: action.color }), jsx("span", { className: styles$c.actionLabel, children: action.label })] }, action.key))) })) }), jsx(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: jsx(Icon, { size: 24, strokeWidth: 2.5 }) })] })] }));
2947
+ }, onClick: () => handleAction(action), children: [jsx(action.icon, { size: 18, color: action.color }), jsx("span", { className: styles$d.actionLabel, children: action.label })] }, action.key))) })) }), jsx(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: jsx(Icon, { size: 24, strokeWidth: 2.5 }) })] })] }));
2948
2948
  };
2949
2949
 
2950
- 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"};
2950
+ 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"};
2951
2951
 
2952
2952
  // Known prefixes produced by stream-json summarizers (DAO-style):
2953
2953
  // "bash: ls -la", "read: path/to/file", "edit: path/to/file",
@@ -3013,21 +3013,21 @@ function StreamConsole({ stream, onCancel, onDismiss, hideDismiss = false, runni
3013
3013
  ? successLabel
3014
3014
  : errorLabel;
3015
3015
  const canShowDismiss = !hideDismiss && (stream.status === 'running' ? !!onCancel : !!onDismiss);
3016
- return (jsxs(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: [jsxs("header", { className: styles$b.header, children: [jsxs("div", { className: styles$b.headerLeft, children: [jsx("span", { className: styles$b.statusDot, "data-status": stream.status, children: jsx(Icon, { size: 12, className: stream.status === 'running' ? styles$b.spin : '' }) }), jsx("span", { className: styles$b.label, children: stream.label }), jsx("span", { className: styles$b.statusText, children: statusLabel })] }), canShowDismiss && (jsx("button", { type: "button", className: styles$b.dismiss, "aria-label": stream.status === 'running' ? 'Cancel' : 'Dismiss', onClick: () => {
3016
+ return (jsxs(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: [jsxs("header", { className: styles$c.header, children: [jsxs("div", { className: styles$c.headerLeft, children: [jsx("span", { className: styles$c.statusDot, "data-status": stream.status, children: jsx(Icon, { size: 12, className: stream.status === 'running' ? styles$c.spin : '' }) }), jsx("span", { className: styles$c.label, children: stream.label }), jsx("span", { className: styles$c.statusText, children: statusLabel })] }), canShowDismiss && (jsx("button", { type: "button", className: styles$c.dismiss, "aria-label": stream.status === 'running' ? 'Cancel' : 'Dismiss', onClick: () => {
3017
3017
  if (stream.status === 'running')
3018
3018
  onCancel?.(stream.id);
3019
3019
  else
3020
3020
  onDismiss?.(stream.id);
3021
- }, children: jsx(X, { size: 14 }) }))] }), jsxs("div", { className: styles$b.body, ref: listRef, children: [stream.events.length === 0 && stream.status === 'running' && (jsx("p", { className: styles$b.hint, children: "Waiting for output\u2026" })), stream.events.map((event, i) => {
3021
+ }, children: jsx(X, { size: 14 }) }))] }), jsxs("div", { className: styles$c.body, ref: listRef, children: [stream.events.length === 0 && stream.status === 'running' && (jsx("p", { className: styles$c.hint, children: "Waiting for output\u2026" })), stream.events.map((event, i) => {
3022
3022
  const step = event.type === 'step' ? parseStep(event.message) : null;
3023
3023
  const StepIcon = step?.subtype ? STEP_ICON[step.subtype] : null;
3024
- return (jsxs("p", { className: styles$b.line, "data-type": event.type, "data-subtype": step?.subtype ?? undefined, children: [jsx("span", { className: styles$b.linePrefix, children: StepIcon ? (jsx(StepIcon, { size: 11 })) : event.type === 'error' ? ('!') : event.type === 'warning' ? ('⚠') : event.type === 'success' ? ('✓') : ('·') }), step?.label ? (jsx("span", { className: styles$b.lineLabel, children: step.label })) : null, jsx("span", { className: styles$b.lineText, children: step ? step.body : event.message })] }, i));
3025
- }), stream.status === 'error' && stream.errorMessage && (jsxs("p", { className: styles$b.line, "data-type": "error", children: [jsx("span", { className: styles$b.linePrefix, children: "!" }), jsx("span", { className: styles$b.lineText, children: stream.errorMessage })] }))] })] }));
3024
+ return (jsxs("p", { className: styles$c.line, "data-type": event.type, "data-subtype": step?.subtype ?? undefined, children: [jsx("span", { className: styles$c.linePrefix, children: StepIcon ? (jsx(StepIcon, { size: 11 })) : event.type === 'error' ? ('!') : event.type === 'warning' ? ('⚠') : event.type === 'success' ? ('✓') : ('·') }), step?.label ? (jsx("span", { className: styles$c.lineLabel, children: step.label })) : null, jsx("span", { className: styles$c.lineText, children: step ? step.body : event.message })] }, i));
3025
+ }), stream.status === 'error' && stream.errorMessage && (jsxs("p", { className: styles$c.line, "data-type": "error", children: [jsx("span", { className: styles$c.linePrefix, children: "!" }), jsx("span", { className: styles$c.lineText, children: stream.errorMessage })] }))] })] }));
3026
3026
  }
3027
3027
 
3028
- 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"};
3028
+ 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"};
3029
3029
 
3030
- 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"};
3030
+ 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"};
3031
3031
 
3032
3032
  const SWIPE_DELETE_THRESHOLD = -80;
3033
3033
  const DayEventCard = ({ event, color, textColor, onComplete, onEdit, onDelete, onDragEnd, draggable = true, }) => {
@@ -3089,9 +3089,9 @@ const DayEventCard = ({ event, color, textColor, onComplete, onEdit, onDelete, o
3089
3089
  };
3090
3090
  const canSwipe = !!onDelete;
3091
3091
  const showGrip = draggable && !!onDragEnd;
3092
- return (jsxs("div", { className: styles$9.wrapper, children: [canSwipe && (jsxs(motion.div, { className: styles$9.deleteUnderlay, style: { opacity: deleteOpacity }, children: [jsx(Trash2, { size: 16 }), jsx("span", { children: "Delete" })] })), jsxs(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: () => {
3092
+ return (jsxs("div", { className: styles$a.wrapper, children: [canSwipe && (jsxs(motion.div, { className: styles$a.deleteUnderlay, style: { opacity: deleteOpacity }, children: [jsx(Trash2, { size: 16 }), jsx("span", { children: "Delete" })] })), jsxs(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: () => {
3093
3093
  didSwipe.current = true;
3094
- }, onDragEnd: handleSwipeEnd, whileTap: verticalDragging ? undefined : { scale: 0.98 }, animate: verticalDragging ? { scale: 1.03 } : { scale: 1 }, onClick: handleCardClick, children: [showGrip && (jsx("div", { className: styles$9.grip, onPointerDown: handleGripPointerDown, onPointerMove: handleGripPointerMove, onPointerUp: handleGripPointerUp, onPointerCancel: handleGripPointerUp, onClick: (e) => e.stopPropagation(), children: jsx(GripVertical, { size: 14 }) })), completed && jsx(Check, { size: 14, className: styles$9.checkIcon, strokeWidth: 3 }), jsx("span", { className: styles$9.text, children: event.title }), event.time && jsx("span", { className: styles$9.time, children: event.time }), onEdit && (jsx("button", { className: styles$9.editButton, onClick: (e) => {
3094
+ }, onDragEnd: handleSwipeEnd, whileTap: verticalDragging ? undefined : { scale: 0.98 }, animate: verticalDragging ? { scale: 1.03 } : { scale: 1 }, onClick: handleCardClick, children: [showGrip && (jsx("div", { className: styles$a.grip, onPointerDown: handleGripPointerDown, onPointerMove: handleGripPointerMove, onPointerUp: handleGripPointerUp, onPointerCancel: handleGripPointerUp, onClick: (e) => e.stopPropagation(), children: jsx(GripVertical, { size: 14 }) })), completed && jsx(Check, { size: 14, className: styles$a.checkIcon, strokeWidth: 3 }), jsx("span", { className: styles$a.text, children: event.title }), event.time && jsx("span", { className: styles$a.time, children: event.time }), onEdit && (jsx("button", { className: styles$a.editButton, onClick: (e) => {
3095
3095
  e.stopPropagation();
3096
3096
  onEdit(event);
3097
3097
  }, "aria-label": "Edit event", children: jsx(Pencil, { size: 13 }) }))] })] }));
@@ -3515,15 +3515,15 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3515
3515
  return Math.floor(diff / oneWeek) + 1;
3516
3516
  };
3517
3517
  if (loading) {
3518
- return (jsx("div", { className: `${styles$a.calendar} ${styles$a.loading} ${className}`, style: style, children: jsx("div", { className: styles$a.loadingSpinner, children: "Loading..." }) }));
3518
+ return (jsx("div", { className: `${styles$b.calendar} ${styles$b.loading} ${className}`, style: style, children: jsx("div", { className: styles$b.loadingSpinner, children: "Loading..." }) }));
3519
3519
  }
3520
- return (jsxs("div", { className: `${styles$a.calendar} ${compact ? styles$a.compact : ''} ${className}`, style: style, children: [!hideHeader && (jsxs("div", { className: styles$a.header, children: [jsxs("div", { className: styles$a.navigation, children: [jsx("button", { onClick: handlePrevious, className: styles$a.navButton, "aria-label": "Previous", children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "15,18 9,12 15,6" }) }) }), jsx("h3", { className: styles$a.title, children: calendarData.displayTitle }), jsx("button", { onClick: handleNext, className: styles$a.navButton, "aria-label": "Next", children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "9,6 15,12 9,18" }) }) })] }), categories && categories.length > 0 && (jsxs("div", { className: styles$a.filterBar, role: "tablist", "aria-label": "Filter by category", children: [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 => {
3520
+ return (jsxs("div", { className: `${styles$b.calendar} ${compact ? styles$b.compact : ''} ${className}`, style: style, children: [!hideHeader && (jsxs("div", { className: styles$b.header, children: [jsxs("div", { className: styles$b.navigation, children: [jsx("button", { onClick: handlePrevious, className: styles$b.navButton, "aria-label": "Previous", children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "15,18 9,12 15,6" }) }) }), jsx("h3", { className: styles$b.title, children: calendarData.displayTitle }), jsx("button", { onClick: handleNext, className: styles$b.navButton, "aria-label": "Next", children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "9,6 15,12 9,18" }) }) })] }), categories && categories.length > 0 && (jsxs("div", { className: styles$b.filterBar, role: "tablist", "aria-label": "Filter by category", children: [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 => {
3521
3521
  const active = activeCategoryId === cat.id;
3522
- return (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 && (jsx("span", { className: styles$a.filterDot, style: { background: cat.color } })), cat.label] }, cat.id));
3523
- })] })), jsxs("div", { className: styles$a.controls, children: [exportFormats && exportFormats.length > 0 && (jsxs("div", { className: styles$a.exportDropdown, ref: exportRef, children: [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: jsx(Download, { size: 16 }) }), exportOpen && (jsx("div", { className: styles$a.exportMenu, role: "menu", children: exportFormats.map(format => (jsx("button", { type: "button", role: "menuitem", className: styles$a.exportMenuItem, onClick: () => {
3522
+ return (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 && (jsx("span", { className: styles$b.filterDot, style: { background: cat.color } })), cat.label] }, cat.id));
3523
+ })] })), jsxs("div", { className: styles$b.controls, children: [exportFormats && exportFormats.length > 0 && (jsxs("div", { className: styles$b.exportDropdown, ref: exportRef, children: [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: jsx(Download, { size: 16 }) }), exportOpen && (jsx("div", { className: styles$b.exportMenu, role: "menu", children: exportFormats.map(format => (jsx("button", { type: "button", role: "menuitem", className: styles$b.exportMenuItem, onClick: () => {
3524
3524
  downloadEvents(filteredEvents, format);
3525
3525
  setExportOpen(false);
3526
- }, children: format.toUpperCase() }, format))) }))] })), (currentViewMode === 'day' || currentViewMode === 'week') && (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 ? jsx(Sun, { size: 16 }) : jsx(Moon, { size: 16 }) })), jsx("button", { onClick: handleToday, className: styles$a.todayButton, children: "Today" }), jsxs("div", { className: styles$a.viewToggle, children: [jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'month' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('month'), children: "Month" }), jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'week' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('week'), children: "Week" }), jsx("button", { className: `${styles$a.viewButton} ${currentViewMode === 'day' ? styles$a.active : ''}`, onClick: () => setCurrentViewMode('day'), children: "Day" })] })] })] })), currentViewMode === 'month' && (jsxs("div", { className: `${styles$a.weekDays} ${showWeekNumbers ? styles$a.withWeekNumbers : ''}`, children: [showWeekNumbers && jsx("div", { className: styles$a.weekNumberHeader, children: "Wk" }), finalDayLabels.map((day) => (jsx("div", { className: styles$a.weekDay, children: day }, day)))] })), currentViewMode === 'day' ? (
3526
+ }, children: format.toUpperCase() }, format))) }))] })), (currentViewMode === 'day' || currentViewMode === 'week') && (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 ? jsx(Sun, { size: 16 }) : jsx(Moon, { size: 16 }) })), jsx("button", { onClick: handleToday, className: styles$b.todayButton, children: "Today" }), jsxs("div", { className: styles$b.viewToggle, children: [jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'month' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('month'), children: "Month" }), jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'week' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('week'), children: "Week" }), jsx("button", { className: `${styles$b.viewButton} ${currentViewMode === 'day' ? styles$b.active : ''}`, onClick: () => setCurrentViewMode('day'), children: "Day" })] })] })] })), currentViewMode === 'month' && (jsxs("div", { className: `${styles$b.weekDays} ${showWeekNumbers ? styles$b.withWeekNumbers : ''}`, children: [showWeekNumbers && jsx("div", { className: styles$b.weekNumberHeader, children: "Wk" }), finalDayLabels.map((day) => (jsx("div", { className: styles$b.weekDay, children: day }, day)))] })), currentViewMode === 'day' ? (
3527
3527
  // Day view layout — positioned events with duration, all-day strip, now-line
3528
3528
  (() => {
3529
3529
  const dayEvents = getDayEvents(currentDate);
@@ -3558,7 +3558,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3558
3558
  const handleEventDragEnd = (event, clientY) => {
3559
3559
  if (!onEventDrop)
3560
3560
  return;
3561
- const gridEl = dayViewScrollRef.current?.querySelector(`.${styles$a.dayTimelineGrid}`);
3561
+ const gridEl = dayViewScrollRef.current?.querySelector(`.${styles$b.dayTimelineGrid}`);
3562
3562
  if (!gridEl)
3563
3563
  return;
3564
3564
  const rect = gridEl.getBoundingClientRect();
@@ -3573,7 +3573,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3573
3573
  newDate.setHours(newHour, newMinute, 0, 0);
3574
3574
  onEventDrop(event, newDate);
3575
3575
  };
3576
- return (jsxs("div", { className: styles$a.dayView, children: [jsxs("div", { className: styles$a.dayViewHeader, children: [jsx("div", { className: styles$a.timeColumnHeader }), jsx("div", { className: styles$a.dayColumnHeader, children: currentDate.toLocaleDateString(locale, { weekday: 'short', day: 'numeric' }) })] }), allDayEvents.length > 0 && (jsxs("div", { className: styles$a.allDayStrip, children: [jsx("span", { className: styles$a.allDayLabel, children: "All day" }), jsx("div", { className: styles$a.allDayList, children: allDayEvents.map(event => (jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, draggable: false }, event.id))) })] })), jsx("div", { className: styles$a.dayViewScrollContainer, ref: dayViewScrollRef, children: jsxs("div", { className: styles$a.dayTimelineGrid, style: { height: timelineHeight }, children: [hours.map(hour => (jsxs("div", { className: styles$a.hourRow, style: { height: hourHeight }, children: [jsxs("span", { className: styles$a.hourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }), jsx("div", { className: styles$a.hourSlots, children: halfHourSlots ? (jsxs(Fragment, { children: [jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleSlotClick(hour, 0) }), jsx("div", { className: `${styles$a.halfHourSlot} ${styles$a.halfHourSlotBottom}`, onClick: () => handleSlotClick(hour, 30) })] })) : (jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleSlotClick(hour, 0) })) })] }, hour))), scheduled.map((event) => {
3576
+ return (jsxs("div", { className: styles$b.dayView, children: [jsxs("div", { className: styles$b.dayViewHeader, children: [jsx("div", { className: styles$b.timeColumnHeader }), jsx("div", { className: styles$b.dayColumnHeader, children: currentDate.toLocaleDateString(locale, { weekday: 'short', day: 'numeric' }) })] }), allDayEvents.length > 0 && (jsxs("div", { className: styles$b.allDayStrip, children: [jsx("span", { className: styles$b.allDayLabel, children: "All day" }), jsx("div", { className: styles$b.allDayList, children: allDayEvents.map(event => (jsx(DayEventCard, { event: event, color: getEventColor(event), textColor: getEventTextColor(event), onComplete: onEventComplete ?? (onEventClick ? handleEventClick : undefined), onEdit: onEventEdit, onDelete: onEventDelete, draggable: false }, event.id))) })] })), jsx("div", { className: styles$b.dayViewScrollContainer, ref: dayViewScrollRef, children: jsxs("div", { className: styles$b.dayTimelineGrid, style: { height: timelineHeight }, children: [hours.map(hour => (jsxs("div", { className: styles$b.hourRow, style: { height: hourHeight }, children: [jsxs("span", { className: styles$b.hourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }), jsx("div", { className: styles$b.hourSlots, children: halfHourSlots ? (jsxs(Fragment, { children: [jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleSlotClick(hour, 0) }), jsx("div", { className: `${styles$b.halfHourSlot} ${styles$b.halfHourSlotBottom}`, onClick: () => handleSlotClick(hour, 30) })] })) : (jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleSlotClick(hour, 0) })) })] }, hour))), scheduled.map((event) => {
3577
3577
  const [h, m] = event.time.split(':').map(Number);
3578
3578
  const top = (h - startHour) * hourHeight + (m / 60) * hourHeight;
3579
3579
  const duration = eventDuration(event);
@@ -3581,13 +3581,13 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3581
3581
  const lane = dayLayout.get(event.id);
3582
3582
  const totalCols = lane?.totalCols ?? 1;
3583
3583
  const col = lane?.col ?? 0;
3584
- return (jsx("div", { className: styles$a.dayEventAnchor, style: {
3584
+ return (jsx("div", { className: styles$b.dayEventAnchor, style: {
3585
3585
  top,
3586
3586
  height,
3587
3587
  '--lane-col': col,
3588
3588
  '--lane-total': totalCols,
3589
3589
  }, onClick: (e) => e.stopPropagation(), children: 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));
3590
- }), showNow && (jsx("div", { className: styles$a.currentTimeIndicator, style: { top: `${nowOffset}px` } }))] }) })] }));
3590
+ }), showNow && (jsx("div", { className: styles$b.currentTimeIndicator, style: { top: `${nowOffset}px` } }))] }) })] }));
3591
3591
  })()) : currentViewMode === 'week' ? (
3592
3592
  // Week view layout — 7 side-by-side day timelines. Drag events across
3593
3593
  // columns to reschedule to a different day + hour in one gesture.
@@ -3621,7 +3621,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3621
3621
  const handleWeekDragEnd = (event, clientY, clientX) => {
3622
3622
  if (!onEventDrop)
3623
3623
  return;
3624
- const gridEl = weekViewScrollRef.current?.querySelector(`.${styles$a.weekDayColumns}`);
3624
+ const gridEl = weekViewScrollRef.current?.querySelector(`.${styles$b.weekDayColumns}`);
3625
3625
  if (!gridEl)
3626
3626
  return;
3627
3627
  const rect = gridEl.getBoundingClientRect();
@@ -3639,15 +3639,15 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3639
3639
  newDate.setHours(newHour, newMinute, 0, 0);
3640
3640
  onEventDrop(event, newDate);
3641
3641
  };
3642
- return (jsxs("div", { className: styles$a.weekTimeline, children: [jsxs("div", { className: styles$a.weekTimelineHeader, children: [jsx("div", { className: styles$a.timeColumnHeader }), days.map(day => {
3642
+ return (jsxs("div", { className: styles$b.weekTimeline, children: [jsxs("div", { className: styles$b.weekTimelineHeader, children: [jsx("div", { className: styles$b.timeColumnHeader }), days.map(day => {
3643
3643
  const dayIsToday = day.toDateString() === now.toDateString();
3644
3644
  const dayIsSelected = selectedDate && day.toDateString() === selectedDate.toDateString();
3645
- return (jsxs("button", { type: "button", className: `${styles$a.weekDayColumnHeader} ${dayIsToday ? styles$a.today : ''} ${dayIsSelected ? styles$a.selected : ''}`, onClick: () => handleDateClick(day), children: [jsx("span", { className: styles$a.weekDayLabel, children: day.toLocaleDateString(locale, { weekday: 'short' }) }), jsx("span", { className: styles$a.weekDayNumber, children: day.getDate() })] }, day.toISOString()));
3646
- })] }), jsx("div", { className: styles$a.weekTimelineScroll, ref: weekViewScrollRef, children: jsxs("div", { className: styles$a.weekTimelineGrid, style: { height: timelineHeight }, children: [jsx("div", { className: styles$a.weekTimeColumn, children: hours.map(hour => (jsx("div", { className: styles$a.weekTimeSlot, style: { height: hourHeight }, children: jsxs("span", { className: styles$a.weekHourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }) }, hour))) }), jsx("div", { className: styles$a.weekDayColumns, children: days.map(day => {
3645
+ return (jsxs("button", { type: "button", className: `${styles$b.weekDayColumnHeader} ${dayIsToday ? styles$b.today : ''} ${dayIsSelected ? styles$b.selected : ''}`, onClick: () => handleDateClick(day), children: [jsx("span", { className: styles$b.weekDayLabel, children: day.toLocaleDateString(locale, { weekday: 'short' }) }), jsx("span", { className: styles$b.weekDayNumber, children: day.getDate() })] }, day.toISOString()));
3646
+ })] }), jsx("div", { className: styles$b.weekTimelineScroll, ref: weekViewScrollRef, children: jsxs("div", { className: styles$b.weekTimelineGrid, style: { height: timelineHeight }, children: [jsx("div", { className: styles$b.weekTimeColumn, children: hours.map(hour => (jsx("div", { className: styles$b.weekTimeSlot, style: { height: hourHeight }, children: jsxs("span", { className: styles$b.weekHourLabel, children: [hour.toString().padStart(2, '0'), ":00"] }) }, hour))) }), jsx("div", { className: styles$b.weekDayColumns, children: days.map(day => {
3647
3647
  const dayEvents = getDayEvents(day).filter(e => !e.allDay && e.time);
3648
3648
  const dayIsToday = day.toDateString() === now.toDateString();
3649
3649
  const dayLayout = layoutOverlappingEvents(dayEvents);
3650
- return (jsxs("div", { className: styles$a.weekDayColumn, children: [hours.map(hour => (jsx("div", { className: styles$a.weekHourRow, style: { height: hourHeight }, children: halfHourSlots ? (jsxs(Fragment, { children: [jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) }), jsx("div", { className: `${styles$a.halfHourSlot} ${styles$a.halfHourSlotBottom}`, onClick: () => handleWeekSlotClick(day, hour, 30) })] })) : (jsx("div", { className: styles$a.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) })) }, hour))), dayEvents.map(event => {
3650
+ return (jsxs("div", { className: styles$b.weekDayColumn, children: [hours.map(hour => (jsx("div", { className: styles$b.weekHourRow, style: { height: hourHeight }, children: halfHourSlots ? (jsxs(Fragment, { children: [jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) }), jsx("div", { className: `${styles$b.halfHourSlot} ${styles$b.halfHourSlotBottom}`, onClick: () => handleWeekSlotClick(day, hour, 30) })] })) : (jsx("div", { className: styles$b.halfHourSlot, onClick: () => handleWeekSlotClick(day, hour, 0) })) }, hour))), dayEvents.map(event => {
3651
3651
  const [h, m] = event.time.split(':').map(Number);
3652
3652
  const top = (h - startHour) * hourHeight + (m / 60) * hourHeight;
3653
3653
  const duration = eventDuration(event);
@@ -3655,34 +3655,34 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3655
3655
  const lane = dayLayout.get(event.id);
3656
3656
  const totalCols = lane?.totalCols ?? 1;
3657
3657
  const col = lane?.col ?? 0;
3658
- return (jsx("div", { className: styles$a.weekEventAnchor, style: {
3658
+ return (jsx("div", { className: styles$b.weekEventAnchor, style: {
3659
3659
  top,
3660
3660
  height,
3661
3661
  '--lane-col': col,
3662
3662
  '--lane-total': totalCols,
3663
3663
  }, onClick: (e) => e.stopPropagation(), children: 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));
3664
- }), dayIsToday && showNow && (jsx("div", { className: styles$a.currentTimeIndicator, style: { top: `${nowOffset}px`, left: 0 } }))] }, day.toISOString()));
3664
+ }), dayIsToday && showNow && (jsx("div", { className: styles$b.currentTimeIndicator, style: { top: `${nowOffset}px`, left: 0 } }))] }, day.toISOString()));
3665
3665
  }) })] }) })] }));
3666
3666
  })()) : ((() => {
3667
3667
  // Fixed month-view cell height derived from maxEventsPerDay.
3668
3668
  // Day number + padding ≈ 40px, each event row ≈ 24px.
3669
3669
  // Week and compact views keep their own CSS-driven sizing.
3670
3670
  const monthCellHeight = !compact ? 40 + maxEventsPerDay * 24 : undefined;
3671
- return (jsx("div", { className: `${styles$a.daysGrid} ${showWeekNumbers ? styles$a.withWeekNumbers : ''}`, children: calendarData.days.map((day, index) => {
3671
+ return (jsx("div", { className: `${styles$b.daysGrid} ${showWeekNumbers ? styles$b.withWeekNumbers : ''}`, children: calendarData.days.map((day, index) => {
3672
3672
  const dayEvents = getDayEvents(day);
3673
3673
  const dayIsToday = isToday(day);
3674
3674
  const isInCurrentMonth = isCurrentMonth(day);
3675
3675
  const isWeekStart = showWeekNumbers && (index % 7 === 0);
3676
3676
  const dayIsSelected = selectedDate && day.toDateString() === selectedDate.toDateString();
3677
- return (jsxs(Fragment$1, { children: [isWeekStart && (jsx("div", { className: styles$a.weekNumberCell, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, children: getWeekNumber(day) })), jsxs(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: {
3677
+ return (jsxs(Fragment$1, { children: [isWeekStart && (jsx("div", { className: styles$b.weekNumberCell, style: monthCellHeight !== undefined ? { height: monthCellHeight, minHeight: monthCellHeight } : undefined, children: getWeekNumber(day) })), jsxs(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: {
3678
3678
  duration: 0.3,
3679
3679
  delay: index * 0.02,
3680
3680
  ease: "easeOut"
3681
- }, onClick: () => handleDateClick(day), children: [jsx("div", { className: styles$a.dayNumber, children: day.getDate() }), dayEvents.length > 0 && compact && currentViewMode === 'month' ? (jsxs("div", { className: styles$a.dots, children: [dayEvents.slice(0, maxEventsPerDay).map((event) => (jsx("span", { className: styles$a.dot, style: {
3681
+ }, onClick: () => handleDateClick(day), children: [jsx("div", { className: styles$b.dayNumber, children: day.getDate() }), dayEvents.length > 0 && compact && currentViewMode === 'month' ? (jsxs("div", { className: styles$b.dots, children: [dayEvents.slice(0, maxEventsPerDay).map((event) => (jsx("span", { className: styles$b.dot, style: {
3682
3682
  backgroundColor: event.status === 'completed'
3683
3683
  ? '#10b981'
3684
3684
  : getEventColor(event),
3685
- } }, event.id))), dayEvents.length > maxEventsPerDay && (jsxs("span", { className: styles$a.dotMore, children: ["+", dayEvents.length - maxEventsPerDay] }))] })) : dayEvents.length > 0 ? (jsxs("div", { className: styles$a.events, children: [dayEvents.slice(0, maxEventsPerDay).map((event, eventIndex) => (jsxs(motion.div, { className: `${styles$a.event} ${event.status === 'completed' ? styles$a.completed : ''}`, style: {
3685
+ } }, event.id))), dayEvents.length > maxEventsPerDay && (jsxs("span", { className: styles$b.dotMore, children: ["+", dayEvents.length - maxEventsPerDay] }))] })) : dayEvents.length > 0 ? (jsxs("div", { className: styles$b.events, children: [dayEvents.slice(0, maxEventsPerDay).map((event, eventIndex) => (jsxs(motion.div, { className: `${styles$b.event} ${event.status === 'completed' ? styles$b.completed : ''}`, style: {
3686
3686
  backgroundColor: getEventColor(event),
3687
3687
  color: getEventTextColor(event),
3688
3688
  opacity: event.status === 'completed' ? 0.7 : 1
@@ -3700,7 +3700,7 @@ function Calendar({ events, onEventClick, onDateClick, onEventClickByView, onDat
3700
3700
  }, whileTap: {
3701
3701
  scale: 0.98,
3702
3702
  transition: { duration: 0.1 }
3703
- }, children: [iconRenderer && iconRenderer(event), jsxs("span", { className: styles$a.eventTitle, children: [event.time && (jsx("span", { className: styles$a.eventTime, children: event.time })), event.title] }), event.status === 'completed' && (jsx("svg", { className: styles$a.completedIcon, width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "20,6 9,17 4,12" }) }))] }, event.id))), dayEvents.length > maxEventsPerDay && (jsxs("div", { className: styles$a.moreEvents, children: ["+", dayEvents.length - maxEventsPerDay, " more"] }))] })) : emptyState ? (jsx("div", { className: styles$a.emptyState, children: emptyState })) : null] })] }, `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`));
3703
+ }, children: [iconRenderer && iconRenderer(event), jsxs("span", { className: styles$b.eventTitle, children: [event.time && (jsx("span", { className: styles$b.eventTime, children: event.time })), event.title] }), event.status === 'completed' && (jsx("svg", { className: styles$b.completedIcon, width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: jsx("polyline", { points: "20,6 9,17 4,12" }) }))] }, event.id))), dayEvents.length > maxEventsPerDay && (jsxs("div", { className: styles$b.moreEvents, children: ["+", dayEvents.length - maxEventsPerDay, " more"] }))] })) : emptyState ? (jsx("div", { className: styles$b.emptyState, children: emptyState })) : null] })] }, `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`));
3704
3704
  }) }));
3705
3705
  })())] }));
3706
3706
  }
@@ -3837,7 +3837,7 @@ const Navbar = ({ items, logo, onItemClick, variant = 'sidebar', isMobile = fals
3837
3837
  return (jsx(Fragment, { children: jsx(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 }) }));
3838
3838
  };
3839
3839
 
3840
- 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"};
3840
+ 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"};
3841
3841
 
3842
3842
  const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3843
3843
  const svgRef = useRef(null);
@@ -3895,27 +3895,27 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3895
3895
  g.selectAll('.grid-line-y')
3896
3896
  .data(yScale.ticks(5))
3897
3897
  .enter().append('line')
3898
- .attr('class', styles$8.gridLine)
3898
+ .attr('class', styles$9.gridLine)
3899
3899
  .attr('x1', 0)
3900
3900
  .attr('y1', d => yScale(d))
3901
3901
  .attr('x2', chartWidth)
3902
3902
  .attr('y2', d => yScale(d));
3903
3903
  g.append('path')
3904
3904
  .datum(processedData)
3905
- .attr('class', styles$8.line)
3905
+ .attr('class', styles$9.line)
3906
3906
  .attr('d', line);
3907
3907
  g.append('g')
3908
- .attr('class', styles$8.xAxis)
3908
+ .attr('class', styles$9.xAxis)
3909
3909
  .attr('transform', `translate(0,${chartHeight})`)
3910
3910
  .call(d3.axisBottom(xScale)
3911
3911
  .tickFormat(d => d3.timeFormat('%m/%d')(d)));
3912
3912
  g.append('g')
3913
- .attr('class', styles$8.yAxis)
3913
+ .attr('class', styles$9.yAxis)
3914
3914
  .call(d3.axisLeft(yScale));
3915
3915
  g.selectAll('.mood-circle')
3916
3916
  .data(processedData)
3917
3917
  .enter().append('circle')
3918
- .attr('class', styles$8.dataPoint)
3918
+ .attr('class', styles$9.dataPoint)
3919
3919
  .attr('cx', d => xScale(d.date))
3920
3920
  .attr('cy', d => yScale(d.rating))
3921
3921
  .attr('r', 5)
@@ -3969,7 +3969,7 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3969
3969
  setSelectedMood(null);
3970
3970
  };
3971
3971
  }, []);
3972
- return (jsxs("div", { className: styles$8.container, ref: containerRef, children: [jsx("svg", { ref: svgRef, width: width, height: height, className: styles$8.chart }), selectedMood && (jsxs("div", { ref: tooltipRef, className: styles$8.tooltip, style: {
3972
+ return (jsxs("div", { className: styles$9.container, ref: containerRef, children: [jsx("svg", { ref: svgRef, width: width, height: height, className: styles$9.chart }), selectedMood && (jsxs("div", { ref: tooltipRef, className: styles$9.tooltip, style: {
3973
3973
  position: 'absolute',
3974
3974
  pointerEvents: 'auto',
3975
3975
  left: tooltipPosition.x,
@@ -3978,13 +3978,13 @@ const MoodChart = ({ moodData, width = 800, height = 400 }) => {
3978
3978
  }, onMouseEnter: () => setIsHoveringTooltip(true), onMouseLeave: () => {
3979
3979
  setIsHoveringTooltip(false);
3980
3980
  setSelectedMood(null);
3981
- }, children: [jsxs("div", { className: styles$8.tooltipHeader, children: [jsx("div", { className: styles$8.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxs("div", { className: styles$8.tooltipRating, children: [jsx("span", { className: styles$8.ratingValue, children: selectedMood.rating }), jsx("span", { className: styles$8.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsx("div", { className: styles$8.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsx("span", { className: styles$8.tag, children: tag }, index))) })), selectedMood.comment && (jsx("div", { className: styles$8.tooltipComment, children: selectedMood.comment }))] }))] }));
3981
+ }, children: [jsxs("div", { className: styles$9.tooltipHeader, children: [jsx("div", { className: styles$9.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxs("div", { className: styles$9.tooltipRating, children: [jsx("span", { className: styles$9.ratingValue, children: selectedMood.rating }), jsx("span", { className: styles$9.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsx("div", { className: styles$9.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsx("span", { className: styles$9.tag, children: tag }, index))) })), selectedMood.comment && (jsx("div", { className: styles$9.tooltipComment, children: selectedMood.comment }))] }))] }));
3982
3982
  };
3983
3983
 
3984
- 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"};
3984
+ 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"};
3985
3985
 
3986
3986
  // Default colors as fallback
3987
- const DEFAULT_HABIT_COLORS = {
3987
+ const DEFAULT_HABIT_COLORS$1 = {
3988
3988
  'Exercise': '#6BCB77',
3989
3989
  'Meditation': '#4D96FF',
3990
3990
  'Reading': '#FFB319',
@@ -4037,7 +4037,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4037
4037
  }, [periodType]);
4038
4038
  const getColor = useCallback((habit) => {
4039
4039
  // First check custom colors, then defaults, then generate deterministic color
4040
- return customHabitColors[habit] || DEFAULT_HABIT_COLORS[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
4040
+ return customHabitColors[habit] || DEFAULT_HABIT_COLORS$1[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
4041
4041
  }, [customHabitColors]);
4042
4042
  // Aggregate data based on view type
4043
4043
  const aggregateData = useMemo(() => {
@@ -4134,7 +4134,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4134
4134
  g.selectAll('.grid-line-y')
4135
4135
  .data(yScale.ticks(5))
4136
4136
  .enter().append('line')
4137
- .attr('class', styles$7.gridLine)
4137
+ .attr('class', styles$8.gridLine)
4138
4138
  .attr('x1', 0)
4139
4139
  .attr('y1', d => yScale(d))
4140
4140
  .attr('x2', chartWidth)
@@ -4147,7 +4147,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4147
4147
  const habitData = dates.map((date, i) => [date, aggregateData[habit][i]]).filter(d => typeof d[1] === 'number');
4148
4148
  g.append('path')
4149
4149
  .datum(habitData)
4150
- .attr('class', styles$7.line)
4150
+ .attr('class', styles$8.line)
4151
4151
  .attr('d', line)
4152
4152
  .attr('stroke', getColor(habit))
4153
4153
  .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
@@ -4194,7 +4194,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4194
4194
  g.selectAll(`.circle-${habit}`)
4195
4195
  .data(habitData)
4196
4196
  .enter().append('circle')
4197
- .attr('class', (_d, i) => `${styles$7.dataPoint} circle-${habit}-${i}`)
4197
+ .attr('class', (_d, i) => `${styles$8.dataPoint} circle-${habit}-${i}`)
4198
4198
  .attr('cx', d => xScale(d[0]))
4199
4199
  .attr('cy', d => yScale(d[1]))
4200
4200
  .attr('r', 4)
@@ -4256,7 +4256,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4256
4256
  xAxisGenerator.ticks(tickCount);
4257
4257
  }
4258
4258
  const xAxis = g.append('g')
4259
- .attr('class', styles$7.xAxis)
4259
+ .attr('class', styles$8.xAxis)
4260
4260
  .attr('transform', `translate(0,${chartHeight})`)
4261
4261
  .call(xAxisGenerator);
4262
4262
  // Rotate labels for better readability if needed
@@ -4268,7 +4268,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4268
4268
  .attr('transform', 'rotate(-45)');
4269
4269
  }
4270
4270
  g.append('g')
4271
- .attr('class', styles$7.yAxis)
4271
+ .attr('class', styles$8.yAxis)
4272
4272
  .call(d3.axisLeft(yScale));
4273
4273
  }, [aggregateData, activeHabits, chartWidth, chartHeight, margin, hoveredHabit, onDataPointClick, getColor, height, viewType, width]);
4274
4274
  // Format date for tooltip display
@@ -4300,10 +4300,312 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
4300
4300
  quarterly: { icon: '📊', label: 'Quarterly' }
4301
4301
  };
4302
4302
  const shouldShowAggregationToggle = viewType !== 'daily';
4303
- return (jsxs("div", { className: styles$7.container, children: [!hideControls && (jsxs("div", { className: styles$7.controls, children: [jsx("div", { className: styles$7.viewToggle, children: availableViewTypes.map(type => (jsxs("button", { className: `${styles$7.viewButton} ${viewType === type ? styles$7.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsx("span", { className: styles$7.viewIcon, children: viewTypeConfig[type].icon }), jsx("span", { className: styles$7.viewLabel, children: viewTypeConfig[type].label })] }, type))) }), shouldShowAggregationToggle && (jsxs("div", { className: styles$7.aggregationToggle, children: [jsxs("button", { className: `${styles$7.aggregationButton} ${aggregationMode === 'average' ? styles$7.active : ''}`, onClick: () => setAggregationMode('average'), title: "Show average values for each period", children: [jsx("span", { className: styles$7.aggregationIcon, children: "\uD83D\uDCCA" }), jsx("span", { className: styles$7.aggregationLabel, children: "Average" })] }), jsxs("button", { className: `${styles$7.aggregationButton} ${aggregationMode === 'sum' ? styles$7.active : ''}`, onClick: () => setAggregationMode('sum'), title: "Show total values for each period", children: [jsx("span", { className: styles$7.aggregationIcon, children: "\u2795" }), jsx("span", { className: styles$7.aggregationLabel, children: "Sum" })] })] }))] })), jsx("div", { className: `${styles$7.legend}${compactLegend ? ` ${styles$7.compactLegend}` : ''}`, children: habits.map(habit => (jsxs("button", { className: `${styles$7.legendItem} ${!activeHabits.includes(habit) ? styles$7.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsx("span", { className: styles$7.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsx("span", { className: styles$7.legendColor, style: { backgroundColor: getColor(habit) } }), jsx("span", { className: styles$7.legendLabel, children: habit })] }, habit))) }), jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$7.chart }), tooltipData && (jsxs("div", { ref: tooltipRef, className: `${styles$7.tooltip} ${tooltipData ? styles$7.visible : ''}`, style: {
4303
+ return (jsxs("div", { className: styles$8.container, children: [!hideControls && (jsxs("div", { className: styles$8.controls, children: [jsx("div", { className: styles$8.viewToggle, children: availableViewTypes.map(type => (jsxs("button", { className: `${styles$8.viewButton} ${viewType === type ? styles$8.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsx("span", { className: styles$8.viewIcon, children: viewTypeConfig[type].icon }), jsx("span", { className: styles$8.viewLabel, children: viewTypeConfig[type].label })] }, type))) }), shouldShowAggregationToggle && (jsxs("div", { className: styles$8.aggregationToggle, children: [jsxs("button", { className: `${styles$8.aggregationButton} ${aggregationMode === 'average' ? styles$8.active : ''}`, onClick: () => setAggregationMode('average'), title: "Show average values for each period", children: [jsx("span", { className: styles$8.aggregationIcon, children: "\uD83D\uDCCA" }), jsx("span", { className: styles$8.aggregationLabel, children: "Average" })] }), jsxs("button", { className: `${styles$8.aggregationButton} ${aggregationMode === 'sum' ? styles$8.active : ''}`, onClick: () => setAggregationMode('sum'), title: "Show total values for each period", children: [jsx("span", { className: styles$8.aggregationIcon, children: "\u2795" }), jsx("span", { className: styles$8.aggregationLabel, children: "Sum" })] })] }))] })), jsx("div", { className: `${styles$8.legend}${compactLegend ? ` ${styles$8.compactLegend}` : ''}`, children: habits.map(habit => (jsxs("button", { className: `${styles$8.legendItem} ${!activeHabits.includes(habit) ? styles$8.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsx("span", { className: styles$8.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsx("span", { className: styles$8.legendColor, style: { backgroundColor: getColor(habit) } }), jsx("span", { className: styles$8.legendLabel, children: habit })] }, habit))) }), jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$8.chart }), tooltipData && (jsxs("div", { ref: tooltipRef, className: `${styles$8.tooltip} ${tooltipData ? styles$8.visible : ''}`, style: {
4304
4304
  left: `${tooltipData.x}px`,
4305
4305
  top: `${tooltipData.y - 80}px`
4306
- }, children: [jsxs("div", { className: styles$7.tooltipHeader, children: [jsx("span", { className: styles$7.tooltipEmoji, children: customHabitEmojis[tooltipData.habit] || '📊' }), jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsx("span", { children: tooltipData.habit })] }), jsxs("div", { className: styles$7.tooltipInfo, children: [jsx("div", { className: styles$7.tooltipDate, children: formatTooltipDate(tooltipData.date, viewType) }), jsxs("div", { className: styles$7.tooltipValue, children: [jsx("strong", { children: Math.round(tooltipData.value * 10) / 10 }), jsx("span", { style: { fontSize: '12px', fontWeight: 'normal', opacity: 0.6 }, children: "units" })] })] })] }))] }));
4306
+ }, children: [jsxs("div", { className: styles$8.tooltipHeader, children: [jsx("span", { className: styles$8.tooltipEmoji, children: customHabitEmojis[tooltipData.habit] || '📊' }), jsx("span", { className: styles$8.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsx("span", { children: tooltipData.habit })] }), jsxs("div", { className: styles$8.tooltipInfo, children: [jsx("div", { className: styles$8.tooltipDate, children: formatTooltipDate(tooltipData.date, viewType) }), jsxs("div", { className: styles$8.tooltipValue, children: [jsx("strong", { children: Math.round(tooltipData.value * 10) / 10 }), jsx("span", { style: { fontSize: '12px', fontWeight: 'normal', opacity: 0.6 }, children: "units" })] })] })] }))] }));
4307
+ };
4308
+
4309
+ 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"};
4310
+
4311
+ const DEFAULT_HABIT_COLORS = {
4312
+ Exercise: '#6BCB77',
4313
+ Meditation: '#4D96FF',
4314
+ Reading: '#FFB319',
4315
+ Water: '#00D9FF',
4316
+ Steps: '#FF6B6B',
4317
+ Sleep: '#9B59B6',
4318
+ Calories: '#FF9F1C',
4319
+ Study: '#C774E8',
4320
+ };
4321
+ const getDateKey = (d) => {
4322
+ const y = d.getFullYear();
4323
+ const m = String(d.getMonth() + 1).padStart(2, '0');
4324
+ const day = String(d.getDate()).padStart(2, '0');
4325
+ return `${y}-${m}-${day}`;
4326
+ };
4327
+ const formatHour = (hour) => {
4328
+ const h = ((hour % 24) + 24) % 24;
4329
+ if (h === 0)
4330
+ return '12a';
4331
+ if (h === 12)
4332
+ return '12p';
4333
+ return h < 12 ? `${h}a` : `${h - 12}p`;
4334
+ };
4335
+ const formatTime$1 = (hour, minute) => {
4336
+ const h24 = ((hour % 24) + 24) % 24;
4337
+ const h12 = h24 % 12 === 0 ? 12 : h24 % 12;
4338
+ const ampm = h24 < 12 ? 'a' : 'p';
4339
+ return `${h12}:${String(minute).padStart(2, '0')}${ampm}`;
4340
+ };
4341
+ const enumerateDates = (start, end) => {
4342
+ const dates = [];
4343
+ const [sy, sm, sd] = start.split('-').map(Number);
4344
+ const [ey, em, ed] = end.split('-').map(Number);
4345
+ const current = new Date(sy, sm - 1, sd);
4346
+ const last = new Date(ey, em - 1, ed);
4347
+ while (current <= last) {
4348
+ dates.push(getDateKey(current));
4349
+ current.setDate(current.getDate() + 1);
4350
+ }
4351
+ return dates;
4352
+ };
4353
+ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, endDate, habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {}, defaultView = 'scatter', hideControls = false, compactLegend = false, }) => {
4354
+ const svgRef = useRef(null);
4355
+ const [view, setView] = useState(defaultView);
4356
+ const [activeHabits, setActiveHabits] = useState([]);
4357
+ const [hoveredHabit, setHoveredHabit] = useState(null);
4358
+ const [tooltipData, setTooltipData] = useState(null);
4359
+ const margin = useMemo(() => ({ top: 20, right: 20, bottom: 50, left: 70 }), []);
4360
+ const chartWidth = width - margin.left - margin.right;
4361
+ const chartHeight = height - margin.top - margin.bottom;
4362
+ const getColor = useCallback((habit) => {
4363
+ return (customHabitColors[habit] ||
4364
+ DEFAULT_HABIT_COLORS[habit] ||
4365
+ `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`);
4366
+ }, [customHabitColors]);
4367
+ const parsed = useMemo(() => {
4368
+ return events
4369
+ .map(e => {
4370
+ const d = new Date(e.loggedAt);
4371
+ if (Number.isNaN(d.getTime()))
4372
+ return null;
4373
+ const hour = d.getHours();
4374
+ const minute = d.getMinutes();
4375
+ const second = d.getSeconds();
4376
+ return {
4377
+ habitKey: e.habitKey,
4378
+ date: getDateKey(d),
4379
+ hour,
4380
+ minute,
4381
+ hourFraction: hour + minute / 60 + second / 3600,
4382
+ };
4383
+ })
4384
+ .filter((e) => e !== null);
4385
+ }, [events]);
4386
+ const habits = useMemo(() => {
4387
+ const set = new Set();
4388
+ parsed.forEach(e => set.add(e.habitKey));
4389
+ return Array.from(set).sort();
4390
+ }, [parsed]);
4391
+ useEffect(() => {
4392
+ setActiveHabits(habits);
4393
+ }, [habits]);
4394
+ useEffect(() => {
4395
+ const handleScroll = () => setTooltipData(null);
4396
+ window.addEventListener('scroll', handleScroll, true);
4397
+ return () => window.removeEventListener('scroll', handleScroll, true);
4398
+ }, []);
4399
+ const dateRange = useMemo(() => {
4400
+ if (startDate && endDate)
4401
+ return enumerateDates(startDate, endDate);
4402
+ if (parsed.length === 0)
4403
+ return [];
4404
+ const sorted = [...parsed].map(p => p.date).sort();
4405
+ return enumerateDates(sorted[0], sorted[sorted.length - 1]);
4406
+ }, [parsed, startDate, endDate]);
4407
+ const filtered = useMemo(() => {
4408
+ const active = new Set(activeHabits);
4409
+ return parsed.filter(e => active.has(e.habitKey));
4410
+ }, [parsed, activeHabits]);
4411
+ const hourlyTotals = useMemo(() => {
4412
+ const totals = Array.from({ length: 24 }, (_, hour) => ({
4413
+ hour,
4414
+ total: 0,
4415
+ byHabit: new Map(),
4416
+ }));
4417
+ filtered.forEach(e => {
4418
+ const bucket = totals[e.hour];
4419
+ bucket.total += 1;
4420
+ bucket.byHabit.set(e.habitKey, (bucket.byHabit.get(e.habitKey) || 0) + 1);
4421
+ });
4422
+ return totals;
4423
+ }, [filtered]);
4424
+ const maxHourTotal = useMemo(() => hourlyTotals.reduce((m, b) => Math.max(m, b.total), 0), [hourlyTotals]);
4425
+ const toggleHabit = (habit) => {
4426
+ setActiveHabits(prev => prev.includes(habit) ? prev.filter(h => h !== habit) : [...prev, habit]);
4427
+ };
4428
+ useEffect(() => {
4429
+ if (!svgRef.current)
4430
+ return;
4431
+ const svg = d3.select(svgRef.current);
4432
+ svg.selectAll('*').remove();
4433
+ svg.append('rect')
4434
+ .attr('width', width)
4435
+ .attr('height', height)
4436
+ .attr('fill', 'transparent')
4437
+ .style('pointer-events', 'all')
4438
+ .on('mouseleave', () => setTooltipData(null));
4439
+ const g = svg
4440
+ .append('g')
4441
+ .attr('transform', `translate(${margin.left},${margin.top})`);
4442
+ if (view === 'scatter') {
4443
+ if (dateRange.length === 0)
4444
+ return;
4445
+ const xScale = d3.scaleLinear()
4446
+ .domain([0, 24])
4447
+ .range([0, chartWidth]);
4448
+ const yScale = d3.scaleBand()
4449
+ .domain(dateRange)
4450
+ .range([0, chartHeight])
4451
+ .padding(0.1);
4452
+ // Vertical grid lines per 3 hours
4453
+ g.selectAll('line.xgrid')
4454
+ .data([0, 3, 6, 9, 12, 15, 18, 21, 24])
4455
+ .enter()
4456
+ .append('line')
4457
+ .attr('class', styles$7.gridLine)
4458
+ .attr('x1', d => xScale(d))
4459
+ .attr('x2', d => xScale(d))
4460
+ .attr('y1', 0)
4461
+ .attr('y2', chartHeight);
4462
+ // Dots
4463
+ const rowHeight = yScale.bandwidth();
4464
+ const radius = Math.min(5, Math.max(2, rowHeight / 2));
4465
+ g.selectAll('circle.dot')
4466
+ .data(filtered)
4467
+ .enter()
4468
+ .append('circle')
4469
+ .attr('class', styles$7.dot)
4470
+ .attr('cx', d => xScale(d.hourFraction))
4471
+ .attr('cy', d => (yScale(d.date) ?? 0) + rowHeight / 2)
4472
+ .attr('r', radius)
4473
+ .attr('fill', d => getColor(d.habitKey))
4474
+ .attr('opacity', d => hoveredHabit && hoveredHabit !== d.habitKey ? 0.15 : 0.8)
4475
+ .style('cursor', 'pointer')
4476
+ .on('mouseenter', function (_event, d) {
4477
+ const rect = svgRef.current?.getBoundingClientRect();
4478
+ if (!rect)
4479
+ return;
4480
+ setTooltipData({
4481
+ x: xScale(d.hourFraction) + margin.left + rect.left,
4482
+ y: (yScale(d.date) ?? 0) + margin.top + rect.top,
4483
+ habit: d.habitKey,
4484
+ hour: d.hour,
4485
+ minute: d.minute,
4486
+ date: d.date,
4487
+ count: 1,
4488
+ });
4489
+ })
4490
+ .on('mouseleave', () => setTooltipData(null));
4491
+ // X axis (hours)
4492
+ const xAxis = d3.axisBottom(xScale)
4493
+ .tickValues([0, 3, 6, 9, 12, 15, 18, 21])
4494
+ .tickFormat(d => formatHour(d));
4495
+ g.append('g')
4496
+ .attr('class', styles$7.xAxis)
4497
+ .attr('transform', `translate(0,${chartHeight})`)
4498
+ .call(xAxis);
4499
+ // Y axis (dates) — evenly spaced
4500
+ const yTickCount = Math.min(8, dateRange.length);
4501
+ const yStep = Math.max(1, Math.floor(dateRange.length / yTickCount));
4502
+ const yTickValues = dateRange.filter((_, i) => i % yStep === 0);
4503
+ const yAxis = d3.axisLeft(yScale)
4504
+ .tickValues(yTickValues)
4505
+ .tickFormat(d => {
4506
+ const [, m, day] = d.split('-');
4507
+ return `${m}/${day}`;
4508
+ });
4509
+ g.append('g').attr('class', styles$7.yAxis).call(yAxis);
4510
+ }
4511
+ else {
4512
+ // Totals view: stacked bar by hour
4513
+ const xScale = d3.scaleBand()
4514
+ .domain(d3.range(24))
4515
+ .range([0, chartWidth])
4516
+ .padding(0.15);
4517
+ const yScale = d3.scaleLinear()
4518
+ .domain([0, Math.max(1, maxHourTotal)])
4519
+ .nice()
4520
+ .range([chartHeight, 0]);
4521
+ g.selectAll('line.grid')
4522
+ .data(yScale.ticks(5))
4523
+ .enter()
4524
+ .append('line')
4525
+ .attr('class', styles$7.gridLine)
4526
+ .attr('x1', 0)
4527
+ .attr('x2', chartWidth)
4528
+ .attr('y1', d => yScale(d))
4529
+ .attr('y2', d => yScale(d));
4530
+ hourlyTotals.forEach(bucket => {
4531
+ let cumulative = 0;
4532
+ const entries = Array.from(bucket.byHabit.entries()).sort(([a], [b]) => a.localeCompare(b));
4533
+ entries.forEach(([habit, count]) => {
4534
+ const y = yScale(cumulative + count);
4535
+ const barHeight = Math.max(0, yScale(cumulative) - yScale(cumulative + count));
4536
+ g.append('rect')
4537
+ .attr('class', styles$7.bar)
4538
+ .attr('x', xScale(bucket.hour) ?? 0)
4539
+ .attr('y', y)
4540
+ .attr('width', xScale.bandwidth())
4541
+ .attr('height', barHeight)
4542
+ .attr('fill', getColor(habit))
4543
+ .attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
4544
+ cumulative += count;
4545
+ });
4546
+ if (bucket.total > 0) {
4547
+ g.append('rect')
4548
+ .attr('x', xScale(bucket.hour) ?? 0)
4549
+ .attr('y', 0)
4550
+ .attr('width', xScale.bandwidth())
4551
+ .attr('height', chartHeight)
4552
+ .attr('fill', 'transparent')
4553
+ .style('cursor', 'pointer')
4554
+ .on('mouseenter', function () {
4555
+ const rect = svgRef.current?.getBoundingClientRect();
4556
+ if (!rect)
4557
+ return;
4558
+ setTooltipData({
4559
+ x: (xScale(bucket.hour) ?? 0) + xScale.bandwidth() / 2 + margin.left + rect.left,
4560
+ y: yScale(bucket.total) + margin.top + rect.top,
4561
+ hour: bucket.hour,
4562
+ count: bucket.total,
4563
+ breakdown: Array.from(bucket.byHabit.entries())
4564
+ .map(([habit, count]) => ({ habit, count }))
4565
+ .sort((a, b) => b.count - a.count),
4566
+ });
4567
+ })
4568
+ .on('mouseleave', () => setTooltipData(null));
4569
+ }
4570
+ });
4571
+ const xAxis = d3.axisBottom(xScale)
4572
+ .tickValues([0, 3, 6, 9, 12, 15, 18, 21])
4573
+ .tickFormat(d => formatHour(d));
4574
+ g.append('g')
4575
+ .attr('class', styles$7.xAxis)
4576
+ .attr('transform', `translate(0,${chartHeight})`)
4577
+ .call(xAxis);
4578
+ g.append('g').attr('class', styles$7.yAxis).call(d3.axisLeft(yScale).ticks(5));
4579
+ }
4580
+ }, [
4581
+ view,
4582
+ filtered,
4583
+ hourlyTotals,
4584
+ dateRange,
4585
+ maxHourTotal,
4586
+ chartWidth,
4587
+ chartHeight,
4588
+ margin,
4589
+ width,
4590
+ height,
4591
+ hoveredHabit,
4592
+ getColor,
4593
+ ]);
4594
+ const viewConfig = {
4595
+ scatter: { icon: '•••', label: 'Scatter' },
4596
+ totals: { icon: '📊', label: 'Totals' },
4597
+ };
4598
+ const formatTooltipDate = (date) => {
4599
+ const [y, m, d] = date.split('-').map(Number);
4600
+ return new Date(y, m - 1, d).toLocaleDateString('en-US', {
4601
+ weekday: 'short',
4602
+ month: 'short',
4603
+ day: 'numeric',
4604
+ });
4605
+ };
4606
+ return (jsxs("div", { className: styles$7.container, children: [!hideControls && (jsx("div", { className: styles$7.controls, children: jsx("div", { className: styles$7.viewToggle, children: ['scatter', 'totals'].map(type => (jsxs("button", { className: `${styles$7.viewButton} ${view === type ? styles$7.active : ''}`, onClick: () => setView(type), title: viewConfig[type].label, children: [jsx("span", { className: styles$7.viewIcon, children: viewConfig[type].icon }), jsx("span", { className: styles$7.viewLabel, children: viewConfig[type].label })] }, type))) }) })), habits.length > 0 && (jsx("div", { className: `${styles$7.legend}${compactLegend ? ` ${styles$7.compactLegend}` : ''}`, children: habits.map(habit => (jsxs("button", { className: `${styles$7.legendItem} ${!activeHabits.includes(habit) ? styles$7.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsx("span", { className: styles$7.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsx("span", { className: styles$7.legendColor, style: { backgroundColor: getColor(habit) } }), jsx("span", { className: styles$7.legendLabel, children: habit })] }, habit))) })), jsx("svg", { ref: svgRef, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", className: styles$7.chart }), tooltipData && (jsx("div", { className: `${styles$7.tooltip} ${styles$7.visible}`, style: { left: `${tooltipData.x}px`, top: `${tooltipData.y - 70}px` }, children: tooltipData.habit ? (jsxs(Fragment, { children: [jsxs("div", { className: styles$7.tooltipHeader, children: [jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(tooltipData.habit) } }), jsxs("span", { children: [customHabitEmojis[tooltipData.habit] || '', " ", tooltipData.habit] })] }), jsx("div", { className: styles$7.tooltipInfo, children: jsxs("div", { className: styles$7.tooltipDate, children: [tooltipData.date ? formatTooltipDate(tooltipData.date) : '', tooltipData.minute !== undefined
4607
+ ? ` · ${formatTime$1(tooltipData.hour, tooltipData.minute)}`
4608
+ : ''] }) })] })) : (jsxs(Fragment, { children: [jsx("div", { className: styles$7.tooltipHeader, children: jsx("span", { children: formatHour(tooltipData.hour) }) }), jsxs("div", { className: styles$7.tooltipInfo, children: [jsxs("div", { className: styles$7.tooltipValue, children: [jsx("strong", { children: tooltipData.count }), jsxs("span", { className: styles$7.tooltipUnits, children: ["event", tooltipData.count === 1 ? '' : 's'] })] }), tooltipData.breakdown && tooltipData.breakdown.length > 1 && (jsx("div", { className: styles$7.tooltipBreakdown, children: tooltipData.breakdown.map(({ habit, count }) => (jsxs("div", { className: styles$7.tooltipBreakdownRow, children: [jsx("span", { className: styles$7.tooltipDot, style: { backgroundColor: getColor(habit) } }), jsxs("span", { children: [customHabitEmojis[habit] || '', " ", habit] }), jsx("span", { className: styles$7.tooltipCount, children: count })] }, habit))) }))] })] })) }))] }));
4307
4609
  };
4308
4610
 
4309
4611
  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"};
@@ -5932,5 +6234,5 @@ const ConfirmationModal = ({ isOpen, onClose, onConfirm, title, message, confirm
5932
6234
  return (jsx(AnimatePresence, { children: isOpen && (jsxs(Fragment, { children: [jsx(motion.div, { className: styles.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: !isLoading ? onClose : undefined }), jsx("div", { className: styles.positioner, children: jsxs(motion.div, { className: styles.modal, initial: { opacity: 0, scale: 0.9, y: 20 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.9, y: 20 }, transition: { type: 'spring', stiffness: 300, damping: 30 }, children: [jsxs("div", { className: `${styles.header} ${styles[variant]}`, children: [jsx("h2", { className: styles.title, children: title }), !isLoading && (jsx("button", { className: styles.closeButton, onClick: onClose, type: "button", "aria-label": "Close", children: "\u2715" }))] }), jsx("div", { className: styles.content, children: jsx("p", { className: styles.message, children: message }) }), jsxs("div", { className: styles.footer, children: [jsx(Button, { type: "button", variant: "ghost", onClick: onClose, disabled: isLoading, children: cancelText }), jsx(Button, { type: "button", variant: variant === 'danger' ? 'danger' : 'primary', onClick: handleConfirm, disabled: isLoading, loading: isLoading, children: confirmText })] })] }) })] })) }));
5933
6235
  };
5934
6236
 
5935
- export { ArrayInput, BooleansHeatmap, Breadcrumb, Button, Calendar, Card, Checkbox, ConfirmationModal, DateInput, DecryptedText, EditFAB, EmptyState, ImageSlideshow, LiquidButton, LoadingSpinner, Modal, MoodChart, Navbar, NumberStepper, PieChart, QuantifiableHabitsChart, SearchBar, SearchableDropdown, SelectInput, SleepChart, Slider, StreamConsole, SunburstChart, Table, Tabs, TextArea, TextInput, ThemeProvider, ThemeSwitcher, TimeInput, ToastContainer, Toggle, ToggleButton, soundManager, useComponentSound, useSound, useTheme, useThemeSafe };
6237
+ export { ArrayInput, BooleansHeatmap, Breadcrumb, Button, Calendar, Card, Checkbox, ConfirmationModal, DateInput, DecryptedText, EditFAB, EmptyState, HabitTimeOfDayChart, ImageSlideshow, LiquidButton, LoadingSpinner, Modal, MoodChart, Navbar, NumberStepper, PieChart, QuantifiableHabitsChart, SearchBar, SearchableDropdown, SelectInput, SleepChart, Slider, StreamConsole, SunburstChart, Table, Tabs, TextArea, TextInput, ThemeProvider, ThemeSwitcher, TimeInput, ToastContainer, Toggle, ToggleButton, soundManager, useComponentSound, useSound, useTheme, useThemeSafe };
5936
6238
  //# sourceMappingURL=index.esm.js.map