@stfrigerio/sito-template 0.1.36 → 0.1.37
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/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/components/atoms/AllAtoms.stories.d.ts +1 -1
- package/dist/components/atoms/AllAtoms.stories.d.ts.map +1 -1
- package/dist/components/atoms/Button/Button.stories.d.ts +2 -14
- package/dist/components/atoms/Button/Button.stories.d.ts.map +1 -1
- package/dist/components/atoms/Card/Card.stories.d.ts +4 -23
- package/dist/components/atoms/Card/Card.stories.d.ts.map +1 -1
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +1 -1
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/components/atoms/DateInput/DateInput.d.ts +1 -1
- package/dist/components/atoms/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts +1 -1
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts.map +1 -1
- package/dist/components/atoms/DecryptedText/DecryptedText.d.ts +50 -0
- package/dist/components/atoms/DecryptedText/DecryptedText.d.ts.map +1 -0
- package/dist/components/atoms/DecryptedText/index.d.ts +3 -0
- package/dist/components/atoms/DecryptedText/index.d.ts.map +1 -0
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -1
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.stories.d.ts +1 -1
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.stories.d.ts.map +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.d.ts.map +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.stories.d.ts +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.stories.d.ts.map +1 -1
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts +1 -1
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts.map +1 -1
- package/dist/components/atoms/SelectInput/SelectInput.d.ts +4 -2
- package/dist/components/atoms/SelectInput/SelectInput.d.ts.map +1 -1
- package/dist/components/atoms/Slider/Slider.stories.d.ts +2 -10
- package/dist/components/atoms/Slider/Slider.stories.d.ts.map +1 -1
- package/dist/components/atoms/SoundDemo/SoundDemo.d.ts +11 -0
- package/dist/components/atoms/SoundDemo/SoundDemo.d.ts.map +1 -0
- package/dist/components/atoms/SoundDemo/SoundDemo.stories.d.ts +1 -1
- package/dist/components/atoms/SoundDemo/SoundDemo.stories.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts +1 -1
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts.map +1 -1
- package/dist/components/atoms/TextInput/TextInput.d.ts +1 -1
- package/dist/components/atoms/TextInput/TextInput.d.ts.map +1 -1
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts +1 -4
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts.map +1 -1
- package/dist/components/atoms/Toggle/Toggle.d.ts +5 -4
- package/dist/components/atoms/Toggle/Toggle.d.ts.map +1 -1
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts +1 -1
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/atoms/ToggleButton/ToggleButton.stories.d.ts +1 -1
- package/dist/components/atoms/ToggleButton/ToggleButton.stories.d.ts.map +1 -1
- package/dist/components/atoms/index.d.ts +2 -0
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.d.ts +3 -3
- package/dist/components/molecules/ArrayInput/ArrayInput.d.ts.map +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.stories.d.ts +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.stories.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumb/Breadcrumb.d.ts +28 -0
- package/dist/components/molecules/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/molecules/Breadcrumb/index.d.ts +3 -0
- package/dist/components/molecules/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts +1 -1
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts.map +1 -1
- package/dist/components/molecules/LiquidButton/LiquidButton.d.ts +33 -0
- package/dist/components/molecules/LiquidButton/LiquidButton.d.ts.map +1 -0
- package/dist/components/molecules/LiquidButton/index.d.ts +3 -0
- package/dist/components/molecules/LiquidButton/index.d.ts.map +1 -0
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +1 -1
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/Tabs.d.ts +1 -1
- package/dist/components/molecules/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/Tabs.stories.d.ts +1 -1
- package/dist/components/molecules/Tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +4 -3
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts.map +1 -1
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts +1 -1
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts.map +1 -1
- package/dist/components/molecules/Toast/Toast.d.ts +16 -0
- package/dist/components/molecules/Toast/Toast.d.ts.map +1 -0
- package/dist/components/molecules/Toast/index.d.ts +3 -0
- package/dist/components/molecules/Toast/index.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +6 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/Calendar.d.ts +1 -1
- package/dist/components/organisms/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/Calendar.stories.d.ts +1 -1
- package/dist/components/organisms/Calendar/Calendar.stories.d.ts.map +1 -1
- package/dist/components/organisms/ConfirmationModal/ConfirmationModal.d.ts +30 -0
- package/dist/components/organisms/ConfirmationModal/ConfirmationModal.d.ts.map +1 -0
- package/dist/components/organisms/ConfirmationModal/index.d.ts +3 -0
- package/dist/components/organisms/ConfirmationModal/index.d.ts.map +1 -0
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.d.ts +1 -1
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.d.ts.map +1 -1
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.stories.d.ts +1 -6
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.stories.d.ts.map +1 -1
- package/dist/components/organisms/Navbar/Navbar.d.ts +3 -2
- package/dist/components/organisms/Navbar/Navbar.d.ts.map +1 -1
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts +1 -1
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts.map +1 -1
- package/dist/components/organisms/Table/Table.d.ts +6 -6
- package/dist/components/organisms/Table/Table.d.ts.map +1 -1
- package/dist/components/organisms/Table/Table.stories.d.ts +26 -14
- package/dist/components/organisms/Table/Table.stories.d.ts.map +1 -1
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts +3 -1
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts.map +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts +2 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +3 -1
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +716 -473
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +734 -485
- package/dist/index.js.map +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/themes/default.css +47 -0
- package/dist/themes/dmood.css +46 -0
- package/dist/themes/globals.css +110 -0
- package/dist/themes/lossito.css +52 -0
- package/dist/tokens/tokens.css +79 -0
- package/dist/utils/formUtils.d.ts +0 -5
- package/dist/utils/formUtils.d.ts.map +1 -1
- package/package.json +32 -10
- package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
- package/storybook-static/assets/AllAtoms.stories-DBoQZmq-.js +109 -0
- package/storybook-static/assets/AnimationPlayer-UXJjBKtF.css +1 -0
- package/storybook-static/assets/AnimationPlayer.stories-yXQ8fqUT.js +379 -0
- package/storybook-static/assets/ArrayInput-CkUpk1TR.css +1 -0
- package/storybook-static/assets/ArrayInput.stories-CRqKExgm.js +221 -0
- package/storybook-static/assets/BooleansHeatmap-BV4VTyo6.css +1 -0
- package/storybook-static/assets/BooleansHeatmap.stories-2u4SThph.js +123 -0
- package/storybook-static/assets/Button-O-w2-ag3.css +1 -0
- package/storybook-static/assets/Button-VfdDKp2T.js +37 -0
- package/storybook-static/assets/Button.stories-BeeBKHoX.js +117 -0
- package/storybook-static/assets/Calendar-BTQfDDfP.css +1 -0
- package/storybook-static/assets/Calendar.stories-CKOG4XAn.js +545 -0
- package/storybook-static/assets/Card-Bc7TyfBx.css +1 -0
- package/storybook-static/assets/Card-D-kcaQHV.js +49 -0
- package/storybook-static/assets/Card.stories-CpcboxKs.js +130 -0
- package/storybook-static/assets/Checkbox-BHwlDfRP.js +33 -0
- package/storybook-static/assets/Checkbox-DMUHtq9s.css +1 -0
- package/storybook-static/assets/Checkbox.stories-DxTQrFgm.js +83 -0
- package/storybook-static/assets/Color-AVL7NMMY-BzNNgCT5.js +1 -0
- package/storybook-static/assets/DateInput-C4-Rlnpy.css +1 -0
- package/storybook-static/assets/DateInput-Cu3PZYc0.js +33 -0
- package/storybook-static/assets/DateInput.stories-BGB5zJBm.js +119 -0
- package/storybook-static/assets/DocsRenderer-PQXLIZUC-q9kcQxfH.js +1243 -0
- package/storybook-static/assets/EditFAB-CntUhqRB.css +1 -0
- package/storybook-static/assets/EditFAB.stories-CmfJxWns.js +408 -0
- package/storybook-static/assets/MoodChart-2hr_Y2GI.css +1 -0
- package/storybook-static/assets/MoodChart.stories-V-wKOSu-.js +40 -0
- package/storybook-static/assets/Navbar-B8vEvGnB.css +1 -0
- package/storybook-static/assets/Navbar.stories-Dkf77idX.js +235 -0
- package/storybook-static/assets/NumberStepper-BVHPJutJ.css +1 -0
- package/storybook-static/assets/NumberStepper-BZGlrWCN.js +30 -0
- package/storybook-static/assets/NumberStepper.stories-NZw7r4Oh.js +127 -0
- package/storybook-static/assets/PieChart-OfDGlJ4g.css +1 -0
- package/storybook-static/assets/PieChart.stories-BkfNODjW.js +199 -0
- package/storybook-static/assets/QuantifiableHabitsChart-BEfzqND4.css +1 -0
- package/storybook-static/assets/QuantifiableHabitsChart.stories-Df6rcrdD.js +105 -0
- package/storybook-static/assets/SearchBar-CYhuHFt7.css +1 -0
- package/storybook-static/assets/SearchBar.stories-DmHIaDZB.js +154 -0
- package/storybook-static/assets/SearchableDropdown-ByAXm1md.js +38 -0
- package/storybook-static/assets/SearchableDropdown-CLYLzeoj.css +1 -0
- package/storybook-static/assets/SearchableDropdown.stories-ByZj6lJu.js +282 -0
- package/storybook-static/assets/SelectInput-BTPptV1H.css +1 -0
- package/storybook-static/assets/SelectInput-D-AwfWVz.js +31 -0
- package/storybook-static/assets/SelectInput.stories-MyE-GqOw.js +112 -0
- package/storybook-static/assets/SleepChart-yGsG5RlQ.css +1 -0
- package/storybook-static/assets/SleepChart.stories-Dsz1U6F9.js +58 -0
- package/storybook-static/assets/SunburstChart-ChXvU9py.css +1 -0
- package/storybook-static/assets/SunburstChart.stories-CphfyDsR.js +285 -0
- package/storybook-static/assets/Tabs-BfJ7skOE.css +1 -0
- package/storybook-static/assets/Tabs.stories-c24Ffu3K.js +49 -0
- package/storybook-static/assets/TextArea-B2UrQsuf.css +1 -0
- package/storybook-static/assets/TextArea-B_sATPlw.js +28 -0
- package/storybook-static/assets/TextArea.stories-CCqRRpwq.js +145 -0
- package/storybook-static/assets/TextInput-BjVJQEYN.css +1 -0
- package/storybook-static/assets/TextInput-ZGg8LTL_.js +28 -0
- package/storybook-static/assets/TextInput.stories-CtvOb60q.js +203 -0
- package/storybook-static/assets/ThemeSwitcher-XCVQ6hhy.css +1 -0
- package/storybook-static/assets/ThemeSwitcher.stories-BvkX1SDm.js +62 -0
- package/storybook-static/assets/TimeInput-C3enPYoV.css +1 -0
- package/storybook-static/assets/TimeInput.stories-BchhRfKo.js +50 -0
- package/storybook-static/assets/Toggle-BQ2KHBDr.js +39 -0
- package/storybook-static/assets/Toggle-DhKq5lh5.css +1 -0
- package/storybook-static/assets/Toggle.stories-BUSZc6m3.js +194 -0
- package/storybook-static/assets/ToggleButton-Dl6hvkJv.js +32 -0
- package/storybook-static/assets/ToggleButton-gfPoPxTQ.css +1 -0
- package/storybook-static/assets/ToggleButton.stories-BKN4zU3N.js +143 -0
- package/storybook-static/assets/arc-DgcIQOLP.js +1 -0
- package/storybook-static/assets/array-BKyUJesY.js +1 -0
- package/storybook-static/assets/defaultLocale-DJ2q5QjE.js +1 -0
- package/storybook-static/assets/iframe-BOc1hSA-.css +1 -0
- package/storybook-static/assets/iframe-BUaP2gIF.js +1087 -0
- package/storybook-static/assets/index-5bdJXrkD.js +1 -0
- package/storybook-static/assets/index-CBmvvqzc.js +1 -0
- package/storybook-static/assets/index-CZs7_DA6.js +9 -0
- package/storybook-static/assets/linear-4t_RuQok.js +1 -0
- package/storybook-static/assets/monotone-BYG7Mesf.js +1 -0
- package/storybook-static/assets/path-CbwjOpE9.js +1 -0
- package/storybook-static/assets/preload-helper-C1FmrZbK.js +1 -0
- package/storybook-static/assets/proxy-9Y4F2rF8.js +1 -0
- package/storybook-static/assets/react-18-D4c-_GAk.js +24 -0
- package/storybook-static/assets/transform-NloTqvdv.js +1 -0
- package/storybook-static/favicon-wrapper.svg +46 -0
- package/storybook-static/favicon.svg +1 -0
- package/storybook-static/iframe.html +726 -0
- package/storybook-static/index.html +164 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-4/manager-bundle.js +356 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-4/manager-bundle.js.LEGAL.txt +40 -0
- package/storybook-static/sb-addons/docs-2/manager-bundle.js +151 -0
- package/storybook-static/sb-addons/links-3/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
- package/storybook-static/sb-addons/storybook-5/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
- package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
- package/storybook-static/sb-common-assets/favicon.svg +1 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-module-info.js +797 -0
- package/storybook-static/sb-manager/globals-runtime.js +69653 -0
- package/storybook-static/sb-manager/globals.js +34 -0
- package/storybook-static/sb-manager/runtime.js +13181 -0
- package/storybook-static/vite-inject-mocker-entry.js +18 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import{r as q,j as v}from"./iframe-BUaP2gIF.js";import{s as A,i as ce,c as ue}from"./transform-NloTqvdv.js";import{a as me}from"./array-BKyUJesY.js";import{c as y}from"./path-CbwjOpE9.js";import{t as E,a as $}from"./arc-DgcIQOLP.js";import"./preload-helper-C1FmrZbK.js";function de(t,a){let l=0;if(a===void 0)for(let c of t)(c=+c)&&(l+=c);else{let c=-1;for(let f of t)(f=+a(f,++c,t))&&(l+=f)}return l}function pe(t,a){return a<t?-1:a>t?1:a>=t?0:NaN}function ge(t){return t}function fe(){var t=ge,a=pe,l=null,c=y(0),f=y(E),L=y(0);function s(e){var r,i=(e=me(e)).length,d,_,x=0,w=new Array(i),u=new Array(i),C=+c.apply(this,arguments),h=Math.min(E,Math.max(-E,f.apply(this,arguments)-C)),S,T=Math.min(Math.abs(h)/i,L.apply(this,arguments)),b=T*(h<0?-1:1),n;for(r=0;r<i;++r)(n=u[w[r]=r]=+t(e[r],r,e))>0&&(x+=n);for(a!=null?w.sort(function(o,m){return a(u[o],u[m])}):l!=null&&w.sort(function(o,m){return l(e[o],e[m])}),r=0,_=x?(h-i*b)/x:0;r<i;++r,C=S)d=w[r],n=u[d],S=C+(n>0?n*_:0)+b,u[d]={data:e[d],index:r,value:n,startAngle:C,endAngle:S,padAngle:T};return u}return s.value=function(e){return arguments.length?(t=typeof e=="function"?e:y(+e),s):t},s.sortValues=function(e){return arguments.length?(a=e,l=null,s):a},s.sort=function(e){return arguments.length?(l=e,a=null,s):l},s.startAngle=function(e){return arguments.length?(c=typeof e=="function"?e:y(+e),s):c},s.endAngle=function(e){return arguments.length?(f=typeof e=="function"?e:y(+e),s):f},s.padAngle=function(e){return arguments.length?(L=typeof e=="function"?e:y(+e),s):L},s}const ve="_container_10542_1",he="_title_10542_7",be="_chartContainer_10542_15",ye="_chart_10542_15",xe="_legend_10542_26",we="_legendItem_10542_31",Ce="_legendColor_10542_45",Se="_legendLabel_10542_52",Le="_legendValue_10542_59",_e="_tooltip_10542_65",p={container:ve,title:he,chartContainer:be,chart:ye,legend:xe,legendItem:we,legendColor:Ce,legendLabel:Se,legendValue:Le,tooltip:_e},g=["#6366f1","#8b5cf6","#06b6d4","#10b981","#f59e0b","#ef4444","#ec4899","#84cc16","#f97316","#3b82f6","#8b5cf6","#14b8a6","#f59e0b","#ef4444","#06b6d4","#10b981"],Q=t=>{const a=ue(t);if(!a)return"#ffffff";const l=a.rgb();return(.299*l.r+.587*l.g+.114*l.b)/255>.5?"#000000":"#ffffff"},ie=({data:t,width:a=400,height:l=400,title:c="Distribution",showLegend:f=!0,unit:L="items",centerLabel:s})=>{const e=q.useRef(null),r=Math.min(a,l)/2-20;return q.useEffect(()=>{if(!e.current||!t.length)return;const i=A(e.current);i.selectAll("*").remove();const d=i.append("g").attr("transform",`translate(${a/2},${l/2})`),_=fe().value(n=>n.value).sort(null),x=$().innerRadius(r*.4).outerRadius(r).cornerRadius(4),w=$().innerRadius(r*.7).outerRadius(r*.7),u=A("body").append("div").attr("class",p.tooltip).style("opacity",0).style("position","absolute"),C=_(t),h=de(t,n=>n.value),S=d.selectAll(".arc").data(C).enter().append("g").attr("class","arc");S.append("path").attr("d",n=>x(n)).attr("fill",(n,o)=>n.data.color||g[o%g.length]).attr("stroke","var(--bg-primary)").attr("stroke-width",3).style("cursor","pointer").style("filter","drop-shadow(0 2px 8px rgba(0,0,0,0.15))").on("mouseover",function(n,o){const m=$().innerRadius(r*.4).outerRadius(r*1.05).cornerRadius(4);A(this).transition().duration(200).attr("d",B=>m(B)).style("filter","drop-shadow(0 4px 12px rgba(0,0,0,0.25))"),u.transition().duration(200).style("opacity",1);const V=(o.data.value/h*100).toFixed(1);u.html(`
|
|
2
|
+
<div><strong>${o.data.name}</strong></div>
|
|
3
|
+
<div>Value: ${o.data.value.toLocaleString()}</div>
|
|
4
|
+
<div>${V}% of total</div>
|
|
5
|
+
`).style("left",n.pageX+10+"px").style("top",n.pageY-28+"px")}).on("mouseout",function(n,o){A(this).transition().duration(200).attr("d",m=>x(m)).style("filter","drop-shadow(0 2px 8px rgba(0,0,0,0.15))"),u.transition().duration(500).style("opacity",0)});const T=t.length>0?ce.gamma(2.2)(...t.map((n,o)=>n.color||g[o%g.length]))(.5):"#ffffff",b=Q(T);return d.append("text").attr("text-anchor","middle").attr("alignment-baseline","middle").attr("font-size","20px").attr("font-weight","bold").attr("fill",b).style("text-shadow",b==="#ffffff"?"0 1px 3px rgba(0,0,0,0.5)":"0 1px 3px rgba(255,255,255,0.5)").text(s||"Total"),d.append("text").attr("text-anchor","middle").attr("alignment-baseline","middle").attr("y",22).attr("font-size","16px").attr("font-weight","600").attr("fill",b).style("text-shadow",b==="#ffffff"?"0 1px 2px rgba(0,0,0,0.4)":"0 1px 2px rgba(255,255,255,0.4)").text(`${h.toLocaleString()} ${L}`),S.filter(n=>n.endAngle-n.startAngle>.2).append("text").attr("transform",n=>`translate(${w.centroid(n)})`).attr("text-anchor","middle").attr("alignment-baseline","middle").attr("font-size","13px").attr("fill",(n,o)=>{const m=n.data.color||g[o%g.length];return Q(m)}).attr("font-weight","600").style("pointer-events","none").style("text-shadow",(n,o)=>{const m=n.data.color||g[o%g.length];return`0 1px 2px ${Q(m)==="#ffffff"?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.4)"}`}).text(n=>{const o=n.data.value/h*100;return o>8?`${o.toFixed(0)}%`:""}),()=>{u.remove()}},[t,a,l,r]),v.jsxs("div",{className:p.container,children:[v.jsx("h3",{className:p.title,children:c}),v.jsxs("div",{className:p.chartContainer,children:[v.jsx("svg",{ref:e,width:a,height:l,className:p.chart}),f&&v.jsx("div",{className:p.legend,children:t.map((i,d)=>v.jsxs("div",{className:p.legendItem,children:[v.jsx("span",{className:p.legendColor,style:{backgroundColor:i.color||g[d%g.length]}}),v.jsx("span",{className:p.legendLabel,children:i.name}),v.jsx("span",{className:p.legendValue,children:i.value.toLocaleString()})]},i.name))})]})]})};ie.__docgenInfo={description:"",methods:[],displayName:"PieChart",props:{data:{required:!0,tsType:{name:"Array",elements:[{name:"PieDataPoint"}],raw:"PieDataPoint[]"},description:""},width:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"400",computed:!1}},height:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"400",computed:!1}},title:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'Distribution'",computed:!1}},showLegend:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"true",computed:!1}},unit:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'items'",computed:!1}},centerLabel:{required:!1,tsType:{name:"string"},description:""}}};const ke={title:"Organisms/Charts/PieChart",component:ie,parameters:{layout:"centered"},argTypes:{width:{control:{type:"number",min:300,max:700,step:50}},height:{control:{type:"number",min:300,max:700,step:50}},title:{control:{type:"text"}},showLegend:{control:{type:"boolean"}}}},R={args:{data:[{name:"Work",value:40,color:"#7c3aed"},{name:"Sleep",value:30,color:"#3b82f6"},{name:"Personal",value:20,color:"#10b981"},{name:"Exercise",value:10,color:"#f59e0b"}],width:400,height:400,title:"Daily Time Distribution",showLegend:!1}},D={args:{data:[{name:"Frontend Development",value:35,color:"#8b5cf6"},{name:"Backend Development",value:25,color:"#3b82f6"},{name:"Meetings",value:15,color:"#10b981"},{name:"Code Review",value:10,color:"#f59e0b"},{name:"Documentation",value:8,color:"#ec4899"},{name:"Testing",value:7,color:"#14b8a6"}],width:500,height:500,title:"Project Time Allocation",showLegend:!0}},P={args:{data:[{name:"Q1 2024",value:25e4},{name:"Q2 2024",value:3e5},{name:"Q3 2024",value:28e4},{name:"Q4 2024",value:32e4}],width:450,height:450,title:"Quarterly Revenue Distribution",showLegend:!0}},j={args:{data:[{name:"Company A",value:35,color:"#dc2626"},{name:"Company B",value:28,color:"#2563eb"},{name:"Company C",value:18,color:"#16a34a"},{name:"Company D",value:12,color:"#f59e0b"},{name:"Others",value:7,color:"#6b7280"}],width:500,height:500,title:"Market Share Analysis",showLegend:!0}},k={args:{data:[{name:"Housing",value:1500,color:"#dc2626"},{name:"Food",value:600,color:"#f59e0b"},{name:"Transportation",value:400,color:"#3b82f6"},{name:"Entertainment",value:300,color:"#8b5cf6"},{name:"Utilities",value:200,color:"#10b981"},{name:"Healthcare",value:250,color:"#ec4899"},{name:"Savings",value:750,color:"#059669"}],width:550,height:550,title:"Monthly Expense Breakdown",showLegend:!0}},M={args:{data:[{name:"Yes",value:73,color:"#10b981"},{name:"No",value:27,color:"#ef4444"}],width:350,height:350,title:"Survey Results",showLegend:!1}},N={args:{data:[{name:"JavaScript",value:25},{name:"Python",value:20},{name:"Java",value:15},{name:"TypeScript",value:12},{name:"C++",value:8},{name:"C#",value:6},{name:"Go",value:5},{name:"Rust",value:4},{name:"Swift",value:3},{name:"Kotlin",value:2}],width:600,height:600,title:"Programming Language Usage",showLegend:!0}};var F,O,I;R.parameters={...R.parameters,docs:{...(F=R.parameters)==null?void 0:F.docs,source:{originalSource:`{
|
|
6
|
+
args: {
|
|
7
|
+
data: [{
|
|
8
|
+
name: 'Work',
|
|
9
|
+
value: 40,
|
|
10
|
+
color: '#7c3aed'
|
|
11
|
+
}, {
|
|
12
|
+
name: 'Sleep',
|
|
13
|
+
value: 30,
|
|
14
|
+
color: '#3b82f6'
|
|
15
|
+
}, {
|
|
16
|
+
name: 'Personal',
|
|
17
|
+
value: 20,
|
|
18
|
+
color: '#10b981'
|
|
19
|
+
}, {
|
|
20
|
+
name: 'Exercise',
|
|
21
|
+
value: 10,
|
|
22
|
+
color: '#f59e0b'
|
|
23
|
+
}],
|
|
24
|
+
width: 400,
|
|
25
|
+
height: 400,
|
|
26
|
+
title: 'Daily Time Distribution',
|
|
27
|
+
showLegend: false
|
|
28
|
+
}
|
|
29
|
+
}`,...(I=(O=R.parameters)==null?void 0:O.docs)==null?void 0:I.source}}};var U,H,J;D.parameters={...D.parameters,docs:{...(U=D.parameters)==null?void 0:U.docs,source:{originalSource:`{
|
|
30
|
+
args: {
|
|
31
|
+
data: [{
|
|
32
|
+
name: 'Frontend Development',
|
|
33
|
+
value: 35,
|
|
34
|
+
color: '#8b5cf6'
|
|
35
|
+
}, {
|
|
36
|
+
name: 'Backend Development',
|
|
37
|
+
value: 25,
|
|
38
|
+
color: '#3b82f6'
|
|
39
|
+
}, {
|
|
40
|
+
name: 'Meetings',
|
|
41
|
+
value: 15,
|
|
42
|
+
color: '#10b981'
|
|
43
|
+
}, {
|
|
44
|
+
name: 'Code Review',
|
|
45
|
+
value: 10,
|
|
46
|
+
color: '#f59e0b'
|
|
47
|
+
}, {
|
|
48
|
+
name: 'Documentation',
|
|
49
|
+
value: 8,
|
|
50
|
+
color: '#ec4899'
|
|
51
|
+
}, {
|
|
52
|
+
name: 'Testing',
|
|
53
|
+
value: 7,
|
|
54
|
+
color: '#14b8a6'
|
|
55
|
+
}],
|
|
56
|
+
width: 500,
|
|
57
|
+
height: 500,
|
|
58
|
+
title: 'Project Time Allocation',
|
|
59
|
+
showLegend: true
|
|
60
|
+
}
|
|
61
|
+
}`,...(J=(H=D.parameters)==null?void 0:H.docs)==null?void 0:J.source}}};var z,Y,G;P.parameters={...P.parameters,docs:{...(z=P.parameters)==null?void 0:z.docs,source:{originalSource:`{
|
|
62
|
+
args: {
|
|
63
|
+
data: [{
|
|
64
|
+
name: 'Q1 2024',
|
|
65
|
+
value: 250000
|
|
66
|
+
}, {
|
|
67
|
+
name: 'Q2 2024',
|
|
68
|
+
value: 300000
|
|
69
|
+
}, {
|
|
70
|
+
name: 'Q3 2024',
|
|
71
|
+
value: 280000
|
|
72
|
+
}, {
|
|
73
|
+
name: 'Q4 2024',
|
|
74
|
+
value: 320000
|
|
75
|
+
}],
|
|
76
|
+
width: 450,
|
|
77
|
+
height: 450,
|
|
78
|
+
title: 'Quarterly Revenue Distribution',
|
|
79
|
+
showLegend: true
|
|
80
|
+
}
|
|
81
|
+
}`,...(G=(Y=P.parameters)==null?void 0:Y.docs)==null?void 0:G.source}}};var K,W,X;j.parameters={...j.parameters,docs:{...(K=j.parameters)==null?void 0:K.docs,source:{originalSource:`{
|
|
82
|
+
args: {
|
|
83
|
+
data: [{
|
|
84
|
+
name: 'Company A',
|
|
85
|
+
value: 35,
|
|
86
|
+
color: '#dc2626'
|
|
87
|
+
}, {
|
|
88
|
+
name: 'Company B',
|
|
89
|
+
value: 28,
|
|
90
|
+
color: '#2563eb'
|
|
91
|
+
}, {
|
|
92
|
+
name: 'Company C',
|
|
93
|
+
value: 18,
|
|
94
|
+
color: '#16a34a'
|
|
95
|
+
}, {
|
|
96
|
+
name: 'Company D',
|
|
97
|
+
value: 12,
|
|
98
|
+
color: '#f59e0b'
|
|
99
|
+
}, {
|
|
100
|
+
name: 'Others',
|
|
101
|
+
value: 7,
|
|
102
|
+
color: '#6b7280'
|
|
103
|
+
}],
|
|
104
|
+
width: 500,
|
|
105
|
+
height: 500,
|
|
106
|
+
title: 'Market Share Analysis',
|
|
107
|
+
showLegend: true
|
|
108
|
+
}
|
|
109
|
+
}`,...(X=(W=j.parameters)==null?void 0:W.docs)==null?void 0:X.source}}};var Z,ee,ne;k.parameters={...k.parameters,docs:{...(Z=k.parameters)==null?void 0:Z.docs,source:{originalSource:`{
|
|
110
|
+
args: {
|
|
111
|
+
data: [{
|
|
112
|
+
name: 'Housing',
|
|
113
|
+
value: 1500,
|
|
114
|
+
color: '#dc2626'
|
|
115
|
+
}, {
|
|
116
|
+
name: 'Food',
|
|
117
|
+
value: 600,
|
|
118
|
+
color: '#f59e0b'
|
|
119
|
+
}, {
|
|
120
|
+
name: 'Transportation',
|
|
121
|
+
value: 400,
|
|
122
|
+
color: '#3b82f6'
|
|
123
|
+
}, {
|
|
124
|
+
name: 'Entertainment',
|
|
125
|
+
value: 300,
|
|
126
|
+
color: '#8b5cf6'
|
|
127
|
+
}, {
|
|
128
|
+
name: 'Utilities',
|
|
129
|
+
value: 200,
|
|
130
|
+
color: '#10b981'
|
|
131
|
+
}, {
|
|
132
|
+
name: 'Healthcare',
|
|
133
|
+
value: 250,
|
|
134
|
+
color: '#ec4899'
|
|
135
|
+
}, {
|
|
136
|
+
name: 'Savings',
|
|
137
|
+
value: 750,
|
|
138
|
+
color: '#059669'
|
|
139
|
+
}],
|
|
140
|
+
width: 550,
|
|
141
|
+
height: 550,
|
|
142
|
+
title: 'Monthly Expense Breakdown',
|
|
143
|
+
showLegend: true
|
|
144
|
+
}
|
|
145
|
+
}`,...(ne=(ee=k.parameters)==null?void 0:ee.docs)==null?void 0:ne.source}}};var te,ae,re;M.parameters={...M.parameters,docs:{...(te=M.parameters)==null?void 0:te.docs,source:{originalSource:`{
|
|
146
|
+
args: {
|
|
147
|
+
data: [{
|
|
148
|
+
name: 'Yes',
|
|
149
|
+
value: 73,
|
|
150
|
+
color: '#10b981'
|
|
151
|
+
}, {
|
|
152
|
+
name: 'No',
|
|
153
|
+
value: 27,
|
|
154
|
+
color: '#ef4444'
|
|
155
|
+
}],
|
|
156
|
+
width: 350,
|
|
157
|
+
height: 350,
|
|
158
|
+
title: 'Survey Results',
|
|
159
|
+
showLegend: false
|
|
160
|
+
}
|
|
161
|
+
}`,...(re=(ae=M.parameters)==null?void 0:ae.docs)==null?void 0:re.source}}};var oe,le,se;N.parameters={...N.parameters,docs:{...(oe=N.parameters)==null?void 0:oe.docs,source:{originalSource:`{
|
|
162
|
+
args: {
|
|
163
|
+
data: [{
|
|
164
|
+
name: 'JavaScript',
|
|
165
|
+
value: 25
|
|
166
|
+
}, {
|
|
167
|
+
name: 'Python',
|
|
168
|
+
value: 20
|
|
169
|
+
}, {
|
|
170
|
+
name: 'Java',
|
|
171
|
+
value: 15
|
|
172
|
+
}, {
|
|
173
|
+
name: 'TypeScript',
|
|
174
|
+
value: 12
|
|
175
|
+
}, {
|
|
176
|
+
name: 'C++',
|
|
177
|
+
value: 8
|
|
178
|
+
}, {
|
|
179
|
+
name: 'C#',
|
|
180
|
+
value: 6
|
|
181
|
+
}, {
|
|
182
|
+
name: 'Go',
|
|
183
|
+
value: 5
|
|
184
|
+
}, {
|
|
185
|
+
name: 'Rust',
|
|
186
|
+
value: 4
|
|
187
|
+
}, {
|
|
188
|
+
name: 'Swift',
|
|
189
|
+
value: 3
|
|
190
|
+
}, {
|
|
191
|
+
name: 'Kotlin',
|
|
192
|
+
value: 2
|
|
193
|
+
}],
|
|
194
|
+
width: 600,
|
|
195
|
+
height: 600,
|
|
196
|
+
title: 'Programming Language Usage',
|
|
197
|
+
showLegend: true
|
|
198
|
+
}
|
|
199
|
+
}`,...(se=(le=N.parameters)==null?void 0:le.docs)==null?void 0:se.source}}};const Me=["SimpleDistribution","ProjectTimeBreakdown","QuarterlyRevenue","MarketShare","ExpenseCategories","TwoCategories","ManyCategories"];export{k as ExpenseCategories,N as ManyCategories,j as MarketShare,D as ProjectTimeBreakdown,P as QuarterlyRevenue,R as SimpleDistribution,M as TwoCategories,Me as __namedExportsOrder,ke as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._container_m8v9r_1{background:var(--color-background-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl);display:flex;flex-direction:column;align-items:center}._controls_m8v9r_10{display:flex;justify-content:center;align-items:center;margin-bottom:var(--spacing-xl)}._viewToggle_m8v9r_17{display:flex;gap:4px;background:var(--color-background-tertiary);padding:4px;border-radius:12px;border:1px solid var(--color-border)}._viewButton_m8v9r_26{display:flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:none;border-radius:8px;color:var(--color-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative}._viewButton_m8v9r_26:hover{background:var(--color-surface-hover);transform:translateY(-1px)}._viewButton_m8v9r_26._active_m8v9r_47{background:var(--color-primary);color:var(--color-text-inverse);box-shadow:0 4px 12px #d4af374d}._viewIcon_m8v9r_53{font-size:16px;display:inline-block}._viewLabel_m8v9r_58{display:inline-block}@media (max-width: 640px){._viewLabel_m8v9r_58{display:none}}._legend_m8v9r_68{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--spacing-xl);padding:12px;background:var(--color-background-tertiary);border-radius:12px;border:1px solid var(--color-border);justify-content:center}._legendItem_m8v9r_80{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--color-background-secondary);border:2px solid var(--border-primary);border-radius:20px;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #00000014;position:relative;overflow:hidden}._legendItem_m8v9r_80:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,transparent,var(--color-primary-lighter));opacity:0;transition:opacity .2s ease}._legendItem_m8v9r_80:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026;border-color:var(--color-primary)}._legendItem_m8v9r_80:hover:before{opacity:1}._legendItem_m8v9r_80._inactive_m8v9r_117{opacity:.4;background:var(--color-background-tertiary)}._legendItem_m8v9r_80._inactive_m8v9r_117:hover{opacity:.6}._legendItem_m8v9r_80._inactive_m8v9r_117 ._legendColor_m8v9r_126{background:var(--color-text-tertiary)!important}._legendEmoji_m8v9r_130{font-size:18px;display:inline-block;animation:_bounce_m8v9r_1 2s infinite;animation-delay:var(--animation-delay, 0s)}@keyframes _bounce_m8v9r_1{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}._legendColor_m8v9r_126{width:12px;height:12px;border-radius:50%;transition:all .2s ease;box-shadow:0 2px 4px #0003;position:relative}._legendItem_m8v9r_80:hover ._legendColor_m8v9r_126{transform:scale(1.2)}._legendLabel_m8v9r_155{font-size:13px;font-weight:500;color:var(--color-text);position:relative;z-index:1}._chart_m8v9r_163{display:block;margin:0 auto}._gridLine_m8v9r_168{stroke:var(--color-border);stroke-opacity:.15;stroke-dasharray:4,4}._line_m8v9r_174{fill:none;stroke-width:2.5;transition:opacity .3s ease;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}._xAxis_m8v9r_181,._yAxis_m8v9r_182{color:var(--color-text-secondary);font-size:11px;font-weight:500}._xAxis_m8v9r_181 line,._xAxis_m8v9r_181 path,._yAxis_m8v9r_182 line,._yAxis_m8v9r_182 path{stroke:var(--color-border);stroke-opacity:.3}._xAxis_m8v9r_181 text,._yAxis_m8v9r_182 text{fill:var(--color-text-secondary)}._dataPoint_m8v9r_201{transition:all .3s ease;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}._dataPoint_m8v9r_201:hover{r:6;filter:drop-shadow(0 4px 8px rgba(0,0,0,.3))}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import{r as p,j as c}from"./iframe-BUaP2gIF.js";import{s as ie}from"./transform-NloTqvdv.js";import{t as le,e as ce,l as de,m as me}from"./monotone-BYG7Mesf.js";import{l as ue,a as pe,b as he}from"./linear-4t_RuQok.js";import{t as N}from"./defaultLocale-DJ2q5QjE.js";import"./preload-helper-C1FmrZbK.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";const ge="_container_m8v9r_1",ye="_controls_m8v9r_10",fe="_viewToggle_m8v9r_17",ve="_viewButton_m8v9r_26",we="_active_m8v9r_47",Me="_viewIcon_m8v9r_53",be="_viewLabel_m8v9r_58",_e="_legend_m8v9r_68",xe="_legendItem_m8v9r_80",Se="_inactive_m8v9r_117",Te="_legendColor_m8v9r_126",ke="_legendEmoji_m8v9r_130",Ee="_legendLabel_m8v9r_155",Ce="_chart_m8v9r_163",je="_gridLine_m8v9r_168",qe="_line_m8v9r_174",De="_xAxis_m8v9r_181",Ae="_yAxis_m8v9r_182",Le="_dataPoint_m8v9r_201",n={container:ge,controls:ye,viewToggle:fe,viewButton:ve,active:we,viewIcon:Me,viewLabel:be,legend:_e,legendItem:xe,inactive:Se,legendColor:Te,legendEmoji:ke,legendLabel:Ee,chart:Ce,gridLine:je,line:qe,xAxis:De,yAxis:Ae,dataPoint:Le},Fe={Exercise:"#6BCB77",Meditation:"#4D96FF",Reading:"#FFB319",Water:"#00D9FF",Steps:"#FF6B6B",Sleep:"#9B59B6",Calories:"#FF9F1C",Study:"#C774E8"},ee=({data:t,width:v=800,height:w=400,defaultViewType:b="daily",periodType:M="month",habitColors:R={},habitEmojis:te={}})=>{const D=p.useRef(null),[m,ae]=p.useState(b),[S,$]=p.useState([]),[_,H]=p.useState(null),y={top:20,right:20,bottom:50,left:50},A=v-y.left-y.right,L=w-y.top-y.bottom,x=p.useMemo(()=>Object.keys(t).filter(e=>e!=="dates"),[t]);p.useEffect(()=>{$(x)},[x]);const ne=p.useMemo(()=>{switch(M){case"week":return["daily"];case"month":return["daily","weekly"];case"quarter":return["weekly","monthly"];case"year":return["daily","weekly","monthly","quarterly"];case"allTime":return["monthly","quarterly"];default:return["daily"]}},[M]),F=e=>R[e]||Fe[e]||`hsl(${Math.abs(e.split("").reduce((s,l)=>s+l.charCodeAt(0),0))%360}, 70%, 50%)`,u=p.useMemo(()=>{if(m==="daily"||!t.dates.length)return t;const e={dates:[]},s=new Map;return t.dates.forEach((l,f)=>{const h=new Date(l);let r;switch(m){case"weekly":{const i=new Date(h),g=i.getDay(),T=i.getDate()-g+(g===0?-6:1);i.setDate(T),r=i.toISOString().split("T")[0];break}case"monthly":r=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-01`;break;case"quarterly":{const g=(Math.floor(h.getMonth()/3)+1-1)*3;r=new Date(h.getFullYear(),g,1).toISOString().split("T")[0];break}default:r=l}s.has(r)||s.set(r,[]),s.get(r).push(f)}),e.dates=Array.from(s.keys()).sort(),x.forEach(l=>{e[l]=e.dates.map(f=>{const r=s.get(f).map(i=>t[l][i]).filter(i=>typeof i=="number"&&!isNaN(i));return r.length===0?0:Math.round(r.reduce((i,g)=>i+g,0)/r.length)})}),e},[t,m,x]),re=e=>{$(s=>s.includes(e)?s.filter(l=>l!==e):[...s,e])};p.useEffect(()=>{if(!D.current||u.dates.length===0)return;const e=ie(D.current);e.selectAll("*").remove();const s=e.append("g").attr("transform",`translate(${y.left},${y.top})`),l=u.dates.map(a=>new Date(a)),f=le().domain(ce(l)).range([0,A]),h=Math.max(...S.flatMap(a=>u[a].filter(o=>typeof o=="number"))),r=ue().domain([0,h*1.1]).range([L,0]);s.selectAll(".grid-line-y").data(r.ticks(5)).enter().append("line").attr("class",n.gridLine).attr("x1",0).attr("y1",a=>r(a)).attr("x2",A).attr("y2",a=>r(a));const i=de().x(a=>f(a[0])).y(a=>r(a[1])).curve(me);S.forEach(a=>{const o=l.map((d,oe)=>[d,u[a][oe]]).filter(d=>typeof d[1]=="number");s.append("path").datum(o).attr("class",n.line).attr("d",i).attr("stroke",F(a)).attr("opacity",_&&_!==a?.3:1),s.selectAll(`.circle-${a}`).data(o).enter().append("circle").attr("class",n.dataPoint).attr("cx",d=>f(d[0])).attr("cy",d=>r(d[1])).attr("r",4).attr("fill",F(a)).attr("opacity",_&&_!==a?.3:1)});const g=a=>{const o=new Date(a);o.setHours(0,0,0,0),o.setDate(o.getDate()+3-(o.getDay()+6)%7);const d=new Date(o.getFullYear(),0,4);return 1+Math.round(((o.getTime()-d.getTime())/864e5-3+(d.getDay()+6)%7)/7)},T=(()=>{switch(m){case"daily":return N("%Y-%m-%d");case"weekly":return a=>{const o=g(a);return`${a.getFullYear()}-W${o.toString().padStart(2,"0")}`};case"monthly":return N("%Y-%m");case"quarterly":return a=>{const o=Math.floor(a.getMonth()/3)+1;return`${a.getFullYear()}-Q${o}`};default:return N("%Y-%m-%d")}})(),I=(()=>{switch(m){case"daily":return Math.min(10,u.dates.length);case"weekly":return Math.min(12,u.dates.length);case"monthly":return Math.min(12,u.dates.length);case"quarterly":return u.dates.length;default:return}})(),W=pe(f).tickFormat(a=>T(a));m==="quarterly"?W.tickValues(l):I&&W.ticks(I);const se=s.append("g").attr("class",n.xAxis).attr("transform",`translate(0,${L})`).call(W);(m==="daily"||m==="weekly")&&se.selectAll("text").style("text-anchor","end").attr("dx","-.8em").attr("dy",".15em").attr("transform","rotate(-45)"),s.append("g").attr("class",n.yAxis).call(he(r))},[u,S,A,L,y,_,R]);const V={daily:{icon:"📅",label:"Daily"},weekly:{icon:"📆",label:"Weekly"},monthly:{icon:"🗓️",label:"Monthly"},quarterly:{icon:"📊",label:"Quarterly"}};return c.jsxs("div",{className:n.container,children:[c.jsx("div",{className:n.controls,children:c.jsx("div",{className:n.viewToggle,children:ne.map(e=>c.jsxs("button",{className:`${n.viewButton} ${m===e?n.active:""}`,onClick:()=>ae(e),title:V[e].label,children:[c.jsx("span",{className:n.viewIcon,children:V[e].icon}),c.jsx("span",{className:n.viewLabel,children:V[e].label})]},e))})}),c.jsx("div",{className:n.legend,children:x.map(e=>c.jsxs("button",{className:`${n.legendItem} ${S.includes(e)?"":n.inactive}`,onClick:()=>re(e),onMouseEnter:()=>H(e),onMouseLeave:()=>H(null),children:[c.jsx("span",{className:n.legendEmoji,children:te[e]||"📊"}),c.jsx("span",{className:n.legendColor,style:{backgroundColor:F(e)}}),c.jsx("span",{className:n.legendLabel,children:e})]},e))}),c.jsx("svg",{ref:D,width:v,height:w,className:n.chart})]})};ee.__docgenInfo={description:"",methods:[],displayName:"QuantifiableHabitsChart",props:{data:{required:!0,tsType:{name:"ChartData"},description:""},width:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"800",computed:!1}},height:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"400",computed:!1}},defaultViewType:{required:!1,tsType:{name:"union",raw:"'daily' | 'weekly' | 'monthly' | 'quarterly'",elements:[{name:"literal",value:"'daily'"},{name:"literal",value:"'weekly'"},{name:"literal",value:"'monthly'"},{name:"literal",value:"'quarterly'"}]},description:"",defaultValue:{value:"'daily'",computed:!1}},periodType:{required:!1,tsType:{name:"union",raw:"'week' | 'month' | 'quarter' | 'year' | 'allTime'",elements:[{name:"literal",value:"'week'"},{name:"literal",value:"'month'"},{name:"literal",value:"'quarter'"},{name:"literal",value:"'year'"},{name:"literal",value:"'allTime'"}]},description:"",defaultValue:{value:"'month'",computed:!1}},habitColors:{required:!1,tsType:{name:"signature",type:"object",raw:"{ [key: string]: string }",signature:{properties:[{key:{name:"string"},value:{name:"string",required:!0}}]}},description:"",defaultValue:{value:"{}",computed:!1}},habitEmojis:{required:!1,tsType:{name:"signature",type:"object",raw:"{ [key: string]: string }",signature:{properties:[{key:{name:"string"},value:{name:"string",required:!0}}]}},description:"",defaultValue:{value:"{}",computed:!1}}}};const Oe={title:"Organisms/Charts/QuantifiableHabitsChart",component:ee,parameters:{layout:"centered"},argTypes:{width:{control:{type:"number",min:400,max:1200,step:50}},height:{control:{type:"number",min:200,max:600,step:50}},defaultViewType:{control:{type:"select"},options:["daily","weekly","monthly","quarterly"]},periodType:{control:{type:"select"},options:["week","month","quarter","year","allTime"]}}},q=t=>{const v=[],w=new Date;for(let b=t-1;b>=0;b--){const M=new Date(w);M.setDate(M.getDate()-b),v.push(M.toISOString().split("T")[0])}return v},k={args:{data:(()=>{const t=q(30);return{dates:t,Exercise:t.map(()=>Math.floor(Math.random()*60)+20),Reading:t.map(()=>Math.floor(Math.random()*120)+30),Water:t.map(()=>Math.floor(Math.random()*8)+2),Steps:t.map(()=>Math.floor(Math.random()*15e3)+5e3)}})(),width:900,height:400,defaultViewType:"daily",periodType:"month",habitColors:{Exercise:"#10b981",Reading:"#8b5cf6",Water:"#3b82f6",Steps:"#f59e0b"},habitEmojis:{Exercise:"🏃",Reading:"📚",Water:"💧",Steps:"👟"}}},E={args:{data:(()=>{const t=q(90);return{dates:t,Meditation:t.map(()=>Math.floor(Math.random()*30)+10),Study:t.map(()=>Math.floor(Math.random()*180)+60),Sleep:t.map(()=>Math.floor(Math.random()*3)+6)}})(),width:900,height:400,defaultViewType:"weekly",periodType:"quarter",habitColors:{Meditation:"#a78bfa",Study:"#34d399",Sleep:"#60a5fa"},habitEmojis:{Meditation:"🧘",Study:"📖",Sleep:"😴"}}},C={args:{data:(()=>{const t=q(365);return{dates:t,Coding:t.map(()=>Math.floor(Math.random()*240)+120),Exercise:t.map(()=>Math.floor(Math.random()*90)+30),Learning:t.map(()=>Math.floor(Math.random()*120)+60),Socializing:t.map(()=>Math.floor(Math.random()*180)+60)}})(),width:1e3,height:450,defaultViewType:"monthly",periodType:"year",habitColors:{Coding:"#7c3aed",Exercise:"#10b981",Learning:"#f59e0b",Socializing:"#ec4899"},habitEmojis:{Coding:"💻",Exercise:"💪",Learning:"🎓",Socializing:"👥"}}},j={args:{data:(()=>{const t=q(30);return{dates:t,Weight:t.map((v,w)=>70+Math.sin(w/5)*2+Math.random())}})(),width:800,height:300,defaultViewType:"daily",periodType:"month",habitColors:{Weight:"#3b82f6"},habitEmojis:{Weight:"⚖️"}}};var B,O,Y;k.parameters={...k.parameters,docs:{...(B=k.parameters)==null?void 0:B.docs,source:{originalSource:`{
|
|
2
|
+
args: {
|
|
3
|
+
data: (() => {
|
|
4
|
+
const dates = generateDateRange(30);
|
|
5
|
+
return {
|
|
6
|
+
dates,
|
|
7
|
+
Exercise: dates.map(() => Math.floor(Math.random() * 60) + 20),
|
|
8
|
+
Reading: dates.map(() => Math.floor(Math.random() * 120) + 30),
|
|
9
|
+
Water: dates.map(() => Math.floor(Math.random() * 8) + 2),
|
|
10
|
+
Steps: dates.map(() => Math.floor(Math.random() * 15000) + 5000)
|
|
11
|
+
};
|
|
12
|
+
})(),
|
|
13
|
+
width: 900,
|
|
14
|
+
height: 400,
|
|
15
|
+
defaultViewType: 'daily',
|
|
16
|
+
periodType: 'month',
|
|
17
|
+
habitColors: {
|
|
18
|
+
Exercise: '#10b981',
|
|
19
|
+
Reading: '#8b5cf6',
|
|
20
|
+
Water: '#3b82f6',
|
|
21
|
+
Steps: '#f59e0b'
|
|
22
|
+
},
|
|
23
|
+
habitEmojis: {
|
|
24
|
+
Exercise: '🏃',
|
|
25
|
+
Reading: '📚',
|
|
26
|
+
Water: '💧',
|
|
27
|
+
Steps: '👟'
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}`,...(Y=(O=k.parameters)==null?void 0:O.docs)==null?void 0:Y.source}}};var z,Q,P;E.parameters={...E.parameters,docs:{...(z=E.parameters)==null?void 0:z.docs,source:{originalSource:`{
|
|
31
|
+
args: {
|
|
32
|
+
data: (() => {
|
|
33
|
+
const dates = generateDateRange(90);
|
|
34
|
+
return {
|
|
35
|
+
dates,
|
|
36
|
+
Meditation: dates.map(() => Math.floor(Math.random() * 30) + 10),
|
|
37
|
+
Study: dates.map(() => Math.floor(Math.random() * 180) + 60),
|
|
38
|
+
Sleep: dates.map(() => Math.floor(Math.random() * 3) + 6)
|
|
39
|
+
};
|
|
40
|
+
})(),
|
|
41
|
+
width: 900,
|
|
42
|
+
height: 400,
|
|
43
|
+
defaultViewType: 'weekly',
|
|
44
|
+
periodType: 'quarter',
|
|
45
|
+
habitColors: {
|
|
46
|
+
Meditation: '#a78bfa',
|
|
47
|
+
Study: '#34d399',
|
|
48
|
+
Sleep: '#60a5fa'
|
|
49
|
+
},
|
|
50
|
+
habitEmojis: {
|
|
51
|
+
Meditation: '🧘',
|
|
52
|
+
Study: '📖',
|
|
53
|
+
Sleep: '😴'
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}`,...(P=(Q=E.parameters)==null?void 0:Q.docs)==null?void 0:P.source}}};var G,K,U;C.parameters={...C.parameters,docs:{...(G=C.parameters)==null?void 0:G.docs,source:{originalSource:`{
|
|
57
|
+
args: {
|
|
58
|
+
data: (() => {
|
|
59
|
+
const dates = generateDateRange(365);
|
|
60
|
+
return {
|
|
61
|
+
dates,
|
|
62
|
+
Coding: dates.map(() => Math.floor(Math.random() * 240) + 120),
|
|
63
|
+
Exercise: dates.map(() => Math.floor(Math.random() * 90) + 30),
|
|
64
|
+
Learning: dates.map(() => Math.floor(Math.random() * 120) + 60),
|
|
65
|
+
Socializing: dates.map(() => Math.floor(Math.random() * 180) + 60)
|
|
66
|
+
};
|
|
67
|
+
})(),
|
|
68
|
+
width: 1000,
|
|
69
|
+
height: 450,
|
|
70
|
+
defaultViewType: 'monthly',
|
|
71
|
+
periodType: 'year',
|
|
72
|
+
habitColors: {
|
|
73
|
+
Coding: '#7c3aed',
|
|
74
|
+
Exercise: '#10b981',
|
|
75
|
+
Learning: '#f59e0b',
|
|
76
|
+
Socializing: '#ec4899'
|
|
77
|
+
},
|
|
78
|
+
habitEmojis: {
|
|
79
|
+
Coding: '💻',
|
|
80
|
+
Exercise: '💪',
|
|
81
|
+
Learning: '🎓',
|
|
82
|
+
Socializing: '👥'
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}`,...(U=(K=C.parameters)==null?void 0:K.docs)==null?void 0:U.source}}};var X,J,Z;j.parameters={...j.parameters,docs:{...(X=j.parameters)==null?void 0:X.docs,source:{originalSource:`{
|
|
86
|
+
args: {
|
|
87
|
+
data: (() => {
|
|
88
|
+
const dates = generateDateRange(30);
|
|
89
|
+
return {
|
|
90
|
+
dates,
|
|
91
|
+
Weight: dates.map((_, i) => 70 + Math.sin(i / 5) * 2 + Math.random())
|
|
92
|
+
};
|
|
93
|
+
})(),
|
|
94
|
+
width: 800,
|
|
95
|
+
height: 300,
|
|
96
|
+
defaultViewType: 'daily',
|
|
97
|
+
periodType: 'month',
|
|
98
|
+
habitColors: {
|
|
99
|
+
Weight: '#3b82f6'
|
|
100
|
+
},
|
|
101
|
+
habitEmojis: {
|
|
102
|
+
Weight: '⚖️'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}`,...(Z=(J=j.parameters)==null?void 0:J.docs)==null?void 0:Z.source}}};const Ye=["DailyHabits","WeeklyAverages","YearlyOverview","SingleHabit"];export{k as DailyHabits,j as SingleHabit,E as WeeklyAverages,C as YearlyOverview,Ye as __namedExportsOrder,Oe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._searchContainer_on5sv_1{position:relative;width:100%;max-width:600px}._searchInputWrapper_on5sv_7{position:relative;display:flex;align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;transition:border-color .2s ease}._searchInputWrapper_on5sv_7:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #0500f21a}._searchIcon_on5sv_23{position:absolute;left:var(--spacing-md);color:var(--color-text-secondary);pointer-events:none;z-index:1}._searchInput_on5sv_7{flex:1;padding:var(--spacing-sm) var(--spacing-xl);padding-left:calc(var(--spacing-xl) + 20px);padding-right:calc(var(--spacing-xl) + 20px);border:none;outline:none;font-size:var(--font-size-base);color:var(--color-text);background:transparent;min-width:250px}@media (max-width: 768px){._searchInput_on5sv_7{padding:var(--spacing-sm) var(--spacing-md);padding-left:calc(var(--spacing-md) + 20px);padding-right:calc(var(--spacing-md) + 20px);min-width:0;width:100%}._searchContainer_on5sv_1{max-width:100%}}._searchInput_on5sv_7::placeholder{color:var(--color-text-tertiary)}._clearButton_on5sv_62{position:absolute;right:140px;padding:var(--spacing-xs);background:none;border:none;color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:color .2s ease,background .2s ease}._clearButton_on5sv_62:hover{color:var(--color-text);background:var(--color-surface-hover)}._filterSelect_on5sv_82{padding:var(--spacing-sm) var(--spacing-md);border:none;border-left:1px solid var(--color-border);background:var(--color-background-secondary);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;outline:none;min-width:100px}._filterSelect_on5sv_82:hover{background:var(--color-surface-hover)}._resultsDropdown_on5sv_98{position:absolute;top:calc(100% + var(--spacing-sm));left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:400px;overflow-y:auto;z-index:1000}._loadingState_on5sv_112,._emptyState_on5sv_113{padding:var(--spacing-lg);text-align:center;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm)}._spinner_on5sv_123{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:_spin_on5sv_123 .8s linear infinite}@keyframes _spin_on5sv_123{to{transform:rotate(360deg)}}._resultsGroups_on5sv_138{padding:var(--spacing-sm) 0}._resultGroup_on5sv_142{border-bottom:1px solid var(--color-border)}._resultGroup_on5sv_142:last-child{border-bottom:none}._groupHeader_on5sv_150{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background-secondary);font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:500}._groupIcon_on5sv_161{width:16px;height:16px}._groupTitle_on5sv_166{flex:1}._groupCount_on5sv_170{background:var(--color-border);padding:2px 6px;border-radius:var(--radius-sm);font-size:12px}._groupResults_on5sv_177{padding:var(--spacing-xs) 0}._resultItem_on5sv_181{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;cursor:pointer;text-align:left;transition:background .2s ease}._resultItem_on5sv_181:hover{background:var(--color-surface-hover)}._resultItem_on5sv_181._highlighted_on5sv_198{background:var(--color-primary);color:var(--color-text-inverse);transform:translate(4px);transition:all .2s ease}._resultItem_on5sv_181._highlighted_on5sv_198 ._resultTitle_on5sv_205{color:var(--color-text-inverse)}._resultItem_on5sv_181._highlighted_on5sv_198 ._resultSubtitle_on5sv_209{color:#fffc}._resultItem_on5sv_181._highlighted_on5sv_198 ._resultMeta_on5sv_213{color:#ffffffb3}._resultContent_on5sv_217{flex:1;min-width:0}._resultTitle_on5sv_205{font-size:var(--font-size-base);color:var(--color-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._resultSubtitle_on5sv_209{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._resultMeta_on5sv_213{font-size:var(--font-size-sm);color:var(--color-text-tertiary);white-space:nowrap}._highlight_on5sv_198{background:#ffeb3b66;color:inherit;font-weight:600;padding:0 2px;border-radius:2px}._resultItem_on5sv_181._highlighted_on5sv_198 ._highlight_on5sv_198{background:#ffffff4d;color:var(--color-text-inverse)}@media (max-width: 768px){._searchContainer_on5sv_1{max-width:100%}._filterSelect_on5sv_82{min-width:80px;font-size:12px;padding:var(--spacing-sm)}._resultsDropdown_on5sv_98{max-height:300px}._clearButton_on5sv_62{right:90px}}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import{r as c,j as r}from"./iframe-BUaP2gIF.js";import{f as Le,m as Ee,e as Fe,n as Ne,o as Pe,p as qe,q as Je}from"./index-5bdJXrkD.js";import{m as B}from"./proxy-9Y4F2rF8.js";import{A as Xe}from"./index-CZs7_DA6.js";import"./preload-helper-C1FmrZbK.js";const Ye="_searchContainer_on5sv_1",ze="_searchInputWrapper_on5sv_7",Ze="_searchIcon_on5sv_23",et="_searchInput_on5sv_7",tt="_clearButton_on5sv_62",rt="_filterSelect_on5sv_82",st="_resultsDropdown_on5sv_98",nt="_loadingState_on5sv_112",at="_emptyState_on5sv_113",ot="_spinner_on5sv_123",lt="_resultsGroups_on5sv_138",ct="_resultGroup_on5sv_142",it="_groupHeader_on5sv_150",ut="_groupIcon_on5sv_161",dt="_groupTitle_on5sv_166",pt="_groupCount_on5sv_170",mt="_groupResults_on5sv_177",ht="_resultItem_on5sv_181",gt="_highlighted_on5sv_198",St="_resultTitle_on5sv_205",ft="_resultSubtitle_on5sv_209",yt="_resultMeta_on5sv_213",Ct="_resultContent_on5sv_217",wt="_highlight_on5sv_198",s={searchContainer:Ye,searchInputWrapper:ze,searchIcon:Ze,searchInput:et,clearButton:tt,filterSelect:rt,resultsDropdown:st,loadingState:nt,emptyState:at,spinner:ot,resultsGroups:lt,resultGroup:ct,groupHeader:it,groupIcon:ut,groupTitle:dt,groupCount:pt,groupResults:mt,resultItem:ht,highlighted:gt,resultTitle:St,resultSubtitle:ft,resultMeta:yt,resultContent:Ct,highlight:wt},bt=[{value:"all",label:"All",icon:Le},{value:"projects",label:"Projects",icon:Ee},{value:"clients",label:"Clients",icon:Fe},{value:"contacts",label:"Contacts",icon:Ne},{value:"interactions",label:"Interactions",icon:Pe},{value:"team",label:"Team",icon:qe}],vt={projects:Ee,clients:Fe,contacts:Ne,interactions:Pe,team:qe},Ae=({className:e,placeholder:h="Search (Ctrl+Space)...",onSearch:d,onResultClick:l,onClear:m,debounceDelay:o=300,minSearchLength:g=2,showFilter:R=!0,enableKeyboardShortcut:W=!0,filterOptions:Oe,entityIcons:Ge})=>{var J;const Q=Oe??bt,Be=Ge??vt,[f,A]=c.useState(""),[M,We]=c.useState(((J=Q[0])==null?void 0:J.value)??"all"),[i,w]=c.useState([]),[Qe,U]=c.useState(!1),[v,p]=c.useState(!1),[b,S]=c.useState(-1),O=c.useRef(null),k=c.useRef(null),_=c.useRef(),G=c.useRef(null),K=c.useCallback(async(t,n)=>{if(t.trim().length<g){w([]),p(!1);return}if(!d){w([]),p(!1);return}U(!0);try{const a=await d(t,n);w(a),p(a.length>0),S(-1)}catch(a){console.error("Search error:",a),w([]),p(!1)}finally{U(!1)}},[d,g]);c.useEffect(()=>(_.current&&clearTimeout(_.current),f.trim()?_.current=setTimeout(()=>{K(f,M)},o):(w([]),p(!1)),()=>{_.current&&clearTimeout(_.current)}),[f,M,K,o]),c.useEffect(()=>{const t=n=>{O.current&&!O.current.contains(n.target)&&(p(!1),S(-1))};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[]),c.useEffect(()=>{if(!W)return;const t=n=>{var a,u;(n.ctrlKey||n.metaKey)&&n.code==="Space"&&(n.preventDefault(),(a=k.current)==null||a.focus(),(u=k.current)==null||u.select())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[W]),c.useEffect(()=>{if(b>=0&&G.current){const t=G.current.querySelector(`[data-result-index="${b}"]`);t&&t.scrollIntoView({behavior:"smooth",block:"nearest"})}},[b]);const Ue=t=>{var n;switch(t.key){case"ArrowDown":t.preventDefault(),!v&&i.length>0?(p(!0),S(0)):i.length>0&&S(a=>a<i.length-1?a+1:0);break;case"ArrowUp":t.preventDefault(),v&&i.length>0&&S(a=>a>0?a-1:i.length-1);break;case"Enter":if(t.preventDefault(),!v&&i.length>0)p(!0),S(0);else if(i.length>0){const a=b>=0?b:0;a<i.length&&H(i[a])}break;case"Escape":p(!1),S(-1),(n=k.current)==null||n.blur();break}},H=t=>{l&&l(t),A(""),p(!1),S(-1)},Ke=()=>{var t;A(""),w([]),p(!1),S(-1),(t=k.current)==null||t.focus(),m&&m()},He=i.reduce((t,n)=>(t[n.type]||(t[n.type]=[]),t[n.type].push(n),t),{}),V=(t,n)=>{if(!t||!n.trim())return t||"";const a=new RegExp(`(${n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return t.split(a).map((C,Ve)=>a.test(C)?r.jsx("mark",{className:s.highlight,children:C},Ve):C)};return r.jsxs("div",{ref:O,className:`${s.searchContainer} ${e||""}`,children:[r.jsxs("div",{className:s.searchInputWrapper,children:[r.jsx(Le,{className:s.searchIcon}),r.jsx("input",{ref:k,type:"text",value:f,onChange:t=>A(t.target.value),onKeyDown:Ue,onFocus:()=>f.trim()&&i.length>0&&p(!0),placeholder:h,className:s.searchInput,"aria-label":"Search","aria-expanded":v,"aria-controls":"search-results","aria-autocomplete":"list"}),f&&r.jsx(B.button,{className:s.clearButton,onClick:Ke,whileHover:{scale:1.1},whileTap:{scale:.9},initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},children:r.jsx(Je,{})}),R&&r.jsx("select",{value:M,onChange:t=>We(t.target.value),className:s.filterSelect,"aria-label":"Filter search results",children:Q.map(t=>r.jsx("option",{value:t.value,children:t.label},t.value))})]}),r.jsx(Xe,{children:v&&r.jsx(B.div,{ref:G,id:"search-results",className:s.resultsDropdown,initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},children:Qe?r.jsxs("div",{className:s.loadingState,children:[r.jsx("div",{className:s.spinner}),r.jsx("span",{children:"Searching..."})]}):i.length===0?r.jsxs("div",{className:s.emptyState,children:['No results found for "',f,'"']}):r.jsx("div",{className:s.resultsGroups,children:Object.entries(He).map(([t,n])=>{const a=Be[t];return r.jsxs("div",{className:s.resultGroup,children:[r.jsxs("div",{className:s.groupHeader,children:[a&&r.jsx(a,{className:s.groupIcon}),r.jsx("span",{className:s.groupTitle,children:t.charAt(0).toUpperCase()+t.slice(1)}),r.jsx("span",{className:s.groupCount,children:n.length})]}),r.jsx("div",{className:s.groupResults,children:n.map(u=>{const C=i.indexOf(u);return r.jsxs(B.button,{"data-result-index":C,className:`${s.resultItem} ${b===C?s.highlighted:""}`,onClick:()=>H(u),whileHover:{x:4},onMouseEnter:()=>S(C),children:[r.jsxs("div",{className:s.resultContent,children:[r.jsx("div",{className:s.resultTitle,children:V(u.title||"Untitled",f)}),u.subtitle&&r.jsx("div",{className:s.resultSubtitle,children:V(u.subtitle,f)})]}),u.meta&&r.jsx("div",{className:s.resultMeta,children:u.meta})]},`${u.type}-${u.id}`)})})]},t)})})})})]})};Ae.__docgenInfo={description:"",methods:[],displayName:"SearchBar",props:{className:{required:!1,tsType:{name:"string"},description:""},placeholder:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"Search (Ctrl+Space)..."',computed:!1}},onSearch:{required:!1,tsType:{name:"signature",type:"function",raw:"(query: string, filter: string) => Promise<SearchResult[]>",signature:{arguments:[{type:{name:"string"},name:"query"},{type:{name:"string"},name:"filter"}],return:{name:"Promise",elements:[{name:"Array",elements:[{name:"SearchResult"}],raw:"SearchResult[]"}],raw:"Promise<SearchResult[]>"}}},description:""},onResultClick:{required:!1,tsType:{name:"signature",type:"function",raw:"(result: SearchResult) => void",signature:{arguments:[{type:{name:"SearchResult"},name:"result"}],return:{name:"void"}}},description:""},onClear:{required:!1,tsType:{name:"signature",type:"function",raw:"() => void",signature:{arguments:[],return:{name:"void"}}},description:""},debounceDelay:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"300",computed:!1}},minSearchLength:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"2",computed:!1}},showFilter:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"true",computed:!1}},enableKeyboardShortcut:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"true",computed:!1}},filterOptions:{required:!1,tsType:{name:"Array",elements:[{name:"FilterOption"}],raw:"FilterOption[]"},description:""},entityIcons:{required:!1,tsType:{name:"signature",type:"object",raw:"{ [key: string]: React.ElementType }",signature:{properties:[{key:{name:"string"},value:{name:"ReactElementType",raw:"React.ElementType",required:!0}}]}},description:""}}};const Dt={title:"Molecules/SearchBar",component:Ae,parameters:{layout:"centered",docs:{description:{component:"A powerful search bar component with filtering, keyboard navigation, and grouped results display."}}},tags:["autodocs"],argTypes:{placeholder:{control:"text",description:"Placeholder text for the search input"},debounceDelay:{control:{type:"number",min:0,max:1e3,step:50},description:"Delay in ms before triggering search"},minSearchLength:{control:{type:"number",min:1,max:5},description:"Minimum characters required to trigger search"},showFilter:{control:"boolean",description:"Show/hide the filter dropdown"},enableKeyboardShortcut:{control:"boolean",description:"Enable Ctrl+Space to focus search"}}},Me=[{id:"1",type:"projects",title:"Website Redesign",subtitle:"E-commerce Platform",meta:"Active"},{id:"2",type:"projects",title:"Mobile App Development",subtitle:"iOS & Android",meta:"In Progress"},{id:"3",type:"projects",title:"API Integration",subtitle:"Payment Gateway",meta:"Completed"},{id:"4",type:"projects",title:"Database Migration",subtitle:"PostgreSQL to MongoDB",meta:"Planning"},{id:"5",type:"clients",title:"Acme Corporation",subtitle:"Technology Partner",meta:"Premium"},{id:"6",type:"clients",title:"Global Industries",subtitle:"Manufacturing",meta:"Standard"},{id:"7",type:"clients",title:"StartUp Inc",subtitle:"SaaS Platform",meta:"Growth"},{id:"8",type:"contacts",title:"John Doe",subtitle:"john@example.com",meta:"CEO"},{id:"9",type:"contacts",title:"Jane Smith",subtitle:"jane@example.com",meta:"CTO"},{id:"10",type:"contacts",title:"Bob Johnson",subtitle:"bob@example.com",meta:"Developer"},{id:"11",type:"team",title:"Alice Williams",subtitle:"Frontend Developer",meta:"Senior"},{id:"12",type:"team",title:"Charlie Brown",subtitle:"Backend Developer",meta:"Mid-level"},{id:"13",type:"team",title:"Diana Prince",subtitle:"UI/UX Designer",meta:"Lead"},{id:"14",type:"interactions",title:"Meeting with Client",subtitle:"Discussed project scope",meta:"2 days ago"},{id:"15",type:"interactions",title:"Code Review",subtitle:"PR #123 approved",meta:"Yesterday"},{id:"16",type:"interactions",title:"Sprint Planning",subtitle:"Q4 roadmap defined",meta:"Last week"}],y=async(e,h)=>{await new Promise(l=>setTimeout(l,500));const d=e.toLowerCase();return Me.filter(l=>{var m,o;return h!=="all"&&l.type!==h?!1:((m=l.title)==null?void 0:m.toLowerCase().includes(d))||((o=l.subtitle)==null?void 0:o.toLowerCase().includes(d))})},x={args:{placeholder:"Search...",onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},I={args:{placeholder:"Search with filter...",showFilter:!0,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},D={args:{placeholder:"Search without filter...",showFilter:!1,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},$={args:{placeholder:"Fast search (100ms debounce)...",debounceDelay:100,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},j={args:{placeholder:"Slow search (1000ms debounce)...",debounceDelay:1e3,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},T={args:{placeholder:"Type at least 3 characters...",minSearchLength:3,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},L={args:{placeholder:"Search (no keyboard shortcut)...",enableKeyboardShortcut:!1,onSearch:y,onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},E={args:{placeholder:"Search (always empty)...",onSearch:async()=>(await new Promise(e=>setTimeout(e,500)),[]),onResultClick:e=>{console.log("Clicked result:",e)}}},F={args:{placeholder:"Search (will error)...",onSearch:async()=>{throw await new Promise(e=>setTimeout(e,500)),new Error("Search failed!")},onResultClick:e=>{console.log("Clicked result:",e)}}},N={args:{placeholder:"Instant search (no debounce)...",debounceDelay:0,minSearchLength:1,onSearch:async(e,h)=>{const d=e.toLowerCase();return Me.filter(l=>{var m,o;return h!=="all"&&l.type!==h?!1:((m=l.title)==null?void 0:m.toLowerCase().includes(d))||((o=l.subtitle)==null?void 0:o.toLowerCase().includes(d))})},onResultClick:e=>{console.log("Clicked result:",e),alert(`Selected: ${e.title}`)}}},P={args:{placeholder:"Search with custom actions...",onSearch:y,onResultClick:e=>{console.log("Custom action for:",e),alert(`Custom action: ${e.type} - ${e.title}`)},onClear:()=>{console.log("Search cleared!"),alert("Search was cleared")}}},q={args:{placeholder:"Search large dataset...",onSearch:async(e,h)=>{await new Promise(o=>setTimeout(o,300));const d=["projects","clients","contacts","team","interactions"],l=[];for(let o=0;o<100;o++){const g=d[o%d.length];(h==="all"||h===g)&&l.push({id:`large-${o}`,type:g,title:`${g.charAt(0).toUpperCase()+g.slice(1)} Item ${o}`,subtitle:`Description for item ${o} containing ${e}`,meta:`Meta ${o}`})}const m=e.toLowerCase();return l.filter(o=>{var g,R;return((g=o.title)==null?void 0:g.toLowerCase().includes(m))||((R=o.subtitle)==null?void 0:R.toLowerCase().includes(m))}).slice(0,20)},onResultClick:e=>{console.log("Selected from large dataset:",e),alert(`Selected: ${e.title}`)}}};var X,Y,z;x.parameters={...x.parameters,docs:{...(X=x.parameters)==null?void 0:X.docs,source:{originalSource:`{
|
|
2
|
+
args: {
|
|
3
|
+
placeholder: 'Search...',
|
|
4
|
+
onSearch: mockSearch,
|
|
5
|
+
onResultClick: result => {
|
|
6
|
+
console.log('Clicked result:', result);
|
|
7
|
+
alert(\`Selected: \${result.title}\`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}`,...(z=(Y=x.parameters)==null?void 0:Y.docs)==null?void 0:z.source}}};var Z,ee,te;I.parameters={...I.parameters,docs:{...(Z=I.parameters)==null?void 0:Z.docs,source:{originalSource:`{
|
|
11
|
+
args: {
|
|
12
|
+
placeholder: 'Search with filter...',
|
|
13
|
+
showFilter: true,
|
|
14
|
+
onSearch: mockSearch,
|
|
15
|
+
onResultClick: result => {
|
|
16
|
+
console.log('Clicked result:', result);
|
|
17
|
+
alert(\`Selected: \${result.title}\`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}`,...(te=(ee=I.parameters)==null?void 0:ee.docs)==null?void 0:te.source}}};var re,se,ne;D.parameters={...D.parameters,docs:{...(re=D.parameters)==null?void 0:re.docs,source:{originalSource:`{
|
|
21
|
+
args: {
|
|
22
|
+
placeholder: 'Search without filter...',
|
|
23
|
+
showFilter: false,
|
|
24
|
+
onSearch: mockSearch,
|
|
25
|
+
onResultClick: result => {
|
|
26
|
+
console.log('Clicked result:', result);
|
|
27
|
+
alert(\`Selected: \${result.title}\`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}`,...(ne=(se=D.parameters)==null?void 0:se.docs)==null?void 0:ne.source}}};var ae,oe,le;$.parameters={...$.parameters,docs:{...(ae=$.parameters)==null?void 0:ae.docs,source:{originalSource:`{
|
|
31
|
+
args: {
|
|
32
|
+
placeholder: 'Fast search (100ms debounce)...',
|
|
33
|
+
debounceDelay: 100,
|
|
34
|
+
onSearch: mockSearch,
|
|
35
|
+
onResultClick: result => {
|
|
36
|
+
console.log('Clicked result:', result);
|
|
37
|
+
alert(\`Selected: \${result.title}\`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}`,...(le=(oe=$.parameters)==null?void 0:oe.docs)==null?void 0:le.source}}};var ce,ie,ue;j.parameters={...j.parameters,docs:{...(ce=j.parameters)==null?void 0:ce.docs,source:{originalSource:`{
|
|
41
|
+
args: {
|
|
42
|
+
placeholder: 'Slow search (1000ms debounce)...',
|
|
43
|
+
debounceDelay: 1000,
|
|
44
|
+
onSearch: mockSearch,
|
|
45
|
+
onResultClick: result => {
|
|
46
|
+
console.log('Clicked result:', result);
|
|
47
|
+
alert(\`Selected: \${result.title}\`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}`,...(ue=(ie=j.parameters)==null?void 0:ie.docs)==null?void 0:ue.source}}};var de,pe,me;T.parameters={...T.parameters,docs:{...(de=T.parameters)==null?void 0:de.docs,source:{originalSource:`{
|
|
51
|
+
args: {
|
|
52
|
+
placeholder: 'Type at least 3 characters...',
|
|
53
|
+
minSearchLength: 3,
|
|
54
|
+
onSearch: mockSearch,
|
|
55
|
+
onResultClick: result => {
|
|
56
|
+
console.log('Clicked result:', result);
|
|
57
|
+
alert(\`Selected: \${result.title}\`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}`,...(me=(pe=T.parameters)==null?void 0:pe.docs)==null?void 0:me.source}}};var he,ge,Se;L.parameters={...L.parameters,docs:{...(he=L.parameters)==null?void 0:he.docs,source:{originalSource:`{
|
|
61
|
+
args: {
|
|
62
|
+
placeholder: 'Search (no keyboard shortcut)...',
|
|
63
|
+
enableKeyboardShortcut: false,
|
|
64
|
+
onSearch: mockSearch,
|
|
65
|
+
onResultClick: result => {
|
|
66
|
+
console.log('Clicked result:', result);
|
|
67
|
+
alert(\`Selected: \${result.title}\`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}`,...(Se=(ge=L.parameters)==null?void 0:ge.docs)==null?void 0:Se.source}}};var fe,ye,Ce;E.parameters={...E.parameters,docs:{...(fe=E.parameters)==null?void 0:fe.docs,source:{originalSource:`{
|
|
71
|
+
args: {
|
|
72
|
+
placeholder: 'Search (always empty)...',
|
|
73
|
+
onSearch: async () => {
|
|
74
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
75
|
+
return [];
|
|
76
|
+
},
|
|
77
|
+
onResultClick: result => {
|
|
78
|
+
console.log('Clicked result:', result);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}`,...(Ce=(ye=E.parameters)==null?void 0:ye.docs)==null?void 0:Ce.source}}};var we,be,ve;F.parameters={...F.parameters,docs:{...(we=F.parameters)==null?void 0:we.docs,source:{originalSource:`{
|
|
82
|
+
args: {
|
|
83
|
+
placeholder: 'Search (will error)...',
|
|
84
|
+
onSearch: async () => {
|
|
85
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
86
|
+
throw new Error('Search failed!');
|
|
87
|
+
},
|
|
88
|
+
onResultClick: result => {
|
|
89
|
+
console.log('Clicked result:', result);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}`,...(ve=(be=F.parameters)==null?void 0:be.docs)==null?void 0:ve.source}}};var ke,_e,Re;N.parameters={...N.parameters,docs:{...(ke=N.parameters)==null?void 0:ke.docs,source:{originalSource:`{
|
|
93
|
+
args: {
|
|
94
|
+
placeholder: 'Instant search (no debounce)...',
|
|
95
|
+
debounceDelay: 0,
|
|
96
|
+
minSearchLength: 1,
|
|
97
|
+
onSearch: async (query: string, filter: SearchFilter) => {
|
|
98
|
+
// Instant response, no delay
|
|
99
|
+
const lowerQuery = query.toLowerCase();
|
|
100
|
+
return mockSearchData.filter(item => {
|
|
101
|
+
if (filter !== 'all' && item.type !== filter) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
return item.title?.toLowerCase().includes(lowerQuery) || item.subtitle?.toLowerCase().includes(lowerQuery);
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
onResultClick: result => {
|
|
108
|
+
console.log('Clicked result:', result);
|
|
109
|
+
alert(\`Selected: \${result.title}\`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}`,...(Re=(_e=N.parameters)==null?void 0:_e.docs)==null?void 0:Re.source}}};var xe,Ie,De;P.parameters={...P.parameters,docs:{...(xe=P.parameters)==null?void 0:xe.docs,source:{originalSource:`{
|
|
113
|
+
args: {
|
|
114
|
+
placeholder: 'Search with custom actions...',
|
|
115
|
+
onSearch: mockSearch,
|
|
116
|
+
onResultClick: result => {
|
|
117
|
+
console.log('Custom action for:', result);
|
|
118
|
+
alert(\`Custom action: \${result.type} - \${result.title}\`);
|
|
119
|
+
},
|
|
120
|
+
onClear: () => {
|
|
121
|
+
console.log('Search cleared!');
|
|
122
|
+
alert('Search was cleared');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}`,...(De=(Ie=P.parameters)==null?void 0:Ie.docs)==null?void 0:De.source}}};var $e,je,Te;q.parameters={...q.parameters,docs:{...($e=q.parameters)==null?void 0:$e.docs,source:{originalSource:`{
|
|
126
|
+
args: {
|
|
127
|
+
placeholder: 'Search large dataset...',
|
|
128
|
+
onSearch: async (query: string, filter: SearchFilter) => {
|
|
129
|
+
await new Promise(resolve => setTimeout(resolve, 300));
|
|
130
|
+
|
|
131
|
+
// Generate a large dataset
|
|
132
|
+
const types = ['projects', 'clients', 'contacts', 'team', 'interactions'];
|
|
133
|
+
const results: SearchResult[] = [];
|
|
134
|
+
for (let i = 0; i < 100; i++) {
|
|
135
|
+
const type = types[i % types.length];
|
|
136
|
+
if (filter === 'all' || filter === type) {
|
|
137
|
+
results.push({
|
|
138
|
+
id: \`large-\${i}\`,
|
|
139
|
+
type,
|
|
140
|
+
title: \`\${type.charAt(0).toUpperCase() + type.slice(1)} Item \${i}\`,
|
|
141
|
+
subtitle: \`Description for item \${i} containing \${query}\`,
|
|
142
|
+
meta: \`Meta \${i}\`
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const lowerQuery = query.toLowerCase();
|
|
147
|
+
return results.filter(item => item.title?.toLowerCase().includes(lowerQuery) || item.subtitle?.toLowerCase().includes(lowerQuery)).slice(0, 20); // Limit to 20 results for performance
|
|
148
|
+
},
|
|
149
|
+
onResultClick: result => {
|
|
150
|
+
console.log('Selected from large dataset:', result);
|
|
151
|
+
alert(\`Selected: \${result.title}\`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}`,...(Te=(je=q.parameters)==null?void 0:je.docs)==null?void 0:Te.source}}};const $t=["Default","WithFilter","WithoutFilter","CustomDebounce","LongDebounce","MinimumLength","NoKeyboardShortcut","EmptyResults","ErrorHandling","InstantSearch","WithCustomActions","LargeDataset"];export{$ as CustomDebounce,x as Default,E as EmptyResults,F as ErrorHandling,N as InstantSearch,q as LargeDataset,j as LongDebounce,T as MinimumLength,L as NoKeyboardShortcut,P as WithCustomActions,I as WithFilter,D as WithoutFilter,$t as __namedExportsOrder,Dt as default};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import{r,j as o}from"./iframe-BUaP2gIF.js";import{g as V,f as R,h as A}from"./index-5bdJXrkD.js";import{m as p}from"./proxy-9Y4F2rF8.js";import{A as T}from"./index-CZs7_DA6.js";const q="_searchableDropdown_13fbr_1",M="_dropdownTrigger_13fbr_17",F="_open_13fbr_45",$="_dropdownValue_13fbr_52",L="_placeholder_13fbr_61",K="_dropdownArrow_13fbr_67",H="_dropdownMenu_13fbr_83",P="_dropdownSearch_13fbr_101",z="_searchInput_13fbr_111",B="_searchIcon_13fbr_136",U="_dropdownOptions_13fbr_152",W="_dropdownOption_13fbr_152",G="_selected_13fbr_221",J="_highlighted_13fbr_243",Q="_checkIcon_13fbr_256",X="_dropdownNoResults_13fbr_276",Y="_loading_13fbr_390",n={searchableDropdown:q,dropdownTrigger:M,open:F,dropdownValue:$,placeholder:L,dropdownArrow:K,dropdownMenu:H,dropdownSearch:P,searchInput:z,searchIcon:B,dropdownOptions:U,dropdownOption:W,selected:G,highlighted:J,checkIcon:Q,dropdownNoResults:X,loading:Y};function Z({label:C,value:w,onChange:k,options:m,placeholder:N="Select...",allowEmpty:j=!0,disabled:u=!1,loading:g=!1,error:D=!1}){const[t,i]=r.useState(!1),[_,d]=r.useState(""),[c,l]=r.useState(-1),h=r.useRef(null),f=r.useRef(null),b=m.find(e=>e.value===w),y=b?b.label:"",v=m.filter(e=>e.label.toLowerCase().includes(_.toLowerCase())),s=j?[{label:"(none)",value:""},...v]:v;r.useEffect(()=>{function e(a){h.current&&!h.current.contains(a.target)&&(i(!1),d(""))}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),r.useEffect(()=>{t&&f.current&&f.current.focus()},[t]);const x=e=>{k(e),i(!1),d(""),l(-1)},I=e=>{if(t)switch(e.key){case"ArrowDown":e.preventDefault(),l(a=>a<s.length-1?a+1:0);break;case"ArrowUp":e.preventDefault(),l(a=>a>0?a-1:s.length-1);break;case"Enter":e.preventDefault(),c>=0&&c<s.length&&x(s[c].value);break;case"Escape":e.preventDefault(),i(!1),d(""),l(-1);break}},O=()=>{const e=[n.dropdownTrigger];return t&&e.push(n.open),g&&e.push(n.loading),D&&e.push(n.error),e.join(" ")};return o.jsxs("div",{className:n.searchableDropdown,ref:h,onKeyDown:I,children:[o.jsx("label",{children:C}),o.jsxs(p.button,{type:"button",className:O(),onClick:()=>!u&&!g&&i(!t),whileTap:{scale:u?1:.98},style:{willChange:"transform"},disabled:u,children:[o.jsx("span",{className:`${n.dropdownValue} ${y?"":n.placeholder}`,children:y||N}),o.jsx(V,{className:n.dropdownArrow})]}),o.jsx(T,{children:t&&o.jsxs(p.div,{className:n.dropdownMenu,initial:{opacity:0,y:-10,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-10,scale:.95},transition:{duration:.2,ease:"easeOut"},children:[o.jsxs("div",{className:n.dropdownSearch,children:[o.jsx(R,{className:n.searchIcon}),o.jsx("input",{ref:f,type:"text",className:n.searchInput,placeholder:"Cerca...",value:_,onChange:e=>d(e.target.value),onClick:e=>e.stopPropagation()})]}),o.jsxs("div",{className:n.dropdownOptions,children:[s.map((e,a)=>{const S=w===e.value,E=c===a;return o.jsxs(p.button,{type:"button",className:`${n.dropdownOption} ${S?n.selected:""} ${E?n.highlighted:""}`,onClick:()=>x(e.value),onMouseEnter:()=>l(a),initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:a*.02},whileTap:{scale:.98},style:{willChange:"transform"},children:[o.jsx("span",{children:e.label}),S&&o.jsx(A,{className:n.checkIcon})]},`${e.value}-${a}`)}),s.length===0&&o.jsx(p.div,{className:n.dropdownNoResults,initial:{opacity:0},animate:{opacity:1},children:"No results found"})]})]})})]})}Z.__docgenInfo={description:`SearchableDropdown component - Modern filterable dropdown with animations
|
|
2
|
+
|
|
3
|
+
@component
|
|
4
|
+
@description
|
|
5
|
+
A sophisticated dropdown component with real-time search filtering, smooth animations,
|
|
6
|
+
and keyboard navigation support. Features gradient backgrounds, slide-in animations
|
|
7
|
+
for options, and a sliding indicator on hover. The dropdown menu includes a search
|
|
8
|
+
field that filters options as you type.
|
|
9
|
+
|
|
10
|
+
Features:
|
|
11
|
+
- Real-time search filtering
|
|
12
|
+
- Smooth animations with Framer Motion
|
|
13
|
+
- Keyboard navigation (Arrow keys, Enter, Escape)
|
|
14
|
+
- Custom scrollbar styling
|
|
15
|
+
- Mobile-optimized with modal-like behavior on small screens
|
|
16
|
+
- Loading and error states
|
|
17
|
+
- Selected item highlighting with gradient background
|
|
18
|
+
|
|
19
|
+
@example
|
|
20
|
+
// Basic usage
|
|
21
|
+
<SearchableDropdown
|
|
22
|
+
label="Select Country"
|
|
23
|
+
value={selectedCountry}
|
|
24
|
+
onChange={setSelectedCountry}
|
|
25
|
+
options={countryOptions}
|
|
26
|
+
placeholder="Choose a country..."
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
@example
|
|
30
|
+
// With empty option disabled
|
|
31
|
+
<SearchableDropdown
|
|
32
|
+
label="Required Field"
|
|
33
|
+
value={requiredValue}
|
|
34
|
+
onChange={setRequiredValue}
|
|
35
|
+
options={options}
|
|
36
|
+
allowEmpty={false}
|
|
37
|
+
error={!requiredValue}
|
|
38
|
+
/>`,methods:[],displayName:"SearchableDropdown",props:{placeholder:{defaultValue:{value:'"Select..."',computed:!1},required:!1},allowEmpty:{defaultValue:{value:"true",computed:!1},required:!1},disabled:{defaultValue:{value:"false",computed:!1},required:!1},loading:{defaultValue:{value:"false",computed:!1},required:!1},error:{defaultValue:{value:"false",computed:!1},required:!1}}};export{Z as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._searchableDropdown_13fbr_1{position:relative;margin-bottom:var(--spacing-lg);width:100%}._searchableDropdown_13fbr_1 label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--spacing-sm);letter-spacing:var(--letter-spacing-wide);transition:color var(--transition-base)}._dropdownTrigger_13fbr_17{width:100%;padding:var(--spacing-sm) var(--spacing-lg);padding-right:48px;border:2px solid var(--color-border);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));font-size:var(--font-size-base);display:flex;align-items:center;cursor:pointer;position:relative;min-height:44px;transition:all var(--transition-base);color:var(--color-text);text-align:left}._dropdownTrigger_13fbr_17:hover{border-color:var(--color-border-hover);background:var(--color-background);box-shadow:var(--shadow-sm);transform:translateY(-1px)}._dropdownTrigger_13fbr_17._open_13fbr_45{border-color:var(--color-primary);box-shadow:0 0 0 3px #7c3aed1a;background:var(--color-background);transform:translateY(-2px)}._dropdownValue_13fbr_52{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--font-weight-medium)}._dropdownValue_13fbr_52._placeholder_13fbr_61{color:var(--color-text-secondary);opacity:.6;font-weight:var(--font-weight-normal)}._dropdownArrow_13fbr_67{position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%) rotate(0);color:var(--color-primary);width:20px;height:20px;transition:transform var(--transition-base),color var(--transition-base)}._dropdownTrigger_13fbr_17._open_13fbr_45 ._dropdownArrow_13fbr_67{transform:translateY(-50%) rotate(180deg);color:var(--color-primary-hover)}._dropdownMenu_13fbr_83{position:absolute;top:calc(100% + 8px);left:0;right:0;width:100%;box-sizing:border-box;border:2px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-background);box-shadow:var(--shadow-xl);z-index:var(--z-index-dropdown);max-height:320px;overflow:hidden;display:flex;flex-direction:column}._dropdownSearch_13fbr_101{position:relative;padding:var(--spacing-md);border-bottom:1px solid var(--color-border);background:linear-gradient(180deg,var(--color-background-secondary),var(--color-background))}._searchInput_13fbr_111{width:100%;box-sizing:border-box;padding:var(--spacing-sm) var(--spacing-md);padding-left:40px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--color-background);color:var(--color-text);transition:all var(--transition-base);outline:none}._searchInput_13fbr_111:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #7c3aed1a;background:var(--color-background)}._searchInput_13fbr_111::placeholder{color:var(--color-text-secondary);opacity:.6}._searchIcon_13fbr_136{position:absolute;left:calc(var(--spacing-md) + 12px);top:50%;transform:translateY(-50%);color:var(--color-text-secondary);width:18px;height:18px;pointer-events:none;transition:color var(--transition-base)}._searchInput_13fbr_111:focus~._searchIcon_13fbr_136{color:var(--color-primary)}._dropdownOptions_13fbr_152{flex:1;overflow-y:auto;max-height:250px;padding:var(--spacing-xs)}._dropdownOptions_13fbr_152::-webkit-scrollbar{width:6px}._dropdownOptions_13fbr_152::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:var(--radius-sm)}._dropdownOptions_13fbr_152::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--transition-base)}._dropdownOptions_13fbr_152::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}._dropdownOption_13fbr_152{padding:var(--spacing-sm) var(--spacing-md);margin:2px 0;cursor:pointer;border:none;background:transparent;width:100%;text-align:left;font-size:var(--font-size-base);color:var(--color-text);border-radius:var(--radius-md);transition:all var(--transition-base);position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._dropdownOption_13fbr_152:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:var(--color-primary);transform:translate(-100%);transition:transform var(--transition-base)}._dropdownOption_13fbr_152:hover{background:linear-gradient(90deg,#7c3aed0d,#7c3aed05);padding-left:calc(var(--spacing-md) + 4px)}._dropdownOption_13fbr_152:hover:before{transform:translate(0)}._dropdownOption_13fbr_152._selected_13fbr_221{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));color:var(--color-text-inverse);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-sm)}._dropdownOption_13fbr_152._selected_13fbr_221:before{display:none}._dropdownOption_13fbr_152._selected_13fbr_221:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));transform:translate(2px)}._dropdownOption_13fbr_152._highlighted_13fbr_243:not(._selected_13fbr_221){background:linear-gradient(90deg,#7c3aed14,#7c3aed08);padding-left:calc(var(--spacing-md) + 4px)}._dropdownOption_13fbr_152._highlighted_13fbr_243:not(._selected_13fbr_221):before{transform:translate(0)}._checkIcon_13fbr_256{position:absolute;right:var(--spacing-md);width:16px;height:16px;color:var(--color-text-inverse);animation:_checkIn_13fbr_1 .3s ease-out}@keyframes _checkIn_13fbr_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}._dropdownNoResults_13fbr_276{padding:var(--spacing-lg);text-align:center;color:var(--color-text-secondary);font-style:italic;opacity:.7}@keyframes _slideIn_13fbr_1{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}._dropdownOption_13fbr_152{animation:_slideIn_13fbr_1 .2s ease-out forwards}[data-theme=dark] ._dropdownTrigger_13fbr_17{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] ._dropdownTrigger_13fbr_17:hover{background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] ._dropdownTrigger_13fbr_17._open_13fbr_45{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px #a78bfa1a}[data-theme=dark] ._dropdownMenu_13fbr_83{background:var(--color-background-secondary);border-color:var(--color-border)}[data-theme=dark] ._dropdownSearch_13fbr_101{background:linear-gradient(180deg,var(--color-background-tertiary),var(--color-background-secondary))}[data-theme=dark] ._searchInput_13fbr_111{background:var(--color-background);border-color:var(--color-border)}[data-theme=dark] ._searchInput_13fbr_111:focus{border-color:var(--color-primary-light);box-shadow:0 0 0 2px #a78bfa1a}[data-theme=dark] ._dropdownOption_13fbr_152:hover{background:linear-gradient(90deg,#a78bfa1a,#a78bfa0d)}[data-theme=dark] ._dropdownOption_13fbr_152._selected_13fbr_221{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary))}@media (max-width: 768px){._dropdownMenu_13fbr_83{max-height:60vh;position:fixed;left:var(--spacing-md);right:var(--spacing-md);top:50%;transform:translateY(-50%)}._dropdownOptions_13fbr_152{max-height:40vh}._dropdownTrigger_13fbr_17{font-size:16px;min-height:48px;padding:var(--spacing-md)}._searchInput_13fbr_111{font-size:16px;padding:var(--spacing-md);padding-left:44px}._dropdownOption_13fbr_152{padding:var(--spacing-md);min-height:44px}}._dropdownTrigger_13fbr_17._loading_13fbr_390{position:relative;overflow:hidden}._dropdownTrigger_13fbr_17._loading_13fbr_390:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);animation:_shimmer_13fbr_1 2s infinite}@keyframes _shimmer_13fbr_1{to{left:100%}}._dropdownTrigger_13fbr_17:disabled{opacity:.5;cursor:not-allowed;background:var(--color-background-tertiary);border-color:var(--color-border)}._dropdownTrigger_13fbr_17:disabled:hover{transform:none;box-shadow:none}
|