@stfrigerio/sito-template 0.1.80 → 0.1.82

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 (184) hide show
  1. package/dist/components/atoms/Modal/Modal.d.ts +4 -38
  2. package/dist/components/atoms/Modal/Modal.d.ts.map +1 -1
  3. package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.d.ts.map +1 -1
  4. package/dist/index.esm.js +106 -51
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.js +105 -50
  7. package/dist/index.js.map +1 -1
  8. package/dist/styles.css +1 -1
  9. package/dist/styles.css.map +1 -1
  10. package/package.json +1 -1
  11. package/storybook-static/assets/{ASCIIText.stories-CdJFsDcm.js → ASCIIText.stories-Chq2wqt4.js} +1 -1
  12. package/storybook-static/assets/{AllAtoms.stories-vADuLoia.js → AllAtoms.stories-DLznfaZg.js} +1 -1
  13. package/storybook-static/assets/{AnimatedContent.stories-ewE7Jlyl.js → AnimatedContent.stories-Ch4mKkA0.js} +1 -1
  14. package/storybook-static/assets/{AnimatedList.stories-CmT-fxZO.js → AnimatedList.stories-C6Vz0FCT.js} +1 -1
  15. package/storybook-static/assets/{Antigravity.stories-Bx-RRn4g.js → Antigravity.stories-BDqw3T6I.js} +1 -1
  16. package/storybook-static/assets/{ArrayInput.stories-H4cLlULb.js → ArrayInput.stories-BbjRW9g9.js} +1 -1
  17. package/storybook-static/assets/{Aurora.stories-CiKEkok2.js → Aurora.stories-DCWdNHLP.js} +1 -1
  18. package/storybook-static/assets/{Beams.stories-CGfOm4ei.js → Beams.stories-uVFJtZZC.js} +1 -1
  19. package/storybook-static/assets/{BlobCursor.stories-DiyecFOA.js → BlobCursor.stories-u-IiCtXC.js} +1 -1
  20. package/storybook-static/assets/{BlurText.stories-C8Bnk1EX.js → BlurText.stories-Dmjy33IC.js} +1 -1
  21. package/storybook-static/assets/{BooleansHeatmap.stories-DI-Borh4.js → BooleansHeatmap.stories-DD7qJ3qg.js} +1 -1
  22. package/storybook-static/assets/{BorderGlow.stories-DKuCmhDT.js → BorderGlow.stories-BxQiDlqs.js} +1 -1
  23. package/storybook-static/assets/{BubbleMenu.stories-Nuwlv60z.js → BubbleMenu.stories-G-Z2RWyT.js} +1 -1
  24. package/storybook-static/assets/{Button-BH8v2e05.js → Button-BEROGzCk.js} +1 -1
  25. package/storybook-static/assets/{Button.stories-CL91avj4.js → Button.stories-D33FxSNS.js} +1 -1
  26. package/storybook-static/assets/{Calendar.stories-DL-qPwAm.js → Calendar.stories-CG7X8qkI.js} +1 -1
  27. package/storybook-static/assets/{Card-CYbXBupP.js → Card-fcdM6HLu.js} +1 -1
  28. package/storybook-static/assets/{Card.stories-CLdKZH7w.js → Card.stories-DfbXQjWb.js} +1 -1
  29. package/storybook-static/assets/{CardNav.stories-Bkq2eiuC.js → CardNav.stories-6RzSwzWw.js} +1 -1
  30. package/storybook-static/assets/{Carousel.stories-CgYPp8N9.js → Carousel.stories-CspEI8EG.js} +1 -1
  31. package/storybook-static/assets/{Checkbox-C2Ftcw-B.js → Checkbox-By_9yb5V.js} +1 -1
  32. package/storybook-static/assets/{Checkbox.stories-D0G0xUmz.js → Checkbox.stories-CnNyL3UU.js} +1 -1
  33. package/storybook-static/assets/{ChromaGrid.stories-CgLxe4qI.js → ChromaGrid.stories-Cn7o01d6.js} +1 -1
  34. package/storybook-static/assets/{CircularGallery.stories-DCbGVf2c.js → CircularGallery.stories-cwObn-26.js} +1 -1
  35. package/storybook-static/assets/{CircularText.stories-Bmq7ZqfC.js → CircularText.stories-DhQc2-_y.js} +1 -1
  36. package/storybook-static/assets/{ClickSpark.stories-Dc7lLvwJ.js → ClickSpark.stories-CLdNWnu7.js} +1 -1
  37. package/storybook-static/assets/{ColorBends.stories-BWy7DYaP.js → ColorBends.stories-lblPWvB6.js} +1 -1
  38. package/storybook-static/assets/{CountUp.stories-CrEdXn4r.js → CountUp.stories-BBSkd7rN.js} +1 -1
  39. package/storybook-static/assets/{Counter.stories-xbB_rpHK.js → Counter.stories-DGIDnd_M.js} +1 -1
  40. package/storybook-static/assets/{Crosshair.stories-jb2KMdHU.js → Crosshair.stories-BxZkxORC.js} +1 -1
  41. package/storybook-static/assets/{Cubes.stories-VWgsinzf.js → Cubes.stories-Cq0z_fjM.js} +1 -1
  42. package/storybook-static/assets/{CurvedLoop.stories-D4vzwgej.js → CurvedLoop.stories-pv3XzsFk.js} +1 -1
  43. package/storybook-static/assets/{DarkVeil.stories-nCCiwzbM.js → DarkVeil.stories-BolNyRBQ.js} +1 -1
  44. package/storybook-static/assets/{DateInput-CC15k4Vf.js → DateInput-1tmPJAdU.js} +1 -1
  45. package/storybook-static/assets/{DateInput.stories-B43zuCJK.js → DateInput.stories-XGj6lck2.js} +1 -1
  46. package/storybook-static/assets/{DecayCard.stories-pvJh7W64.js → DecayCard.stories-KfZrqHpt.js} +1 -1
  47. package/storybook-static/assets/{DecryptedText.stories-B1QFF8s1.js → DecryptedText.stories-kNQDPyZk.js} +1 -1
  48. package/storybook-static/assets/{Dither.stories-pq4xjpKd.js → Dither.stories-Cs8nVlE2.js} +1 -1
  49. package/storybook-static/assets/{Dock.stories-ihFTr5C5.js → Dock.stories-BFNMe7xq.js} +1 -1
  50. package/storybook-static/assets/{EditFAB.stories-Bs-9cRhd.js → EditFAB.stories-20q5YrbB.js} +1 -1
  51. package/storybook-static/assets/{EvilEye.stories-BWXnq24Y.js → EvilEye.stories-BnrzxIfd.js} +1 -1
  52. package/storybook-static/assets/{FadeContent.stories-pXTU-JIQ.js → FadeContent.stories-B2Vg7NtY.js} +1 -1
  53. package/storybook-static/assets/{FaultyTerminal.stories-BeQm-159.js → FaultyTerminal.stories-C5NnbXoc.js} +1 -1
  54. package/storybook-static/assets/{Fbo-VC2TXL_C.js → Fbo-B1ly9qOC.js} +1 -1
  55. package/storybook-static/assets/{FloatingLines.stories-XxLhow2j.js → FloatingLines.stories-D1QGzub9.js} +1 -1
  56. package/storybook-static/assets/{FlowingMenu.stories-CqZrs3Uu.js → FlowingMenu.stories-BAxs_ywo.js} +1 -1
  57. package/storybook-static/assets/{FluidGlass.stories-Drau1tiq.js → FluidGlass.stories-B3lxcmL1.js} +1 -1
  58. package/storybook-static/assets/{Folder.stories-CjgFkSND.js → Folder.stories-CUfwhATp.js} +1 -1
  59. package/storybook-static/assets/{FuzzyText.stories-Br4WpF-A.js → FuzzyText.stories-DI8R2peb.js} +1 -1
  60. package/storybook-static/assets/{Galaxy.stories-Crx5J_uS.js → Galaxy.stories-oz93vAik.js} +1 -1
  61. package/storybook-static/assets/{GhostCursor.stories-D0dTI4u7.js → GhostCursor.stories-B1IB369c.js} +1 -1
  62. package/storybook-static/assets/{GlareHover.stories-BqC9e1Hb.js → GlareHover.stories-DviHg4L1.js} +1 -1
  63. package/storybook-static/assets/{GlassSurface.stories-DZ024TSe.js → GlassSurface.stories-B2sESgaw.js} +1 -1
  64. package/storybook-static/assets/{GlitchText.stories-jFj-BUKV.js → GlitchText.stories-BuqkMtNy.js} +1 -1
  65. package/storybook-static/assets/{GooeyNav.stories-CEqhFiE8.js → GooeyNav.stories-D4grnYLS.js} +1 -1
  66. package/storybook-static/assets/{GradientBlinds.stories-CW5kpxYL.js → GradientBlinds.stories-DwGQO5rS.js} +1 -1
  67. package/storybook-static/assets/{GradientText.stories-DbHZi99L.js → GradientText.stories-BdLz2dro.js} +1 -1
  68. package/storybook-static/assets/{Grainient.stories-Cly0yjqz.js → Grainient.stories-BxMWusJr.js} +1 -1
  69. package/storybook-static/assets/{GridMotion.stories-Dv4czKOY.js → GridMotion.stories-B-LmxPAj.js} +1 -1
  70. package/storybook-static/assets/HabitTimeOfDayChart.stories-DodVI5KS.js +44 -0
  71. package/storybook-static/assets/{ImageSlideshow.stories-AfRCXiFL.js → ImageSlideshow.stories-51QNKTUQ.js} +1 -1
  72. package/storybook-static/assets/{Iridescence.stories-BMZkeDOP.js → Iridescence.stories-Bs2nLYXu.js} +1 -1
  73. package/storybook-static/assets/{LaserFlow.stories-Cjl7kx8X.js → LaserFlow.stories-BdRELLoY.js} +1 -1
  74. package/storybook-static/assets/{LetterGlitch.stories-CDDQYcx4.js → LetterGlitch.stories-BG6-IYnT.js} +1 -1
  75. package/storybook-static/assets/{LightPillar.stories-DVy-RN5g.js → LightPillar.stories-CtZ9TDUP.js} +1 -1
  76. package/storybook-static/assets/{LightRays.stories-B016QOBy.js → LightRays.stories-CaDyyeib.js} +1 -1
  77. package/storybook-static/assets/{Lightning.stories-Dzy1oJF2.js → Lightning.stories-B9QATAFy.js} +1 -1
  78. package/storybook-static/assets/{LineWaves.stories-BydARhov.js → LineWaves.stories-CiUIInmC.js} +1 -1
  79. package/storybook-static/assets/{LiquidChrome.stories-B9ZZjYRF.js → LiquidChrome.stories-DsyezGpV.js} +1 -1
  80. package/storybook-static/assets/{LiquidEther.stories-BkDJmjtE.js → LiquidEther.stories-Dg8WYwre.js} +1 -1
  81. package/storybook-static/assets/{LoadingSpinner-DcwTWgcV.js → LoadingSpinner-1USgqYdn.js} +1 -1
  82. package/storybook-static/assets/{LoadingSpinner.stories-Dnj2jism.js → LoadingSpinner.stories-Cd-KbND6.js} +1 -1
  83. package/storybook-static/assets/{MagicRings.stories-BaCliiKo.js → MagicRings.stories-CTNnBnJI.js} +1 -1
  84. package/storybook-static/assets/{Magnet.stories-B11_Eo8J.js → Magnet.stories-ch36PRNC.js} +1 -1
  85. package/storybook-static/assets/{MagnetLines.stories-Qt6rC6j8.js → MagnetLines.stories-ChB1r2tY.js} +1 -1
  86. package/storybook-static/assets/{Masonry.stories-1Zd-qIAf.js → Masonry.stories-CBOzxvk7.js} +1 -1
  87. package/storybook-static/assets/{MetaBalls.stories-BMw12NVI.js → MetaBalls.stories-dWlz4Ds5.js} +1 -1
  88. package/storybook-static/assets/{MetallicPaint.stories-DK_MQecd.js → MetallicPaint.stories-CcxSOjEN.js} +1 -1
  89. package/storybook-static/assets/{MoodChart.stories-BWVcU_OW.js → MoodChart.stories-BgsUY46X.js} +1 -1
  90. package/storybook-static/assets/{MotionConfigContext-WWx21lsP.js → MotionConfigContext-8tx48NVJ.js} +1 -1
  91. package/storybook-static/assets/{Navbar.stories-DRsZCyOK.js → Navbar.stories-CO8mIGs3.js} +1 -1
  92. package/storybook-static/assets/{Noise.stories-CSagy7J1.js → Noise.stories-BXZ62aBv.js} +1 -1
  93. package/storybook-static/assets/{NumberStepper-DDKqilmB.js → NumberStepper-DpQK9rgt.js} +1 -1
  94. package/storybook-static/assets/{NumberStepper.stories-ta9bT43d.js → NumberStepper.stories-fdH_OESD.js} +1 -1
  95. package/storybook-static/assets/{Orb.stories-B27f_Mp5.js → Orb.stories-Q3Gvtt0O.js} +1 -1
  96. package/storybook-static/assets/{OrbitImages.stories-pbkZL0KD.js → OrbitImages.stories-DYKNJct4.js} +1 -1
  97. package/storybook-static/assets/{PieChart.stories-DXibmyag.js → PieChart.stories-DYhNCUc1.js} +1 -1
  98. package/storybook-static/assets/{PixelBlast.stories-Cd7ELIox.js → PixelBlast.stories-Dr_e2urO.js} +1 -1
  99. package/storybook-static/assets/{PixelCard.stories-QYg_f-kJ.js → PixelCard.stories-DYxagn6s.js} +1 -1
  100. package/storybook-static/assets/{PixelSnow.stories-Cr9QWIrr.js → PixelSnow.stories-CmFmFk80.js} +1 -1
  101. package/storybook-static/assets/{PixelTransition.stories-C-WOp_LR.js → PixelTransition.stories-DcLJrTvU.js} +1 -1
  102. package/storybook-static/assets/{Plasma.stories-VHAR1xeQ.js → Plasma.stories-DCPIsxfL.js} +1 -1
  103. package/storybook-static/assets/{Prism.stories-DeyjYz66.js → Prism.stories-BULB8fvL.js} +1 -1
  104. package/storybook-static/assets/{PrismaticBurst.stories-DvkfGTAr.js → PrismaticBurst.stories-BvmGa2kj.js} +1 -1
  105. package/storybook-static/assets/{ProfileCard.stories-CcPQg-Hv.js → ProfileCard.stories-Dvh4QFpO.js} +1 -1
  106. package/storybook-static/assets/{QuantifiableHabitsChart.stories-C6VWlFI0.js → QuantifiableHabitsChart.stories-BEu9suJJ.js} +1 -1
  107. package/storybook-static/assets/{Radar.stories--RY7R3OS.js → Radar.stories-NWjE9LdW.js} +1 -1
  108. package/storybook-static/assets/{Ribbons.stories-C7n9tx_g.js → Ribbons.stories-CLPqbKy0.js} +1 -1
  109. package/storybook-static/assets/{RippleGrid.stories-3RXapYiy.js → RippleGrid.stories-D0U4l21Z.js} +1 -1
  110. package/storybook-static/assets/{RotatingText.stories-Bt6WA6FO.js → RotatingText.stories-DY81NZLB.js} +1 -1
  111. package/storybook-static/assets/{ScrollFloat.stories-CWx8WGsN.js → ScrollFloat.stories-BhHzMWym.js} +1 -1
  112. package/storybook-static/assets/{ScrollReveal.stories-BVMnOHDG.js → ScrollReveal.stories-BCXWfFIW.js} +1 -1
  113. package/storybook-static/assets/{ScrollVelocity.stories-DbhM6LsV.js → ScrollVelocity.stories-CQxRZHee.js} +1 -1
  114. package/storybook-static/assets/{SearchBar.stories-Cr7ZECC_.js → SearchBar.stories-C-nnZWH1.js} +1 -1
  115. package/storybook-static/assets/{SearchableDropdown-B0i1ibfz.js → SearchableDropdown-BPoVONEr.js} +1 -1
  116. package/storybook-static/assets/{SearchableDropdown.stories-CONyMSzp.js → SearchableDropdown.stories-B2D6NBP8.js} +1 -1
  117. package/storybook-static/assets/{SelectInput-DM8VWb-H.js → SelectInput-CCLJ-HdU.js} +1 -1
  118. package/storybook-static/assets/{SelectInput.stories-DGlt60ll.js → SelectInput.stories-Dm8quSVP.js} +1 -1
  119. package/storybook-static/assets/{ShapeBlur.stories-Crbv5z82.js → ShapeBlur.stories-DvmwLZse.js} +1 -1
  120. package/storybook-static/assets/{ShapeGrid.stories-Dj_OezwO.js → ShapeGrid.stories-DlZ2iAx6.js} +1 -1
  121. package/storybook-static/assets/{ShinyText.stories-DJOeAHRl.js → ShinyText.stories-REqkvy1G.js} +1 -1
  122. package/storybook-static/assets/{Silk.stories-BCgvZrfN.js → Silk.stories-5LO-9cQL.js} +1 -1
  123. package/storybook-static/assets/{SleepChart.stories-ChSrLDUZ.js → SleepChart.stories-DJFdnHZ5.js} +1 -1
  124. package/storybook-static/assets/{Slider-BxUKJrvC.js → Slider-DEYrg76s.js} +1 -1
  125. package/storybook-static/assets/{Slider.stories-BIePmg36.js → Slider.stories-og2k40z1.js} +1 -1
  126. package/storybook-static/assets/{SoftAurora.stories-0Wf3E-ut.js → SoftAurora.stories-U4EPU95S.js} +1 -1
  127. package/storybook-static/assets/{SoundDemo.stories-Bfcl6O8Y.js → SoundDemo.stories-J78qNGXU.js} +1 -1
  128. package/storybook-static/assets/{SplashCursor.stories-BHfxyWxe.js → SplashCursor.stories-BO2m4Pud.js} +1 -1
  129. package/storybook-static/assets/{SpotlightCard.stories-BN6lbioi.js → SpotlightCard.stories-DQnH0jiS.js} +1 -1
  130. package/storybook-static/assets/{Stack.stories-C8h__4aO.js → Stack.stories-2oDvjh2Y.js} +1 -1
  131. package/storybook-static/assets/{StaggeredMenu.stories-n0x61Yxa.js → StaggeredMenu.stories-DeF6_l-v.js} +1 -1
  132. package/storybook-static/assets/{StarBorder.stories-CklXh7Cs.js → StarBorder.stories-DnuxceeK.js} +1 -1
  133. package/storybook-static/assets/{SunburstChart.stories-BZAojE_q.js → SunburstChart.stories-ByAmDMXC.js} +1 -1
  134. package/storybook-static/assets/{Table.stories-DN7ZPpOO.js → Table.stories-BM_-AQKA.js} +1 -1
  135. package/storybook-static/assets/{Tabs.stories-D8ioATag.js → Tabs.stories-Be9D-sgf.js} +1 -1
  136. package/storybook-static/assets/{TargetCursor.stories-BVY9PBXD.js → TargetCursor.stories-BwoTGxBB.js} +1 -1
  137. package/storybook-static/assets/{TextArea-B91mTJ1S.js → TextArea-DQqwBKxS.js} +1 -1
  138. package/storybook-static/assets/{TextArea.stories-BplQM96a.js → TextArea.stories-CfvGGw99.js} +1 -1
  139. package/storybook-static/assets/{TextCursor.stories-B9jN3Zaz.js → TextCursor.stories-CUs-V-I-.js} +1 -1
  140. package/storybook-static/assets/{TextInput-gkuohvRv.js → TextInput-QkZkrLUf.js} +1 -1
  141. package/storybook-static/assets/{TextInput.stories-DpR0x8bn.js → TextInput.stories-BpmAMtlW.js} +1 -1
  142. package/storybook-static/assets/{TextPressure.stories-BacTH6b1.js → TextPressure.stories-B3caXuKV.js} +1 -1
  143. package/storybook-static/assets/{TextType.stories-lI_4US1N.js → TextType.stories-DNL8zjaf.js} +1 -1
  144. package/storybook-static/assets/{ThemeSwitcher.stories-CMRpdYba.js → ThemeSwitcher.stories-CDu0XAN-.js} +1 -1
  145. package/storybook-static/assets/{Threads.stories-DClx4xSn.js → Threads.stories-Crft2hna.js} +1 -1
  146. package/storybook-static/assets/{TimeInput.stories-D4aYn8hp.js → TimeInput.stories-xpl2uzTO.js} +1 -1
  147. package/storybook-static/assets/{Toggle-zzEIyGsL.js → Toggle-Bk1MAq01.js} +1 -1
  148. package/storybook-static/assets/{Toggle.stories-vK7n9Pn5.js → Toggle.stories-BzphoQYN.js} +1 -1
  149. package/storybook-static/assets/{ToggleButton-DNTCrVXy.js → ToggleButton-Dq5MZ2JT.js} +1 -1
  150. package/storybook-static/assets/{ToggleButton.stories-DwRnggIQ.js → ToggleButton.stories-CkvKN5T3.js} +1 -1
  151. package/storybook-static/assets/{TrueFocus.stories-D8oCteJV.js → TrueFocus.stories-D-GIGe3p.js} +1 -1
  152. package/storybook-static/assets/{VariableProximity.stories-BbgYWC7t.js → VariableProximity.stories-CGRj0AaF.js} +1 -1
  153. package/storybook-static/assets/{Waves.stories-5UKDofeV.js → Waves.stories-D7MCXF3v.js} +1 -1
  154. package/storybook-static/assets/{check-BxYPpesN.js → check-CqecRFgk.js} +1 -1
  155. package/storybook-static/assets/{chevron-down-B8zdRhXt.js → chevron-down-Diw32xyH.js} +1 -1
  156. package/storybook-static/assets/{chevron-right-DbZQawrO.js → chevron-right-BbMxok5Z.js} +1 -1
  157. package/storybook-static/assets/client-btLso6m5.js +1 -0
  158. package/storybook-static/assets/{createLucideIcon-DzdQJ9zJ.js → createLucideIcon-CLKNpMFx.js} +1 -1
  159. package/storybook-static/assets/{download-CH9m89_W.js → download-wAxlpNrd.js} +1 -1
  160. package/storybook-static/assets/{folder-CkfgXDdN.js → folder-BNDVJFto.js} +1 -1
  161. package/storybook-static/assets/{iconBase-DbnMJ-eQ.js → iconBase-0L4wR9Gc.js} +1 -1
  162. package/storybook-static/assets/{iframe-B6jx7rwj.js → iframe-h2tL8CDC.js} +3 -3
  163. package/storybook-static/assets/{index-DSxCFvRi.js → index--LmV1k19.js} +1 -1
  164. package/storybook-static/assets/{index-Djn89Lc7.js → index-C9HvlbD_.js} +1 -1
  165. package/storybook-static/assets/{index-BUSbwJpV.js → index-CGL0EAQT.js} +1 -1
  166. package/storybook-static/assets/{proxy-DThijezB.js → proxy-9txmJjjf.js} +1 -1
  167. package/storybook-static/assets/{react-18-CC2o_KTG.js → react-18-BDD9c9dl.js} +1 -1
  168. package/storybook-static/assets/{react-three-fiber.esm-CrZWbBn0.js → react-three-fiber.esm-CBxD6u-E.js} +1 -1
  169. package/storybook-static/assets/{search-DL4xWQAj.js → search-DEAccYIz.js} +1 -1
  170. package/storybook-static/assets/{settings-DnzSTmB8.js → settings-B6oWl9ku.js} +1 -1
  171. package/storybook-static/assets/{sun-BWKcGhza.js → sun-RxB88WOP.js} +1 -1
  172. package/storybook-static/assets/{trash-2-CERNk2Wg.js → trash-2-nAjb2GZD.js} +1 -1
  173. package/storybook-static/assets/{use-animation-frame-sEDY6GbM.js → use-animation-frame-Dfiys8aM.js} +1 -1
  174. package/storybook-static/assets/{use-in-view-DLwo7uun.js → use-in-view-BU3Foeq5.js} +1 -1
  175. package/storybook-static/assets/{use-motion-value-Oa0ddXN-.js → use-motion-value-sE0g715q.js} +1 -1
  176. package/storybook-static/assets/{use-spring-BqiqYxMo.js → use-spring-CptO6Mnm.js} +1 -1
  177. package/storybook-static/assets/{use-transform-D6NCQSqI.js → use-transform-Bg7wVHLN.js} +1 -1
  178. package/storybook-static/assets/{useSound-Z19TqyCM.js → useSound-C9sUL0x2.js} +1 -1
  179. package/storybook-static/assets/{users-BAv6filM.js → users-DL_eoHBs.js} +1 -1
  180. package/storybook-static/assets/{x-CxMBr8uV.js → x-BKY2SXF1.js} +1 -1
  181. package/storybook-static/iframe.html +1 -1
  182. package/storybook-static/project.json +1 -1
  183. package/storybook-static/assets/HabitTimeOfDayChart.stories-BdnPRzWQ.js +0 -44
  184. package/storybook-static/assets/client-DHjvzCEB.js +0 -1
