@stfrigerio/sito-template 0.1.78 → 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.
- package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.d.ts +1 -1
- package/dist/components/organisms/charts/HabitTimeOfDayChart/HabitTimeOfDayChart.d.ts.map +1 -1
- package/dist/index.esm.js +60 -85
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +60 -85
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{ASCIIText.stories-CC7w_Zb7.js → ASCIIText.stories-CNJ4kDUK.js} +1 -1
- package/storybook-static/assets/{AllAtoms.stories-Qaf-lIlH.js → AllAtoms.stories-DVD9dXtt.js} +1 -1
- package/storybook-static/assets/{AnimatedContent.stories-CAWgPz_l.js → AnimatedContent.stories-DR2sBRO4.js} +1 -1
- package/storybook-static/assets/{AnimatedList.stories-Dtm1Kj9o.js → AnimatedList.stories-ByvQmQtJ.js} +1 -1
- package/storybook-static/assets/{Antigravity.stories-CROe565M.js → Antigravity.stories-CCkzQRZD.js} +1 -1
- package/storybook-static/assets/{ArrayInput.stories-Cy0kQVYi.js → ArrayInput.stories-DiYj5x-F.js} +1 -1
- package/storybook-static/assets/{Aurora.stories-CiiqgrCk.js → Aurora.stories-CdZgtcXa.js} +1 -1
- package/storybook-static/assets/{Beams.stories-BjWLvvyV.js → Beams.stories-DIbbV8Wj.js} +1 -1
- package/storybook-static/assets/{BlobCursor.stories-C-Cy9Shk.js → BlobCursor.stories-DdtPdrmO.js} +1 -1
- package/storybook-static/assets/{BlurText.stories-C_4t7beV.js → BlurText.stories-DvS0BuFx.js} +1 -1
- package/storybook-static/assets/{BooleansHeatmap.stories-RaRlkL8c.js → BooleansHeatmap.stories-CCdofxGc.js} +1 -1
- package/storybook-static/assets/{BorderGlow.stories-8p9mPUnI.js → BorderGlow.stories-DGsaUwxy.js} +1 -1
- package/storybook-static/assets/{BubbleMenu.stories-24UYtJ08.js → BubbleMenu.stories-Di7OQBuA.js} +1 -1
- package/storybook-static/assets/{Button-DtzPIRXq.js → Button-CZA7o1Gt.js} +1 -1
- package/storybook-static/assets/{Button.stories-CBkojkyr.js → Button.stories-D9fq9LoH.js} +1 -1
- package/storybook-static/assets/{Calendar.stories-EWMWgOBv.js → Calendar.stories-B4XpP2tI.js} +1 -1
- package/storybook-static/assets/{Card-B6tfqfjH.js → Card-CfovP7n4.js} +1 -1
- package/storybook-static/assets/{Card.stories-DteAEiOg.js → Card.stories-DLez3UFF.js} +1 -1
- package/storybook-static/assets/{CardNav.stories-C-OgJ7F_.js → CardNav.stories-B_sxJWJ4.js} +1 -1
- package/storybook-static/assets/{Carousel.stories-B1w5LjkD.js → Carousel.stories-CxkfJY34.js} +1 -1
- package/storybook-static/assets/{Checkbox-DAvHIuDy.js → Checkbox-DmCypF1c.js} +1 -1
- package/storybook-static/assets/{Checkbox.stories-Co4ppn-V.js → Checkbox.stories-D6HzUoQr.js} +1 -1
- package/storybook-static/assets/{ChromaGrid.stories-tOSXlium.js → ChromaGrid.stories-BefBbLue.js} +1 -1
- package/storybook-static/assets/{CircularGallery.stories-CdrJRVTt.js → CircularGallery.stories-BcibPZCH.js} +1 -1
- package/storybook-static/assets/{CircularText.stories-Dt3nOaW4.js → CircularText.stories-DIkPGool.js} +1 -1
- package/storybook-static/assets/{ClickSpark.stories-DilLAXmz.js → ClickSpark.stories-BI-Yfaob.js} +1 -1
- package/storybook-static/assets/{ColorBends.stories-hAsm_NVq.js → ColorBends.stories-BQpzL3Of.js} +1 -1
- package/storybook-static/assets/{CountUp.stories-Bp7fmEJS.js → CountUp.stories-yxjUQWLc.js} +1 -1
- package/storybook-static/assets/{Counter.stories-ASmBLuXV.js → Counter.stories-CX_TeOip.js} +1 -1
- package/storybook-static/assets/{Crosshair.stories-BTvCMRD1.js → Crosshair.stories-BnZfEvwU.js} +1 -1
- package/storybook-static/assets/{Cubes.stories-BseAsSaR.js → Cubes.stories-BOjKWGyh.js} +1 -1
- package/storybook-static/assets/{CurvedLoop.stories-BjqKVV6m.js → CurvedLoop.stories-Bctfe2P4.js} +1 -1
- package/storybook-static/assets/{DarkVeil.stories-DNKi_B31.js → DarkVeil.stories-BVsZBa_C.js} +1 -1
- package/storybook-static/assets/{DateInput-BVBf9Db2.js → DateInput-Bn4ALgyD.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-CeMSisPx.js → DateInput.stories-DrNT5Gye.js} +1 -1
- package/storybook-static/assets/{DecayCard.stories-C0wJHVS-.js → DecayCard.stories-ZAjuihaF.js} +1 -1
- package/storybook-static/assets/{DecryptedText.stories-BE_QpiGp.js → DecryptedText.stories-BNLBedmV.js} +1 -1
- package/storybook-static/assets/{Dither.stories-BWuC6kd6.js → Dither.stories-DeBS3s8S.js} +1 -1
- package/storybook-static/assets/{Dock.stories-D6RP8Ryr.js → Dock.stories-DX259yLm.js} +1 -1
- package/storybook-static/assets/{EditFAB.stories-BmCFS-7C.js → EditFAB.stories-CXbljVLg.js} +1 -1
- package/storybook-static/assets/{EvilEye.stories-Gy3-kkok.js → EvilEye.stories-BPfAuarL.js} +1 -1
- package/storybook-static/assets/{FadeContent.stories-DHWHZaPD.js → FadeContent.stories-1Q_taF5y.js} +1 -1
- package/storybook-static/assets/{FaultyTerminal.stories-al-Vjs2U.js → FaultyTerminal.stories-BNxD1bl4.js} +1 -1
- package/storybook-static/assets/{Fbo-CUv2NMMu.js → Fbo-BhpPCYiS.js} +1 -1
- package/storybook-static/assets/{FloatingLines.stories-DU5FAryJ.js → FloatingLines.stories-BBO0vuh5.js} +1 -1
- package/storybook-static/assets/{FlowingMenu.stories-BxmUAvVg.js → FlowingMenu.stories-Ce_oHJmB.js} +1 -1
- package/storybook-static/assets/{FluidGlass.stories-BAcZi0B8.js → FluidGlass.stories-De3WLO5E.js} +1 -1
- package/storybook-static/assets/{Folder.stories-cDjFOW5H.js → Folder.stories-Cep1OjrT.js} +1 -1
- package/storybook-static/assets/{FuzzyText.stories-Cpb_7FZ5.js → FuzzyText.stories-BEZXg7AD.js} +1 -1
- package/storybook-static/assets/{Galaxy.stories-D9PrakPH.js → Galaxy.stories-kNaxCPmL.js} +1 -1
- package/storybook-static/assets/{GhostCursor.stories-Csfbqowz.js → GhostCursor.stories-D4Kv4klo.js} +1 -1
- package/storybook-static/assets/{GlareHover.stories-oxm7_cy1.js → GlareHover.stories-BH3m_5y-.js} +1 -1
- package/storybook-static/assets/{GlassSurface.stories-DuyltjNF.js → GlassSurface.stories-CfwkNRL4.js} +1 -1
- package/storybook-static/assets/{GlitchText.stories-B5853b6h.js → GlitchText.stories-DuO-fHXi.js} +1 -1
- package/storybook-static/assets/{GooeyNav.stories-B-Nb4351.js → GooeyNav.stories-BqH1CBQo.js} +1 -1
- package/storybook-static/assets/{GradientBlinds.stories-B619oOT7.js → GradientBlinds.stories-2D_yKjY6.js} +1 -1
- package/storybook-static/assets/{GradientText.stories-DQ6xrREc.js → GradientText.stories-BvTcplbJ.js} +1 -1
- package/storybook-static/assets/{Grainient.stories-DXh9q7qM.js → Grainient.stories-NWnMI8Xp.js} +1 -1
- package/storybook-static/assets/{GridMotion.stories-DXeVQVRv.js → GridMotion.stories-Cxy1K244.js} +1 -1
- package/storybook-static/assets/HabitTimeOfDayChart-DXBihkny.css +1 -0
- package/storybook-static/assets/HabitTimeOfDayChart.stories-bjfkGp9C.js +44 -0
- package/storybook-static/assets/{ImageSlideshow.stories-dd0nN5QE.js → ImageSlideshow.stories-Bf_0mud8.js} +1 -1
- package/storybook-static/assets/{Iridescence.stories-D1s7Q4uW.js → Iridescence.stories-DnnilFqh.js} +1 -1
- package/storybook-static/assets/{LaserFlow.stories---foHG1h.js → LaserFlow.stories-7s8gLKYx.js} +1 -1
- package/storybook-static/assets/{LetterGlitch.stories-mWR6cSTP.js → LetterGlitch.stories-CvBnmQHD.js} +1 -1
- package/storybook-static/assets/{LightPillar.stories-DO82NK6W.js → LightPillar.stories-C4gn8aMz.js} +1 -1
- package/storybook-static/assets/{LightRays.stories-C7ORCkFU.js → LightRays.stories-Dmlh3Q9t.js} +1 -1
- package/storybook-static/assets/{Lightning.stories-CXKsWwIZ.js → Lightning.stories-BazErqXA.js} +1 -1
- package/storybook-static/assets/{LineWaves.stories-B9cdFW5z.js → LineWaves.stories-8-taZp01.js} +1 -1
- package/storybook-static/assets/{LiquidChrome.stories-DpEdip1S.js → LiquidChrome.stories-BvXdtHGD.js} +1 -1
- package/storybook-static/assets/{LiquidEther.stories-B7BuQM2F.js → LiquidEther.stories-CgUivNv7.js} +1 -1
- package/storybook-static/assets/{LoadingSpinner-lq4yMoNZ.js → LoadingSpinner-DzthkB3E.js} +1 -1
- package/storybook-static/assets/{LoadingSpinner.stories-BYENiDYK.js → LoadingSpinner.stories-CbAc9FJ-.js} +1 -1
- package/storybook-static/assets/{MagicRings.stories-BiCNl5iP.js → MagicRings.stories-CJ71krX5.js} +1 -1
- package/storybook-static/assets/{Magnet.stories-jLEkLPcD.js → Magnet.stories-BsTkNBFY.js} +1 -1
- package/storybook-static/assets/{MagnetLines.stories-YRUgkAu9.js → MagnetLines.stories-SP6oXQ_2.js} +1 -1
- package/storybook-static/assets/{Masonry.stories-ChP6h5z3.js → Masonry.stories-DCSFPxZr.js} +1 -1
- package/storybook-static/assets/{MetaBalls.stories-CwxXREc7.js → MetaBalls.stories-3Xq-kFCK.js} +1 -1
- package/storybook-static/assets/{MetallicPaint.stories-CY90vc3E.js → MetallicPaint.stories-D_k0CxAm.js} +1 -1
- package/storybook-static/assets/{MoodChart.stories-C54nQjeF.js → MoodChart.stories-ounmGULU.js} +1 -1
- package/storybook-static/assets/{MotionConfigContext-DPLvddvp.js → MotionConfigContext-DczW6Yp-.js} +1 -1
- package/storybook-static/assets/{Navbar.stories-BZapiN1p.js → Navbar.stories-DojGSwog.js} +1 -1
- package/storybook-static/assets/{Noise.stories-uztpK8B2.js → Noise.stories-vRT-DWUc.js} +1 -1
- package/storybook-static/assets/{NumberStepper-CTYms_1a.js → NumberStepper-BnxsrXAQ.js} +1 -1
- package/storybook-static/assets/{NumberStepper.stories-pL8LYCQY.js → NumberStepper.stories-DvgxX1LG.js} +1 -1
- package/storybook-static/assets/{Orb.stories-D4Fb6Q-L.js → Orb.stories-DBBm3Vlu.js} +1 -1
- package/storybook-static/assets/{OrbitImages.stories-CPniDCsF.js → OrbitImages.stories-BdWzV4SL.js} +1 -1
- package/storybook-static/assets/{PieChart.stories-mAy_BCoF.js → PieChart.stories-DWLPu9uj.js} +1 -1
- package/storybook-static/assets/{PixelBlast.stories-Caf1SG-D.js → PixelBlast.stories-D72sMDxa.js} +1 -1
- package/storybook-static/assets/{PixelCard.stories-BZ31L-sS.js → PixelCard.stories-DFENqlra.js} +1 -1
- package/storybook-static/assets/{PixelSnow.stories-BC-MlTcf.js → PixelSnow.stories-DHxvb6cq.js} +1 -1
- package/storybook-static/assets/{PixelTransition.stories-Bn7uR_O_.js → PixelTransition.stories-BtH9jB6w.js} +1 -1
- package/storybook-static/assets/{Plasma.stories-CXhXi8-9.js → Plasma.stories-C8Mk042y.js} +1 -1
- package/storybook-static/assets/{Prism.stories-BE4AyPs3.js → Prism.stories-BTgOMqrd.js} +1 -1
- package/storybook-static/assets/{PrismaticBurst.stories-DT7lYI0J.js → PrismaticBurst.stories-DALOTiqj.js} +1 -1
- package/storybook-static/assets/{ProfileCard.stories-www_pmKI.js → ProfileCard.stories-oL7niYZn.js} +1 -1
- package/storybook-static/assets/{QuantifiableHabitsChart.stories-C-mB8ibQ.js → QuantifiableHabitsChart.stories-DA3YPiD8.js} +1 -1
- package/storybook-static/assets/{Radar.stories-cKxUW3Pf.js → Radar.stories-twX25gB2.js} +1 -1
- package/storybook-static/assets/{Ribbons.stories-R7mbMGR3.js → Ribbons.stories-BiPE3cPE.js} +1 -1
- package/storybook-static/assets/{RippleGrid.stories-DJFPB45-.js → RippleGrid.stories-Bk1e8QQS.js} +1 -1
- package/storybook-static/assets/{RotatingText.stories-CT2iBJtr.js → RotatingText.stories-DMBMDGJf.js} +1 -1
- package/storybook-static/assets/{ScrollFloat.stories-C00s7Tav.js → ScrollFloat.stories-Di679x-t.js} +1 -1
- package/storybook-static/assets/{ScrollReveal.stories-Cx0hRE56.js → ScrollReveal.stories-CzHU4qTi.js} +1 -1
- package/storybook-static/assets/{ScrollVelocity.stories-BGxqm84H.js → ScrollVelocity.stories-B-M2g5Mn.js} +1 -1
- package/storybook-static/assets/{SearchBar.stories-Gf4DuJ87.js → SearchBar.stories-BEuQ2rlz.js} +1 -1
- package/storybook-static/assets/{SearchableDropdown-BkGO_32K.js → SearchableDropdown-DizFzcKo.js} +1 -1
- package/storybook-static/assets/{SearchableDropdown.stories-CT874V6G.js → SearchableDropdown.stories-CqNKYUxm.js} +1 -1
- package/storybook-static/assets/{SelectInput-Hd6ZNqhj.js → SelectInput-DT_d_NsJ.js} +1 -1
- package/storybook-static/assets/{SelectInput.stories-Cp5WRoKm.js → SelectInput.stories-C8C-Ug2L.js} +1 -1
- package/storybook-static/assets/{ShapeBlur.stories-DBj0h6Ov.js → ShapeBlur.stories-ChsMhfJI.js} +1 -1
- package/storybook-static/assets/{ShapeGrid.stories-BxR6R44A.js → ShapeGrid.stories-DQF8IwUP.js} +1 -1
- package/storybook-static/assets/{ShinyText.stories-Cm6DUoFF.js → ShinyText.stories-Bz13tovD.js} +1 -1
- package/storybook-static/assets/{Silk.stories-D65z_bnD.js → Silk.stories-CFE1SlNL.js} +1 -1
- package/storybook-static/assets/{SleepChart.stories-BhlTYTJM.js → SleepChart.stories-BhbOQfha.js} +1 -1
- package/storybook-static/assets/{Slider-BX8qMaE_.js → Slider-CBwYFVIV.js} +1 -1
- package/storybook-static/assets/{Slider.stories-DItcyS21.js → Slider.stories-Cvrm2QcX.js} +1 -1
- package/storybook-static/assets/{SoftAurora.stories-NYzJ9emk.js → SoftAurora.stories-Ba1fSqh7.js} +1 -1
- package/storybook-static/assets/{SoundDemo.stories-DpuoGDe1.js → SoundDemo.stories-CwWEzXr9.js} +1 -1
- package/storybook-static/assets/{SplashCursor.stories-ByrBIxgW.js → SplashCursor.stories-COuSOYSq.js} +1 -1
- package/storybook-static/assets/{SpotlightCard.stories-CPCRu27S.js → SpotlightCard.stories-DRDHbHp3.js} +1 -1
- package/storybook-static/assets/{Stack.stories-CzQ0roYS.js → Stack.stories-DzRVjsMf.js} +1 -1
- package/storybook-static/assets/{StaggeredMenu.stories-4-Ub5zq5.js → StaggeredMenu.stories-bfCto5B9.js} +1 -1
- package/storybook-static/assets/{StarBorder.stories-zxBxdEVo.js → StarBorder.stories-OTbSoJbQ.js} +1 -1
- package/storybook-static/assets/{SunburstChart.stories-B8XjQlnj.js → SunburstChart.stories-J08jid7S.js} +1 -1
- package/storybook-static/assets/{Table.stories-CeUZbyGR.js → Table.stories-B9lBkLrU.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-Bt4U-2zQ.js → Tabs.stories-D-cdG7ef.js} +1 -1
- package/storybook-static/assets/{TargetCursor.stories-BoPvwDnE.js → TargetCursor.stories-Ci156vkX.js} +1 -1
- package/storybook-static/assets/{TextArea-D7KTGABN.js → TextArea-D6xA-G9E.js} +1 -1
- package/storybook-static/assets/{TextArea.stories-ByTnocqN.js → TextArea.stories-B_6KeOwd.js} +1 -1
- package/storybook-static/assets/{TextCursor.stories-DtuvL5LJ.js → TextCursor.stories-CB25PS6c.js} +1 -1
- package/storybook-static/assets/{TextInput-NcTywb5k.js → TextInput-p0yvLHu7.js} +1 -1
- package/storybook-static/assets/{TextInput.stories-DCD3IVam.js → TextInput.stories-37MBq_e1.js} +1 -1
- package/storybook-static/assets/{TextPressure.stories-B2pW02YP.js → TextPressure.stories-Dzqg-H9s.js} +1 -1
- package/storybook-static/assets/{TextType.stories-RxIjwcpK.js → TextType.stories-DUKIfs4s.js} +1 -1
- package/storybook-static/assets/{ThemeSwitcher.stories-CuS7ULFB.js → ThemeSwitcher.stories-CJbuQZQI.js} +1 -1
- package/storybook-static/assets/{Threads.stories-C5cQzyMO.js → Threads.stories-FB9S5grf.js} +1 -1
- package/storybook-static/assets/{TimeInput.stories-CjaGp3VF.js → TimeInput.stories-B652mfyC.js} +1 -1
- package/storybook-static/assets/{Toggle-CFshZc3M.js → Toggle-BdFbb1UM.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-KZTVvRIX.js → Toggle.stories-DdFeqCx2.js} +1 -1
- package/storybook-static/assets/{ToggleButton-DahhKKKD.js → ToggleButton-vGUT5jzh.js} +1 -1
- package/storybook-static/assets/{ToggleButton.stories-BecyzTSv.js → ToggleButton.stories-Cl9RpKGP.js} +1 -1
- package/storybook-static/assets/{TrueFocus.stories-B2qukCVC.js → TrueFocus.stories-XySm1xyG.js} +1 -1
- package/storybook-static/assets/{VariableProximity.stories-kLxJIzgW.js → VariableProximity.stories-9PoxTKjP.js} +1 -1
- package/storybook-static/assets/{Waves.stories-HWs82fyv.js → Waves.stories-Lkqs6tQG.js} +1 -1
- package/storybook-static/assets/{check-C0QYXCQq.js → check-B86E6LSY.js} +1 -1
- package/storybook-static/assets/{chevron-down-BYkclAjw.js → chevron-down-CRL8GnB3.js} +1 -1
- package/storybook-static/assets/{chevron-right-BpTsdNPU.js → chevron-right-Cc0-LXrS.js} +1 -1
- package/storybook-static/assets/client-BdOc8Iwm.js +1 -0
- package/storybook-static/assets/{createLucideIcon-C0vN6Cdq.js → createLucideIcon-BaQziuVh.js} +1 -1
- package/storybook-static/assets/{download-DjUyuZUg.js → download-D-Dc-DRw.js} +1 -1
- package/storybook-static/assets/{folder-C0M5Rug7.js → folder-LWy7LxYm.js} +1 -1
- package/storybook-static/assets/{iconBase-D9JibhHP.js → iconBase-Dq0q1wEJ.js} +1 -1
- package/storybook-static/assets/{iframe-CHP6sYHA.js → iframe-Dmyojefl.js} +3 -3
- package/storybook-static/assets/{index-MBwiYTbW.js → index-CBPAvggo.js} +1 -1
- package/storybook-static/assets/{index-kmZmSx5Q.js → index-D3YYeaiv.js} +1 -1
- package/storybook-static/assets/{index-BE2LY7RL.js → index-OfKv-nrT.js} +1 -1
- package/storybook-static/assets/{proxy-CKTlCz4V.js → proxy-CUfCpc2M.js} +1 -1
- package/storybook-static/assets/{react-18-Dbj2E7QK.js → react-18-7-InEuKG.js} +1 -1
- package/storybook-static/assets/{react-three-fiber.esm-CEqTsj3Q.js → react-three-fiber.esm-D8auPM-f.js} +1 -1
- package/storybook-static/assets/{search-BN18ZfML.js → search-B-uMmupb.js} +1 -1
- package/storybook-static/assets/{settings-C0mG0eRJ.js → settings-DSempBZ6.js} +1 -1
- package/storybook-static/assets/{sun-B-kVinvA.js → sun-DmiR43p8.js} +1 -1
- package/storybook-static/assets/{trash-2-C1860oG6.js → trash-2-Cv2Upoyz.js} +1 -1
- package/storybook-static/assets/{use-animation-frame-B-TgEmgt.js → use-animation-frame-BveKCpLW.js} +1 -1
- package/storybook-static/assets/{use-in-view-DuXpNPL7.js → use-in-view-DmuwqwED.js} +1 -1
- package/storybook-static/assets/{use-motion-value-BkTtRo1-.js → use-motion-value-DdLmNMGm.js} +1 -1
- package/storybook-static/assets/{use-spring-DXYP2-ws.js → use-spring-CYf3QXIz.js} +1 -1
- package/storybook-static/assets/{use-transform-D10ftuwp.js → use-transform-Cbq_kN5a.js} +1 -1
- package/storybook-static/assets/{useSound-B5F93XCP.js → useSound-C6xZ8qn8.js} +1 -1
- package/storybook-static/assets/{users-CbNaSdtt.js → users-BRQppT-i.js} +1 -1
- package/storybook-static/assets/{x-BFuIQJ4n.js → x-B2tzyKY2.js} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/assets/HabitTimeOfDayChart-CCVRaScE.css +0 -1
- package/storybook-static/assets/HabitTimeOfDayChart.stories-xpzlnQ95.js +0 -44
- package/storybook-static/assets/client-zvjl4wpt.js +0 -1
|
@@ -3,7 +3,7 @@ export interface HabitEvent {
|
|
|
3
3
|
loggedAt: string;
|
|
4
4
|
habitKey: string;
|
|
5
5
|
}
|
|
6
|
-
export type HabitTimeOfDayView = '
|
|
6
|
+
export type HabitTimeOfDayView = 'scatter' | 'totals';
|
|
7
7
|
interface HabitTimeOfDayChartProps {
|
|
8
8
|
events: HabitEvent[];
|
|
9
9
|
width?: number;
|
|
@@ -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;
|
|
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;AAkED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA0ZlE,CAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -4306,7 +4306,7 @@ const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewT
|
|
|
4306
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
4307
|
};
|
|
4308
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","
|
|
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
4310
|
|
|
4311
4311
|
const DEFAULT_HABIT_COLORS = {
|
|
4312
4312
|
Exercise: '#6BCB77',
|
|
@@ -4325,13 +4325,19 @@ const getDateKey = (d) => {
|
|
|
4325
4325
|
return `${y}-${m}-${day}`;
|
|
4326
4326
|
};
|
|
4327
4327
|
const formatHour = (hour) => {
|
|
4328
|
-
const h = hour % 24;
|
|
4328
|
+
const h = ((hour % 24) + 24) % 24;
|
|
4329
4329
|
if (h === 0)
|
|
4330
4330
|
return '12a';
|
|
4331
4331
|
if (h === 12)
|
|
4332
4332
|
return '12p';
|
|
4333
4333
|
return h < 12 ? `${h}a` : `${h - 12}p`;
|
|
4334
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
|
+
};
|
|
4335
4341
|
const enumerateDates = (start, end) => {
|
|
4336
4342
|
const dates = [];
|
|
4337
4343
|
const [sy, sm, sd] = start.split('-').map(Number);
|
|
@@ -4344,7 +4350,7 @@ const enumerateDates = (start, end) => {
|
|
|
4344
4350
|
}
|
|
4345
4351
|
return dates;
|
|
4346
4352
|
};
|
|
4347
|
-
const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, endDate, habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {}, defaultView = '
|
|
4353
|
+
const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, endDate, habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {}, defaultView = 'scatter', hideControls = false, compactLegend = false, }) => {
|
|
4348
4354
|
const svgRef = useRef(null);
|
|
4349
4355
|
const [view, setView] = useState(defaultView);
|
|
4350
4356
|
const [activeHabits, setActiveHabits] = useState([]);
|
|
@@ -4364,7 +4370,16 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4364
4370
|
const d = new Date(e.loggedAt);
|
|
4365
4371
|
if (Number.isNaN(d.getTime()))
|
|
4366
4372
|
return null;
|
|
4367
|
-
|
|
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
|
+
};
|
|
4368
4383
|
})
|
|
4369
4384
|
.filter((e) => e !== null);
|
|
4370
4385
|
}, [events]);
|
|
@@ -4393,22 +4408,6 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4393
4408
|
const active = new Set(activeHabits);
|
|
4394
4409
|
return parsed.filter(e => active.has(e.habitKey));
|
|
4395
4410
|
}, [parsed, activeHabits]);
|
|
4396
|
-
// Heatmap cell counts: key = `${date}|${hour}`, value = { total, byHabit }
|
|
4397
|
-
const cellCounts = useMemo(() => {
|
|
4398
|
-
const map = new Map();
|
|
4399
|
-
filtered.forEach(e => {
|
|
4400
|
-
const key = `${e.date}|${e.hour}`;
|
|
4401
|
-
let cell = map.get(key);
|
|
4402
|
-
if (!cell) {
|
|
4403
|
-
cell = { total: 0, byHabit: new Map() };
|
|
4404
|
-
map.set(key, cell);
|
|
4405
|
-
}
|
|
4406
|
-
cell.total += 1;
|
|
4407
|
-
cell.byHabit.set(e.habitKey, (cell.byHabit.get(e.habitKey) || 0) + 1);
|
|
4408
|
-
});
|
|
4409
|
-
return map;
|
|
4410
|
-
}, [filtered]);
|
|
4411
|
-
// Hourly totals: array of { hour, total, byHabit }
|
|
4412
4411
|
const hourlyTotals = useMemo(() => {
|
|
4413
4412
|
const totals = Array.from({ length: 24 }, (_, hour) => ({
|
|
4414
4413
|
hour,
|
|
@@ -4422,21 +4421,10 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4422
4421
|
});
|
|
4423
4422
|
return totals;
|
|
4424
4423
|
}, [filtered]);
|
|
4425
|
-
const
|
|
4426
|
-
let max = 0;
|
|
4427
|
-
cellCounts.forEach(v => {
|
|
4428
|
-
if (v.total > max)
|
|
4429
|
-
max = v.total;
|
|
4430
|
-
});
|
|
4431
|
-
return max;
|
|
4432
|
-
}, [cellCounts]);
|
|
4433
|
-
const maxHourTotal = useMemo(() => {
|
|
4434
|
-
return hourlyTotals.reduce((m, b) => Math.max(m, b.total), 0);
|
|
4435
|
-
}, [hourlyTotals]);
|
|
4424
|
+
const maxHourTotal = useMemo(() => hourlyTotals.reduce((m, b) => Math.max(m, b.total), 0), [hourlyTotals]);
|
|
4436
4425
|
const toggleHabit = (habit) => {
|
|
4437
4426
|
setActiveHabits(prev => prev.includes(habit) ? prev.filter(h => h !== habit) : [...prev, habit]);
|
|
4438
4427
|
};
|
|
4439
|
-
// Render heatmap
|
|
4440
4428
|
useEffect(() => {
|
|
4441
4429
|
if (!svgRef.current)
|
|
4442
4430
|
return;
|
|
@@ -4451,74 +4439,64 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4451
4439
|
const g = svg
|
|
4452
4440
|
.append('g')
|
|
4453
4441
|
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
4454
|
-
if (view === '
|
|
4442
|
+
if (view === 'scatter') {
|
|
4455
4443
|
if (dateRange.length === 0)
|
|
4456
4444
|
return;
|
|
4457
|
-
const xScale = d3.
|
|
4458
|
-
.domain(
|
|
4459
|
-
.range([0, chartWidth])
|
|
4460
|
-
.padding(0.08);
|
|
4445
|
+
const xScale = d3.scaleLinear()
|
|
4446
|
+
.domain([0, 24])
|
|
4447
|
+
.range([0, chartWidth]);
|
|
4461
4448
|
const yScale = d3.scaleBand()
|
|
4462
4449
|
.domain(dateRange)
|
|
4463
4450
|
.range([0, chartHeight])
|
|
4464
|
-
.padding(0.
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
const denom = Math.max(1, maxCellCount);
|
|
4469
|
-
return 0.2 + 0.8 * (count / denom);
|
|
4470
|
-
};
|
|
4471
|
-
const cells = [];
|
|
4472
|
-
dateRange.forEach(date => {
|
|
4473
|
-
for (let hour = 0; hour < 24; hour++) {
|
|
4474
|
-
const cell = cellCounts.get(`${date}|${hour}`);
|
|
4475
|
-
cells.push({
|
|
4476
|
-
date,
|
|
4477
|
-
hour,
|
|
4478
|
-
count: cell?.total ?? 0,
|
|
4479
|
-
byHabit: cell?.byHabit ?? new Map(),
|
|
4480
|
-
});
|
|
4481
|
-
}
|
|
4482
|
-
});
|
|
4483
|
-
g.selectAll('rect.cell')
|
|
4484
|
-
.data(cells)
|
|
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])
|
|
4485
4455
|
.enter()
|
|
4486
|
-
.append('
|
|
4487
|
-
.attr('class',
|
|
4488
|
-
.attr('
|
|
4489
|
-
.attr('
|
|
4490
|
-
.attr('
|
|
4491
|
-
.attr('
|
|
4492
|
-
|
|
4493
|
-
|
|
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')
|
|
4494
4476
|
.on('mouseenter', function (_event, d) {
|
|
4495
|
-
if (d.count === 0)
|
|
4496
|
-
return;
|
|
4497
4477
|
const rect = svgRef.current?.getBoundingClientRect();
|
|
4498
4478
|
if (!rect)
|
|
4499
4479
|
return;
|
|
4500
4480
|
setTooltipData({
|
|
4501
|
-
x:
|
|
4481
|
+
x: xScale(d.hourFraction) + margin.left + rect.left,
|
|
4502
4482
|
y: (yScale(d.date) ?? 0) + margin.top + rect.top,
|
|
4483
|
+
habit: d.habitKey,
|
|
4503
4484
|
hour: d.hour,
|
|
4485
|
+
minute: d.minute,
|
|
4504
4486
|
date: d.date,
|
|
4505
|
-
count:
|
|
4506
|
-
breakdown: Array.from(d.byHabit.entries())
|
|
4507
|
-
.map(([habit, count]) => ({ habit, count }))
|
|
4508
|
-
.sort((a, b) => b.count - a.count),
|
|
4487
|
+
count: 1,
|
|
4509
4488
|
});
|
|
4510
4489
|
})
|
|
4511
4490
|
.on('mouseleave', () => setTooltipData(null));
|
|
4512
4491
|
// X axis (hours)
|
|
4513
|
-
const hourTicks = [0, 3, 6, 9, 12, 15, 18, 21];
|
|
4514
4492
|
const xAxis = d3.axisBottom(xScale)
|
|
4515
|
-
.tickValues(
|
|
4493
|
+
.tickValues([0, 3, 6, 9, 12, 15, 18, 21])
|
|
4516
4494
|
.tickFormat(d => formatHour(d));
|
|
4517
4495
|
g.append('g')
|
|
4518
4496
|
.attr('class', styles$7.xAxis)
|
|
4519
4497
|
.attr('transform', `translate(0,${chartHeight})`)
|
|
4520
4498
|
.call(xAxis);
|
|
4521
|
-
// Y axis (dates) —
|
|
4499
|
+
// Y axis (dates) — evenly spaced
|
|
4522
4500
|
const yTickCount = Math.min(8, dateRange.length);
|
|
4523
4501
|
const yStep = Math.max(1, Math.floor(dateRange.length / yTickCount));
|
|
4524
4502
|
const yTickValues = dateRange.filter((_, i) => i % yStep === 0);
|
|
@@ -4531,7 +4509,7 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4531
4509
|
g.append('g').attr('class', styles$7.yAxis).call(yAxis);
|
|
4532
4510
|
}
|
|
4533
4511
|
else {
|
|
4534
|
-
// Totals view: bar
|
|
4512
|
+
// Totals view: stacked bar by hour
|
|
4535
4513
|
const xScale = d3.scaleBand()
|
|
4536
4514
|
.domain(d3.range(24))
|
|
4537
4515
|
.range([0, chartWidth])
|
|
@@ -4540,7 +4518,6 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4540
4518
|
.domain([0, Math.max(1, maxHourTotal)])
|
|
4541
4519
|
.nice()
|
|
4542
4520
|
.range([chartHeight, 0]);
|
|
4543
|
-
// Grid lines
|
|
4544
4521
|
g.selectAll('line.grid')
|
|
4545
4522
|
.data(yScale.ticks(5))
|
|
4546
4523
|
.enter()
|
|
@@ -4550,7 +4527,6 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4550
4527
|
.attr('x2', chartWidth)
|
|
4551
4528
|
.attr('y1', d => yScale(d))
|
|
4552
4529
|
.attr('y2', d => yScale(d));
|
|
4553
|
-
// Stacked bars by habit
|
|
4554
4530
|
hourlyTotals.forEach(bucket => {
|
|
4555
4531
|
let cumulative = 0;
|
|
4556
4532
|
const entries = Array.from(bucket.byHabit.entries()).sort(([a], [b]) => a.localeCompare(b));
|
|
@@ -4567,7 +4543,6 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4567
4543
|
.attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
|
|
4568
4544
|
cumulative += count;
|
|
4569
4545
|
});
|
|
4570
|
-
// Invisible hover target for the whole bar
|
|
4571
4546
|
if (bucket.total > 0) {
|
|
4572
4547
|
g.append('rect')
|
|
4573
4548
|
.attr('x', xScale(bucket.hour) ?? 0)
|
|
@@ -4593,7 +4568,6 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4593
4568
|
.on('mouseleave', () => setTooltipData(null));
|
|
4594
4569
|
}
|
|
4595
4570
|
});
|
|
4596
|
-
// X axis
|
|
4597
4571
|
const xAxis = d3.axisBottom(xScale)
|
|
4598
4572
|
.tickValues([0, 3, 6, 9, 12, 15, 18, 21])
|
|
4599
4573
|
.tickFormat(d => formatHour(d));
|
|
@@ -4605,10 +4579,9 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4605
4579
|
}
|
|
4606
4580
|
}, [
|
|
4607
4581
|
view,
|
|
4608
|
-
|
|
4582
|
+
filtered,
|
|
4609
4583
|
hourlyTotals,
|
|
4610
4584
|
dateRange,
|
|
4611
|
-
maxCellCount,
|
|
4612
4585
|
maxHourTotal,
|
|
4613
4586
|
chartWidth,
|
|
4614
4587
|
chartHeight,
|
|
@@ -4619,7 +4592,7 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4619
4592
|
getColor,
|
|
4620
4593
|
]);
|
|
4621
4594
|
const viewConfig = {
|
|
4622
|
-
|
|
4595
|
+
scatter: { icon: '•••', label: 'Scatter' },
|
|
4623
4596
|
totals: { icon: '📊', label: 'Totals' },
|
|
4624
4597
|
};
|
|
4625
4598
|
const formatTooltipDate = (date) => {
|
|
@@ -4630,7 +4603,9 @@ const HabitTimeOfDayChart = ({ events, width = 800, height = 400, startDate, end
|
|
|
4630
4603
|
day: 'numeric',
|
|
4631
4604
|
});
|
|
4632
4605
|
};
|
|
4633
|
-
return (jsxs("div", { className: styles$7.container, children: [!hideControls && (jsx("div", { className: styles$7.controls, children: jsx("div", { className: styles$7.viewToggle, children: ['
|
|
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))) }))] })] })) }))] }));
|
|
4634
4609
|
};
|
|
4635
4610
|
|
|
4636
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"};
|