@hua-labs/ui 2.2.0 → 2.3.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/LICENSE +21 -0
- package/README.md +91 -43
- package/dist/{ComponentLayout-BhM4VSoq.d.mts → ComponentLayout-Clf6C2jV.d.mts} +37 -3
- package/dist/DashboardSidebar-ZulecqKs.d.mts +54 -0
- package/dist/DashboardToolbar-BRZayZNz.d.mts +122 -0
- package/dist/EmptyState-SQ3Z6Vf2.d.mts +64 -0
- package/dist/{Modal-CrXmb3Ll.d.mts → Modal-DKKtBtbh.d.mts} +12 -6
- package/dist/{Section-BWzyshgX.d.mts → Section-DKdIG1sg.d.mts} +11 -12
- package/dist/SectionHeader-DHwQ_xh8.d.mts +1653 -0
- package/dist/{Switch-Dzm5TLR3.d.mts → Switch-D0l7SJrz.d.mts} +31 -15
- package/dist/Tooltip-Cv7nYhPW.d.mts +304 -0
- package/dist/advanced/Logo.d.ts +8 -4
- package/dist/advanced/Logo.d.ts.map +1 -1
- package/dist/advanced/dashboard.d.ts +28 -6
- package/dist/advanced/dashboard.d.ts.map +1 -1
- package/dist/advanced-dashboard.d.mts +9 -2278
- package/dist/advanced-dashboard.mjs +1 -33
- package/dist/advanced-dashboard.mjs.map +1 -1
- package/dist/advanced-emotion.d.mts +13 -5
- package/dist/advanced-emotion.mjs +1 -1
- package/dist/advanced-motion.d.mts +136 -56
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +69 -36
- package/dist/advanced.mjs +14 -3
- package/dist/advanced.mjs.map +1 -1
- package/dist/chunk-32OZGTPV.mjs +41 -0
- package/dist/chunk-32OZGTPV.mjs.map +1 -0
- package/dist/chunk-6WBFZ2KV.mjs +3 -0
- package/dist/chunk-6WBFZ2KV.mjs.map +1 -0
- package/dist/chunk-7CGJQSJO.mjs +3 -0
- package/dist/chunk-7CGJQSJO.mjs.map +1 -0
- package/dist/chunk-7T3IUG3G.mjs +3 -0
- package/dist/chunk-7T3IUG3G.mjs.map +1 -0
- package/dist/chunk-AJOGTUWS.mjs +3 -0
- package/dist/chunk-AJOGTUWS.mjs.map +1 -0
- package/dist/chunk-AQTSQYH2.mjs +3 -0
- package/dist/chunk-AQTSQYH2.mjs.map +1 -0
- package/dist/chunk-B2MRZJQA.mjs +3 -0
- package/dist/chunk-B2MRZJQA.mjs.map +1 -0
- package/dist/chunk-BOX4TONF.mjs +3 -0
- package/dist/chunk-BOX4TONF.mjs.map +1 -0
- package/dist/chunk-C2DOXNBK.mjs +3 -0
- package/dist/chunk-C2DOXNBK.mjs.map +1 -0
- package/dist/chunk-CQBMR7VU.mjs +3 -0
- package/dist/chunk-CQBMR7VU.mjs.map +1 -0
- package/dist/chunk-CYAAAEPJ.mjs +3 -0
- package/dist/chunk-CYAAAEPJ.mjs.map +1 -0
- package/dist/chunk-D7MTTTQY.mjs +8 -0
- package/dist/chunk-D7MTTTQY.mjs.map +1 -0
- package/dist/chunk-DABVKUJN.mjs +3 -0
- package/dist/chunk-DABVKUJN.mjs.map +1 -0
- package/dist/chunk-EK6BLFVQ.mjs +3 -0
- package/dist/chunk-EK6BLFVQ.mjs.map +1 -0
- package/dist/chunk-FVUAVGP5.mjs +3 -0
- package/dist/chunk-FVUAVGP5.mjs.map +1 -0
- package/dist/chunk-GAIUZVNC.mjs +3 -0
- package/dist/chunk-GAIUZVNC.mjs.map +1 -0
- package/dist/chunk-HLBIIF4I.mjs +3 -0
- package/dist/chunk-HLBIIF4I.mjs.map +1 -0
- package/dist/chunk-I6NCGF6E.mjs +3 -0
- package/dist/chunk-I6NCGF6E.mjs.map +1 -0
- package/dist/chunk-J46VEBVF.mjs +3 -0
- package/dist/chunk-J46VEBVF.mjs.map +1 -0
- package/dist/chunk-JNW3CLCA.mjs +3 -0
- package/dist/chunk-JNW3CLCA.mjs.map +1 -0
- package/dist/chunk-JY3QVUGW.mjs +3 -0
- package/dist/chunk-JY3QVUGW.mjs.map +1 -0
- package/dist/chunk-KHBZOGUU.mjs +3 -0
- package/dist/chunk-KHBZOGUU.mjs.map +1 -0
- package/dist/chunk-KPNNAQLI.mjs +3 -0
- package/dist/chunk-KPNNAQLI.mjs.map +1 -0
- package/dist/chunk-L2LGSILS.mjs +13 -0
- package/dist/chunk-L2LGSILS.mjs.map +1 -0
- package/dist/chunk-LPHUWTQ2.mjs +3 -0
- package/dist/chunk-LPHUWTQ2.mjs.map +1 -0
- package/dist/chunk-M4JE7TQL.mjs +3 -0
- package/dist/chunk-M4JE7TQL.mjs.map +1 -0
- package/dist/chunk-MEDKGNLV.mjs +3 -0
- package/dist/chunk-MEDKGNLV.mjs.map +1 -0
- package/dist/chunk-MR46CSMC.mjs +3 -0
- package/dist/chunk-MR46CSMC.mjs.map +1 -0
- package/dist/chunk-NSDWT2JM.mjs +3 -0
- package/dist/chunk-NSDWT2JM.mjs.map +1 -0
- package/dist/chunk-OBMOTQEU.mjs +3 -0
- package/dist/chunk-OBMOTQEU.mjs.map +1 -0
- package/dist/chunk-RICRFXFP.mjs +3 -0
- package/dist/chunk-RICRFXFP.mjs.map +1 -0
- package/dist/chunk-SOK7VBSM.mjs +13 -0
- package/dist/chunk-SOK7VBSM.mjs.map +1 -0
- package/dist/chunk-SPZ7SZH4.mjs +3 -0
- package/dist/chunk-SPZ7SZH4.mjs.map +1 -0
- package/dist/chunk-TB3DARQO.mjs +3 -0
- package/dist/chunk-TB3DARQO.mjs.map +1 -0
- package/dist/chunk-TND4HPKW.mjs +51 -0
- package/dist/chunk-TND4HPKW.mjs.map +1 -0
- package/dist/chunk-TSAXVD2H.mjs +35 -0
- package/dist/chunk-TSAXVD2H.mjs.map +1 -0
- package/dist/chunk-UR3TIWBS.mjs +3 -0
- package/dist/chunk-UR3TIWBS.mjs.map +1 -0
- package/dist/chunk-XU2XBAEW.mjs +3 -0
- package/dist/chunk-XU2XBAEW.mjs.map +1 -0
- package/dist/chunk-XXHDNZTG.mjs +3 -0
- package/dist/chunk-XXHDNZTG.mjs.map +1 -0
- package/dist/chunk-YW5DA7Q6.mjs +3 -0
- package/dist/chunk-YW5DA7Q6.mjs.map +1 -0
- package/dist/chunk-ZTHUGQZL.mjs +3 -0
- package/dist/chunk-ZTHUGQZL.mjs.map +1 -0
- package/dist/chunk-ZVCGC6EV.mjs +3 -0
- package/dist/chunk-ZVCGC6EV.mjs.map +1 -0
- package/dist/chunk-ZZ67E3M5.mjs +3 -0
- package/dist/chunk-ZZ67E3M5.mjs.map +1 -0
- package/dist/{common-YLvZxA_K.d.mts → common-Bej8Okcg.d.mts} +1 -1
- package/dist/components/Accordion.d.ts +14 -7
- package/dist/components/Accordion.d.ts.map +1 -1
- package/dist/components/Action.d.ts.map +1 -1
- package/dist/components/ActionToolbar.d.ts +10 -6
- package/dist/components/ActionToolbar.d.ts.map +1 -1
- package/dist/components/Alert.d.ts +16 -2
- package/dist/components/Alert.d.ts.map +1 -1
- package/dist/components/Autocomplete.d.ts +6 -4
- package/dist/components/Autocomplete.d.ts.map +1 -1
- package/dist/components/Avatar.d.ts +20 -7
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Badge.d.ts +27 -9
- package/dist/components/Badge.d.ts.map +1 -1
- package/dist/components/Bookmark.d.ts +4 -2
- package/dist/components/Bookmark.d.ts.map +1 -1
- package/dist/components/BottomSheet.d.ts +13 -9
- package/dist/components/BottomSheet.d.ts.map +1 -1
- package/dist/components/Box.d.ts +9 -0
- package/dist/components/Box.d.ts.map +1 -0
- package/dist/components/Breadcrumb.d.ts +9 -4
- package/dist/components/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Button.d.ts +3 -29
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.variants.d.ts +54 -10
- package/dist/components/Button.variants.d.ts.map +1 -1
- package/dist/components/Card.d.ts +49 -14
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/ChatMessage.d.ts +3 -2
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/Checkbox.d.ts +5 -2
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/CodeBlock.d.ts +8 -5
- package/dist/components/CodeBlock.d.ts.map +1 -1
- package/dist/components/ColorPicker.d.ts +4 -2
- package/dist/components/ColorPicker.d.ts.map +1 -1
- package/dist/components/Command.d.ts +28 -14
- package/dist/components/Command.d.ts.map +1 -1
- package/dist/components/ComponentLayout.d.ts +5 -2
- package/dist/components/ComponentLayout.d.ts.map +1 -1
- package/dist/components/ConfirmModal.d.ts +4 -0
- package/dist/components/ConfirmModal.d.ts.map +1 -1
- package/dist/components/Container.d.ts +18 -5
- package/dist/components/Container.d.ts.map +1 -1
- package/dist/components/ContextMenu.d.ts +36 -36
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts +12 -5
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/Divider.d.ts +2 -1
- package/dist/components/Divider.d.ts.map +1 -1
- package/dist/components/Drawer.d.ts +17 -12
- package/dist/components/Drawer.d.ts.map +1 -1
- package/dist/components/Dropdown.d.ts +25 -7
- package/dist/components/Dropdown.d.ts.map +1 -1
- package/dist/components/EmotionAnalysis.d.ts +3 -1
- package/dist/components/EmotionAnalysis.d.ts.map +1 -1
- package/dist/components/EmotionButton.d.ts +3 -1
- package/dist/components/EmotionButton.d.ts.map +1 -1
- package/dist/components/EmotionMeter.d.ts +3 -1
- package/dist/components/EmotionMeter.d.ts.map +1 -1
- package/dist/components/EmotionSelector.d.ts +3 -1
- package/dist/components/EmotionSelector.d.ts.map +1 -1
- package/dist/components/FeatureCard.d.ts +9 -3
- package/dist/components/FeatureCard.d.ts.map +1 -1
- package/dist/components/Form.d.ts +20 -54
- package/dist/components/Form.d.ts.map +1 -1
- package/dist/components/FormControl.d.ts +3 -2
- package/dist/components/FormControl.d.ts.map +1 -1
- package/dist/components/Grid.d.ts +11 -4
- package/dist/components/Grid.d.ts.map +1 -1
- package/dist/components/HeroSection.d.ts +4 -2
- package/dist/components/HeroSection.d.ts.map +1 -1
- package/dist/components/Icon/Icon.d.ts +12 -8
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/IconsaxGallery/index.d.ts +8 -5
- package/dist/components/IconsaxGallery/index.d.ts.map +1 -1
- package/dist/components/InfoCard.d.ts +5 -2
- package/dist/components/InfoCard.d.ts.map +1 -1
- package/dist/components/Input.d.ts +29 -4
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Label.d.ts +15 -10
- package/dist/components/Label.d.ts.map +1 -1
- package/dist/components/LanguageToggle.d.ts +5 -3
- package/dist/components/LanguageToggle.d.ts.map +1 -1
- package/dist/components/Link.d.ts +17 -6
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/LoadingSpinner.d.ts +7 -3
- package/dist/components/LoadingSpinner.d.ts.map +1 -1
- package/dist/components/Menu.d.ts +59 -60
- package/dist/components/Menu.d.ts.map +1 -1
- package/dist/components/Modal.d.ts +12 -6
- package/dist/components/Modal.d.ts.map +1 -1
- package/dist/components/Navigation.d.ts +26 -11
- package/dist/components/Navigation.d.ts.map +1 -1
- package/dist/components/NumberInput.d.ts +5 -2
- package/dist/components/NumberInput.d.ts.map +1 -1
- package/dist/components/PageNavigation.d.ts +6 -3
- package/dist/components/PageNavigation.d.ts.map +1 -1
- package/dist/components/PageTransition.d.ts +2 -2
- package/dist/components/PageTransition.d.ts.map +1 -1
- package/dist/components/Pagination.d.ts +5 -2
- package/dist/components/Pagination.d.ts.map +1 -1
- package/dist/components/Panel.d.ts +1 -7
- package/dist/components/Panel.d.ts.map +1 -1
- package/dist/components/Popover.d.ts +25 -9
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Pressable.d.ts +14 -0
- package/dist/components/Pressable.d.ts.map +1 -0
- package/dist/components/Progress.d.ts +36 -13
- package/dist/components/Progress.d.ts.map +1 -1
- package/dist/components/Prose.d.ts +51 -0
- package/dist/components/Prose.d.ts.map +1 -0
- package/dist/components/Radio.d.ts +29 -33
- package/dist/components/Radio.d.ts.map +1 -1
- package/dist/components/ScrollArea.d.ts +8 -9
- package/dist/components/ScrollArea.d.ts.map +1 -1
- package/dist/components/ScrollIndicator.d.ts +9 -8
- package/dist/components/ScrollIndicator.d.ts.map +1 -1
- package/dist/components/ScrollProgress.d.ts +3 -2
- package/dist/components/ScrollProgress.d.ts.map +1 -1
- package/dist/components/ScrollToTop.d.ts +5 -5
- package/dist/components/ScrollToTop.d.ts.map +1 -1
- package/dist/components/Section.d.ts +12 -9
- package/dist/components/Section.d.ts.map +1 -1
- package/dist/components/SectionHeader.d.ts +3 -2
- package/dist/components/SectionHeader.d.ts.map +1 -1
- package/dist/components/Select.d.ts +18 -5
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Skeleton.d.ts +43 -15
- package/dist/components/Skeleton.d.ts.map +1 -1
- package/dist/components/Slider.d.ts +7 -5
- package/dist/components/Slider.d.ts.map +1 -1
- package/dist/components/Stack.d.ts +22 -6
- package/dist/components/Stack.d.ts.map +1 -1
- package/dist/components/StatsPanel.d.ts +4 -2
- package/dist/components/StatsPanel.d.ts.map +1 -1
- package/dist/components/Switch.d.ts +9 -4
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Table.d.ts +43 -18
- package/dist/components/Table.d.ts.map +1 -1
- package/dist/components/Tabs.d.ts +50 -77
- package/dist/components/Tabs.d.ts.map +1 -1
- package/dist/components/Text.d.ts +11 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Textarea.d.ts +24 -6
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/ThemeToggle.d.ts +18 -27
- package/dist/components/ThemeToggle.d.ts.map +1 -1
- package/dist/components/Timeline.d.ts +4 -2
- package/dist/components/Timeline.d.ts.map +1 -1
- package/dist/components/Toast.d.ts +1 -1
- package/dist/components/Toast.d.ts.map +1 -1
- package/dist/components/Toggle.d.ts +11 -2
- package/dist/components/Toggle.d.ts.map +1 -1
- package/dist/components/Tooltip.d.ts +5 -2
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Upload.d.ts +5 -3
- package/dist/components/Upload.d.ts.map +1 -1
- package/dist/components/advanced/AdvancedPageTransition.d.ts +7 -5
- package/dist/components/advanced/AdvancedPageTransition.d.ts.map +1 -1
- package/dist/components/advanced/AnimatedGradient.d.ts +6 -2
- package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
- package/dist/components/advanced/Carousel.d.ts +3 -1
- package/dist/components/advanced/Carousel.d.ts.map +1 -1
- package/dist/components/advanced/DotNav.d.ts +12 -5
- package/dist/components/advanced/DotNav.d.ts.map +1 -1
- package/dist/components/advanced/GlowCard.d.ts +4 -1
- package/dist/components/advanced/GlowCard.d.ts.map +1 -1
- package/dist/components/advanced/HorizontalScroll.d.ts +4 -1
- package/dist/components/advanced/HorizontalScroll.d.ts.map +1 -1
- package/dist/components/advanced/ImageReveal.d.ts +23 -1
- package/dist/components/advanced/ImageReveal.d.ts.map +1 -1
- package/dist/components/advanced/Marquee.d.ts +4 -2
- package/dist/components/advanced/Marquee.d.ts.map +1 -1
- package/dist/components/advanced/Parallax.d.ts +4 -2
- package/dist/components/advanced/Parallax.d.ts.map +1 -1
- package/dist/components/advanced/SpotlightCard.d.ts +13 -12
- package/dist/components/advanced/SpotlightCard.d.ts.map +1 -1
- package/dist/components/advanced/TextReveal.d.ts +5 -1
- package/dist/components/advanced/TextReveal.d.ts.map +1 -1
- package/dist/components/advanced/TiltCard.d.ts +6 -2
- package/dist/components/advanced/TiltCard.d.ts.map +1 -1
- package/dist/components/advanced/VideoBackground.d.ts +4 -1
- package/dist/components/advanced/VideoBackground.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditor.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditor.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorActions.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorActions.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorContent.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorContent.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorHeader.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorHeader.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorLanguageTabs.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorLanguageTabs.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorMetadata.d.ts +5 -3
- package/dist/components/advanced/blog-editor/BlogEditorMetadata.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorPreview.d.ts +5 -3
- package/dist/components/advanced/blog-editor/BlogEditorPreview.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorToolbar.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorToolbar.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorTranslate.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorTranslate.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/types.d.ts +5 -2
- package/dist/components/advanced/blog-editor/types.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionAnalysis.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionAnalysis.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionButton.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionButton.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionMeter.d.ts +4 -2
- package/dist/components/advanced/emotion/EmotionMeter.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionSelector.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionSelector.d.ts.map +1 -1
- package/dist/components/dashboard/ActivityFeed.d.ts +5 -2
- package/dist/components/dashboard/ActivityFeed.d.ts.map +1 -1
- package/dist/components/dashboard/BarChart.d.ts +3 -2
- package/dist/components/dashboard/BarChart.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardGrid.d.ts +13 -3
- package/dist/components/dashboard/DashboardGrid.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardSidebar.d.ts +15 -82
- package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardToolbar.d.ts +3 -2
- package/dist/components/dashboard/DashboardToolbar.d.ts.map +1 -1
- package/dist/components/dashboard/EmptyState.d.ts +3 -2
- package/dist/components/dashboard/EmptyState.d.ts.map +1 -1
- package/dist/components/dashboard/MembershipBadge.d.ts +3 -2
- package/dist/components/dashboard/MembershipBadge.d.ts.map +1 -1
- package/dist/components/dashboard/MerchantList.d.ts +3 -2
- package/dist/components/dashboard/MerchantList.d.ts.map +1 -1
- package/dist/components/dashboard/MetricCard.d.ts +3 -2
- package/dist/components/dashboard/MetricCard.d.ts.map +1 -1
- package/dist/components/dashboard/MiniBarChart.d.ts +3 -2
- package/dist/components/dashboard/MiniBarChart.d.ts.map +1 -1
- package/dist/components/dashboard/NotificationCard.d.ts +5 -2
- package/dist/components/dashboard/NotificationCard.d.ts.map +1 -1
- package/dist/components/dashboard/ProfileCard.d.ts +5 -2
- package/dist/components/dashboard/ProfileCard.d.ts.map +1 -1
- package/dist/components/dashboard/ProgressCard.d.ts +6 -3
- package/dist/components/dashboard/ProgressCard.d.ts.map +1 -1
- package/dist/components/dashboard/QuickActionCard.d.ts +22 -27
- package/dist/components/dashboard/QuickActionCard.d.ts.map +1 -1
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts +3 -2
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts.map +1 -1
- package/dist/components/dashboard/SettlementTimeline.d.ts +3 -2
- package/dist/components/dashboard/SettlementTimeline.d.ts.map +1 -1
- package/dist/components/dashboard/StatCard.d.ts +7 -4
- package/dist/components/dashboard/StatCard.d.ts.map +1 -1
- package/dist/components/dashboard/SummaryCard.d.ts +6 -3
- package/dist/components/dashboard/SummaryCard.d.ts.map +1 -1
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts +2 -2
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts.map +1 -1
- package/dist/components/dashboard/TransactionsTable.d.ts +3 -2
- package/dist/components/dashboard/TransactionsTable.d.ts.map +1 -1
- package/dist/components/dashboard/TrendChart.d.ts +3 -2
- package/dist/components/dashboard/TrendChart.d.ts.map +1 -1
- package/dist/components/dashboard/YearlyHeatmap.d.ts +4 -2
- package/dist/components/dashboard/YearlyHeatmap.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanAddCard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanAddColumn.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanColumnHeader.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanDropIndicator.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/index.d.ts +1 -1
- package/dist/components/dashboard/kanban/types.d.ts +24 -12
- package/dist/components/dashboard/kanban/types.d.ts.map +1 -1
- package/dist/components/scrollbar/scrollbar.d.ts +2 -1
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/context/MotionConfigContext.d.ts +41 -0
- package/dist/context/MotionConfigContext.d.ts.map +1 -0
- package/dist/data.d.mts +55 -23
- package/dist/data.d.ts +45 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.mjs +2 -2
- package/dist/data.mjs.map +1 -1
- package/dist/feedback.d.mts +6 -293
- package/dist/feedback.d.ts +7 -5
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/form.d.mts +99 -114
- package/dist/form.mjs +8 -3
- package/dist/form.mjs.map +1 -1
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useAnimatedEntrance.d.ts +24 -0
- package/dist/hooks/useAnimatedEntrance.d.ts.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +22 -0
- package/dist/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/hooks/useDotEnv.d.ts +12 -0
- package/dist/hooks/useDotEnv.d.ts.map +1 -0
- package/dist/hooks/useDotMap.d.ts +38 -0
- package/dist/hooks/useDotMap.d.ts.map +1 -0
- package/dist/iconsax-extended.mjs +2 -2
- package/dist/iconsax-extended.mjs.map +1 -1
- package/dist/iconsax.mjs +2 -2
- package/dist/iconsax.mjs.map +1 -1
- package/dist/index.d.mts +358 -127
- package/dist/index.d.ts +74 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +15 -15
- package/dist/index.mjs.map +1 -1
- package/dist/interactive/kanban.d.ts +12 -0
- package/dist/interactive/kanban.d.ts.map +1 -0
- package/dist/interactive-kanban.d.mts +378 -0
- package/dist/interactive-kanban.mjs +3 -0
- package/dist/interactive-kanban.mjs.map +1 -0
- package/dist/interactive.d.mts +193 -197
- package/dist/interactive.d.ts +7 -5
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/landing/LandingAbout.d.ts +2 -2
- package/dist/landing/LandingAbout.d.ts.map +1 -1
- package/dist/landing/LandingCTA.d.ts +2 -2
- package/dist/landing/LandingCTA.d.ts.map +1 -1
- package/dist/landing/LandingContact.d.ts +2 -2
- package/dist/landing/LandingContact.d.ts.map +1 -1
- package/dist/landing/LandingExperience.d.ts +1 -1
- package/dist/landing/LandingExperience.d.ts.map +1 -1
- package/dist/landing/LandingFeatures.d.ts +1 -1
- package/dist/landing/LandingFeatures.d.ts.map +1 -1
- package/dist/landing/LandingHero.d.ts +2 -2
- package/dist/landing/LandingHero.d.ts.map +1 -1
- package/dist/landing/LandingLogoCloud.d.ts +2 -2
- package/dist/landing/LandingLogoCloud.d.ts.map +1 -1
- package/dist/landing/LandingMetrics.d.ts +1 -1
- package/dist/landing/LandingMetrics.d.ts.map +1 -1
- package/dist/landing/LandingProjects.d.ts +1 -1
- package/dist/landing/LandingProjects.d.ts.map +1 -1
- package/dist/landing/LandingShowcase.d.ts +2 -2
- package/dist/landing/LandingShowcase.d.ts.map +1 -1
- package/dist/landing/LandingSkills.d.ts +1 -1
- package/dist/landing/LandingSkills.d.ts.map +1 -1
- package/dist/landing/LandingStats.d.ts +1 -1
- package/dist/landing/LandingStats.d.ts.map +1 -1
- package/dist/landing/LandingTestimonials.d.ts +1 -1
- package/dist/landing/LandingTestimonials.d.ts.map +1 -1
- package/dist/landing/types.d.ts +42 -30
- package/dist/landing/types.d.ts.map +1 -1
- package/dist/landing.d.mts +47 -37
- package/dist/landing.mjs +4 -20
- package/dist/landing.mjs.map +1 -1
- package/dist/lib/Slot.d.ts.map +1 -1
- package/dist/lib/icon-providers.d.ts +17 -3
- package/dist/lib/icon-providers.d.ts.map +1 -1
- package/dist/lib/styles/animation.d.ts +35 -0
- package/dist/lib/styles/animation.d.ts.map +1 -0
- package/dist/lib/styles/disabled.d.ts +15 -0
- package/dist/lib/styles/disabled.d.ts.map +1 -0
- package/dist/lib/styles/focus.d.ts +34 -0
- package/dist/lib/styles/focus.d.ts.map +1 -0
- package/dist/lib/styles/glass.d.ts +18 -0
- package/dist/lib/styles/glass.d.ts.map +1 -0
- package/dist/lib/styles/hover.d.ts +9 -0
- package/dist/lib/styles/hover.d.ts.map +1 -0
- package/dist/lib/styles/index.d.ts +6 -0
- package/dist/lib/styles/index.d.ts.map +1 -1
- package/dist/lib/styles/transition.d.ts +42 -0
- package/dist/lib/styles/transition.d.ts.map +1 -0
- package/dist/lib/types/common.d.ts +3 -3
- package/dist/lib/types/common.d.ts.map +1 -1
- package/dist/native/Box.d.ts +11 -0
- package/dist/native/Box.d.ts.map +1 -0
- package/dist/native/Pressable.d.ts +10 -0
- package/dist/native/Pressable.d.ts.map +1 -0
- package/dist/native/Text.d.ts +11 -0
- package/dist/native/Text.d.ts.map +1 -0
- package/dist/native/index.d.ts +9 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/useDotMap.d.ts +51 -0
- package/dist/native/useDotMap.d.ts.map +1 -0
- package/dist/native.mjs +2 -0
- package/dist/native.mjs.map +1 -0
- package/dist/navigation.d.mts +48 -21
- package/dist/navigation.d.ts +10 -8
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.mjs +1 -1
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlay.d.mts +84 -37
- package/dist/overlay.mjs +2 -2
- package/dist/overlay.mjs.map +1 -1
- package/dist/sdui/SDUIRenderer.d.ts.map +1 -1
- package/dist/sdui/core.d.ts +50 -0
- package/dist/sdui/core.d.ts.map +1 -0
- package/dist/sdui/index.d.ts +3 -1
- package/dist/sdui/index.d.ts.map +1 -1
- package/dist/sdui/registry.d.ts.map +1 -1
- package/dist/sdui/types.d.ts +38 -0
- package/dist/sdui/types.d.ts.map +1 -1
- package/dist/sdui.d.mts +89 -1
- package/dist/sdui.mjs +2 -2
- package/dist/sdui.mjs.map +1 -1
- package/package.json +39 -15
- package/src/styles/component-vars.css +503 -69
- package/src/styles/landing.css +12 -12
- package/src/styles/prose.css +284 -0
- package/src/styles/recommended-theme.css +123 -141
- package/src/styles/utilities.css +3 -3
- package/dist/chunk-5DPW7SVD.mjs +0 -4
- package/dist/chunk-5DPW7SVD.mjs.map +0 -1
- package/dist/chunk-5L5HIPKA.mjs +0 -3
- package/dist/chunk-5L5HIPKA.mjs.map +0 -1
- package/dist/chunk-CNW22G24.mjs +0 -13
- package/dist/chunk-CNW22G24.mjs.map +0 -1
- package/dist/chunk-CW66UBQG.mjs +0 -3
- package/dist/chunk-CW66UBQG.mjs.map +0 -1
- package/dist/chunk-EPY3432E.mjs +0 -3
- package/dist/chunk-EPY3432E.mjs.map +0 -1
- package/dist/chunk-F2M4YDDQ.mjs +0 -3
- package/dist/chunk-F2M4YDDQ.mjs.map +0 -1
- package/dist/chunk-FHMFDCX2.mjs +0 -3
- package/dist/chunk-FHMFDCX2.mjs.map +0 -1
- package/dist/chunk-HBIUCLFL.mjs +0 -3
- package/dist/chunk-HBIUCLFL.mjs.map +0 -1
- package/dist/chunk-HEBXAFRY.mjs +0 -3
- package/dist/chunk-HEBXAFRY.mjs.map +0 -1
- package/dist/chunk-IG47LMOD.mjs +0 -3
- package/dist/chunk-IG47LMOD.mjs.map +0 -1
- package/dist/chunk-J47ZEXEL.mjs +0 -3
- package/dist/chunk-J47ZEXEL.mjs.map +0 -1
- package/dist/chunk-K2FOFIST.mjs +0 -3
- package/dist/chunk-K2FOFIST.mjs.map +0 -1
- package/dist/chunk-LL6QPRD7.mjs +0 -3
- package/dist/chunk-LL6QPRD7.mjs.map +0 -1
- package/dist/chunk-NMJLOK6M.mjs +0 -3
- package/dist/chunk-NMJLOK6M.mjs.map +0 -1
- package/dist/chunk-O24K56OS.mjs +0 -3
- package/dist/chunk-O24K56OS.mjs.map +0 -1
- package/dist/chunk-OIWG3IJ7.mjs +0 -3
- package/dist/chunk-OIWG3IJ7.mjs.map +0 -1
- package/dist/chunk-OLLU7ZFH.mjs +0 -3
- package/dist/chunk-OLLU7ZFH.mjs.map +0 -1
- package/dist/chunk-Q76JW7X5.mjs +0 -73
- package/dist/chunk-Q76JW7X5.mjs.map +0 -1
- package/dist/chunk-QRM66RQG.mjs +0 -3
- package/dist/chunk-QRM66RQG.mjs.map +0 -1
- package/dist/chunk-QRRP7TGF.mjs +0 -13
- package/dist/chunk-QRRP7TGF.mjs.map +0 -1
- package/dist/chunk-SD6XGDAC.mjs +0 -3
- package/dist/chunk-SD6XGDAC.mjs.map +0 -1
- package/dist/chunk-SDFVGFXT.mjs +0 -3
- package/dist/chunk-SDFVGFXT.mjs.map +0 -1
- package/dist/chunk-SMLDNOV3.mjs +0 -8
- package/dist/chunk-SMLDNOV3.mjs.map +0 -1
- package/dist/chunk-TAP6MYDW.mjs +0 -3
- package/dist/chunk-TAP6MYDW.mjs.map +0 -1
- package/dist/chunk-TBZ645BI.mjs +0 -3
- package/dist/chunk-TBZ645BI.mjs.map +0 -1
- package/dist/chunk-V2DNYJR6.mjs +0 -3
- package/dist/chunk-V2DNYJR6.mjs.map +0 -1
- package/dist/chunk-VBABZXL7.mjs +0 -3
- package/dist/chunk-VBABZXL7.mjs.map +0 -1
- package/dist/chunk-WYBSHTGY.mjs +0 -3
- package/dist/chunk-WYBSHTGY.mjs.map +0 -1
- package/dist/chunk-ZQUMJQYV.mjs +0 -3
- package/dist/chunk-ZQUMJQYV.mjs.map +0 -1
- package/dist/chunk-ZY23NOT4.mjs +0 -3
- package/dist/chunk-ZY23NOT4.mjs.map +0 -1
- package/dist/components/EmptyState.d.ts +0 -62
- package/dist/components/EmptyState.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/icons.ts","../src/lib/icon-aliases.ts","../src/components/Icon/icon-store.ts","../src/components/Icon/IconProvider.tsx","../src/lib/case-utils.ts","../src/lib/icon-providers.ts","../src/lib/normalize-icon-name.ts","../src/components/Icon/Icon.tsx"],"names":["icons","House","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","List","X","MagnifyingGlass","Gear","ArrowSquareOut","CaretLeft","CaretRight","CaretDown","CaretUp","Pencil","Trash","Plus","Minus","Download","Upload","ArrowClockwise","FloppyDisk","Copy","SpinnerGap","CheckCircle","XCircle","WarningCircle","Info","Check","Circle","Question","User","Users","UserPlus","SignIn","SignOut","Eye","EyeSlash","ChartBar","TrendUp","Pulse","Database","Lightning","FileText","File","Folder","Book","BookOpen","Envelope","ChatCircle","Phone","Image","Video","Camera","Smiley","SmileySad","SmileyMeh","Lock","LockOpen","Shield","Wallet","Key","CurrencyDollar","Clock","Calendar","CalendarPlus","Bell","Heart","Star","Bookmark","Share","Monitor","Sun","Moon","Lightbulb","Brain","Flag","Square","Sparkle","Globe","DeviceMobile","Ticket","Clipboard","WifiHigh","WifiSlash","Cpu","MaskHappy","Rocket","Layout","Megaphone","Stack","Prohibit","TextB","TextItalic","TextStrikethrough","TextHOne","Link","Code","FileCode","Quotes","ListNumbers","emotionIcons","statusIcons","iconCategories","ICON_ALIASES","resolveIconAlias","iconName","getIconAliases","_","target","alias","defaultIconConfig","getDefaultStrokeWidth","set","IconContext","createContext","IconProvider","weight","iconsaxVariant","size","color","strokeWidth","children","value","jsx","useIconContext","useContext","toCamelCase","str","word","index","PROJECT_ICONS","getIconFromProvider","provider","getIconNameForProvider","iconMapping","mappedName","normalizeIconName","camelCased","aliasTarget","IconComponent","React","name","className","emotion","status","animated","pulse","spin","bounce","variant","ariaLabel","ariaHidden","ref","_a","_b","config","iconSet","iconSize","iconWeight","iconColor","iconStrokeWidth","isClient","setIsClient","resolvedIcon","baseName","normalized","providerName","iconsaxIcon","variantClasses","mergeMap","merge","ResolvedIcon","iconProps","animationClasses","accessibilityProps","MemoizedIcon","prevProps","nextProps","Icon","EmotionIcon","props","StatusIcon","LoadingIcon","SuccessIcon","ErrorIcon"],"mappings":"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","file":"chunk-ZQUMJQYV.mjs","sourcesContent":["/**\n * Core Icons (Phosphor Icons)\n *\n * 핵심 아이콘만 포함하여 번들 크기를 최적화합니다.\n * 나머지 아이콘은 동적 fallback으로 처리됩니다.\n *\n * 포함 기준:\n * 1. my-app에서 실제 사용 중인 아이콘\n * 2. UI 컴포넌트에서 자주 사용되는 아이콘\n * 3. 각 카테고리의 대표 아이콘\n *\n * 새로운 아이콘이 필요하면 동적 fallback이 자동으로 처리합니다.\n */\n\n// Navigation\nimport { House } from '@phosphor-icons/react/dist/ssr/House'\nimport { ArrowLeft } from '@phosphor-icons/react/dist/ssr/ArrowLeft'\nimport { ArrowRight } from '@phosphor-icons/react/dist/ssr/ArrowRight'\nimport { ArrowUp } from '@phosphor-icons/react/dist/ssr/ArrowUp'\nimport { ArrowDown } from '@phosphor-icons/react/dist/ssr/ArrowDown'\nimport { List } from '@phosphor-icons/react/dist/ssr/List'\nimport { X } from '@phosphor-icons/react/dist/ssr/X'\nimport { MagnifyingGlass } from '@phosphor-icons/react/dist/ssr/MagnifyingGlass'\nimport { Gear } from '@phosphor-icons/react/dist/ssr/Gear'\nimport { ArrowSquareOut } from '@phosphor-icons/react/dist/ssr/ArrowSquareOut'\nimport { CaretLeft } from '@phosphor-icons/react/dist/ssr/CaretLeft'\nimport { CaretRight } from '@phosphor-icons/react/dist/ssr/CaretRight'\nimport { CaretDown } from '@phosphor-icons/react/dist/ssr/CaretDown'\nimport { CaretUp } from '@phosphor-icons/react/dist/ssr/CaretUp'\n\n// Actions\nimport { Pencil } from '@phosphor-icons/react/dist/ssr/Pencil'\nimport { Trash } from '@phosphor-icons/react/dist/ssr/Trash'\nimport { Plus } from '@phosphor-icons/react/dist/ssr/Plus'\nimport { Minus } from '@phosphor-icons/react/dist/ssr/Minus'\nimport { Download } from '@phosphor-icons/react/dist/ssr/Download'\nimport { Upload } from '@phosphor-icons/react/dist/ssr/Upload'\nimport { ArrowClockwise } from '@phosphor-icons/react/dist/ssr/ArrowClockwise'\nimport { FloppyDisk } from '@phosphor-icons/react/dist/ssr/FloppyDisk'\nimport { Copy } from '@phosphor-icons/react/dist/ssr/Copy'\n\n// Text Formatting (Markdown Toolbar)\nimport { TextB } from '@phosphor-icons/react/dist/ssr/TextB'\nimport { TextItalic } from '@phosphor-icons/react/dist/ssr/TextItalic'\nimport { TextStrikethrough } from '@phosphor-icons/react/dist/ssr/TextStrikethrough'\nimport { TextHOne } from '@phosphor-icons/react/dist/ssr/TextHOne'\nimport { Link } from '@phosphor-icons/react/dist/ssr/Link'\nimport { Code } from '@phosphor-icons/react/dist/ssr/Code'\nimport { FileCode } from '@phosphor-icons/react/dist/ssr/FileCode'\nimport { Quotes } from '@phosphor-icons/react/dist/ssr/Quotes'\nimport { ListNumbers } from '@phosphor-icons/react/dist/ssr/ListNumbers'\n\n// Status & Feedback\nimport { SpinnerGap } from '@phosphor-icons/react/dist/ssr/SpinnerGap'\nimport { CheckCircle } from '@phosphor-icons/react/dist/ssr/CheckCircle'\nimport { XCircle } from '@phosphor-icons/react/dist/ssr/XCircle'\nimport { WarningCircle } from '@phosphor-icons/react/dist/ssr/WarningCircle'\nimport { Info } from '@phosphor-icons/react/dist/ssr/Info'\nimport { Check } from '@phosphor-icons/react/dist/ssr/Check'\nimport { Circle } from '@phosphor-icons/react/dist/ssr/Circle'\nimport { Question } from '@phosphor-icons/react/dist/ssr/Question'\n\n// User & Auth\nimport { User } from '@phosphor-icons/react/dist/ssr/User'\nimport { Users } from '@phosphor-icons/react/dist/ssr/Users'\nimport { UserPlus } from '@phosphor-icons/react/dist/ssr/UserPlus'\nimport { SignIn } from '@phosphor-icons/react/dist/ssr/SignIn'\nimport { SignOut } from '@phosphor-icons/react/dist/ssr/SignOut'\nimport { Eye } from '@phosphor-icons/react/dist/ssr/Eye'\nimport { EyeSlash } from '@phosphor-icons/react/dist/ssr/EyeSlash'\n\n// Data & Analytics\nimport { ChartBar } from '@phosphor-icons/react/dist/ssr/ChartBar'\nimport { TrendUp } from '@phosphor-icons/react/dist/ssr/TrendUp'\nimport { Pulse } from '@phosphor-icons/react/dist/ssr/Pulse'\nimport { Database } from '@phosphor-icons/react/dist/ssr/Database'\nimport { Lightning } from '@phosphor-icons/react/dist/ssr/Lightning'\n\n// Files & Content\nimport { FileText } from '@phosphor-icons/react/dist/ssr/FileText'\nimport { File } from '@phosphor-icons/react/dist/ssr/File'\nimport { Folder } from '@phosphor-icons/react/dist/ssr/Folder'\nimport { Book } from '@phosphor-icons/react/dist/ssr/Book'\nimport { BookOpen } from '@phosphor-icons/react/dist/ssr/BookOpen'\n\n// Communication\nimport { Envelope } from '@phosphor-icons/react/dist/ssr/Envelope'\nimport { ChatCircle } from '@phosphor-icons/react/dist/ssr/ChatCircle'\nimport { Phone } from '@phosphor-icons/react/dist/ssr/Phone'\n\n// Media\nimport { Image } from '@phosphor-icons/react/dist/ssr/Image'\nimport { Video } from '@phosphor-icons/react/dist/ssr/Video'\nimport { Camera } from '@phosphor-icons/react/dist/ssr/Camera'\n\n// Emotions\nimport { Smiley } from '@phosphor-icons/react/dist/ssr/Smiley'\nimport { SmileySad } from '@phosphor-icons/react/dist/ssr/SmileySad'\nimport { SmileyMeh } from '@phosphor-icons/react/dist/ssr/SmileyMeh'\n\n// Security & Finance\nimport { Lock } from '@phosphor-icons/react/dist/ssr/Lock'\nimport { LockOpen } from '@phosphor-icons/react/dist/ssr/LockOpen'\nimport { Shield } from '@phosphor-icons/react/dist/ssr/Shield'\nimport { Wallet } from '@phosphor-icons/react/dist/ssr/Wallet'\nimport { Key } from '@phosphor-icons/react/dist/ssr/Key'\nimport { CurrencyDollar } from '@phosphor-icons/react/dist/ssr/CurrencyDollar'\n\n// Time & Date\nimport { Clock } from '@phosphor-icons/react/dist/ssr/Clock'\nimport { Calendar } from '@phosphor-icons/react/dist/ssr/Calendar'\nimport { CalendarPlus } from '@phosphor-icons/react/dist/ssr/CalendarPlus'\n\n// UI Elements\nimport { Bell } from '@phosphor-icons/react/dist/ssr/Bell'\nimport { Heart } from '@phosphor-icons/react/dist/ssr/Heart'\nimport { Star } from '@phosphor-icons/react/dist/ssr/Star'\nimport { Bookmark } from '@phosphor-icons/react/dist/ssr/Bookmark'\nimport { Share } from '@phosphor-icons/react/dist/ssr/Share'\n\n// Theme\nimport { Monitor } from '@phosphor-icons/react/dist/ssr/Monitor'\nimport { Sun } from '@phosphor-icons/react/dist/ssr/Sun'\nimport { Moon } from '@phosphor-icons/react/dist/ssr/Moon'\n\n// Additional\nimport { Lightbulb } from '@phosphor-icons/react/dist/ssr/Lightbulb'\nimport { Brain } from '@phosphor-icons/react/dist/ssr/Brain'\nimport { Flag } from '@phosphor-icons/react/dist/ssr/Flag'\nimport { Square } from '@phosphor-icons/react/dist/ssr/Square'\nimport { Sparkle } from '@phosphor-icons/react/dist/ssr/Sparkle'\nimport { Globe } from '@phosphor-icons/react/dist/ssr/Globe'\nimport { DeviceMobile } from '@phosphor-icons/react/dist/ssr/DeviceMobile'\nimport { Ticket } from '@phosphor-icons/react/dist/ssr/Ticket'\nimport { Clipboard } from '@phosphor-icons/react/dist/ssr/Clipboard'\nimport { WifiHigh } from '@phosphor-icons/react/dist/ssr/WifiHigh'\nimport { WifiSlash } from '@phosphor-icons/react/dist/ssr/WifiSlash'\nimport { Cpu } from '@phosphor-icons/react/dist/ssr/Cpu'\nimport { MaskHappy } from '@phosphor-icons/react/dist/ssr/MaskHappy'\nimport { Rocket } from '@phosphor-icons/react/dist/ssr/Rocket'\n\n// Admin\nimport { Layout } from '@phosphor-icons/react/dist/ssr/Layout'\nimport { Megaphone } from '@phosphor-icons/react/dist/ssr/Megaphone'\nimport { Stack } from '@phosphor-icons/react/dist/ssr/Stack'\nimport { Prohibit } from '@phosphor-icons/react/dist/ssr/Prohibit'\n\n// 핵심 아이콘 객체 (키는 기존과 동일, 값만 Phosphor로 교체)\nexport const icons = {\n // Navigation\n home: House,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n menu: List,\n x: X,\n close: X,\n search: MagnifyingGlass,\n settings: Gear,\n externalLink: ArrowSquareOut,\n chevronLeft: CaretLeft,\n chevronRight: CaretRight,\n chevronDown: CaretDown,\n chevronUp: CaretUp,\n\n // Actions\n edit: Pencil,\n delete: Trash,\n add: Plus,\n remove: Minus,\n download: Download,\n upload: Upload,\n refresh: ArrowClockwise,\n save: FloppyDisk,\n copy: Copy,\n\n // Status & Feedback\n loader: SpinnerGap,\n success: CheckCircle,\n error: XCircle,\n alertCircle: WarningCircle,\n warning: WarningCircle,\n info: Info,\n check: Check,\n circle: Circle,\n helpCircle: Question,\n\n // User & Auth\n user: User,\n users: Users,\n userPlus: UserPlus,\n logIn: SignIn,\n logOut: SignOut,\n eye: Eye,\n eyeOff: EyeSlash,\n\n // Data & Analytics\n chart: ChartBar,\n barChart: ChartBar,\n trendingUp: TrendUp,\n activity: Pulse,\n database: Database,\n zap: Lightning,\n\n // Files & Content\n fileText: FileText,\n file: File,\n folder: Folder,\n book: Book,\n bookOpen: BookOpen,\n\n // Communication\n mail: Envelope,\n message: ChatCircle,\n phone: Phone,\n\n // Media\n image: Image,\n video: Video,\n camera: Camera,\n\n // Emotions\n smile: Smiley,\n frown: SmileySad,\n meh: SmileyMeh,\n\n // Security\n lock: Lock,\n unlock: LockOpen,\n shield: Shield,\n wallet: Wallet,\n key: Key,\n dollar: CurrencyDollar,\n dollarSign: CurrencyDollar,\n currency: CurrencyDollar,\n\n // Time & Date\n clock: Clock,\n calendar: Calendar,\n calendarPlus: CalendarPlus,\n\n // UI Elements\n bell: Bell,\n heart: Heart,\n star: Star,\n bookmark: Bookmark,\n share: Share,\n\n // Theme\n monitor: Monitor,\n sun: Sun,\n moon: Moon,\n\n // Additional\n lightbulb: Lightbulb,\n brain: Brain,\n flag: Flag,\n square: Square,\n sparkle: Sparkle,\n sparkles: Sparkle,\n globe: Globe,\n smartphone: DeviceMobile,\n deviceMobile: DeviceMobile,\n floppyDisk: FloppyDisk,\n\n // Connectivity\n ticket: Ticket,\n clipboard: Clipboard,\n wifi: WifiHigh,\n wifiOff: WifiSlash,\n cpu: Cpu,\n mask: MaskHappy,\n rocket: Rocket,\n\n // Admin\n layout: Layout,\n megaphone: Megaphone,\n layers: Stack,\n ban: Prohibit,\n\n // Text Formatting (Markdown Toolbar)\n bold: TextB,\n italic: TextItalic,\n strikethrough: TextStrikethrough,\n heading: TextHOne,\n link: Link,\n code: Code,\n fileCode: FileCode,\n quote: Quotes,\n list: List,\n listOrdered: ListNumbers,\n minus: Minus,\n} as const\n\n// 아이콘 이름 타입\nexport type IconName = keyof typeof icons\n\n// 감정별 아이콘 매핑\nexport const emotionIcons = {\n happy: 'smile',\n sad: 'frown',\n neutral: 'meh',\n excited: 'smile',\n angry: 'frown',\n love: 'heart',\n like: 'heart',\n dislike: 'frown',\n} as const\n\n// 상태별 아이콘 매핑\nexport const statusIcons = {\n loading: 'loader',\n success: 'success',\n error: 'error',\n warning: 'warning',\n info: 'info',\n locked: 'lock',\n unlocked: 'unlock',\n visible: 'eye',\n hidden: 'eyeOff',\n} as const\n\n// 아이콘 카테고리별 그룹화 (참고용)\nexport const iconCategories = {\n navigation: ['home', 'arrowLeft', 'arrowRight', 'arrowUp', 'arrowDown', 'menu', 'close', 'search', 'settings', 'externalLink', 'chevronLeft', 'chevronRight', 'chevronDown', 'chevronUp'],\n actions: ['edit', 'delete', 'add', 'remove', 'download', 'upload', 'refresh', 'save', 'copy'],\n status: ['loader', 'success', 'error', 'alertCircle', 'warning', 'info', 'check', 'circle'],\n user: ['user', 'users', 'userPlus', 'logIn', 'logOut', 'eye', 'eyeOff'],\n data: ['chart', 'barChart', 'trendingUp', 'activity', 'database', 'zap'],\n files: ['fileText', 'file', 'folder', 'book'],\n communication: ['mail', 'message', 'phone'],\n media: ['image', 'video', 'camera'],\n emotions: ['smile', 'frown', 'meh'],\n security: ['lock', 'unlock', 'shield'],\n time: ['clock', 'calendar'],\n ui: ['bell', 'heart', 'star', 'bookmark', 'share'],\n theme: ['monitor', 'sun', 'moon'],\n} as const\n","/**\n * Icon Aliases\n * \n * 여러 이름이 같은 아이콘을 가리키도록 하는 alias 시스템\n * DX 향상을 위해 직관적인 이름들을 지원합니다.\n */\n\nexport const ICON_ALIASES: Record<string, string> = {\n // kebab-case → camelCase mappings (자동 변환 지원)\n 'arrow-left': 'arrowLeft',\n 'arrow-right': 'arrowRight',\n 'arrow-up': 'arrowUp',\n 'arrow-down': 'arrowDown',\n 'chevron-left': 'chevronLeft',\n 'chevron-right': 'chevronRight',\n 'chevron-up': 'chevronUp',\n 'chevron-down': 'chevronDown',\n 'external-link': 'externalLink',\n 'more-horizontal': 'moreHorizontal',\n 'more-vertical': 'moreVertical',\n 'user-plus': 'userPlus',\n 'log-in': 'logIn',\n 'log-out': 'logOut',\n 'check-circle': 'checkCircle',\n 'check-square': 'checkSquare',\n 'alert-circle': 'alertCircle',\n 'eye-off': 'eyeOff',\n 'file-text': 'fileText',\n 'book-open': 'bookOpen',\n 'bar-chart': 'barChart',\n 'trending-up': 'trendingUp',\n 'trending-down': 'trendingDown',\n 'message-square': 'messageSquare',\n 'calendar-plus': 'calendarPlus',\n 'refresh-cw': 'refreshCw',\n 'dollar-sign': 'dollarSign',\n 'layout-dashboard': 'layoutDashboard',\n 'device-mobile': 'deviceMobile',\n 'floppy-disk': 'floppyDisk',\n\n // Navigation aliases\n 'back': 'arrowLeft',\n 'prev': 'arrowLeft',\n 'previous': 'arrowLeft',\n 'forward': 'arrowRight',\n 'next': 'arrowRight',\n \n // Close aliases\n 'close': 'x',\n 'cancel': 'x',\n \n // Delete aliases\n 'remove': 'delete',\n 'trash': 'delete',\n \n // Add aliases\n 'plus': 'add',\n 'new': 'add',\n \n // Edit aliases\n 'pencil': 'edit',\n 'modify': 'edit',\n \n // Save aliases\n 'store': 'save',\n 'floppy': 'save',\n \n // Search aliases\n 'magnify': 'search',\n \n // User aliases\n 'person': 'user',\n 'account': 'user',\n 'profile': 'user',\n \n // Settings aliases\n 'gear': 'settings',\n 'config': 'settings',\n 'preferences': 'settings',\n \n // Home aliases\n 'house': 'home',\n 'main': 'home',\n \n // Check aliases\n 'done': 'check',\n 'complete': 'check',\n 'tick': 'check',\n \n // Info aliases\n 'information': 'info',\n 'help': 'info',\n \n // Warning aliases\n 'alert': 'warning',\n 'caution': 'warning',\n \n // Success aliases\n 'checkmark': 'success',\n 'checkCircle': 'success',\n \n // Error aliases\n 'fail': 'error',\n 'cross': 'error',\n 'xCircle': 'error',\n \n // Loading aliases\n 'spinner': 'loader',\n 'loading': 'loader',\n 'wait': 'loader',\n \n // Refresh aliases\n 'reload': 'refresh',\n 'update': 'refresh',\n 'sync': 'refresh',\n \n // Eye aliases\n 'show': 'eye',\n 'view': 'eye',\n 'hide': 'eyeOff',\n 'hidden': 'eyeOff',\n \n // Lock aliases\n 'secure': 'lock',\n 'locked': 'lock',\n 'unsecure': 'unlock',\n 'unlocked': 'unlock',\n \n // Download aliases\n 'get': 'download',\n 'fetch': 'download',\n \n // Upload aliases\n 'post': 'upload',\n \n // Share aliases\n 'send': 'share',\n 'export': 'share',\n \n // Copy aliases\n 'duplicate': 'copy',\n 'clone': 'copy',\n \n // Mail aliases\n 'email': 'mail',\n 'envelope': 'mail',\n \n // Message aliases\n 'chat': 'message',\n 'comment': 'message',\n 'talk': 'message',\n \n // Calendar aliases\n 'date': 'calendar',\n 'schedule': 'calendar',\n \n // Clock aliases\n 'time': 'clock',\n 'watch': 'clock',\n \n // File aliases\n 'document': 'fileText',\n 'doc': 'fileText',\n 'text': 'fileText',\n \n // Folder aliases\n 'directory': 'folder',\n 'dir': 'folder',\n \n // Image aliases\n 'picture': 'image',\n 'img': 'image',\n \n // Video aliases\n 'movie': 'video',\n 'film': 'video',\n \n // Camera aliases\n 'photo': 'camera',\n 'capture': 'camera',\n \n // Play aliases\n 'start': 'play',\n 'run': 'play',\n \n // Pause aliases\n 'stop': 'pause',\n 'halt': 'pause',\n \n // Heart aliases\n 'like': 'heart',\n 'love': 'heart',\n \n // Star aliases\n 'favorite': 'star',\n \n // Bookmark aliases\n 'saveBookmark': 'bookmark',\n \n // Bell aliases\n 'notification': 'bell',\n 'notify': 'bell',\n 'alarm': 'bell',\n \n // Settings aliases\n 'prefs': 'settings',\n \n // Search aliases (duplicate removed - see line 37)\n 'lookup': 'search',\n \n // More aliases\n 'dots': 'moreHorizontal',\n 'moreMenu': 'moreHorizontal',\n 'moreOptions': 'moreVertical',\n \n // External link aliases\n 'external': 'externalLink',\n 'outbound': 'externalLink',\n 'open': 'externalLink',\n \n // Link aliases\n 'url': 'link',\n 'hyperlink': 'link',\n \n // Chart aliases\n 'graph': 'barChart',\n 'stats': 'barChart',\n 'analytics': 'barChart',\n \n // Database aliases\n 'db': 'database',\n 'storage': 'database',\n \n // Activity aliases\n 'pulse': 'activity',\n 'monitor': 'activity',\n \n // Trending aliases\n 'up': 'trendingUp',\n 'down': 'trendingDown',\n \n // Zap aliases\n 'lightning': 'zap',\n 'bolt': 'zap',\n 'flash': 'zap',\n \n // Shield aliases\n 'security': 'shield',\n 'protect': 'shield',\n \n // Key aliases\n 'password': 'key',\n 'secret': 'key',\n \n // Log in aliases\n 'signin': 'logIn',\n 'login': 'logIn',\n 'enter': 'logIn',\n \n // Log out aliases\n 'signout': 'logOut',\n 'logout': 'logOut',\n 'exit': 'logOut',\n \n // Users aliases\n 'people': 'users',\n 'group': 'users',\n 'team': 'users',\n \n // User plus aliases\n 'addUser': 'userPlus',\n 'invite': 'userPlus',\n \n // Book aliases\n 'read': 'book',\n 'library': 'book',\n \n // Book open aliases\n 'reading': 'bookOpen',\n 'openBook': 'bookOpen',\n \n // Sun aliases\n 'light': 'sun',\n 'day': 'sun',\n \n // Moon aliases\n 'dark': 'moon',\n 'night': 'moon',\n \n // Monitor aliases\n 'screen': 'monitor',\n 'display': 'monitor',\n \n // Brain aliases\n 'ai': 'brain',\n 'intelligence': 'brain',\n 'think': 'brain',\n \n // Lightbulb aliases\n 'idea': 'lightbulb',\n 'bulb': 'lightbulb',\n 'inspiration': 'lightbulb',\n \n // Sparkles aliases\n 'magic': 'sparkles',\n 'stars': 'sparkles',\n 'glitter': 'sparkles',\n} as const\n\n/**\n * Resolve icon alias to actual icon name\n * \n * @param iconName - 아이콘 이름 또는 별칭 / Icon name or alias\n * @returns 실제 아이콘 이름 / Actual icon name\n * @throws {TypeError} iconName이 문자열이 아닌 경우\n */\nexport function resolveIconAlias(iconName: string): string {\n if (typeof iconName !== 'string') {\n throw new TypeError('iconName must be a string');\n }\n return ICON_ALIASES[iconName] || iconName;\n}\n\n/**\n * Get all aliases for an icon name\n * \n * @param iconName - 아이콘 이름 / Icon name\n * @returns 해당 아이콘의 모든 별칭 배열 / Array of all aliases for the icon\n * @throws {TypeError} iconName이 문자열이 아닌 경우\n */\nexport function getIconAliases(iconName: string): string[] {\n if (typeof iconName !== 'string') {\n throw new TypeError('iconName must be a string');\n }\n return Object.entries(ICON_ALIASES)\n .filter(([_, target]) => target === iconName)\n .map(([alias]) => alias);\n}\n\n\n","/**\n * Icon Config Types\n *\n * Icon 시스템의 설정 타입 정의\n * 상태관리는 서비스 레벨에서 관리 (Zustand 등)\n */\n\nexport type IconSet = 'lucide' | 'phosphor' | 'iconsax'\n\nexport type PhosphorWeight = 'thin' | 'light' | 'regular' | 'bold' | 'duotone' | 'fill'\n\nexport type IconsaxVariant = 'line' | 'bold'\n\nexport interface IconConfig {\n set: IconSet\n weight: PhosphorWeight\n size: number\n color: string\n strokeWidth?: number // Lucide용\n iconsaxVariant?: IconsaxVariant // Iconsax용 (line | bold)\n}\n\nexport const defaultIconConfig: IconConfig = {\n set: 'phosphor',\n weight: 'regular',\n size: 20,\n color: 'currentColor',\n strokeWidth: 1.25,\n iconsaxVariant: 'line',\n}\n\n/**\n * 세트별 기본 strokeWidth\n */\nexport const getDefaultStrokeWidth = (set: IconSet): number => {\n switch (set) {\n case 'lucide':\n return 1.25\n case 'phosphor':\n return 1.25 // Phosphor는 weight 사용\n case 'iconsax':\n return 1.5\n default:\n return 1.25\n }\n}\n","'use client'\n\n/**\n * IconProvider - Icon 시스템 전역 설정 Provider\n *\n * React Context를 사용하여 전역 아이콘 설정을 제공합니다.\n *\n * @example\n * ```tsx\n * <IconProvider set=\"phosphor\" weight=\"regular\" size={20}>\n * <App />\n * </IconProvider>\n * ```\n */\n\nimport React, { createContext, useContext } from 'react'\nimport { type IconConfig, type IconSet, type PhosphorWeight, type IconsaxVariant, defaultIconConfig } from './icon-store'\n\n/**\n * IconProvider 컴포넌트 Props\n */\nexport interface IconProviderProps {\n /** 아이콘 세트 (lucide, phosphor, iconsax) */\n set?: IconSet\n /** Phosphor 아이콘 weight */\n weight?: PhosphorWeight\n /** Iconsax 아이콘 변형 (line, bold) */\n iconsaxVariant?: IconsaxVariant\n /** 기본 아이콘 크기 */\n size?: number\n /** 기본 아이콘 색상 */\n color?: string\n /** Lucide/Iconsax 아이콘 stroke width */\n strokeWidth?: number\n /** 자식 컴포넌트 */\n children: React.ReactNode\n}\n\ninterface IconContextValue extends IconConfig {}\n\nconst IconContext = createContext<IconContextValue>(defaultIconConfig)\n\nexport function IconProvider({\n set = defaultIconConfig.set,\n weight = defaultIconConfig.weight,\n iconsaxVariant = defaultIconConfig.iconsaxVariant,\n size = defaultIconConfig.size,\n color = defaultIconConfig.color,\n strokeWidth = defaultIconConfig.strokeWidth,\n children,\n}: IconProviderProps) {\n const value: IconContextValue = {\n set,\n weight,\n iconsaxVariant,\n size,\n color,\n strokeWidth,\n }\n\n return (\n <IconContext.Provider value={value}>\n {children}\n </IconContext.Provider>\n )\n}\n\nexport function useIconContext(): IconContextValue {\n return useContext(IconContext)\n}\n\n// Re-export types for convenience\nexport type { IconSet, PhosphorWeight, IconsaxVariant, IconConfig } from './icon-store'\nexport { defaultIconConfig, getDefaultStrokeWidth } from './icon-store'\n","/**\n * Case Conversion Utilities\n *\n * 문자열 케이스 변환 유틸리티 함수들입니다.\n * Utility functions for string case conversion.\n */\n\n/**\n * 문자열을 camelCase로 변환합니다.\n * Converts a string to camelCase.\n *\n * @param str - 변환할 문자열 / String to convert\n * @returns camelCase 문자열 / camelCase string\n *\n * @example\n * toCamelCase('arrow-left') // 'arrowLeft'\n * toCamelCase('arrow_left') // 'arrowLeft'\n * toCamelCase('ArrowLeft') // 'arrowLeft'\n * toCamelCase('arrowLeft') // 'arrowLeft'\n * toCamelCase('HEART') // 'heart'\n */\nexport function toCamelCase(str: string): string {\n if (!str) return str\n\n // 이미 camelCase인지 확인 (kebab/snake가 아니고 첫 글자가 소문자)\n if (!/[-_]/.test(str) && /^[a-z]/.test(str)) {\n return str\n }\n\n // 전체가 대문자인 경우 (HEART, USER 등) → 전체 소문자로\n if (/^[A-Z]+$/.test(str)) {\n return str.toLowerCase()\n }\n\n // PascalCase를 camelCase로 변환 (ArrowLeft → arrowLeft)\n if (/^[A-Z]/.test(str) && !/[-_]/.test(str)) {\n return str.charAt(0).toLowerCase() + str.slice(1)\n }\n\n // kebab-case 또는 snake_case를 camelCase로 변환\n return str\n .split(/[-_]/)\n .map((word, index) => {\n if (index === 0) {\n return word.toLowerCase()\n }\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n })\n .join('')\n}\n\n/**\n * 문자열을 PascalCase로 변환합니다.\n * Converts a string to PascalCase.\n *\n * @param str - 변환할 문자열 / String to convert\n * @returns PascalCase 문자열 / PascalCase string\n *\n * @example\n * toPascalCase('arrow-left') // 'ArrowLeft'\n * toPascalCase('arrow_left') // 'ArrowLeft'\n * toPascalCase('arrowLeft') // 'ArrowLeft'\n * toPascalCase('ArrowLeft') // 'ArrowLeft'\n */\nexport function toPascalCase(str: string): string {\n if (!str) return str\n\n // 이미 PascalCase인지 확인\n if (/^[A-Z]/.test(str) && !/[-_]/.test(str)) {\n return str\n }\n\n // kebab-case 또는 snake_case가 포함된 경우\n if (/[-_]/.test(str)) {\n return str\n .split(/[-_]/)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('')\n }\n\n // camelCase를 PascalCase로 변환\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n","/**\n * Icon Provider System\n *\n * 각 프로바이더별 로딩 전략 / Loading strategies per provider:\n *\n * 1. Phosphor Icons (https://phosphoricons.com) - default\n * - Official package: @phosphor-icons/react (MIT License)\n * - icons.ts에서 정적 subpath import (SSR-safe /dist/ssr)\n * - PROJECT_ICONS 매핑으로 통합 이름 지원\n * - 정적 맵에 없는 아이콘은 \"?\" fallback UI 표시\n *\n * 2. Iconsax Icons (https://iconsax.io) - separate entry\n * - '@hua-labs/ui/iconsax'에서 import 시 자동 등록\n * - 코어 번들에 포함되지 않음 / Not in core bundle\n * - registerIconsaxResolver()로 lazy 연결\n *\n * Note: Lucide provider는 deprecated → 제거됨.\n * Note: 동적 barrel import (import('@phosphor-icons/react'))는 Turbopack에서\n * 전체 라이브러리(4.6MB)를 번들하므로 사용 금지.\n */\n\nimport { toPascalCase } from './case-utils'\n\n// Iconsax resolver - registered lazily when iconsax entry is loaded\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet iconsaxResolver: ((name: string, variant?: string) => any) | null = null\n\n/**\n * Register iconsax resolver (called from iconsax entry point).\n * Allows the core Icon component to resolve iconsax icons\n * without statically importing the iconsax bundle.\n */\nexport function registerIconsaxResolver(resolver: typeof iconsaxResolver) {\n iconsaxResolver = resolver\n}\n\n/**\n * Get registered iconsax resolver\n */\nexport function getIconsaxResolver() {\n return iconsaxResolver\n}\n\n// Icon Provider Type\nexport type IconProvider = 'lucide' | 'phosphor' | 'iconsax'\n\n// Icon Provider Configuration\nexport interface IconProviderConfig {\n provider: IconProvider\n prefix?: string\n}\n\n/**\n * Project-specific icon list\n * These are the icons actually used in SumUp project\n * Only these icons will be loaded for optimal bundle size\n */\nexport const PROJECT_ICONS = {\n // Navigation & Layout\n 'home': { lucide: 'Home', phosphor: 'House', iconsax: 'Home2' },\n 'layout-dashboard': { lucide: 'LayoutDashboard', phosphor: 'SquaresFour' },\n 'folder': { lucide: 'Folder', phosphor: 'Folder', iconsax: 'Folder' },\n 'alert-circle': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Danger' },\n 'alertCircle': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Danger' },\n 'columns': { lucide: 'Columns', phosphor: 'Columns' },\n 'users': { lucide: 'Users', phosphor: 'Users', iconsax: 'People' },\n 'settings': { lucide: 'Settings', phosphor: 'Gear' },\n 'menu': { lucide: 'Menu', phosphor: 'List', iconsax: 'Menu' },\n 'close': { lucide: 'X', phosphor: 'X', iconsax: 'CloseCircle' },\n 'chevronLeft': { lucide: 'ChevronLeft', phosphor: 'CaretLeft', iconsax: 'ArrowLeft2' },\n 'chevronRight': { lucide: 'ChevronRight', phosphor: 'CaretRight', iconsax: 'ArrowRight2' },\n 'chevronDown': { lucide: 'ChevronDown', phosphor: 'CaretDown', iconsax: 'ArrowDown2' },\n 'chevronUp': { lucide: 'ChevronUp', phosphor: 'CaretUp', iconsax: 'ArrowUp2' },\n 'arrowLeft': { lucide: 'ArrowLeft', phosphor: 'ArrowLeft', iconsax: 'ArrowLeft' },\n 'arrowRight': { lucide: 'ArrowRight', phosphor: 'ArrowRight', iconsax: 'ArrowRight' },\n 'arrowUp': { lucide: 'ArrowUp', phosphor: 'ArrowUp', iconsax: 'ArrowUp' },\n 'arrowDown': { lucide: 'ArrowDown', phosphor: 'ArrowDown', iconsax: 'ArrowDown' },\n\n // Actions\n 'add': { lucide: 'Plus', phosphor: 'Plus', iconsax: 'Add' },\n 'edit': { lucide: 'Edit', phosphor: 'Pencil' },\n 'pencil': { lucide: 'Pencil', phosphor: 'Pencil' },\n 'delete': { lucide: 'Trash2', phosphor: 'Trash', iconsax: 'Trash' },\n 'trash': { lucide: 'Trash2', phosphor: 'Trash', iconsax: 'Trash' },\n 'upload': { lucide: 'Upload', phosphor: 'Upload', iconsax: 'Upload' },\n 'download': { lucide: 'Download', phosphor: 'Download', iconsax: 'Download' },\n 'x': { lucide: 'X', phosphor: 'X' },\n 'check': { lucide: 'Check', phosphor: 'Check', iconsax: 'Check' },\n 'search': { lucide: 'Search', phosphor: 'MagnifyingGlass', iconsax: 'SearchNormal' },\n 'share': { lucide: 'Share', phosphor: 'Share' },\n 'copy': { lucide: 'Copy', phosphor: 'Copy' },\n 'save': { lucide: 'Save', phosphor: 'FloppyDisk' },\n\n // Status & Feedback\n 'loader': { lucide: 'Loader2', phosphor: 'Spinner' },\n 'loader2': { lucide: 'Loader2', phosphor: 'Spinner' },\n 'check-circle': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'checkCircle': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'success': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'error': { lucide: 'XCircle', phosphor: 'XCircle', iconsax: 'CloseCircle' },\n 'warning': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Warning2' },\n 'info': { lucide: 'Info', phosphor: 'Info', iconsax: 'InfoCircle' },\n 'refresh': { lucide: 'RefreshCw', phosphor: 'ArrowClockwise', iconsax: 'Refresh' },\n 'refreshCw': { lucide: 'RefreshCw', phosphor: 'ArrowClockwise', iconsax: 'Refresh' },\n 'bell': { lucide: 'Bell', phosphor: 'Bell', iconsax: 'Bell' },\n 'heart': { lucide: 'Heart', phosphor: 'Heart', iconsax: 'Heart' },\n 'star': { lucide: 'Star', phosphor: 'Star', iconsax: 'Star' },\n 'bookmark': { lucide: 'Bookmark', phosphor: 'Bookmark' },\n\n // User & Auth\n 'user': { lucide: 'User', phosphor: 'User', iconsax: 'User' },\n 'userPlus': { lucide: 'UserPlus', phosphor: 'UserPlus', iconsax: 'UserAdd' },\n 'logIn': { lucide: 'LogIn', phosphor: 'SignIn', iconsax: 'Login' },\n 'logOut': { lucide: 'LogOut', phosphor: 'SignOut', iconsax: 'Logout' },\n 'chrome': { lucide: 'Chrome', phosphor: 'ChromeLogo', iconsax: 'Chrome' },\n 'github': { lucide: 'Github', phosphor: 'GithubLogo' },\n 'message': { lucide: 'MessageCircle', phosphor: 'ChatCircle' },\n\n // Content\n 'messageSquare': { lucide: 'MessageSquare', phosphor: 'ChatSquare' },\n 'message-square': { lucide: 'MessageSquare', phosphor: 'ChatSquare' },\n 'inbox': { lucide: 'Inbox', phosphor: 'Inbox' },\n 'calendar': { lucide: 'Calendar', phosphor: 'Calendar' },\n 'calendarPlus': { lucide: 'CalendarPlus', phosphor: 'CalendarPlus' },\n 'checkSquare': { lucide: 'CheckSquare', phosphor: 'CheckSquare', iconsax: 'TickSquare' },\n 'clock': { lucide: 'Clock', phosphor: 'Clock' },\n 'book': { lucide: 'Book', phosphor: 'Book', iconsax: 'Book' },\n 'bookOpen': { lucide: 'BookOpen', phosphor: 'BookOpen', iconsax: 'Book' },\n\n // Theme & UI\n 'monitor': { lucide: 'Monitor', phosphor: 'Monitor', iconsax: 'Monitor' },\n 'sun': { lucide: 'Sun', phosphor: 'Sun', iconsax: 'Sun' },\n 'moon': { lucide: 'Moon', phosphor: 'Moon', iconsax: 'Moon' },\n\n // AI & Features\n 'sparkle': { lucide: 'Sparkle', phosphor: 'Sparkle' },\n 'sparkles': { lucide: 'Sparkles', phosphor: 'Sparkle' },\n 'lightbulb': { lucide: 'Lightbulb', phosphor: 'Lightbulb' },\n 'brain': { lucide: 'Brain', phosphor: 'Brain' },\n 'zap': { lucide: 'Zap', phosphor: 'Lightning' },\n\n // Device & Platform\n 'globe': { lucide: 'Globe', phosphor: 'Globe', iconsax: 'Global' },\n 'deviceMobile': { lucide: 'Smartphone', phosphor: 'DeviceMobile' },\n 'smartphone': { lucide: 'Smartphone', phosphor: 'DeviceMobile' },\n 'floppyDisk': { lucide: 'Save', phosphor: 'FloppyDisk' },\n\n // Data & Analytics\n 'chart': { lucide: 'BarChart3', phosphor: 'ChartBar' },\n 'barChart': { lucide: 'BarChart', phosphor: 'ChartBar' },\n 'trendingUp': { lucide: 'TrendingUp', phosphor: 'TrendUp' },\n 'trendingDown': { lucide: 'TrendingDown', phosphor: 'TrendDown' },\n 'activity': { lucide: 'Activity', phosphor: 'Pulse' },\n 'database': { lucide: 'Database', phosphor: 'Database' },\n 'dollarSign': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n 'dollar': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n 'currency': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n\n 'layers': { lucide: 'Layers', phosphor: 'Stack' },\n 'ban': { lucide: 'Ban', phosphor: 'Prohibit' },\n\n // Security\n 'lock': { lucide: 'Lock', phosphor: 'Lock', iconsax: 'Lock' },\n 'unlock': { lucide: 'Unlock', phosphor: 'LockOpen', iconsax: 'Unlock' },\n 'shield': { lucide: 'Shield', phosphor: 'Shield', iconsax: 'Shield' },\n 'key': { lucide: 'Key', phosphor: 'Key' },\n\n // Media\n 'play': { lucide: 'Play', phosphor: 'Play', iconsax: 'Play' },\n 'pause': { lucide: 'Pause', phosphor: 'Pause', iconsax: 'Pause' },\n 'image': { lucide: 'Image', phosphor: 'Image', iconsax: 'Image' },\n 'video': { lucide: 'Video', phosphor: 'Video', iconsax: 'Video' },\n 'camera': { lucide: 'Camera', phosphor: 'Camera', iconsax: 'Camera' },\n\n // Files\n 'fileText': { lucide: 'FileText', phosphor: 'FileText' },\n 'file': { lucide: 'File', phosphor: 'File' },\n\n // Navigation\n 'externalLink': { lucide: 'ExternalLink', phosphor: 'ArrowSquareOut' },\n 'link': { lucide: 'Link', phosphor: 'Link', iconsax: 'Link' },\n 'moreHorizontal': { lucide: 'MoreHorizontal', phosphor: 'DotsThreeOutline' },\n 'moreVertical': { lucide: 'MoreVertical', phosphor: 'DotsThreeVertical' },\n\n // Priority\n 'remove': { lucide: 'Minus', phosphor: 'Minus', iconsax: 'Minus' },\n\n // Eye (password)\n 'eye': { lucide: 'Eye', phosphor: 'Eye', iconsax: 'Eye' },\n 'eyeOff': { lucide: 'EyeOff', phosphor: 'EyeSlash', iconsax: 'EyeSlash' },\n\n // Emotions\n 'smile': { lucide: 'Smile', phosphor: 'Smiley', iconsax: 'EmojiHappy' },\n 'frown': { lucide: 'Frown', phosphor: 'SmileySad', iconsax: 'EmojiSad' },\n 'meh': { lucide: 'Meh', phosphor: 'SmileyMeh', iconsax: 'EmojiNormal' },\n\n // Social\n 'mail': { lucide: 'Mail', phosphor: 'Envelope' },\n 'phone': { lucide: 'Phone', phosphor: 'Phone' },\n\n // Additional\n 'flag': { lucide: 'Flag', phosphor: 'Flag', iconsax: 'Flag' },\n 'rocket': { lucide: 'Rocket', phosphor: 'Rocket', iconsax: 'Rocket' },\n\n // Connectivity & Misc\n 'ticket': { lucide: 'Ticket', phosphor: 'Ticket', iconsax: 'Ticket' },\n 'clipboard': { lucide: 'ClipboardList', phosphor: 'Clipboard', iconsax: 'Sticker' },\n 'wifi': { lucide: 'Wifi', phosphor: 'WifiHigh', iconsax: 'Wifi' },\n 'wifiOff': { lucide: 'WifiOff', phosphor: 'WifiSlash' },\n 'cpu': { lucide: 'Cpu', phosphor: 'Cpu', iconsax: 'Computing' },\n 'mask': { lucide: 'Drama', phosphor: 'MaskHappy', iconsax: 'EmojiHappy' },\n\n // Text Formatting (Markdown Toolbar)\n 'bold': { lucide: 'Bold', phosphor: 'TextB' },\n 'italic': { lucide: 'Italic', phosphor: 'TextItalic' },\n 'strikethrough': { lucide: 'Strikethrough', phosphor: 'TextStrikethrough' },\n 'heading': { lucide: 'Heading', phosphor: 'TextHOne' },\n 'code': { lucide: 'Code', phosphor: 'Code', iconsax: 'Code' },\n 'fileCode': { lucide: 'FileCode', phosphor: 'FileCode' },\n 'quote': { lucide: 'Quote', phosphor: 'Quotes', iconsax: 'QuoteUp' },\n 'list': { lucide: 'List', phosphor: 'List' },\n 'listOrdered': { lucide: 'ListOrdered', phosphor: 'ListNumbers' },\n 'minus': { lucide: 'Minus', phosphor: 'Minus', iconsax: 'Minus' },\n} as const\n\n/**\n * Get icon from provider (iconsax only)\n *\n * Phosphor/Lucide는 정적 맵(icons.ts)으로 해결. 이 함수는 iconsax fallback용.\n */\nexport function getIconFromProvider(\n iconName: string,\n provider: IconProvider = 'phosphor'\n): React.ComponentType<Record<string, unknown>> | null {\n if (provider !== 'iconsax' || !iconsaxResolver) return null\n\n const iconMapping = PROJECT_ICONS[iconName as keyof typeof PROJECT_ICONS]\n const iconsaxName = iconMapping\n ? (iconMapping as Record<string, string | undefined>)['iconsax'] || toPascalCase(iconName)\n : toPascalCase(iconName)\n\n return iconsaxResolver(iconsaxName) || null\n}\n\n/**\n * Get icon name for provider\n */\nexport function getIconNameForProvider(\n iconName: string,\n provider: IconProvider\n): string {\n const iconMapping = PROJECT_ICONS[iconName as keyof typeof PROJECT_ICONS]\n if (iconMapping) {\n const mappedName = (iconMapping as Record<string, string | undefined>)[provider]\n if (mappedName) {\n return mappedName\n }\n }\n return iconName\n}\n\n/**\n * Get all project icon names\n */\nexport function getProjectIconNames(): string[] {\n return Object.keys(PROJECT_ICONS)\n}\n","/**\n * Icon Name Normalization System\n *\n * 아이콘 이름 정규화를 위한 통합 시스템입니다.\n *\n * Features:\n * - kebab-case → camelCase conversion\n * - snake_case → camelCase conversion\n * - PascalCase → camelCase conversion\n * - Alias resolution\n * - Provider-specific name mapping\n */\n\nimport { ICON_ALIASES } from './icon-aliases'\nimport { toCamelCase, toPascalCase } from './case-utils'\n\n// Re-export case utils for backward compatibility\nexport { toCamelCase, toPascalCase } from './case-utils'\n\n// IconProvider type (avoid circular dependency with icon-providers.ts)\nexport type IconProviderType = 'lucide' | 'phosphor' | 'iconsax'\n\n/**\n * 정규화 결과 인터페이스\n */\nexport interface NormalizeResult {\n /** 정규화된 아이콘 이름 (camelCase) */\n normalized: string\n /** 원본 이름이 alias였는지 여부 */\n wasAlias: boolean\n /** 원본 alias 이름 (alias였던 경우) */\n originalAlias?: string\n}\n\n/**\n * 아이콘 이름을 정규화합니다.\n *\n * @example\n * normalizeIconName('arrow-left') // { normalized: 'arrowLeft', wasAlias: false }\n * normalizeIconName('back') // { normalized: 'arrowLeft', wasAlias: true, originalAlias: 'back' }\n * normalizeIconName('ArrowLeft') // { normalized: 'arrowLeft', wasAlias: false }\n */\nexport function normalizeIconName(iconName: string): NormalizeResult {\n if (!iconName || typeof iconName !== 'string') {\n return { normalized: iconName || '', wasAlias: false }\n }\n\n const camelCased = toCamelCase(iconName)\n const aliasTarget = ICON_ALIASES[iconName] || ICON_ALIASES[camelCased]\n\n if (aliasTarget) {\n return {\n normalized: aliasTarget,\n wasAlias: true,\n originalAlias: iconName\n }\n }\n\n return {\n normalized: camelCased,\n wasAlias: false\n }\n}\n\n/**\n * 프로바이더별 아이콘 이름을 반환합니다.\n *\n * @example\n * getProviderIconName('arrowLeft', 'lucide') // 'ArrowLeft'\n * getProviderIconName('heart', 'iconsax') // 'Heart'\n */\nexport function getProviderIconName(\n normalizedName: string,\n provider: IconProviderType\n): string {\n switch (provider) {\n case 'lucide':\n case 'phosphor':\n case 'iconsax':\n return toPascalCase(normalizedName)\n default:\n return normalizedName\n }\n}\n","import React from 'react'\nimport type { IconProps as PhosphorIconProps } from '@phosphor-icons/react'\nimport { merge, mergeMap } from '../../lib/utils'\nimport { icons, IconName, emotionIcons, statusIcons } from '../../lib/icons'\nimport { getIconFromProvider, getIconsaxResolver, getIconNameForProvider } from '../../lib/icon-providers'\nimport { normalizeIconName } from '../../lib/normalize-icon-name'\nimport { useIconContext, type IconSet } from './IconProvider'\nimport { type PhosphorWeight } from './icon-store'\nimport type { AllIconName } from '../../lib/icon-names'\n\n/**\n * Icon 컴포넌트 Props\n */\nexport interface IconProps {\n /** 아이콘 이름 / Icon name */\n name: AllIconName\n /** 아이콘 크기 (숫자 또는 문자열) / Icon size (number or string) */\n size?: number | string\n /** 추가 CSS 클래스 / Additional CSS classes */\n className?: string\n /** 감정 아이콘 타입 / Emotion icon type */\n emotion?: keyof typeof emotionIcons\n /** 상태 아이콘 타입 / Status icon type */\n status?: keyof typeof statusIcons\n /** 아이콘 프로바이더 오버라이드 / Icon provider override */\n provider?: IconSet\n /** 부드러운 애니메이션 효과 / Smooth animation effect */\n animated?: boolean\n /** 펄스 애니메이션 / Pulse animation */\n pulse?: boolean\n /** 회전 애니메이션 / Spin animation */\n spin?: boolean\n /** 바운스 애니메이션 / Bounce animation */\n bounce?: boolean\n /** 색상 변형 / Color variant */\n variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'muted' | 'inherit'\n /** Phosphor 아이콘 weight 오버라이드 / Phosphor icon weight override */\n weight?: PhosphorWeight\n /** 스크린 리더용 라벨 / Screen reader label */\n 'aria-label'?: string\n /** 장식용 아이콘 / Decorative icon (hidden from screen readers) */\n 'aria-hidden'?: boolean\n}\n\n/**\n * Icon 컴포넌트\n *\n * 다중 아이콘 라이브러리(Phosphor, Lucide, Iconsax)를 지원하는 통합 아이콘 컴포넌트.\n * IconProvider를 통해 전역 설정을 관리하며, 개별 아이콘에서도 오버라이드 가능.\n *\n * Iconsax는 별도 entry('@hua-labs/ui/iconsax')를 import해야 동작합니다.\n *\n * @example\n * ```tsx\n * <Icon name=\"heart\" />\n * <Icon name=\"user\" size={24} />\n * <Icon name=\"check\" variant=\"success\" />\n * <Icon name=\"loader\" spin />\n * ```\n */\nconst IconComponent = React.forwardRef<HTMLSpanElement, IconProps>(({\n name,\n size,\n className,\n emotion,\n status,\n provider,\n weight,\n animated = false,\n pulse = false,\n spin = false,\n bounce = false,\n variant = 'default',\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaHidden\n}, ref) => {\n const config = useIconContext()\n\n const iconSet = provider || config.set\n const iconSize = size ?? config.size\n const iconWeight = weight || config.weight\n const iconColor = config.color\n const iconStrokeWidth = config.strokeWidth ?? 1.25\n const iconsaxVariant = config.iconsaxVariant ?? 'line'\n\n const [isClient, setIsClient] = React.useState(false)\n\n React.useEffect(() => {\n setIsClient(true)\n }, [])\n\n // 통합 정규화\n const resolvedIcon = React.useMemo(() => {\n const baseName = emotion ? emotionIcons[emotion] :\n status ? statusIcons[status] : name\n const { normalized } = normalizeIconName(baseName)\n const providerName = getIconNameForProvider(normalized, iconSet)\n return { normalized, providerName }\n }, [name, emotion, status, iconSet])\n\n const iconName = resolvedIcon.normalized as AllIconName\n\n // Iconsax: resolver를 통해 가져오기 (iconsax entry import 시 자동 등록됨)\n const iconsaxIcon = React.useMemo(() => {\n if (iconSet === 'iconsax' && isClient) {\n const resolver = getIconsaxResolver()\n if (resolver) {\n return resolver(resolvedIcon.providerName, iconsaxVariant)\n }\n }\n return null\n }, [iconSet, resolvedIcon.providerName, isClient, iconsaxVariant])\n\n // 색상 변형 클래스\n const variantClasses = mergeMap({\n 'text-current': variant === 'default',\n 'text-primary': variant === 'primary',\n 'text-muted-foreground': variant === 'secondary' || variant === 'muted',\n 'text-green-600 dark:text-green-400': variant === 'success',\n 'text-yellow-600 dark:text-yellow-400': variant === 'warning',\n 'text-destructive': variant === 'error',\n })\n\n // 서버사이드에서는 빈 span 반환\n if (!isClient) {\n return (\n <span\n style={{ width: iconSize, height: iconSize }}\n className={merge(variantClasses, className)}\n aria-hidden={ariaHidden !== undefined ? ariaHidden : true}\n aria-label={ariaLabel}\n />\n )\n }\n\n // Provider에 따라 아이콘 가져오기\n type IconComponentType = React.ComponentType<PhosphorIconProps | React.SVGProps<SVGSVGElement> | Record<string, unknown>>\n let ResolvedIcon: IconComponentType | null = null\n\n if (iconSet === 'phosphor') {\n // 1. icons.ts에서 먼저 찾기 (Phosphor 아이콘이 기본, 정적 import)\n ResolvedIcon = (icons[iconName as IconName] || null) as IconComponentType | null\n // 2. 정적 맵에 없으면 null (fallback UI \"?\" 표시)\n // getIconFromProvider는 iconsax 전용, phosphor는 정적 맵만 사용\n } else if (iconSet === 'iconsax') {\n ResolvedIcon = iconsaxIcon as IconComponentType | null\n if (!ResolvedIcon) {\n ResolvedIcon = getIconFromProvider(iconName, iconSet) as IconComponentType | null\n }\n } else {\n // Lucide나 다른 provider\n ResolvedIcon = getIconFromProvider(iconName, iconSet) as IconComponentType | null\n }\n\n if (!ResolvedIcon) {\n if (iconSet === 'iconsax' && !getIconsaxResolver()) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `Icon \"${iconName}\" — iconsax resolver not registered. ` +\n `Use HuaProvider with icons.set='iconsax', or add: import '@hua-labs/ui/iconsax'`\n )\n }\n } else {\n console.warn(`Icon \"${iconName}\" not found for provider \"${iconSet}\"`)\n }\n return (\n <span\n ref={ref}\n className={merge(\n 'inline-flex items-center justify-center rounded-full border-2 border-dashed border-border',\n variantClasses,\n className\n )}\n style={{ width: iconSize, height: iconSize }}\n aria-label={ariaLabel || `아이콘을 찾을 수 없음: ${iconName}`}\n title={`Icon not found: ${iconName}`}\n >\n <span className=\"text-xs text-muted-foreground\" aria-hidden=\"true\">\n ?\n </span>\n </span>\n )\n }\n\n // 세트별 props 준비\n type IconPropsType = PhosphorIconProps & {\n size?: number\n width?: number | string\n height?: number | string\n color?: string\n weight?: PhosphorWeight\n strokeWidth?: number\n }\n\n const iconProps: IconPropsType = {\n size: typeof iconSize === 'number' ? iconSize : undefined,\n width: typeof iconSize === 'string' ? iconSize : iconSize,\n height: typeof iconSize === 'string' ? iconSize : iconSize,\n color: iconColor,\n } as IconPropsType\n\n if (iconSet === 'phosphor') {\n iconProps.weight = iconWeight\n } else {\n iconProps.strokeWidth = iconStrokeWidth\n }\n\n const animationClasses = mergeMap({\n 'animate-pulse': pulse,\n 'animate-spin': spin,\n 'animate-bounce': bounce,\n 'transition-all duration-200 ease-in-out': animated,\n })\n\n const accessibilityProps: React.AriaAttributes = {}\n\n if (ariaLabel) {\n accessibilityProps['aria-label'] = ariaLabel\n accessibilityProps['aria-hidden'] = false\n } else if (ariaHidden !== undefined) {\n accessibilityProps['aria-hidden'] = ariaHidden\n } else {\n accessibilityProps['aria-hidden'] = true\n }\n\n return (\n <span\n ref={ref}\n className={merge(\n 'inline-flex items-center justify-center',\n animationClasses,\n variantClasses,\n className\n )}\n style={{ width: iconSize, height: iconSize }}\n {...accessibilityProps}\n >\n {ResolvedIcon && React.createElement(ResolvedIcon, {\n ...iconProps,\n className: variantClasses,\n 'aria-hidden': true\n } as React.ComponentProps<typeof ResolvedIcon>)}\n </span>\n )\n})\n\nIconComponent.displayName = 'Icon'\n\nconst MemoizedIcon = React.memo(IconComponent, (prevProps, nextProps) => {\n return (\n prevProps.name === nextProps.name &&\n prevProps.size === nextProps.size &&\n prevProps.className === nextProps.className &&\n prevProps.emotion === nextProps.emotion &&\n prevProps.status === nextProps.status &&\n prevProps.provider === nextProps.provider &&\n prevProps.animated === nextProps.animated &&\n prevProps.pulse === nextProps.pulse &&\n prevProps.spin === nextProps.spin &&\n prevProps.bounce === nextProps.bounce &&\n prevProps.variant === nextProps.variant &&\n prevProps.weight === nextProps.weight &&\n prevProps['aria-label'] === nextProps['aria-label'] &&\n prevProps['aria-hidden'] === nextProps['aria-hidden']\n )\n})\n\nexport const Icon = MemoizedIcon as typeof IconComponent\nIcon.displayName = 'Icon'\n\nexport const EmotionIcon = React.forwardRef<HTMLSpanElement, Omit<IconProps, 'name'> & { emotion: keyof typeof emotionIcons }>(\n (props, ref) => <Icon ref={ref} name=\"smile\" {...props} />\n)\nEmotionIcon.displayName = 'EmotionIcon'\n\nexport const StatusIcon = React.forwardRef<HTMLSpanElement, Omit<IconProps, 'name'> & { status: keyof typeof statusIcons }>(\n (props, ref) => <Icon ref={ref} name=\"info\" {...props} />\n)\nStatusIcon.displayName = 'StatusIcon'\n\nexport const LoadingIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"loader\" status=\"loading\" spin aria-label=\"로딩 중\" {...props} />\n )\n)\nLoadingIcon.displayName = 'LoadingIcon'\n\nexport const SuccessIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"check\" status=\"success\" variant=\"success\" aria-label=\"성공\" {...props} />\n )\n)\nSuccessIcon.displayName = 'SuccessIcon'\n\nexport const ErrorIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"alertCircle\" status=\"error\" variant=\"error\" aria-label=\"오류\" {...props} />\n )\n)\nErrorIcon.displayName = 'ErrorIcon'\n"]}
|
package/dist/chunk-ZY23NOT4.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import {a}from'./chunk-QEMPERUK.mjs';import o from'react';import {jsxs,jsx}from'react/jsx-runtime';var P=o.forwardRef(({className:l,children:s,trigger:n,open:a$1,onOpenChange:u,position:t="bottom",align:M="center",offset:d=8,disabled:g=false,contentClassName:x,fullWidth:y=false,...N},R)=>{let[T,w]=o.useState(false),f=o.useRef(null),b=o.useRef(null),m=a$1!==void 0,i=m?a$1:T,p=o.useCallback(e=>{g||(m||w(e),u==null||u(e));},[g,m,u]),L=()=>{p(!i);};o.useEffect(()=>{let e=v=>{f.current&&b.current&&!f.current.contains(v.target)&&!b.current.contains(v.target)&&p(false);};if(i)return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e);}},[i,p]);let k=()=>{let e="absolute z-50";switch(t){case "top":return a(e,"bottom-full",`mb-${Math.max(1,Math.floor(d/4))}`);case "bottom":return a(e,"top-full",`mt-${Math.max(1,Math.floor(d/4))}`);case "left":return a(e,"right-full",`mr-${Math.max(1,Math.floor(d/4))}`);case "right":return a(e,"left-full",`ml-${Math.max(1,Math.floor(d/4))}`);default:return a(e,"top-full",`mt-${Math.max(1,Math.floor(d/4))}`)}},E=()=>{switch(M){case "start":return t==="top"||t==="bottom"?"left-0":"top-0";case "end":return t==="top"||t==="bottom"?"right-0":"bottom-0";default:return t==="top"||t==="bottom"?"left-1/2 -translate-x-1/2":"top-1/2 -translate-y-1/2"}},H=()=>{let e="absolute w-0 h-0 border-4 border-transparent";switch(t){case "top":return `${e} top-full left-1/2 -translate-x-1/2 border-t-gray-200 dark:border-t-gray-700`;case "bottom":return `${e} bottom-full left-1/2 -translate-x-1/2 border-b-gray-200 dark:border-b-gray-700`;case "left":return `${e} left-full top-1/2 -translate-y-1/2 border-l-gray-200 dark:border-l-gray-700`;case "right":return `${e} right-full top-1/2 -translate-y-1/2 border-r-gray-200 dark:border-r-gray-700`;default:return `${e} bottom-full left-1/2 -translate-x-1/2 border-b-gray-200 dark:border-b-gray-700`}};return jsxs("div",{ref:R,className:a("relative",l),...N,children:[jsx("div",{ref:f,onClick:L,className:a(y?"block w-full":"inline-block","cursor-pointer"),"aria-expanded":i,"aria-haspopup":"true",children:n}),i&&jsxs("div",{ref:b,role:"dialog",className:a("bg-popover text-popover-foreground border border-border rounded-lg shadow-lg p-4 min-w-[200px]",k(),E(),x),children:[jsx("div",{className:H()}),jsx("div",{className:"relative z-10",children:s})]})]})});P.displayName="Popover";var C=o.forwardRef(({className:l,children:s,...n},a$1)=>jsx("div",{ref:a$1,className:a("inline-block cursor-pointer",l),...n,children:s}));C.displayName="PopoverTrigger";var $=o.forwardRef(({className:l,children:s,...n},a$1)=>jsx("div",{ref:a$1,className:a("bg-popover text-popover-foreground border border-border rounded-lg shadow-lg p-4",l),...n,children:s}));$.displayName="PopoverContent";export{P as a,C as b,$ as c};//# sourceMappingURL=chunk-ZY23NOT4.mjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-ZY23NOT4.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Popover.tsx"],"names":["Popover","React","className","children","trigger","controlledOpen","onOpenChange","position","align","offset","disabled","contentClassName","fullWidth","props","ref","internalOpen","setInternalOpen","triggerRef","popoverRef","isControlled","isOpen","handleOpenChange","newOpen","handleTriggerClick","handleClickOutside","event","getPositionClasses","baseClasses","merge","getAlignmentClasses","getArrowClasses","jsxs","jsx","PopoverTrigger","PopoverContent"],"mappings":"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","file":"chunk-ZY23NOT4.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * Popover 컴포넌트의 props / Popover component props\n * @typedef {Object} PopoverProps\n * @property {React.ReactNode} children - Popover 내용 / Popover content\n * @property {React.ReactNode} trigger - Popover를 열기 위한 트리거 요소 / Trigger element to open popover\n * @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode\n * @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback\n * @property {\"top\" | \"bottom\" | \"left\" | \"right\"} [position=\"bottom\"] - Popover 표시 위치 / Popover display position\n * @property {\"start\" | \"center\" | \"end\"} [align=\"center\"] - Popover 정렬 / Popover alignment\n * @property {number} [offset=8] - 트리거와 Popover 사이 간격 (px) / Spacing between trigger and popover (px)\n * @property {boolean} [disabled=false] - Popover 비활성화 여부 / Disable popover\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n trigger: React.ReactNode\n open?: boolean\n onOpenChange?: (open: boolean) => void\n position?: \"top\" | \"bottom\" | \"left\" | \"right\"\n align?: \"start\" | \"center\" | \"end\"\n offset?: number\n disabled?: boolean\n /** Popover 콘텐츠 영역 추가 클래스 / Additional class for popover content area */\n contentClassName?: string\n /** 트리거를 full-width로 렌더링 (DatePicker 등) / Render trigger as full-width */\n fullWidth?: boolean\n}\n\n/**\n * Popover 컴포넌트 / Popover component\n * \n * 트리거 요소를 클릭하면 표시되는 팝오버 컴포넌트입니다.\n * 외부 클릭 시 자동으로 닫힙니다.\n * \n * Popover component that appears when the trigger element is clicked.\n * Automatically closes when clicking outside.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <Popover trigger={<Button>열기</Button>}>\n * <div className=\"p-4\">Popover 내용</div>\n * </Popover>\n * \n * @example\n * // 제어 모드 / Controlled mode\n * const [open, setOpen] = useState(false)\n * <Popover \n * open={open}\n * onOpenChange={setOpen}\n * trigger={<Button>제어 모드</Button>}\n * position=\"top\"\n * >\n * <div className=\"p-4\">내용</div>\n * </Popover>\n * \n * @param {PopoverProps} props - Popover 컴포넌트의 props / Popover component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} Popover 컴포넌트 / Popover component\n */\nconst Popover = React.forwardRef<HTMLDivElement, PopoverProps>(\n ({ \n className,\n children,\n trigger,\n open: controlledOpen,\n onOpenChange,\n position = \"bottom\",\n align = \"center\",\n offset = 8,\n disabled = false,\n contentClassName,\n fullWidth = false,\n ...props\n }, ref) => {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n const popoverRef = React.useRef<HTMLDivElement>(null)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleOpenChange = React.useCallback((newOpen: boolean) => {\n if (disabled) return\n\n if (!isControlled) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n }, [disabled, isControlled, onOpenChange])\n\n const handleTriggerClick = () => {\n handleOpenChange(!isOpen)\n }\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n triggerRef.current && \n popoverRef.current && \n !triggerRef.current.contains(event.target as Node) &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }\n }, [isOpen, handleOpenChange])\n\n const getPositionClasses = () => {\n const baseClasses = \"absolute z-50\"\n\n switch (position) {\n case \"top\":\n return merge(baseClasses, \"bottom-full\", `mb-${Math.max(1, Math.floor(offset / 4))}`)\n case \"bottom\":\n return merge(baseClasses, \"top-full\", `mt-${Math.max(1, Math.floor(offset / 4))}`)\n case \"left\":\n return merge(baseClasses, \"right-full\", `mr-${Math.max(1, Math.floor(offset / 4))}`)\n case \"right\":\n return merge(baseClasses, \"left-full\", `ml-${Math.max(1, Math.floor(offset / 4))}`)\n default:\n return merge(baseClasses, \"top-full\", `mt-${Math.max(1, Math.floor(offset / 4))}`)\n }\n }\n\n const getAlignmentClasses = () => {\n switch (align) {\n case \"start\":\n if (position === \"top\" || position === \"bottom\") {\n return \"left-0\"\n } else {\n return \"top-0\"\n }\n case \"end\":\n if (position === \"top\" || position === \"bottom\") {\n return \"right-0\"\n } else {\n return \"bottom-0\"\n }\n case \"center\":\n default:\n if (position === \"top\" || position === \"bottom\") {\n return \"left-1/2 -translate-x-1/2\"\n } else {\n return \"top-1/2 -translate-y-1/2\"\n }\n }\n }\n\n const getArrowClasses = () => {\n const baseClasses = \"absolute w-0 h-0 border-4 border-transparent\"\n \n switch (position) {\n case \"top\":\n return `${baseClasses} top-full left-1/2 -translate-x-1/2 border-t-gray-200 dark:border-t-gray-700`\n case \"bottom\":\n return `${baseClasses} bottom-full left-1/2 -translate-x-1/2 border-b-gray-200 dark:border-b-gray-700`\n case \"left\":\n return `${baseClasses} left-full top-1/2 -translate-y-1/2 border-l-gray-200 dark:border-l-gray-700`\n case \"right\":\n return `${baseClasses} right-full top-1/2 -translate-y-1/2 border-r-gray-200 dark:border-r-gray-700`\n default:\n return `${baseClasses} bottom-full left-1/2 -translate-x-1/2 border-b-gray-200 dark:border-b-gray-700`\n }\n }\n\n return (\n <div ref={ref} className={merge(\"relative\", className)} {...props}>\n {/* 트리거 */}\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={merge(fullWidth ? \"block w-full\" : \"inline-block\", \"cursor-pointer\")}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n {trigger}\n </div>\n\n {/* 팝오버 */}\n {isOpen && (\n <div\n ref={popoverRef}\n role=\"dialog\"\n className={merge(\n \"bg-popover text-popover-foreground border border-border rounded-lg shadow-lg p-4 min-w-[200px]\",\n getPositionClasses(),\n getAlignmentClasses(),\n contentClassName\n )}\n >\n {/* 화살표 */}\n <div className={getArrowClasses()} />\n \n {/* 내용 */}\n <div className=\"relative z-10\">\n {children}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\nPopover.displayName = \"Popover\"\n\n// 편의 컴포넌트들\nexport const PopoverTrigger = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"inline-block cursor-pointer\", className)}\n {...props}\n >\n {children}\n </div>\n )\n)\nPopoverTrigger.displayName = \"PopoverTrigger\"\n\nexport const PopoverContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"bg-popover text-popover-foreground border border-border rounded-lg shadow-lg p-4\", className)}\n {...props}\n >\n {children}\n </div>\n )\n)\nPopoverContent.displayName = \"PopoverContent\"\n\nexport { Popover } "]}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { IconName } from "../lib/icons";
|
|
3
|
-
/**
|
|
4
|
-
* EmptyState 컴포넌트 Props
|
|
5
|
-
* EmptyState component props
|
|
6
|
-
*/
|
|
7
|
-
export interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
8
|
-
/** 아이콘 (IconName 또는 ReactNode) / Icon (IconName or ReactNode) */
|
|
9
|
-
icon?: IconName | React.ReactNode;
|
|
10
|
-
/** 제목 / Title */
|
|
11
|
-
title: string;
|
|
12
|
-
/** 설명 / Description */
|
|
13
|
-
description?: string;
|
|
14
|
-
/** 액션 버튼 텍스트 / Action button text */
|
|
15
|
-
actionText?: string;
|
|
16
|
-
/** 액션 버튼 링크 URL / Action button link URL */
|
|
17
|
-
actionHref?: string;
|
|
18
|
-
/** 액션 버튼 클릭 핸들러 / Action button click handler */
|
|
19
|
-
onAction?: () => void;
|
|
20
|
-
/** 보조 액션 텍스트 / Secondary action text */
|
|
21
|
-
secondaryActionText?: string;
|
|
22
|
-
/** 보조 액션 클릭 핸들러 / Secondary action click handler */
|
|
23
|
-
onSecondaryAction?: () => void;
|
|
24
|
-
/** 스타일 변형 / Style variant */
|
|
25
|
-
variant?: "default" | "warning" | "info" | "error" | "success";
|
|
26
|
-
/** 크기 / Size */
|
|
27
|
-
size?: "sm" | "md" | "lg";
|
|
28
|
-
/** 테두리 표시 여부 / Show border */
|
|
29
|
-
bordered?: boolean;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* EmptyState - 빈 상태 표시 컴포넌트
|
|
33
|
-
* Empty state display component
|
|
34
|
-
*
|
|
35
|
-
* 데이터가 없을 때 사용자에게 안내 메시지와 액션을 제공합니다.
|
|
36
|
-
* Displays a message and action when there is no data to show.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* // 기본 사용 / Basic usage
|
|
40
|
-
* <EmptyState
|
|
41
|
-
* icon="inbox"
|
|
42
|
-
* title="데이터가 없습니다"
|
|
43
|
-
* description="새로운 데이터를 추가해보세요"
|
|
44
|
-
* actionText="데이터 추가"
|
|
45
|
-
* onAction={handleAdd}
|
|
46
|
-
* />
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* // 경고 스타일 / Warning style
|
|
50
|
-
* <EmptyState
|
|
51
|
-
* icon="warning"
|
|
52
|
-
* title="오류가 발생했습니다"
|
|
53
|
-
* description="잠시 후 다시 시도해주세요"
|
|
54
|
-
* variant="error"
|
|
55
|
-
* actionText="다시 시도"
|
|
56
|
-
* onAction={handleRetry}
|
|
57
|
-
* secondaryActionText="취소"
|
|
58
|
-
* onSecondaryAction={handleCancel}
|
|
59
|
-
* />
|
|
60
|
-
*/
|
|
61
|
-
export declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
-
//# sourceMappingURL=EmptyState.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/D,gBAAgB;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,UAAU,wFAkGtB,CAAC"}
|