@@ -18,44 +18,10 @@ export interface ModalProps {
18
18
  actions?: ReactNode;
19
19
  /** When true, the body is padded; when false, the body is flush to the edges */
20
20
  padding?: boolean;
21
+ /** How the modal renders on narrow viewports. `sheet` slides from the bottom; `center` stays centered. Defaults to `sheet`. */
22
+ mobileVariant?: 'sheet' | 'center';
23
+ /** When the modal is in sheet mode on mobile, allow the user to swipe the header down to dismiss. Defaults to true. */
24
+ draggable?: boolean;
21
25
  }
22
- /**
23
- * Modal Component
24
- *
25
- * @component
26
- * @description
27
- * An accessible overlay dialog with a backdrop, title header, optional
28
- * header actions, and a flexible body. Renders into a React portal on
29
- * `document.body`, animates in/out with Framer Motion, closes on Escape
30
- * key or backdrop click, and clicks inside the dialog don't propagate
31
- * to the backdrop.
32
- *
33
- * @example
34
- * // Basic usage
35
- * <Modal open={isOpen} title="Confirm" onClose={() => setIsOpen(false)}>
36
- * <p>Are you sure?</p>
37
- * </Modal>
38
- *
39
- * @example
40
- * // With header actions and wide size
41
- * <Modal
42
- * open={isOpen}
43
- * title="Edit profile"
44
- * size="wide"
45
- * actions={<button onClick={save}>Save</button>}
46
- * onClose={handleClose}
47
- * >
48
- * <ProfileForm />
49
- * </Modal>
50
- *
51
- * @example
52
- * // Flush body (no padding) for editors and full-bleed content
53
- * <Modal open={isOpen} title="Document" padding={false} onClose={handleClose}>
54
- * <DocEditor content={content} onSave={save} />
55
- * </Modal>
56
- *
57
- * @param {ModalProps} props - The props for the Modal component
58
- * @returns {React.ReactPortal | null} A portal rendering the modal, or null on the server
59
- */
60
26
  export declare const Modal: React.FC<ModalProps>;
