@hua-labs/ui 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +91 -43
- package/dist/{ComponentLayout-BhM4VSoq.d.mts → ComponentLayout-Clf6C2jV.d.mts} +37 -3
- package/dist/DashboardSidebar-ZulecqKs.d.mts +54 -0
- package/dist/DashboardToolbar-BRZayZNz.d.mts +122 -0
- package/dist/EmptyState-SQ3Z6Vf2.d.mts +64 -0
- package/dist/{Modal-CrXmb3Ll.d.mts → Modal-DKKtBtbh.d.mts} +12 -6
- package/dist/{Section-BWzyshgX.d.mts → Section-DKdIG1sg.d.mts} +11 -12
- package/dist/SectionHeader-DHwQ_xh8.d.mts +1653 -0
- package/dist/{Switch-Dzm5TLR3.d.mts → Switch-D0l7SJrz.d.mts} +31 -15
- package/dist/Tooltip-Cv7nYhPW.d.mts +304 -0
- package/dist/advanced/Logo.d.ts +8 -4
- package/dist/advanced/Logo.d.ts.map +1 -1
- package/dist/advanced/dashboard.d.ts +28 -6
- package/dist/advanced/dashboard.d.ts.map +1 -1
- package/dist/advanced-dashboard.d.mts +9 -2278
- package/dist/advanced-dashboard.mjs +1 -33
- package/dist/advanced-dashboard.mjs.map +1 -1
- package/dist/advanced-emotion.d.mts +13 -5
- package/dist/advanced-emotion.mjs +1 -1
- package/dist/advanced-motion.d.mts +136 -56
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +69 -36
- package/dist/advanced.mjs +14 -3
- package/dist/advanced.mjs.map +1 -1
- package/dist/chunk-32OZGTPV.mjs +41 -0
- package/dist/chunk-32OZGTPV.mjs.map +1 -0
- package/dist/chunk-6WBFZ2KV.mjs +3 -0
- package/dist/chunk-6WBFZ2KV.mjs.map +1 -0
- package/dist/chunk-7CGJQSJO.mjs +3 -0
- package/dist/chunk-7CGJQSJO.mjs.map +1 -0
- package/dist/chunk-7T3IUG3G.mjs +3 -0
- package/dist/chunk-7T3IUG3G.mjs.map +1 -0
- package/dist/chunk-AJOGTUWS.mjs +3 -0
- package/dist/chunk-AJOGTUWS.mjs.map +1 -0
- package/dist/chunk-AQTSQYH2.mjs +3 -0
- package/dist/chunk-AQTSQYH2.mjs.map +1 -0
- package/dist/chunk-B2MRZJQA.mjs +3 -0
- package/dist/chunk-B2MRZJQA.mjs.map +1 -0
- package/dist/chunk-BOX4TONF.mjs +3 -0
- package/dist/chunk-BOX4TONF.mjs.map +1 -0
- package/dist/chunk-C2DOXNBK.mjs +3 -0
- package/dist/chunk-C2DOXNBK.mjs.map +1 -0
- package/dist/chunk-CQBMR7VU.mjs +3 -0
- package/dist/chunk-CQBMR7VU.mjs.map +1 -0
- package/dist/chunk-CYAAAEPJ.mjs +3 -0
- package/dist/chunk-CYAAAEPJ.mjs.map +1 -0
- package/dist/chunk-D7MTTTQY.mjs +8 -0
- package/dist/chunk-D7MTTTQY.mjs.map +1 -0
- package/dist/chunk-DABVKUJN.mjs +3 -0
- package/dist/chunk-DABVKUJN.mjs.map +1 -0
- package/dist/chunk-EK6BLFVQ.mjs +3 -0
- package/dist/chunk-EK6BLFVQ.mjs.map +1 -0
- package/dist/chunk-FVUAVGP5.mjs +3 -0
- package/dist/chunk-FVUAVGP5.mjs.map +1 -0
- package/dist/chunk-GAIUZVNC.mjs +3 -0
- package/dist/chunk-GAIUZVNC.mjs.map +1 -0
- package/dist/chunk-HLBIIF4I.mjs +3 -0
- package/dist/chunk-HLBIIF4I.mjs.map +1 -0
- package/dist/chunk-I6NCGF6E.mjs +3 -0
- package/dist/chunk-I6NCGF6E.mjs.map +1 -0
- package/dist/chunk-J46VEBVF.mjs +3 -0
- package/dist/chunk-J46VEBVF.mjs.map +1 -0
- package/dist/chunk-JNW3CLCA.mjs +3 -0
- package/dist/chunk-JNW3CLCA.mjs.map +1 -0
- package/dist/chunk-JY3QVUGW.mjs +3 -0
- package/dist/chunk-JY3QVUGW.mjs.map +1 -0
- package/dist/chunk-KHBZOGUU.mjs +3 -0
- package/dist/chunk-KHBZOGUU.mjs.map +1 -0
- package/dist/chunk-KPNNAQLI.mjs +3 -0
- package/dist/chunk-KPNNAQLI.mjs.map +1 -0
- package/dist/chunk-L2LGSILS.mjs +13 -0
- package/dist/chunk-L2LGSILS.mjs.map +1 -0
- package/dist/chunk-LPHUWTQ2.mjs +3 -0
- package/dist/chunk-LPHUWTQ2.mjs.map +1 -0
- package/dist/chunk-M4JE7TQL.mjs +3 -0
- package/dist/chunk-M4JE7TQL.mjs.map +1 -0
- package/dist/chunk-MEDKGNLV.mjs +3 -0
- package/dist/chunk-MEDKGNLV.mjs.map +1 -0
- package/dist/chunk-MR46CSMC.mjs +3 -0
- package/dist/chunk-MR46CSMC.mjs.map +1 -0
- package/dist/chunk-NSDWT2JM.mjs +3 -0
- package/dist/chunk-NSDWT2JM.mjs.map +1 -0
- package/dist/chunk-OBMOTQEU.mjs +3 -0
- package/dist/chunk-OBMOTQEU.mjs.map +1 -0
- package/dist/chunk-RICRFXFP.mjs +3 -0
- package/dist/chunk-RICRFXFP.mjs.map +1 -0
- package/dist/chunk-SOK7VBSM.mjs +13 -0
- package/dist/chunk-SOK7VBSM.mjs.map +1 -0
- package/dist/chunk-SPZ7SZH4.mjs +3 -0
- package/dist/chunk-SPZ7SZH4.mjs.map +1 -0
- package/dist/chunk-TB3DARQO.mjs +3 -0
- package/dist/chunk-TB3DARQO.mjs.map +1 -0
- package/dist/chunk-TND4HPKW.mjs +51 -0
- package/dist/chunk-TND4HPKW.mjs.map +1 -0
- package/dist/chunk-TSAXVD2H.mjs +35 -0
- package/dist/chunk-TSAXVD2H.mjs.map +1 -0
- package/dist/chunk-UR3TIWBS.mjs +3 -0
- package/dist/chunk-UR3TIWBS.mjs.map +1 -0
- package/dist/chunk-XU2XBAEW.mjs +3 -0
- package/dist/chunk-XU2XBAEW.mjs.map +1 -0
- package/dist/chunk-XXHDNZTG.mjs +3 -0
- package/dist/chunk-XXHDNZTG.mjs.map +1 -0
- package/dist/chunk-YW5DA7Q6.mjs +3 -0
- package/dist/chunk-YW5DA7Q6.mjs.map +1 -0
- package/dist/chunk-ZTHUGQZL.mjs +3 -0
- package/dist/chunk-ZTHUGQZL.mjs.map +1 -0
- package/dist/chunk-ZVCGC6EV.mjs +3 -0
- package/dist/chunk-ZVCGC6EV.mjs.map +1 -0
- package/dist/chunk-ZZ67E3M5.mjs +3 -0
- package/dist/chunk-ZZ67E3M5.mjs.map +1 -0
- package/dist/{common-YLvZxA_K.d.mts → common-Bej8Okcg.d.mts} +1 -1
- package/dist/components/Accordion.d.ts +14 -7
- package/dist/components/Accordion.d.ts.map +1 -1
- package/dist/components/Action.d.ts.map +1 -1
- package/dist/components/ActionToolbar.d.ts +10 -6
- package/dist/components/ActionToolbar.d.ts.map +1 -1
- package/dist/components/Alert.d.ts +16 -2
- package/dist/components/Alert.d.ts.map +1 -1
- package/dist/components/Autocomplete.d.ts +6 -4
- package/dist/components/Autocomplete.d.ts.map +1 -1
- package/dist/components/Avatar.d.ts +20 -7
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Badge.d.ts +27 -9
- package/dist/components/Badge.d.ts.map +1 -1
- package/dist/components/Bookmark.d.ts +4 -2
- package/dist/components/Bookmark.d.ts.map +1 -1
- package/dist/components/BottomSheet.d.ts +13 -9
- package/dist/components/BottomSheet.d.ts.map +1 -1
- package/dist/components/Box.d.ts +9 -0
- package/dist/components/Box.d.ts.map +1 -0
- package/dist/components/Breadcrumb.d.ts +9 -4
- package/dist/components/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Button.d.ts +3 -29
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.variants.d.ts +54 -10
- package/dist/components/Button.variants.d.ts.map +1 -1
- package/dist/components/Card.d.ts +49 -14
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/ChatMessage.d.ts +3 -2
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/Checkbox.d.ts +5 -2
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/CodeBlock.d.ts +8 -5
- package/dist/components/CodeBlock.d.ts.map +1 -1
- package/dist/components/ColorPicker.d.ts +4 -2
- package/dist/components/ColorPicker.d.ts.map +1 -1
- package/dist/components/Command.d.ts +28 -14
- package/dist/components/Command.d.ts.map +1 -1
- package/dist/components/ComponentLayout.d.ts +5 -2
- package/dist/components/ComponentLayout.d.ts.map +1 -1
- package/dist/components/ConfirmModal.d.ts +4 -0
- package/dist/components/ConfirmModal.d.ts.map +1 -1
- package/dist/components/Container.d.ts +18 -5
- package/dist/components/Container.d.ts.map +1 -1
- package/dist/components/ContextMenu.d.ts +36 -36
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts +12 -5
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/Divider.d.ts +2 -1
- package/dist/components/Divider.d.ts.map +1 -1
- package/dist/components/Drawer.d.ts +17 -12
- package/dist/components/Drawer.d.ts.map +1 -1
- package/dist/components/Dropdown.d.ts +25 -7
- package/dist/components/Dropdown.d.ts.map +1 -1
- package/dist/components/EmotionAnalysis.d.ts +3 -1
- package/dist/components/EmotionAnalysis.d.ts.map +1 -1
- package/dist/components/EmotionButton.d.ts +3 -1
- package/dist/components/EmotionButton.d.ts.map +1 -1
- package/dist/components/EmotionMeter.d.ts +3 -1
- package/dist/components/EmotionMeter.d.ts.map +1 -1
- package/dist/components/EmotionSelector.d.ts +3 -1
- package/dist/components/EmotionSelector.d.ts.map +1 -1
- package/dist/components/FeatureCard.d.ts +9 -3
- package/dist/components/FeatureCard.d.ts.map +1 -1
- package/dist/components/Form.d.ts +20 -54
- package/dist/components/Form.d.ts.map +1 -1
- package/dist/components/FormControl.d.ts +3 -2
- package/dist/components/FormControl.d.ts.map +1 -1
- package/dist/components/Grid.d.ts +11 -4
- package/dist/components/Grid.d.ts.map +1 -1
- package/dist/components/HeroSection.d.ts +4 -2
- package/dist/components/HeroSection.d.ts.map +1 -1
- package/dist/components/Icon/Icon.d.ts +12 -8
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/IconsaxGallery/index.d.ts +8 -5
- package/dist/components/IconsaxGallery/index.d.ts.map +1 -1
- package/dist/components/InfoCard.d.ts +5 -2
- package/dist/components/InfoCard.d.ts.map +1 -1
- package/dist/components/Input.d.ts +29 -4
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Label.d.ts +15 -10
- package/dist/components/Label.d.ts.map +1 -1
- package/dist/components/LanguageToggle.d.ts +5 -3
- package/dist/components/LanguageToggle.d.ts.map +1 -1
- package/dist/components/Link.d.ts +17 -6
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/LoadingSpinner.d.ts +7 -3
- package/dist/components/LoadingSpinner.d.ts.map +1 -1
- package/dist/components/Menu.d.ts +59 -60
- package/dist/components/Menu.d.ts.map +1 -1
- package/dist/components/Modal.d.ts +12 -6
- package/dist/components/Modal.d.ts.map +1 -1
- package/dist/components/Navigation.d.ts +26 -11
- package/dist/components/Navigation.d.ts.map +1 -1
- package/dist/components/NumberInput.d.ts +5 -2
- package/dist/components/NumberInput.d.ts.map +1 -1
- package/dist/components/PageNavigation.d.ts +6 -3
- package/dist/components/PageNavigation.d.ts.map +1 -1
- package/dist/components/PageTransition.d.ts +2 -2
- package/dist/components/PageTransition.d.ts.map +1 -1
- package/dist/components/Pagination.d.ts +5 -2
- package/dist/components/Pagination.d.ts.map +1 -1
- package/dist/components/Panel.d.ts +1 -7
- package/dist/components/Panel.d.ts.map +1 -1
- package/dist/components/Popover.d.ts +25 -9
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Pressable.d.ts +14 -0
- package/dist/components/Pressable.d.ts.map +1 -0
- package/dist/components/Progress.d.ts +36 -13
- package/dist/components/Progress.d.ts.map +1 -1
- package/dist/components/Prose.d.ts +51 -0
- package/dist/components/Prose.d.ts.map +1 -0
- package/dist/components/Radio.d.ts +29 -33
- package/dist/components/Radio.d.ts.map +1 -1
- package/dist/components/ScrollArea.d.ts +8 -9
- package/dist/components/ScrollArea.d.ts.map +1 -1
- package/dist/components/ScrollIndicator.d.ts +9 -8
- package/dist/components/ScrollIndicator.d.ts.map +1 -1
- package/dist/components/ScrollProgress.d.ts +3 -2
- package/dist/components/ScrollProgress.d.ts.map +1 -1
- package/dist/components/ScrollToTop.d.ts +5 -5
- package/dist/components/ScrollToTop.d.ts.map +1 -1
- package/dist/components/Section.d.ts +12 -9
- package/dist/components/Section.d.ts.map +1 -1
- package/dist/components/SectionHeader.d.ts +3 -2
- package/dist/components/SectionHeader.d.ts.map +1 -1
- package/dist/components/Select.d.ts +18 -5
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Skeleton.d.ts +43 -15
- package/dist/components/Skeleton.d.ts.map +1 -1
- package/dist/components/Slider.d.ts +7 -5
- package/dist/components/Slider.d.ts.map +1 -1
- package/dist/components/Stack.d.ts +22 -6
- package/dist/components/Stack.d.ts.map +1 -1
- package/dist/components/StatsPanel.d.ts +4 -2
- package/dist/components/StatsPanel.d.ts.map +1 -1
- package/dist/components/Switch.d.ts +9 -4
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Table.d.ts +43 -18
- package/dist/components/Table.d.ts.map +1 -1
- package/dist/components/Tabs.d.ts +50 -77
- package/dist/components/Tabs.d.ts.map +1 -1
- package/dist/components/Text.d.ts +11 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Textarea.d.ts +24 -6
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/ThemeToggle.d.ts +18 -27
- package/dist/components/ThemeToggle.d.ts.map +1 -1
- package/dist/components/Timeline.d.ts +4 -2
- package/dist/components/Timeline.d.ts.map +1 -1
- package/dist/components/Toast.d.ts +1 -1
- package/dist/components/Toast.d.ts.map +1 -1
- package/dist/components/Toggle.d.ts +11 -2
- package/dist/components/Toggle.d.ts.map +1 -1
- package/dist/components/Tooltip.d.ts +5 -2
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Upload.d.ts +5 -3
- package/dist/components/Upload.d.ts.map +1 -1
- package/dist/components/advanced/AdvancedPageTransition.d.ts +7 -5
- package/dist/components/advanced/AdvancedPageTransition.d.ts.map +1 -1
- package/dist/components/advanced/AnimatedGradient.d.ts +6 -2
- package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
- package/dist/components/advanced/Carousel.d.ts +3 -1
- package/dist/components/advanced/Carousel.d.ts.map +1 -1
- package/dist/components/advanced/DotNav.d.ts +12 -5
- package/dist/components/advanced/DotNav.d.ts.map +1 -1
- package/dist/components/advanced/GlowCard.d.ts +4 -1
- package/dist/components/advanced/GlowCard.d.ts.map +1 -1
- package/dist/components/advanced/HorizontalScroll.d.ts +4 -1
- package/dist/components/advanced/HorizontalScroll.d.ts.map +1 -1
- package/dist/components/advanced/ImageReveal.d.ts +23 -1
- package/dist/components/advanced/ImageReveal.d.ts.map +1 -1
- package/dist/components/advanced/Marquee.d.ts +4 -2
- package/dist/components/advanced/Marquee.d.ts.map +1 -1
- package/dist/components/advanced/Parallax.d.ts +4 -2
- package/dist/components/advanced/Parallax.d.ts.map +1 -1
- package/dist/components/advanced/SpotlightCard.d.ts +13 -12
- package/dist/components/advanced/SpotlightCard.d.ts.map +1 -1
- package/dist/components/advanced/TextReveal.d.ts +5 -1
- package/dist/components/advanced/TextReveal.d.ts.map +1 -1
- package/dist/components/advanced/TiltCard.d.ts +6 -2
- package/dist/components/advanced/TiltCard.d.ts.map +1 -1
- package/dist/components/advanced/VideoBackground.d.ts +4 -1
- package/dist/components/advanced/VideoBackground.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditor.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditor.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorActions.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorActions.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorContent.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorContent.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorHeader.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorHeader.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorLanguageTabs.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorLanguageTabs.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorMetadata.d.ts +5 -3
- package/dist/components/advanced/blog-editor/BlogEditorMetadata.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorPreview.d.ts +5 -3
- package/dist/components/advanced/blog-editor/BlogEditorPreview.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorToolbar.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorToolbar.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/BlogEditorTranslate.d.ts +4 -2
- package/dist/components/advanced/blog-editor/BlogEditorTranslate.d.ts.map +1 -1
- package/dist/components/advanced/blog-editor/types.d.ts +5 -2
- package/dist/components/advanced/blog-editor/types.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionAnalysis.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionAnalysis.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionButton.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionButton.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionMeter.d.ts +4 -2
- package/dist/components/advanced/emotion/EmotionMeter.d.ts.map +1 -1
- package/dist/components/advanced/emotion/EmotionSelector.d.ts +3 -1
- package/dist/components/advanced/emotion/EmotionSelector.d.ts.map +1 -1
- package/dist/components/dashboard/ActivityFeed.d.ts +5 -2
- package/dist/components/dashboard/ActivityFeed.d.ts.map +1 -1
- package/dist/components/dashboard/BarChart.d.ts +3 -2
- package/dist/components/dashboard/BarChart.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardGrid.d.ts +13 -3
- package/dist/components/dashboard/DashboardGrid.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardSidebar.d.ts +15 -82
- package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardToolbar.d.ts +3 -2
- package/dist/components/dashboard/DashboardToolbar.d.ts.map +1 -1
- package/dist/components/dashboard/EmptyState.d.ts +3 -2
- package/dist/components/dashboard/EmptyState.d.ts.map +1 -1
- package/dist/components/dashboard/MembershipBadge.d.ts +3 -2
- package/dist/components/dashboard/MembershipBadge.d.ts.map +1 -1
- package/dist/components/dashboard/MerchantList.d.ts +3 -2
- package/dist/components/dashboard/MerchantList.d.ts.map +1 -1
- package/dist/components/dashboard/MetricCard.d.ts +3 -2
- package/dist/components/dashboard/MetricCard.d.ts.map +1 -1
- package/dist/components/dashboard/MiniBarChart.d.ts +3 -2
- package/dist/components/dashboard/MiniBarChart.d.ts.map +1 -1
- package/dist/components/dashboard/NotificationCard.d.ts +5 -2
- package/dist/components/dashboard/NotificationCard.d.ts.map +1 -1
- package/dist/components/dashboard/ProfileCard.d.ts +5 -2
- package/dist/components/dashboard/ProfileCard.d.ts.map +1 -1
- package/dist/components/dashboard/ProgressCard.d.ts +6 -3
- package/dist/components/dashboard/ProgressCard.d.ts.map +1 -1
- package/dist/components/dashboard/QuickActionCard.d.ts +22 -27
- package/dist/components/dashboard/QuickActionCard.d.ts.map +1 -1
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts +3 -2
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts.map +1 -1
- package/dist/components/dashboard/SettlementTimeline.d.ts +3 -2
- package/dist/components/dashboard/SettlementTimeline.d.ts.map +1 -1
- package/dist/components/dashboard/StatCard.d.ts +7 -4
- package/dist/components/dashboard/StatCard.d.ts.map +1 -1
- package/dist/components/dashboard/SummaryCard.d.ts +6 -3
- package/dist/components/dashboard/SummaryCard.d.ts.map +1 -1
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts +2 -2
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts.map +1 -1
- package/dist/components/dashboard/TransactionsTable.d.ts +3 -2
- package/dist/components/dashboard/TransactionsTable.d.ts.map +1 -1
- package/dist/components/dashboard/TrendChart.d.ts +3 -2
- package/dist/components/dashboard/TrendChart.d.ts.map +1 -1
- package/dist/components/dashboard/YearlyHeatmap.d.ts +4 -2
- package/dist/components/dashboard/YearlyHeatmap.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanAddCard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanAddColumn.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanColumnHeader.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/KanbanDropIndicator.d.ts.map +1 -1
- package/dist/components/dashboard/kanban/index.d.ts +1 -1
- package/dist/components/dashboard/kanban/types.d.ts +24 -12
- package/dist/components/dashboard/kanban/types.d.ts.map +1 -1
- package/dist/components/scrollbar/scrollbar.d.ts +2 -1
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/context/MotionConfigContext.d.ts +41 -0
- package/dist/context/MotionConfigContext.d.ts.map +1 -0
- package/dist/data.d.mts +55 -23
- package/dist/data.d.ts +45 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.mjs +2 -2
- package/dist/data.mjs.map +1 -1
- package/dist/feedback.d.mts +6 -293
- package/dist/feedback.d.ts +7 -5
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/form.d.mts +99 -114
- package/dist/form.mjs +8 -3
- package/dist/form.mjs.map +1 -1
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useAnimatedEntrance.d.ts +24 -0
- package/dist/hooks/useAnimatedEntrance.d.ts.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +22 -0
- package/dist/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/hooks/useDotEnv.d.ts +12 -0
- package/dist/hooks/useDotEnv.d.ts.map +1 -0
- package/dist/hooks/useDotMap.d.ts +38 -0
- package/dist/hooks/useDotMap.d.ts.map +1 -0
- package/dist/iconsax-extended.mjs +2 -2
- package/dist/iconsax-extended.mjs.map +1 -1
- package/dist/iconsax.mjs +2 -2
- package/dist/iconsax.mjs.map +1 -1
- package/dist/index.d.mts +358 -127
- package/dist/index.d.ts +74 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +15 -15
- package/dist/index.mjs.map +1 -1
- package/dist/interactive/kanban.d.ts +12 -0
- package/dist/interactive/kanban.d.ts.map +1 -0
- package/dist/interactive-kanban.d.mts +378 -0
- package/dist/interactive-kanban.mjs +3 -0
- package/dist/interactive-kanban.mjs.map +1 -0
- package/dist/interactive.d.mts +193 -197
- package/dist/interactive.d.ts +7 -5
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/landing/LandingAbout.d.ts +2 -2
- package/dist/landing/LandingAbout.d.ts.map +1 -1
- package/dist/landing/LandingCTA.d.ts +2 -2
- package/dist/landing/LandingCTA.d.ts.map +1 -1
- package/dist/landing/LandingContact.d.ts +2 -2
- package/dist/landing/LandingContact.d.ts.map +1 -1
- package/dist/landing/LandingExperience.d.ts +1 -1
- package/dist/landing/LandingExperience.d.ts.map +1 -1
- package/dist/landing/LandingFeatures.d.ts +1 -1
- package/dist/landing/LandingFeatures.d.ts.map +1 -1
- package/dist/landing/LandingHero.d.ts +2 -2
- package/dist/landing/LandingHero.d.ts.map +1 -1
- package/dist/landing/LandingLogoCloud.d.ts +2 -2
- package/dist/landing/LandingLogoCloud.d.ts.map +1 -1
- package/dist/landing/LandingMetrics.d.ts +1 -1
- package/dist/landing/LandingMetrics.d.ts.map +1 -1
- package/dist/landing/LandingProjects.d.ts +1 -1
- package/dist/landing/LandingProjects.d.ts.map +1 -1
- package/dist/landing/LandingShowcase.d.ts +2 -2
- package/dist/landing/LandingShowcase.d.ts.map +1 -1
- package/dist/landing/LandingSkills.d.ts +1 -1
- package/dist/landing/LandingSkills.d.ts.map +1 -1
- package/dist/landing/LandingStats.d.ts +1 -1
- package/dist/landing/LandingStats.d.ts.map +1 -1
- package/dist/landing/LandingTestimonials.d.ts +1 -1
- package/dist/landing/LandingTestimonials.d.ts.map +1 -1
- package/dist/landing/types.d.ts +42 -30
- package/dist/landing/types.d.ts.map +1 -1
- package/dist/landing.d.mts +47 -37
- package/dist/landing.mjs +4 -20
- package/dist/landing.mjs.map +1 -1
- package/dist/lib/Slot.d.ts.map +1 -1
- package/dist/lib/icon-providers.d.ts +17 -3
- package/dist/lib/icon-providers.d.ts.map +1 -1
- package/dist/lib/styles/animation.d.ts +35 -0
- package/dist/lib/styles/animation.d.ts.map +1 -0
- package/dist/lib/styles/disabled.d.ts +15 -0
- package/dist/lib/styles/disabled.d.ts.map +1 -0
- package/dist/lib/styles/focus.d.ts +34 -0
- package/dist/lib/styles/focus.d.ts.map +1 -0
- package/dist/lib/styles/glass.d.ts +18 -0
- package/dist/lib/styles/glass.d.ts.map +1 -0
- package/dist/lib/styles/hover.d.ts +9 -0
- package/dist/lib/styles/hover.d.ts.map +1 -0
- package/dist/lib/styles/index.d.ts +6 -0
- package/dist/lib/styles/index.d.ts.map +1 -1
- package/dist/lib/styles/transition.d.ts +42 -0
- package/dist/lib/styles/transition.d.ts.map +1 -0
- package/dist/lib/types/common.d.ts +3 -3
- package/dist/lib/types/common.d.ts.map +1 -1
- package/dist/native/Box.d.ts +11 -0
- package/dist/native/Box.d.ts.map +1 -0
- package/dist/native/Pressable.d.ts +10 -0
- package/dist/native/Pressable.d.ts.map +1 -0
- package/dist/native/Text.d.ts +11 -0
- package/dist/native/Text.d.ts.map +1 -0
- package/dist/native/index.d.ts +9 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/useDotMap.d.ts +51 -0
- package/dist/native/useDotMap.d.ts.map +1 -0
- package/dist/native.mjs +2 -0
- package/dist/native.mjs.map +1 -0
- package/dist/navigation.d.mts +48 -21
- package/dist/navigation.d.ts +10 -8
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.mjs +1 -1
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlay.d.mts +84 -37
- package/dist/overlay.mjs +2 -2
- package/dist/overlay.mjs.map +1 -1
- package/dist/sdui/SDUIRenderer.d.ts.map +1 -1
- package/dist/sdui/core.d.ts +50 -0
- package/dist/sdui/core.d.ts.map +1 -0
- package/dist/sdui/index.d.ts +3 -1
- package/dist/sdui/index.d.ts.map +1 -1
- package/dist/sdui/registry.d.ts.map +1 -1
- package/dist/sdui/types.d.ts +38 -0
- package/dist/sdui/types.d.ts.map +1 -1
- package/dist/sdui.d.mts +89 -1
- package/dist/sdui.mjs +2 -2
- package/dist/sdui.mjs.map +1 -1
- package/package.json +39 -15
- package/src/styles/component-vars.css +503 -69
- package/src/styles/landing.css +12 -12
- package/src/styles/prose.css +284 -0
- package/src/styles/recommended-theme.css +123 -141
- package/src/styles/utilities.css +3 -3
- package/dist/chunk-5DPW7SVD.mjs +0 -4
- package/dist/chunk-5DPW7SVD.mjs.map +0 -1
- package/dist/chunk-5L5HIPKA.mjs +0 -3
- package/dist/chunk-5L5HIPKA.mjs.map +0 -1
- package/dist/chunk-CNW22G24.mjs +0 -13
- package/dist/chunk-CNW22G24.mjs.map +0 -1
- package/dist/chunk-CW66UBQG.mjs +0 -3
- package/dist/chunk-CW66UBQG.mjs.map +0 -1
- package/dist/chunk-EPY3432E.mjs +0 -3
- package/dist/chunk-EPY3432E.mjs.map +0 -1
- package/dist/chunk-F2M4YDDQ.mjs +0 -3
- package/dist/chunk-F2M4YDDQ.mjs.map +0 -1
- package/dist/chunk-FHMFDCX2.mjs +0 -3
- package/dist/chunk-FHMFDCX2.mjs.map +0 -1
- package/dist/chunk-HBIUCLFL.mjs +0 -3
- package/dist/chunk-HBIUCLFL.mjs.map +0 -1
- package/dist/chunk-HEBXAFRY.mjs +0 -3
- package/dist/chunk-HEBXAFRY.mjs.map +0 -1
- package/dist/chunk-IG47LMOD.mjs +0 -3
- package/dist/chunk-IG47LMOD.mjs.map +0 -1
- package/dist/chunk-J47ZEXEL.mjs +0 -3
- package/dist/chunk-J47ZEXEL.mjs.map +0 -1
- package/dist/chunk-K2FOFIST.mjs +0 -3
- package/dist/chunk-K2FOFIST.mjs.map +0 -1
- package/dist/chunk-LL6QPRD7.mjs +0 -3
- package/dist/chunk-LL6QPRD7.mjs.map +0 -1
- package/dist/chunk-NMJLOK6M.mjs +0 -3
- package/dist/chunk-NMJLOK6M.mjs.map +0 -1
- package/dist/chunk-O24K56OS.mjs +0 -3
- package/dist/chunk-O24K56OS.mjs.map +0 -1
- package/dist/chunk-OIWG3IJ7.mjs +0 -3
- package/dist/chunk-OIWG3IJ7.mjs.map +0 -1
- package/dist/chunk-OLLU7ZFH.mjs +0 -3
- package/dist/chunk-OLLU7ZFH.mjs.map +0 -1
- package/dist/chunk-Q76JW7X5.mjs +0 -73
- package/dist/chunk-Q76JW7X5.mjs.map +0 -1
- package/dist/chunk-QRM66RQG.mjs +0 -3
- package/dist/chunk-QRM66RQG.mjs.map +0 -1
- package/dist/chunk-QRRP7TGF.mjs +0 -13
- package/dist/chunk-QRRP7TGF.mjs.map +0 -1
- package/dist/chunk-SD6XGDAC.mjs +0 -3
- package/dist/chunk-SD6XGDAC.mjs.map +0 -1
- package/dist/chunk-SDFVGFXT.mjs +0 -3
- package/dist/chunk-SDFVGFXT.mjs.map +0 -1
- package/dist/chunk-SMLDNOV3.mjs +0 -8
- package/dist/chunk-SMLDNOV3.mjs.map +0 -1
- package/dist/chunk-TAP6MYDW.mjs +0 -3
- package/dist/chunk-TAP6MYDW.mjs.map +0 -1
- package/dist/chunk-TBZ645BI.mjs +0 -3
- package/dist/chunk-TBZ645BI.mjs.map +0 -1
- package/dist/chunk-V2DNYJR6.mjs +0 -3
- package/dist/chunk-V2DNYJR6.mjs.map +0 -1
- package/dist/chunk-VBABZXL7.mjs +0 -3
- package/dist/chunk-VBABZXL7.mjs.map +0 -1
- package/dist/chunk-WYBSHTGY.mjs +0 -3
- package/dist/chunk-WYBSHTGY.mjs.map +0 -1
- package/dist/chunk-ZQUMJQYV.mjs +0 -3
- package/dist/chunk-ZQUMJQYV.mjs.map +0 -1
- package/dist/chunk-ZY23NOT4.mjs +0 -3
- package/dist/chunk-ZY23NOT4.mjs.map +0 -1
- package/dist/components/EmptyState.d.ts +0 -62
- package/dist/components/EmptyState.d.ts.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a,b}from'./chunk-ZVCGC6EV.mjs';import {e,d}from'./chunk-OBMOTQEU.mjs';import E,{useMemo,useState,useCallback,useEffect}from'react';import {jsxs,jsx}from'react/jsx-runtime';function R(d={}){let{throttle:a=100,mobileBreakpoint:s=768,tabletBreakpoint:r=1024}=d,[l,i]=useState({width:typeof window!="undefined"?window.innerWidth:0,height:typeof window!="undefined"?window.innerHeight:0,isMobile:false,isTablet:false,isDesktop:true}),t=useCallback(()=>{let o=window.innerWidth,c=window.innerHeight;i({width:o,height:c,isMobile:o<s,isTablet:o>=s&&o<r,isDesktop:o>=r});},[s,r]);return useEffect(()=>{if(typeof window=="undefined")return;t();let o,c=()=>{clearTimeout(o),o=setTimeout(t,a);};return window.addEventListener("resize",c,{passive:true}),()=>{window.removeEventListener("resize",c),clearTimeout(o);}},[t,a]),l}var I={position:"relative",minHeight:"100vh"},B={position:"fixed",right:"1rem",top:"1rem",zIndex:50,display:"block"},P={position:"fixed",right:"1rem",bottom:"1rem",zIndex:50,display:"block"},y={display:"flex",flexDirection:"column",...e("gap-4")},A={display:"flex",alignItems:"center",justifyContent:"center",...e("p-3"),backgroundColor:"rgba(255,255,255,0.8)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)",border:"1px solid var(--color-border)",borderRadius:"9999px",boxShadow:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",transition:"all 200ms ease-in-out",cursor:"pointer",textDecoration:"none"},T={backgroundColor:"rgba(255,255,255,0.9)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.25)"},z={transform:"scale(0.95)"},O={width:"1.25rem",height:"1.25rem",color:"var(--color-muted-foreground)",transition:"color 200ms ease-in-out"},W={color:"#4f46e5"},H={width:"100%",maxWidth:"80rem",marginLeft:"auto",marginRight:"auto",...e("px-4 py-8")},D={maxWidth:"56rem",marginLeft:"auto",marginRight:"auto"},V={...e("mb-6")},U={...e("mb-8")},j={fontSize:"2.25rem",fontWeight:700,lineHeight:1.2,...e("mb-4")},F={fontSize:"1.125rem",color:"var(--color-muted-foreground)"},G={display:"flex",flexDirection:"column",...e("gap-8")},K={...e("mt-12")},$={display:"flex",alignItems:"center",justifyContent:"space-between",...e("py-4"),borderTop:"1px solid var(--color-border)"},J={display:"flex",alignItems:"center",fontSize:"0.875rem",color:"var(--color-muted-foreground)",transition:"color 200ms ease-in-out",textDecoration:"none"},X={color:"var(--color-foreground)"},C={width:"1rem",height:"1rem"},w=({href:d$1,title:a,arrowUp:s})=>{let[r,l]=useState(false),[i,t]=useState(false),o=useMemo(()=>d(A,r?T:void 0,i?z:void 0),[r,i]),c=useMemo(()=>d(O,r?W:void 0),[r]);return jsx("a",{href:d$1,style:o,title:a,onMouseEnter:()=>l(true),onMouseLeave:()=>{l(false),t(false);},onMouseDown:()=>t(true),onMouseUp:()=>t(false),children:jsx("svg",{style:c,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s?jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"}):jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})},_=({href:d$1,label:a,arrowLeft:s})=>{let[r,l]=useState(false),i=useMemo(()=>d(J,r?X:void 0),[r]);return jsxs("a",{href:d$1,style:i,onMouseEnter:()=>l(true),onMouseLeave:()=>l(false),children:[s&&jsx("svg",{style:{...C,...e("mr-2")},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})}),a,!s&&jsx("svg",{style:{...C,...e("ml-2")},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})},q=E.forwardRef(({dot:d$1,style:a$1,title:s,description:r,children:l,prevPage:i,nextPage:t,breadcrumbItems:o=[{label:"Components",href:"/components"}],...c},L)=>{let{isDesktop:m}=R(),k=useMemo(()=>d(H,e(d$1),a$1),[d$1,a$1]);return jsxs("div",{style:I,children:[m&&jsx("div",{style:B,children:jsx("div",{style:y,children:i&&jsx(w,{href:i.href,title:`\uC774\uC804: ${i.title}`,arrowUp:true})})}),m&&jsx("div",{style:P,children:jsx("div",{style:y,children:t&&jsx(w,{href:t.href,title:`\uB2E4\uC74C: ${t.title}`})})}),jsx("div",{ref:L,style:k,...c,children:jsxs("div",{style:D,children:[jsx(a,{style:V,children:o.map((h,b$1)=>jsx(b,{href:h.href,isCurrent:b$1===o.length-1,children:h.label},b$1))}),jsxs("div",{style:U,children:[jsx("h1",{style:j,children:s}),jsx("p",{style:F,children:r})]}),jsx("div",{style:G,children:l}),jsx("div",{style:K,children:jsxs("div",{style:$,children:[i&&jsx(_,{href:i.href,label:i.title,arrowLeft:true}),t&&jsx(_,{href:t.href,label:t.title})]})})]})})]})});q.displayName="ComponentLayout";export{R as a,q as b};//# sourceMappingURL=chunk-KPNNAQLI.mjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-KPNNAQLI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useWindowSize.ts","../src/components/ComponentLayout.tsx"],"names":["useWindowSize","options","throttle","mobileBreakpoint","tabletBreakpoint","size","setSize","useState","updateSize","useCallback","width","height","useEffect","timeoutId","handleResize","S_OUTER","S_NAV_TOP_LG","S_NAV_BOTTOM","S_FLEX_COL","resolveDot","S_NAV_LINK_BASE","S_NAV_LINK_HOVER","S_NAV_LINK_ACTIVE","S_SVG_BASE","S_SVG_HOVER","S_MAIN","S_INNER","S_BREADCRUMB_MARGIN","S_HEADER","S_H1","S_DESCRIPTION","S_CONTENT","S_MOBILE_NAV","S_MOBILE_NAV_INNER","S_MOBILE_LINK_BASE","S_MOBILE_LINK_HOVER","S_SMALL_SVG","NavButton","href","title","arrowUp","isHovered","setIsHovered","isActive","setIsActive","linkStyle","useMemo","mergeStyles","svgStyle","jsx","MobileNavLink","label","arrowLeft","jsxs","ComponentLayout","React","dotProp","style","description","children","prevPage","nextPage","breadcrumbItems","props","ref","isDesktop","mainStyle","Breadcrumb","item","index","BreadcrumbItem"],"mappings":"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","file":"chunk-KPNNAQLI.mjs","sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\n/**\n * useWindowSize 훅의 반환값 / useWindowSize hook return value\n */\nexport interface UseWindowSizeReturn {\n width: number;\n height: number;\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n}\n\n/**\n * useWindowSize 훅의 옵션 / useWindowSize hook options\n */\nexport interface UseWindowSizeOptions {\n throttle?: number;\n mobileBreakpoint?: number;\n tabletBreakpoint?: number;\n}\n\n/**\n * useWindowSize 훅 / useWindowSize hook\n *\n * 윈도우 크기를 추적하는 훅입니다.\n * 반응형 애니메이션, 조건부 렌더링 등에 사용합니다.\n *\n * Hook that tracks window size.\n * Used for responsive animations, conditional rendering, etc.\n *\n * @example\n * const { width, height, isMobile } = useWindowSize();\n *\n * return (\n * <div style={{ fontSize: isMobile ? \"14px\" : \"16px\" }}>\n * Window: {width} x {height}\n * </div>\n * );\n */\nexport function useWindowSize(options: UseWindowSizeOptions = {}): UseWindowSizeReturn {\n const {\n throttle = 100,\n mobileBreakpoint = 768,\n tabletBreakpoint = 1024,\n } = options;\n\n const [size, setSize] = useState<UseWindowSizeReturn>({\n width: typeof window !== \"undefined\" ? window.innerWidth : 0,\n height: typeof window !== \"undefined\" ? window.innerHeight : 0,\n isMobile: false,\n isTablet: false,\n isDesktop: true,\n });\n\n const updateSize = useCallback(() => {\n const width = window.innerWidth;\n const height = window.innerHeight;\n\n setSize({\n width,\n height,\n isMobile: width < mobileBreakpoint,\n isTablet: width >= mobileBreakpoint && width < tabletBreakpoint,\n isDesktop: width >= tabletBreakpoint,\n });\n }, [mobileBreakpoint, tabletBreakpoint]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n // Initial update\n updateSize();\n\n let timeoutId: NodeJS.Timeout;\n\n const handleResize = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(updateSize, throttle);\n };\n\n window.addEventListener(\"resize\", handleResize, { passive: true });\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n clearTimeout(timeoutId);\n };\n }, [updateSize, throttle]);\n\n return size;\n}\n\nexport default useWindowSize;\n","\"use client\";\n\nimport React, { useState, useMemo } from \"react\";\nimport { mergeStyles, resolveDot } from \"../hooks/useDotMap\";\nimport { useWindowSize } from \"../hooks/useWindowSize\";\nimport { Breadcrumb, BreadcrumbItem } from \"./Breadcrumb\";\n\n/**\n * ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @typedef {Object} ComponentLayoutProps\n * @property {string} title - 페이지 제목 / Page title\n * @property {string} description - 페이지 설명 / Page description\n * @property {React.ReactNode} children - 페이지 내용 / Page content\n * @property {Object} [prevPage] - 이전 페이지 정보 / Previous page information\n * @property {string} prevPage.title - 이전 페이지 제목 / Previous page title\n * @property {string} prevPage.href - 이전 페이지 링크 / Previous page link\n * @property {Object} [nextPage] - 다음 페이지 정보 / Next page information\n * @property {string} nextPage.title - 다음 페이지 제목 / Next page title\n * @property {string} nextPage.href - 다음 페이지 링크 / Next page link\n * @property {Array<Object>} [breadcrumbItems] - Breadcrumb 항목들 / Breadcrumb items\n * @property {string} breadcrumbItems[].label - Breadcrumb 라벨 / Breadcrumb label\n * @property {string} [breadcrumbItems[].href] - Breadcrumb 링크 / Breadcrumb link\n * @property {string} [dot] - dot 유틸리티 스트링 / dot utility string\n * @property {React.CSSProperties} [style] - 인라인 스타일 / Inline styles\n */\nexport interface ComponentLayoutProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"className\"\n> {\n title: string;\n description: string;\n children: React.ReactNode;\n prevPage?: {\n title: string;\n href: string;\n };\n nextPage?: {\n title: string;\n href: string;\n };\n breadcrumbItems?: Array<{\n label: string;\n href?: string;\n }>;\n dot?: string;\n style?: React.CSSProperties;\n}\n\n// ── Static styles (never change) ────────────────────────────\n\nconst S_OUTER: React.CSSProperties = {\n position: \"relative\",\n minHeight: \"100vh\",\n};\n\nconst S_NAV_TOP_LG: React.CSSProperties = {\n position: \"fixed\",\n right: \"1rem\",\n top: \"1rem\",\n zIndex: 50,\n display: \"block\",\n};\n\nconst S_NAV_BOTTOM: React.CSSProperties = {\n position: \"fixed\",\n right: \"1rem\",\n bottom: \"1rem\",\n zIndex: 50,\n display: \"block\",\n};\n\nconst S_FLEX_COL: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n ...resolveDot(\"gap-4\"),\n};\n\nconst S_NAV_LINK_BASE: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...resolveDot(\"p-3\"),\n backgroundColor: \"rgba(255,255,255,0.8)\",\n backdropFilter: \"blur(4px)\",\n WebkitBackdropFilter: \"blur(4px)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: \"9999px\",\n boxShadow: \"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)\",\n transition: \"all 200ms ease-in-out\",\n cursor: \"pointer\",\n textDecoration: \"none\",\n};\n\nconst S_NAV_LINK_HOVER: React.CSSProperties = {\n backgroundColor: \"rgba(255,255,255,0.9)\",\n boxShadow: \"0 25px 50px -12px rgba(0,0,0,0.25)\",\n};\n\nconst S_NAV_LINK_ACTIVE: React.CSSProperties = {\n transform: \"scale(0.95)\",\n};\n\nconst S_SVG_BASE: React.CSSProperties = {\n width: \"1.25rem\",\n height: \"1.25rem\",\n color: \"var(--color-muted-foreground)\",\n transition: \"color 200ms ease-in-out\",\n};\n\nconst S_SVG_HOVER: React.CSSProperties = {\n color: \"#4f46e5\",\n};\n\nconst S_MAIN: React.CSSProperties = {\n width: \"100%\",\n maxWidth: \"80rem\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n ...resolveDot(\"px-4 py-8\"),\n};\n\nconst S_INNER: React.CSSProperties = {\n maxWidth: \"56rem\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n};\n\nconst S_BREADCRUMB_MARGIN: React.CSSProperties = {\n ...resolveDot(\"mb-6\"),\n};\n\nconst S_HEADER: React.CSSProperties = {\n ...resolveDot(\"mb-8\"),\n};\n\nconst S_H1: React.CSSProperties = {\n fontSize: \"2.25rem\",\n fontWeight: 700,\n lineHeight: 1.2,\n ...resolveDot(\"mb-4\"),\n};\n\nconst S_DESCRIPTION: React.CSSProperties = {\n fontSize: \"1.125rem\",\n color: \"var(--color-muted-foreground)\",\n};\n\nconst S_CONTENT: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n ...resolveDot(\"gap-8\"),\n};\n\nconst S_MOBILE_NAV: React.CSSProperties = {\n ...resolveDot(\"mt-12\"),\n};\n\nconst S_MOBILE_NAV_INNER: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n ...resolveDot(\"py-4\"),\n borderTop: \"1px solid var(--color-border)\",\n};\n\nconst S_MOBILE_LINK_BASE: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"0.875rem\",\n color: \"var(--color-muted-foreground)\",\n transition: \"color 200ms ease-in-out\",\n textDecoration: \"none\",\n};\n\nconst S_MOBILE_LINK_HOVER: React.CSSProperties = {\n color: \"var(--color-foreground)\",\n};\n\nconst S_SMALL_SVG: React.CSSProperties = {\n width: \"1rem\",\n height: \"1rem\",\n};\n\n// ── NavButton sub-component ─────────────────────────────────\n\ninterface NavButtonProps {\n href: string;\n title: string;\n arrowUp?: boolean;\n}\n\nconst NavButton: React.FC<NavButtonProps> = ({ href, title, arrowUp }) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n const linkStyle = useMemo(\n () =>\n mergeStyles(\n S_NAV_LINK_BASE,\n isHovered ? S_NAV_LINK_HOVER : undefined,\n isActive ? S_NAV_LINK_ACTIVE : undefined,\n ),\n [isHovered, isActive],\n );\n\n const svgStyle = useMemo(\n () => mergeStyles(S_SVG_BASE, isHovered ? S_SVG_HOVER : undefined),\n [isHovered],\n );\n\n return (\n <a\n href={href}\n style={linkStyle}\n title={title}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsActive(false);\n }}\n onMouseDown={() => setIsActive(true)}\n onMouseUp={() => setIsActive(false)}\n >\n <svg\n style={svgStyle}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n {arrowUp ? (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 15l7-7 7 7\"\n />\n ) : (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n )}\n </svg>\n </a>\n );\n};\n\n// ── MobileNavLink sub-component ─────────────────────────────\n\ninterface MobileNavLinkProps {\n href: string;\n label: string;\n arrowLeft?: boolean;\n}\n\nconst MobileNavLink: React.FC<MobileNavLinkProps> = ({\n href,\n label,\n arrowLeft,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const linkStyle = useMemo(\n () =>\n mergeStyles(\n S_MOBILE_LINK_BASE,\n isHovered ? S_MOBILE_LINK_HOVER : undefined,\n ),\n [isHovered],\n );\n\n return (\n <a\n href={href}\n style={linkStyle}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {arrowLeft && (\n <svg\n style={{ ...S_SMALL_SVG, ...resolveDot(\"mr-2\") }}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n )}\n {label}\n {!arrowLeft && (\n <svg\n style={{ ...S_SMALL_SVG, ...resolveDot(\"ml-2\") }}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n )}\n </a>\n );\n};\n\n// ── ComponentLayout ─────────────────────────────────────────\n\n/**\n * ComponentLayout 컴포넌트 / ComponentLayout component\n *\n * 컴포넌트 문서 페이지 레이아웃을 제공하는 컴포넌트입니다.\n * 제목, 설명, Breadcrumb, 이전/다음 페이지 네비게이션을 포함합니다.\n *\n * Component that provides layout for component documentation pages.\n * Includes title, description, Breadcrumb, and previous/next page navigation.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <ComponentLayout\n * title=\"Button 컴포넌트\"\n * description=\"버튼 컴포넌트 사용법\"\n * >\n * <Button>예제</Button>\n * </ComponentLayout>\n *\n * @example\n * // 이전/다음 페이지 네비게이션 포함 / With previous/next page navigation\n * <ComponentLayout\n * title=\"Input 컴포넌트\"\n * description=\"입력 컴포넌트 사용법\"\n * prevPage={{ title: \"Button\", href: \"/components/button\" }}\n * nextPage={{ title: \"Select\", href: \"/components/select\" }}\n * >\n * <Input placeholder=\"입력하세요\" />\n * </ComponentLayout>\n *\n * @param {ComponentLayoutProps} props - ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} ComponentLayout 컴포넌트 / ComponentLayout component\n */\nconst ComponentLayout = React.forwardRef<HTMLDivElement, ComponentLayoutProps>(\n (\n {\n dot: dotProp,\n style,\n title,\n description,\n children,\n prevPage,\n nextPage,\n breadcrumbItems = [{ label: \"Components\", href: \"/components\" }],\n ...props\n },\n ref,\n ) => {\n const { isDesktop } = useWindowSize();\n\n const mainStyle = useMemo(\n () => mergeStyles(S_MAIN, resolveDot(dotProp), style),\n [dotProp, style],\n );\n\n return (\n <div style={S_OUTER}>\n {/* 고정된 페이지 네비게이션 - 위쪽 (desktop only) */}\n {isDesktop && (\n <div style={S_NAV_TOP_LG}>\n <div style={S_FLEX_COL}>\n {prevPage && (\n <NavButton\n href={prevPage.href}\n title={`이전: ${prevPage.title}`}\n arrowUp\n />\n )}\n </div>\n </div>\n )}\n\n {/* 고정된 페이지 네비게이션 - 아래쪽 (desktop only) */}\n {isDesktop && (\n <div style={S_NAV_BOTTOM}>\n <div style={S_FLEX_COL}>\n {nextPage && (\n <NavButton\n href={nextPage.href}\n title={`다음: ${nextPage.title}`}\n />\n )}\n </div>\n </div>\n )}\n\n {/* 메인 콘텐츠 */}\n <div ref={ref} style={mainStyle} {...props}>\n <div style={S_INNER}>\n {/* 브레드크럼 */}\n <Breadcrumb style={S_BREADCRUMB_MARGIN}>\n {breadcrumbItems.map((item, index) => (\n <BreadcrumbItem\n key={index}\n href={item.href}\n isCurrent={index === breadcrumbItems.length - 1}\n >\n {item.label}\n </BreadcrumbItem>\n ))}\n </Breadcrumb>\n\n {/* 페이지 헤더 */}\n <div style={S_HEADER}>\n <h1 style={S_H1}>{title}</h1>\n <p style={S_DESCRIPTION}>{description}</p>\n </div>\n\n {/* 페이지 콘텐츠 */}\n <div style={S_CONTENT}>{children}</div>\n\n {/* 모바일 페이지 네비게이션 */}\n <div style={S_MOBILE_NAV}>\n <div style={S_MOBILE_NAV_INNER}>\n {prevPage && (\n <MobileNavLink\n href={prevPage.href}\n label={prevPage.title}\n arrowLeft\n />\n )}\n {nextPage && (\n <MobileNavLink href={nextPage.href} label={nextPage.title} />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n },\n);\nComponentLayout.displayName = \"ComponentLayout\";\n\nexport { ComponentLayout };\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a}from'./chunk-YW5DA7Q6.mjs';import {c}from'./chunk-UR3TIWBS.mjs';import {d as d$1}from'./chunk-7T3IUG3G.mjs';import {m}from'./chunk-NSDWT2JM.mjs';import {e,d}from'./chunk-OBMOTQEU.mjs';import G,{useState,useRef,useCallback,useEffect,useMemo,createContext,useContext}from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var j=G.forwardRef(({children:t,dot:e$1,style:o,type:i="fade",duration:s=500,easing:a="smooth",delay:c=0,autoStart:f=true,onStart:y,onComplete:p,showProgress:g=false,progressDot:u,progressStyle:w},b)=>{let v=e$1?e(e$1):void 0,[r,P]=useState(false),[d$1,R]=useState(0),[m,x]=useState(false),l=useRef(null),h=useRef(null),C=k=>({linear:S=>S,"ease-in":S=>S*S,"ease-out":S=>1-Math.pow(1-S,2),"ease-in-out":S=>S<.5?2*S*S:1-Math.pow(-2*S+2,2)/2,bounce:S=>S<.36363636363636365?7.5625*S*S:S<.7272727272727273?7.5625*(S-=.5454545454545454)*S+.75:S<.9090909090909091?7.5625*(S-=.8181818181818182)*S+.9375:7.5625*(S-=.9545454545454546)*S+.984375,elastic:S=>Math.pow(2,-10*S)*Math.sin((S-.075)*(2*Math.PI)/.3)+1,smooth:S=>S*S*(3-2*S)})[k],T=useCallback(k=>{h.current||(h.current=k);let H=k-h.current,S=C(a),B=Math.min(H/s,1);B=S(B),R(B),P(B>.1),B<1?l.current=requestAnimationFrame(V=>T(V)):(x(false),R(1),p==null||p());},[s,a,p]),M=useCallback(()=>{x(true),R(0),y==null||y(),h.current=null,l.current=requestAnimationFrame(T);},[T,y]);useEffect(()=>{if(f){let k=setTimeout(()=>{M();},c);return ()=>clearTimeout(k)}},[f,c,M]),useEffect(()=>()=>{l.current&&cancelAnimationFrame(l.current);},[]);let F=(()=>{switch(i){case "fade":return {opacity:r?1:0,transform:"none"};case "slide":return {opacity:r?1:0,transform:`translateX(${(1-d$1)*100}%)`};case "slide-up":return {opacity:r?1:0,transform:`translateY(${(1-d$1)*100}%)`};case "slide-down":return {opacity:r?1:0,transform:`translateY(-${(1-d$1)*100}%)`};case "slide-left":return {opacity:r?1:0,transform:`translateX(-${(1-d$1)*100}%)`};case "slide-right":return {opacity:r?1:0,transform:`translateX(${(1-d$1)*100}%)`};case "scale":return {opacity:r?1:0,transform:`scale(${.8+d$1*.2})`};case "flip":return {opacity:r?1:0,transform:`perspective(1000px) rotateY(${(1-d$1)*90}deg)`};case "morph":return {opacity:r?1:0,transform:`scale(${.9+d$1*.1}) rotate(${(1-d$1)*5}deg)`};case "cube":return {opacity:r?1:0,transform:`perspective(1000px) rotateX(${(1-d$1)*90}deg) rotateY(${(1-d$1)*45}deg)`};case "zoom":return {opacity:r?1:0,transform:`scale(${.5+d$1*.5})`};default:return {opacity:r?1:0,transform:"none"}}})();return jsxs("div",{style:{position:"relative"},children:[g&&jsxs("div",{style:d({position:"fixed",...e("top-4"),...e("right-4"),zIndex:50,backgroundColor:"var(--color-background)",...e("rounded-lg"),...e("px-3 py-2"),boxShadow:"0 10px 15px -3px rgba(0,0,0,0.1)",border:"1px solid var(--color-border)"},e(u),w),children:[jsxs("div",{style:{fontSize:"0.875rem",fontWeight:500,color:"var(--color-foreground)"},children:["Progress: ",Math.round(d$1*100),"%"]}),jsx("div",{style:{width:"6rem",height:"0.5rem",backgroundColor:"var(--color-muted)",borderRadius:"9999px",...e("mt-2")},children:jsx("div",{style:{height:"100%",backgroundColor:"var(--color-primary)",borderRadius:"9999px",transition:"width 100ms",width:`${d$1*100}%`}})})]}),jsx("div",{ref:b,style:d({...F,transition:"all 500ms ease-out",transitionDuration:`${s}ms`,transitionTimingFunction:a==="smooth"?"cubic-bezier(0.4, 0, 0.2, 1)":a==="bounce"?"cubic-bezier(0.68, -0.55, 0.265, 1.55)":a==="elastic"?"cubic-bezier(0.175, 0.885, 0.32, 1.275)":a},v,o),children:t})]})});j.displayName="AdvancedPageTransition";var Ot=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"fade",...t})),qt=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"slide",...t})),_t=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"scale",...t})),Ut=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"flip",...t})),Yt=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"morph",...t})),Xt=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"cube",...t})),Wt=G.forwardRef((t,e)=>jsx(j,{ref:e,type:"zoom",...t}));Ot.displayName="FadePageTransition";qt.displayName="SlidePageTransition";_t.displayName="ScalePageTransition";Ut.displayName="FlipPageTransition";Yt.displayName="MorphPageTransition";Xt.displayName="CubePageTransition";Wt.displayName="ZoomPageTransition";var Kt=(t={})=>{let[e,o]=useState({isTransitioning:false,isVisible:false,currentStep:0,progress:0}),i=useRef(null),s=useRef(null),a=useRef({type:"fade",duration:500,easing:"smooth",delay:0,stagger:0,direction:"forward",...t}),c=useCallback(b=>({linear:r=>r,"ease-in":r=>r*r,"ease-out":r=>1-Math.pow(1-r,2),"ease-in-out":r=>r<.5?2*r*r:1-Math.pow(-2*r+2,2)/2,bounce:r=>r<.36363636363636365?7.5625*r*r:r<.7272727272727273?7.5625*(r-=.5454545454545454)*r+.75:r<.9090909090909091?7.5625*(r-=.8181818181818182)*r+.9375:7.5625*(r-=.9545454545454546)*r+.984375,elastic:r=>Math.pow(2,-10*r)*Math.sin((r-.075)*(2*Math.PI)/.3)+1,smooth:r=>r*r*(3-2*r)})[b],[]),f=useCallback(b=>{var R;s.current||(s.current=b);let v=b-s.current,r=a.current,P=c(r.easing),d=Math.min(v/r.duration,1);d=P(d),o(m=>({...m,progress:d,isVisible:r.direction==="forward"?d>.1:d<.9,currentStep:Math.floor(d*10)})),d<1?i.current=requestAnimationFrame(f):(o(m=>({...m,isTransitioning:false,progress:r.direction==="forward"?1:0})),(R=r.onComplete)==null||R.call(r));},[c]),y=useCallback(async b=>new Promise(v=>{var P;b&&(a.current={...a.current,...b});let r=a.current;r.onComplete=()=>v(),o(d=>({...d,isTransitioning:true,progress:r.direction==="forward"?0:1})),s.current=null,(P=r.onStart)==null||P.call(r),r.delay?setTimeout(()=>{i.current=requestAnimationFrame(f);},r.delay):i.current=requestAnimationFrame(f);}),[f]),p=useCallback(async()=>new Promise(b=>{let v=a.current;v.direction="backward",v.onComplete=()=>b(),y();}),[y]),g=useCallback(()=>{i.current&&cancelAnimationFrame(i.current);},[]),u=useCallback(()=>{e.isTransitioning&&(i.current=requestAnimationFrame(f));},[e.isTransitioning,f]),w=useCallback(()=>{i.current&&cancelAnimationFrame(i.current),o({isTransitioning:false,isVisible:false,currentStep:0,progress:0});},[]);return useEffect(()=>()=>{i.current&&cancelAnimationFrame(i.current);},[]),[e,{start:y,reverse:p,pause:g,resume:u,reset:w}]};var Qt=(t={})=>{let{defaultType:e="fade",defaultDuration:o=500,defaultEasing:i="smooth",enableHistory:s=true,enableProgress:a=true,enableDebug:c=false}=t,[f,y]=useState({isTransitioning:false,currentTransition:null,transitionHistory:[],totalTransitions:0,averageDuration:0}),p=useRef(new Map),g=useRef(0),u=useCallback((m,x)=>{c&&console.log(`[PageTransitionManager] ${m}`,x);},[c]),w=useCallback(m=>{y(x=>{let l=s?[...x.transitionHistory,m]:x.transitionHistory,h=l.length,C=l.reduce((T,M)=>T+M.duration,0)/h;return {...x,totalTransitions:h,averageDuration:C,transitionHistory:l}});},[s]),b=useCallback(async m=>{let x=`transition_${++g.current}`,l={type:e,duration:o,easing:i,...m},h={id:x,type:l.type,duration:l.duration,easing:l.easing,timestamp:Date.now(),status:"pending"};u("Starting transition",{id:x,config:l}),y(T=>({...T,isTransitioning:true,currentTransition:h}));let C=setTimeout(()=>{var M;let T={...h,status:"completed"};y(I=>({...I,isTransitioning:false,currentTransition:null})),w(T),p.current.delete(x),u("Transition completed",{id:x}),(M=l.onComplete)==null||M.call(l);},l.duration);return p.current.set(x,{timer:C,config:l}),setTimeout(()=>{y(T=>({...T,currentTransition:{...T.currentTransition,status:"active"}}));},50),x},[e,o,i,u,w]),v=useCallback(m=>{let x=p.current.get(m);x&&(clearTimeout(x.timer),p.current.delete(m),y(l=>{var h;return {...l,isTransitioning:p.current.size>0,currentTransition:((h=l.currentTransition)==null?void 0:h.id)===m?null:l.currentTransition}}),u("Transition cancelled",{id:m}));},[u]),r=useCallback(()=>{p.current.forEach(({timer:m},x)=>{clearTimeout(m),u("Transition paused",{id:x});});},[u]),P=useCallback(()=>{p.current.forEach(({config:m},x)=>{b(m);});},[b]),d=useCallback(()=>{y(m=>({...m,transitionHistory:[],totalTransitions:0,averageDuration:0})),u("History cleared");},[u]),R=useCallback(()=>{let{transitionHistory:m}=f,x=m.reduce((h,C)=>(h[C.type]=(h[C.type]||0)+1,h),{}),l=m.reduce((h,C)=>(h[C.status]=(h[C.status]||0)+1,h),{});return {total:m.length,average:f.averageDuration,byType:x,byStatus:l}},[f]);return useEffect(()=>{let m=p.current;return ()=>{m.forEach(({timer:x})=>{clearTimeout(x);}),m.clear();}},[]),[f,{startTransition:b,cancelTransition:v,pauseAll:r,resumeAll:P,clearHistory:d,getTransitionStats:R}]};var le=new Set,Pe=false,De=0;function rr(){le.forEach(t=>t());}function we(){cancelAnimationFrame(De),De=requestAnimationFrame(rr);}function or(t){return le.add(t),!Pe&&le.size>0&&(window.addEventListener("scroll",we,{passive:true}),window.addEventListener("resize",we,{passive:true}),Pe=true),()=>{le.delete(t),Pe&&le.size===0&&(window.removeEventListener("scroll",we),window.removeEventListener("resize",we),cancelAnimationFrame(De),Pe=false);}}var Et=G.forwardRef(({children:t,dot:e$1,speed:o=.5,direction:i="up",offset:s=0,disabled:a=false,scale:c=false,opacity:f=false,rotate:y=false,rotateDirection:p="cw",disableOnMobile:g=false,style:u,...w},b)=>{let v=useRef(null),r=useRef(true),P=useRef(false),d$2=d$1();useEffect(()=>{if(!g)return;let l=window.matchMedia("(max-width: 767px)");P.current=l.matches;let h=C=>{P.current=C.matches,C.matches&&v.current&&(v.current.style.transform="",v.current.style.opacity="");};return l.addEventListener("change",h),()=>l.removeEventListener("change",h)},[g]);let R=useCallback(()=>{if(a||d$2||g&&P.current||!r.current)return;let l=v.current;if(!l)return;let h=l.getBoundingClientRect(),C=window.innerHeight,T=h.top+h.height/2,I=(C/2-T)/C,F=I*o*100+s,k=0,H=0;switch(i){case "up":H=-F;break;case "down":H=F;break;case "left":k=-F;break;case "right":k=F;break}let S=c?1+Math.abs(I)*.1:1,B=f?Math.max(.3,1-Math.abs(I)*.5):1,V=y?I*10*(p==="cw"?1:-1):0;l.style.transform=`translate3d(${k}px, ${H}px, 0) scale(${S}) rotate(${V}deg)`,f&&(l.style.opacity=String(B));},[a,d$2,o,i,s,c,f,y,p,g]);useEffect(()=>{if(a||d$2)return;let l=v.current;if(!l)return;let h=new IntersectionObserver(([C])=>{r.current=C.isIntersecting;},{rootMargin:"100px"});return h.observe(l),()=>h.disconnect()},[a,d$2]),useEffect(()=>{if(!(a||d$2))return R(),or(R)},[R,a,d$2]);let x=d({transition:"none"},!a&&!d$2?{willChange:"transform, opacity"}:void 0,e(e$1),u);return jsx("div",{ref:nr(b,v),style:x,...w,children:t})});Et.displayName="Parallax";function nr(...t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o&&typeof o=="object"&&(o.current=e);});}}var Pt=G.forwardRef(({text:t,dot:e$1,revealColor:o="currentColor",hiddenColor:i="rgba(128, 128, 128, 0.3)",threshold:s=.5,byWord:a=false,byChar:c=false,style:f,...y},p)=>{let g=useRef(null),[u,w]=useState(0),b=d$1(),v=useCallback(()=>{if(!g.current)return;let d=g.current.getBoundingClientRect(),R=window.innerHeight,m=R*(1-s),x=R*s,l=d.top+d.height/2,h=0;l<=m&&l>=x?h=(m-l)/(m-x):l<x&&(h=1),w(Math.max(0,Math.min(1,h)));},[s]);useEffect(()=>{if(b){w(1);return}v();let d=()=>{requestAnimationFrame(v);};return window.addEventListener("scroll",d,{passive:true}),window.addEventListener("resize",d,{passive:true}),()=>{window.removeEventListener("scroll",d),window.removeEventListener("resize",d);}},[v,b]);let r=useMemo(()=>d({fontWeight:500},e(e$1),f),[e$1,f]),P=()=>{if(c){let d=t.split("");return d.map((R,m)=>{let x=u*d.length,l=m<x;return jsx("span",{style:{color:l?o:i,transition:"color 0.1s ease-out"},children:R},m)})}if(a){let d=t.split(" ");return d.map((R,m)=>{let x=u*d.length,l=m<x;return jsxs("span",{children:[jsx("span",{style:{color:l?o:i,transition:"color 0.15s ease-out"},children:R}),m<d.length-1&&" "]},m)})}return jsx("span",{style:{background:`linear-gradient(90deg, ${o} ${u*100}%, ${i} ${u*100}%)`,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",transition:"background 0.1s ease-out"},children:t})};return jsx("div",{ref:gr(p,g),style:r,...y,children:P()})});Pt.displayName="TextReveal";function gr(...t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o&&typeof o=="object"&&(o.current=e);});}}var St=G.forwardRef(({children:t,dot:e$1,maxTilt:o=15,perspective:i=1e3,scale:s=1.02,speed:a=400,glare:c$1=true,maxGlare:f=.3,reset:y=true,style:p,...g},u)=>{let w=useRef(null),[b,v]=useState({rotateX:0,rotateY:0,scale:1}),[r,P]=useState({x:50,y:50}),[d$2,R]=useState(false),m=d$1(),{enableAnimations:x}=c(),l=m||!x,h=useCallback(k=>{if(l||!w.current)return;let H=w.current.getBoundingClientRect(),S=H.left+H.width/2,B=H.top+H.height/2,V=k.clientX-S,he=k.clientY-B,oe=V/(H.width/2)*o,Z=-(he/(H.height/2))*o;v({rotateX:Z,rotateY:oe,scale:s});let xe=(k.clientX-H.left)/H.width*100,q=(k.clientY-H.top)/H.height*100;P({x:xe,y:q});},[o,s,l]),C=()=>{R(true);},T=()=>{R(false),y&&v({rotateX:0,rotateY:0,scale:1});},M=useMemo(()=>d({position:"relative",perspective:`${i}px`},e(e$1),p),[i,e$1,p]),I={position:"relative",transform:`rotateX(${b.rotateX}deg) rotateY(${b.rotateY}deg) scale(${b.scale})`,transition:d$2?"none":`transform ${a}ms ease-out`,transformStyle:"preserve-3d"},F={position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",background:`linear-gradient(
|
|
3
|
+
${Math.atan2(r.y-50,r.x-50)*(180/Math.PI)+90}deg,
|
|
4
|
+
rgba(255, 255, 255, ${d$2?f:0}) 0%,
|
|
5
|
+
transparent 80%
|
|
6
|
+
)`,transition:d$2?"opacity 0.1s ease-out":`opacity ${a}ms ease-out`,pointerEvents:"none",opacity:d$2?1:0};return jsx("div",{ref:vr(u,w),style:M,onMouseMove:h,onMouseEnter:C,onMouseLeave:T,...g,children:jsxs("div",{style:I,children:[t,c$1&&jsx("div",{style:F,"aria-hidden":"true"})]})})});St.displayName="TiltCard";function vr(...t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o&&typeof o=="object"&&(o.current=e);});}}var wr={cover:{objectFit:"cover"},contain:{objectFit:"contain"},fill:{objectFit:"fill"}},Ne={position:"absolute",top:0,left:0,right:0,bottom:0,width:"100%",height:"100%",pointerEvents:"none"},Sr={transform:"scale(1.2)"},Ct=G.forwardRef(({src:t,type:e$1="native",poster:o,autoPlay:i=true,loop:s=true,muted:a=true,controls:c=false,objectFit:f="cover",overlay:y=true,overlayColor:p="rgba(0, 0, 0, 0.4)",gradient:g=false,gradientDirection:u="bottom",playbackRate:w=1,fadeIn:b=true,children:v,dot:r,style:P,...d$1},R)=>{let m=useRef(null),[x,l]=useState(false),[h,C]=useState(false);useEffect(()=>{e$1==="native"&&m.current&&(m.current.playbackRate=w);},[w,e$1]);let T=()=>{l(true);},M=()=>{C(true);},I=B=>{let V=new URLSearchParams({autoplay:i?"1":"0",mute:a?"1":"0",loop:s?"1":"0",controls:c?"1":"0",playlist:B,modestbranding:"1",rel:"0",showinfo:"0",iv_load_policy:"3",disablekb:"1",enablejsapi:"1",playsinline:"1"});return `https://www.youtube.com/embed/${B}?${V.toString()}`},F=B=>{let V=new URLSearchParams({autoplay:i?"1":"0",muted:a?"1":"0",loop:s?"1":"0",controls:c?"1":"0",background:"1",quality:"auto",dnt:"1"});return `https://player.vimeo.com/video/${B}?${V.toString()}`},k=()=>{let B={opacity:x||!b?1:0,transition:b?"opacity 0.8s ease-out":void 0};switch(e$1){case "youtube":return jsx("iframe",{src:I(t),style:d(Ne,Sr,B),allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:true,onLoad:()=>l(true),title:"YouTube video background"});case "vimeo":return jsx("iframe",{src:F(t),style:d(Ne,B),allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:true,onLoad:()=>l(true),title:"Vimeo video background"});default:return jsx("video",{ref:m,src:t,poster:o,autoPlay:i,loop:s,muted:a,controls:c,playsInline:true,style:d(Ne,wr[f],{opacity:h||!b?1:0,transition:b?"opacity 0.8s ease-out":void 0}),onLoadedData:T,onPlaying:M})}},H=()=>{if(!g)return null;let B=[];return (u==="top"||u==="both")&&B.push(jsx("div",{style:{position:"absolute",top:0,left:0,right:0,height:"33.333%",background:`linear-gradient(to bottom, ${p}, transparent)`},"aria-hidden":"true"},"top")),(u==="bottom"||u==="both")&&B.push(jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:"33.333%",background:`linear-gradient(to top, ${p}, transparent)`},"aria-hidden":"true"},"bottom")),jsx(Fragment,{children:B})},S=useMemo(()=>d({overflow:"hidden",position:"relative"},e(r),P),[r,P]);return jsxs("div",{ref:R,style:S,...d$1,children:[o&&b&&!x&&!h&&jsx("div",{style:{position:"absolute",inset:0,backgroundImage:`url(${o})`,backgroundSize:"cover",backgroundPosition:"center"},"aria-hidden":"true"}),k(),y&&!g&&jsx("div",{style:{position:"absolute",inset:0,backgroundColor:p},"aria-hidden":"true"}),H(),v&&jsx("div",{style:{position:"relative",zIndex:10,height:"100%"},children:v})]})});Ct.displayName="VideoBackground";var Mt=G.forwardRef(({src:t,alt:e$1,direction:o="left",threshold:i=.3,height:s="400px",overlayColor:a,dot:c,style:f,...y},p)=>{let g=useRef(null),[u,w]=useState(0),b=d$1(),v=useCallback(()=>{if(!g.current)return;let m=g.current.getBoundingClientRect(),x=window.innerHeight,l=x*(1-i),h=x*i,C=m.top+m.height/2,T=0;C<=l&&C>=h?T=(l-C)/(l-h):C<h&&(T=1),w(Math.max(0,Math.min(1,T)));},[i]);useEffect(()=>{if(b){w(1);return}v();let m=()=>requestAnimationFrame(v);return window.addEventListener("scroll",m,{passive:true}),window.addEventListener("resize",m,{passive:true}),()=>{window.removeEventListener("scroll",m),window.removeEventListener("resize",m);}},[v,b]);let r=Ar(o,u),P=useMemo(()=>d({position:"relative",overflow:"hidden",height:s},e(c),f),[s,c,f]),d$2=useMemo(()=>({position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover",clipPath:r,transition:"clip-path 0.1s ease-out"}),[r]),R=useMemo(()=>({position:"absolute",inset:0,pointerEvents:"none",background:a,opacity:1-u,transition:"opacity 0.3s ease-out"}),[a,u]);return jsxs("div",{ref:$r(p,g),style:P,...y,children:[jsx("img",{src:t,alt:e$1,style:d$2}),a&&jsx("div",{style:R,"aria-hidden":"true"})]})});Mt.displayName="ImageReveal";function Ar(t,e){switch(t){case "left":return `inset(0 ${100-e*100}% 0 0)`;case "right":return `inset(0 0 0 ${100-e*100}%)`;case "up":return `inset(0 0 ${100-e*100}% 0)`;case "down":return `inset(${100-e*100}% 0 0 0)`;default:return `inset(0 ${100-e*100}% 0 0)`}}function $r(...t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o&&typeof o=="object"&&(o.current=e);});}}var At=G.forwardRef(({children:t,heightMultiplier:e$1=1,snap:o=false,onProgress:i,dot:s,style:a,...c},f)=>{let y=useRef(null),p=useRef(null),[g,u]=useState(0),[w,b]=useState(0);useEffect(()=>{if(!p.current)return;let l=()=>{p.current&&u(p.current.scrollWidth-window.innerWidth);};l();let h=new ResizeObserver(l);return h.observe(p.current),()=>h.disconnect()},[t]);let v=useCallback(()=>{if(!y.current||g<=0)return;let l=y.current.getBoundingClientRect(),h=y.current.offsetHeight-window.innerHeight,C=-l.top,T=Math.max(0,Math.min(1,C/h));b(T),i==null||i(T);},[g,i]);useEffect(()=>(window.addEventListener("scroll",v,{passive:true}),()=>window.removeEventListener("scroll",v)),[v]);let P=`${G.Children.count(t)*e$1*100}vh`,d$1=useMemo(()=>d({position:"relative",height:P},e(s),a),[P,s,a]),R={position:"sticky",top:0,height:"100vh",overflow:"hidden"},m={display:"flex",height:"100%",willChange:"transform",transform:`translateX(${-w*g}px)`,...o?{scrollSnapType:"x mandatory"}:{}},x={flexShrink:0,width:"100vw",height:"100%",...o?{scrollSnapAlign:"start"}:{}};return jsx("div",{ref:zr(f,y),style:d$1,...c,children:jsx("div",{style:R,children:jsx("div",{ref:p,style:m,children:G.Children.map(t,(l,h)=>jsx("div",{style:x,children:l},h))})})})});At.displayName="HorizontalScroll";function zr(...t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o&&typeof o=="object"&&(o.current=e);});}}function qe(t){return t.toLowerCase().replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"").trim()}function Nr(t){return !t||t.length===0||t.length>200?false:/^[a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]+$/.test(t)}function _e(t){return t.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]/g,"").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}var qr={pageTitle:"\uC0C8 \uAE00 \uC791\uC131",editTitle:"\uAE00 \uC218\uC815",preview:"\uBBF8\uB9AC\uBCF4\uAE30",editMode:"\uD3B8\uC9D1",basicInfo:"\uAE30\uBCF8 \uC815\uBCF4",slug:"\uC2AC\uB7EC\uADF8",slugPrefix:"/blog/",tags:"\uD0DC\uADF8",tagsPlaceholder:"\uAC1C\uBC1C, \uC77C\uC0C1, \uC5C5\uB370\uC774\uD2B8",coverImage:"\uCEE4\uBC84 \uC774\uBBF8\uC9C0 URL",coverImagePlaceholder:"https://example.com/image.jpg",publishDate:"\uBC1C\uD589 \uC608\uC57D\uC77C\uC2DC",publishDateHint:"\uBE44\uC6CC\uB450\uBA74 \uC989\uC2DC \uBC1C\uD589\uB428",expiresAt:"\uB9CC\uB8CC \uC77C\uC2DC",expiresAtHint:"\uBE44\uC6CC\uB450\uBA74 \uB9CC\uB8CC\uB418\uC9C0 \uC54A\uC74C",titleLabel:"\uC81C\uBAA9",titlePlaceholder:"\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694",excerpt:"\uC694\uC57D",excerptPlaceholder:"\uCE74\uB4DC\uC5D0 \uD45C\uC2DC\uB420 \uC9E7\uC740 \uC694\uC57D",contentLabel:"\uBCF8\uBB38",contentPlaceholder:"\uB9C8\uD06C\uB2E4\uC6B4\uC73C\uB85C \uC791\uC131\uD558\uC138\uC694...",cancel:"\uCDE8\uC18C",saveDraft:"\uC784\uC2DC\uC800\uC7A5",publish:"\uBC1C\uD589",update:"\uC218\uC815 \uC644\uB8CC",saving:"\uC800\uC7A5 \uC911...",translateHint:"AI \uBC88\uC5ED \uAE30\uB2A5",translateButton:"AI \uBC88\uC5ED",translating:"\uBC88\uC5ED \uC911...",translateSuccess:"\uBC88\uC5ED \uC644\uB8CC!",requiredFields:"\uD544\uC218 \uD544\uB4DC\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694",saveError:"\uC800\uC7A5 \uC911 \uC624\uB958 \uBC1C\uC0DD",translateError:"\uBC88\uC5ED \uC911 \uC624\uB958 \uBC1C\uC0DD",noTitle:"\uC81C\uBAA9 \uC5C6\uC74C",bold:"\uAD75\uAC8C",italic:"\uAE30\uC6B8\uC784",strikethrough:"\uCDE8\uC18C\uC120",heading:"\uC81C\uBAA9",link:"\uB9C1\uD06C",image:"\uC774\uBBF8\uC9C0",code:"\uCF54\uB4DC",codeBlock:"\uCF54\uB4DC\uBE14\uB85D",quote:"\uC778\uC6A9\uBB38",list:"\uBAA9\uB85D",orderedList:"\uC21C\uC11C \uBAA9\uB85D",horizontalRule:"\uC218\uD3C9\uC120"},_r={enableSlug:true,enableTags:true,enableCoverImage:true,enablePublishDate:true,enableExcerpt:true,enableTranslation:true,enablePreview:true,enableMarkdownToolbar:true,enableAutoSave:true,enableExpiresAt:false},Ur=[{key:"ko",label:"\uD55C\uAD6D\uC5B4",isPrimary:true,flag:"\u{1F1F0}\u{1F1F7}"},{key:"en",label:"English",flag:"\u{1F1FA}\u{1F1F8}"},{key:"ja",label:"\u65E5\u672C\u8A9E",flag:"\u{1F1EF}\u{1F1F5}"}];function Ye(t){let e={};return t.forEach(o=>{e[o.key]="";}),e}function Yr(t,e){var o,i,s,a,c,f,y,p;return {slug:(o=e==null?void 0:e.slug)!=null?o:"",title:(i=e==null?void 0:e.title)!=null?i:Ye(t),excerpt:(s=e==null?void 0:e.excerpt)!=null?s:Ye(t),content:(a=e==null?void 0:e.content)!=null?a:Ye(t),tags:(c=e==null?void 0:e.tags)!=null?c:[],coverImage:(f=e==null?void 0:e.coverImage)!=null?f:"",publishedAt:(y=e==null?void 0:e.publishedAt)!=null?y:null,expiresAt:(p=e==null?void 0:e.expiresAt)!=null?p:null}}var Ft=createContext(null);function D(){let t=useContext(Ft);if(!t)throw new Error("useBlogEditor must be used within a BlogEditorProvider");return t}function Xe({children:t,initialData:e,isEditMode:o=false,languages:i=Ur,defaultLanguage:s,labels:a,callbacks:c,features:f,variant:y="default",autoSaveKey:p,autoSaveInterval:g=3e3}){var ct,dt,ut,gt;let u=(gt=(ut=(ct=i.find(A=>A.isPrimary))==null?void 0:ct.key)!=null?ut:(dt=i[0])==null?void 0:dt.key)!=null?gt:"ko",w=s!=null?s:u,b=useMemo(()=>({...qr,...a}),[a]),v=useMemo(()=>({..._r,...f}),[f]),[r,P]=useState(()=>Yr(i,e)),[d,R]=useState(w),[m,x]=useState(false),[l,h]=useState(false),[C,T]=useState(false),[M,I]=useState(false),[F,k]=useState(null),[H,S]=useState(false),[B,V]=useState(o||!!(e!=null&&e.slug)),[he,oe]=useState("idle"),Z=useRef(null),xe=useRef(true),q=p||(o?null:"blog-editor-draft");useEffect(()=>{if(!(!v.enableAutoSave||!q||o))try{let A=localStorage.getItem(q);if(A){let O=JSON.parse(A);P(O);}}catch{}},[]),useEffect(()=>{if(!(!v.enableAutoSave||!q)){if(xe.current){xe.current=false;return}return Z.current&&clearTimeout(Z.current),oe("saving"),Z.current=setTimeout(()=>{try{localStorage.setItem(q,JSON.stringify(r)),oe("saved"),setTimeout(()=>oe("idle"),2e3);}catch{oe("idle");}},g),()=>{Z.current&&clearTimeout(Z.current);}}},[r,v.enableAutoSave,q,g]);let tt=useCallback(()=>{if(q)try{localStorage.removeItem(q);}catch{}},[q]),rt=useCallback((A,O)=>{P(Q=>({...Q,[A]:O}));},[]),ot=useCallback((A,O,Q)=>{P(ee=>({...ee,[A]:{...ee[A],[O]:Q}}));},[]),nt=useCallback(A=>qe(A),[]),at=useCallback(async A=>{let O=r.title[u],Q=r.content[u];if(!O||!Q){k(b.requiredFields);return}if(v.enableSlug&&!r.slug){k(b.requiredFields);return}h(true),k(null);try{await c.onSave(r,A),tt();}catch{k(b.saveError);}finally{h(false);}},[r,u,b,v,c,tt]),it=useCallback(async()=>{if(!c.onTranslate)return;let A=r.title[u],O=r.content[u],Q=r.excerpt[u];if(!A||!O){k(b.requiredFields);return}T(true),k(null),S(false);try{let ee=await c.onTranslate({sourceLanguage:u,title:A,content:O,excerpt:Q||void 0});P(Ee=>{let pt={...Ee.title},mt={...Ee.content},ft={...Ee.excerpt};return Object.keys(ee).forEach(se=>{if(se!==u){let Le=ee[se];if(typeof Le=="object"&&Le!==null){let ne=Le;ne.title&&(pt[se]=ne.title),ne.content&&(mt[se]=ne.content),ne.excerpt&&(ft[se]=ne.excerpt);}}}),{...Ee,title:pt,content:mt,excerpt:ft}}),S(!0),setTimeout(()=>S(!1),3e3);}catch{k(b.translateError);}finally{T(false);}},[r,u,b,c]),st=useCallback(async A=>{if(!c.onUploadImage)return null;I(true),k(null);try{return await c.onUploadImage(A)}catch{return k("\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uC2E4\uD328"),null}finally{I(false);}},[c]),lt=useCallback(()=>{var A;(A=c.onCancel)==null||A.call(c);},[c]),Vt=useMemo(()=>({formData:r,activeLanguage:d,showPreview:m,submitting:l,translating:C,uploading:M,error:F,translateSuccess:H,autoSaveStatus:he,languages:i,features:v,labels:b,variant:y,isEditMode:o,setActiveLanguage:R,setShowPreview:x,updateField:rt,updateMultilingualField:ot,handleSave:at,handleTranslate:it,handleUploadImage:st,handleCancel:lt,setError:k,generateSlug:nt,slugManuallyEdited:B,setSlugManuallyEdited:V}),[r,d,m,l,C,M,F,H,he,i,v,b,y,o,rt,ot,at,it,st,lt,nt,B,V]);return jsx(Ft.Provider,{value:Vt,children:t})}var ce=G.forwardRef(({onBack:t,backLink:e$1,dot:o,style:i},s)=>{let{labels:a,isEditMode:c,formData:f}=D();return jsx("header",{ref:s,style:d(e("flex items-center justify-between mb-8"),e(o),i),children:jsxs("div",{style:e("flex items-center gap-4"),children:[e$1||t&&jsx("button",{type:"button",onClick:t,style:e("p-2 text-muted-foreground transition-colors"),"aria-label":"\uB4A4\uB85C\uAC00\uAE30",children:jsx(m,{name:"chevronLeft",size:24})}),jsxs("div",{children:[jsx("h1",{style:e("text-2xl font-bold text-foreground"),children:c?a.editTitle:a.pageTitle}),c&&f.slug&&jsxs("p",{style:e("text-sm text-muted-foreground"),children:[a.slugPrefix,f.slug]})]})]})})});ce.displayName="BlogEditorHeader";var de=G.forwardRef(({dot:t,style:e$1},o)=>{var h,C;let{formData:i,updateField:s,features:a,labels:c,variant:f,handleUploadImage:y,uploading:p,setSlugManuallyEdited:g}=D(),[u,w]=useState(""),b=useRef(null),v=f==="glass"?{background:"rgba(255,255,255,0.1)",backdropFilter:"blur(4px)",border:"1px solid rgba(255,255,255,0.2)"}:f==="minimal"?{background:"transparent"}:{},r=d(e("rounded-xl p-6 space-y-4"),f!=="glass"&&f!=="minimal"?e("bg-background"):void 0,v,e(t),e$1),P=e("w-full px-3 py-2 border border-border rounded-lg bg-background text-foreground focus:ring-1 focus:ring-ring focus:border-transparent transition-colors"),d$1=e("block text-sm font-medium text-foreground mb-1"),R=useCallback(T=>{let M=T.trim();M&&!i.tags.includes(M)&&s("tags",[...i.tags,M]),w("");},[i.tags,s]),m$1=useCallback(T=>{s("tags",i.tags.filter(M=>M!==T));},[i.tags,s]),x=useCallback(T=>{let M=T.target.value;if(M.includes(",")){let I=M.split(",");I.forEach((F,k)=>{k<I.length-1?R(F):w(F);});}else w(M);},[R]),l=useCallback(T=>{T.key==="Enter"?(T.preventDefault(),R(u)):T.key==="Backspace"&&!u&&i.tags.length>0&&m$1(i.tags[i.tags.length-1]);},[u,i.tags,R,m$1]);return jsxs("div",{ref:o,style:r,children:[jsx("h2",{style:e("font-semibold text-foreground"),children:c.basicInfo}),jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(1, minmax(0, 1fr))",...e("gap-4")},children:[a.enableSlug&&jsxs("div",{children:[jsxs("label",{style:d$1,children:[c.slug," *"]}),jsxs("div",{style:e("flex items-center"),children:[jsx("span",{style:e("text-muted-foreground mr-1 text-sm"),children:c.slugPrefix}),jsx("input",{type:"text",value:i.slug,onChange:T=>{s("slug",_e(T.target.value)),g(true);},style:d(P,{flex:1}),placeholder:"my-post-slug"})]})]}),a.enableTags&&jsxs("div",{children:[jsx("label",{style:d$1,children:c.tags}),jsxs("div",{style:d(e("flex flex-wrap items-center gap-2 min-h-[42px] px-3 py-2 border border-border rounded-lg bg-background transition-colors")),children:[i.tags.map(T=>jsxs("span",{style:e("inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary text-sm rounded-md"),children:[T,jsx("button",{type:"button",onClick:()=>m$1(T),style:e("transition-colors"),"aria-label":`${T} \uD0DC\uADF8 \uC0AD\uC81C`,children:jsx(m,{name:"x",size:14})})]},T)),jsx("input",{type:"text",value:u,onChange:x,onKeyDown:l,style:d(e("bg-transparent text-foreground text-sm"),{flex:1,minWidth:"100px",outline:"none"}),placeholder:i.tags.length===0?c.tagsPlaceholder:"\uD0DC\uADF8 \uCD94\uAC00..."})]}),jsx("p",{style:e("mt-1 text-xs text-muted-foreground"),children:"\uC27C\uD45C(,) \uB610\uB294 Enter\uB85C \uD0DC\uADF8 \uCD94\uAC00"})]})]}),a.enableCoverImage&&jsxs("div",{children:[jsx("label",{style:d$1,children:c.coverImage}),jsxs("div",{style:e("space-y-3"),children:[i.coverImage&&jsxs("div",{style:{position:"relative",width:"100%",...e("h-40"),...e("rounded-lg"),overflow:"hidden",background:"var(--muted)"},children:[jsx("img",{src:i.coverImage,alt:"\uCEE4\uBC84 \uC774\uBBF8\uC9C0 \uBBF8\uB9AC\uBCF4\uAE30",style:{width:"100%",height:"100%",objectFit:"cover"}}),jsx("button",{type:"button",onClick:()=>s("coverImage",""),style:d(e("p-1.5 text-white rounded-full transition-colors"),{position:"absolute",...e("top-2 right-2"),background:"rgb(239,68,68)"}),"aria-label":"\uC774\uBBF8\uC9C0 \uC0AD\uC81C",children:jsx(m,{name:"x",size:14})})]}),jsxs("div",{style:e("flex gap-2"),children:[jsx("input",{type:"text",value:i.coverImage,onChange:T=>s("coverImage",T.target.value),style:d(P,{flex:1}),placeholder:c.coverImagePlaceholder}),jsx("input",{ref:b,type:"file",accept:"image/*",style:{display:"none"},onChange:async T=>{var I;let M=(I=T.target.files)==null?void 0:I[0];if(M){let F=await y(M);F&&s("coverImage",F);}T.target.value="";}}),jsx("button",{type:"button",onClick:()=>{var T;return (T=b.current)==null?void 0:T.click()},disabled:p,style:e("px-3 py-2 border border-border rounded-lg hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors"),title:"\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC",children:p?jsx(m,{name:"loader",size:20,spin:true}):jsx(m,{name:"upload",size:20})})]})]})]}),jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(1, minmax(0, 1fr))",...e("gap-4")},children:[a.enablePublishDate&&jsxs("div",{children:[jsx("label",{style:d$1,children:c.publishDate}),jsx("input",{type:"datetime-local",value:(h=i.publishedAt)!=null?h:"",onChange:T=>s("publishedAt",T.target.value||null),style:P}),jsx("p",{style:e("mt-1 text-sm text-muted-foreground"),children:c.publishDateHint})]}),a.enableExpiresAt&&jsxs("div",{children:[jsx("label",{style:d$1,children:c.expiresAt}),jsx("input",{type:"datetime-local",value:(C=i.expiresAt)!=null?C:"",onChange:T=>s("expiresAt",T.target.value||null),style:P}),jsx("p",{style:e("mt-1 text-sm text-muted-foreground"),children:c.expiresAtHint})]})]})]})});de.displayName="BlogEditorMetadata";var ue=G.forwardRef(({dot:t,style:e$1},o)=>{let{languages:i,activeLanguage:s,setActiveLanguage:a,showPreview:c,setShowPreview:f,features:y,labels:p}=D();return jsxs("div",{ref:o,style:d(e("flex items-center border-b border-border bg-background"),{position:"sticky",top:0,zIndex:10},e(t),e$1),role:"tablist","aria-label":"\uC5B8\uC5B4 \uC120\uD0DD",children:[jsx("div",{style:e("flex flex-1"),children:i.map(g=>{let u=s===g.key;return jsxs("button",{type:"button",role:"tab","aria-selected":u,"aria-controls":`tabpanel-${g.key}`,id:`tab-${g.key}`,onClick:()=>a(g.key),style:d(e("flex-1 px-4 py-3 text-sm font-medium transition-colors"),u?e("bg-primary/10 text-primary border-b-2 border-primary"):e("text-muted-foreground hover:bg-muted")),children:[g.flag&&jsx("span",{style:{marginRight:"0.375rem"},children:g.flag}),g.label,g.isPrimary&&" *"]},g.key)})}),y.enablePreview&&jsxs("button",{type:"button",onClick:()=>f(!c),style:e("inline-flex items-center gap-1.5 px-3 py-2 mx-2 text-sm border border-border rounded-lg hover:bg-muted transition-colors shrink-0"),children:[jsx(m,{name:c?"pencil":"eye",size:14}),c?p.editMode:p.preview]})]})});ue.displayName="BlogEditorLanguageTabs";var me=G.forwardRef(({dot:t,style:e$1,textareaRef:o},i)=>{var x;let{formData:s,activeLanguage:a,updateMultilingualField:c,updateField:f,features:y,labels:p,languages:g,generateSlug:u,isEditMode:w,slugManuallyEdited:b}=D(),v=((x=g.find(l=>l.isPrimary))==null?void 0:x.key)===a,r=g.find(l=>l.key===a),P=e("w-full px-3 py-2 border border-border rounded-lg bg-background text-foreground focus:ring-1 focus:ring-ring focus:border-transparent transition-colors"),d$1=e("block text-sm font-medium text-foreground mb-1"),R=l=>{c("title",a,l),a==="en"&&!w&&!b&&f("slug",u(l));},m=l=>v?`${l} *`:`${l} (${(r==null?void 0:r.label)||a})`;return jsxs("div",{ref:i,style:d(e("p-6 space-y-4"),e(t),e$1),children:[jsxs("div",{children:[jsx("label",{style:d$1,children:m(p.titleLabel)}),jsx("input",{type:"text",value:s.title[a]||"",onChange:l=>R(l.target.value),style:P,placeholder:p.titlePlaceholder})]}),y.enableExcerpt&&jsxs("div",{children:[jsx("label",{style:d$1,children:m(p.excerpt)}),jsx("textarea",{value:s.excerpt[a]||"",onChange:l=>c("excerpt",a,l.target.value),rows:2,style:d(P,{resize:"none"}),placeholder:p.excerptPlaceholder})]}),jsxs("div",{children:[jsxs("label",{style:d$1,children:[m(p.contentLabel)," (\uB9C8\uD06C\uB2E4\uC6B4)"]}),jsx("textarea",{ref:o,value:s.content[a]||"",onChange:l=>c("content",a,l.target.value),rows:15,style:d(P,{fontFamily:"monospace",fontSize:"0.875rem",resize:"vertical",minHeight:"300px"}),placeholder:p.contentPlaceholder})]})]})});me.displayName="BlogEditorContent";function Qr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ke(t){if(!t)return "";let e=t;return e=e.replace(/```(\w*)\n?([\s\S]*?)```/g,(o,i,s)=>`<pre class="bg-gray-100 dark:bg-gray-800 rounded-lg p-4 overflow-x-auto my-4"><code class="text-sm">${Qr(s.trim())}</code></pre>`),e=e.replace(/`([^`]+)`/g,'<code class="bg-gray-100 dark:bg-gray-700 px-1.5 py-0.5 rounded text-sm">$1</code>'),e=e.replace(/^######\s+(.+)$/gm,'<h6 class="text-base font-semibold mt-4 mb-2">$1</h6>'),e=e.replace(/^#####\s+(.+)$/gm,'<h5 class="text-lg font-semibold mt-4 mb-2">$1</h5>'),e=e.replace(/^####\s+(.+)$/gm,'<h4 class="text-xl font-semibold mt-5 mb-2">$1</h4>'),e=e.replace(/^###\s+(.+)$/gm,'<h3 class="text-2xl font-semibold mt-5 mb-3">$1</h3>'),e=e.replace(/^##\s+(.+)$/gm,'<h2 class="text-2xl font-bold mt-6 mb-3">$1</h2>'),e=e.replace(/^#\s+(.+)$/gm,'<h1 class="text-3xl font-bold mt-6 mb-4">$1</h1>'),e=e.replace(/^---+$/gm,'<hr class="my-6 border-gray-300 dark:border-gray-600" />'),e=e.replace(/^>\s+(.+)$/gm,'<blockquote class="border-l-4 border-gray-300 dark:border-gray-600 pl-4 my-4 italic text-gray-600 dark:text-gray-400">$1</blockquote>'),e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),e=e.replace(/\*(.+?)\*/g,"<em>$1</em>"),e=e.replace(/~~(.+?)~~/g,'<del class="text-gray-500">$1</del>'),e=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-cyan-600 hover:text-cyan-700 dark:text-cyan-400 dark:hover:text-cyan-300 underline" target="_blank" rel="noopener noreferrer">$1</a>'),e=e.replace(/^[-*]\s+(.+)$/gm,'<li class="ml-4">$1</li>'),e=e.replace(/(<li[^>]*>.*<\/li>\n?)+/g,o=>`<ul class="list-disc list-inside my-4 space-y-1">${o}</ul>`),e=e.replace(/\n(?!<)/g,`<br />
|
|
7
|
+
`),e=e.replace(/(<br \/>[\n\s]*){3,}/g,`<br /><br />
|
|
8
|
+
`),e}function Dt(t){return t?t.replace(/```[\s\S]*?```/g,"").replace(/`[^`]+`/g,"").replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/~~(.+?)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/^[-*]\s+/gm,"").replace(/^>\s+/gm,"").replace(/^---+$/gm,"").replace(/\n{3,}/g,`
|
|
9
|
+
|
|
10
|
+
`).trim():""}function eo(t,e=150){let o=Dt(t);return o.length<=e?o:o.slice(0,e).trim()+"..."}function Je(t,e,o,i,s){let a=t.slice(e,o),c=t.slice(0,e),f=t.slice(o),y=c+i+a+s+f,p=e+i.length+a.length+s.length;return {text:y,cursorPosition:p}}var oo=[{icon:"bold",label:"bold",markdown:{before:"**",after:"**"},shortcut:"Ctrl+B"},{icon:"italic",label:"italic",markdown:{before:"*",after:"*"},shortcut:"Ctrl+I"},{icon:"strikethrough",label:"strikethrough",markdown:{before:"~~",after:"~~"}},{icon:"heading",label:"heading",markdown:{before:"## ",after:""}},{icon:"link",label:"link",markdown:{before:"[",after:"](url)"},shortcut:"Ctrl+K"},{icon:"image",label:"image",markdown:{before:""}},{icon:"code",label:"code",markdown:{before:"`",after:"`"}},{icon:"fileCode",label:"codeBlock",markdown:{before:"```\n",after:"\n```"}},{icon:"quote",label:"quote",markdown:{before:"> ",after:""}},{icon:"list",label:"list",markdown:{before:"- ",after:""}},{icon:"listOrdered",label:"orderedList",markdown:{before:"1. ",after:""}},{icon:"minus",label:"horizontalRule",markdown:{before:`
|
|
11
|
+
---
|
|
12
|
+
`,after:""}}],fe=G.forwardRef(({textareaRef:t,dot:e$1,style:o},i)=>{let{labels:s,activeLanguage:a,updateMultilingualField:c,formData:f,features:y}=D(),p=useCallback(g=>{let u=t.current;if(!u)return;let{selectionStart:w,selectionEnd:b}=u,v=f.content[a]||"",{text:r,cursorPosition:P}=Je(v,w,b,g.markdown.before,g.markdown.after);c("content",a,r),requestAnimationFrame(()=>{u.focus(),u.setSelectionRange(P,P);});},[t,f,a,c]);return y.enableMarkdownToolbar?jsx("div",{ref:i,style:d(e("flex flex-wrap gap-1 px-4 py-2 border-b border-border bg-muted"),e(e$1),o),role:"toolbar","aria-label":"\uB9C8\uD06C\uB2E4\uC6B4 \uC11C\uC2DD",children:oo.map(g=>jsx("button",{type:"button",onClick:()=>p(g),style:e("p-2 text-muted-foreground transition-colors rounded"),title:`${s[g.label]||g.label}${g.shortcut?` (${g.shortcut})`:""}`,"aria-label":s[g.label]||g.label,children:jsx(m,{name:g.icon,size:16})},g.icon))}):null});fe.displayName="BlogEditorToolbar";var be=G.forwardRef(({renderMarkdown:t,dot:e$1,style:o},i)=>{var w,b;let{formData:s,activeLanguage:a$1,languages:c,labels:f}=D(),y=((w=c.find(v=>v.isPrimary))==null?void 0:w.key)||((b=c[0])==null?void 0:b.key),p=s.title[a$1]||s.title[y]||f.noTitle,g=s.content[a$1]||s.content[y]||"",u=G.useMemo(()=>t?t(g):jsx("div",{dangerouslySetInnerHTML:{__html:Ke(g)}}),[g,t]);return jsxs("div",{ref:i,style:d(e("p-6"),e(e$1),o),children:[jsx("h3",{style:e("text-xl font-bold text-foreground mb-4"),children:p}),jsx(a,{style:{maxWidth:"none"},children:u})]})});be.displayName="BlogEditorPreview";var ye=G.forwardRef(({cancelLink:t,dot:e$1,style:o},i)=>{let{labels:s,submitting:a,handleSave:c,handleCancel:f,isEditMode:y,autoSaveStatus:p,features:g}=D();return jsxs("div",{ref:i,style:d(e("flex items-center justify-end gap-3"),e(e$1),o),children:[g.enableAutoSave&&p!=="idle"&&jsxs("span",{style:e("text-sm text-muted-foreground flex items-center gap-1"),children:[p==="saving"&&jsxs(Fragment,{children:[jsx(m,{name:"loader",size:14,spin:true}),"\uC800\uC7A5 \uC911..."]}),p==="saved"&&jsxs(Fragment,{children:[jsx(m,{name:"check",size:14}),"\uC790\uB3D9\uC800\uC7A5\uB428"]})]}),t||jsx("button",{type:"button",onClick:f,style:e("px-4 py-2 text-foreground transition-colors"),children:s.cancel}),jsx("button",{type:"button",onClick:()=>c(false),disabled:a,style:e("px-4 py-2 border border-border rounded-lg hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors"),children:s.saveDraft}),jsx("button",{type:"button",onClick:()=>c(true),disabled:a,style:e("px-6 py-2 bg-primary text-white rounded-lg hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center gap-2 transition-colors"),children:a?jsxs(Fragment,{children:[jsx(m,{name:"loader",size:16,spin:true}),s.saving]}):jsxs(Fragment,{children:[jsx(m,{name:"check",size:16}),y?s.update:s.publish]})})]})});ye.displayName="BlogEditorActions";var Te=G.forwardRef(({hint:t,dot:e$1,style:o},i)=>{var r,P;let{labels:s,translating:a,translateSuccess:c,handleTranslate:f,formData:y,languages:p,features:g}=D();if(!g.enableTranslation)return null;let u=((r=p.find(d=>d.isPrimary))==null?void 0:r.key)||((P=p[0])==null?void 0:P.key),w=y.title[u]||"",b=y.content[u]||"",v=w&&b;return jsxs("div",{ref:i,style:d(e("px-6 py-3 bg-muted border-b border-border flex items-center justify-between"),e(e$1),o),children:[jsxs("div",{style:e("flex items-center gap-2 text-sm text-muted-foreground"),children:[jsx(m,{name:"sparkles",size:16}),jsx("span",{children:t||s.translateHint})]}),jsx("button",{type:"button",onClick:f,disabled:a||!v,style:d(e("inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg transition-colors"),c?e("bg-green-100 text-green-700"):e("bg-primary text-white disabled:opacity-50 disabled:cursor-not-allowed")),children:a?jsxs(Fragment,{children:[jsx(m,{name:"loader",size:16,spin:true}),s.translating]}):c?jsxs(Fragment,{children:[jsx(m,{name:"check",size:16}),s.translateSuccess]}):jsxs(Fragment,{children:[jsx(m,{name:"sparkles",size:16}),s.translateButton]})})]})});Te.displayName="BlogEditorTranslate";function co({onBack:t,backLink:e$1,cancelLink:o,renderMarkdown:i,translateHint:s,maxWidth:a="max-w-4xl",dot:c,style:f,children:y}){let{showPreview:p,error:g,variant:u,features:w}=D(),b=useRef(null),r=d(u==="glass"?u==="glass"?{background:"linear-gradient(to bottom right, rgb(243,244,246), rgb(229,231,235))"}:{}:u==="minimal"?{}:e("bg-muted"),e(c),f),P=u==="glass"?{background:"rgba(255,255,255,0.1)",backdropFilter:"blur(4px)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"0.75rem",overflow:"hidden"}:u==="minimal"?d(e("rounded-xl overflow-hidden bg-transparent border border-border")):d(e("rounded-xl overflow-hidden bg-background")),d$1=d(e("mx-auto px-4 py-8"),a?e(a):void 0);return y?jsx("div",{style:r,children:jsx("div",{style:d$1,children:y})}):jsx("div",{style:r,children:jsxs("div",{style:d$1,children:[jsx(ce,{onBack:t,backLink:e$1}),g&&jsx("div",{style:d(e("mb-6 p-4 border rounded-lg"),{background:"rgb(254,242,242)",borderColor:"rgb(254,202,202)",color:"rgb(220,38,38)"}),children:g}),jsxs("div",{style:e("space-y-6"),children:[jsx(de,{}),jsxs("div",{style:P,children:[w.enableTranslation&&jsx(Te,{hint:s}),jsx(ue,{}),p?jsx(be,{renderMarkdown:i}):jsxs(Fragment,{children:[w.enableMarkdownToolbar&&jsx(fe,{textareaRef:b}),jsx(me,{textareaRef:b})]})]}),jsx(ye,{cancelLink:o})]})]})})}var Nt=G.forwardRef(({initialData:t,isEditMode:e,languages:o,defaultLanguage:i,labels:s,callbacks:a,features:c,variant:f,onBack:y,backLink:p,cancelLink:g,renderMarkdown:u,translateHint:w,maxWidth:b,dot:v,style:r,children:P,autoSaveKey:d,autoSaveInterval:R},m)=>jsx(Xe,{initialData:t,isEditMode:e,languages:o,defaultLanguage:i,labels:s,callbacks:a,features:c,variant:f,autoSaveKey:d,autoSaveInterval:R,children:jsx("div",{ref:m,children:jsx(co,{onBack:y,backLink:p,cancelLink:g,renderMarkdown:u,translateHint:w,maxWidth:b,dot:v,style:r,children:P})})}));Nt.displayName="BlogEditor";var X=Nt;X.Header=ce;X.Metadata=de;X.LanguageTabs=ue;X.Content=me;X.Toolbar=fe;X.Preview=be;X.Actions=ye;X.Translate=Te;export{Dt as A,eo as B,Je as C,fe as D,be as E,ye as F,Te as G,X as H,j as a,Ot as b,qt as c,_t as d,Ut as e,Yt as f,Xt as g,Wt as h,Kt as i,Qt as j,Et as k,Pt as l,St as m,Ct as n,Mt as o,At as p,qe as q,Nr as r,_e as s,D as t,Xe as u,ce as v,de as w,ue as x,me as y,Ke as z};//# sourceMappingURL=chunk-L2LGSILS.mjs.map
|
|
13
|
+
//# sourceMappingURL=chunk-L2LGSILS.mjs.map
|