@hua-labs/ui 2.0.2 → 2.1.0

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/advanced.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- export{b as HeroSection,a as ScrollProgress}from'./chunk-GLZKT7JN.mjs';export{a as ComponentLayout}from'./chunk-NBJUE7NR.mjs';import {a as a$1,b,c}from'./chunk-IN7RWQCJ.mjs';export{a as AdvancedPageTransition,p as AnimatedGradient,K as BlogEditor,I as BlogEditorActions,B as BlogEditorContent,y as BlogEditorHeader,A as BlogEditorLanguageTabs,z as BlogEditorMetadata,H as BlogEditorPreview,x as BlogEditorProvider,G as BlogEditorToolbar,J as BlogEditorTranslate,s as Carousel,g as CubePageTransition,b as FadePageTransition,e as FlipPageTransition,m as GlowCard,l as Marquee,f as MorphPageTransition,k as Parallax,d as ScalePageTransition,c as SlidePageTransition,n as SpotlightCard,o as TextReveal,q as TiltCard,r as VideoBackground,h as ZoomPageTransition,t as generateSlug,E as getMarkdownPreview,F as insertMarkdown,u as isValidSlug,v as normalizeSlug,C as parseMarkdown,D as stripMarkdown,w as useBlogEditor,i as usePageTransition,j as usePageTransitionManager}from'./chunk-COR6CDMA.mjs';import'./chunk-5BMH7223.mjs';import {a as a$3,e,b as b$1,c as c$1,d}from'./chunk-FSL373O6.mjs';import {a as a$2}from'./chunk-IFSEJVOR.mjs';import {d as d$1}from'./chunk-FFH4ZFKS.mjs';import'./chunk-LOYAJIWO.mjs';import {l}from'./chunk-HN5LSP6L.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import V,{useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Z={spacing:{md:"1rem",lg:"1.5rem",xl:"2rem"}};var X="M1.83795 0.0849609C3.16041 -0.269391 4.51968 0.515459 4.87408 1.83789L11.7335 27.4395L17.8184 21.3545L13.9464 6.90332C13.5921 5.58102 14.3771 4.22171 15.6993 3.86719C16.2369 3.72314 16.78 3.76987 17.2598 3.96191C17.3834 3.97561 17.5081 3.99515 17.6319 4.02832L38.1182 9.51855C39.4407 9.87293 40.2255 11.2322 39.8712 12.5547C39.5166 13.8769 38.1574 14.6619 36.835 14.3076L32.9249 13.2598L23.3487 22.8359L24.4893 27.0908C24.8437 28.4133 24.0588 29.7735 22.7364 30.1279C21.4141 30.4822 20.0548 29.6972 19.7003 28.375L19.3008 26.8838L13.3506 32.835C13.3068 32.8789 13.2592 32.9181 13.213 32.958L14.2637 36.8789C14.6179 38.2012 13.8331 39.5606 12.5108 39.915C11.1884 40.2694 9.82913 39.4845 9.47467 38.1621L0.085022 3.12109C-0.269246 1.79868 0.515578 0.439365 1.83795 0.0849609ZM21.8672 17.3057L27.3946 11.7773L19.8438 9.75488L21.8672 17.3057Z",_e="M40.8865 0.0761719C41.2577 0.0762268 41.5614 0.211458 41.7976 0.481445C42.0507 0.751482 42.1605 1.08058 42.1267 1.46875L39.823 23.165C39.5361 25.933 40.042 28.0937 41.3416 29.6465C42.658 31.1823 44.5825 31.9502 47.114 31.9502C49.8482 31.9502 51.9919 31.1984 53.5447 29.6963C55.1142 28.1942 56.059 25.9832 56.3796 23.0635L58.6833 1.19043C58.7171 0.886659 58.8524 0.624671 59.0886 0.405273C59.3418 0.185863 59.6293 0.0761719 59.95 0.0761719H62.6589C63.0132 0.0762861 63.3085 0.211518 63.5447 0.481445C63.7978 0.751463 63.899 1.07211 63.8484 1.44336L61.4685 24.0254C61.0466 28.0084 59.5278 31.1565 56.9119 33.4688C54.2958 35.7641 50.9029 36.9121 46.7341 36.9121C42.6667 36.9121 39.5025 35.7215 37.241 33.3418C34.9794 30.962 34.0593 27.7639 34.4812 23.7471L36.8865 1.21582C36.9034 0.912022 37.0301 0.650074 37.2664 0.430664C37.5195 0.194523 37.8061 0.0761804 38.1267 0.0761719H40.8865ZM157.419 0.0761719C157.756 0.0762579 158.026 0.203032 158.228 0.456055C158.448 0.709181 158.532 1.01283 158.481 1.36719L156.502 12.4541C157.226 11.6092 158.164 10.9091 159.317 10.3545C160.667 9.71319 162.127 9.39258 163.697 9.39258C166.279 9.39262 168.355 10.3468 169.925 12.2539C171.494 14.1611 172.01 16.6756 171.469 19.7979L170.33 26.2539C169.756 29.5448 168.439 32.1437 166.381 34.0508C164.322 35.958 161.941 36.9121 159.241 36.9121C157.553 36.9121 156.102 36.5404 154.886 35.7979C153.815 35.1281 153.052 34.2874 152.597 33.2764L152.127 35.7979C152.093 36.0004 151.983 36.1857 151.798 36.3545C151.612 36.5063 151.393 36.583 151.139 36.583H148.861C148.524 36.5829 148.245 36.4561 148.026 36.2031C147.824 35.9501 147.756 35.6547 147.823 35.3174L153.899 1.0127C153.933 0.75964 154.06 0.540084 154.279 0.354492C154.498 0.168895 154.735 0.0761719 154.988 0.0761719H157.419ZM139.621 9.39258C142.203 9.39258 144.178 10.135 145.545 11.6201C146.929 13.1053 147.401 15.0885 146.963 17.5693L143.748 35.6455C143.714 35.8986 143.587 36.1181 143.368 36.3037C143.165 36.4894 142.92 36.582 142.634 36.582H140.33C140.026 36.582 139.773 36.4723 139.57 36.2529C139.368 36.0336 139.292 35.7723 139.343 35.4688L139.753 33.2568C138.858 34.4755 137.845 35.3911 136.71 36C135.562 36.6076 134.279 36.9111 132.861 36.9111C130.684 36.9111 128.987 36.27 127.772 34.9873C126.574 33.7047 126.161 31.9917 126.532 29.8486L127.09 26.6582C127.478 24.4306 128.515 22.6923 130.203 21.4434C131.891 20.1945 133.992 19.5694 136.507 19.5693C137.452 19.5693 138.389 19.6961 139.317 19.9492C140.245 20.1855 141.047 20.5316 141.722 20.9873L142.304 17.5947C142.541 16.2448 142.296 15.2156 141.57 14.5068C140.844 13.798 139.883 13.4434 138.684 13.4434C137.959 13.4434 137.3 13.5616 136.71 13.7979C136.136 14.0341 135.603 14.3547 135.114 14.7598C134.625 15.1479 134.161 15.6209 133.722 16.1777C133.301 16.7174 132.98 17.004 132.76 17.0381C132.541 17.0718 132.329 17.0293 132.127 16.9111L130.456 15.8486C130.27 15.7305 130.144 15.5527 130.077 15.3164C130.026 15.0801 130.254 14.5742 130.76 13.7979C131.284 13.0046 131.983 12.2613 132.861 11.5693C133.739 10.8605 134.726 10.3205 135.823 9.94922C136.937 9.57791 138.203 9.39258 139.621 9.39258ZM184.457 9.39258C185.587 9.39262 186.592 9.57795 187.469 9.94922C188.347 10.3205 189.064 10.8862 189.621 11.6455C190.195 12.405 190.566 13.1142 190.735 13.7725C190.921 14.4305 190.962 14.878 190.861 15.1143C190.76 15.3503 190.6 15.5104 190.381 15.5947L188.431 16.4307C188.178 16.5319 187.942 16.5489 187.722 16.4814C187.52 16.3971 187.318 16.1181 187.115 15.6455C186.912 15.173 186.659 14.7512 186.355 14.3799C186.068 13.9917 185.714 13.7127 185.292 13.5439C184.87 13.3584 184.355 13.2656 183.748 13.2656C182.803 13.2656 181.975 13.5105 181.266 14C180.574 14.4726 180.144 15.1818 179.975 16.127L179.899 16.5312C179.747 17.4931 179.866 18.2782 180.254 18.8857C180.659 19.4764 181.882 20.3124 183.925 21.3926C186.22 22.5065 187.74 23.6375 188.482 24.7852C189.225 25.9328 189.41 27.5113 189.039 29.5195L189.013 29.6963C188.558 32.2279 187.478 34.0681 185.773 35.2158C184.085 36.3466 182.119 36.9111 179.874 36.9111C178.406 36.9111 177.132 36.6671 176.052 36.1777C174.988 35.6714 174.169 34.9962 173.595 34.1523C173.038 33.3085 172.692 32.4981 172.557 31.7217C172.422 30.9453 172.422 30.4555 172.557 30.2529C172.692 30.0336 172.879 29.8822 173.115 29.7979L175.14 29.0381C175.377 28.9707 175.596 28.9791 175.799 29.0635C176.018 29.1481 176.22 29.4943 176.406 30.1016C176.609 30.6922 176.853 31.2067 177.14 31.6455C177.444 32.0843 177.857 32.4304 178.381 32.6836C178.921 32.9199 179.604 33.0381 180.431 33.0381C181.427 33.038 182.296 32.7761 183.039 32.2529C183.798 31.7297 184.263 30.9788 184.431 30L184.507 29.6709C184.692 28.6584 184.625 27.8232 184.304 27.165C183.984 26.4899 182.954 25.671 181.216 24.709C178.684 23.477 177.004 22.2532 176.177 21.0381C175.367 19.8061 175.115 18.3884 175.419 16.7852L175.545 16.1523C175.916 13.9751 176.879 12.3042 178.431 11.1396C180.001 9.97511 182.01 9.39258 184.457 9.39258ZM7.92456 0.0507812C8.3294 0.0508971 8.6588 0.202195 8.91187 0.505859C9.16494 0.792681 9.26609 1.13054 9.21558 1.51855L7.72632 15.5439H25.7742L27.2917 1.24023C27.3255 0.936656 27.4685 0.666822 27.7214 0.430664C27.9746 0.177499 28.2706 0.0507812 28.6082 0.0507812H31.4685C31.8566 0.0507849 32.1773 0.202255 32.4304 0.505859C32.7004 0.792695 32.81 1.13051 32.7595 1.51855L29.1648 35.418C29.131 35.7217 28.9872 35.9998 28.7341 36.2529C28.481 36.4892 28.1859 36.6074 27.8484 36.6074H24.9871C24.5822 36.6073 24.2528 36.4645 23.9998 36.1777C23.7467 35.874 23.6455 35.5277 23.696 35.1396L25.2371 20.6074H7.18921L5.61987 35.3926C5.60297 35.7131 5.46 35.9999 5.19019 36.2529C4.93702 36.4892 4.64953 36.6074 4.32886 36.6074H1.44312C1.05506 36.6074 0.725803 36.4645 0.455811 36.1777C0.202712 35.874 0.10156 35.5277 0.1521 35.1396L3.74683 1.26562C3.7806 0.945022 3.92439 0.666913 4.17749 0.430664C4.43063 0.177522 4.72572 0.0508046 5.06323 0.0507812H7.92456ZM81.2156 0.0507812C81.57 0.050791 81.8821 0.168994 82.1521 0.405273C82.4389 0.624614 82.6328 0.902832 82.7341 1.24023L92.4304 34.9111C92.5654 35.3837 92.5068 35.7894 92.2537 36.127C92.0005 36.4475 91.6458 36.6074 91.1902 36.6074H88.2283C87.9414 36.6074 87.6709 36.5148 87.4177 36.3291C87.1816 36.1266 87.0301 35.8986 86.9626 35.6455L84.6492 27.3418H69.4958L65.3171 35.8232C65.2159 36.0426 65.055 36.228 64.8357 36.3799C64.6163 36.5149 64.3799 36.582 64.1267 36.582H61.1394C60.6838 36.582 60.3376 36.3967 60.1013 36.0254C59.8651 35.6542 59.8652 35.2407 60.1013 34.7852L77.0632 1.0127C77.2151 0.708897 77.4185 0.472488 77.6716 0.303711C77.9416 0.135061 78.2453 0.0507812 78.5828 0.0507812H81.2156ZM111.368 0.0507812C111.773 0.050882 112.102 0.210697 112.355 0.53125C112.608 0.835009 112.692 1.18973 112.608 1.59473L107.368 31.3672H122.634C123.039 31.3672 123.359 31.511 123.595 31.7979C123.832 32.0847 123.916 32.4139 123.848 32.7852L123.368 35.418C123.334 35.7048 123.19 35.9498 122.937 36.1523C122.701 36.3548 122.439 36.4561 122.152 36.4561H102.405C102.017 36.456 101.696 36.3207 101.443 36.0508C101.207 35.7639 101.123 35.4177 101.19 35.0127L107.19 1.13965C107.241 0.869608 107.393 0.624683 107.646 0.405273C107.899 0.169049 108.177 0.0508458 108.481 0.0507812H111.368ZM136.81 23.0889C135.41 23.0889 134.254 23.384 133.343 23.9746C132.431 24.5653 131.883 25.4346 131.697 26.582L131.165 29.5947C130.979 30.6747 131.182 31.4938 131.772 32.0508C132.363 32.6077 133.283 32.8867 134.532 32.8867C136.085 32.8867 137.418 32.3295 138.532 31.2158C139.663 30.085 140.304 28.9115 140.456 27.6963L141.013 24.6328C140.676 24.1266 140.127 23.7473 139.368 23.4941C138.608 23.2241 137.755 23.0889 136.81 23.0889ZM162.052 13.8232C160.364 13.8232 158.853 14.3972 157.519 15.5449C156.186 16.6757 155.351 18.1946 155.013 20.1016L153.925 26.2793C153.604 28.085 153.857 29.5784 154.684 30.7598C155.511 31.9243 156.836 32.5068 158.659 32.5068C160.296 32.5068 161.782 31.9584 163.115 30.8613C164.465 29.7475 165.3 28.2115 165.621 26.2539L166.71 20.0762C167.047 18.1353 166.785 16.608 165.925 15.4941C165.064 14.3803 163.773 13.8233 162.052 13.8232ZM79.0134 8.02539L71.5916 23.0889H83.4636L79.2664 8.02539L79.1902 7.64551L79.0134 8.02539Z";function Fe(d){return typeof d=="number"?`${d}rem`:{sm:Z.spacing.md,md:Z.spacing.lg,lg:Z.spacing.xl}[d]}function Oe({variant:d="symbol",size:e="md",animated:t=false,className:m,...c}){let l=Fe(e);if(useEffect(()=>{if(!t)return;let p="hua-logo-animation";if(document.getElementById(p))return;let x=document.createElement("style");return x.id=p,x.textContent=`
2
+ export{b as HeroSection,a as ScrollProgress}from'./chunk-GLZKT7JN.mjs';export{a as ComponentLayout}from'./chunk-NBJUE7NR.mjs';import {a as a$1,b,c}from'./chunk-IN7RWQCJ.mjs';export{a as AdvancedPageTransition,p as AnimatedGradient,K as BlogEditor,I as BlogEditorActions,B as BlogEditorContent,y as BlogEditorHeader,A as BlogEditorLanguageTabs,z as BlogEditorMetadata,H as BlogEditorPreview,x as BlogEditorProvider,G as BlogEditorToolbar,J as BlogEditorTranslate,s as Carousel,g as CubePageTransition,b as FadePageTransition,e as FlipPageTransition,m as GlowCard,l as Marquee,f as MorphPageTransition,k as Parallax,d as ScalePageTransition,c as SlidePageTransition,n as SpotlightCard,o as TextReveal,q as TiltCard,r as VideoBackground,h as ZoomPageTransition,t as generateSlug,E as getMarkdownPreview,F as insertMarkdown,u as isValidSlug,v as normalizeSlug,C as parseMarkdown,D as stripMarkdown,w as useBlogEditor,i as usePageTransition,j as usePageTransitionManager}from'./chunk-COR6CDMA.mjs';import'./chunk-PYBYZVSL.mjs';import {a as a$3,e,b as b$1,c as c$1,d}from'./chunk-BXX2TZUB.mjs';import {a as a$2}from'./chunk-IFSEJVOR.mjs';import {d as d$1}from'./chunk-FFH4ZFKS.mjs';import'./chunk-LOYAJIWO.mjs';import {l}from'./chunk-HN5LSP6L.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import V,{useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Z={spacing:{md:"1rem",lg:"1.5rem",xl:"2rem"}};var X="M1.83795 0.0849609C3.16041 -0.269391 4.51968 0.515459 4.87408 1.83789L11.7335 27.4395L17.8184 21.3545L13.9464 6.90332C13.5921 5.58102 14.3771 4.22171 15.6993 3.86719C16.2369 3.72314 16.78 3.76987 17.2598 3.96191C17.3834 3.97561 17.5081 3.99515 17.6319 4.02832L38.1182 9.51855C39.4407 9.87293 40.2255 11.2322 39.8712 12.5547C39.5166 13.8769 38.1574 14.6619 36.835 14.3076L32.9249 13.2598L23.3487 22.8359L24.4893 27.0908C24.8437 28.4133 24.0588 29.7735 22.7364 30.1279C21.4141 30.4822 20.0548 29.6972 19.7003 28.375L19.3008 26.8838L13.3506 32.835C13.3068 32.8789 13.2592 32.9181 13.213 32.958L14.2637 36.8789C14.6179 38.2012 13.8331 39.5606 12.5108 39.915C11.1884 40.2694 9.82913 39.4845 9.47467 38.1621L0.085022 3.12109C-0.269246 1.79868 0.515578 0.439365 1.83795 0.0849609ZM21.8672 17.3057L27.3946 11.7773L19.8438 9.75488L21.8672 17.3057Z",_e="M40.8865 0.0761719C41.2577 0.0762268 41.5614 0.211458 41.7976 0.481445C42.0507 0.751482 42.1605 1.08058 42.1267 1.46875L39.823 23.165C39.5361 25.933 40.042 28.0937 41.3416 29.6465C42.658 31.1823 44.5825 31.9502 47.114 31.9502C49.8482 31.9502 51.9919 31.1984 53.5447 29.6963C55.1142 28.1942 56.059 25.9832 56.3796 23.0635L58.6833 1.19043C58.7171 0.886659 58.8524 0.624671 59.0886 0.405273C59.3418 0.185863 59.6293 0.0761719 59.95 0.0761719H62.6589C63.0132 0.0762861 63.3085 0.211518 63.5447 0.481445C63.7978 0.751463 63.899 1.07211 63.8484 1.44336L61.4685 24.0254C61.0466 28.0084 59.5278 31.1565 56.9119 33.4688C54.2958 35.7641 50.9029 36.9121 46.7341 36.9121C42.6667 36.9121 39.5025 35.7215 37.241 33.3418C34.9794 30.962 34.0593 27.7639 34.4812 23.7471L36.8865 1.21582C36.9034 0.912022 37.0301 0.650074 37.2664 0.430664C37.5195 0.194523 37.8061 0.0761804 38.1267 0.0761719H40.8865ZM157.419 0.0761719C157.756 0.0762579 158.026 0.203032 158.228 0.456055C158.448 0.709181 158.532 1.01283 158.481 1.36719L156.502 12.4541C157.226 11.6092 158.164 10.9091 159.317 10.3545C160.667 9.71319 162.127 9.39258 163.697 9.39258C166.279 9.39262 168.355 10.3468 169.925 12.2539C171.494 14.1611 172.01 16.6756 171.469 19.7979L170.33 26.2539C169.756 29.5448 168.439 32.1437 166.381 34.0508C164.322 35.958 161.941 36.9121 159.241 36.9121C157.553 36.9121 156.102 36.5404 154.886 35.7979C153.815 35.1281 153.052 34.2874 152.597 33.2764L152.127 35.7979C152.093 36.0004 151.983 36.1857 151.798 36.3545C151.612 36.5063 151.393 36.583 151.139 36.583H148.861C148.524 36.5829 148.245 36.4561 148.026 36.2031C147.824 35.9501 147.756 35.6547 147.823 35.3174L153.899 1.0127C153.933 0.75964 154.06 0.540084 154.279 0.354492C154.498 0.168895 154.735 0.0761719 154.988 0.0761719H157.419ZM139.621 9.39258C142.203 9.39258 144.178 10.135 145.545 11.6201C146.929 13.1053 147.401 15.0885 146.963 17.5693L143.748 35.6455C143.714 35.8986 143.587 36.1181 143.368 36.3037C143.165 36.4894 142.92 36.582 142.634 36.582H140.33C140.026 36.582 139.773 36.4723 139.57 36.2529C139.368 36.0336 139.292 35.7723 139.343 35.4688L139.753 33.2568C138.858 34.4755 137.845 35.3911 136.71 36C135.562 36.6076 134.279 36.9111 132.861 36.9111C130.684 36.9111 128.987 36.27 127.772 34.9873C126.574 33.7047 126.161 31.9917 126.532 29.8486L127.09 26.6582C127.478 24.4306 128.515 22.6923 130.203 21.4434C131.891 20.1945 133.992 19.5694 136.507 19.5693C137.452 19.5693 138.389 19.6961 139.317 19.9492C140.245 20.1855 141.047 20.5316 141.722 20.9873L142.304 17.5947C142.541 16.2448 142.296 15.2156 141.57 14.5068C140.844 13.798 139.883 13.4434 138.684 13.4434C137.959 13.4434 137.3 13.5616 136.71 13.7979C136.136 14.0341 135.603 14.3547 135.114 14.7598C134.625 15.1479 134.161 15.6209 133.722 16.1777C133.301 16.7174 132.98 17.004 132.76 17.0381C132.541 17.0718 132.329 17.0293 132.127 16.9111L130.456 15.8486C130.27 15.7305 130.144 15.5527 130.077 15.3164C130.026 15.0801 130.254 14.5742 130.76 13.7979C131.284 13.0046 131.983 12.2613 132.861 11.5693C133.739 10.8605 134.726 10.3205 135.823 9.94922C136.937 9.57791 138.203 9.39258 139.621 9.39258ZM184.457 9.39258C185.587 9.39262 186.592 9.57795 187.469 9.94922C188.347 10.3205 189.064 10.8862 189.621 11.6455C190.195 12.405 190.566 13.1142 190.735 13.7725C190.921 14.4305 190.962 14.878 190.861 15.1143C190.76 15.3503 190.6 15.5104 190.381 15.5947L188.431 16.4307C188.178 16.5319 187.942 16.5489 187.722 16.4814C187.52 16.3971 187.318 16.1181 187.115 15.6455C186.912 15.173 186.659 14.7512 186.355 14.3799C186.068 13.9917 185.714 13.7127 185.292 13.5439C184.87 13.3584 184.355 13.2656 183.748 13.2656C182.803 13.2656 181.975 13.5105 181.266 14C180.574 14.4726 180.144 15.1818 179.975 16.127L179.899 16.5312C179.747 17.4931 179.866 18.2782 180.254 18.8857C180.659 19.4764 181.882 20.3124 183.925 21.3926C186.22 22.5065 187.74 23.6375 188.482 24.7852C189.225 25.9328 189.41 27.5113 189.039 29.5195L189.013 29.6963C188.558 32.2279 187.478 34.0681 185.773 35.2158C184.085 36.3466 182.119 36.9111 179.874 36.9111C178.406 36.9111 177.132 36.6671 176.052 36.1777C174.988 35.6714 174.169 34.9962 173.595 34.1523C173.038 33.3085 172.692 32.4981 172.557 31.7217C172.422 30.9453 172.422 30.4555 172.557 30.2529C172.692 30.0336 172.879 29.8822 173.115 29.7979L175.14 29.0381C175.377 28.9707 175.596 28.9791 175.799 29.0635C176.018 29.1481 176.22 29.4943 176.406 30.1016C176.609 30.6922 176.853 31.2067 177.14 31.6455C177.444 32.0843 177.857 32.4304 178.381 32.6836C178.921 32.9199 179.604 33.0381 180.431 33.0381C181.427 33.038 182.296 32.7761 183.039 32.2529C183.798 31.7297 184.263 30.9788 184.431 30L184.507 29.6709C184.692 28.6584 184.625 27.8232 184.304 27.165C183.984 26.4899 182.954 25.671 181.216 24.709C178.684 23.477 177.004 22.2532 176.177 21.0381C175.367 19.8061 175.115 18.3884 175.419 16.7852L175.545 16.1523C175.916 13.9751 176.879 12.3042 178.431 11.1396C180.001 9.97511 182.01 9.39258 184.457 9.39258ZM7.92456 0.0507812C8.3294 0.0508971 8.6588 0.202195 8.91187 0.505859C9.16494 0.792681 9.26609 1.13054 9.21558 1.51855L7.72632 15.5439H25.7742L27.2917 1.24023C27.3255 0.936656 27.4685 0.666822 27.7214 0.430664C27.9746 0.177499 28.2706 0.0507812 28.6082 0.0507812H31.4685C31.8566 0.0507849 32.1773 0.202255 32.4304 0.505859C32.7004 0.792695 32.81 1.13051 32.7595 1.51855L29.1648 35.418C29.131 35.7217 28.9872 35.9998 28.7341 36.2529C28.481 36.4892 28.1859 36.6074 27.8484 36.6074H24.9871C24.5822 36.6073 24.2528 36.4645 23.9998 36.1777C23.7467 35.874 23.6455 35.5277 23.696 35.1396L25.2371 20.6074H7.18921L5.61987 35.3926C5.60297 35.7131 5.46 35.9999 5.19019 36.2529C4.93702 36.4892 4.64953 36.6074 4.32886 36.6074H1.44312C1.05506 36.6074 0.725803 36.4645 0.455811 36.1777C0.202712 35.874 0.10156 35.5277 0.1521 35.1396L3.74683 1.26562C3.7806 0.945022 3.92439 0.666913 4.17749 0.430664C4.43063 0.177522 4.72572 0.0508046 5.06323 0.0507812H7.92456ZM81.2156 0.0507812C81.57 0.050791 81.8821 0.168994 82.1521 0.405273C82.4389 0.624614 82.6328 0.902832 82.7341 1.24023L92.4304 34.9111C92.5654 35.3837 92.5068 35.7894 92.2537 36.127C92.0005 36.4475 91.6458 36.6074 91.1902 36.6074H88.2283C87.9414 36.6074 87.6709 36.5148 87.4177 36.3291C87.1816 36.1266 87.0301 35.8986 86.9626 35.6455L84.6492 27.3418H69.4958L65.3171 35.8232C65.2159 36.0426 65.055 36.228 64.8357 36.3799C64.6163 36.5149 64.3799 36.582 64.1267 36.582H61.1394C60.6838 36.582 60.3376 36.3967 60.1013 36.0254C59.8651 35.6542 59.8652 35.2407 60.1013 34.7852L77.0632 1.0127C77.2151 0.708897 77.4185 0.472488 77.6716 0.303711C77.9416 0.135061 78.2453 0.0507812 78.5828 0.0507812H81.2156ZM111.368 0.0507812C111.773 0.050882 112.102 0.210697 112.355 0.53125C112.608 0.835009 112.692 1.18973 112.608 1.59473L107.368 31.3672H122.634C123.039 31.3672 123.359 31.511 123.595 31.7979C123.832 32.0847 123.916 32.4139 123.848 32.7852L123.368 35.418C123.334 35.7048 123.19 35.9498 122.937 36.1523C122.701 36.3548 122.439 36.4561 122.152 36.4561H102.405C102.017 36.456 101.696 36.3207 101.443 36.0508C101.207 35.7639 101.123 35.4177 101.19 35.0127L107.19 1.13965C107.241 0.869608 107.393 0.624683 107.646 0.405273C107.899 0.169049 108.177 0.0508458 108.481 0.0507812H111.368ZM136.81 23.0889C135.41 23.0889 134.254 23.384 133.343 23.9746C132.431 24.5653 131.883 25.4346 131.697 26.582L131.165 29.5947C130.979 30.6747 131.182 31.4938 131.772 32.0508C132.363 32.6077 133.283 32.8867 134.532 32.8867C136.085 32.8867 137.418 32.3295 138.532 31.2158C139.663 30.085 140.304 28.9115 140.456 27.6963L141.013 24.6328C140.676 24.1266 140.127 23.7473 139.368 23.4941C138.608 23.2241 137.755 23.0889 136.81 23.0889ZM162.052 13.8232C160.364 13.8232 158.853 14.3972 157.519 15.5449C156.186 16.6757 155.351 18.1946 155.013 20.1016L153.925 26.2793C153.604 28.085 153.857 29.5784 154.684 30.7598C155.511 31.9243 156.836 32.5068 158.659 32.5068C160.296 32.5068 161.782 31.9584 163.115 30.8613C164.465 29.7475 165.3 28.2115 165.621 26.2539L166.71 20.0762C167.047 18.1353 166.785 16.608 165.925 15.4941C165.064 14.3803 163.773 13.8233 162.052 13.8232ZM79.0134 8.02539L71.5916 23.0889H83.4636L79.2664 8.02539L79.1902 7.64551L79.0134 8.02539Z";function Fe(d){return typeof d=="number"?`${d}rem`:{sm:Z.spacing.md,md:Z.spacing.lg,lg:Z.spacing.xl}[d]}function Oe({variant:d="symbol",size:e="md",animated:t=false,className:m,...c}){let l=Fe(e);if(useEffect(()=>{if(!t)return;let p="hua-logo-animation";if(document.getElementById(p))return;let x=document.createElement("style");return x.id=p,x.textContent=`
3
3
  @keyframes hua-logo-draw {
4
4
  from {
5
5
  stroke-dashoffset: 1000;
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import {a}from'./chunk-UUHAXGMO.mjs';import o from'react';import {cva}from'class-variance-authority';import {jsx}from'react/jsx-runtime';var m=cva("rounded-lg",{variants:{variant:{default:"bg-card text-card-foreground border border-border",outline:"bg-transparent border-2 border-border",elevated:"bg-card text-card-foreground shadow-lg border border-border"},shadow:{none:"shadow-none",sm:"shadow-sm",md:"shadow-md",lg:"shadow-lg"},padding:{none:"",sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{variant:"default",padding:"none"}}),c=o.forwardRef(({className:e,variant:r="default",shadow:a$1,padding:n="none",hoverable:s,...i},l)=>jsx("div",{ref:l,className:a(m({variant:r,shadow:a$1,padding:n}),"transition-[transform,box-shadow,border-color] duration-200 ease-out",s&&"hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/30 cursor-pointer active:translate-y-0 active:shadow-md",e),...i}));c.displayName="Card";var f=o.forwardRef(({className:e,...r},a$1)=>jsx("div",{ref:a$1,className:a("flex flex-col space-y-1 p-3",e),...r}));f.displayName="CardHeader";var C=o.forwardRef(({className:e,...r},a$1)=>jsx("h3",{ref:a$1,className:a("text-base md:text-lg font-semibold leading-tight tracking-tight",e),...r}));C.displayName="CardTitle";var b=o.forwardRef(({className:e,...r},a$1)=>jsx("p",{ref:a$1,className:a("text-sm text-muted-foreground",e),...r}));b.displayName="CardDescription";var g=o.forwardRef(({className:e,...r},a$1)=>jsx("div",{ref:a$1,className:a("px-3 pb-3",e),...r}));g.displayName="CardContent";var v=o.forwardRef(({className:e,...r},a$1)=>jsx("div",{ref:a$1,className:a("flex items-center px-3 pb-3",e),...r}));v.displayName="CardFooter";export{c as a,f as b,C as c,b as d,g as e,v as f};//# sourceMappingURL=chunk-BXX2TZUB.mjs.map
3
+ //# sourceMappingURL=chunk-BXX2TZUB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Card.tsx"],"names":["cardVariants","cva","Card","React","className","variant","shadow","padding","hoverable","props","ref","jsx","merge","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":"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","file":"chunk-BXX2TZUB.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const cardVariants = cva(\n \"rounded-lg\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground border border-border\",\n outline: \"bg-transparent border-2 border-border\",\n elevated: \"bg-card text-card-foreground shadow-lg border border-border\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n },\n padding: {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"none\",\n },\n }\n)\n\n/**\n * Card 컴포넌트의 props / Card component props\n */\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\" | \"elevated\"\n shadow?: \"none\" | \"sm\" | \"md\" | \"lg\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n hoverable?: boolean\n}\n\n/**\n * Card 컴포넌트 / Card component\n *\n * 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.\n *\n * @example\n * <Card>\n * <CardHeader><CardTitle>제목</CardTitle></CardHeader>\n * <CardContent><p>내용</p></CardContent>\n * </Card>\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", shadow, padding = \"none\", hoverable, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\n cardVariants({ variant, shadow, padding }),\n \"transition-[transform,box-shadow,border-color] duration-200 ease-out\",\n hoverable && \"hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/30 cursor-pointer active:translate-y-0 active:shadow-md\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nCard.displayName = \"Card\"\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex flex-col space-y-1 p-3\", className)}\n {...props}\n />\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={merge(\n \"text-base md:text-lg font-semibold leading-tight tracking-tight\",\n className\n )}\n {...props}\n />\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={merge(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={merge(\"px-3 pb-3\", className)} {...props} />\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex items-center px-3 pb-3\", className)}\n {...props}\n />\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import {a as a$2,b,c,d,e}from'./chunk-FSL373O6.mjs';import {a as a$1}from'./chunk-IFSEJVOR.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import S from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=S.forwardRef(({className:u,value:r,max:c=100,size:l="md",color:m="blue",...o},d)=>{let v={sm:"h-2",md:"h-3",lg:"h-4"},N={blue:"bg-indigo-500",green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",purple:"bg-purple-500",orange:"bg-orange-500",indigo:"bg-indigo-500",pink:"bg-pink-500",gray:"bg-gray-500"},p=Math.min(Math.max(r/c*100,0),100);return jsx("div",{ref:d,className:a("w-full bg-muted rounded-full",v[l],u),...o,children:jsx("div",{className:a("h-full rounded-full transition-all duration-300",N[m]||N.blue),style:{width:`${p}%`}})})});g.displayName="EmotionMeter";var C=S.forwardRef(({className:u,emotion:r,isSelected:c=false,size:l="md",...m},o)=>jsx("button",{ref:o,className:a("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[l],c?"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20":"border-border bg-background",u),...m,children:r}));C.displayName="EmotionButton";var F=[{key:"joy",label:"\uAE30\uC068",icon:"smile",color:"yellow"},{key:"sadness",label:"\uC2AC\uD514",icon:"frown",color:"blue"},{key:"anger",label:"\uD654\uB0A8",icon:"angry",color:"red"},{key:"calm",label:"\uD3C9\uC628",icon:"heart",color:"green"},{key:"excitement",label:"\uC124\uB818",icon:"star",color:"pink"},{key:"worry",label:"\uAC71\uC815",icon:"meh",color:"gray"},{key:"gratitude",label:"\uAC10\uC0AC",icon:"heart",color:"purple"},{key:"loneliness",label:"\uC678\uB85C\uC6C0",icon:"user",color:"indigo"}],T=S.forwardRef(({className:u,selectedEmotion:r,onEmotionSelect:c,layout:l="grid",showIntensity:m=false,intensity:o=50,onIntensityChange:d,emotions:v=F,size:N="md",variant:p="button",...y},w)=>{let x=s=>{c==null||c(s);},h=s=>{let f=r===s.key;return p==="button"?jsx(C,{emotion:s.key,isSelected:f,size:N,onClick:()=>x(s.key),className:a("transition-all duration-200",f&&"ring-1 ring-offset-2 ring-primary"),children:s.label},s.key):p==="card"?jsx("div",{className:a("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",f?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>x(s.key),children:jsxs("div",{className:"flex items-center space-x-3",children:[jsx("div",{className:a("w-8 h-8 rounded-full flex items-center justify-center",f?"bg-primary text-primary-foreground":"bg-muted"),children:s.icon&&jsxs("span",{className:"text-lg",children:[s.icon==="smile"&&"\u{1F60A}",s.icon==="frown"&&"\u{1F622}",s.icon==="angry"&&"\u{1F620}",s.icon==="heart"&&"\u2764\uFE0F",s.icon==="star"&&"\u2B50",s.icon==="meh"&&"\u{1F610}",s.icon==="user"&&"\u{1F464}"]})}),jsx("span",{className:"font-medium truncate max-w-[120px]",children:s.label})]})},s.key):p==="chip"?jsx("div",{className:a("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",f?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>x(s.key),children:jsx("span",{className:"truncate max-w-[100px]",children:s.label})},s.key):null},E={grid:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3",list:"space-y-2",compact:"flex flex-wrap gap-1"};return jsxs("div",{ref:w,className:a("space-y-4",u),...y,children:[jsx("div",{className:E[l],children:v.map(h)}),m&&r&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxs("span",{className:"text-sm text-muted-foreground",children:[o,"%"]})]}),jsx("input",{type:"range",min:"0",max:"100",value:o,onChange:s=>d==null?void 0:d(Number(s.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsx("span",{children:"\uC57D\uD568"}),jsx("span",{children:"\uBCF4\uD1B5"}),jsx("span",{children:"\uAC15\uD568"})]})]}),r&&m&&jsx("div",{className:"flex justify-center",children:jsx(g,{value:o,size:"md",color:"blue"})})]})});T.displayName="EmotionSelector";var z=S.forwardRef(({className:u,primaryEmotion:r,emotionDistribution:c$1=[],keywords:l=[],intensity:m=50,positivity:o=70,energy:d$1=60,showMeter:v=true,showDistribution:N=true,showKeywords:p=true,showMetrics:y=true,layout:w="detailed",...x},h)=>{let E=a=>a<30?"\uC57D\uD568":a<70?"\uBCF4\uD1B5":"\uAC15\uD568",s=a=>a<30?"\uBD80\uC815\uC801":a<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",f=a=>a<30?"\uB0AE\uC74C":a<70?"\uBCF4\uD1B5":"\uB192\uC74C";return w==="compact"?jsxs("div",{ref:h,className:a("space-y-3",u),...x,children:[r&&jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("div",{className:"flex items-center space-x-2",children:[jsxs("span",{className:"text-sm text-muted-foreground",children:[r.name," (",r.intensity,"%)"]}),v&&jsx(g,{value:r.intensity,size:"sm",color:"blue"})]})]}),y&&jsxs(Fragment,{children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"text-sm text-muted-foreground",children:E(m)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"text-sm text-muted-foreground",children:s(o)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"text-sm text-muted-foreground",children:f(d$1)})]})]}),p&&l.length>0&&jsxs("div",{children:[jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(a=>jsx(a$1,{variant:"secondary",className:"text-xs",children:a},a))})]})]}):w==="card"?jsxs(a$2,{ref:h,className:a("",u),...x,children:[jsxs(b,{children:[jsxs(c,{className:"flex items-center",children:[jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsx(d,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxs(e,{className:"space-y-4",children:[r&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("span",{className:"ml-2 text-muted-foreground",children:[r.name," (",r.intensity,"%)"]})]}),v&&jsx("div",{className:"flex justify-center",children:jsx(g,{value:r.intensity,size:"md",color:"blue"})})]}),y&&jsxs(Fragment,{children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:E(m)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:s(o)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:f(d$1)})]})]}),p&&l.length>0&&jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(a=>jsx(a$1,{variant:"secondary",className:"text-xs",children:a},a))})]})]})]}):jsxs("div",{ref:h,className:a("space-y-6",u),...x,children:[r&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxs("div",{className:"flex items-center space-x-4",children:[jsxs("div",{className:"text-center",children:[jsx("div",{className:"text-2xl font-bold text-primary",children:r.name}),jsxs("div",{className:"text-sm text-muted-foreground",children:[r.intensity,"% \uAC15\uB3C4"]})]}),v&&jsx(g,{value:r.intensity,size:"lg",color:"blue"})]})]}),N&&c$1.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsx("div",{className:"space-y-3",children:c$1.map((a,D)=>jsxs("div",{className:"space-y-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:a.emotion}),jsxs("span",{className:"text-sm text-muted-foreground",children:[a.percentage,"%"]})]}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:`${a.color} h-2 rounded-full transition-all duration-300`,style:{width:`${a.percentage}%`}})})]},D))})]}),y&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsx("div",{className:"text-2xl font-bold text-primary",children:E(m)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${m}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsx("div",{className:"text-2xl font-bold text-green-600",children:s(o)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${o}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsx("div",{className:"text-2xl font-bold text-orange-600",children:f(d$1)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${d$1}%`}})})]})]})]}),p&&l.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsx("div",{className:"flex flex-wrap gap-2",children:l.map(a=>jsx(a$1,{variant:"outline",className:"text-sm",children:a},a))})]})]})});z.displayName="EmotionAnalysis";export{g as a,C as b,T as c,z as d};//# sourceMappingURL=chunk-5BMH7223.mjs.map
3
- //# sourceMappingURL=chunk-5BMH7223.mjs.map
2
+ import {a as a$2,b,c,d,e}from'./chunk-BXX2TZUB.mjs';import {a as a$1}from'./chunk-IFSEJVOR.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import S from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=S.forwardRef(({className:u,value:r,max:c=100,size:l="md",color:m="blue",...o},d)=>{let v={sm:"h-2",md:"h-3",lg:"h-4"},N={blue:"bg-indigo-500",green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",purple:"bg-purple-500",orange:"bg-orange-500",indigo:"bg-indigo-500",pink:"bg-pink-500",gray:"bg-gray-500"},p=Math.min(Math.max(r/c*100,0),100);return jsx("div",{ref:d,className:a("w-full bg-muted rounded-full",v[l],u),...o,children:jsx("div",{className:a("h-full rounded-full transition-all duration-300",N[m]||N.blue),style:{width:`${p}%`}})})});g.displayName="EmotionMeter";var C=S.forwardRef(({className:u,emotion:r,isSelected:c=false,size:l="md",...m},o)=>jsx("button",{ref:o,className:a("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[l],c?"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20":"border-border bg-background",u),...m,children:r}));C.displayName="EmotionButton";var F=[{key:"joy",label:"\uAE30\uC068",icon:"smile",color:"yellow"},{key:"sadness",label:"\uC2AC\uD514",icon:"frown",color:"blue"},{key:"anger",label:"\uD654\uB0A8",icon:"angry",color:"red"},{key:"calm",label:"\uD3C9\uC628",icon:"heart",color:"green"},{key:"excitement",label:"\uC124\uB818",icon:"star",color:"pink"},{key:"worry",label:"\uAC71\uC815",icon:"meh",color:"gray"},{key:"gratitude",label:"\uAC10\uC0AC",icon:"heart",color:"purple"},{key:"loneliness",label:"\uC678\uB85C\uC6C0",icon:"user",color:"indigo"}],T=S.forwardRef(({className:u,selectedEmotion:r,onEmotionSelect:c,layout:l="grid",showIntensity:m=false,intensity:o=50,onIntensityChange:d,emotions:v=F,size:N="md",variant:p="button",...y},w)=>{let x=s=>{c==null||c(s);},h=s=>{let f=r===s.key;return p==="button"?jsx(C,{emotion:s.key,isSelected:f,size:N,onClick:()=>x(s.key),className:a("transition-all duration-200",f&&"ring-1 ring-offset-2 ring-primary"),children:s.label},s.key):p==="card"?jsx("div",{className:a("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",f?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>x(s.key),children:jsxs("div",{className:"flex items-center space-x-3",children:[jsx("div",{className:a("w-8 h-8 rounded-full flex items-center justify-center",f?"bg-primary text-primary-foreground":"bg-muted"),children:s.icon&&jsxs("span",{className:"text-lg",children:[s.icon==="smile"&&"\u{1F60A}",s.icon==="frown"&&"\u{1F622}",s.icon==="angry"&&"\u{1F620}",s.icon==="heart"&&"\u2764\uFE0F",s.icon==="star"&&"\u2B50",s.icon==="meh"&&"\u{1F610}",s.icon==="user"&&"\u{1F464}"]})}),jsx("span",{className:"font-medium truncate max-w-[120px]",children:s.label})]})},s.key):p==="chip"?jsx("div",{className:a("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",f?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>x(s.key),children:jsx("span",{className:"truncate max-w-[100px]",children:s.label})},s.key):null},E={grid:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3",list:"space-y-2",compact:"flex flex-wrap gap-1"};return jsxs("div",{ref:w,className:a("space-y-4",u),...y,children:[jsx("div",{className:E[l],children:v.map(h)}),m&&r&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxs("span",{className:"text-sm text-muted-foreground",children:[o,"%"]})]}),jsx("input",{type:"range",min:"0",max:"100",value:o,onChange:s=>d==null?void 0:d(Number(s.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsx("span",{children:"\uC57D\uD568"}),jsx("span",{children:"\uBCF4\uD1B5"}),jsx("span",{children:"\uAC15\uD568"})]})]}),r&&m&&jsx("div",{className:"flex justify-center",children:jsx(g,{value:o,size:"md",color:"blue"})})]})});T.displayName="EmotionSelector";var z=S.forwardRef(({className:u,primaryEmotion:r,emotionDistribution:c$1=[],keywords:l=[],intensity:m=50,positivity:o=70,energy:d$1=60,showMeter:v=true,showDistribution:N=true,showKeywords:p=true,showMetrics:y=true,layout:w="detailed",...x},h)=>{let E=a=>a<30?"\uC57D\uD568":a<70?"\uBCF4\uD1B5":"\uAC15\uD568",s=a=>a<30?"\uBD80\uC815\uC801":a<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",f=a=>a<30?"\uB0AE\uC74C":a<70?"\uBCF4\uD1B5":"\uB192\uC74C";return w==="compact"?jsxs("div",{ref:h,className:a("space-y-3",u),...x,children:[r&&jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("div",{className:"flex items-center space-x-2",children:[jsxs("span",{className:"text-sm text-muted-foreground",children:[r.name," (",r.intensity,"%)"]}),v&&jsx(g,{value:r.intensity,size:"sm",color:"blue"})]})]}),y&&jsxs(Fragment,{children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"text-sm text-muted-foreground",children:E(m)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"text-sm text-muted-foreground",children:s(o)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"text-sm text-muted-foreground",children:f(d$1)})]})]}),p&&l.length>0&&jsxs("div",{children:[jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(a=>jsx(a$1,{variant:"secondary",className:"text-xs",children:a},a))})]})]}):w==="card"?jsxs(a$2,{ref:h,className:a("",u),...x,children:[jsxs(b,{children:[jsxs(c,{className:"flex items-center",children:[jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsx(d,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxs(e,{className:"space-y-4",children:[r&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("span",{className:"ml-2 text-muted-foreground",children:[r.name," (",r.intensity,"%)"]})]}),v&&jsx("div",{className:"flex justify-center",children:jsx(g,{value:r.intensity,size:"md",color:"blue"})})]}),y&&jsxs(Fragment,{children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:E(m)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:s(o)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:f(d$1)})]})]}),p&&l.length>0&&jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(a=>jsx(a$1,{variant:"secondary",className:"text-xs",children:a},a))})]})]})]}):jsxs("div",{ref:h,className:a("space-y-6",u),...x,children:[r&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxs("div",{className:"flex items-center space-x-4",children:[jsxs("div",{className:"text-center",children:[jsx("div",{className:"text-2xl font-bold text-primary",children:r.name}),jsxs("div",{className:"text-sm text-muted-foreground",children:[r.intensity,"% \uAC15\uB3C4"]})]}),v&&jsx(g,{value:r.intensity,size:"lg",color:"blue"})]})]}),N&&c$1.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsx("div",{className:"space-y-3",children:c$1.map((a,D)=>jsxs("div",{className:"space-y-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:a.emotion}),jsxs("span",{className:"text-sm text-muted-foreground",children:[a.percentage,"%"]})]}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:`${a.color} h-2 rounded-full transition-all duration-300`,style:{width:`${a.percentage}%`}})})]},D))})]}),y&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsx("div",{className:"text-2xl font-bold text-primary",children:E(m)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${m}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsx("div",{className:"text-2xl font-bold text-green-600",children:s(o)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${o}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsx("div",{className:"text-2xl font-bold text-orange-600",children:f(d$1)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${d$1}%`}})})]})]})]}),p&&l.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsx("div",{className:"flex flex-wrap gap-2",children:l.map(a=>jsx(a$1,{variant:"outline",className:"text-sm",children:a},a))})]})]})});z.displayName="EmotionAnalysis";export{g as a,C as b,T as c,z as d};//# sourceMappingURL=chunk-PYBYZVSL.mjs.map
3
+ //# sourceMappingURL=chunk-PYBYZVSL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/advanced/emotion/EmotionMeter.tsx","../src/components/advanced/emotion/EmotionButton.tsx","../src/components/advanced/emotion/EmotionSelector.tsx","../src/components/advanced/emotion/EmotionAnalysis.tsx"],"names":["EmotionMeter","React","className","value","max","size","color","props","ref","sizeClasses","emotionColors","percentage","jsx","merge","EmotionButton","emotion","isSelected","defaultEmotions","EmotionSelector","selectedEmotion","onEmotionSelect","layout","showIntensity","intensity","onIntensityChange","emotions","variant","handleEmotionClick","emotionKey","renderEmotionItem","jsxs","layoutClasses","e","EmotionAnalysis","primaryEmotion","emotionDistribution","keywords","positivity","energy","showMeter","showDistribution","showKeywords","showMetrics","getIntensityLabel","getPositivityLabel","getEnergyLabel","Fragment","keyword","Badge","Card","CardHeader","CardTitle","CardDescription","CardContent","item","index"],"mappings":"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","file":"chunk-5BMH7223.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\nimport type { Color } from '../../../lib/types/common';\n\n/**\n * EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @typedef {Object} EmotionMeterProps\n * @property {number} value - 감정 강도 값 (0-max) / Emotion intensity value (0-max)\n * @property {number} [max=100] - 최대값 / Maximum value\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 미터 크기 / Meter size\n * @property {\"blue\" | \"green\" | \"yellow\" | \"red\"} [color=\"blue\"] - 미터 색상 / Meter color\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface EmotionMeterProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n size?: \"sm\" | \"md\" | \"lg\"\n color?: \"blue\" | \"green\" | \"yellow\" | \"red\" | Color\n}\n\n/**\n * EmotionMeter 컴포넌트 / EmotionMeter component\n *\n * 감정 강도를 표시하는 미터 컴포넌트입니다.\n * Progress 컴포넌트와 유사하지만 감정 분석에 특화되어 있습니다.\n *\n * Meter component that displays emotion intensity.\n * Similar to Progress component but specialized for emotion analysis.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionMeter value={75} />\n *\n * @example\n * // 다양한 색상 / Various colors\n * <EmotionMeter\n * value={80}\n * color=\"green\"\n * size=\"lg\"\n * />\n *\n * @param {EmotionMeterProps} props - EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionMeter 컴포넌트 / EmotionMeter component\n */\nconst EmotionMeter = React.forwardRef<HTMLDivElement, EmotionMeterProps>(\n ({ className, value, max = 100, size = \"md\", color = \"blue\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"h-2\",\n md: \"h-3\",\n lg: \"h-4\"\n }\n\n // EmotionMeter는 특정 색상만 사용 (감정 분석 특화)\n const emotionColors: Record<string, string> = {\n blue: \"bg-indigo-500\",\n green: \"bg-green-500\",\n yellow: \"bg-yellow-500\",\n red: \"bg-red-500\",\n // 추가 색상 지원\n purple: \"bg-purple-500\",\n orange: \"bg-orange-500\",\n indigo: \"bg-indigo-500\",\n pink: \"bg-pink-500\",\n gray: \"bg-gray-500\",\n }\n\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\n return (\n <div\n ref={ref}\n className={merge(\n \"w-full bg-muted rounded-full\",\n sizeClasses[size],\n className\n )}\n {...props}\n >\n <div\n className={merge(\n \"h-full rounded-full transition-all duration-300\",\n emotionColors[color] || emotionColors.blue\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n }\n)\nEmotionMeter.displayName = \"EmotionMeter\"\n\nexport { EmotionMeter }\n","\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionButton 컴포넌트의 props / EmotionButton component props\n * @typedef {Object} EmotionButtonProps\n * @property {string} emotion - 감정 이모지 또는 텍스트 / Emotion emoji or text\n * @property {boolean} [isSelected=false] - 선택 상태 / Selected state\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 버튼 크기 / Button size\n * @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}\n */\nexport interface EmotionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n emotion: string\n isSelected?: boolean\n size?: \"sm\" | \"md\" | \"lg\"\n}\n\n/**\n * EmotionButton 컴포넌트 / EmotionButton component\n *\n * 감정을 선택하는 버튼 컴포넌트입니다.\n * 이모지나 텍스트로 감정을 표시하며, 선택 상태를 지원합니다.\n *\n * Button component for selecting emotions.\n * Displays emotion as emoji or text and supports selected state.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionButton emotion=\"😊\" />\n *\n * @example\n * // 선택 상태 / Selected state\n * <EmotionButton\n * emotion=\"😊\"\n * isSelected\n * size=\"lg\"\n * />\n *\n * @param {EmotionButtonProps} props - EmotionButton 컴포넌트의 props / EmotionButton component props\n * @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref\n * @returns {JSX.Element} EmotionButton 컴포넌트 / EmotionButton component\n */\nconst EmotionButton = React.forwardRef<HTMLButtonElement, EmotionButtonProps>(\n ({ className, emotion, isSelected = false, size = \"md\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-8 h-8 text-sm\",\n md: \"w-12 h-12 text-lg\",\n lg: \"w-16 h-16 text-xl\"\n }\n\n return (\n <button\n ref={ref}\n className={merge(\n \"rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring\",\n sizeClasses[size],\n isSelected\n ? \"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20\"\n : \"border-border bg-background\",\n className\n )}\n {...props}\n >\n {emotion}\n </button>\n )\n }\n)\nEmotionButton.displayName = \"EmotionButton\"\n\nexport { EmotionButton }\n","'use client'\n\nimport React from \"react\"\nimport { EmotionButton } from \"./EmotionButton\"\nimport { EmotionMeter } from \"./EmotionMeter\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @typedef {Object} EmotionSelectorProps\n * @property {string} [selectedEmotion] - 선택된 감정 키 / Selected emotion key\n * @property {(emotion: string) => void} [onEmotionSelect] - 감정 선택 콜백 / Emotion selection callback\n * @property {\"grid\" | \"list\" | \"compact\"} [layout=\"grid\"] - 레이아웃 타입 / Layout type\n * @property {boolean} [showIntensity=false] - 강도 조절 표시 여부 / Show intensity control\n * @property {number} [intensity=50] - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {(intensity: number) => void} [onIntensityChange] - 강도 변경 콜백 / Intensity change callback\n * @property {Array<Object>} [emotions] - 감정 목록 / Emotions list\n * @property {string} emotions[].key - 감정 키 / Emotion key\n * @property {string} emotions[].label - 감정 라벨 / Emotion label\n * @property {string} [emotions[].icon] - 감정 아이콘 / Emotion icon\n * @property {string} [emotions[].color] - 감정 색상 / Emotion color\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 감정 버튼 크기 / Emotion button size\n * @property {\"button\" | \"card\" | \"chip\"} [variant=\"button\"] - 감정 표시 스타일 / Emotion display style\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionSelectorProps extends React.HTMLAttributes<HTMLDivElement> {\n selectedEmotion?: string\n onEmotionSelect?: (emotion: string) => void\n layout?: \"grid\" | \"list\" | \"compact\"\n showIntensity?: boolean\n intensity?: number\n onIntensityChange?: (intensity: number) => void\n emotions?: Array<{\n key: string\n label: string\n icon?: string\n color?: string\n }>\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"button\" | \"card\" | \"chip\"\n}\n\nconst defaultEmotions = [\n { key: \"joy\", label: \"기쁨\", icon: \"smile\", color: \"yellow\" },\n { key: \"sadness\", label: \"슬픔\", icon: \"frown\", color: \"blue\" },\n { key: \"anger\", label: \"화남\", icon: \"angry\", color: \"red\" },\n { key: \"calm\", label: \"평온\", icon: \"heart\", color: \"green\" },\n { key: \"excitement\", label: \"설렘\", icon: \"star\", color: \"pink\" },\n { key: \"worry\", label: \"걱정\", icon: \"meh\", color: \"gray\" },\n { key: \"gratitude\", label: \"감사\", icon: \"heart\", color: \"purple\" },\n { key: \"loneliness\", label: \"외로움\", icon: \"user\", color: \"indigo\" }\n]\n\n/**\n * EmotionSelector 컴포넌트 / EmotionSelector component\n *\n * 감정을 선택하는 컴포넌트입니다.\n * 여러 감정 옵션을 제공하며, 강도 조절 기능을 포함할 수 있습니다.\n *\n * Component for selecting emotions.\n * Provides multiple emotion options and can include intensity control.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionSelector\n * selectedEmotion=\"joy\"\n * onEmotionSelect={(emotion) => console.log(emotion)}\n * />\n *\n * @example\n * // 강도 조절 포함 / With intensity control\n * <EmotionSelector\n * selectedEmotion=\"calm\"\n * onEmotionSelect={handleEmotionSelect}\n * showIntensity\n * intensity={intensity}\n * onIntensityChange={setIntensity}\n * variant=\"card\"\n * />\n *\n * @param {EmotionSelectorProps} props - EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionSelector 컴포넌트 / EmotionSelector component\n */\nconst EmotionSelector = React.forwardRef<HTMLDivElement, EmotionSelectorProps>(\n ({\n className,\n selectedEmotion,\n onEmotionSelect,\n layout = \"grid\",\n showIntensity = false,\n intensity = 50,\n onIntensityChange,\n emotions = defaultEmotions,\n size = \"md\",\n variant = \"button\",\n ...props\n }, ref) => {\n const handleEmotionClick = (emotionKey: string) => {\n onEmotionSelect?.(emotionKey)\n }\n\n const renderEmotionItem = (emotion: typeof emotions[0]) => {\n const isSelected = selectedEmotion === emotion.key\n\n if (variant === \"button\") {\n return (\n <EmotionButton\n key={emotion.key}\n emotion={emotion.key}\n isSelected={isSelected}\n size={size}\n onClick={() => handleEmotionClick(emotion.key)}\n className={merge(\n \"transition-all duration-200\",\n isSelected && \"ring-1 ring-offset-2 ring-primary\"\n )}\n >\n {emotion.label}\n </EmotionButton>\n )\n }\n\n if (variant === \"card\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md\",\n isSelected\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:border-primary/50\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <div className=\"flex items-center space-x-3\">\n <div className={merge(\n \"w-8 h-8 rounded-full flex items-center justify-center\",\n isSelected ? \"bg-primary text-primary-foreground\" : \"bg-muted\"\n )}>\n {emotion.icon && (\n <span className=\"text-lg\">\n {emotion.icon === \"smile\" && \"😊\"}\n {emotion.icon === \"frown\" && \"😢\"}\n {emotion.icon === \"angry\" && \"😠\"}\n {emotion.icon === \"heart\" && \"❤️\"}\n {emotion.icon === \"star\" && \"⭐\"}\n {emotion.icon === \"meh\" && \"😐\"}\n {emotion.icon === \"user\" && \"👤\"}\n </span>\n )}\n </div>\n <span className=\"font-medium truncate max-w-[120px]\">{emotion.label}</span>\n </div>\n </div>\n )\n }\n\n if (variant === \"chip\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-muted hover:bg-muted/80\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <span className=\"truncate max-w-[100px]\">{emotion.label}</span>\n </div>\n )\n }\n\n return null\n }\n\n const layoutClasses = {\n grid: \"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3\",\n list: \"space-y-2\",\n compact: \"flex flex-wrap gap-1\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\"space-y-4\", className)}\n {...props}\n >\n <div className={layoutClasses[layout]}>\n {emotions.map(renderEmotionItem)}\n </div>\n\n {showIntensity && selectedEmotion && (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도</span>\n <span className=\"text-sm text-muted-foreground\">{intensity}%</span>\n </div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={intensity}\n onChange={(e) => onIntensityChange?.(Number(e.target.value))}\n className=\"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider\"\n />\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>약함</span>\n <span>보통</span>\n <span>강함</span>\n </div>\n </div>\n )}\n\n {selectedEmotion && showIntensity && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionSelector.displayName = \"EmotionSelector\"\n\nexport { EmotionSelector }\nexport type { EmotionSelectorProps }\n","'use client'\n\nimport React from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../Card';\nimport { Badge } from '../../Badge';\nimport { merge } from '../../../lib/utils';\nimport { EmotionMeter } from \"./EmotionMeter\"\n\n/**\n * EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @typedef {Object} EmotionAnalysisProps\n * @property {Object} [primaryEmotion] - 주요 감정 정보 / Primary emotion information\n * @property {string} primaryEmotion.name - 감정 이름 / Emotion name\n * @property {number} primaryEmotion.intensity - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {string} [primaryEmotion.color] - 감정 색상 / Emotion color\n * @property {Array<Object>} [emotionDistribution] - 감정 분포 배열 / Emotion distribution array\n * @property {string} emotionDistribution[].emotion - 감정 이름 / Emotion name\n * @property {number} emotionDistribution[].percentage - 감정 비율 (0-100) / Emotion percentage (0-100)\n * @property {string} emotionDistribution[].color - 감정 색상 / Emotion color\n * @property {string[]} [keywords] - 키워드 배열 / Keywords array\n * @property {number} [intensity=50] - 전체 강도 (0-100) / Overall intensity (0-100)\n * @property {number} [positivity=70] - 긍정성 (0-100) / Positivity (0-100)\n * @property {number} [energy=60] - 에너지 (0-100) / Energy (0-100)\n * @property {boolean} [showMeter=true] - 강도 미터 표시 여부 / Show intensity meter\n * @property {boolean} [showDistribution=true] - 분포 표시 여부 / Show distribution\n * @property {boolean} [showKeywords=true] - 키워드 표시 여부 / Show keywords\n * @property {boolean} [showMetrics=true] - 메트릭 표시 여부 / Show metrics\n * @property {\"compact\" | \"detailed\" | \"card\"} [layout=\"detailed\"] - 레이아웃 타입 / Layout type\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionAnalysisProps extends React.HTMLAttributes<HTMLDivElement> {\n primaryEmotion?: {\n name: string\n intensity: number\n color?: string\n }\n emotionDistribution?: Array<{\n emotion: string\n percentage: number\n color: string\n }>\n keywords?: string[]\n intensity?: number\n positivity?: number\n energy?: number\n showMeter?: boolean\n showDistribution?: boolean\n showKeywords?: boolean\n showMetrics?: boolean\n layout?: \"compact\" | \"detailed\" | \"card\"\n}\n\n/**\n * EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n *\n * 감정 분석 결과를 표시하는 컴포넌트입니다.\n * 주요 감정, 감정 분포, 키워드, 메트릭(강도, 긍정성, 에너지)을 표시할 수 있습니다.\n *\n * Component that displays emotion analysis results.\n * Can display primary emotion, emotion distribution, keywords, and metrics (intensity, positivity, energy).\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"기쁨\", intensity: 80 }}\n * keywords={[\"행복\", \"만족\"]}\n * />\n *\n * @example\n * // 상세 레이아웃 / Detailed layout\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"평온\", intensity: 65, color: \"green\" }}\n * emotionDistribution={[\n * { emotion: \"기쁨\", percentage: 40, color: \"yellow\" },\n * { emotion: \"평온\", percentage: 60, color: \"green\" }\n * ]}\n * keywords={[\"안정\", \"편안\"]}\n * intensity={65}\n * positivity={75}\n * energy={50}\n * layout=\"detailed\"\n * />\n *\n * @param {EmotionAnalysisProps} props - EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n */\nconst EmotionAnalysis = React.forwardRef<HTMLDivElement, EmotionAnalysisProps>(\n ({\n className,\n primaryEmotion,\n emotionDistribution = [],\n keywords = [],\n intensity = 50,\n positivity = 70,\n energy = 60,\n showMeter = true,\n showDistribution = true,\n showKeywords = true,\n showMetrics = true,\n layout = \"detailed\",\n ...props\n }, ref) => {\n const getIntensityLabel = (value: number) => {\n if (value < 30) return \"약함\"\n if (value < 70) return \"보통\"\n return \"강함\"\n }\n\n const getPositivityLabel = (value: number) => {\n if (value < 30) return \"부정적\"\n if (value < 70) return \"중립적\"\n return \"긍정적\"\n }\n\n const getEnergyLabel = (value: number) => {\n if (value < 30) return \"낮음\"\n if (value < 70) return \"보통\"\n return \"높음\"\n }\n\n if (layout === \"compact\") {\n return (\n <div\n ref={ref}\n className={merge(\"space-y-3\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">주요 감정:</span>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"sm\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">긍정성:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">에너지:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div>\n <span className=\"text-sm font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n\n if (layout === \"card\") {\n return (\n <Card\n ref={ref}\n className={merge(\"\", className)}\n {...props}\n >\n <CardHeader>\n <CardTitle className=\"flex items-center\">\n <span className=\"text-2xl mr-2\">✨</span>\n AI 분석\n </CardTitle>\n <CardDescription>\n 감정 분석 결과\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {primaryEmotion && (\n <div className=\"space-y-3\">\n <div className=\"text-sm\">\n <span className=\"font-medium\">주요 감정:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n </div>\n {showMeter && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"text-sm\">\n <span className=\"font-medium\">감정 강도:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">긍정성:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">에너지:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"text-sm\">\n <span className=\"font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n\n // detailed layout (default)\n return (\n <div\n ref={ref}\n className={merge(\"space-y-6\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">주요 감정</h3>\n <div className=\"flex items-center space-x-4\">\n <div className=\"text-center\">\n <div className=\"text-2xl font-bold text-primary\">\n {primaryEmotion.name}\n </div>\n <div className=\"text-sm text-muted-foreground\">\n {primaryEmotion.intensity}% 강도\n </div>\n </div>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"lg\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showDistribution && emotionDistribution.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 분포</h3>\n <div className=\"space-y-3\">\n {emotionDistribution.map((item, index) => (\n <div key={index} className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">{item.emotion}</span>\n <span className=\"text-sm text-muted-foreground\">\n {item.percentage}%\n </span>\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className={`${item.color} h-2 rounded-full transition-all duration-300`}\n style={{ width: `${item.percentage}%` }}\n />\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">분석 지표</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">감정 강도</div>\n <div className=\"text-2xl font-bold text-primary\">\n {getIntensityLabel(intensity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-primary h-2 rounded-full transition-all duration-300\"\n style={{ width: `${intensity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">긍정성</div>\n <div className=\"text-2xl font-bold text-green-600\">\n {getPositivityLabel(positivity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-green-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${positivity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">에너지</div>\n <div className=\"text-2xl font-bold text-orange-600\">\n {getEnergyLabel(energy)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-orange-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${energy}%` }}\n />\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 키워드</h3>\n <div className=\"flex flex-wrap gap-2\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"outline\" className=\"text-sm\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionAnalysis.displayName = \"EmotionAnalysis\"\n\nexport { EmotionAnalysis }\nexport type { EmotionAnalysisProps }\n"]}
1
+ {"version":3,"sources":["../src/components/advanced/emotion/EmotionMeter.tsx","../src/components/advanced/emotion/EmotionButton.tsx","../src/components/advanced/emotion/EmotionSelector.tsx","../src/components/advanced/emotion/EmotionAnalysis.tsx"],"names":["EmotionMeter","React","className","value","max","size","color","props","ref","sizeClasses","emotionColors","percentage","jsx","merge","EmotionButton","emotion","isSelected","defaultEmotions","EmotionSelector","selectedEmotion","onEmotionSelect","layout","showIntensity","intensity","onIntensityChange","emotions","variant","handleEmotionClick","emotionKey","renderEmotionItem","jsxs","layoutClasses","e","EmotionAnalysis","primaryEmotion","emotionDistribution","keywords","positivity","energy","showMeter","showDistribution","showKeywords","showMetrics","getIntensityLabel","getPositivityLabel","getEnergyLabel","Fragment","keyword","Badge","Card","CardHeader","CardTitle","CardDescription","CardContent","item","index"],"mappings":"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","file":"chunk-PYBYZVSL.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\nimport type { Color } from '../../../lib/types/common';\n\n/**\n * EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @typedef {Object} EmotionMeterProps\n * @property {number} value - 감정 강도 값 (0-max) / Emotion intensity value (0-max)\n * @property {number} [max=100] - 최대값 / Maximum value\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 미터 크기 / Meter size\n * @property {\"blue\" | \"green\" | \"yellow\" | \"red\"} [color=\"blue\"] - 미터 색상 / Meter color\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface EmotionMeterProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n size?: \"sm\" | \"md\" | \"lg\"\n color?: \"blue\" | \"green\" | \"yellow\" | \"red\" | Color\n}\n\n/**\n * EmotionMeter 컴포넌트 / EmotionMeter component\n *\n * 감정 강도를 표시하는 미터 컴포넌트입니다.\n * Progress 컴포넌트와 유사하지만 감정 분석에 특화되어 있습니다.\n *\n * Meter component that displays emotion intensity.\n * Similar to Progress component but specialized for emotion analysis.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionMeter value={75} />\n *\n * @example\n * // 다양한 색상 / Various colors\n * <EmotionMeter\n * value={80}\n * color=\"green\"\n * size=\"lg\"\n * />\n *\n * @param {EmotionMeterProps} props - EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionMeter 컴포넌트 / EmotionMeter component\n */\nconst EmotionMeter = React.forwardRef<HTMLDivElement, EmotionMeterProps>(\n ({ className, value, max = 100, size = \"md\", color = \"blue\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"h-2\",\n md: \"h-3\",\n lg: \"h-4\"\n }\n\n // EmotionMeter는 특정 색상만 사용 (감정 분석 특화)\n const emotionColors: Record<string, string> = {\n blue: \"bg-indigo-500\",\n green: \"bg-green-500\",\n yellow: \"bg-yellow-500\",\n red: \"bg-red-500\",\n // 추가 색상 지원\n purple: \"bg-purple-500\",\n orange: \"bg-orange-500\",\n indigo: \"bg-indigo-500\",\n pink: \"bg-pink-500\",\n gray: \"bg-gray-500\",\n }\n\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\n return (\n <div\n ref={ref}\n className={merge(\n \"w-full bg-muted rounded-full\",\n sizeClasses[size],\n className\n )}\n {...props}\n >\n <div\n className={merge(\n \"h-full rounded-full transition-all duration-300\",\n emotionColors[color] || emotionColors.blue\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n }\n)\nEmotionMeter.displayName = \"EmotionMeter\"\n\nexport { EmotionMeter }\n","\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionButton 컴포넌트의 props / EmotionButton component props\n * @typedef {Object} EmotionButtonProps\n * @property {string} emotion - 감정 이모지 또는 텍스트 / Emotion emoji or text\n * @property {boolean} [isSelected=false] - 선택 상태 / Selected state\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 버튼 크기 / Button size\n * @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}\n */\nexport interface EmotionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n emotion: string\n isSelected?: boolean\n size?: \"sm\" | \"md\" | \"lg\"\n}\n\n/**\n * EmotionButton 컴포넌트 / EmotionButton component\n *\n * 감정을 선택하는 버튼 컴포넌트입니다.\n * 이모지나 텍스트로 감정을 표시하며, 선택 상태를 지원합니다.\n *\n * Button component for selecting emotions.\n * Displays emotion as emoji or text and supports selected state.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionButton emotion=\"😊\" />\n *\n * @example\n * // 선택 상태 / Selected state\n * <EmotionButton\n * emotion=\"😊\"\n * isSelected\n * size=\"lg\"\n * />\n *\n * @param {EmotionButtonProps} props - EmotionButton 컴포넌트의 props / EmotionButton component props\n * @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref\n * @returns {JSX.Element} EmotionButton 컴포넌트 / EmotionButton component\n */\nconst EmotionButton = React.forwardRef<HTMLButtonElement, EmotionButtonProps>(\n ({ className, emotion, isSelected = false, size = \"md\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-8 h-8 text-sm\",\n md: \"w-12 h-12 text-lg\",\n lg: \"w-16 h-16 text-xl\"\n }\n\n return (\n <button\n ref={ref}\n className={merge(\n \"rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring\",\n sizeClasses[size],\n isSelected\n ? \"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20\"\n : \"border-border bg-background\",\n className\n )}\n {...props}\n >\n {emotion}\n </button>\n )\n }\n)\nEmotionButton.displayName = \"EmotionButton\"\n\nexport { EmotionButton }\n","'use client'\n\nimport React from \"react\"\nimport { EmotionButton } from \"./EmotionButton\"\nimport { EmotionMeter } from \"./EmotionMeter\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @typedef {Object} EmotionSelectorProps\n * @property {string} [selectedEmotion] - 선택된 감정 키 / Selected emotion key\n * @property {(emotion: string) => void} [onEmotionSelect] - 감정 선택 콜백 / Emotion selection callback\n * @property {\"grid\" | \"list\" | \"compact\"} [layout=\"grid\"] - 레이아웃 타입 / Layout type\n * @property {boolean} [showIntensity=false] - 강도 조절 표시 여부 / Show intensity control\n * @property {number} [intensity=50] - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {(intensity: number) => void} [onIntensityChange] - 강도 변경 콜백 / Intensity change callback\n * @property {Array<Object>} [emotions] - 감정 목록 / Emotions list\n * @property {string} emotions[].key - 감정 키 / Emotion key\n * @property {string} emotions[].label - 감정 라벨 / Emotion label\n * @property {string} [emotions[].icon] - 감정 아이콘 / Emotion icon\n * @property {string} [emotions[].color] - 감정 색상 / Emotion color\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 감정 버튼 크기 / Emotion button size\n * @property {\"button\" | \"card\" | \"chip\"} [variant=\"button\"] - 감정 표시 스타일 / Emotion display style\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionSelectorProps extends React.HTMLAttributes<HTMLDivElement> {\n selectedEmotion?: string\n onEmotionSelect?: (emotion: string) => void\n layout?: \"grid\" | \"list\" | \"compact\"\n showIntensity?: boolean\n intensity?: number\n onIntensityChange?: (intensity: number) => void\n emotions?: Array<{\n key: string\n label: string\n icon?: string\n color?: string\n }>\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"button\" | \"card\" | \"chip\"\n}\n\nconst defaultEmotions = [\n { key: \"joy\", label: \"기쁨\", icon: \"smile\", color: \"yellow\" },\n { key: \"sadness\", label: \"슬픔\", icon: \"frown\", color: \"blue\" },\n { key: \"anger\", label: \"화남\", icon: \"angry\", color: \"red\" },\n { key: \"calm\", label: \"평온\", icon: \"heart\", color: \"green\" },\n { key: \"excitement\", label: \"설렘\", icon: \"star\", color: \"pink\" },\n { key: \"worry\", label: \"걱정\", icon: \"meh\", color: \"gray\" },\n { key: \"gratitude\", label: \"감사\", icon: \"heart\", color: \"purple\" },\n { key: \"loneliness\", label: \"외로움\", icon: \"user\", color: \"indigo\" }\n]\n\n/**\n * EmotionSelector 컴포넌트 / EmotionSelector component\n *\n * 감정을 선택하는 컴포넌트입니다.\n * 여러 감정 옵션을 제공하며, 강도 조절 기능을 포함할 수 있습니다.\n *\n * Component for selecting emotions.\n * Provides multiple emotion options and can include intensity control.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionSelector\n * selectedEmotion=\"joy\"\n * onEmotionSelect={(emotion) => console.log(emotion)}\n * />\n *\n * @example\n * // 강도 조절 포함 / With intensity control\n * <EmotionSelector\n * selectedEmotion=\"calm\"\n * onEmotionSelect={handleEmotionSelect}\n * showIntensity\n * intensity={intensity}\n * onIntensityChange={setIntensity}\n * variant=\"card\"\n * />\n *\n * @param {EmotionSelectorProps} props - EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionSelector 컴포넌트 / EmotionSelector component\n */\nconst EmotionSelector = React.forwardRef<HTMLDivElement, EmotionSelectorProps>(\n ({\n className,\n selectedEmotion,\n onEmotionSelect,\n layout = \"grid\",\n showIntensity = false,\n intensity = 50,\n onIntensityChange,\n emotions = defaultEmotions,\n size = \"md\",\n variant = \"button\",\n ...props\n }, ref) => {\n const handleEmotionClick = (emotionKey: string) => {\n onEmotionSelect?.(emotionKey)\n }\n\n const renderEmotionItem = (emotion: typeof emotions[0]) => {\n const isSelected = selectedEmotion === emotion.key\n\n if (variant === \"button\") {\n return (\n <EmotionButton\n key={emotion.key}\n emotion={emotion.key}\n isSelected={isSelected}\n size={size}\n onClick={() => handleEmotionClick(emotion.key)}\n className={merge(\n \"transition-all duration-200\",\n isSelected && \"ring-1 ring-offset-2 ring-primary\"\n )}\n >\n {emotion.label}\n </EmotionButton>\n )\n }\n\n if (variant === \"card\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md\",\n isSelected\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:border-primary/50\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <div className=\"flex items-center space-x-3\">\n <div className={merge(\n \"w-8 h-8 rounded-full flex items-center justify-center\",\n isSelected ? \"bg-primary text-primary-foreground\" : \"bg-muted\"\n )}>\n {emotion.icon && (\n <span className=\"text-lg\">\n {emotion.icon === \"smile\" && \"😊\"}\n {emotion.icon === \"frown\" && \"😢\"}\n {emotion.icon === \"angry\" && \"😠\"}\n {emotion.icon === \"heart\" && \"❤️\"}\n {emotion.icon === \"star\" && \"⭐\"}\n {emotion.icon === \"meh\" && \"😐\"}\n {emotion.icon === \"user\" && \"👤\"}\n </span>\n )}\n </div>\n <span className=\"font-medium truncate max-w-[120px]\">{emotion.label}</span>\n </div>\n </div>\n )\n }\n\n if (variant === \"chip\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-muted hover:bg-muted/80\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <span className=\"truncate max-w-[100px]\">{emotion.label}</span>\n </div>\n )\n }\n\n return null\n }\n\n const layoutClasses = {\n grid: \"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3\",\n list: \"space-y-2\",\n compact: \"flex flex-wrap gap-1\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\"space-y-4\", className)}\n {...props}\n >\n <div className={layoutClasses[layout]}>\n {emotions.map(renderEmotionItem)}\n </div>\n\n {showIntensity && selectedEmotion && (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도</span>\n <span className=\"text-sm text-muted-foreground\">{intensity}%</span>\n </div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={intensity}\n onChange={(e) => onIntensityChange?.(Number(e.target.value))}\n className=\"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider\"\n />\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>약함</span>\n <span>보통</span>\n <span>강함</span>\n </div>\n </div>\n )}\n\n {selectedEmotion && showIntensity && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionSelector.displayName = \"EmotionSelector\"\n\nexport { EmotionSelector }\nexport type { EmotionSelectorProps }\n","'use client'\n\nimport React from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../Card';\nimport { Badge } from '../../Badge';\nimport { merge } from '../../../lib/utils';\nimport { EmotionMeter } from \"./EmotionMeter\"\n\n/**\n * EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @typedef {Object} EmotionAnalysisProps\n * @property {Object} [primaryEmotion] - 주요 감정 정보 / Primary emotion information\n * @property {string} primaryEmotion.name - 감정 이름 / Emotion name\n * @property {number} primaryEmotion.intensity - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {string} [primaryEmotion.color] - 감정 색상 / Emotion color\n * @property {Array<Object>} [emotionDistribution] - 감정 분포 배열 / Emotion distribution array\n * @property {string} emotionDistribution[].emotion - 감정 이름 / Emotion name\n * @property {number} emotionDistribution[].percentage - 감정 비율 (0-100) / Emotion percentage (0-100)\n * @property {string} emotionDistribution[].color - 감정 색상 / Emotion color\n * @property {string[]} [keywords] - 키워드 배열 / Keywords array\n * @property {number} [intensity=50] - 전체 강도 (0-100) / Overall intensity (0-100)\n * @property {number} [positivity=70] - 긍정성 (0-100) / Positivity (0-100)\n * @property {number} [energy=60] - 에너지 (0-100) / Energy (0-100)\n * @property {boolean} [showMeter=true] - 강도 미터 표시 여부 / Show intensity meter\n * @property {boolean} [showDistribution=true] - 분포 표시 여부 / Show distribution\n * @property {boolean} [showKeywords=true] - 키워드 표시 여부 / Show keywords\n * @property {boolean} [showMetrics=true] - 메트릭 표시 여부 / Show metrics\n * @property {\"compact\" | \"detailed\" | \"card\"} [layout=\"detailed\"] - 레이아웃 타입 / Layout type\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionAnalysisProps extends React.HTMLAttributes<HTMLDivElement> {\n primaryEmotion?: {\n name: string\n intensity: number\n color?: string\n }\n emotionDistribution?: Array<{\n emotion: string\n percentage: number\n color: string\n }>\n keywords?: string[]\n intensity?: number\n positivity?: number\n energy?: number\n showMeter?: boolean\n showDistribution?: boolean\n showKeywords?: boolean\n showMetrics?: boolean\n layout?: \"compact\" | \"detailed\" | \"card\"\n}\n\n/**\n * EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n *\n * 감정 분석 결과를 표시하는 컴포넌트입니다.\n * 주요 감정, 감정 분포, 키워드, 메트릭(강도, 긍정성, 에너지)을 표시할 수 있습니다.\n *\n * Component that displays emotion analysis results.\n * Can display primary emotion, emotion distribution, keywords, and metrics (intensity, positivity, energy).\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"기쁨\", intensity: 80 }}\n * keywords={[\"행복\", \"만족\"]}\n * />\n *\n * @example\n * // 상세 레이아웃 / Detailed layout\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"평온\", intensity: 65, color: \"green\" }}\n * emotionDistribution={[\n * { emotion: \"기쁨\", percentage: 40, color: \"yellow\" },\n * { emotion: \"평온\", percentage: 60, color: \"green\" }\n * ]}\n * keywords={[\"안정\", \"편안\"]}\n * intensity={65}\n * positivity={75}\n * energy={50}\n * layout=\"detailed\"\n * />\n *\n * @param {EmotionAnalysisProps} props - EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n */\nconst EmotionAnalysis = React.forwardRef<HTMLDivElement, EmotionAnalysisProps>(\n ({\n className,\n primaryEmotion,\n emotionDistribution = [],\n keywords = [],\n intensity = 50,\n positivity = 70,\n energy = 60,\n showMeter = true,\n showDistribution = true,\n showKeywords = true,\n showMetrics = true,\n layout = \"detailed\",\n ...props\n }, ref) => {\n const getIntensityLabel = (value: number) => {\n if (value < 30) return \"약함\"\n if (value < 70) return \"보통\"\n return \"강함\"\n }\n\n const getPositivityLabel = (value: number) => {\n if (value < 30) return \"부정적\"\n if (value < 70) return \"중립적\"\n return \"긍정적\"\n }\n\n const getEnergyLabel = (value: number) => {\n if (value < 30) return \"낮음\"\n if (value < 70) return \"보통\"\n return \"높음\"\n }\n\n if (layout === \"compact\") {\n return (\n <div\n ref={ref}\n className={merge(\"space-y-3\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">주요 감정:</span>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"sm\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">긍정성:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">에너지:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div>\n <span className=\"text-sm font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n\n if (layout === \"card\") {\n return (\n <Card\n ref={ref}\n className={merge(\"\", className)}\n {...props}\n >\n <CardHeader>\n <CardTitle className=\"flex items-center\">\n <span className=\"text-2xl mr-2\">✨</span>\n AI 분석\n </CardTitle>\n <CardDescription>\n 감정 분석 결과\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {primaryEmotion && (\n <div className=\"space-y-3\">\n <div className=\"text-sm\">\n <span className=\"font-medium\">주요 감정:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n </div>\n {showMeter && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"text-sm\">\n <span className=\"font-medium\">감정 강도:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">긍정성:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">에너지:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"text-sm\">\n <span className=\"font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n\n // detailed layout (default)\n return (\n <div\n ref={ref}\n className={merge(\"space-y-6\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">주요 감정</h3>\n <div className=\"flex items-center space-x-4\">\n <div className=\"text-center\">\n <div className=\"text-2xl font-bold text-primary\">\n {primaryEmotion.name}\n </div>\n <div className=\"text-sm text-muted-foreground\">\n {primaryEmotion.intensity}% 강도\n </div>\n </div>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"lg\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showDistribution && emotionDistribution.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 분포</h3>\n <div className=\"space-y-3\">\n {emotionDistribution.map((item, index) => (\n <div key={index} className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">{item.emotion}</span>\n <span className=\"text-sm text-muted-foreground\">\n {item.percentage}%\n </span>\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className={`${item.color} h-2 rounded-full transition-all duration-300`}\n style={{ width: `${item.percentage}%` }}\n />\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">분석 지표</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">감정 강도</div>\n <div className=\"text-2xl font-bold text-primary\">\n {getIntensityLabel(intensity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-primary h-2 rounded-full transition-all duration-300\"\n style={{ width: `${intensity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">긍정성</div>\n <div className=\"text-2xl font-bold text-green-600\">\n {getPositivityLabel(positivity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-green-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${positivity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">에너지</div>\n <div className=\"text-2xl font-bold text-orange-600\">\n {getEnergyLabel(energy)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-orange-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${energy}%` }}\n />\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 키워드</h3>\n <div className=\"flex flex-wrap gap-2\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"outline\" className=\"text-sm\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionAnalysis.displayName = \"EmotionAnalysis\"\n\nexport { EmotionAnalysis }\nexport type { EmotionAnalysisProps }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,YAAY;;;;8EA2BxB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,IAAI,kFAcT,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEhF,QAAA,MAAM,UAAU,wFAQf,CAAA;AAID,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC;CAAG;AAEnF,QAAA,MAAM,SAAS,6FAWd,CAAA;AAID,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC;CAAG;AAE3F,QAAA,MAAM,eAAe,mGAQpB,CAAA;AAID,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjF,QAAA,MAAM,WAAW,yFAIhB,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEhF,QAAA,MAAM,UAAU,wFAQf,CAAA;AAID,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,YAAY;;;;8EA2BxB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,IAAI,kFAeT,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEhF,QAAA,MAAM,UAAU,wFAQf,CAAA;AAID,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC;CAAG;AAEnF,QAAA,MAAM,SAAS,6FAWd,CAAA;AAID,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC;CAAG;AAE3F,QAAA,MAAM,eAAe,mGAQpB,CAAA;AAID,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjF,QAAA,MAAM,WAAW,yFAIhB,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEhF,QAAA,MAAM,UAAU,wFAQf,CAAA;AAID,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}