@hua-labs/ui 2.1.1 → 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-DrZpz0yv.d.mts → ComponentLayout-Clf6C2jV.d.mts} +38 -4
- 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 +144 -61
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +70 -37
- 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-A5YOVVM5.mjs +3 -0
- package/dist/chunk-A5YOVVM5.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-EAZEI74V.mjs +3 -0
- package/dist/chunk-EAZEI74V.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-QEMPERUK.mjs +3 -0
- package/dist/chunk-QEMPERUK.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 -57
- 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 +12 -7
- 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 +9 -4
- 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/{icons-DmhQEH_E.d.mts → icons-DcOBy9Hf.d.mts} +4 -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 +360 -210
- 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 +25 -27
- package/dist/lib/icon-providers.d.ts.map +1 -1
- package/dist/lib/icons.d.ts +4 -0
- package/dist/lib/icons.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/lib/utils.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 +49 -22
- 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 -87
- 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/dist/theme.d.mts +85 -0
- package/dist/theme.d.ts +14 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.mjs +3 -0
- package/dist/theme.mjs.map +1 -0
- package/package.json +50 -22
- 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/advanced-dashboard.js +0 -39
- package/dist/advanced-dashboard.js.map +0 -1
- package/dist/advanced-emotion.js +0 -2
- package/dist/advanced-emotion.js.map +0 -1
- package/dist/advanced-motion.js +0 -82
- package/dist/advanced-motion.js.map +0 -1
- package/dist/advanced.js +0 -112
- package/dist/advanced.js.map +0 -1
- package/dist/chunk-3CCF7U3P.mjs +0 -3
- package/dist/chunk-3CCF7U3P.mjs.map +0 -1
- package/dist/chunk-3GAUTZXQ.mjs +0 -3
- package/dist/chunk-3GAUTZXQ.mjs.map +0 -1
- package/dist/chunk-42RGFEL2.mjs +0 -3
- package/dist/chunk-42RGFEL2.mjs.map +0 -1
- package/dist/chunk-4NJE7D6X.mjs +0 -3
- package/dist/chunk-4NJE7D6X.mjs.map +0 -1
- package/dist/chunk-6HVJFEDA.mjs +0 -3
- package/dist/chunk-6HVJFEDA.mjs.map +0 -1
- package/dist/chunk-7OYT3QSY.mjs +0 -3
- package/dist/chunk-7OYT3QSY.mjs.map +0 -1
- package/dist/chunk-ANYZ56VB.mjs +0 -3
- package/dist/chunk-ANYZ56VB.mjs.map +0 -1
- package/dist/chunk-AOSXB5JJ.mjs +0 -4
- package/dist/chunk-AOSXB5JJ.mjs.map +0 -1
- package/dist/chunk-B544MRF7.mjs +0 -3
- package/dist/chunk-B544MRF7.mjs.map +0 -1
- package/dist/chunk-CVWWS25A.mjs +0 -3
- package/dist/chunk-CVWWS25A.mjs.map +0 -1
- package/dist/chunk-DYNBM24D.mjs +0 -3
- package/dist/chunk-DYNBM24D.mjs.map +0 -1
- package/dist/chunk-FX57OSYG.mjs +0 -3
- package/dist/chunk-FX57OSYG.mjs.map +0 -1
- package/dist/chunk-IJSYSNM5.mjs +0 -3
- package/dist/chunk-IJSYSNM5.mjs.map +0 -1
- package/dist/chunk-KJZGOL2Z.mjs +0 -3
- package/dist/chunk-KJZGOL2Z.mjs.map +0 -1
- package/dist/chunk-KYRIUUQP.mjs +0 -3
- package/dist/chunk-KYRIUUQP.mjs.map +0 -1
- package/dist/chunk-LSA7DU3N.mjs +0 -73
- package/dist/chunk-LSA7DU3N.mjs.map +0 -1
- package/dist/chunk-MDLCJASB.mjs +0 -3
- package/dist/chunk-MDLCJASB.mjs.map +0 -1
- package/dist/chunk-N56BUOCD.mjs +0 -3
- package/dist/chunk-N56BUOCD.mjs.map +0 -1
- package/dist/chunk-OFYITQXI.mjs +0 -13
- package/dist/chunk-OFYITQXI.mjs.map +0 -1
- package/dist/chunk-OZNST3EZ.mjs +0 -3
- package/dist/chunk-OZNST3EZ.mjs.map +0 -1
- package/dist/chunk-RS6RKW5U.mjs +0 -13
- package/dist/chunk-RS6RKW5U.mjs.map +0 -1
- package/dist/chunk-TXBZZJNR.mjs +0 -3
- package/dist/chunk-TXBZZJNR.mjs.map +0 -1
- package/dist/chunk-TZ4YSHMC.mjs +0 -3
- package/dist/chunk-TZ4YSHMC.mjs.map +0 -1
- package/dist/chunk-U6CTBZ2U.mjs +0 -3
- package/dist/chunk-U6CTBZ2U.mjs.map +0 -1
- package/dist/chunk-WP7VFE77.mjs +0 -3
- package/dist/chunk-WP7VFE77.mjs.map +0 -1
- package/dist/chunk-XCZMLKPK.mjs +0 -3
- package/dist/chunk-XCZMLKPK.mjs.map +0 -1
- package/dist/chunk-XGHT7WMO.mjs +0 -3
- package/dist/chunk-XGHT7WMO.mjs.map +0 -1
- package/dist/chunk-XL4KTJ4L.mjs +0 -3
- package/dist/chunk-XL4KTJ4L.mjs.map +0 -1
- package/dist/chunk-Z74YUUVT.mjs +0 -3
- package/dist/chunk-Z74YUUVT.mjs.map +0 -1
- package/dist/chunk-ZXZIHU7J.mjs +0 -8
- package/dist/chunk-ZXZIHU7J.mjs.map +0 -1
- package/dist/components/EmptyState.d.ts +0 -62
- package/dist/components/EmptyState.d.ts.map +0 -1
- package/dist/data.js +0 -3
- package/dist/data.js.map +0 -1
- package/dist/feedback.js +0 -12
- package/dist/feedback.js.map +0 -1
- package/dist/form.js +0 -8
- package/dist/form.js.map +0 -1
- package/dist/iconsax-extended.js +0 -3
- package/dist/iconsax-extended.js.map +0 -1
- package/dist/iconsax.js +0 -3
- package/dist/iconsax.js.map +0 -1
- package/dist/index.js +0 -51
- package/dist/index.js.map +0 -1
- package/dist/interactive.js +0 -2
- package/dist/interactive.js.map +0 -1
- package/dist/landing.js +0 -100
- package/dist/landing.js.map +0 -1
- package/dist/lib/phosphor-icons.d.ts +0 -6
- package/dist/lib/phosphor-icons.d.ts.map +0 -1
- package/dist/navigation.js +0 -12
- package/dist/navigation.js.map +0 -1
- package/dist/overlay.js +0 -3
- package/dist/overlay.js.map +0 -1
- package/dist/sdui.js +0 -9
- package/dist/sdui.js.map +0 -1
package/dist/overlay.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { M as Modal, a as ModalProps } from './Modal-
|
|
1
|
+
export { M as Modal, a as ModalProps } from './Modal-DKKtBtbh.mjs';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -24,6 +24,8 @@ import React from 'react';
|
|
|
24
24
|
* @property {string} [requiredInputValue] - 필수 입력 값 (확인 버튼 활성화 조건) / Required input value (confirm button activation condition)
|
|
25
25
|
* @property {boolean} [showCancel=true] - 취소 버튼 표시 여부 / Show cancel button
|
|
26
26
|
* @property {"sm" | "md" | "lg" | "xl" | "2xl"} [size="md"] - 모달 크기 / Modal size
|
|
27
|
+
* @property {string} [dot] - dot 유틸리티 스트링 (인라인 스타일로 변환) / dot utility string
|
|
28
|
+
* @property {React.CSSProperties} [style] - 추가 인라인 스타일 / Additional inline styles
|
|
27
29
|
*/
|
|
28
30
|
interface ConfirmModalProps {
|
|
29
31
|
isOpen: boolean;
|
|
@@ -46,6 +48,8 @@ interface ConfirmModalProps {
|
|
|
46
48
|
requiredInputValue?: string;
|
|
47
49
|
showCancel?: boolean;
|
|
48
50
|
size?: "sm" | "md" | "lg" | "xl" | "2xl";
|
|
51
|
+
dot?: string;
|
|
52
|
+
style?: React.CSSProperties;
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
51
55
|
* ConfirmModal 컴포넌트 / ConfirmModal component
|
|
@@ -101,9 +105,13 @@ declare const ConfirmModal: React.ForwardRefExoticComponent<ConfirmModalProps &
|
|
|
101
105
|
* @property {"start" | "center" | "end"} [align="center"] - Popover 정렬 / Popover alignment
|
|
102
106
|
* @property {number} [offset=8] - 트리거와 Popover 사이 간격 (px) / Spacing between trigger and popover (px)
|
|
103
107
|
* @property {boolean} [disabled=false] - Popover 비활성화 여부 / Disable popover
|
|
104
|
-
* @
|
|
108
|
+
* @property {string} [contentDot] - dot utility string for popover panel / 팝오버 패널 dot 유틸리티
|
|
109
|
+
* @property {React.CSSProperties} [contentStyle] - inline style for popover panel / 팝오버 패널 인라인 스타일
|
|
110
|
+
* @property {boolean} [fullWidth] - 트리거를 full-width로 렌더링 / Render trigger as full-width
|
|
111
|
+
* @property {string} [dot] - dot utility string for wrapper / 래퍼 dot 유틸리티
|
|
112
|
+
* @property {React.CSSProperties} [style] - inline style for wrapper / 래퍼 인라인 스타일
|
|
105
113
|
*/
|
|
106
|
-
interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
114
|
+
interface PopoverProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
107
115
|
children: React.ReactNode;
|
|
108
116
|
trigger: React.ReactNode;
|
|
109
117
|
open?: boolean;
|
|
@@ -112,10 +120,14 @@ interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
112
120
|
align?: "start" | "center" | "end";
|
|
113
121
|
offset?: number;
|
|
114
122
|
disabled?: boolean;
|
|
115
|
-
/**
|
|
116
|
-
|
|
117
|
-
/**
|
|
123
|
+
/** dot utility string for popover content panel */
|
|
124
|
+
contentDot?: string;
|
|
125
|
+
/** inline style overrides for popover content panel */
|
|
126
|
+
contentStyle?: React.CSSProperties;
|
|
127
|
+
/** Render trigger as full-width (DatePicker etc.) */
|
|
118
128
|
fullWidth?: boolean;
|
|
129
|
+
dot?: string;
|
|
130
|
+
style?: React.CSSProperties;
|
|
119
131
|
}
|
|
120
132
|
/**
|
|
121
133
|
* Popover 컴포넌트 / Popover component
|
|
@@ -130,7 +142,7 @@ interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
130
142
|
* @example
|
|
131
143
|
* // 기본 사용 / Basic usage
|
|
132
144
|
* <Popover trigger={<Button>열기</Button>}>
|
|
133
|
-
* <div
|
|
145
|
+
* <div style={{ padding: 16 }}>Popover 내용</div>
|
|
134
146
|
* </Popover>
|
|
135
147
|
*
|
|
136
148
|
* @example
|
|
@@ -142,7 +154,7 @@ interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
142
154
|
* trigger={<Button>제어 모드</Button>}
|
|
143
155
|
* position="top"
|
|
144
156
|
* >
|
|
145
|
-
* <div
|
|
157
|
+
* <div style={{ padding: 16 }}>내용</div>
|
|
146
158
|
* </Popover>
|
|
147
159
|
*
|
|
148
160
|
* @param {PopoverProps} props - Popover 컴포넌트의 props / Popover component props
|
|
@@ -150,24 +162,18 @@ interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
150
162
|
* @returns {JSX.Element} Popover 컴포넌트 / Popover component
|
|
151
163
|
*/
|
|
152
164
|
declare const Popover: React.ForwardRefExoticComponent<PopoverProps & React.RefAttributes<HTMLDivElement>>;
|
|
153
|
-
|
|
154
|
-
|
|
165
|
+
interface PopoverTriggerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
166
|
+
dot?: string;
|
|
167
|
+
style?: React.CSSProperties;
|
|
168
|
+
}
|
|
169
|
+
declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverTriggerProps & React.RefAttributes<HTMLDivElement>>;
|
|
170
|
+
interface PopoverContentProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
171
|
+
dot?: string;
|
|
172
|
+
style?: React.CSSProperties;
|
|
173
|
+
}
|
|
174
|
+
declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
155
175
|
|
|
156
|
-
|
|
157
|
-
* Dropdown 컴포넌트의 props / Dropdown component props
|
|
158
|
-
* @typedef {Object} DropdownProps
|
|
159
|
-
* @property {React.ReactNode} trigger - Dropdown을 열기 위한 트리거 요소 / Trigger element to open dropdown
|
|
160
|
-
* @property {React.ReactNode} children - Dropdown 내용 / Dropdown content
|
|
161
|
-
* @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode
|
|
162
|
-
* @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback
|
|
163
|
-
* @property {"top" | "bottom" | "left" | "right"} [placement="bottom"] - Dropdown 표시 위치 / Dropdown display position
|
|
164
|
-
* @property {"start" | "center" | "end"} [align="start"] - Dropdown 정렬 / Dropdown alignment
|
|
165
|
-
* @property {number} [offset=8] - 트리거와 Dropdown 사이 간격 (px) / Spacing between trigger and dropdown (px)
|
|
166
|
-
* @property {boolean} [disabled=false] - Dropdown 비활성화 여부 / Disable dropdown
|
|
167
|
-
* @property {boolean} [showArrow=true] - 화살표 표시 여부 / Show arrow
|
|
168
|
-
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
169
|
-
*/
|
|
170
|
-
interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
176
|
+
interface DropdownProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
171
177
|
trigger: React.ReactNode;
|
|
172
178
|
children: React.ReactNode;
|
|
173
179
|
open?: boolean;
|
|
@@ -177,57 +183,39 @@ interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
177
183
|
offset?: number;
|
|
178
184
|
disabled?: boolean;
|
|
179
185
|
showArrow?: boolean;
|
|
186
|
+
rounded?: "none" | "sm" | "md" | "lg" | "xl" | "full";
|
|
187
|
+
shadow?: "none" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
188
|
+
dot?: string;
|
|
189
|
+
style?: React.CSSProperties;
|
|
180
190
|
}
|
|
181
|
-
/**
|
|
182
|
-
* Dropdown 컴포넌트 / Dropdown component
|
|
183
|
-
*
|
|
184
|
-
* 트리거 요소를 클릭하면 표시되는 드롭다운 메뉴 컴포넌트입니다.
|
|
185
|
-
* 외부 클릭 시 자동으로 닫히며, 뷰포트 경계를 자동으로 감지하여 위치를 조정합니다.
|
|
186
|
-
*
|
|
187
|
-
* Dropdown menu component that appears when the trigger element is clicked.
|
|
188
|
-
* Automatically closes on outside click and adjusts position by detecting viewport boundaries.
|
|
189
|
-
*
|
|
190
|
-
* @component
|
|
191
|
-
* @example
|
|
192
|
-
* // 기본 사용 / Basic usage
|
|
193
|
-
* <Dropdown trigger={<Button>메뉴</Button>}>
|
|
194
|
-
* <Menu>
|
|
195
|
-
* <MenuItem>항목 1</MenuItem>
|
|
196
|
-
* <MenuItem>항목 2</MenuItem>
|
|
197
|
-
* </Menu>
|
|
198
|
-
* </Dropdown>
|
|
199
|
-
*
|
|
200
|
-
* @example
|
|
201
|
-
* // 제어 모드, 화살표 없음 / Controlled mode, no arrow
|
|
202
|
-
* const [open, setOpen] = useState(false)
|
|
203
|
-
* <Dropdown
|
|
204
|
-
* open={open}
|
|
205
|
-
* onOpenChange={setOpen}
|
|
206
|
-
* trigger={<Button>제어 모드</Button>}
|
|
207
|
-
* placement="top"
|
|
208
|
-
* showArrow={false}
|
|
209
|
-
* >
|
|
210
|
-
* <div className="p-4">내용</div>
|
|
211
|
-
* </Dropdown>
|
|
212
|
-
*
|
|
213
|
-
* @param {DropdownProps} props - Dropdown 컴포넌트의 props / Dropdown component props
|
|
214
|
-
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
215
|
-
* @returns {JSX.Element} Dropdown 컴포넌트 / Dropdown component
|
|
216
|
-
*/
|
|
217
191
|
declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;
|
|
218
|
-
interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
192
|
+
interface DropdownItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "className"> {
|
|
219
193
|
icon?: React.ReactNode;
|
|
220
194
|
variant?: "default" | "destructive" | "disabled";
|
|
195
|
+
dot?: string;
|
|
196
|
+
style?: React.CSSProperties;
|
|
221
197
|
}
|
|
222
198
|
declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
223
|
-
interface DropdownSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
199
|
+
interface DropdownSeparatorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
200
|
+
dot?: string;
|
|
201
|
+
style?: React.CSSProperties;
|
|
224
202
|
}
|
|
225
203
|
declare const DropdownSeparator: React.ForwardRefExoticComponent<DropdownSeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
226
|
-
interface DropdownLabelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
204
|
+
interface DropdownLabelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
205
|
+
dot?: string;
|
|
206
|
+
style?: React.CSSProperties;
|
|
227
207
|
}
|
|
228
208
|
declare const DropdownLabel: React.ForwardRefExoticComponent<DropdownLabelProps & React.RefAttributes<HTMLDivElement>>;
|
|
229
|
-
|
|
230
|
-
|
|
209
|
+
interface DropdownMenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
210
|
+
dot?: string;
|
|
211
|
+
style?: React.CSSProperties;
|
|
212
|
+
}
|
|
213
|
+
declare const DropdownMenu: React.ForwardRefExoticComponent<DropdownMenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
214
|
+
interface DropdownGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "className"> {
|
|
215
|
+
dot?: string;
|
|
216
|
+
style?: React.CSSProperties;
|
|
217
|
+
}
|
|
218
|
+
declare const DropdownGroup: React.ForwardRefExoticComponent<DropdownGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
231
219
|
|
|
232
220
|
/**
|
|
233
221
|
* Drawer 컴포넌트의 props / Drawer component props
|
|
@@ -235,11 +223,11 @@ declare const DropdownGroup: React.ForwardRefExoticComponent<React.HTMLAttribute
|
|
|
235
223
|
* @property {boolean} open - Drawer 열림/닫힘 상태 / Drawer open/close state
|
|
236
224
|
* @property {(open: boolean) => void} onOpenChange - 상태 변경 콜백 / State change callback
|
|
237
225
|
* @property {React.ReactNode} children - Drawer 내용 / Drawer content
|
|
238
|
-
* @property {
|
|
226
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
239
227
|
* @property {"left" | "right" | "top" | "bottom"} [side="right"] - Drawer 표시 위치 / Drawer display position
|
|
240
228
|
* @property {"sm" | "md" | "lg" | "xl" | "full"} [size="md"] - Drawer 크기 / Drawer size
|
|
241
229
|
* @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay
|
|
242
|
-
* @property {string} [
|
|
230
|
+
* @property {string} [backdropDot] - 배경 오버레이 추가 dot 스트링 / Backdrop overlay additional dot string
|
|
243
231
|
* @property {boolean} [closeOnBackdropClick=true] - 배경 클릭 시 닫기 여부 / Close on backdrop click
|
|
244
232
|
* @property {boolean} [closeOnEscape=true] - ESC 키로 닫기 여부 / Close on ESC key
|
|
245
233
|
*/
|
|
@@ -250,16 +238,18 @@ interface DrawerProps {
|
|
|
250
238
|
onClose?: () => void;
|
|
251
239
|
/** Drawer 내용 / Drawer content */
|
|
252
240
|
children: React.ReactNode;
|
|
253
|
-
/**
|
|
254
|
-
|
|
241
|
+
/** dot 유틸리티 스트링 (인라인 스타일로 변환) / dot utility string (converted to inline style) */
|
|
242
|
+
dot?: string;
|
|
243
|
+
/** 인라인 스타일 / Inline style */
|
|
244
|
+
style?: React.CSSProperties;
|
|
255
245
|
/** Drawer 표시 위치 / Drawer display position */
|
|
256
246
|
side?: "left" | "right" | "top" | "bottom";
|
|
257
247
|
/** Drawer 크기 / Drawer size */
|
|
258
248
|
size?: "sm" | "md" | "lg" | "xl" | "full";
|
|
259
249
|
/** 배경 오버레이 표시 여부 / Show backdrop overlay */
|
|
260
250
|
showBackdrop?: boolean;
|
|
261
|
-
/** 배경 오버레이 추가
|
|
262
|
-
|
|
251
|
+
/** 배경 오버레이 추가 dot 스트링 / Backdrop overlay additional dot string */
|
|
252
|
+
backdropDot?: string;
|
|
263
253
|
/** 배경 클릭 시 닫기 여부 / Close on backdrop click */
|
|
264
254
|
closeOnBackdropClick?: boolean;
|
|
265
255
|
/** ESC 키로 닫기 여부 / Close on ESC key */
|
|
@@ -309,13 +299,14 @@ declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAtt
|
|
|
309
299
|
* DrawerHeader 컴포넌트의 props / DrawerHeader component props
|
|
310
300
|
* @typedef {Object} DrawerHeaderProps
|
|
311
301
|
* @property {React.ReactNode} children - 헤더 내용 / Header content
|
|
312
|
-
* @property {
|
|
302
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
313
303
|
* @property {boolean} [showCloseButton=true] - 닫기 버튼 표시 여부 / Show close button
|
|
314
304
|
* @property {() => void} [onClose] - 닫기 버튼 클릭 콜백 / Close button click callback
|
|
315
305
|
*/
|
|
316
306
|
interface DrawerHeaderProps {
|
|
317
307
|
children: React.ReactNode;
|
|
318
|
-
|
|
308
|
+
/** 인라인 스타일 / Inline style */
|
|
309
|
+
style?: React.CSSProperties;
|
|
319
310
|
showCloseButton?: boolean;
|
|
320
311
|
onClose?: () => void;
|
|
321
312
|
}
|
|
@@ -334,11 +325,12 @@ declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps &
|
|
|
334
325
|
* DrawerContent 컴포넌트의 props / DrawerContent component props
|
|
335
326
|
* @typedef {Object} DrawerContentProps
|
|
336
327
|
* @property {React.ReactNode} children - 콘텐츠 / Content
|
|
337
|
-
* @property {
|
|
328
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
338
329
|
*/
|
|
339
330
|
interface DrawerContentProps {
|
|
340
331
|
children: React.ReactNode;
|
|
341
|
-
|
|
332
|
+
/** 인라인 스타일 / Inline style */
|
|
333
|
+
style?: React.CSSProperties;
|
|
342
334
|
}
|
|
343
335
|
/**
|
|
344
336
|
* DrawerContent 컴포넌트 / DrawerContent component
|
|
@@ -355,11 +347,12 @@ declare const DrawerContent: React.ForwardRefExoticComponent<DrawerContentProps
|
|
|
355
347
|
* DrawerFooter 컴포넌트의 props / DrawerFooter component props
|
|
356
348
|
* @typedef {Object} DrawerFooterProps
|
|
357
349
|
* @property {React.ReactNode} children - 푸터 내용 / Footer content
|
|
358
|
-
* @property {
|
|
350
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
359
351
|
*/
|
|
360
352
|
interface DrawerFooterProps {
|
|
361
353
|
children: React.ReactNode;
|
|
362
|
-
|
|
354
|
+
/** 인라인 스타일 / Inline style */
|
|
355
|
+
style?: React.CSSProperties;
|
|
363
356
|
}
|
|
364
357
|
/**
|
|
365
358
|
* DrawerFooter 컴포넌트 / DrawerFooter component
|
|
@@ -379,7 +372,7 @@ declare const DrawerFooter: React.ForwardRefExoticComponent<DrawerFooterProps &
|
|
|
379
372
|
* @property {boolean} open - BottomSheet 열림/닫힘 상태 / BottomSheet open/close state
|
|
380
373
|
* @property {(open: boolean) => void} onOpenChange - 상태 변경 콜백 / State change callback
|
|
381
374
|
* @property {React.ReactNode} children - BottomSheet 내용 / BottomSheet content
|
|
382
|
-
* @property {
|
|
375
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
383
376
|
* @property {"sm" | "md" | "lg" | "xl" | "full"} [height="md"] - BottomSheet 높이 / BottomSheet height
|
|
384
377
|
* @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay
|
|
385
378
|
* @property {string} [backdropClassName] - 배경 오버레이 추가 CSS 클래스 / Backdrop overlay additional CSS class
|
|
@@ -396,14 +389,16 @@ interface BottomSheetProps {
|
|
|
396
389
|
onClose?: () => void;
|
|
397
390
|
/** BottomSheet 내용 / BottomSheet content */
|
|
398
391
|
children: React.ReactNode;
|
|
399
|
-
/**
|
|
400
|
-
|
|
392
|
+
/** dot 유틸리티 스트링 (인라인 스타일로 변환) / dot utility string (converted to inline style) */
|
|
393
|
+
dot?: string;
|
|
394
|
+
/** 인라인 스타일 / Inline style */
|
|
395
|
+
style?: React.CSSProperties;
|
|
401
396
|
/** BottomSheet 높이 / BottomSheet height */
|
|
402
397
|
height?: "sm" | "md" | "lg" | "xl" | "full";
|
|
403
398
|
/** 배경 오버레이 표시 여부 / Show backdrop overlay */
|
|
404
399
|
showBackdrop?: boolean;
|
|
405
|
-
/** 배경 오버레이 추가
|
|
406
|
-
|
|
400
|
+
/** 배경 오버레이 추가 dot 스트링 / Backdrop overlay additional dot string */
|
|
401
|
+
backdropDot?: string;
|
|
407
402
|
/** 배경 클릭 시 닫기 여부 / Close on backdrop click */
|
|
408
403
|
closeOnBackdropClick?: boolean;
|
|
409
404
|
/** ESC 키로 닫기 여부 / Close on ESC key */
|
|
@@ -461,13 +456,14 @@ declare const BottomSheet: React.ForwardRefExoticComponent<BottomSheetProps & Re
|
|
|
461
456
|
* BottomSheetHeader 컴포넌트의 props / BottomSheetHeader component props
|
|
462
457
|
* @typedef {Object} BottomSheetHeaderProps
|
|
463
458
|
* @property {React.ReactNode} children - 헤더 내용 / Header content
|
|
464
|
-
* @property {
|
|
459
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
465
460
|
* @property {boolean} [showCloseButton=true] - 닫기 버튼 표시 여부 / Show close button
|
|
466
461
|
* @property {() => void} [onClose] - 닫기 버튼 클릭 콜백 / Close button click callback
|
|
467
462
|
*/
|
|
468
463
|
interface BottomSheetHeaderProps {
|
|
469
464
|
children: React.ReactNode;
|
|
470
|
-
|
|
465
|
+
/** 인라인 스타일 / Inline style */
|
|
466
|
+
style?: React.CSSProperties;
|
|
471
467
|
showCloseButton?: boolean;
|
|
472
468
|
onClose?: () => void;
|
|
473
469
|
}
|
|
@@ -486,11 +482,12 @@ declare const BottomSheetHeader: React.ForwardRefExoticComponent<BottomSheetHead
|
|
|
486
482
|
* BottomSheetContent 컴포넌트의 props / BottomSheetContent component props
|
|
487
483
|
* @typedef {Object} BottomSheetContentProps
|
|
488
484
|
* @property {React.ReactNode} children - 콘텐츠 / Content
|
|
489
|
-
* @property {
|
|
485
|
+
* @property {React.CSSProperties} [style] - 인라인 스타일 / Inline style
|
|
490
486
|
*/
|
|
491
487
|
interface BottomSheetContentProps {
|
|
492
488
|
children: React.ReactNode;
|
|
493
|
-
|
|
489
|
+
/** 인라인 스타일 / Inline style */
|
|
490
|
+
style?: React.CSSProperties;
|
|
494
491
|
}
|
|
495
492
|
/**
|
|
496
493
|
* BottomSheetContent 컴포넌트 / BottomSheetContent component
|
package/dist/overlay.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {a}from'./chunk-
|
|
3
|
-
export{
|
|
2
|
+
export{a as BottomSheet,c as BottomSheetContent,b as BottomSheetHeader}from'./chunk-CQBMR7VU.mjs';import {a}from'./chunk-C2DOXNBK.mjs';export{a as Modal}from'./chunk-C2DOXNBK.mjs';export{a as Dropdown,f as DropdownGroup,b as DropdownItem,d as DropdownLabel,e as DropdownMenu,c as DropdownSeparator}from'./chunk-CYAAAEPJ.mjs';export{a as Drawer,c as DrawerContent,d as DrawerFooter,b as DrawerHeader}from'./chunk-SPZ7SZH4.mjs';export{a as Popover,c as PopoverContent,b as PopoverTrigger}from'./chunk-ZZ67E3M5.mjs';import {a as a$1}from'./chunk-JY3QVUGW.mjs';import'./chunk-RICRFXFP.mjs';import'./chunk-LPHUWTQ2.mjs';import'./chunk-7T3IUG3G.mjs';import'./chunk-7CGJQSJO.mjs';import'./chunk-NSDWT2JM.mjs';import {e,d}from'./chunk-OBMOTQEU.mjs';import'./chunk-EAZEI74V.mjs';import eo,{useMemo,useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';var no={textAlign:"center"},io={marginLeft:"auto",marginRight:"auto",display:"flex",alignItems:"center",justifyContent:"center",height:"64px",width:"64px",borderRadius:"9999px",...e("mb-6")},lo={fontSize:"1.25rem",fontWeight:600,color:"var(--color-foreground)",margin:0,...e("mb-4")},co={...e("mb-6")},ao={fontSize:"0.875rem",color:"var(--color-muted-foreground)",margin:0},so={fontSize:"0.875rem",fontWeight:500,margin:0,...e("mt-3")},uo={...e("mb-6")},po={display:"block",fontSize:"0.875rem",fontWeight:500,color:"var(--color-foreground)",...e("mb-3"),textAlign:"left"},go={width:"100%",...e("px-4 py-3"),border:"1px solid var(--color-input)",borderRadius:"8px",outline:"none",backgroundColor:"var(--color-background)",color:"var(--color-foreground)",transition:"border-color 200ms, box-shadow 200ms",boxSizing:"border-box"},Co={borderColor:"transparent",boxShadow:"0 0 0 1px var(--color-destructive)"},fo={display:"flex",...e("gap-3"),justifyContent:"center"},So={display:"flex",alignItems:"center"},vo={animation:"spin 1s linear infinite",marginLeft:"-4px",...e("mr-2 w-4 h-4"),color:"white"},k={danger:{iconBg:{backgroundColor:"color-mix(in srgb, var(--color-destructive) 10%, transparent)"},iconColor:{color:"var(--color-destructive)"},warningColor:{color:"var(--color-destructive)"},buttonStyle:{backgroundColor:"var(--color-destructive)",color:"var(--color-destructive-foreground)"}},warning:{iconBg:{backgroundColor:"color-mix(in srgb, #ca8a04 10%, transparent)"},iconColor:{color:"#ca8a04"},warningColor:{color:"#ca8a04"},buttonStyle:{backgroundColor:"#ca8a04",color:"#ffffff"}},info:{iconBg:{backgroundColor:"color-mix(in srgb, var(--color-primary) 10%, transparent)"},iconColor:{color:"var(--color-primary)"},warningColor:{color:"var(--color-primary)"},buttonStyle:{backgroundColor:"var(--color-primary)",color:"var(--color-primary-foreground)"}},success:{iconBg:{backgroundColor:"color-mix(in srgb, #16a34a 10%, transparent)"},iconColor:{color:"#16a34a"},warningColor:{color:"#16a34a"},buttonStyle:{backgroundColor:"#16a34a",color:"#ffffff"}},error:{iconBg:{backgroundColor:"color-mix(in srgb, var(--color-destructive) 10%, transparent)"},iconColor:{color:"var(--color-destructive)"},warningColor:{color:"var(--color-destructive)"},buttonStyle:{backgroundColor:"var(--color-destructive)",color:"var(--color-destructive-foreground)"}}},p={height:"24px",width:"24px"};function B({iconColor:r}){return jsx("svg",{style:d(p,r),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})})}function mo({iconColor:r}){return jsx("svg",{style:d(p,r),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}function bo({iconColor:r}){return jsx("svg",{style:d(p,r),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}function yo({iconColor:r}){return jsx("svg",{style:d(p,r),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}function ho({id:r,value:i,placeholder:c,onChange:a}){let[d$1,s]=useState(false),g=useMemo(()=>d(go,d$1?Co:void 0),[d$1]);return jsx("input",{type:"text",id:r,value:i,onChange:C=>a(C.target.value),placeholder:c,style:g,onFocus:()=>s(true),onBlur:()=>s(false)})}function xo({onClick:r,disabled:i,buttonStyle:c,children:a}){return jsx(a$1,{variant:"default",onClick:r,disabled:i,style:c,children:a})}var L=eo.forwardRef(({isOpen:r,onClose:i,onConfirm:c,title:a$2,message:d$1,warning:s,confirmText:g="\uD655\uC778",cancelText:C="\uCDE8\uC18C",confirmButtonText:T,type:b="danger",loading:f=false,disabled:I=false,showInput:y=false,inputValue:h="",onInputChange:S,inputPlaceholder:E,inputLabel:M,requiredInputValue:x,showCancel:_=true,size:N="md",dot:w,style:P},wo)=>{var R;let t=(R=k[b])!=null?R:k.danger,W=I||f||!(!y||!x||h===x),A=useMemo(()=>d(no,e(w),P),[w,P]),D=useMemo(()=>d(io,t.iconBg),[t.iconBg]),z=useMemo(()=>d(so,t.warningColor),[t.warningColor]),O=(()=>{switch(b){case "warning":return jsx(B,{iconColor:t.iconColor});case "info":return jsx(mo,{iconColor:t.iconColor});case "success":return jsx(bo,{iconColor:t.iconColor});case "error":return jsx(yo,{iconColor:t.iconColor});default:return jsx(B,{iconColor:t.iconColor})}})();return jsx(a,{isOpen:r,onClose:i,closable:false,size:N,children:jsxs("div",{style:A,children:[jsx("div",{style:D,children:O}),jsx("h3",{style:lo,children:a$2}),jsxs("div",{style:co,children:[jsx("p",{style:ao,children:d$1}),s&&jsx("p",{style:z,children:s})]}),y&&jsxs("div",{style:uo,children:[jsx("label",{htmlFor:"confirmInput",style:po,children:M}),jsx(ho,{id:"confirmInput",value:h,placeholder:E,onChange:S!=null?S:(()=>{})})]}),jsxs("div",{style:fo,children:[_&&jsx(a$1,{variant:"outline",onClick:i,disabled:f,style:e("px-6 py-3"),children:C}),jsx(xo,{onClick:c,disabled:W,buttonStyle:d(e("px-6 py-3"),t.buttonStyle),children:f?jsxs("div",{style:So,children:[jsxs("svg",{style:vo,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[jsx("circle",{style:{opacity:.25},cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),jsx("path",{style:{opacity:.75},fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"\uCC98\uB9AC \uC911..."]}):T||g})]})]})})});L.displayName="ConfirmModal";
|
|
3
|
+
export{L as ConfirmModal};//# sourceMappingURL=overlay.mjs.map
|
|
4
4
|
//# sourceMappingURL=overlay.mjs.map
|
package/dist/overlay.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ConfirmModal.tsx","../src/components/BottomSheet.tsx"],"names":["ConfirmModal","React","isOpen","onClose","onConfirm","title","message","warning","confirmText","cancelText","confirmButtonText","type","loading","disabled","showInput","inputValue","onInputChange","inputPlaceholder","inputLabel","requiredInputValue","showCancel","size","_ref","config","jsx","isDisabled","Modal","jsxs","merge","e","Button","BottomSheet","children","className","height","showBackdrop","backdropClassName","closeOnBackdropClick","closeOnEscape","showDragHandle","closable","snapPoints","defaultSnap","props","ref","_isOpen","handleClose","isVisible","setIsVisible","isAnimating","setIsAnimating","currentHeight","setCurrentHeight","isDragging","setIsDragging","startY","setStartY","currentY","setCurrentY","heightClasses","timer","handleEscapeKey","handleTouchStart","handleTouchMove","handleTouchEnd","deltaY","threshold","currentIndex","nextIndex","BottomSheetHeader","showCloseButton","Icon","BottomSheetContent"],"mappings":"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","file":"overlay.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Modal } from \"./Modal\"\nimport { Button } from \"./Button\"\n\n/**\n * ConfirmModal 컴포넌트의 props / ConfirmModal component props\n * @typedef {Object} ConfirmModalProps\n * @property {boolean} isOpen - 모달 열림/닫힘 상태 / Modal open/close state\n * @property {() => void} onClose - 닫기 콜백 / Close callback\n * @property {() => void} onConfirm - 확인 콜백 / Confirm callback\n * @property {string} title - 모달 제목 / Modal title\n * @property {string} message - 모달 메시지 / Modal message\n * @property {string} [warning] - 경고 메시지 / Warning message\n * @property {string} [confirmText=\"확인\"] - 확인 버튼 텍스트 / Confirm button text\n * @property {string} [cancelText=\"취소\"] - 취소 버튼 텍스트 / Cancel button text\n * @property {string} [confirmButtonText] - 확인 버튼 커스텀 텍스트 / Custom confirm button text\n * @property {\"danger\" | \"warning\" | \"info\" | \"success\" | \"error\"} [type=\"danger\"] - 모달 타입 / Modal type\n * @property {boolean} [loading=false] - 로딩 상태 / Loading state\n * @property {boolean} [disabled=false] - 비활성화 여부 / Disabled state\n * @property {boolean} [showInput=false] - 입력 필드 표시 여부 / Show input field\n * @property {string} [inputValue=\"\"] - 입력 필드 값 / Input field value\n * @property {(value: string) => void} [onInputChange] - 입력 값 변경 콜백 / Input value change callback\n * @property {string} [inputPlaceholder] - 입력 필드 플레이스홀더 / Input field placeholder\n * @property {string} [inputLabel] - 입력 필드 라벨 / Input field label\n * @property {string} [requiredInputValue] - 필수 입력 값 (확인 버튼 활성화 조건) / Required input value (confirm button activation condition)\n * @property {boolean} [showCancel=true] - 취소 버튼 표시 여부 / Show cancel button\n * @property {\"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"} [size=\"md\"] - 모달 크기 / Modal size\n */\nexport interface ConfirmModalProps {\n isOpen: boolean\n onClose: () => void\n onConfirm: () => void\n title: string\n message: string\n warning?: string\n confirmText?: string\n cancelText?: string\n confirmButtonText?: string\n type?: \"danger\" | \"warning\" | \"info\" | \"success\" | \"error\"\n loading?: boolean\n disabled?: boolean\n showInput?: boolean\n inputValue?: string\n onInputChange?: (value: string) => void\n inputPlaceholder?: string\n inputLabel?: string\n requiredInputValue?: string\n showCancel?: boolean\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"\n}\n\n/**\n * ConfirmModal 컴포넌트 / ConfirmModal component\n * \n * 확인/취소가 필요한 모달 컴포넌트입니다.\n * 다양한 타입(danger, warning, info, success, error)을 지원하며,\n * 입력 필드와 필수 입력 값 검증을 지원합니다.\n * \n * Modal component that requires confirmation/cancellation.\n * Supports various types (danger, warning, info, success, error),\n * and supports input fields and required input value validation.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <ConfirmModal\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * onConfirm={handleConfirm}\n * title=\"삭제 확인\"\n * message=\"정말 삭제하시겠습니까?\"\n * />\n * \n * @example\n * // 입력 필드와 함께 / With input field\n * <ConfirmModal\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * onConfirm={handleDelete}\n * title=\"삭제 확인\"\n * message=\"삭제하려면 'DELETE'를 입력하세요\"\n * showInput\n * inputLabel=\"확인 입력\"\n * requiredInputValue=\"DELETE\"\n * inputValue={inputValue}\n * onInputChange={setInputValue}\n * />\n * \n * @param {ConfirmModalProps} props - ConfirmModal 컴포넌트의 props / ConfirmModal component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} ConfirmModal 컴포넌트 / ConfirmModal component\n */\nconst ConfirmModal = React.forwardRef<HTMLDivElement, ConfirmModalProps>(\n ({\n isOpen,\n onClose,\n onConfirm,\n title,\n message,\n warning,\n confirmText = \"확인\",\n cancelText = \"취소\",\n confirmButtonText,\n type = \"danger\",\n loading = false,\n disabled = false,\n showInput = false,\n inputValue = \"\",\n onInputChange,\n inputPlaceholder,\n inputLabel,\n requiredInputValue,\n showCancel = true,\n size = \"md\"\n }, _ref) => {\n // 타입별 아이콘과 색상\n const typeConfig = {\n danger: {\n icon: (\n <svg className=\"h-6 w-6 text-destructive\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n ),\n bgColor: \"bg-destructive/10\",\n buttonColor: \"bg-destructive hover:bg-destructive/90 focus:ring-destructive\",\n textColor: \"text-destructive\"\n },\n warning: {\n icon: (\n <svg className=\"h-6 w-6 text-yellow-600 dark:text-yellow-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n ),\n bgColor: \"bg-yellow-100 dark:bg-yellow-900/20\",\n buttonColor: \"bg-yellow-600 hover:bg-yellow-700 focus:ring-yellow-500\",\n textColor: \"text-yellow-600 dark:text-yellow-400\"\n },\n info: {\n icon: (\n <svg className=\"h-6 w-6 text-primary\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n bgColor: \"bg-primary/10\",\n buttonColor: \"bg-primary hover:bg-primary/80 focus:ring-ring\",\n textColor: \"text-primary\"\n },\n success: {\n icon: (\n <svg className=\"h-6 w-6 text-green-600 dark:text-green-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ),\n bgColor: \"bg-green-100 dark:bg-green-900/20\",\n buttonColor: \"bg-green-600 hover:bg-green-700 focus:ring-green-500\",\n textColor: \"text-green-600 dark:text-green-400\"\n },\n error: {\n icon: (\n <svg className=\"h-6 w-6 text-destructive\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n ),\n bgColor: \"bg-destructive/10\",\n buttonColor: \"bg-destructive hover:bg-destructive/90 focus:ring-destructive\",\n textColor: \"text-destructive\"\n }\n }\n\n const config = typeConfig[type]\n const isInputValid = !showInput || !requiredInputValue || inputValue === requiredInputValue\n const isDisabled = disabled || loading || !isInputValid\n\n return (\n <Modal \n isOpen={isOpen} \n onClose={onClose} \n closable={false}\n size={size}\n >\n <div className=\"text-center\">\n {/* 아이콘 */}\n <div className={merge(\n \"mx-auto flex items-center justify-center h-16 w-16 rounded-full mb-6\", // 64px 아이콘, 24px 여백\n config.bgColor\n )}>\n {config.icon}\n </div>\n\n {/* 제목 */}\n <h3 className=\"text-xl font-semibold text-foreground mb-4\"> {/* 16px 여백 */}\n {title}\n </h3>\n\n {/* 메시지 */}\n <div className=\"mb-6\"> {/* 24px 여백 */}\n <p className=\"text-sm text-muted-foreground\">\n {message}\n </p>\n \n {/* 경고 메시지 */}\n {warning && (\n <p className={merge(\n \"text-sm mt-3 font-medium\", // 12px 여백\n config.textColor\n )}>\n {warning}\n </p>\n )}\n </div>\n\n {/* 입력 필드 */}\n {showInput && (\n <div className=\"mb-6\"> {/* 24px 여백 */}\n <label htmlFor=\"confirmInput\" className=\"block text-sm font-medium text-foreground mb-3 text-left\"> {/* 12px 여백 */}\n {inputLabel}\n </label>\n <input\n type=\"text\"\n id=\"confirmInput\"\n value={inputValue}\n onChange={(e) => onInputChange?.(e.target.value)}\n placeholder={inputPlaceholder}\n className=\"w-full px-4 py-3 border border-input rounded-lg focus:outline-none focus:ring-1 focus:ring-destructive focus:border-transparent bg-background text-foreground transition-colors\" // 16px, 12px 패딩\n />\n </div>\n )}\n\n {/* 버튼 */}\n <div className={merge(\n \"flex gap-3\", // 12px 간격\n showCancel ? \"justify-center\" : \"justify-center\"\n )}>\n {showCancel && (\n <Button\n variant=\"outline\"\n onClick={onClose}\n disabled={loading}\n className=\"px-6 py-3\" // 24px, 12px 패딩\n >\n {cancelText}\n </Button>\n )}\n <Button\n variant=\"default\"\n onClick={onConfirm}\n disabled={isDisabled}\n className={merge(\n \"px-6 py-3\", // 24px, 12px 패딩\n config.buttonColor\n )}\n >\n {loading ? (\n <div className=\"flex items-center\">\n <svg className=\"animate-spin -ml-1 mr-2 h-4 w-4 text-white\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n 처리 중...\n </div>\n ) : (\n confirmButtonText || confirmText\n )}\n </Button>\n </div>\n </div>\n </Modal>\n )\n }\n)\nConfirmModal.displayName = \"ConfirmModal\"\n\nexport { ConfirmModal } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Icon } from \"./Icon\"\n\n/**\n * BottomSheet 컴포넌트의 props / BottomSheet component props\n * @typedef {Object} BottomSheetProps\n * @property {boolean} open - BottomSheet 열림/닫힘 상태 / BottomSheet open/close state\n * @property {(open: boolean) => void} onOpenChange - 상태 변경 콜백 / State change callback\n * @property {React.ReactNode} children - BottomSheet 내용 / BottomSheet content\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n * @property {\"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"} [height=\"md\"] - BottomSheet 높이 / BottomSheet height\n * @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay\n * @property {string} [backdropClassName] - 배경 오버레이 추가 CSS 클래스 / Backdrop overlay additional CSS class\n * @property {boolean} [closeOnBackdropClick=true] - 배경 클릭 시 닫기 여부 / Close on backdrop click\n * @property {boolean} [closeOnEscape=true] - ESC 키로 닫기 여부 / Close on ESC key\n * @property {boolean} [showDragHandle=true] - 드래그 핸들 표시 여부 / Show drag handle\n * @property {number[]} [snapPoints=[25, 50, 75, 100]] - 스냅 포인트 (퍼센트) / Snap points (percentage)\n * @property {number} [defaultSnap=50] - 기본 스냅 포인트 (퍼센트) / Default snap point (percentage)\n */\ninterface BottomSheetProps {\n /** BottomSheet 열림/닫힘 상태 / BottomSheet open/close state */\n isOpen?: boolean\n /** BottomSheet 닫기 콜백 / BottomSheet close callback */\n onClose?: () => void\n /** BottomSheet 내용 / BottomSheet content */\n children: React.ReactNode\n /** 추가 CSS 클래스 / Additional CSS class */\n className?: string\n /** BottomSheet 높이 / BottomSheet height */\n height?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n /** 배경 오버레이 표시 여부 / Show backdrop overlay */\n showBackdrop?: boolean\n /** 배경 오버레이 추가 CSS 클래스 / Backdrop overlay additional CSS class */\n backdropClassName?: string\n /** 배경 클릭 시 닫기 여부 / Close on backdrop click */\n closeOnBackdropClick?: boolean\n /** ESC 키로 닫기 여부 / Close on ESC key */\n closeOnEscape?: boolean\n /** 드래그 핸들 표시 여부 / Show drag handle */\n showDragHandle?: boolean\n /** 닫기 버튼 표시 여부 / Show close button */\n closable?: boolean\n /** 스냅 포인트 (퍼센트) / Snap points (percentage) */\n snapPoints?: number[]\n /** 기본 스냅 포인트 (퍼센트) / Default snap point (percentage) */\n defaultSnap?: number\n}\n\n/**\n * BottomSheet 컴포넌트 / BottomSheet component\n * \n * 화면 하단에서 올라오는 시트 컴포넌트입니다.\n * 모바일 친화적인 UI를 제공하며, 드래그로 높이를 조절할 수 있습니다.\n * 스냅 포인트를 지원하여 특정 높이에서 멈출 수 있습니다.\n * \n * Sheet component that slides up from the bottom of the screen.\n * Provides mobile-friendly UI and allows height adjustment by dragging.\n * Supports snap points to stop at specific heights.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * const [open, setOpen] = useState(false)\n * \n * <BottomSheet open={open} onOpenChange={setOpen}>\n * <BottomSheetHeader>제목</BottomSheetHeader>\n * <BottomSheetContent>내용</BottomSheetContent>\n * </BottomSheet>\n * \n * @example\n * // 커스텀 스냅 포인트 / Custom snap points\n * <BottomSheet \n * open={open} \n * onOpenChange={setOpen}\n * snapPoints={[30, 60, 90]}\n * defaultSnap={30}\n * >\n * <BottomSheetContent>내용</BottomSheetContent>\n * </BottomSheet>\n * \n * @param {BottomSheetProps} props - BottomSheet 컴포넌트의 props / BottomSheet component props\n * @param {React.Ref<HTMLDivElement>} ref - BottomSheet 컨테이너 ref / BottomSheet container ref\n * @returns {JSX.Element} BottomSheet 컴포넌트 / BottomSheet component\n * \n * @todo 접근성 개선: role=\"dialog\", aria-modal=\"true\" 추가 필요 / Accessibility: Add role=\"dialog\", aria-modal=\"true\"\n * @todo 접근성 개선: aria-labelledby, aria-describedby 연결 필요 / Accessibility: Connect aria-labelledby, aria-describedby\n */\nconst BottomSheet = React.forwardRef<HTMLDivElement, BottomSheetProps>(\n ({\n isOpen,\n onClose,\n children,\n className,\n height = \"md\",\n showBackdrop = true,\n backdropClassName,\n closeOnBackdropClick = true,\n closeOnEscape = true,\n showDragHandle = true,\n closable = true,\n snapPoints = [25, 50, 75, 100],\n defaultSnap = 50,\n ...props\n }, ref) => {\n const _isOpen = isOpen ?? false\n const handleClose = () => {\n onClose?.()\n }\n\n const [isVisible, setIsVisible] = React.useState(false)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [currentHeight, setCurrentHeight] = React.useState(defaultSnap)\n const [isDragging, setIsDragging] = React.useState(false)\n const [startY, setStartY] = React.useState(0)\n const [currentY, setCurrentY] = React.useState(0)\n\n const heightClasses = {\n sm: \"h-64\",\n md: \"h-96\",\n lg: \"h-[32rem]\",\n xl: \"h-[40rem]\",\n full: \"h-full\"\n }\n\n React.useEffect(() => {\n if (_isOpen) {\n setIsVisible(true)\n setIsAnimating(true)\n const timer = setTimeout(() => setIsAnimating(false), 50)\n return () => clearTimeout(timer)\n } else {\n setIsAnimating(true)\n const timer = setTimeout(() => {\n setIsVisible(false)\n setIsAnimating(false)\n }, 300)\n return () => clearTimeout(timer)\n }\n }, [_isOpen])\n\n React.useEffect(() => {\n if (!closeOnEscape) return\n\n const handleEscapeKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && _isOpen) {\n handleClose()\n }\n }\n\n if (_isOpen) {\n document.addEventListener(\"keydown\", handleEscapeKey)\n document.body.style.overflow = \"hidden\"\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey)\n document.body.style.overflow = \"\"\n }\n }, [_isOpen, closeOnEscape])\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setIsDragging(true)\n setStartY(e.touches[0].clientY)\n setCurrentY(e.touches[0].clientY)\n }\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return\n setCurrentY(e.touches[0].clientY)\n }\n\n const handleTouchEnd = () => {\n if (!isDragging) return\n setIsDragging(false)\n\n const deltaY = currentY - startY\n const threshold = 100\n\n if (deltaY > threshold) {\n // 아래로 드래그 - 닫기\n handleClose()\n } else if (deltaY < -threshold) {\n // 위로 드래그 - 다음 스냅 포인트\n const currentIndex = snapPoints.indexOf(currentHeight)\n const nextIndex = Math.min(currentIndex + 1, snapPoints.length - 1)\n setCurrentHeight(snapPoints[nextIndex])\n }\n }\n\n if (!isVisible) return null\n\n return (\n <div className=\"fixed inset-0 z-50\">\n {/* Backdrop */}\n {showBackdrop && (\n <div\n className={merge(\n \"absolute inset-0 bg-black/85 backdrop-blur-md transition-opacity duration-300\",\n isAnimating ? (_isOpen ? \"opacity-100\" : \"opacity-0\") : \"\",\n backdropClassName\n )}\n onClick={closeOnBackdropClick ? handleClose : undefined}\n />\n )}\n\n {/* Bottom Sheet */}\n <div\n ref={ref}\n className={merge(\n \"absolute bottom-0 left-0 right-0 bg-background/95 backdrop-blur-xl border-t border-border/50 shadow-2xl rounded-t-lg transition-transform duration-300 ease-out pb-safe\",\n height !== \"full\" ? heightClasses[height] : \"\",\n isAnimating ? (_isOpen ? \"translate-y-0\" : \"translate-y-full\") : \"\",\n className\n )}\n style={{\n // height prop이 \"full\"일 때만 퍼센트 높이 사용 (스냅 포인트)\n // 그 외에는 heightClasses의 고정 높이 사용\n height: height === \"full\" ? `${currentHeight}%` : undefined,\n maxHeight: height !== \"full\" ? undefined : \"100%\",\n transform: isDragging ? `translateY(${currentY - startY}px)` : undefined\n }}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n {/* Drag Handle */}\n {showDragHandle && (\n <div className=\"flex justify-center pt-3 pb-2\">\n <div className=\"w-12 h-1.5 bg-muted-foreground/30 rounded-full\" />\n </div>\n )}\n\n {children}\n </div>\n </div>\n )\n }\n)\nBottomSheet.displayName = \"BottomSheet\"\n\n/**\n * BottomSheetHeader 컴포넌트의 props / BottomSheetHeader component props\n * @typedef {Object} BottomSheetHeaderProps\n * @property {React.ReactNode} children - 헤더 내용 / Header content\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n * @property {boolean} [showCloseButton=true] - 닫기 버튼 표시 여부 / Show close button\n * @property {() => void} [onClose] - 닫기 버튼 클릭 콜백 / Close button click callback\n */\ninterface BottomSheetHeaderProps {\n children: React.ReactNode\n className?: string\n showCloseButton?: boolean\n onClose?: () => void\n}\n\n/**\n * BottomSheetHeader 컴포넌트 / BottomSheetHeader component\n * BottomSheet의 헤더 영역을 표시합니다.\n * Displays the header area of a BottomSheet.\n * \n * @component\n * @param {BottomSheetHeaderProps} props - BottomSheetHeader 컴포넌트의 props / BottomSheetHeader component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} BottomSheetHeader 컴포넌트 / BottomSheetHeader component\n */\nconst BottomSheetHeader = React.forwardRef<HTMLDivElement, BottomSheetHeaderProps>(\n ({ children, className, showCloseButton = true, onClose, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\"flex items-center justify-between px-6 py-4\", className)}\n {...props}\n >\n <div className=\"flex-1\">{children}</div>\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-2 rounded-lg hover:bg-muted transition-colors\"\n >\n <Icon name=\"close\" size={20} />\n </button>\n )}\n </div>\n )\n }\n)\nBottomSheetHeader.displayName = \"BottomSheetHeader\"\n\n/**\n * BottomSheetContent 컴포넌트의 props / BottomSheetContent component props\n * @typedef {Object} BottomSheetContentProps\n * @property {React.ReactNode} children - 콘텐츠 / Content\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n */\ninterface BottomSheetContentProps {\n children: React.ReactNode\n className?: string\n}\n\n/**\n * BottomSheetContent 컴포넌트 / BottomSheetContent component\n * BottomSheet의 메인 콘텐츠 영역을 표시합니다.\n * Displays the main content area of a BottomSheet.\n * \n * @component\n * @param {BottomSheetContentProps} props - BottomSheetContent 컴포넌트의 props / BottomSheetContent component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} BottomSheetContent 컴포넌트 / BottomSheetContent component\n */\nconst BottomSheetContent = React.forwardRef<HTMLDivElement, BottomSheetContentProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\"flex-1 px-6 pb-6 overflow-y-auto\", className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nBottomSheetContent.displayName = \"BottomSheetContent\"\n\nexport { BottomSheet, BottomSheetHeader, BottomSheetContent } "]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ConfirmModal.tsx"],"names":["CONTENT_CENTER","ICON_WRAP_BASE","resolveDot","TITLE_STYLE","MESSAGE_WRAP","MESSAGE_STYLE","WARNING_BASE","INPUT_WRAP","INPUT_LABEL_STYLE","INPUT_BASE_STYLE","INPUT_FOCUS_STYLE","BUTTON_ROW","LOADING_WRAP","SPINNER_STYLE","TYPE_CONFIG","ICON_SVG_SIZE","WarningIcon","iconColor","jsx","mergeStyles","InfoIcon","CheckIcon","CrossIcon","ConfirmInput","id","value","placeholder","onChange","isFocused","setIsFocused","useState","inputStyle","useMemo","e","ConfirmButton","onClick","disabled","buttonStyle","children","Button","ConfirmModal","React","isOpen","onClose","onConfirm","title","message","warning","confirmText","cancelText","confirmButtonText","type","loading","showInput","inputValue","onInputChange","inputPlaceholder","inputLabel","requiredInputValue","showCancel","size","dotProp","style","_ref","_a","config","isDisabled","containerStyle","iconWrapStyle","warningStyle","icon","Modal","jsxs"],"mappings":"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","file":"overlay.mjs","sourcesContent":["\"use client\";\n\nimport React, { useState, useMemo } from \"react\";\nimport { mergeStyles, resolveDot } from \"../hooks/useDotMap\";\nimport { Modal } from \"./Modal\";\nimport { Button } from \"./Button\";\n\n/**\n * ConfirmModal 컴포넌트의 props / ConfirmModal component props\n * @typedef {Object} ConfirmModalProps\n * @property {boolean} isOpen - 모달 열림/닫힘 상태 / Modal open/close state\n * @property {() => void} onClose - 닫기 콜백 / Close callback\n * @property {() => void} onConfirm - 확인 콜백 / Confirm callback\n * @property {string} title - 모달 제목 / Modal title\n * @property {string} message - 모달 메시지 / Modal message\n * @property {string} [warning] - 경고 메시지 / Warning message\n * @property {string} [confirmText=\"확인\"] - 확인 버튼 텍스트 / Confirm button text\n * @property {string} [cancelText=\"취소\"] - 취소 버튼 텍스트 / Cancel button text\n * @property {string} [confirmButtonText] - 확인 버튼 커스텀 텍스트 / Custom confirm button text\n * @property {\"danger\" | \"warning\" | \"info\" | \"success\" | \"error\"} [type=\"danger\"] - 모달 타입 / Modal type\n * @property {boolean} [loading=false] - 로딩 상태 / Loading state\n * @property {boolean} [disabled=false] - 비활성화 여부 / Disabled state\n * @property {boolean} [showInput=false] - 입력 필드 표시 여부 / Show input field\n * @property {string} [inputValue=\"\"] - 입력 필드 값 / Input field value\n * @property {(value: string) => void} [onInputChange] - 입력 값 변경 콜백 / Input value change callback\n * @property {string} [inputPlaceholder] - 입력 필드 플레이스홀더 / Input field placeholder\n * @property {string} [inputLabel] - 입력 필드 라벨 / Input field label\n * @property {string} [requiredInputValue] - 필수 입력 값 (확인 버튼 활성화 조건) / Required input value (confirm button activation condition)\n * @property {boolean} [showCancel=true] - 취소 버튼 표시 여부 / Show cancel button\n * @property {\"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"} [size=\"md\"] - 모달 크기 / Modal size\n * @property {string} [dot] - dot 유틸리티 스트링 (인라인 스타일로 변환) / dot utility string\n * @property {React.CSSProperties} [style] - 추가 인라인 스타일 / Additional inline styles\n */\nexport interface ConfirmModalProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title: string;\n message: string;\n warning?: string;\n confirmText?: string;\n cancelText?: string;\n confirmButtonText?: string;\n type?: \"danger\" | \"warning\" | \"info\" | \"success\" | \"error\";\n loading?: boolean;\n disabled?: boolean;\n showInput?: boolean;\n inputValue?: string;\n onInputChange?: (value: string) => void;\n inputPlaceholder?: string;\n inputLabel?: string;\n requiredInputValue?: string;\n showCancel?: boolean;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n dot?: string;\n style?: React.CSSProperties;\n}\n\n// ──────────────────────────────────────────────\n// Static style constants\n// ──────────────────────────────────────────────\n\nconst CONTENT_CENTER: React.CSSProperties = {\n textAlign: \"center\",\n};\n\nconst ICON_WRAP_BASE: React.CSSProperties = {\n marginLeft: \"auto\",\n marginRight: \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"64px\",\n width: \"64px\",\n borderRadius: \"9999px\",\n ...resolveDot(\"mb-6\"),\n};\n\nconst TITLE_STYLE: React.CSSProperties = {\n fontSize: \"1.25rem\",\n fontWeight: 600,\n color: \"var(--color-foreground)\",\n margin: 0,\n ...resolveDot(\"mb-4\"),\n};\n\nconst MESSAGE_WRAP: React.CSSProperties = {\n ...resolveDot(\"mb-6\"),\n};\n\nconst MESSAGE_STYLE: React.CSSProperties = {\n fontSize: \"0.875rem\",\n color: \"var(--color-muted-foreground)\",\n margin: 0,\n};\n\nconst WARNING_BASE: React.CSSProperties = {\n fontSize: \"0.875rem\",\n fontWeight: 500,\n margin: 0,\n ...resolveDot(\"mt-3\"),\n};\n\nconst INPUT_WRAP: React.CSSProperties = {\n ...resolveDot(\"mb-6\"),\n};\n\nconst INPUT_LABEL_STYLE: React.CSSProperties = {\n display: \"block\",\n fontSize: \"0.875rem\",\n fontWeight: 500,\n color: \"var(--color-foreground)\",\n ...resolveDot(\"mb-3\"),\n textAlign: \"left\",\n};\n\nconst INPUT_BASE_STYLE: React.CSSProperties = {\n width: \"100%\",\n ...resolveDot(\"px-4 py-3\"),\n border: \"1px solid var(--color-input)\",\n borderRadius: \"8px\",\n outline: \"none\",\n backgroundColor: \"var(--color-background)\",\n color: \"var(--color-foreground)\",\n transition: \"border-color 200ms, box-shadow 200ms\",\n boxSizing: \"border-box\",\n};\n\nconst INPUT_FOCUS_STYLE: React.CSSProperties = {\n borderColor: \"transparent\",\n boxShadow: \"0 0 0 1px var(--color-destructive)\",\n};\n\nconst BUTTON_ROW: React.CSSProperties = {\n display: \"flex\",\n ...resolveDot(\"gap-3\"),\n justifyContent: \"center\",\n};\n\nconst LOADING_WRAP: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n};\n\nconst SPINNER_STYLE: React.CSSProperties = {\n animation: \"spin 1s linear infinite\",\n marginLeft: \"-4px\",\n ...resolveDot(\"mr-2 w-4 h-4\"),\n color: \"white\",\n};\n\n// ──────────────────────────────────────────────\n// Variant-specific color tokens\n// ──────────────────────────────────────────────\n\ntype TypeConfig = {\n iconBg: React.CSSProperties;\n iconColor: React.CSSProperties;\n warningColor: React.CSSProperties;\n buttonStyle: React.CSSProperties;\n};\n\nconst TYPE_CONFIG: Record<string, TypeConfig> = {\n danger: {\n iconBg: {\n backgroundColor:\n \"color-mix(in srgb, var(--color-destructive) 10%, transparent)\",\n },\n iconColor: { color: \"var(--color-destructive)\" },\n warningColor: { color: \"var(--color-destructive)\" },\n buttonStyle: {\n backgroundColor: \"var(--color-destructive)\",\n color: \"var(--color-destructive-foreground)\",\n },\n },\n warning: {\n iconBg: { backgroundColor: \"color-mix(in srgb, #ca8a04 10%, transparent)\" },\n iconColor: { color: \"#ca8a04\" },\n warningColor: { color: \"#ca8a04\" },\n buttonStyle: { backgroundColor: \"#ca8a04\", color: \"#ffffff\" },\n },\n info: {\n iconBg: {\n backgroundColor:\n \"color-mix(in srgb, var(--color-primary) 10%, transparent)\",\n },\n iconColor: { color: \"var(--color-primary)\" },\n warningColor: { color: \"var(--color-primary)\" },\n buttonStyle: {\n backgroundColor: \"var(--color-primary)\",\n color: \"var(--color-primary-foreground)\",\n },\n },\n success: {\n iconBg: { backgroundColor: \"color-mix(in srgb, #16a34a 10%, transparent)\" },\n iconColor: { color: \"#16a34a\" },\n warningColor: { color: \"#16a34a\" },\n buttonStyle: { backgroundColor: \"#16a34a\", color: \"#ffffff\" },\n },\n error: {\n iconBg: {\n backgroundColor:\n \"color-mix(in srgb, var(--color-destructive) 10%, transparent)\",\n },\n iconColor: { color: \"var(--color-destructive)\" },\n warningColor: { color: \"var(--color-destructive)\" },\n buttonStyle: {\n backgroundColor: \"var(--color-destructive)\",\n color: \"var(--color-destructive-foreground)\",\n },\n },\n};\n\n// ──────────────────────────────────────────────\n// SVG icons as inline-styled elements\n// ──────────────────────────────────────────────\n\nconst ICON_SVG_SIZE: React.CSSProperties = { height: \"24px\", width: \"24px\" };\n\nfunction WarningIcon({ iconColor }: { iconColor: React.CSSProperties }) {\n return (\n <svg\n style={mergeStyles(ICON_SVG_SIZE, iconColor)}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z\"\n />\n </svg>\n );\n}\n\nfunction InfoIcon({ iconColor }: { iconColor: React.CSSProperties }) {\n return (\n <svg\n style={mergeStyles(ICON_SVG_SIZE, iconColor)}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n );\n}\n\nfunction CheckIcon({ iconColor }: { iconColor: React.CSSProperties }) {\n return (\n <svg\n style={mergeStyles(ICON_SVG_SIZE, iconColor)}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n );\n}\n\nfunction CrossIcon({ iconColor }: { iconColor: React.CSSProperties }) {\n return (\n <svg\n style={mergeStyles(ICON_SVG_SIZE, iconColor)}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n );\n}\n\n// ──────────────────────────────────────────────\n// Input field with focus state\n// ──────────────────────────────────────────────\n\nfunction ConfirmInput({\n id,\n value,\n placeholder,\n onChange,\n}: {\n id: string;\n value: string;\n placeholder?: string;\n onChange: (value: string) => void;\n}) {\n const [isFocused, setIsFocused] = useState(false);\n\n const inputStyle = useMemo(\n () =>\n mergeStyles(INPUT_BASE_STYLE, isFocused ? INPUT_FOCUS_STYLE : undefined),\n [isFocused],\n );\n\n return (\n <input\n type=\"text\"\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n style={inputStyle}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n />\n );\n}\n\n// ──────────────────────────────────────────────\n// ConfirmButton — variant-colored confirm button\n// ──────────────────────────────────────────────\n\nfunction ConfirmButton({\n onClick,\n disabled,\n buttonStyle,\n children,\n}: {\n onClick: () => void;\n disabled: boolean;\n buttonStyle: React.CSSProperties;\n children: React.ReactNode;\n}) {\n return (\n <Button\n variant=\"default\"\n onClick={onClick}\n disabled={disabled}\n style={buttonStyle}\n >\n {children}\n </Button>\n );\n}\n\n// ──────────────────────────────────────────────\n// Main component\n// ──────────────────────────────────────────────\n\n/**\n * ConfirmModal 컴포넌트 / ConfirmModal component\n *\n * 확인/취소가 필요한 모달 컴포넌트입니다.\n * 다양한 타입(danger, warning, info, success, error)을 지원하며,\n * 입력 필드와 필수 입력 값 검증을 지원합니다.\n *\n * Modal component that requires confirmation/cancellation.\n * Supports various types (danger, warning, info, success, error),\n * and supports input fields and required input value validation.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <ConfirmModal\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * onConfirm={handleConfirm}\n * title=\"삭제 확인\"\n * message=\"정말 삭제하시겠습니까?\"\n * />\n *\n * @example\n * // 입력 필드와 함께 / With input field\n * <ConfirmModal\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * onConfirm={handleDelete}\n * title=\"삭제 확인\"\n * message=\"삭제하려면 'DELETE'를 입력하세요\"\n * showInput\n * inputLabel=\"확인 입력\"\n * requiredInputValue=\"DELETE\"\n * inputValue={inputValue}\n * onInputChange={setInputValue}\n * />\n *\n * @param {ConfirmModalProps} props - ConfirmModal 컴포넌트의 props / ConfirmModal component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} ConfirmModal 컴포넌트 / ConfirmModal component\n */\nconst ConfirmModal = React.forwardRef<HTMLDivElement, ConfirmModalProps>(\n (\n {\n isOpen,\n onClose,\n onConfirm,\n title,\n message,\n warning,\n confirmText = \"확인\",\n cancelText = \"취소\",\n confirmButtonText,\n type = \"danger\",\n loading = false,\n disabled = false,\n showInput = false,\n inputValue = \"\",\n onInputChange,\n inputPlaceholder,\n inputLabel,\n requiredInputValue,\n showCancel = true,\n size = \"md\",\n dot: dotProp,\n style,\n },\n _ref,\n ) => {\n const config = TYPE_CONFIG[type] ?? TYPE_CONFIG.danger;\n const isInputValid =\n !showInput || !requiredInputValue || inputValue === requiredInputValue;\n const isDisabled = disabled || loading || !isInputValid;\n\n const containerStyle = useMemo(\n () => mergeStyles(CONTENT_CENTER, resolveDot(dotProp), style),\n [dotProp, style],\n );\n\n const iconWrapStyle = useMemo(\n () => mergeStyles(ICON_WRAP_BASE, config.iconBg),\n [config.iconBg],\n );\n\n const warningStyle = useMemo(\n () => mergeStyles(WARNING_BASE, config.warningColor),\n [config.warningColor],\n );\n\n // Render the type-appropriate icon\n const icon = (() => {\n switch (type) {\n case \"warning\":\n return <WarningIcon iconColor={config.iconColor} />;\n case \"info\":\n return <InfoIcon iconColor={config.iconColor} />;\n case \"success\":\n return <CheckIcon iconColor={config.iconColor} />;\n case \"error\":\n return <CrossIcon iconColor={config.iconColor} />;\n case \"danger\":\n default:\n return <WarningIcon iconColor={config.iconColor} />;\n }\n })();\n\n return (\n <Modal isOpen={isOpen} onClose={onClose} closable={false} size={size}>\n <div style={containerStyle}>\n {/* Icon */}\n <div style={iconWrapStyle}>{icon}</div>\n\n {/* Title */}\n <h3 style={TITLE_STYLE}>{title}</h3>\n\n {/* Message */}\n <div style={MESSAGE_WRAP}>\n <p style={MESSAGE_STYLE}>{message}</p>\n\n {/* Warning message */}\n {warning && <p style={warningStyle}>{warning}</p>}\n </div>\n\n {/* Input field */}\n {showInput && (\n <div style={INPUT_WRAP}>\n <label htmlFor=\"confirmInput\" style={INPUT_LABEL_STYLE}>\n {inputLabel}\n </label>\n <ConfirmInput\n id=\"confirmInput\"\n value={inputValue}\n placeholder={inputPlaceholder}\n onChange={onInputChange ?? (() => {})}\n />\n </div>\n )}\n\n {/* Buttons */}\n <div style={BUTTON_ROW}>\n {showCancel && (\n <Button\n variant=\"outline\"\n onClick={onClose}\n disabled={loading}\n style={resolveDot(\"px-6 py-3\")}\n >\n {cancelText}\n </Button>\n )}\n <ConfirmButton\n onClick={onConfirm}\n disabled={isDisabled}\n buttonStyle={mergeStyles(\n resolveDot(\"px-6 py-3\"),\n config.buttonStyle,\n )}\n >\n {loading ? (\n <div style={LOADING_WRAP}>\n <svg\n style={SPINNER_STYLE}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n style={{ opacity: 0.25 }}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n style={{ opacity: 0.75 }}\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n 처리 중...\n </div>\n ) : (\n confirmButtonText || confirmText\n )}\n </ConfirmButton>\n </div>\n </div>\n </Modal>\n );\n },\n);\nConfirmModal.displayName = \"ConfirmModal\";\n\nexport { ConfirmModal };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SDUIRenderer.d.ts","sourceRoot":"","sources":["../../src/sdui/SDUIRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SDUIRenderer.d.ts","sourceRoot":"","sources":["../../src/sdui/SDUIRenderer.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,iBAAiB,EACjB,WAAW,EAIZ,MAAM,SAAS,CAAC;AAejB;;GAEG;AACH,wBAAgB,OAAO,IAAI,WAAW,CAMrC;AAqMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,IAAI,EAAE,WAAgB,EACtB,QAAQ,EACR,UAAU,GACX,EAAE,iBAAiB,2CA+EnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CA2BtD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDUI Core — platform-agnostic logic
|
|
3
|
+
*
|
|
4
|
+
* SDUIRenderer에서 추출한 순수 함수 + v2 유틸리티
|
|
5
|
+
*/
|
|
6
|
+
import type { SDUICondition, SDUIEachBinding } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* 데이터 경로로 값 가져오기
|
|
9
|
+
* 예: "user.profile.name" → data.user.profile.name
|
|
10
|
+
*/
|
|
11
|
+
export declare function getByPath(obj: Record<string, unknown>, path: string): unknown;
|
|
12
|
+
/**
|
|
13
|
+
* 데이터 경로로 값 설정하기 (immutable)
|
|
14
|
+
*/
|
|
15
|
+
export declare function setByPath(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* 조건 평가
|
|
18
|
+
*/
|
|
19
|
+
export declare function evaluateCondition(condition: SDUICondition, data: Record<string, unknown>): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Props에서 데이터 바인딩 처리
|
|
22
|
+
* {{ path }} 형식을 실제 데이터로 치환
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveProps(props: Record<string, unknown>, data: Record<string, unknown>): Record<string, unknown>;
|
|
25
|
+
/**
|
|
26
|
+
* 텍스트 내 {{ path }} 바인딩을 데이터로 치환
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveTextBindings(text: string, data: Record<string, unknown>): string;
|
|
29
|
+
/**
|
|
30
|
+
* dot 문자열 내 {{ path }} 바인딩 resolve
|
|
31
|
+
* 예: "bg-{{ emotion.color }}" + {emotion: {color: "cyan-500"}} → "bg-cyan-500"
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveDotString(dot: string, data: Record<string, unknown>): string;
|
|
34
|
+
/**
|
|
35
|
+
* each 반복 결과 항목
|
|
36
|
+
*/
|
|
37
|
+
export interface EachIterationItem {
|
|
38
|
+
/** Scoped data (부모 data + item/index 주입) */
|
|
39
|
+
scopedData: Record<string, unknown>;
|
|
40
|
+
/** Stable React key (each.key path → item value, fallback: index) */
|
|
41
|
+
key: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* each 바인딩을 처리하여 scoped data + key 배열 반환
|
|
45
|
+
*
|
|
46
|
+
* 각 항목은 부모 data를 복사 + item/index 변수 주입
|
|
47
|
+
* each.key가 있으면 item에서 해당 경로의 값을 React key로 사용
|
|
48
|
+
*/
|
|
49
|
+
export declare function iterateEach(each: SDUIEachBinding, data: Record<string, unknown>): EachIterationItem[];
|
|
50
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/sdui/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAuBT;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,iBAAiB,EAAE,CA2BrB"}
|