61
27
  //# sourceMappingURL=Modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAMpD;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,gGAAgG;IAChG,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAsEtC,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAMtE;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,gGAAgG;IAChG,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+HAA+H;IAC/H,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACnC,uHAAuH;IACvH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAqBD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA+GtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HabitTimeOfDayChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAIhF,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAErD,UAAU,wBAAwB;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AA8DD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA0ZlE,CAAA"}
1
+ {"version":3,"file":"HabitTimeOfDayChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAIhF,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAErD,UAAU,wBAAwB;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAwED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAidlE,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { motion, AnimatePresence, useMotionValue, useTransform, animate, LayoutGroup } from 'framer-motion';
2
+ import { motion, AnimatePresence, useDragControls, useMotionValue, useTransform, animate, LayoutGroup } from 'framer-motion';
3
3
  import React, { useRef, useEffect, useCallback, useState, useMemo, createContext, useContext, Fragment as Fragment$1, memo } from 'react';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { X, Calendar as Calendar$1, ChevronDown, Search, Check, Edit, Folder, Users, Book, MessageSquare, UserPlus, Sun, Moon, Info, Github, SquareKanban, ChevronRight, Plus, Loader2, AlertTriangle, Play, Brain, FolderSearch, FilePlus, Pencil, FileText, Terminal, Trash2, GripVertical, Download, Menu, ChevronLeft, Maximize, Share2, Pause } from 'lucide-react';
@@ -720,47 +720,29 @@ const EmptyState = ({ icon, title, message, action, size = 'default', }) => {
720
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$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"};
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","backdropSheet":"Modal-module_backdropSheet__o9kW3","dialogSheet":"Modal-module_dialogSheet__EjpwP","grabBar":"Modal-module_grabBar__qhl9f"};
724
724
 
725
- /**
726
- * Modal Component
727
- *
728
- * @component
729
- * @description
730
- * An accessible overlay dialog with a backdrop, title header, optional
731
- * header actions, and a flexible body. Renders into a React portal on
732
- * `document.body`, animates in/out with Framer Motion, closes on Escape
733
- * key or backdrop click, and clicks inside the dialog don't propagate
734
- * to the backdrop.
735
- *
736
- * @example
737
- * // Basic usage
738
- * <Modal open={isOpen} title="Confirm" onClose={() => setIsOpen(false)}>
739
- * <p>Are you sure?</p>
740
- * </Modal>
741
- *
742
- * @example
743
- * // With header actions and wide size
744
- * <Modal
745
- * open={isOpen}
746
- * title="Edit profile"
747
- * size="wide"
748
- * actions={<button onClick={save}>Save</button>}
749
- * onClose={handleClose}
750
- * >
751
- * <ProfileForm />
752
- * </Modal>
753
- *
754
- * @example
755
- * // Flush body (no padding) for editors and full-bleed content
756
- * <Modal open={isOpen} title="Document" padding={false} onClose={handleClose}>
757
- * <DocEditor content={content} onSave={save} />
758
- * </Modal>
759
- *
760
- * @param {ModalProps} props - The props for the Modal component
761
- * @returns {React.ReactPortal | null} A portal rendering the modal, or null on the server
762
- */
763
- const Modal = ({ open, title, onClose, children, size = 'default', actions, padding = true, }) => {
725
+ const MOBILE_BREAKPOINT = '(max-width: 640px)';
726
+ const useIsMobile = () => {
727
+ const [isMobile, setIsMobile] = useState(() => {
728
+ if (typeof window === 'undefined')
729
+ return false;
730
+ return window.matchMedia(MOBILE_BREAKPOINT).matches;
731
+ });
732
+ useEffect(() => {
733
+ if (typeof window === 'undefined')
734
+ return;
735
+ const mq = window.matchMedia(MOBILE_BREAKPOINT);
736
+ const onChange = (e) => setIsMobile(e.matches);
737
+ mq.addEventListener('change', onChange);
738
+ return () => mq.removeEventListener('change', onChange);
739
+ }, []);
740
+ return isMobile;
741
+ };
742
+ const Modal = ({ open, title, onClose, children, size = 'default', actions, padding = true, mobileVariant = 'sheet', draggable = true, }) => {
743
+ const isMobile = useIsMobile();
744
+ const dragControls = useDragControls();
745
+ const headerRef = useRef(null);
764
746
  useEffect(() => {
765
747
  if (!open)
766
748
  return;
@@ -773,14 +755,38 @@ const Modal = ({ open, title, onClose, children, size = 'default', actions, padd
773
755
  }, [open, onClose]);
774
756
  if (typeof document === 'undefined')
775
757
  return null;
758
+ const isSheet = mobileVariant === 'sheet' && isMobile;
759
+ const isDraggable = isSheet && draggable;
760
+ const backdropClass = [styles$y.backdrop, isSheet && styles$y.backdropSheet]
761
+ .filter(Boolean)
762
+ .join(' ');
776
763
  const dialogClass = [
777
764
  styles$y.dialog,
778
765
  size === 'compact' && styles$y.dialogCompact,
779
766
  size === 'wide' && styles$y.dialogWide,
767
+ isSheet && styles$y.dialogSheet,
780
768
  ]
781
769
  .filter(Boolean)
782
770
  .join(' ');
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);
771
+ const enteringAnimation = isSheet
772
+ ? { initial: { y: '100%' }, animate: { y: 0 }, exit: { y: '100%' } }
773
+ : {
774
+ initial: { opacity: 0, scale: 0.96, y: 8 },
775
+ animate: { opacity: 1, scale: 1, y: 0 },
776
+ exit: { opacity: 0, scale: 0.96, y: 8 },
777
+ };
778
+ return createPortal(jsx(AnimatePresence, { children: open && (jsx(motion.div, { className: backdropClass, 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, ...enteringAnimation, transition: isSheet
779
+ ? { type: 'spring', stiffness: 320, damping: 32 }
780
+ : { duration: 0.15, ease: 'easeOut' }, onClick: (e) => e.stopPropagation(), drag: isDraggable ? 'y' : false, dragControls: isDraggable ? dragControls : undefined, dragConstraints: { top: 0 }, dragElastic: { top: 0, bottom: 0.3 }, dragListener: false, onDragEnd: (_, info) => {
781
+ if (info.offset.y > 80)
782
+ onClose();
783
+ }, children: [isSheet && jsx("div", { className: styles$y.grabBar }), jsxs("div", { ref: headerRef, className: styles$y.header, onPointerDown: (e) => {
784
+ if (!isDraggable)
785
+ return;
786
+ if (e.target.closest('button'))
787
+ return;
788
+ dragControls.start(e);
789
+ }, 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
790
  };
785
791
 
786
792
  var styles$x = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
@@ -4402,6 +4408,53 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
4402
4408
  const active = new Set(activeHabits);
4403
4409
  return parsed.filter(e => active.has(e.habitKey));
4404
4410
  }, [parsed, activeHabits]);
4411
+ // Group events that land on the same minute (same habit) into a single
4412
+ // cluster so overlapping dots become one sized/counted dot. Then, for any
4413
+ // (date, minute) coord with multiple habits, fan them out horizontally so
4414
+ // different-colored dots stop masking each other.
4415
+ const clusters = useMemo(() => {
4416
+ const byKey = new Map();
4417
+ filtered.forEach(e => {
4418
+ const bucketFraction = Math.round(e.hourFraction * 60) / 60;
4419
+ const bucketMinute = Math.round(bucketFraction * 60) % 60;
4420
+ const bucketHour = Math.floor(bucketFraction);
4421
+ const key = `${e.date}|${e.habitKey}|${bucketFraction}`;
4422
+ const existing = byKey.get(key);
4423
+ if (existing) {
4424
+ existing.count += 1;
4425
+ }
4426
+ else {
4427
+ byKey.set(key, {
4428
+ habitKey: e.habitKey,
4429
+ date: e.date,
4430
+ hour: bucketHour,
4431
+ minute: bucketMinute,
4432
+ hourFraction: bucketFraction,
4433
+ count: 1,
4434
+ xOffsetPx: 0,
4435
+ });
4436
+ }
4437
+ });
4438
+ const coordGroups = new Map();
4439
+ byKey.forEach(c => {
4440
+ const coordKey = `${c.date}|${c.hourFraction}`;
4441
+ const arr = coordGroups.get(coordKey);
4442
+ if (arr)
4443
+ arr.push(c);
4444
+ else
4445
+ coordGroups.set(coordKey, [c]);
4446
+ });
4447
+ const out = [];
4448
+ const spacing = 10;
4449
+ coordGroups.forEach(group => {
4450
+ group.sort((a, b) => a.habitKey.localeCompare(b.habitKey));
4451
+ const mid = (group.length - 1) / 2;
4452
+ group.forEach((c, i) => {
4453
+ out.push({ ...c, xOffsetPx: (i - mid) * spacing });
4454
+ });
4455
+ });
4456
+ return out;
4457
+ }, [filtered]);
4405
4458
  const hourlyTotals = useMemo(() => {
4406
4459
  const totals = Array.from({ length: 24 }, (_, hour) => ({
4407
4460
  hour,
@@ -4455,15 +4508,16 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
4455
4508
  .attr('y2', chartHeight);
4456
4509
  // Dots
4457
4510
  const rowHeight = yScale.bandwidth();
4458
- const radius = Math.min(5, Math.max(2, rowHeight / 2));
4511
+ const baseRadius = Math.min(5, Math.max(2, rowHeight / 2));
4512
+ const maxRadius = baseRadius * 2.2;
4459
4513
  g.selectAll('circle.dot')
4460
- .data(filtered)
4514
+ .data(clusters)
4461
4515
  .enter()
4462
4516
  .append('circle')
4463
4517
  .attr('class', styles$7.dot)
4464
- .attr('cx', d => xScale(d.hourFraction))
4518
+ .attr('cx', d => xScale(d.hourFraction) + d.xOffsetPx)
4465
4519
  .attr('cy', d => (yScale(d.date) ?? 0) + rowHeight / 2)
4466
- .attr('r', radius)
4520
+ .attr('r', d => Math.min(maxRadius, baseRadius * Math.sqrt(d.count)))
4467
4521
  .attr('fill', d => getColor(d.habitKey))
4468
4522
  .attr('opacity', d => hoveredHabit && hoveredHabit !== d.habitKey ? 0.15 : 0.8)
4469
4523
  .style('cursor', 'pointer')
@@ -4472,13 +4526,13 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
4472
4526
  if (!rect)
4473
4527
  return;
4474
4528
  setTooltipData({
4475
- x: xScale(d.hourFraction) + margin.left + rect.left,
4529
+ x: xScale(d.hourFraction) + d.xOffsetPx + margin.left + rect.left,
4476
4530
  y: (yScale(d.date) ?? 0) + margin.top + rect.top,
4477
4531
  habit: d.habitKey,
4478
4532
  hour: d.hour,
4479
4533
  minute: d.minute,
4480
4534
  date: d.date,
4481
- count: 1,
4535
+ count: d.count,
4482
4536
  });
4483
4537
  })
4484
4538
  .on('mouseleave', () => setTooltipData(null));
@@ -4574,6 +4628,7 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
4574
4628
  }, [
4575
4629
  view,
4576
4630
  filtered,
4631
+ clusters,
4577
4632
  hourlyTotals,
4578
4633
  dateRange,
4579
4634
  maxHourTotal,
@@ -4597,9 +4652,9 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
4597
4652
  day: 'numeric',
4598
4653
  });
4599
4654
  };
4600
- 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
4601
- ? ` · ${formatTime$1(tooltipData.hour, tooltipData.minute)}`
4602
- : ''] }) })] })) : (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))) }))] })] })) }))] }));
4655
+ 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] })] }), jsxs("div", { className: styles$7.tooltipInfo, children: [jsxs("div", { className: styles$7.tooltipDate, children: [tooltipData.date ? formatTooltipDate(tooltipData.date) : '', tooltipData.minute !== undefined
4656
+ ? ` · ${formatTime$1(tooltipData.hour, tooltipData.minute)}`
4657
+ : ''] }), tooltipData.count > 1 && (jsxs("div", { className: styles$7.tooltipValue, children: [jsx("strong", { children: tooltipData.count }), jsx("span", { className: styles$7.tooltipUnits, children: "events" })] }))] })] })) : (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))) }))] })] })) }))] }));
4603
4658
  };
4604
4659
 
4605
4660
  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"};