@stfrigerio/sito-template 0.1.95 → 0.1.96
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/molecules/RecurrencePicker/RecurrencePicker.d.ts +13 -0
- package/dist/components/molecules/RecurrencePicker/RecurrencePicker.d.ts.map +1 -0
- package/dist/components/molecules/RecurrencePicker/RecurrencePicker.stories.d.ts +12 -0
- package/dist/components/molecules/RecurrencePicker/RecurrencePicker.stories.d.ts.map +1 -0
- package/dist/components/molecules/RecurrencePicker/index.d.ts +3 -0
- package/dist/components/molecules/RecurrencePicker/index.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +2 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/index.esm.js +340 -182
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +343 -184
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/themes/lossito.css +243 -49
- package/package.json +2 -1
- package/storybook-static/assets/{ASCIIText.stories-DFJdLu85.js → ASCIIText.stories-BNQcc9gv.js} +1 -1
- package/storybook-static/assets/{AllAtoms.stories-exRxVmzu.js → AllAtoms.stories-DBpk-rB8.js} +1 -1
- package/storybook-static/assets/{AnimatedContent.stories-A1SzIOe2.js → AnimatedContent.stories-CCnlHD5Y.js} +1 -1
- package/storybook-static/assets/{AnimatedList.stories-D2Q-T7WK.js → AnimatedList.stories-DNI1W5-A.js} +1 -1
- package/storybook-static/assets/{Antigravity.stories-CB3_2V40.js → Antigravity.stories-BQw1Zvk9.js} +1 -1
- package/storybook-static/assets/{ArrayInput.stories-pogP4q4b.js → ArrayInput.stories-HQd6ODME.js} +1 -1
- package/storybook-static/assets/{Aurora.stories-Cu440k5S.js → Aurora.stories-xI4i4wH4.js} +1 -1
- package/storybook-static/assets/{Beams.stories-CzUpFwoS.js → Beams.stories-DxSqefhF.js} +1 -1
- package/storybook-static/assets/{BlobCursor.stories-IsVKCCEO.js → BlobCursor.stories-DNk0BeNz.js} +1 -1
- package/storybook-static/assets/{BlurText.stories-BVGu0aqN.js → BlurText.stories-DBsRktVj.js} +1 -1
- package/storybook-static/assets/{BooleansHeatmap.stories-BthQ5ehB.js → BooleansHeatmap.stories-dsUQfyWg.js} +1 -1
- package/storybook-static/assets/{BorderGlow.stories-BNwBLObC.js → BorderGlow.stories-lgvEGRVA.js} +1 -1
- package/storybook-static/assets/{BubbleMenu.stories-7__gkj8R.js → BubbleMenu.stories-CXvB9JdY.js} +1 -1
- package/storybook-static/assets/{Button-CwSLfSSb.js → Button-6nmyMGc3.js} +1 -1
- package/storybook-static/assets/{Button.stories-DXdSC8Ub.js → Button.stories-DD3HQBXg.js} +1 -1
- package/storybook-static/assets/{Calendar.stories-HJNrPTKA.js → Calendar.stories-_ZDa4YfS.js} +1 -1
- package/storybook-static/assets/{Card-CMuvydSk.js → Card-B7F8cu_z.js} +1 -1
- package/storybook-static/assets/{Card.stories-C6r4Lfy1.js → Card.stories-BLbuUq_5.js} +1 -1
- package/storybook-static/assets/{CardNav.stories-WDha-__w.js → CardNav.stories-CiJ_bFt8.js} +1 -1
- package/storybook-static/assets/{Carousel.stories-C73W8Cj0.js → Carousel.stories-BYGW6P4X.js} +1 -1
- package/storybook-static/assets/{Checkbox-DXDBhCOJ.js → Checkbox-xrie0yDX.js} +1 -1
- package/storybook-static/assets/{Checkbox.stories-BdYI4nAD.js → Checkbox.stories-D-NYqhCG.js} +1 -1
- package/storybook-static/assets/{ChromaGrid.stories-DWa4kR3d.js → ChromaGrid.stories-yYkbcq2a.js} +1 -1
- package/storybook-static/assets/{CircularGallery.stories-DtM7FALz.js → CircularGallery.stories-Ci3GTUgX.js} +1 -1
- package/storybook-static/assets/{CircularText.stories-BaJvxGQF.js → CircularText.stories-7QMPmTLn.js} +1 -1
- package/storybook-static/assets/{ClickSpark.stories--IchxFvN.js → ClickSpark.stories-Dz9M-gEC.js} +1 -1
- package/storybook-static/assets/{ColorBends.stories-0cTr18l9.js → ColorBends.stories-Dfa0YMsf.js} +1 -1
- package/storybook-static/assets/{CountUp.stories-Cf4NC-XR.js → CountUp.stories-DrdYM8-J.js} +1 -1
- package/storybook-static/assets/{Counter.stories-CyhbcvKm.js → Counter.stories-3m6ldyes.js} +1 -1
- package/storybook-static/assets/{Crosshair.stories-ZZ5g9eO6.js → Crosshair.stories-DfRqBfZC.js} +1 -1
- package/storybook-static/assets/{Cubes.stories-CrYhlnje.js → Cubes.stories-D1sZRgvG.js} +1 -1
- package/storybook-static/assets/{CurvedLoop.stories-DyK7Wlt6.js → CurvedLoop.stories-D6jowEDF.js} +1 -1
- package/storybook-static/assets/{DarkVeil.stories-BEf6V85c.js → DarkVeil.stories-DLCrll-I.js} +1 -1
- package/storybook-static/assets/{DateInput-8onWa3KI.js → DateInput-D4MHyeLk.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-BUDpdFa5.js → DateInput.stories-BRfVBcf6.js} +1 -1
- package/storybook-static/assets/{DecayCard.stories-DG0lwrmk.js → DecayCard.stories-DX1ak6pd.js} +1 -1
- package/storybook-static/assets/{DecryptedText.stories-BAy5in1k.js → DecryptedText.stories-BcCQ2Tby.js} +1 -1
- package/storybook-static/assets/{Dither.stories-B0Asjgfz.js → Dither.stories-BPqBpmFI.js} +1 -1
- package/storybook-static/assets/{Dock.stories-BrZSOCw5.js → Dock.stories-CKD_TOGP.js} +1 -1
- package/storybook-static/assets/{EditFAB.stories-Cur6BXdD.js → EditFAB.stories-DGVMpMOL.js} +1 -1
- package/storybook-static/assets/{EvilEye.stories-C6fVeJGL.js → EvilEye.stories-DNoB6FG0.js} +1 -1
- package/storybook-static/assets/{FadeContent.stories-Ckl198gp.js → FadeContent.stories-C8ppDaXi.js} +1 -1
- package/storybook-static/assets/{FaultyTerminal.stories-CRQCWCv-.js → FaultyTerminal.stories-Y8ME_yze.js} +1 -1
- package/storybook-static/assets/{Fbo-DIZ3Y1HH.js → Fbo-Bkb1mqiu.js} +1 -1
- package/storybook-static/assets/{FloatingLines.stories-BqgEOEZS.js → FloatingLines.stories-ZByyesqH.js} +1 -1
- package/storybook-static/assets/{FlowingMenu.stories-BnPI8poB.js → FlowingMenu.stories-CTWLtqhL.js} +1 -1
- package/storybook-static/assets/{FluidGlass.stories-CHAlMw3S.js → FluidGlass.stories--PsLBBhn.js} +1 -1
- package/storybook-static/assets/{Folder.stories-Dk5JAIQD.js → Folder.stories-JNXotEML.js} +1 -1
- package/storybook-static/assets/{FuzzyText.stories-BtDnau8f.js → FuzzyText.stories-o6wySpRq.js} +1 -1
- package/storybook-static/assets/{Galaxy.stories-BzhW3GF9.js → Galaxy.stories-DTZantrp.js} +1 -1
- package/storybook-static/assets/{GhostCursor.stories-DieHFjxw.js → GhostCursor.stories-DXF-m9YM.js} +1 -1
- package/storybook-static/assets/{GlareHover.stories-BHoXBn9o.js → GlareHover.stories-Bb4_dcLV.js} +1 -1
- package/storybook-static/assets/{GlassSurface.stories-DREe1ppH.js → GlassSurface.stories-yZ4K521K.js} +1 -1
- package/storybook-static/assets/{GlitchText.stories-ByEeawKD.js → GlitchText.stories-B4Eqkyri.js} +1 -1
- package/storybook-static/assets/{GooeyNav.stories-BwwWfgQg.js → GooeyNav.stories-CqUOrJR-.js} +1 -1
- package/storybook-static/assets/{GradientBlinds.stories-ZaBq37aP.js → GradientBlinds.stories-DZ6bTCGp.js} +1 -1
- package/storybook-static/assets/{GradientText.stories-OlD8JIJh.js → GradientText.stories-DyDht-TI.js} +1 -1
- package/storybook-static/assets/{Grainient.stories-CfHG2dG3.js → Grainient.stories-C1PtR90_.js} +1 -1
- package/storybook-static/assets/{GridMotion.stories-BsWVs4IR.js → GridMotion.stories-BRbD6MZr.js} +1 -1
- package/storybook-static/assets/{HabitTimeOfDayChart.stories-DfBLc8St.js → HabitTimeOfDayChart.stories-D3gqeKpl.js} +1 -1
- package/storybook-static/assets/{ImageSlideshow.stories-Cpb9fisd.js → ImageSlideshow.stories-BileVQYy.js} +1 -1
- package/storybook-static/assets/{Iridescence.stories-Ch3ilnYv.js → Iridescence.stories-BIhFVHOn.js} +1 -1
- package/storybook-static/assets/{LaserFlow.stories-DenbpERy.js → LaserFlow.stories-BSnwH5Mv.js} +1 -1
- package/storybook-static/assets/{LetterGlitch.stories-D1DfeFIa.js → LetterGlitch.stories-CfGaNSmi.js} +1 -1
- package/storybook-static/assets/{LightPillar.stories-CVxcYtjt.js → LightPillar.stories-CNtpoF6N.js} +1 -1
- package/storybook-static/assets/{LightRays.stories-F5idlq2b.js → LightRays.stories-DRKVWqXb.js} +1 -1
- package/storybook-static/assets/{Lightning.stories-Diu1zWyT.js → Lightning.stories-DJOW6kK7.js} +1 -1
- package/storybook-static/assets/{LineWaves.stories-CmEm2I-A.js → LineWaves.stories-17nqJpH2.js} +1 -1
- package/storybook-static/assets/{LiquidChrome.stories-CHP_FcPv.js → LiquidChrome.stories-CgmsyPLg.js} +1 -1
- package/storybook-static/assets/{LiquidEther.stories-Iraa-nLM.js → LiquidEther.stories-CKvaP6zm.js} +1 -1
- package/storybook-static/assets/{LoadingSpinner-DlrNT1AA.js → LoadingSpinner-LXRJXAO4.js} +1 -1
- package/storybook-static/assets/{LoadingSpinner.stories-CnE24Tsx.js → LoadingSpinner.stories-C0tbgfV3.js} +1 -1
- package/storybook-static/assets/{MagicRings.stories-BqJypRLP.js → MagicRings.stories-qzHi78-J.js} +1 -1
- package/storybook-static/assets/{Magnet.stories-DL0Go3qR.js → Magnet.stories-QWTKtI1e.js} +1 -1
- package/storybook-static/assets/{MagnetLines.stories-CxpAiInh.js → MagnetLines.stories-BOaR4PZi.js} +1 -1
- package/storybook-static/assets/{Masonry.stories-flII8LRK.js → Masonry.stories-DLz9dA8U.js} +1 -1
- package/storybook-static/assets/{MetaBalls.stories-Bs_-0CGV.js → MetaBalls.stories-DcleGPI8.js} +1 -1
- package/storybook-static/assets/{MetallicPaint.stories-DiyJoRNq.js → MetallicPaint.stories-Dqit7nFj.js} +1 -1
- package/storybook-static/assets/{MoodChart.stories-CJ2A0E0j.js → MoodChart.stories-1otFXWFu.js} +1 -1
- package/storybook-static/assets/{MotionConfigContext-Dyabqz-b.js → MotionConfigContext-HXxMOMJo.js} +1 -1
- package/storybook-static/assets/{Navbar.stories-B--ABN9C.js → Navbar.stories-BPE4RMdc.js} +1 -1
- package/storybook-static/assets/{Noise.stories-BpKTpxeE.js → Noise.stories-BktPkK5a.js} +1 -1
- package/storybook-static/assets/{NumberStepper-EhG-KGNo.js → NumberStepper-D1to6bpi.js} +1 -1
- package/storybook-static/assets/{NumberStepper.stories-Ba1aWk0g.js → NumberStepper.stories-WnrisOam.js} +1 -1
- package/storybook-static/assets/{Orb.stories-D8od8KSg.js → Orb.stories-BtZmx5Sy.js} +1 -1
- package/storybook-static/assets/{OrbitImages.stories-Dxj-5r4i.js → OrbitImages.stories-DSTSVc16.js} +1 -1
- package/storybook-static/assets/{PieChart.stories-DWw4EGwt.js → PieChart.stories-L1NRhd_j.js} +1 -1
- package/storybook-static/assets/{PixelBlast.stories-C3u9ldzB.js → PixelBlast.stories-CfT09XYZ.js} +1 -1
- package/storybook-static/assets/{PixelCard.stories-BtQ8LfFf.js → PixelCard.stories-B2LTanjI.js} +1 -1
- package/storybook-static/assets/{PixelSnow.stories-KpmT5jBn.js → PixelSnow.stories-Kg0VE4Bc.js} +1 -1
- package/storybook-static/assets/{PixelTransition.stories-CJs0eV-2.js → PixelTransition.stories-CeanWE2-.js} +1 -1
- package/storybook-static/assets/{Plasma.stories-CivG0ZTB.js → Plasma.stories-DujATB5Q.js} +1 -1
- package/storybook-static/assets/{Prism.stories--tExtMti.js → Prism.stories-Dxke5JPk.js} +1 -1
- package/storybook-static/assets/{PrismaticBurst.stories-BEHRmqtH.js → PrismaticBurst.stories-xc5NSeNp.js} +1 -1
- package/storybook-static/assets/{ProfileCard.stories-Bfv1Qk_A.js → ProfileCard.stories-Cnb3pxki.js} +1 -1
- package/storybook-static/assets/{QuantifiableHabitsChart.stories-WPetwjBc.js → QuantifiableHabitsChart.stories-BMxWoQO4.js} +1 -1
- package/storybook-static/assets/{Radar.stories-CWQNMWx2.js → Radar.stories-CrJcMxjq.js} +1 -1
- package/storybook-static/assets/RecurrencePicker-Bjafom-j.css +1 -0
- package/storybook-static/assets/RecurrencePicker.stories-vkallG9D.js +19 -0
- package/storybook-static/assets/{Ribbons.stories-B3X4I9Cz.js → Ribbons.stories-LT5RgvPo.js} +1 -1
- package/storybook-static/assets/{RippleGrid.stories-O3VVcQWl.js → RippleGrid.stories-Bwsl-Ueq.js} +1 -1
- package/storybook-static/assets/{RotatingText.stories-Cs-vTbFZ.js → RotatingText.stories-CNDJn3v6.js} +1 -1
- package/storybook-static/assets/{ScrollFloat.stories-BMoNuRtU.js → ScrollFloat.stories-B0qUJggd.js} +1 -1
- package/storybook-static/assets/{ScrollReveal.stories-C5dVXxt1.js → ScrollReveal.stories-BBVRW0fh.js} +1 -1
- package/storybook-static/assets/{ScrollVelocity.stories-CJKSvAY4.js → ScrollVelocity.stories-DfKnOsGa.js} +1 -1
- package/storybook-static/assets/{SearchBar.stories-Dtm9l67y.js → SearchBar.stories-Coshf_t6.js} +1 -1
- package/storybook-static/assets/{SearchableDropdown-Dqzi4LKk.js → SearchableDropdown-CC1-QlKh.js} +1 -1
- package/storybook-static/assets/{SearchableDropdown.stories-BG3ESCwq.js → SearchableDropdown.stories-DydVUjWf.js} +1 -1
- package/storybook-static/assets/{SelectInput-BUDt34Ej.js → SelectInput-BqVWIQmb.js} +1 -1
- package/storybook-static/assets/{SelectInput.stories-Dxe4mL9o.js → SelectInput.stories-I0azAt7k.js} +1 -1
- package/storybook-static/assets/{ShapeBlur.stories-C2sk-BXL.js → ShapeBlur.stories-BWBp8nEd.js} +1 -1
- package/storybook-static/assets/{ShapeGrid.stories-ihKrWukc.js → ShapeGrid.stories-DJmnW7fN.js} +1 -1
- package/storybook-static/assets/{ShinyText.stories-DwNgYe9N.js → ShinyText.stories-7vHIqa03.js} +1 -1
- package/storybook-static/assets/{Silk.stories-CzFSFGhP.js → Silk.stories-CXiaINFD.js} +1 -1
- package/storybook-static/assets/{SleepChart.stories-CZufs6Gb.js → SleepChart.stories-BmAtNTJP.js} +1 -1
- package/storybook-static/assets/{Slider-BRAq3fxE.js → Slider-BmG0iCoC.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CK522MN_.js → Slider.stories-DZciYzwU.js} +1 -1
- package/storybook-static/assets/{SoftAurora.stories-DqOpOzFw.js → SoftAurora.stories-BubrO6U4.js} +1 -1
- package/storybook-static/assets/{SoundDemo.stories-BkFbK-1Y.js → SoundDemo.stories-CDXr3mFW.js} +1 -1
- package/storybook-static/assets/{SplashCursor.stories-ClGNxcw4.js → SplashCursor.stories-DgMm9xv3.js} +1 -1
- package/storybook-static/assets/{SpotlightCard.stories-B-Hpffrl.js → SpotlightCard.stories-ChPn0jeh.js} +1 -1
- package/storybook-static/assets/{Stack.stories-DLN47Bj-.js → Stack.stories-DzzqOEhy.js} +1 -1
- package/storybook-static/assets/{StaggeredMenu.stories-DL6I7cbu.js → StaggeredMenu.stories-BNHc0PM6.js} +1 -1
- package/storybook-static/assets/{StarBorder.stories-BIP0gskB.js → StarBorder.stories-DBGelRYw.js} +1 -1
- package/storybook-static/assets/{SunburstChart.stories-Bb0VKYC3.js → SunburstChart.stories-KPCIjiOk.js} +1 -1
- package/storybook-static/assets/{Table.stories-DeMvjpqQ.js → Table.stories-Bz2NsPvR.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-qZulSRrO.js → Tabs.stories-DH8uIATQ.js} +1 -1
- package/storybook-static/assets/{TargetCursor.stories-4pSN2J9r.js → TargetCursor.stories-BUrQiofc.js} +1 -1
- package/storybook-static/assets/{TextArea-CvRZ3TaY.js → TextArea-DVqzGhY3.js} +1 -1
- package/storybook-static/assets/{TextArea.stories-teCx-H2z.js → TextArea.stories-A0YRdcwk.js} +1 -1
- package/storybook-static/assets/{TextCursor.stories-pry7pdoW.js → TextCursor.stories-B_UinRXa.js} +1 -1
- package/storybook-static/assets/{TextInput-BPdFcHbk.js → TextInput-46C4j_hq.js} +1 -1
- package/storybook-static/assets/{TextInput.stories-B-HTRiwl.js → TextInput.stories-C7ZC_8wE.js} +1 -1
- package/storybook-static/assets/{TextPressure.stories-BdtIOM1Y.js → TextPressure.stories-Wwlb-VgV.js} +1 -1
- package/storybook-static/assets/{TextType.stories-Bq-Vo4qL.js → TextType.stories-DYLMktJi.js} +1 -1
- package/storybook-static/assets/{ThemeSwitcher.stories-SgJg0LCK.js → ThemeSwitcher.stories-8FTV9MJW.js} +1 -1
- package/storybook-static/assets/{Threads.stories-hqtYUEu-.js → Threads.stories-BDwauY1I.js} +1 -1
- package/storybook-static/assets/{TimeInput.stories-CPOqj_Se.js → TimeInput.stories-Bk2lwEyd.js} +1 -1
- package/storybook-static/assets/{Toggle-CAPcFsLF.js → Toggle-BbWuVStR.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-O2_0c-1s.js → Toggle.stories-Bb7-wtRn.js} +1 -1
- package/storybook-static/assets/{ToggleButton-BZOAtsmB.js → ToggleButton-BaLN5DsF.js} +1 -1
- package/storybook-static/assets/{ToggleButton.stories-JG_Pazh7.js → ToggleButton.stories-Cdx8eTPI.js} +1 -1
- package/storybook-static/assets/{TrueFocus.stories-rLnKDbsk.js → TrueFocus.stories-B_pN3J3c.js} +1 -1
- package/storybook-static/assets/{VariableProximity.stories-RaopvofU.js → VariableProximity.stories-BTLVRXWD.js} +1 -1
- package/storybook-static/assets/{Waves.stories-oO9FrJAS.js → Waves.stories-_NtAqm6K.js} +1 -1
- package/storybook-static/assets/{calendar-JsvgBBDH.js → calendar-jGMMZsgE.js} +1 -1
- package/storybook-static/assets/{chart-column-mrC32qXf.js → chart-column-jT4jlZWv.js} +1 -1
- package/storybook-static/assets/{check-CvrIUYEl.js → check-D_NpTUYB.js} +1 -1
- package/storybook-static/assets/{chevron-down-BUZZ9BTx.js → chevron-down-C40D1TRM.js} +1 -1
- package/storybook-static/assets/{chevron-right-SVhPWVWz.js → chevron-right-pJjQoHt-.js} +1 -1
- package/storybook-static/assets/client-BAyDOFGI.js +1 -0
- package/storybook-static/assets/{createLucideIcon-D1rlWUhC.js → createLucideIcon-DhNY7W9i.js} +1 -1
- package/storybook-static/assets/{download-Bmqc20p3.js → download-DDadr76l.js} +1 -1
- package/storybook-static/assets/{folder-BCJqv57N.js → folder-Dt06LOrp.js} +1 -1
- package/storybook-static/assets/{iconBase-Bvu3HEFH.js → iconBase-HFPlWF3A.js} +1 -1
- package/storybook-static/assets/iframe-1P7UMs1C.css +1 -0
- package/storybook-static/assets/{iframe-D7y7FUTK.js → iframe-rPhsLpUF.js} +3 -3
- package/storybook-static/assets/{index-C_G3JJLn.js → index-B9UM6a_o.js} +1 -1
- package/storybook-static/assets/{index-um02zCcj.js → index-Ctb6PtgV.js} +1 -1
- package/storybook-static/assets/{index-BCGRwJ5q.js → index-DVywRwbF.js} +1 -1
- package/storybook-static/assets/{proxy-Ce-uTDDv.js → proxy-uJ8evSzT.js} +1 -1
- package/storybook-static/assets/{react-18-DlLnXErP.js → react-18-CYoR46z3.js} +1 -1
- package/storybook-static/assets/{react-three-fiber.esm-ssg-DJvA.js → react-three-fiber.esm-A61ChP7H.js} +1 -1
- package/storybook-static/assets/{search-BpBodH3r.js → search-CIAI1CyG.js} +1 -1
- package/storybook-static/assets/{settings-D8D67Id0.js → settings-en9EIxHx.js} +1 -1
- package/storybook-static/assets/{sun-BQcJSsaQ.js → sun-D_CSzOJ1.js} +1 -1
- package/storybook-static/assets/{trash-2-D6WRmoL3.js → trash-2-C2s-nRjQ.js} +1 -1
- package/storybook-static/assets/{use-animation-frame-CO9S19qn.js → use-animation-frame-B62vi9Ct.js} +1 -1
- package/storybook-static/assets/{use-in-view-DZc-byXh.js → use-in-view-BHudJAGG.js} +1 -1
- package/storybook-static/assets/{use-motion-value-mO9NrpTN.js → use-motion-value-jBEsDEvG.js} +1 -1
- package/storybook-static/assets/{use-spring-CdsbAGfL.js → use-spring-Bf02nu3H.js} +1 -1
- package/storybook-static/assets/{use-transform-DcYgqXpl.js → use-transform-Cfp6qWZw.js} +1 -1
- package/storybook-static/assets/{useSound-Ape9PZyo.js → useSound-CISJumm6.js} +1 -1
- package/storybook-static/assets/{users-BQ1OQC3n.js → users-Bm-CUW6N.js} +1 -1
- package/storybook-static/assets/{x-Cq6n8SKu.js → x-Bb1g_3HM.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/storybook-2/manager-bundle.js +1 -1
- package/storybook-static/assets/client-7pDjGlit.js +0 -1
- package/storybook-static/assets/iframe-CU5nRRrn.css +0 -1
package/dist/index.js
CHANGED
|
@@ -9,7 +9,8 @@ var dayjs = require('dayjs');
|
|
|
9
9
|
var MobileTimePicker = require('@mui/x-date-pickers/MobileTimePicker');
|
|
10
10
|
var LocalizationProvider = require('@mui/x-date-pickers/LocalizationProvider');
|
|
11
11
|
var AdapterDayjs = require('@mui/x-date-pickers/AdapterDayjs');
|
|
12
|
-
var styles$
|
|
12
|
+
var styles$D = require('@mui/material/styles');
|
|
13
|
+
var rrule = require('rrule');
|
|
13
14
|
var d3 = require('d3');
|
|
14
15
|
|
|
15
16
|
function _interopNamespaceDefault(e) {
|
|
@@ -31,7 +32,7 @@ function _interopNamespaceDefault(e) {
|
|
|
31
32
|
|
|
32
33
|
var d3__namespace = /*#__PURE__*/_interopNamespaceDefault(d3);
|
|
33
34
|
|
|
34
|
-
var styles$
|
|
35
|
+
var styles$C = {"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","icon":"Button-module_icon__JNzlJ","iconLeft":"Button-module_iconLeft__Fpz-y","iconRight":"Button-module_iconRight__kTfjS","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"};
|
|
35
36
|
|
|
36
37
|
const SOUND_PACKS = {
|
|
37
38
|
digital: {
|
|
@@ -597,11 +598,11 @@ const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loadi
|
|
|
597
598
|
const { handlers } = useComponentSound(soundConfig);
|
|
598
599
|
const isIcon = variant === 'icon';
|
|
599
600
|
const buttonClasses = [
|
|
600
|
-
styles$
|
|
601
|
-
styles$
|
|
602
|
-
!isIcon && styles$
|
|
603
|
-
fullWidth && styles$
|
|
604
|
-
loading && styles$
|
|
601
|
+
styles$C.button,
|
|
602
|
+
styles$C[variant],
|
|
603
|
+
!isIcon && styles$C[size],
|
|
604
|
+
fullWidth && styles$C.fullWidth,
|
|
605
|
+
loading && styles$C.loading,
|
|
605
606
|
className
|
|
606
607
|
].filter(Boolean).join(' ');
|
|
607
608
|
const handleClick = (e) => {
|
|
@@ -612,10 +613,10 @@ const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loadi
|
|
|
612
613
|
handlers.onMouseEnter?.();
|
|
613
614
|
onMouseEnter?.(e);
|
|
614
615
|
};
|
|
615
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: isIcon ? undefined : { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : (isIcon ? 0.9 : 0.98) }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: handleClick, onMouseEnter: handleMouseEnter, onFocus: onFocus, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$
|
|
616
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: isIcon ? undefined : { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : (isIcon ? 0.9 : 0.98) }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: handleClick, onMouseEnter: handleMouseEnter, onFocus: onFocus, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$C.spinner }), iconLeft && jsxRuntime.jsx("span", { className: styles$C.iconLeft, children: iconLeft }), children, iconRight && jsxRuntime.jsx("span", { className: styles$C.iconRight, children: iconRight })] }));
|
|
616
617
|
};
|
|
617
618
|
|
|
618
|
-
var styles$
|
|
619
|
+
var styles$B = {"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"};
|
|
619
620
|
|
|
620
621
|
/**
|
|
621
622
|
* Card Component
|
|
@@ -680,28 +681,28 @@ const Card = ({ variant = 'elevated', hoverable = false, clickable = false, padd
|
|
|
680
681
|
onExpandChange?.(newExpanded);
|
|
681
682
|
};
|
|
682
683
|
const cardClasses = [
|
|
683
|
-
styles$
|
|
684
|
-
styles$
|
|
685
|
-
hoverable && styles$
|
|
686
|
-
clickable && styles$
|
|
687
|
-
!padding && styles$
|
|
688
|
-
expandable && styles$
|
|
684
|
+
styles$B.card,
|
|
685
|
+
styles$B[variant],
|
|
686
|
+
hoverable && styles$B.hoverable,
|
|
687
|
+
clickable && styles$B.clickable,
|
|
688
|
+
!padding && styles$B.noPadding,
|
|
689
|
+
expandable && styles$B.expandable,
|
|
689
690
|
className
|
|
690
691
|
].filter(Boolean).join(' ');
|
|
691
692
|
const renderHeader = () => {
|
|
692
693
|
if (header) {
|
|
693
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
694
|
+
return (jsxRuntime.jsxs("div", { className: styles$B.header, children: [jsxRuntime.jsx("div", { className: styles$B.headerContent, children: header }), expandable && (jsxRuntime.jsx("button", { className: styles$B.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$B.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
|
|
694
695
|
}
|
|
695
696
|
if (title || subtitle) {
|
|
696
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
697
|
+
return (jsxRuntime.jsxs("div", { className: styles$B.header, children: [jsxRuntime.jsxs("div", { className: styles$B.headerContent, children: [title && jsxRuntime.jsx("h3", { className: styles$B.title, children: title }), subtitle && jsxRuntime.jsx("p", { className: styles$B.subtitle, children: subtitle })] }), expandable && (jsxRuntime.jsx("button", { className: styles$B.expandButton, onClick: handleToggleExpand, "aria-label": isExpanded ? 'Collapse card' : 'Expand card', children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: styles$B.expandIcon, style: { transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)' }, children: jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) }) }))] }));
|
|
697
698
|
}
|
|
698
699
|
return null;
|
|
699
700
|
};
|
|
700
|
-
const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$
|
|
701
|
+
const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$B.imageContainer, children: jsxRuntime.jsx("img", { src: image, alt: imageAlt, className: styles$B.image }) })), renderHeader(), jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: (!expandable || isExpanded) && (jsxRuntime.jsxs(framerMotion.motion.div, { initial: expandable ? { height: 0, opacity: 0 } : undefined, animate: expandable ? { height: 'auto', opacity: 1 } : undefined, exit: expandable ? { height: 0, opacity: 0 } : undefined, transition: { duration: 0.3, ease: "easeInOut" }, className: styles$B.expandableContent, children: [children && (jsxRuntime.jsx("div", { className: padding ? styles$B.body : undefined, children: children })), footer && jsxRuntime.jsx("div", { className: styles$B.footer, children: footer })] }, "content")) })] }));
|
|
701
702
|
return (jsxRuntime.jsx(framerMotion.motion.div, { className: cardClasses, onClick: clickable ? onClick : undefined, whileHover: hoverable ? { y: -4 } : undefined, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: cardContent }));
|
|
702
703
|
};
|
|
703
704
|
|
|
704
|
-
var styles$
|
|
705
|
+
var styles$A = {"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"};
|
|
705
706
|
|
|
706
707
|
/**
|
|
707
708
|
* EmptyState Component
|
|
@@ -738,11 +739,11 @@ var styles$z = {"wrapper":"EmptyState-module_wrapper__h3Y2E","compact":"EmptySta
|
|
|
738
739
|
* @returns {JSX.Element} The rendered EmptyState component
|
|
739
740
|
*/
|
|
740
741
|
const EmptyState = ({ icon, title, message, action, size = 'default', }) => {
|
|
741
|
-
const wrapperClass = [styles$
|
|
742
|
-
return (jsxRuntime.jsxs("div", { className: wrapperClass, children: [icon && jsxRuntime.jsx("div", { className: styles$
|
|
742
|
+
const wrapperClass = [styles$A.wrapper, styles$A[size]].filter(Boolean).join(' ');
|
|
743
|
+
return (jsxRuntime.jsxs("div", { className: wrapperClass, children: [icon && jsxRuntime.jsx("div", { className: styles$A.icon, children: icon }), title && jsxRuntime.jsx("h3", { className: styles$A.title, children: title }), jsxRuntime.jsx("p", { className: styles$A.message, children: message }), action && jsxRuntime.jsx("div", { className: styles$A.action, children: action })] }));
|
|
743
744
|
};
|
|
744
745
|
|
|
745
|
-
var styles$
|
|
746
|
+
var styles$z = {"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"};
|
|
746
747
|
|
|
747
748
|
const MOBILE_BREAKPOINT = '(max-width: 640px)';
|
|
748
749
|
const useIsMobile = () => {
|
|
@@ -779,14 +780,14 @@ const Modal = ({ open, title, onClose, children, size = 'default', actions, padd
|
|
|
779
780
|
return null;
|
|
780
781
|
const isSheet = mobileVariant === 'sheet' && isMobile;
|
|
781
782
|
const isDraggable = isSheet && draggable;
|
|
782
|
-
const backdropClass = [styles$
|
|
783
|
+
const backdropClass = [styles$z.backdrop, isSheet && styles$z.backdropSheet]
|
|
783
784
|
.filter(Boolean)
|
|
784
785
|
.join(' ');
|
|
785
786
|
const dialogClass = [
|
|
786
|
-
styles$
|
|
787
|
-
size === 'compact' && styles$
|
|
788
|
-
size === 'wide' && styles$
|
|
789
|
-
isSheet && styles$
|
|
787
|
+
styles$z.dialog,
|
|
788
|
+
size === 'compact' && styles$z.dialogCompact,
|
|
789
|
+
size === 'wide' && styles$z.dialogWide,
|
|
790
|
+
isSheet && styles$z.dialogSheet,
|
|
790
791
|
]
|
|
791
792
|
.filter(Boolean)
|
|
792
793
|
.join(' ');
|
|
@@ -802,16 +803,16 @@ const Modal = ({ open, title, onClose, children, size = 'default', actions, padd
|
|
|
802
803
|
: { 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) => {
|
|
803
804
|
if (info.offset.y > 80)
|
|
804
805
|
onClose();
|
|
805
|
-
}, children: [isSheet && jsxRuntime.jsx("div", { className: styles$
|
|
806
|
+
}, children: [isSheet && jsxRuntime.jsx("div", { className: styles$z.grabBar }), jsxRuntime.jsxs("div", { ref: headerRef, className: styles$z.header, onPointerDown: (e) => {
|
|
806
807
|
if (!isDraggable)
|
|
807
808
|
return;
|
|
808
809
|
if (e.target.closest('button'))
|
|
809
810
|
return;
|
|
810
811
|
dragControls.start(e);
|
|
811
|
-
}, children: [jsxRuntime.jsx("span", { className: styles$
|
|
812
|
+
}, children: [jsxRuntime.jsx("span", { className: styles$z.title, children: title }), actions && jsxRuntime.jsx("div", { className: styles$z.headerActions, children: actions }), jsxRuntime.jsx("button", { className: styles$z.closeButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: jsxRuntime.jsx(lucideReact.X, { size: 16 }) })] }), jsxRuntime.jsx("div", { className: padding ? styles$z.body : styles$z.bodyFlush, children: children })] }) })) }), document.body);
|
|
812
813
|
};
|
|
813
814
|
|
|
814
|
-
var styles$
|
|
815
|
+
var styles$y = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
|
|
815
816
|
|
|
816
817
|
/**
|
|
817
818
|
* Checkbox component - Modern interactive checkbox with animations
|
|
@@ -856,13 +857,13 @@ const Checkbox = ({ checked, onChange, label, disabled = false, indeterminate =
|
|
|
856
857
|
checkboxRef.current.indeterminate = indeterminate;
|
|
857
858
|
}
|
|
858
859
|
}, [indeterminate]);
|
|
859
|
-
return (jsxRuntime.jsxs("label", { className: styles$
|
|
860
|
+
return (jsxRuntime.jsxs("label", { className: styles$y.checkboxLabel, children: [jsxRuntime.jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => {
|
|
860
861
|
const isChecked = e.target.checked;
|
|
861
862
|
onChange(isChecked);
|
|
862
863
|
if (soundConfig?.onClick !== false) {
|
|
863
864
|
playSound('toggle');
|
|
864
865
|
}
|
|
865
|
-
}, className: styles$
|
|
866
|
+
}, className: styles$y.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsxRuntime.jsx("span", { className: styles$y.checkboxText, children: label })] }));
|
|
866
867
|
};
|
|
867
868
|
|
|
868
869
|
const formatDateToEuropean = (date) => {
|
|
@@ -893,7 +894,7 @@ const parseEuropeanDate = (dateString) => {
|
|
|
893
894
|
return '';
|
|
894
895
|
};
|
|
895
896
|
|
|
896
|
-
var styles$
|
|
897
|
+
var styles$x = {"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","nativeDateInput":"DateInput-module_nativeDateInput__tbi68","error":"DateInput-module_error__ieuPO","success":"DateInput-module_success__rPA93","loading":"DateInput-module_loading__1DAmD"};
|
|
897
898
|
|
|
898
899
|
/**
|
|
899
900
|
* DateInput component - European format date picker with manual input support
|
|
@@ -953,21 +954,21 @@ function DateInput({ label, value, onChange, placeholder = "25/12/2024", onFocus
|
|
|
953
954
|
}
|
|
954
955
|
};
|
|
955
956
|
const getClassName = () => {
|
|
956
|
-
const classes = [styles$
|
|
957
|
+
const classes = [styles$x.dateInput];
|
|
957
958
|
if (error)
|
|
958
|
-
classes.push(styles$
|
|
959
|
+
classes.push(styles$x.error);
|
|
959
960
|
if (success)
|
|
960
|
-
classes.push(styles$
|
|
961
|
+
classes.push(styles$x.success);
|
|
961
962
|
if (loading)
|
|
962
|
-
classes.push(styles$
|
|
963
|
+
classes.push(styles$x.loading);
|
|
963
964
|
return classes.join(' ');
|
|
964
965
|
};
|
|
965
966
|
// Current ISO value for the native date input (or '' if empty/unparseable)
|
|
966
967
|
const isoValue = value.includes('-') ? value : (parseEuropeanDate(value) || '');
|
|
967
|
-
return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsx("label", { className: styles$
|
|
968
|
+
return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsx("label", { className: styles$x.label, children: label }), jsxRuntime.jsxs("div", { className: styles$x.inputWrapper, children: [jsxRuntime.jsx("input", { type: "text", value: value.includes('-') ? formatDateToEuropean(value) : value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$x.textInput, disabled: disabled || loading, ...handlers }), jsxRuntime.jsxs("span", { className: styles$x.calendarButton, "aria-hidden": "true", children: [jsxRuntime.jsx(lucideReact.Calendar, {}), jsxRuntime.jsx("input", { type: "date", value: isoValue, onChange: handleCalendarChange, className: styles$x.nativeDateInput, title: "Select date from calendar", "aria-label": label ? `${label} calendar picker` : 'Calendar picker', disabled: disabled || loading })] })] })] }));
|
|
968
969
|
}
|
|
969
970
|
|
|
970
|
-
var styles$
|
|
971
|
+
var styles$w = {"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"};
|
|
971
972
|
|
|
972
973
|
/**
|
|
973
974
|
* SearchableDropdown component - Modern filterable dropdown with animations
|
|
@@ -1072,23 +1073,23 @@ function SearchableDropdown({ label, value, onChange, options, placeholder = "Se
|
|
|
1072
1073
|
}
|
|
1073
1074
|
};
|
|
1074
1075
|
const getTriggerClassName = () => {
|
|
1075
|
-
const classes = [styles$
|
|
1076
|
+
const classes = [styles$w.dropdownTrigger];
|
|
1076
1077
|
if (isOpen)
|
|
1077
|
-
classes.push(styles$
|
|
1078
|
+
classes.push(styles$w.open);
|
|
1078
1079
|
if (loading)
|
|
1079
|
-
classes.push(styles$
|
|
1080
|
+
classes.push(styles$w.loading);
|
|
1080
1081
|
if (error)
|
|
1081
|
-
classes.push(styles$
|
|
1082
|
+
classes.push(styles$w.error);
|
|
1082
1083
|
return classes.join(' ');
|
|
1083
1084
|
};
|
|
1084
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
1085
|
+
return (jsxRuntime.jsxs("div", { className: styles$w.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsxRuntime.jsx("label", { children: label }), jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsxRuntime.jsx("span", { className: `${styles$w.dropdownValue} ${!displayValue ? styles$w.placeholder : ''}`, children: displayValue || placeholder }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$w.dropdownArrow })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isOpen && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$w.dropdownMenu, initial: { opacity: 0, y: -10, scale: 0.95 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: -10, scale: 0.95 }, transition: { duration: 0.2, ease: "easeOut" }, children: [jsxRuntime.jsxs("div", { className: styles$w.dropdownSearch, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$w.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", className: styles$w.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxRuntime.jsxs("div", { className: styles$w.dropdownOptions, children: [allOptions.map((opt, index) => {
|
|
1085
1086
|
const isSelected = value === opt.value;
|
|
1086
1087
|
const isHighlighted = highlightedIndex === index;
|
|
1087
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: `${styles$
|
|
1088
|
-
}), allOptions.length === 0 && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1088
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: `${styles$w.dropdownOption} ${isSelected ? styles$w.selected : ''} ${isHighlighted ? styles$w.highlighted : ''}`, onClick: () => handleSelect(opt.value), onMouseEnter: () => setHighlightedIndex(index), initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.02 }, whileTap: { scale: 0.98 }, style: { willChange: 'transform' }, children: [jsxRuntime.jsx("span", { children: opt.label }), isSelected && jsxRuntime.jsx(lucideReact.Check, { className: styles$w.checkIcon })] }, `${opt.value}-${index}`));
|
|
1089
|
+
}), allOptions.length === 0 && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$w.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
|
|
1089
1090
|
}
|
|
1090
1091
|
|
|
1091
|
-
var styles$
|
|
1092
|
+
var styles$v = {"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"};
|
|
1092
1093
|
|
|
1093
1094
|
/**
|
|
1094
1095
|
* SelectInput component - Styled dropdown selector with flexible option format
|
|
@@ -1126,26 +1127,26 @@ var styles$u = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWra
|
|
|
1126
1127
|
function SelectInput({ label, value, onChange, options, placeholder = "Select...", disabled = false, error = false, success = false, loading = false, required = false, soundConfig, className }) {
|
|
1127
1128
|
const { handlers, playSound } = useComponentSound(soundConfig);
|
|
1128
1129
|
const getClassName = () => {
|
|
1129
|
-
const classes = [styles$
|
|
1130
|
+
const classes = [styles$v.selectInput];
|
|
1130
1131
|
if (error)
|
|
1131
|
-
classes.push(styles$
|
|
1132
|
+
classes.push(styles$v.error);
|
|
1132
1133
|
if (success)
|
|
1133
|
-
classes.push(styles$
|
|
1134
|
+
classes.push(styles$v.success);
|
|
1134
1135
|
if (loading)
|
|
1135
|
-
classes.push(styles$
|
|
1136
|
+
classes.push(styles$v.loading);
|
|
1136
1137
|
return classes.join(' ');
|
|
1137
1138
|
};
|
|
1138
|
-
return (jsxRuntime.jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsxs("label", { children: [label, required && jsxRuntime.jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxRuntime.jsxs("div", { className: styles$
|
|
1139
|
+
return (jsxRuntime.jsxs("div", { className: `${getClassName()}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsxs("label", { children: [label, required && jsxRuntime.jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxRuntime.jsxs("div", { className: styles$v.selectWrapper, children: [jsxRuntime.jsxs("select", { value: value, onChange: e => {
|
|
1139
1140
|
playSound('click');
|
|
1140
1141
|
onChange(e.target.value);
|
|
1141
1142
|
}, disabled: disabled || loading, required: required, ...handlers, children: [jsxRuntime.jsx("option", { value: "", children: placeholder }), options.map(opt => {
|
|
1142
1143
|
const optionValue = typeof opt === 'string' ? opt : opt.value;
|
|
1143
1144
|
const optionLabel = typeof opt === 'string' ? opt : opt.label;
|
|
1144
1145
|
return (jsxRuntime.jsx("option", { value: optionValue, children: optionLabel }, optionValue));
|
|
1145
|
-
})] }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$
|
|
1146
|
+
})] }), jsxRuntime.jsx(lucideReact.ChevronDown, { className: styles$v.selectIcon })] })] }));
|
|
1146
1147
|
}
|
|
1147
1148
|
|
|
1148
|
-
var styles$
|
|
1149
|
+
var styles$u = {"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-"};
|
|
1149
1150
|
|
|
1150
1151
|
/**
|
|
1151
1152
|
* TextArea component - Multi-line text input with character counting
|
|
@@ -1180,38 +1181,38 @@ var styles$t = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","
|
|
|
1180
1181
|
function TextArea({ label, value, onChange, rows = 5, placeholder = "", required = false, maxLength, disabled = false, error = false, success = false, loading = false, focusMode = false, compact = false, className = "" }) {
|
|
1181
1182
|
const textareaId = `textarea-${Math.random().toString(36).substr(2, 9)}`;
|
|
1182
1183
|
const getContainerClassName = () => {
|
|
1183
|
-
const classes = [styles$
|
|
1184
|
+
const classes = [styles$u.textareaContainer];
|
|
1184
1185
|
if (error)
|
|
1185
|
-
classes.push(styles$
|
|
1186
|
+
classes.push(styles$u.error);
|
|
1186
1187
|
if (success)
|
|
1187
|
-
classes.push(styles$
|
|
1188
|
+
classes.push(styles$u.success);
|
|
1188
1189
|
if (loading)
|
|
1189
|
-
classes.push(styles$
|
|
1190
|
+
classes.push(styles$u.loading);
|
|
1190
1191
|
if (focusMode)
|
|
1191
|
-
classes.push(styles$
|
|
1192
|
+
classes.push(styles$u.focusMode);
|
|
1192
1193
|
if (compact)
|
|
1193
|
-
classes.push(styles$
|
|
1194
|
+
classes.push(styles$u.compact);
|
|
1194
1195
|
if (className)
|
|
1195
1196
|
classes.push(className);
|
|
1196
1197
|
return classes.join(' ');
|
|
1197
1198
|
};
|
|
1198
1199
|
const getCharCountClassName = () => {
|
|
1199
1200
|
if (!maxLength)
|
|
1200
|
-
return styles$
|
|
1201
|
-
const classes = [styles$
|
|
1201
|
+
return styles$u.characterCount;
|
|
1202
|
+
const classes = [styles$u.characterCount];
|
|
1202
1203
|
const percentage = (value.length / maxLength) * 100;
|
|
1203
1204
|
if (percentage >= 100) {
|
|
1204
|
-
classes.push(styles$
|
|
1205
|
+
classes.push(styles$u.atLimit);
|
|
1205
1206
|
}
|
|
1206
1207
|
else if (percentage >= 80) {
|
|
1207
|
-
classes.push(styles$
|
|
1208
|
+
classes.push(styles$u.nearLimit);
|
|
1208
1209
|
}
|
|
1209
1210
|
return classes.join(' ');
|
|
1210
1211
|
};
|
|
1211
|
-
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { htmlFor: textareaId, className: styles$
|
|
1212
|
+
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { htmlFor: textareaId, className: styles$u.textareaLabel, children: [label, required && jsxRuntime.jsx("span", { className: styles$u.requiredIndicator, children: "*" })] })), jsxRuntime.jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, maxLength: maxLength, className: styles$u.textareaInput, "aria-required": required, disabled: disabled || loading, "aria-invalid": error }), maxLength && (jsxRuntime.jsxs("div", { className: getCharCountClassName(), children: [jsxRuntime.jsx("span", { children: value.length }), jsxRuntime.jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsxRuntime.jsx("span", { children: maxLength })] }))] }));
|
|
1212
1213
|
}
|
|
1213
1214
|
|
|
1214
|
-
var styles$
|
|
1215
|
+
var styles$t = {"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"};
|
|
1215
1216
|
|
|
1216
1217
|
/**
|
|
1217
1218
|
* TextInput component - A versatile text input field with label and error handling
|
|
@@ -1248,21 +1249,21 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
|
|
|
1248
1249
|
const { handlers, playSound } = useComponentSound(soundConfig);
|
|
1249
1250
|
const prevValueRef = React.useRef(value);
|
|
1250
1251
|
const getContainerClassName = () => {
|
|
1251
|
-
const classes = [styles$
|
|
1252
|
+
const classes = [styles$t.textInput];
|
|
1252
1253
|
if (success)
|
|
1253
|
-
classes.push(styles$
|
|
1254
|
+
classes.push(styles$t.success);
|
|
1254
1255
|
if (loading)
|
|
1255
|
-
classes.push(styles$
|
|
1256
|
+
classes.push(styles$t.loading);
|
|
1256
1257
|
if (icon)
|
|
1257
|
-
classes.push(styles$
|
|
1258
|
+
classes.push(styles$t.withIcon);
|
|
1258
1259
|
if (actionButton)
|
|
1259
|
-
classes.push(styles$
|
|
1260
|
+
classes.push(styles$t.withAction);
|
|
1260
1261
|
return classes.join(' ');
|
|
1261
1262
|
};
|
|
1262
1263
|
React.useEffect(() => {
|
|
1263
1264
|
prevValueRef.current = value;
|
|
1264
1265
|
}, [value]);
|
|
1265
|
-
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { className: styles$
|
|
1266
|
+
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { className: styles$t.required, children: "*" })] }), jsxRuntime.jsxs("div", { style: { position: 'relative' }, children: [icon && jsxRuntime.jsx("div", { className: styles$t.inputIcon, children: icon }), jsxRuntime.jsx("input", { id: inputId, type: type, value: value, onChange: (e) => {
|
|
1266
1267
|
const newValue = e.target.value;
|
|
1267
1268
|
const oldValue = prevValueRef.current;
|
|
1268
1269
|
onChange(newValue);
|
|
@@ -1278,13 +1279,13 @@ function TextInput({ label, value, onChange, type = "text", onBlur, placeholder,
|
|
|
1278
1279
|
if (error && soundConfig?.onError) {
|
|
1279
1280
|
playSound(typeof soundConfig.onError === 'string' ? soundConfig.onError : 'error');
|
|
1280
1281
|
}
|
|
1281
|
-
}, onBlur: onBlur, placeholder: placeholder, className: error ? styles$
|
|
1282
|
+
}, onBlur: onBlur, placeholder: placeholder, className: error ? styles$t.inputError : '', "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : undefined, disabled: disabled || loading, maxLength: maxLength, autoComplete: autoComplete }), actionButton && (jsxRuntime.jsx("button", { type: "button", className: styles$t.actionButton, onClick: () => {
|
|
1282
1283
|
handlers.onClick?.();
|
|
1283
1284
|
actionButton.onClick();
|
|
1284
|
-
}, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsxRuntime.jsx("span", { id: `${inputId}-error`, className: styles$
|
|
1285
|
+
}, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsxRuntime.jsx("span", { id: `${inputId}-error`, className: styles$t.errorMessage, children: error }))] }));
|
|
1285
1286
|
}
|
|
1286
1287
|
|
|
1287
|
-
var styles$
|
|
1288
|
+
var styles$s = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
|
|
1288
1289
|
|
|
1289
1290
|
/**
|
|
1290
1291
|
* Toggle Component
|
|
@@ -1345,7 +1346,7 @@ function Toggle(props) {
|
|
|
1345
1346
|
justifyContent: 'center',
|
|
1346
1347
|
...style
|
|
1347
1348
|
};
|
|
1348
|
-
return (jsxRuntime.jsxs("div", { className: `${styles$
|
|
1349
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$s.toggleContainer} ${className || ''}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { ref: leftButtonRef, className: `${styles$s.toggleButton} ${!isOn ? styles$s.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
|
|
1349
1350
|
if (!isOn) {
|
|
1350
1351
|
// Already on left
|
|
1351
1352
|
if (enableCelebration) {
|
|
@@ -1360,7 +1361,7 @@ function Toggle(props) {
|
|
|
1360
1361
|
playSound('toggle');
|
|
1361
1362
|
}
|
|
1362
1363
|
onToggle(false);
|
|
1363
|
-
}, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxRuntime.jsxs(framerMotion.motion.button, { ref: rightButtonRef, className: `${styles$
|
|
1364
|
+
}, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: !isOn ? 1.1 : 1, rotate: !isOn ? [0, -5, 5, 0] : 0 }, transition: { duration: 0.3 }, children: leftIcon }), leftLabel] }), jsxRuntime.jsxs(framerMotion.motion.button, { ref: rightButtonRef, className: `${styles$s.toggleButton} ${isOn ? styles$s.active : ''}`, whileHover: { scale: 1.05 }, whileTap: { scale: 0.95 }, transition: { type: "spring", stiffness: 400, damping: 17 }, onClick: () => {
|
|
1364
1365
|
if (isOn) {
|
|
1365
1366
|
// Already on right
|
|
1366
1367
|
if (enableCelebration) {
|
|
@@ -1378,7 +1379,7 @@ function Toggle(props) {
|
|
|
1378
1379
|
}, onMouseEnter: () => handlers.onMouseEnter?.(), style: buttonStyle, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: { scale: isOn ? 1.1 : 1, rotate: isOn ? [0, 5, -5, 0] : 0 }, transition: { duration: 0.3 }, children: rightIcon }), rightLabel] })] }));
|
|
1379
1380
|
}
|
|
1380
1381
|
|
|
1381
|
-
var styles$
|
|
1382
|
+
var styles$r = {"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","tally":"NumberStepper-module_tally__aO2zq","tallyRow":"NumberStepper-module_tallyRow__wcrtj","tallyButton":"NumberStepper-module_tallyButton__EUTXY","tallyButtonIcon":"NumberStepper-module_tallyButtonIcon__A3fDQ","tallyIcon":"NumberStepper-module_tallyIcon__ynB4C","tallyLabel":"NumberStepper-module_tallyLabel__kjXos","tallyBody":"NumberStepper-module_tallyBody__wDBsU","tallyMarks":"NumberStepper-module_tallyMarks__RU5qJ","tallyGroup":"NumberStepper-module_tallyGroup__0qUNo","tallyHint":"NumberStepper-module_tallyHint__zi-GM","tallyValue":"NumberStepper-module_tallyValue__CFJDk","pulse":"NumberStepper-module_pulse__51oUo"};
|
|
1382
1383
|
|
|
1383
1384
|
/**
|
|
1384
1385
|
* NumberStepper Component
|
|
@@ -1565,33 +1566,33 @@ const NumberStepper = ({ value, onChange, min = -Infinity, max = Infinity, step
|
|
|
1565
1566
|
setDisplayValue(finalValue);
|
|
1566
1567
|
}, [displayValue, min, max, step, onChange]);
|
|
1567
1568
|
const containerClasses = [
|
|
1568
|
-
styles$
|
|
1569
|
-
styles$
|
|
1570
|
-
styles$
|
|
1571
|
-
layout === 'vertical' && styles$
|
|
1572
|
-
disabled && styles$
|
|
1569
|
+
styles$r.container,
|
|
1570
|
+
styles$r[size],
|
|
1571
|
+
styles$r[variant],
|
|
1572
|
+
layout === 'vertical' && styles$r.vertical,
|
|
1573
|
+
disabled && styles$r.disabled,
|
|
1573
1574
|
className
|
|
1574
1575
|
].filter(Boolean).join(' ');
|
|
1575
1576
|
// Merge custom styles with hover states
|
|
1576
1577
|
const [isButtonHovered, setIsButtonHovered] = React.useState(null);
|
|
1577
1578
|
const isDecrementDisabled = disabled || value <= min;
|
|
1578
1579
|
const isIncrementDisabled = disabled || value >= max;
|
|
1579
|
-
const stepperContent = (jsxRuntime.jsxs("div", { className: styles$
|
|
1580
|
+
const stepperContent = (jsxRuntime.jsxs("div", { className: styles$r.stepper, style: customStyles.stepper, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.button, { className: styles$r.button, style: {
|
|
1580
1581
|
...customStyles.button,
|
|
1581
1582
|
...(isButtonHovered === 'decrement' && customStyles.buttonHover)
|
|
1582
|
-
}, onMouseEnter: () => setIsButtonHovered('decrement'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleDecrement, disabled: isDecrementDisabled, whileTap: !isDecrementDisabled ? { scale: 0.9 } : undefined, animate: isDecrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Decrease value", children: customButtons.decrement || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$
|
|
1583
|
+
}, onMouseEnter: () => setIsButtonHovered('decrement'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleDecrement, disabled: isDecrementDisabled, whileTap: !isDecrementDisabled ? { scale: 0.9 } : undefined, animate: isDecrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Decrease value", children: customButtons.decrement || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$r.buttonIcon, style: customStyles.buttonIcon, children: "\u2212" })) : (jsxRuntime.jsx("svg", { className: styles$r.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M15 18L9 12L15 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) }), jsxRuntime.jsx("div", { className: styles$r.valueContainer, style: customStyles.valueContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.div, { initial: { y: isIncrementing ? 10 : isDecrementing ? -10 : 0, opacity: 0 }, animate: { y: 0, opacity: 1 }, exit: { y: isIncrementing ? -10 : isDecrementing ? 10 : 0, opacity: 0 }, transition: { duration: 0.15 }, className: styles$r.valueWrapper, children: jsxRuntime.jsx("input", { type: "text", className: styles$r.value, style: customStyles.value, value: displayValue, onChange: handleInputChange, onBlur: handleInputBlur, disabled: disabled, "aria-label": label || "Number input", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value }) }, value) }) }), jsxRuntime.jsx(framerMotion.motion.button, { className: styles$r.button, style: {
|
|
1583
1584
|
...customStyles.button,
|
|
1584
1585
|
...(isButtonHovered === 'increment' && customStyles.buttonHover)
|
|
1585
|
-
}, onMouseEnter: () => setIsButtonHovered('increment'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleIncrement, disabled: isIncrementDisabled, whileTap: !isIncrementDisabled ? { scale: 0.9 } : undefined, animate: isIncrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Increase value", children: customButtons.increment || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$
|
|
1586
|
+
}, onMouseEnter: () => setIsButtonHovered('increment'), onMouseLeave: () => setIsButtonHovered(null), onClick: handleIncrement, disabled: isIncrementDisabled, whileTap: !isIncrementDisabled ? { scale: 0.9 } : undefined, animate: isIncrementing ? { scale: [1, 1.2, 1] } : undefined, transition: { duration: 0.2 }, "aria-label": "Increase value", children: customButtons.increment || (showPlusMinus ? (jsxRuntime.jsx("span", { className: styles$r.buttonIcon, style: customStyles.buttonIcon, children: "+" })) : (jsxRuntime.jsx("svg", { className: styles$r.buttonIcon, style: customStyles.buttonIcon, viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M9 18L15 12L9 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }))) })] }));
|
|
1586
1587
|
// ── Tally variant: pen-stroke counter with explicit +/- buttons.
|
|
1587
1588
|
if (variant === 'tally') {
|
|
1588
1589
|
return (jsxRuntime.jsx(TallyRow, { value: value, label: label, icon: icon, color: color, disabled: disabled, emptyHint: tallyEmptyHint, className: containerClasses, customStyles: customStyles, onIncrement: handleIncrement, onDecrement: handleDecrement, ariaLabel: label || 'Tally counter', isDecrementDisabled: isDecrementDisabled, isIncrementDisabled: isIncrementDisabled }));
|
|
1589
1590
|
}
|
|
1590
1591
|
// For custom variant with horizontal layout, render differently
|
|
1591
1592
|
if (variant === 'custom' && (label || icon)) {
|
|
1592
|
-
return (jsxRuntime.jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxRuntime.jsxs("div", { className: styles$
|
|
1593
|
+
return (jsxRuntime.jsxs("div", { className: containerClasses, style: { ...customStyles.container, display: 'flex', alignItems: 'center' }, children: [jsxRuntime.jsxs("div", { className: styles$r.header, style: { ...customStyles.header, flex: 1, marginBottom: 0 }, children: [icon && jsxRuntime.jsx("span", { className: styles$r.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$r.label, style: customStyles.label, children: label })] }), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$r.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$r.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$r.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
|
|
1593
1594
|
}
|
|
1594
|
-
return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxRuntime.jsxs("div", { className: styles$
|
|
1595
|
+
return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyles.container, children: [(label || icon) && (jsxRuntime.jsxs("div", { className: styles$r.header, style: customStyles.header, children: [icon && jsxRuntime.jsx("span", { className: styles$r.icon, style: customStyles.icon, children: icon }), label && jsxRuntime.jsx("label", { className: styles$r.label, style: customStyles.label, children: label })] })), stepperContent, !hideLimits && (min !== -Infinity || max !== Infinity) && (jsxRuntime.jsxs("div", { className: styles$r.limits, style: customStyles.limits, children: [jsxRuntime.jsx("span", { className: styles$r.limit, children: min !== -Infinity && `Min: ${min}` }), jsxRuntime.jsx("span", { className: styles$r.limit, children: max !== Infinity && `Max: ${max}` })] }))] }));
|
|
1595
1596
|
};
|
|
1596
1597
|
const TallyMarks = ({ count, color }) => {
|
|
1597
1598
|
const groups = [];
|
|
@@ -1601,14 +1602,14 @@ const TallyMarks = ({ count, color }) => {
|
|
|
1601
1602
|
groups.push(n);
|
|
1602
1603
|
left -= n;
|
|
1603
1604
|
}
|
|
1604
|
-
return (jsxRuntime.jsx("div", { className: styles$
|
|
1605
|
+
return (jsxRuntime.jsx("div", { className: styles$r.tallyMarks, "aria-hidden": "true", children: groups.map((n, i) => (jsxRuntime.jsxs("svg", { className: styles$r.tallyGroup, width: "38", height: "22", viewBox: "0 0 38 22", children: [[0, 1, 2, 3].slice(0, Math.min(4, n)).map((j) => (jsxRuntime.jsx("line", { x1: 4 + j * 6, y1: "2", x2: 4 + j * 6, y2: "20", stroke: color, strokeWidth: "2", strokeLinecap: "round" }, j))), n === 5 && (jsxRuntime.jsx("line", { x1: "1", y1: "18", x2: "27", y2: "4", stroke: color, strokeWidth: "2", strokeLinecap: "round" }))] }, i))) }));
|
|
1605
1606
|
};
|
|
1606
1607
|
const TallyRow = ({ value, label, icon, color, disabled, emptyHint, className, customStyles, onIncrement, onDecrement, ariaLabel, isDecrementDisabled, isIncrementDisabled }) => {
|
|
1607
1608
|
const resolvedColor = color || 'currentColor';
|
|
1608
|
-
return (jsxRuntime.jsxs("div", { "aria-label": ariaLabel, "aria-disabled": disabled || undefined, className: `${className} ${styles$
|
|
1609
|
+
return (jsxRuntime.jsxs("div", { "aria-label": ariaLabel, "aria-disabled": disabled || undefined, className: `${className} ${styles$r.tallyRow}`, style: customStyles.container, children: [icon && (jsxRuntime.jsx("span", { className: styles$r.tallyIcon, style: { color: resolvedColor, ...customStyles.icon }, children: icon })), label && (jsxRuntime.jsx("span", { className: styles$r.tallyLabel, style: customStyles.label, children: label })), jsxRuntime.jsx("div", { className: styles$r.tallyBody, children: value <= 0 ? (jsxRuntime.jsx("span", { className: styles$r.tallyHint, children: emptyHint })) : (jsxRuntime.jsx(TallyMarks, { count: value, color: resolvedColor })) }), jsxRuntime.jsx("button", { type: "button", className: styles$r.tallyButton, onClick: onDecrement, disabled: isDecrementDisabled, "aria-label": `Decrease ${label || 'value'}`, children: jsxRuntime.jsx("span", { className: styles$r.tallyButtonIcon, children: "\u2212" }) }), jsxRuntime.jsx("span", { className: styles$r.tallyValue, style: { color: resolvedColor, ...customStyles.value }, "aria-hidden": "true", children: value }), jsxRuntime.jsx("button", { type: "button", className: styles$r.tallyButton, onClick: onIncrement, disabled: isIncrementDisabled, "aria-label": `Increase ${label || 'value'}`, children: jsxRuntime.jsx("span", { className: styles$r.tallyButtonIcon, children: "+" }) })] }));
|
|
1609
1610
|
};
|
|
1610
1611
|
|
|
1611
|
-
var styles$
|
|
1612
|
+
var styles$q = {"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"};
|
|
1612
1613
|
|
|
1613
1614
|
/**
|
|
1614
1615
|
* ToggleButton Component
|
|
@@ -1647,18 +1648,18 @@ var styles$p = {"button":"ToggleButton-module_button__DTuyY","background":"Toggl
|
|
|
1647
1648
|
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 }) => {
|
|
1648
1649
|
const { handlers, playSound } = useComponentSound(soundConfig);
|
|
1649
1650
|
const buttonClasses = [
|
|
1650
|
-
styles$
|
|
1651
|
-
styles$
|
|
1652
|
-
styles$
|
|
1653
|
-
active && styles$
|
|
1654
|
-
active && styles$
|
|
1655
|
-
disabled && styles$
|
|
1656
|
-
animation !== 'none' && styles$
|
|
1651
|
+
styles$q.button,
|
|
1652
|
+
styles$q[size],
|
|
1653
|
+
styles$q[variant],
|
|
1654
|
+
active && styles$q.active,
|
|
1655
|
+
active && styles$q[`active-${activeColor}`],
|
|
1656
|
+
disabled && styles$q.disabled,
|
|
1657
|
+
animation !== 'none' && styles$q[`animation-${animation}`],
|
|
1657
1658
|
className
|
|
1658
1659
|
].filter(Boolean).join(' ');
|
|
1659
1660
|
const labelClasses = [
|
|
1660
|
-
styles$
|
|
1661
|
-
hideLabelOnMobile && styles$
|
|
1661
|
+
styles$q.label,
|
|
1662
|
+
hideLabelOnMobile && styles$q.hideMobile
|
|
1662
1663
|
].filter(Boolean).join(' ');
|
|
1663
1664
|
const iconVariants = {
|
|
1664
1665
|
scale: {
|
|
@@ -1722,10 +1723,10 @@ const ToggleButton = ({ active, onClick, icon, label, disabled = false, size = '
|
|
|
1722
1723
|
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, style: dynamicStyle, onClick: () => {
|
|
1723
1724
|
playSound('toggle');
|
|
1724
1725
|
onClick();
|
|
1725
|
-
}, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1726
|
+
}, disabled: disabled, whileHover: !disabled ? { scale: 1.05 } : undefined, whileTap: !disabled ? { scale: 0.95 } : undefined, title: tooltip, "aria-pressed": active, "aria-label": label, ...handlers, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$q.background, variants: backgroundVariants, initial: "inactive", animate: active ? "active" : "inactive" }), jsxRuntime.jsxs("div", { className: styles$q.content, children: [icon && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$q.iconWrapper, variants: iconVariants[animation], initial: "inactive", animate: active ? "active" : "inactive", transition: { duration: 0.3 }, children: typeof icon === 'string' ? (jsxRuntime.jsx("span", { className: styles$q.icon, children: icon })) : (jsxRuntime.jsx("div", { className: styles$q.icon, children: icon })) })), label && jsxRuntime.jsx("span", { className: labelClasses, children: label }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showCheckmark && active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$q.checkmark, variants: checkmarkVariants, initial: "hidden", animate: "visible", exit: "hidden", children: jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", children: jsxRuntime.jsx("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: active && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$q.ripple, initial: { scale: 0, opacity: 0.5 }, animate: { scale: 2, opacity: 0 }, exit: { scale: 0, opacity: 0 }, transition: { duration: 0.6 } })) })] }));
|
|
1726
1727
|
};
|
|
1727
1728
|
|
|
1728
|
-
var styles$
|
|
1729
|
+
var styles$p = {"slider":"Slider-module_slider__RD4G7","label":"Slider-module_label__j4H8M","sliderContainer":"Slider-module_sliderContainer__kQICC","track":"Slider-module_track__fQ-oP","dragging":"Slider-module_dragging__rynPv","fill":"Slider-module_fill__AYR4-","input":"Slider-module_input__fqY-G","thumb":"Slider-module_thumb__yQJho","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","dotsContainer":"Slider-module_dotsContainer__zpcZe","dot":"Slider-module_dot__TkGh5","dotFilled":"Slider-module_dotFilled__n779E","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"};
|
|
1729
1730
|
|
|
1730
1731
|
/**
|
|
1731
1732
|
* Slider component — responsive, accessible range input with a styled track, fill, and thumb.
|
|
@@ -1764,11 +1765,11 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
|
|
|
1764
1765
|
};
|
|
1765
1766
|
const endDrag = () => setIsDragging(false);
|
|
1766
1767
|
const dynamicColor = getDynamicColor();
|
|
1767
|
-
const sizeClass = styles$
|
|
1768
|
-
const stateClass = disabled ? styles$
|
|
1769
|
-
const dragClass = isDragging ? styles$
|
|
1768
|
+
const sizeClass = styles$p[`size-${size}`];
|
|
1769
|
+
const stateClass = disabled ? styles$p.disabled : '';
|
|
1770
|
+
const dragClass = isDragging ? styles$p.dragging : '';
|
|
1770
1771
|
if (loading) {
|
|
1771
|
-
return (jsxRuntime.jsxs("div", { className: `${styles$
|
|
1772
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$p.slider} ${sizeClass} ${styles$p.loading} ${className}`, style: style, children: [label && jsxRuntime.jsx("label", { className: styles$p.label, children: label }), jsxRuntime.jsx("div", { className: styles$p.loadingTrack, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$p.loadingIndicator, animate: { x: ['-100%', '200%'] }, transition: { repeat: Infinity, duration: 1.5, ease: 'easeInOut' } }) })] }));
|
|
1772
1773
|
}
|
|
1773
1774
|
if (variant === 'dots') {
|
|
1774
1775
|
const dotCount = Math.max(0, Math.floor((max - min) / step));
|
|
@@ -1780,9 +1781,9 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
|
|
|
1780
1781
|
const next = value === dotValue ? dotValue - step : dotValue;
|
|
1781
1782
|
onChange(Math.max(min, next));
|
|
1782
1783
|
};
|
|
1783
|
-
return (jsxRuntime.jsxs("div", { className: `${styles$
|
|
1784
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$p.slider} ${sizeClass} ${stateClass} ${className}`, style: style, ...handlers, children: [label && jsxRuntime.jsx("label", { className: styles$p.label, children: label }), jsxRuntime.jsx("div", { className: styles$p.dotsContainer, role: "slider", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value, "aria-label": label, children: dotValues.map((dotValue) => {
|
|
1784
1785
|
const filled = dotValue <= value;
|
|
1785
|
-
return (jsxRuntime.jsx("button", { type: "button", className: `${styles$
|
|
1786
|
+
return (jsxRuntime.jsx("button", { type: "button", className: `${styles$p.dot} ${filled ? styles$p.dotFilled : ''}`, style: filled
|
|
1786
1787
|
? {
|
|
1787
1788
|
backgroundColor: dynamicColor,
|
|
1788
1789
|
borderColor: dynamicColor,
|
|
@@ -1790,7 +1791,7 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
|
|
|
1790
1791
|
: undefined, onClick: () => handleDotClick(dotValue), disabled: disabled, "aria-label": valueFormatter
|
|
1791
1792
|
? valueFormatter(dotValue)
|
|
1792
1793
|
: `Set to ${dotValue}` }, dotValue));
|
|
1793
|
-
}) }), showValue && (jsxRuntime.jsx("div", { className: styles$
|
|
1794
|
+
}) }), showValue && (jsxRuntime.jsx("div", { className: styles$p.valueDisplay, style: { color: dynamicColor }, children: formatValue(value) }))] }));
|
|
1794
1795
|
}
|
|
1795
1796
|
// Inset the thumb so its bounding box stays inside the track at 0/100%.
|
|
1796
1797
|
// At percentage=0: marginLeft=0 → thumb flush-left. At 100%: marginLeft=-thumbSize → flush-right.
|
|
@@ -1798,11 +1799,11 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
|
|
|
1798
1799
|
left: `${percentage}%`,
|
|
1799
1800
|
marginLeft: `calc(var(--slider-thumb-size) * ${-percentage / 100})`,
|
|
1800
1801
|
};
|
|
1801
|
-
return (jsxRuntime.jsxs("div", { className: `${styles$
|
|
1802
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$p.slider} ${sizeClass} ${stateClass} ${dragClass} ${className}`, style: style, children: [label && jsxRuntime.jsx("label", { className: styles$p.label, children: label }), jsxRuntime.jsxs("div", { className: styles$p.sliderContainer, children: [jsxRuntime.jsx("div", { className: styles$p.track, children: jsxRuntime.jsx("div", { className: styles$p.fill, style: { width: `${percentage}%`, backgroundColor: dynamicColor } }) }), jsxRuntime.jsx("input", { type: "range", min: min, max: max, step: step, value: value, onChange: handleChange, onPointerDown: startDrag, onPointerUp: endDrag, onPointerCancel: endDrag, onBlur: endDrag, ...handlers, className: styles$p.input, disabled: disabled, "aria-label": label }), jsxRuntime.jsx("div", { className: styles$p.thumb, style: {
|
|
1802
1803
|
...insetStyle,
|
|
1803
1804
|
backgroundColor: dynamicColor,
|
|
1804
1805
|
borderColor: colors.thumb || dynamicColor,
|
|
1805
|
-
} }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showTooltip && isDragging && !disabled && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$
|
|
1806
|
+
} }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: showTooltip && isDragging && !disabled && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$p.tooltip, style: { ...insetStyle, backgroundColor: dynamicColor }, initial: { opacity: 0, y: 6, scale: 0.9 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: 6, scale: 0.9 }, transition: { duration: 0.15 }, children: [tooltipContent ? tooltipContent(value) : formatValue(value), jsxRuntime.jsx("div", { className: styles$p.tooltipArrow, style: { borderTopColor: dynamicColor } })] })) })] }), showValue && (jsxRuntime.jsx("div", { className: styles$p.valueDisplay, style: { color: dynamicColor }, children: formatValue(value) })), labels.length > 0 && (jsxRuntime.jsx("div", { className: styles$p.labelsContainer, children: labels.map((labelConfig, index) => {
|
|
1806
1807
|
let position = 0;
|
|
1807
1808
|
if (labelConfig.position === 'start')
|
|
1808
1809
|
position = 0;
|
|
@@ -1810,11 +1811,11 @@ function Slider({ value, onChange, min = 0, max = 100, step = 1, label, showValu
|
|
|
1810
1811
|
position = 100;
|
|
1811
1812
|
else if (typeof labelConfig.position === 'number')
|
|
1812
1813
|
position = labelConfig.position;
|
|
1813
|
-
return (jsxRuntime.jsx("div", { className: styles$
|
|
1814
|
+
return (jsxRuntime.jsx("div", { className: styles$p.labelItem, style: { left: `${position}%`, color: labelConfig.color }, children: labelConfig.label }, index));
|
|
1814
1815
|
}) }))] }));
|
|
1815
1816
|
}
|
|
1816
1817
|
|
|
1817
|
-
var styles$
|
|
1818
|
+
var styles$o = {"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"};
|
|
1818
1819
|
|
|
1819
1820
|
const defaultMessages = [
|
|
1820
1821
|
'Loading your content...',
|
|
@@ -1898,22 +1899,22 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1898
1899
|
}
|
|
1899
1900
|
}, [currentMessageIndex, message, messagesToUse, showMessage]);
|
|
1900
1901
|
const containerClasses = [
|
|
1901
|
-
styles$
|
|
1902
|
-
styles$
|
|
1903
|
-
styles$
|
|
1904
|
-
fullScreen && styles$
|
|
1905
|
-
overlay && styles$
|
|
1902
|
+
styles$o.loadingContainer,
|
|
1903
|
+
styles$o[size],
|
|
1904
|
+
styles$o[variant],
|
|
1905
|
+
fullScreen && styles$o.fullScreen,
|
|
1906
|
+
overlay && styles$o.overlay,
|
|
1906
1907
|
className
|
|
1907
1908
|
].filter(Boolean).join(' ');
|
|
1908
1909
|
const customStyle = {
|
|
1909
1910
|
...(color && { '--spinner-color': color }),
|
|
1910
1911
|
...(backgroundColor && { '--spinner-background': backgroundColor }),
|
|
1911
1912
|
};
|
|
1912
|
-
const renderDots = () => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$
|
|
1913
|
+
const renderDots = () => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$o.dotsSpinner, animate: { rotate: 360 }, transition: {
|
|
1913
1914
|
duration: 2,
|
|
1914
1915
|
repeat: Infinity,
|
|
1915
1916
|
ease: 'linear'
|
|
1916
|
-
}, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1917
|
+
}, children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.dot1, animate: {
|
|
1917
1918
|
scale: [1, 1.3, 1],
|
|
1918
1919
|
y: [0, -6, 0]
|
|
1919
1920
|
}, transition: {
|
|
@@ -1921,7 +1922,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1921
1922
|
repeat: Infinity,
|
|
1922
1923
|
ease: 'easeInOut',
|
|
1923
1924
|
delay: 0
|
|
1924
|
-
} }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1925
|
+
} }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.dot2, animate: {
|
|
1925
1926
|
scale: [1, 1.3, 1],
|
|
1926
1927
|
y: [0, -6, 0]
|
|
1927
1928
|
}, transition: {
|
|
@@ -1929,7 +1930,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1929
1930
|
repeat: Infinity,
|
|
1930
1931
|
ease: 'easeInOut',
|
|
1931
1932
|
delay: 0.5
|
|
1932
|
-
} }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1933
|
+
} }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.dot3, animate: {
|
|
1933
1934
|
scale: [1, 1.3, 1],
|
|
1934
1935
|
y: [0, -6, 0]
|
|
1935
1936
|
}, transition: {
|
|
@@ -1938,12 +1939,12 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1938
1939
|
ease: 'easeInOut',
|
|
1939
1940
|
delay: 1
|
|
1940
1941
|
} })] }));
|
|
1941
|
-
const renderSpinner = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1942
|
+
const renderSpinner = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.circleSpinner, animate: { rotate: 360 }, transition: {
|
|
1942
1943
|
duration: 1,
|
|
1943
1944
|
repeat: Infinity,
|
|
1944
1945
|
ease: 'linear'
|
|
1945
1946
|
} }));
|
|
1946
|
-
const renderPulse = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
1947
|
+
const renderPulse = () => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.pulseSpinner, animate: {
|
|
1947
1948
|
scale: [1, 1.2, 1],
|
|
1948
1949
|
opacity: [1, 0.7, 1]
|
|
1949
1950
|
}, transition: {
|
|
@@ -1962,10 +1963,10 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1962
1963
|
return renderDots();
|
|
1963
1964
|
}
|
|
1964
1965
|
};
|
|
1965
|
-
return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.p, { className: styles$
|
|
1966
|
+
return (jsxRuntime.jsxs("div", { className: containerClasses, style: customStyle, children: [renderSpinnerVariant(), showMessage && (jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: jsxRuntime.jsx(framerMotion.motion.p, { className: styles$o.loadingText, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: {
|
|
1966
1967
|
duration: 0.4,
|
|
1967
1968
|
ease: 'easeOut'
|
|
1968
|
-
}, children: currentMessage }, currentMessage) })), showSparkles && (jsxRuntime.jsx("div", { className: styles$
|
|
1969
|
+
}, children: currentMessage }, currentMessage) })), showSparkles && (jsxRuntime.jsx("div", { className: styles$o.sparkleContainer, children: [...Array(4)].map((_, i) => (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$o.sparkle, animate: {
|
|
1969
1970
|
opacity: [0, 1, 0],
|
|
1970
1971
|
scale: [0.5, 1, 0.5],
|
|
1971
1972
|
rotate: [0, 180, 360]
|
|
@@ -1980,7 +1981,7 @@ const LoadingSpinner = ({ message, size = 'medium', variant = 'dots', className
|
|
|
1980
1981
|
} }, i))) }))] }));
|
|
1981
1982
|
};
|
|
1982
1983
|
|
|
1983
|
-
var styles$
|
|
1984
|
+
var styles$n = {"wrapper":"DecryptedText-module_wrapper__tuLvf","srOnly":"DecryptedText-module_srOnly__A-K2T"};
|
|
1984
1985
|
|
|
1985
1986
|
/**
|
|
1986
1987
|
* DecryptedText Component
|
|
@@ -2164,13 +2165,13 @@ const DecryptedText = ({ text, speed = 50, maxIterations = 10, sequential = fals
|
|
|
2164
2165
|
onMouseLeave: () => setIsHovering(false),
|
|
2165
2166
|
}
|
|
2166
2167
|
: {};
|
|
2167
|
-
return (jsxRuntime.jsxs(framerMotion.motion.span, { className: `${styles$
|
|
2168
|
+
return (jsxRuntime.jsxs(framerMotion.motion.span, { className: `${styles$n.wrapper} ${parentClassName}`, ref: containerRef, ...hoverProps, ...props, children: [jsxRuntime.jsx("span", { className: styles$n.srOnly, children: displayText }), jsxRuntime.jsx("span", { "aria-hidden": "true", children: displayText.split('').map((char, index) => {
|
|
2168
2169
|
const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;
|
|
2169
2170
|
return (jsxRuntime.jsx("span", { className: isRevealedOrDone ? className : encryptedClassName, children: char }, index));
|
|
2170
2171
|
}) })] }));
|
|
2171
2172
|
};
|
|
2172
2173
|
|
|
2173
|
-
var styles$
|
|
2174
|
+
var styles$m = {"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"};
|
|
2174
2175
|
|
|
2175
2176
|
/**
|
|
2176
2177
|
* ArrayInput component - Versatile dynamic list manager
|
|
@@ -2237,11 +2238,11 @@ function SimpleArrayInput({ label, values, onChange, placeholder, itemStyle, inp
|
|
|
2237
2238
|
itemIdsRef.current.splice(index, 1);
|
|
2238
2239
|
onChange(newValues);
|
|
2239
2240
|
};
|
|
2240
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
2241
|
+
return (jsxRuntime.jsxs("div", { className: styles$m.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$m.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$m.arrayInputItem, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
|
|
2241
2242
|
duration: 0.3,
|
|
2242
2243
|
ease: "easeInOut",
|
|
2243
2244
|
layout: { duration: 0.2 }
|
|
2244
|
-
}, children: [jsxRuntime.jsx("div", { className: styles$
|
|
2245
|
+
}, children: [jsxRuntime.jsx("div", { className: styles$m.inputWrapper, children: multiline ? (jsxRuntime.jsx("div", { style: inputStyle, children: jsxRuntime.jsx(TextArea, { label: "", value: value, onChange: (newValue) => handleChange(index, newValue), placeholder: placeholder, rows: rows, compact: true }) })) : (jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$m.input, style: inputStyle })) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$m.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, itemIdsRef.current[index]))) }) }), jsxRuntime.jsx(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$m.addButton, children: label })] }));
|
|
2245
2246
|
}
|
|
2246
2247
|
// Complex object array implementation
|
|
2247
2248
|
function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle, inputStyle, buttonVariant = 'primary' }) {
|
|
@@ -2266,14 +2267,14 @@ function ComplexArrayInput({ label, values, onChange, fields, getKey, itemStyle,
|
|
|
2266
2267
|
// Generate key from all field values
|
|
2267
2268
|
return fields.map(f => item[f.name] || '').join('-') + `-${index}`;
|
|
2268
2269
|
};
|
|
2269
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
2270
|
+
return (jsxRuntime.jsxs("div", { className: styles$m.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$m.arrayInputLabel, children: label }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(framerMotion.AnimatePresence, { children: values.map((value, index) => (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$m.arrayInputItem} ${fields.length > 1 ? styles$m.complexItem : ''}`, style: itemStyle, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0 }, transition: {
|
|
2270
2271
|
duration: 0.3,
|
|
2271
2272
|
ease: "easeInOut",
|
|
2272
2273
|
layout: { duration: 0.2 }
|
|
2273
|
-
}, children: [jsxRuntime.jsx("div", { className: styles$
|
|
2274
|
+
}, children: [jsxRuntime.jsx("div", { className: styles$m.fieldsWrapper, children: fields.map((field) => (jsxRuntime.jsx("div", { style: inputStyle, children: field.multiline ? (jsxRuntime.jsx(TextArea, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, placeholder: field.placeholder, rows: field.rows, compact: true })) : (jsxRuntime.jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder })) }, field.name))) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), "aria-label": "Remove item", className: styles$m.removeButton, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }, generateKey(value, index)))) }) }), jsxRuntime.jsxs(Button, { variant: buttonVariant, size: "small", onClick: handleAdd, className: styles$m.addButton, children: ["Add ", label] })] }));
|
|
2274
2275
|
}
|
|
2275
2276
|
|
|
2276
|
-
var styles$
|
|
2277
|
+
var styles$l = {"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"};
|
|
2277
2278
|
|
|
2278
2279
|
const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = false, onEnterEditMode, onExitEditMode, position = { bottom: 32, right: 32 } }) => {
|
|
2279
2280
|
const [isMobile, setIsMobile] = React.useState(false);
|
|
@@ -2358,15 +2359,15 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
|
|
|
2358
2359
|
};
|
|
2359
2360
|
const getVariantClass = () => {
|
|
2360
2361
|
if (isSaving)
|
|
2361
|
-
return styles$
|
|
2362
|
+
return styles$l.primary;
|
|
2362
2363
|
if (isEditMode) {
|
|
2363
|
-
return hasUnsavedChanges ? styles$
|
|
2364
|
+
return hasUnsavedChanges ? styles$l.success : styles$l.secondary;
|
|
2364
2365
|
}
|
|
2365
|
-
return styles$
|
|
2366
|
+
return styles$l.primary;
|
|
2366
2367
|
};
|
|
2367
2368
|
const getIcon = () => {
|
|
2368
2369
|
if (isSaving) {
|
|
2369
|
-
return jsxRuntime.jsx("div", { className: styles$
|
|
2370
|
+
return jsxRuntime.jsx("div", { className: styles$l.loader });
|
|
2370
2371
|
}
|
|
2371
2372
|
if (isEditMode) {
|
|
2372
2373
|
return hasUnsavedChanges ? jsxRuntime.jsx(lucideReact.Check, { size: 24 }) : jsxRuntime.jsx(lucideReact.X, { size: 24 });
|
|
@@ -2381,14 +2382,14 @@ const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = fa
|
|
|
2381
2382
|
}
|
|
2382
2383
|
return "Enter edit mode";
|
|
2383
2384
|
};
|
|
2384
|
-
return (jsxRuntime.jsx(framerMotion.motion.button, { ref: fabRef, className: `${styles$
|
|
2385
|
+
return (jsxRuntime.jsx(framerMotion.motion.button, { ref: fabRef, className: `${styles$l.fab} ${getVariantClass()} ${isMobile ? styles$l.draggable : ''} ${isDragging ? styles$l.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: {
|
|
2385
2386
|
type: "spring",
|
|
2386
2387
|
stiffness: 260,
|
|
2387
2388
|
damping: 20
|
|
2388
2389
|
}, children: getIcon() }));
|
|
2389
2390
|
};
|
|
2390
2391
|
|
|
2391
|
-
var styles$
|
|
2392
|
+
var styles$k = {"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"};
|
|
2392
2393
|
|
|
2393
2394
|
// Default filter options for backwards compatibility
|
|
2394
2395
|
const defaultFilterOptions = [
|
|
@@ -2581,20 +2582,20 @@ const SearchBar = ({ className, placeholder = "Search (Ctrl+Space)...", onSearch
|
|
|
2581
2582
|
return text || '';
|
|
2582
2583
|
const regex = new RegExp(`(${highlight.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
|
|
2583
2584
|
const parts = text.split(regex);
|
|
2584
|
-
return parts.map((part, index) => regex.test(part) ? (jsxRuntime.jsx("mark", { className: styles$
|
|
2585
|
+
return parts.map((part, index) => regex.test(part) ? (jsxRuntime.jsx("mark", { className: styles$k.highlight, children: part }, index)) : (part));
|
|
2585
2586
|
};
|
|
2586
|
-
return (jsxRuntime.jsxs("div", { ref: searchRef, className: `${styles$
|
|
2587
|
+
return (jsxRuntime.jsxs("div", { ref: searchRef, className: `${styles$k.searchContainer} ${className || ''}`, children: [jsxRuntime.jsxs("div", { className: styles$k.searchInputWrapper, children: [jsxRuntime.jsx(lucideReact.Search, { className: styles$k.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, onFocus: () => query.trim() && results.length > 0 && setIsDropdownOpen(true), placeholder: placeholder, className: styles$k.searchInput, "aria-label": "Search", "aria-expanded": isDropdownOpen, "aria-controls": "search-results", "aria-autocomplete": "list" }), query && (jsxRuntime.jsx(framerMotion.motion.button, { className: styles$k.clearButton, onClick: handleClear, whileHover: { scale: 1.1 }, whileTap: { scale: 0.9 }, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, children: jsxRuntime.jsx(lucideReact.X, {}) })), showFilter && (jsxRuntime.jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$k.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isDropdownOpen && (jsxRuntime.jsx(framerMotion.motion.div, { ref: resultsRef, id: "search-results", className: styles$k.resultsDropdown, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, children: isLoading ? (jsxRuntime.jsxs("div", { className: styles$k.loadingState, children: [jsxRuntime.jsx("div", { className: styles$k.spinner }), jsxRuntime.jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxRuntime.jsxs("div", { className: styles$k.emptyState, children: ["No results found for \"", query, "\""] })) : (jsxRuntime.jsx("div", { className: styles$k.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
|
|
2587
2588
|
const Icon = entityIcons[type];
|
|
2588
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
2589
|
+
return (jsxRuntime.jsxs("div", { className: styles$k.resultGroup, children: [jsxRuntime.jsxs("div", { className: styles$k.groupHeader, children: [Icon && jsxRuntime.jsx(Icon, { className: styles$k.groupIcon }), jsxRuntime.jsx("span", { className: styles$k.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsxRuntime.jsx("span", { className: styles$k.groupCount, children: groupResults.length })] }), jsxRuntime.jsx("div", { className: styles$k.groupResults, children: groupResults.map((result) => {
|
|
2589
2590
|
const globalIndex = results.indexOf(result);
|
|
2590
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { "data-result-index": globalIndex, className: `${styles$
|
|
2591
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { "data-result-index": globalIndex, className: `${styles$k.resultItem} ${highlightedIndex === globalIndex ? styles$k.highlighted : ''}`, onClick: () => handleResultClick(result), whileHover: { x: 4 }, onMouseEnter: () => setHighlightedIndex(globalIndex), children: [jsxRuntime.jsxs("div", { className: styles$k.resultContent, children: [jsxRuntime.jsx("div", { className: styles$k.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsxRuntime.jsx("div", { className: styles$k.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsxRuntime.jsx("div", { className: styles$k.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
|
|
2591
2592
|
}) })] }, type));
|
|
2592
2593
|
}) })) })) })] }));
|
|
2593
2594
|
};
|
|
2594
2595
|
|
|
2595
|
-
var styles$
|
|
2596
|
+
var styles$j = {"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-"};
|
|
2596
2597
|
|
|
2597
|
-
const lightTheme = styles$
|
|
2598
|
+
const lightTheme = styles$D.createTheme({
|
|
2598
2599
|
palette: {
|
|
2599
2600
|
mode: 'light',
|
|
2600
2601
|
primary: { main: '#3b82f6' },
|
|
@@ -2608,7 +2609,7 @@ const lightTheme = styles$C.createTheme({
|
|
|
2608
2609
|
},
|
|
2609
2610
|
},
|
|
2610
2611
|
});
|
|
2611
|
-
const darkTheme = styles$
|
|
2612
|
+
const darkTheme = styles$D.createTheme({
|
|
2612
2613
|
palette: {
|
|
2613
2614
|
mode: 'dark',
|
|
2614
2615
|
primary: { main: '#f5b829' },
|
|
@@ -2628,26 +2629,26 @@ function TimeInput({ label, value, onChange, error = false, success = false, loa
|
|
|
2628
2629
|
!!document.documentElement.getAttribute('data-theme')?.includes('dark');
|
|
2629
2630
|
const muiTheme = React.useMemo(() => (isDark ? darkTheme : lightTheme), [isDark]);
|
|
2630
2631
|
const getContainerClassName = () => {
|
|
2631
|
-
const classes = [styles$
|
|
2632
|
+
const classes = [styles$j.timeInput];
|
|
2632
2633
|
if (error)
|
|
2633
|
-
classes.push(styles$
|
|
2634
|
+
classes.push(styles$j.error);
|
|
2634
2635
|
if (success)
|
|
2635
|
-
classes.push(styles$
|
|
2636
|
+
classes.push(styles$j.success);
|
|
2636
2637
|
if (loading)
|
|
2637
|
-
classes.push(styles$
|
|
2638
|
+
classes.push(styles$j.loading);
|
|
2638
2639
|
if (disabled)
|
|
2639
|
-
classes.push(styles$
|
|
2640
|
+
classes.push(styles$j.disabled);
|
|
2640
2641
|
if (className)
|
|
2641
2642
|
classes.push(className);
|
|
2642
2643
|
return classes.join(' ');
|
|
2643
2644
|
};
|
|
2644
|
-
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { className: styles$
|
|
2645
|
+
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [label && (jsxRuntime.jsxs("label", { className: styles$j.label, children: [label, required && jsxRuntime.jsx("span", { className: styles$j.required, children: "*" })] })), jsxRuntime.jsx(styles$D.ThemeProvider, { theme: muiTheme, children: jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, children: jsxRuntime.jsx(MobileTimePicker.MobileTimePicker, { value: dayjsValue, onChange: (newValue) => {
|
|
2645
2646
|
onChange(newValue ? newValue.format('HH:mm') : '');
|
|
2646
2647
|
}, ampm: false, views: ['hours', 'minutes'], disabled: disabled || loading, slotProps: {
|
|
2647
2648
|
textField: {
|
|
2648
2649
|
size: 'small',
|
|
2649
2650
|
fullWidth: true,
|
|
2650
|
-
className: styles$
|
|
2651
|
+
className: styles$j.picker,
|
|
2651
2652
|
sx: {
|
|
2652
2653
|
'& .MuiPickersOutlinedInput-root': {
|
|
2653
2654
|
fontFamily: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace",
|
|
@@ -2735,7 +2736,7 @@ const ThemeProvider = ({ children, defaultTheme = 'light', storageKey = 'app-the
|
|
|
2735
2736
|
return (jsxRuntime.jsx(ThemeContext.Provider, { value: { theme, setTheme, toggleTheme }, children: children }));
|
|
2736
2737
|
};
|
|
2737
2738
|
|
|
2738
|
-
var styles$
|
|
2739
|
+
var styles$i = {"button":"ThemeSwitcher-module_button__VfRjU","iconButton":"ThemeSwitcher-module_iconButton__NKYBc","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"};
|
|
2739
2740
|
|
|
2740
2741
|
const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '', currentTheme, onThemeChange, themes: customThemes, }) => {
|
|
2741
2742
|
// Use safe version that returns null when outside a ThemeProvider
|
|
@@ -2756,25 +2757,25 @@ const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '',
|
|
|
2756
2757
|
if (variant === 'toggle') {
|
|
2757
2758
|
// Simple toggle between light and dark
|
|
2758
2759
|
const isDark = theme.includes('dark');
|
|
2759
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$
|
|
2760
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$i.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$i.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$i.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsxRuntime.jsx(lucideReact.Moon, { size: 14 }) : jsxRuntime.jsx(lucideReact.Sun, { size: 14 }) }) }), showLabel && jsxRuntime.jsx("span", { className: styles$i.label, children: isDark ? 'Dark' : 'Light' })] }));
|
|
2760
2761
|
}
|
|
2761
2762
|
if (variant === 'icon') {
|
|
2762
|
-
return (jsxRuntime.jsxs("button", { type: "button", className: `${styles$
|
|
2763
|
+
return (jsxRuntime.jsxs("button", { type: "button", className: `${styles$i.iconButton} ${className}`, onClick: () => {
|
|
2763
2764
|
const nextIndex = (currentThemeIndex + 1) % themes.length;
|
|
2764
2765
|
setTheme(themes[nextIndex].value);
|
|
2765
|
-
}, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, title: currentThemeData.label, children: [currentThemeData.icon, showLabel && jsxRuntime.jsx("span", { className: styles$
|
|
2766
|
+
}, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, title: currentThemeData.label, children: [currentThemeData.icon, showLabel && jsxRuntime.jsx("span", { className: styles$i.label, children: currentThemeData.label })] }));
|
|
2766
2767
|
}
|
|
2767
2768
|
if (variant === 'dropdown') {
|
|
2768
|
-
return (jsxRuntime.jsxs("div", { className: `${styles$
|
|
2769
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$i.dropdown} ${className}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$i.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentThemeData.icon, showLabel && jsxRuntime.jsx("span", { className: styles$i.label, children: currentThemeData.label })] }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$i.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$i.dropdownItem} ${theme === t.value ? styles$i.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsxRuntime.jsx("span", { className: styles$i.icon, children: t.icon }), jsxRuntime.jsx("span", { className: styles$i.text, children: t.label })] }, t.value))) })] }));
|
|
2769
2770
|
}
|
|
2770
2771
|
// Default button variant - cycles through themes
|
|
2771
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$
|
|
2772
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$i.button} ${className}`, onClick: () => {
|
|
2772
2773
|
const nextIndex = (currentThemeIndex + 1) % themes.length;
|
|
2773
2774
|
setTheme(themes[nextIndex].value);
|
|
2774
|
-
}, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$
|
|
2775
|
+
}, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentThemeData.label}. Click to change.`, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$i.iconWrapper, children: currentThemeData.icon }, theme), showLabel && jsxRuntime.jsx("span", { className: styles$i.label, children: currentThemeData.label })] }));
|
|
2775
2776
|
};
|
|
2776
2777
|
|
|
2777
|
-
var styles$
|
|
2778
|
+
var styles$h = {"tabs":"Tabs-module_tabs__Vlvn7","tab":"Tabs-module_tab__uQKim","tabIcon":"Tabs-module_tabIcon__AgN-O","fullWidth":"Tabs-module_fullWidth__X-GHP"};
|
|
2778
2779
|
|
|
2779
2780
|
// Default tabs for backwards compatibility
|
|
2780
2781
|
const defaultTabs = [
|
|
@@ -2785,39 +2786,39 @@ const defaultTabs = [
|
|
|
2785
2786
|
];
|
|
2786
2787
|
const Tabs = ({ activeTab, onTabChange, tabs: customTabs, className = '', fullWidth = false }) => {
|
|
2787
2788
|
const tabs = customTabs ?? defaultTabs;
|
|
2788
|
-
return (jsxRuntime.jsx("div", { className: `${styles$
|
|
2789
|
+
return (jsxRuntime.jsx("div", { className: `${styles$h.tabs} ${fullWidth ? styles$h.fullWidth : ''} ${className}`, children: tabs.map((tab) => {
|
|
2789
2790
|
const isActive = activeTab === tab.id;
|
|
2790
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$
|
|
2791
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$h.tab, "data-active": isActive, onClick: () => onTabChange(tab.id), style: { position: 'relative' }, children: [jsxRuntime.jsx(framerMotion.motion.div, { animate: {
|
|
2791
2792
|
rotate: isActive ? [0, -10, 10, -5, 5, 0] : 0,
|
|
2792
2793
|
}, transition: {
|
|
2793
2794
|
rotate: {
|
|
2794
2795
|
duration: 0.5,
|
|
2795
2796
|
ease: 'easeInOut'
|
|
2796
2797
|
}
|
|
2797
|
-
}, children: tab.icon && (React.isValidElement(tab.icon) ? (jsxRuntime.jsx("span", { className: styles$
|
|
2798
|
+
}, children: tab.icon && (React.isValidElement(tab.icon) ? (jsxRuntime.jsx("span", { className: styles$h.tabIcon, children: tab.icon })) : (jsxRuntime.jsx("span", { className: styles$h.tabIcon, children: React.createElement(tab.icon) }))) }), jsxRuntime.jsx("span", { children: tab.label })] }, tab.id));
|
|
2798
2799
|
}) }));
|
|
2799
2800
|
};
|
|
2800
2801
|
|
|
2801
|
-
var styles$
|
|
2802
|
+
var styles$g = {"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"};
|
|
2802
2803
|
|
|
2803
2804
|
const getIcon = (type) => {
|
|
2804
2805
|
switch (type) {
|
|
2805
2806
|
case 'success':
|
|
2806
|
-
return (jsxRuntime.jsx("svg", { className: `${styles$
|
|
2807
|
+
return (jsxRuntime.jsx("svg", { className: `${styles$g.icon} ${styles$g.iconSuccess}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
|
|
2807
2808
|
case 'error':
|
|
2808
|
-
return (jsxRuntime.jsx("svg", { className: `${styles$
|
|
2809
|
+
return (jsxRuntime.jsx("svg", { className: `${styles$g.icon} ${styles$g.iconError}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
|
|
2809
2810
|
case 'warning':
|
|
2810
|
-
return (jsxRuntime.jsx("svg", { className: `${styles$
|
|
2811
|
+
return (jsxRuntime.jsx("svg", { className: `${styles$g.icon} ${styles$g.iconWarning}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }));
|
|
2811
2812
|
case 'info':
|
|
2812
|
-
return (jsxRuntime.jsx("svg", { className: `${styles$
|
|
2813
|
+
return (jsxRuntime.jsx("svg", { className: `${styles$g.icon} ${styles$g.iconInfo}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }));
|
|
2813
2814
|
}
|
|
2814
2815
|
};
|
|
2815
2816
|
const getToastStyle = (type) => {
|
|
2816
2817
|
switch (type) {
|
|
2817
|
-
case 'success': return styles$
|
|
2818
|
-
case 'error': return styles$
|
|
2819
|
-
case 'warning': return styles$
|
|
2820
|
-
case 'info': return styles$
|
|
2818
|
+
case 'success': return styles$g.toastSuccess;
|
|
2819
|
+
case 'error': return styles$g.toastError;
|
|
2820
|
+
case 'warning': return styles$g.toastWarning;
|
|
2821
|
+
case 'info': return styles$g.toastInfo;
|
|
2821
2822
|
default: return '';
|
|
2822
2823
|
}
|
|
2823
2824
|
};
|
|
@@ -2839,7 +2840,7 @@ const ToastItem = ({ toast, removeToast, }) => {
|
|
|
2839
2840
|
clearInterval(interval);
|
|
2840
2841
|
};
|
|
2841
2842
|
}, [toast.id, duration, removeToast]);
|
|
2842
|
-
return (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$
|
|
2843
|
+
return (jsxRuntime.jsxs(framerMotion.motion.div, { className: `${styles$g.toast} ${getToastStyle(toast.type)}`, initial: { opacity: 0, x: 100, scale: 0.9 }, animate: { opacity: 1, x: 0, scale: 1 }, exit: { opacity: 0, x: 100, scale: 0.9 }, transition: { type: 'spring', stiffness: 500, damping: 40 }, layout: true, children: [getIcon(toast.type), jsxRuntime.jsxs("div", { className: styles$g.content, children: [toast.title && jsxRuntime.jsx("p", { className: styles$g.title, children: toast.title }), jsxRuntime.jsx("p", { className: styles$g.message, children: toast.message })] }), jsxRuntime.jsx("button", { className: styles$g.closeButton, onClick: () => removeToast(toast.id), "aria-label": "Close notification", children: jsxRuntime.jsx("svg", { width: "16", height: "16", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$g.progressBar, initial: { width: '100%' }, animate: { width: `${progress}%` }, style: {
|
|
2843
2844
|
color: toast.type === 'success' ? '#10B981'
|
|
2844
2845
|
: toast.type === 'error' ? '#EF4444'
|
|
2845
2846
|
: toast.type === 'warning' ? '#F59E0B'
|
|
@@ -2849,10 +2850,10 @@ const ToastItem = ({ toast, removeToast, }) => {
|
|
|
2849
2850
|
const ToastContainer = ({ toasts, removeToast }) => {
|
|
2850
2851
|
if (typeof document === 'undefined')
|
|
2851
2852
|
return null;
|
|
2852
|
-
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$
|
|
2853
|
+
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$g.toastContainer, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "sync", children: toasts.map((toast) => (jsxRuntime.jsx(ToastItem, { toast: toast, removeToast: removeToast }, toast.id))) }) }), document.body);
|
|
2853
2854
|
};
|
|
2854
2855
|
|
|
2855
|
-
var styles$
|
|
2856
|
+
var styles$f = {"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"};
|
|
2856
2857
|
|
|
2857
2858
|
/**
|
|
2858
2859
|
* Breadcrumb Component
|
|
@@ -2871,13 +2872,13 @@ var styles$e = {"breadcrumb":"Breadcrumb-module_breadcrumb__pGabz","separator":"
|
|
|
2871
2872
|
* />
|
|
2872
2873
|
*/
|
|
2873
2874
|
const Breadcrumb = ({ items, onNavigate, className = '' }) => {
|
|
2874
|
-
return (jsxRuntime.jsx("nav", { className: `${styles$
|
|
2875
|
+
return (jsxRuntime.jsx("nav", { className: `${styles$f.breadcrumb} ${className}`, "aria-label": "Breadcrumb", children: items.map((item, index) => {
|
|
2875
2876
|
const isLast = index === items.length - 1;
|
|
2876
|
-
return (jsxRuntime.jsxs(React.Fragment, { children: [index > 0 && jsxRuntime.jsx(lucideReact.ChevronRight, { size: 14, className: styles$
|
|
2877
|
+
return (jsxRuntime.jsxs(React.Fragment, { children: [index > 0 && jsxRuntime.jsx(lucideReact.ChevronRight, { size: 14, className: styles$f.separator }), isLast || !item.href ? (jsxRuntime.jsx("span", { className: `${styles$f.item} ${isLast ? styles$f.current : ''}`, children: item.label })) : (jsxRuntime.jsx("button", { className: `${styles$f.item} ${styles$f.link}`, onClick: () => onNavigate?.(item.href), children: item.label }))] }, index));
|
|
2877
2878
|
}) }));
|
|
2878
2879
|
};
|
|
2879
2880
|
|
|
2880
|
-
var styles$
|
|
2881
|
+
var styles$e = {"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"};
|
|
2881
2882
|
|
|
2882
2883
|
/**
|
|
2883
2884
|
* LiquidButton Component
|
|
@@ -2903,10 +2904,167 @@ const LiquidButton = ({ actions, icon: Icon = lucideReact.Plus, className = '',
|
|
|
2903
2904
|
setExpanded(false);
|
|
2904
2905
|
action.onClick();
|
|
2905
2906
|
}, []);
|
|
2906
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$
|
|
2907
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$e.overlay, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: handleToggle })) }), jsxRuntime.jsxs("div", { className: `${styles$e.container} ${className}`, children: [jsxRuntime.jsx(framerMotion.AnimatePresence, { children: expanded && (jsxRuntime.jsx("div", { className: styles$e.actions, children: actions.map((action, index) => (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: styles$e.actionButton, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, transition: {
|
|
2907
2908
|
duration: 0.15,
|
|
2908
2909
|
delay: (actions.length - 1 - index) * 0.05,
|
|
2909
|
-
}, onClick: () => handleAction(action), children: [jsxRuntime.jsx(action.icon, { size: 18, color: action.color }), jsxRuntime.jsx("span", { className: styles$
|
|
2910
|
+
}, onClick: () => handleAction(action), children: [jsxRuntime.jsx(action.icon, { size: 18, color: action.color }), jsxRuntime.jsx("span", { className: styles$e.actionLabel, children: action.label })] }, action.key))) })) }), jsxRuntime.jsx(framerMotion.motion.button, { type: "button", className: styles$e.button, onClick: handleToggle, animate: { rotate: expanded ? 45 : 0 }, transition: { duration: 0.2 }, "aria-label": expanded ? 'Close actions' : 'Open actions', children: jsxRuntime.jsx(Icon, { size: 24, strokeWidth: 2.5 }) })] })] }));
|
|
2911
|
+
};
|
|
2912
|
+
|
|
2913
|
+
var styles$d = {"container":"RecurrencePicker-module_container__2Ewc4","field":"RecurrencePicker-module_field__3rsnB","fieldCentered":"RecurrencePicker-module_fieldCentered__wP27Q","fieldLabel":"RecurrencePicker-module_fieldLabel__HCMBQ","fieldRow":"RecurrencePicker-module_fieldRow__AQ4k7","fieldUnit":"RecurrencePicker-module_fieldUnit__WHbVN","dayPicker":"RecurrencePicker-module_dayPicker__a5ue6","dayBtn":"RecurrencePicker-module_dayBtn__WIxNY","dayBtnActive":"RecurrencePicker-module_dayBtnActive__mX7FB","preview":"RecurrencePicker-module_preview__tfAQ-"};
|
|
2914
|
+
|
|
2915
|
+
const DEFAULT_STATE = {
|
|
2916
|
+
freq: 'WEEKLY',
|
|
2917
|
+
interval: 1,
|
|
2918
|
+
byDay: ['MO'],
|
|
2919
|
+
byMonthDay: 1,
|
|
2920
|
+
monthlyLast: false,
|
|
2921
|
+
byMonth: 1,
|
|
2922
|
+
yearDay: 1,
|
|
2923
|
+
};
|
|
2924
|
+
const WEEKDAYS = [
|
|
2925
|
+
{ code: 'MO', label: 'M', rrule: rrule.RRule.MO },
|
|
2926
|
+
{ code: 'TU', label: 'T', rrule: rrule.RRule.TU },
|
|
2927
|
+
{ code: 'WE', label: 'W', rrule: rrule.RRule.WE },
|
|
2928
|
+
{ code: 'TH', label: 'T', rrule: rrule.RRule.TH },
|
|
2929
|
+
{ code: 'FR', label: 'F', rrule: rrule.RRule.FR },
|
|
2930
|
+
{ code: 'SA', label: 'S', rrule: rrule.RRule.SA },
|
|
2931
|
+
{ code: 'SU', label: 'S', rrule: rrule.RRule.SU },
|
|
2932
|
+
];
|
|
2933
|
+
const MONTHS$1 = [
|
|
2934
|
+
'January',
|
|
2935
|
+
'February',
|
|
2936
|
+
'March',
|
|
2937
|
+
'April',
|
|
2938
|
+
'May',
|
|
2939
|
+
'June',
|
|
2940
|
+
'July',
|
|
2941
|
+
'August',
|
|
2942
|
+
'September',
|
|
2943
|
+
'October',
|
|
2944
|
+
'November',
|
|
2945
|
+
'December',
|
|
2946
|
+
];
|
|
2947
|
+
const FREQ_MAP = {
|
|
2948
|
+
DAILY: rrule.RRule.DAILY,
|
|
2949
|
+
WEEKLY: rrule.RRule.WEEKLY,
|
|
2950
|
+
MONTHLY: rrule.RRule.MONTHLY,
|
|
2951
|
+
YEARLY: rrule.RRule.YEARLY,
|
|
2952
|
+
};
|
|
2953
|
+
const REVERSE_FREQ = {
|
|
2954
|
+
[rrule.RRule.DAILY]: 'DAILY',
|
|
2955
|
+
[rrule.RRule.WEEKLY]: 'WEEKLY',
|
|
2956
|
+
[rrule.RRule.MONTHLY]: 'MONTHLY',
|
|
2957
|
+
[rrule.RRule.YEARLY]: 'YEARLY',
|
|
2958
|
+
};
|
|
2959
|
+
const buildRule = (s) => {
|
|
2960
|
+
const opts = { freq: FREQ_MAP[s.freq] };
|
|
2961
|
+
if (s.interval > 1)
|
|
2962
|
+
opts.interval = s.interval;
|
|
2963
|
+
if (s.freq === 'WEEKLY' && s.byDay.length > 0) {
|
|
2964
|
+
opts.byweekday = s.byDay
|
|
2965
|
+
.map(c => WEEKDAYS.find(w => w.code === c)?.rrule)
|
|
2966
|
+
.filter((w) => !!w);
|
|
2967
|
+
}
|
|
2968
|
+
if (s.freq === 'MONTHLY') {
|
|
2969
|
+
opts.bymonthday = s.monthlyLast ? -1 : s.byMonthDay;
|
|
2970
|
+
}
|
|
2971
|
+
if (s.freq === 'YEARLY') {
|
|
2972
|
+
opts.bymonth = s.byMonth;
|
|
2973
|
+
opts.bymonthday = s.yearDay;
|
|
2974
|
+
}
|
|
2975
|
+
const rule = new rrule.RRule(opts);
|
|
2976
|
+
return rule.toString().replace(/^(?:DTSTART:[^\n]*\n)?RRULE:/, '');
|
|
2977
|
+
};
|
|
2978
|
+
const parseRule = (rule) => {
|
|
2979
|
+
try {
|
|
2980
|
+
const opts = rrule.RRule.parseString(rule);
|
|
2981
|
+
const freq = REVERSE_FREQ[opts.freq];
|
|
2982
|
+
if (!freq)
|
|
2983
|
+
return null;
|
|
2984
|
+
const byweekday = opts.byweekday ?? [];
|
|
2985
|
+
const byDay = byweekday
|
|
2986
|
+
.map(w => {
|
|
2987
|
+
const n = typeof w === 'number' ? w : w.weekday;
|
|
2988
|
+
return WEEKDAYS.find(d => d.rrule.weekday === n)?.code;
|
|
2989
|
+
})
|
|
2990
|
+
.filter((c) => !!c);
|
|
2991
|
+
const bmd = opts.bymonthday;
|
|
2992
|
+
const bymonthday = Array.isArray(bmd) ? bmd[0] : bmd;
|
|
2993
|
+
const bm = opts.bymonth;
|
|
2994
|
+
const bymonth = Array.isArray(bm) ? bm[0] : bm;
|
|
2995
|
+
return {
|
|
2996
|
+
freq,
|
|
2997
|
+
interval: opts.interval || 1,
|
|
2998
|
+
byDay: byDay.length > 0 ? byDay : ['MO'],
|
|
2999
|
+
byMonthDay: freq === 'MONTHLY' && bymonthday && bymonthday > 0 ? bymonthday : 1,
|
|
3000
|
+
monthlyLast: freq === 'MONTHLY' && bymonthday === -1,
|
|
3001
|
+
byMonth: freq === 'YEARLY' ? bymonth || 1 : 1,
|
|
3002
|
+
yearDay: freq === 'YEARLY' && bymonthday ? bymonthday : 1,
|
|
3003
|
+
};
|
|
3004
|
+
}
|
|
3005
|
+
catch {
|
|
3006
|
+
return null;
|
|
3007
|
+
}
|
|
3008
|
+
};
|
|
3009
|
+
const stateFromValue = (value) => {
|
|
3010
|
+
if (!value)
|
|
3011
|
+
return DEFAULT_STATE;
|
|
3012
|
+
return parseRule(value) ?? DEFAULT_STATE;
|
|
3013
|
+
};
|
|
3014
|
+
const RecurrencePicker = ({ value, onChange, className, }) => {
|
|
3015
|
+
const [state, setState] = React.useState(() => stateFromValue(value));
|
|
3016
|
+
const built = React.useMemo(() => buildRule(state), [state]);
|
|
3017
|
+
// Re-sync internal state if the parent passes a different rule than the one
|
|
3018
|
+
// we currently render. The `built === value` guard prevents the loop where
|
|
3019
|
+
// our own emit comes back through `value` and triggers a redundant resync.
|
|
3020
|
+
React.useEffect(() => {
|
|
3021
|
+
if (value && value !== built) {
|
|
3022
|
+
const parsed = parseRule(value);
|
|
3023
|
+
if (parsed)
|
|
3024
|
+
setState(parsed);
|
|
3025
|
+
}
|
|
3026
|
+
}, [value, built]);
|
|
3027
|
+
// On mount, if the parent didn't seed a rule, push our default up so its
|
|
3028
|
+
// state matches what we visually display. Runs once.
|
|
3029
|
+
React.useEffect(() => {
|
|
3030
|
+
if (!value)
|
|
3031
|
+
onChange(built);
|
|
3032
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3033
|
+
}, []);
|
|
3034
|
+
const update = (patch) => {
|
|
3035
|
+
const next = { ...state, ...patch };
|
|
3036
|
+
setState(next);
|
|
3037
|
+
onChange(buildRule(next));
|
|
3038
|
+
};
|
|
3039
|
+
const toggleDay = (code) => {
|
|
3040
|
+
const byDay = state.byDay.includes(code)
|
|
3041
|
+
? state.byDay.filter(c => c !== code)
|
|
3042
|
+
: [...state.byDay, code];
|
|
3043
|
+
update({ byDay });
|
|
3044
|
+
};
|
|
3045
|
+
const preview = React.useMemo(() => {
|
|
3046
|
+
try {
|
|
3047
|
+
return rrule.RRule.fromString(built).toText();
|
|
3048
|
+
}
|
|
3049
|
+
catch {
|
|
3050
|
+
return built;
|
|
3051
|
+
}
|
|
3052
|
+
}, [built]);
|
|
3053
|
+
const unitLabel = {
|
|
3054
|
+
DAILY: state.interval === 1 ? 'day' : 'days',
|
|
3055
|
+
WEEKLY: state.interval === 1 ? 'week' : 'weeks',
|
|
3056
|
+
MONTHLY: state.interval === 1 ? 'month' : 'months',
|
|
3057
|
+
YEARLY: state.interval === 1 ? 'year' : 'years',
|
|
3058
|
+
};
|
|
3059
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$d.container}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsx("div", { className: styles$d.field, children: jsxRuntime.jsx(SelectInput, { label: "Frequency", value: state.freq, onChange: v => update({ freq: v }), options: [
|
|
3060
|
+
{ value: 'DAILY', label: 'Daily' },
|
|
3061
|
+
{ value: 'WEEKLY', label: 'Weekly' },
|
|
3062
|
+
{ value: 'MONTHLY', label: 'Monthly' },
|
|
3063
|
+
{ value: 'YEARLY', label: 'Yearly' },
|
|
3064
|
+
] }) }), jsxRuntime.jsxs("div", { className: styles$d.field, children: [jsxRuntime.jsx("span", { className: styles$d.fieldLabel, children: "Every" }), jsxRuntime.jsxs("div", { className: styles$d.fieldRow, children: [jsxRuntime.jsx(NumberStepper, { value: state.interval, onChange: v => update({ interval: Math.max(1, v) }), min: 1, max: 99, hideLimits: true, size: "small" }), jsxRuntime.jsx("span", { className: styles$d.fieldUnit, children: unitLabel[state.freq] })] })] }), state.freq === 'WEEKLY' && (jsxRuntime.jsxs("div", { className: `${styles$d.field} ${styles$d.fieldCentered}`, children: [jsxRuntime.jsx("span", { className: styles$d.fieldLabel, children: "On" }), jsxRuntime.jsx("div", { className: styles$d.dayPicker, children: WEEKDAYS.map(d => (jsxRuntime.jsx("button", { type: "button", className: `${styles$d.dayBtn} ${state.byDay.includes(d.code) ? styles$d.dayBtnActive : ''}`, onClick: () => toggleDay(d.code), "aria-label": d.code, children: d.label }, d.code))) })] })), state.freq === 'MONTHLY' && (jsxRuntime.jsxs("div", { className: styles$d.field, children: [jsxRuntime.jsx("span", { className: styles$d.fieldLabel, children: "Day of month" }), jsxRuntime.jsxs("div", { className: styles$d.fieldRow, children: [jsxRuntime.jsx(NumberStepper, { value: state.byMonthDay, onChange: v => update({ byMonthDay: Math.min(31, Math.max(1, v)) }), min: 1, max: 31, disabled: state.monthlyLast, hideLimits: true, size: "small" }), jsxRuntime.jsx(Checkbox, { checked: state.monthlyLast, onChange: v => update({ monthlyLast: v }), label: "Last day" })] })] })), state.freq === 'YEARLY' && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: styles$d.field, children: jsxRuntime.jsx(SelectInput, { label: "Month", value: String(state.byMonth), onChange: v => update({ byMonth: Number(v) }), options: MONTHS$1.map((m, i) => ({
|
|
3065
|
+
value: String(i + 1),
|
|
3066
|
+
label: m,
|
|
3067
|
+
})) }) }), jsxRuntime.jsxs("div", { className: styles$d.field, children: [jsxRuntime.jsx("span", { className: styles$d.fieldLabel, children: "Day" }), jsxRuntime.jsx(NumberStepper, { value: state.yearDay, onChange: v => update({ yearDay: Math.min(31, Math.max(1, v)) }), min: 1, max: 31, hideLimits: true, size: "small" })] })] })), jsxRuntime.jsx("div", { className: styles$d.preview, children: preview })] }));
|
|
2910
3068
|
};
|
|
2911
3069
|
|
|
2912
3070
|
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"};
|
|
@@ -5115,7 +5273,7 @@ const SunburstChart = ({ data, width = 500, height = 500, title = 'Sunburst Char
|
|
|
5115
5273
|
}
|
|
5116
5274
|
// Calculate new positions based on the original positions
|
|
5117
5275
|
// ALWAYS scale to fill the full circle, no minimum size preservation
|
|
5118
|
-
|
|
5276
|
+
const newX0 = xScale(node.x0Original);
|
|
5119
5277
|
let newX1 = xScale(node.x1Original);
|
|
5120
5278
|
// Ensure proper scaling even for very small segments
|
|
5121
5279
|
// The clicked node's extent should always map to full circle
|
|
@@ -5216,7 +5374,7 @@ const SunburstChart = ({ data, width = 500, height = 500, title = 'Sunburst Char
|
|
|
5216
5374
|
if (focusedNodeRef.current) {
|
|
5217
5375
|
return;
|
|
5218
5376
|
}
|
|
5219
|
-
const hoveredElement =
|
|
5377
|
+
const hoveredElement = event.currentTarget;
|
|
5220
5378
|
// Show tooltip for all nodes
|
|
5221
5379
|
tooltip.transition().duration(200).style('opacity', 1);
|
|
5222
5380
|
const value = d.value || 0;
|
|
@@ -6193,6 +6351,7 @@ exports.Navbar = Navbar;
|
|
|
6193
6351
|
exports.NumberStepper = NumberStepper;
|
|
6194
6352
|
exports.PieChart = PieChart;
|
|
6195
6353
|
exports.QuantifiableHabitsChart = QuantifiableHabitsChart;
|
|
6354
|
+
exports.RecurrencePicker = RecurrencePicker;
|
|
6196
6355
|
exports.SearchBar = SearchBar;
|
|
6197
6356
|
exports.SearchableDropdown = SearchableDropdown;
|
|
6198
6357
|
exports.SelectInput = SelectInput;
|