@gomeniucivan/ui 1.0.33 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +4055 -0
- package/dist/index.d.ts +4055 -1
- package/dist/index.js +5671 -9
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +5672 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +156 -79
- package/dist/index.cjs +0 -10
- package/dist/style.css +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/A/index.tsx","../src/ConfigProvider/index.tsx","../src/MotionProvider/index.tsx","../src/utils/genCdnUrl.ts","../src/Accordion/Accordion.tsx","../src/Accordion/context.tsx","../src/Accordion/style.ts","../src/Accordion/AccordionItem.tsx","../src/Block/Block.tsx","../src/Flex/FlexBasic.tsx","../src/Flex/utils.ts","../src/Flex/Center.tsx","../src/Block/style.ts","../src/color/colors/blue.ts","../src/color/colors/cyan.ts","../src/color/colors/geekblue.ts","../src/color/colors/gold.ts","../src/color/colors/gray.ts","../src/color/colors/green.ts","../src/color/colors/lime.ts","../src/color/colors/magenta.ts","../src/color/colors/orange.ts","../src/color/colors/primary.ts","../src/color/colors/purple.ts","../src/color/colors/red.ts","../src/color/colors/volcano.ts","../src/color/colors/yellow.ts","../src/color/colors/index.ts","../src/color/neutrals/mauve.ts","../src/color/neutrals/olive.ts","../src/color/neutrals/sage.ts","../src/color/neutrals/sand.ts","../src/color/neutrals/slate.ts","../src/color/neutrals/index.ts","../src/styles/customTheme.ts","../src/styles/theme/customStylish.ts","../src/styles/theme/customStylishStatic.ts","../src/styles/theme/customToken.ts","../src/styles/theme/generateColorPalette.ts","../src/Text/Text.tsx","../src/Tooltip/Tooltip.tsx","../src/Tooltip/TooltipInGroup.tsx","../src/hooks/useNativeButton.ts","../src/Tooltip/groupContext.ts","../src/Tooltip/useMergedTooltipProps.ts","../src/Tooltip/TooltipStandalone.tsx","../src/hooks/useFloatingLayer.tsx","../src/hooks/useIsClient.ts","../src/utils/placement.ts","../src/Tooltip/ArrowIcon.tsx","../src/Tooltip/TooltipContent.tsx","../src/Hotkey/const.ts","../src/Hotkey/Hotkey.tsx","../src/Icon/components/IconProvider.tsx","../src/Icon/Icon.tsx","../src/Icon/components/utils.ts","../src/Icon/style.ts","../src/icons/lucideExtra/LeftClickIcon.tsx","../src/icons/lucideExtra/LeftDoubleClickIcon.tsx","../src/icons/lucideExtra/RightClickIcon.tsx","../src/icons/lucideExtra/RightDoubleClickIcon.tsx","../src/Hotkey/style.ts","../src/Hotkey/utils.ts","../src/Tooltip/TooltipPortal.tsx","../src/ThemeProvider/constants.ts","../src/ThemeProvider/Meta.tsx","../src/ThemeProvider/ThemeProvider.tsx","../src/FontLoader/index.tsx","../src/styles/theme/token/dark.ts","../src/styles/theme/algorithms/darkAlgorithm.ts","../src/styles/theme/token/light.ts","../src/styles/theme/algorithms/lightAlgorithm.ts","../src/styles/theme/token/base.ts","../src/styles/theme/antdTheme.ts","../src/ThemeProvider/ConfigProvider.tsx","../src/ThemeProvider/GlobalStyle/index.ts","../src/ThemeProvider/GlobalStyle/antdOverride.ts","../src/utils/safeReadableColor.ts","../src/ThemeProvider/GlobalStyle/global.ts","../src/styles/classNames.ts","../src/Tooltip/style.ts","../src/Tooltip/TooltipGroup.tsx","../src/utils/destroyOnInvalidActiveTriggerElement.ts","../src/hooks/useTextOverflow.ts","../src/Text/styles.ts","../src/utils/dom.ts","../src/Accordion/ArrowIcon.tsx","../src/ActionIcon/ActionIcon.tsx","../src/ActionIcon/components/utils.ts","../src/ActionIcon/style.ts","../src/ActionIconGroup/ActionIconGroup.tsx","../src/DropdownMenu/atoms.tsx","../src/Menu/sharedStyle.ts","../src/hooks/usePortalContainer.ts","../src/DropdownMenu/DropdownMenu.tsx","../src/utils/parseTrigger.ts","../src/DropdownMenu/renderItems.tsx","../src/Menu/Menu.tsx","../src/Menu/utils.tsx","../src/Menu/style.ts","../src/Menu/renderUtils.tsx","../src/ActionIconGroup/style.ts","../src/Alert/Alert.tsx","../src/Alert/style.ts","../src/AutoComplete/Select.tsx","../src/AutoComplete/style.ts","../src/Avatar/Avatar.tsx","../src/FluentEmoji/FluentEmoji.tsx","../src/Img/index.tsx","../src/FluentEmoji/style.ts","../src/FluentEmoji/utils.ts","../src/Avatar/style.ts","../src/Avatar/utils.ts","../src/Avatar/AvatarGroup/index.tsx","../src/Avatar/AvatarGroup/style.ts","../src/Avatar/index.ts","../src/Burger/Burger.tsx","../src/Burger/style.ts","../src/Button/Button.tsx","../src/Button/style.ts","../src/Checkbox/Checkbox.tsx","../src/Checkbox/style.ts","../src/Checkbox/CheckboxGroup.tsx","../src/Checkbox/index.ts","../src/CodeDiff/CodeDiff.tsx","../src/MaterialFileTypeIcon/MaterialFileTypeIcon.tsx","../src/FileTypeIcon/FileTypeIcon.tsx","../src/FileTypeIcon/components/FileIcon.tsx","../src/FileTypeIcon/style.ts","../src/FileTypeIcon/components/FolderIcon.tsx","../src/MaterialFileTypeIcon/icon-map.json","../src/MaterialFileTypeIcon/utils.ts","../src/CodeDiff/style.ts","../src/CodeDiff/PatchDiff.tsx","../src/CodeEditor/CodeEditor.tsx","../src/CodeEditor/style.ts","../src/Highlighter/SyntaxHighlighter/index.tsx","../src/Highlighter/SyntaxHighlighter/StaticRenderer.tsx","../src/hooks/useHighlight.ts","../src/Highlighter/const.ts","../src/Highlighter/theme/lobe-theme.ts","../src/Highlighter/SyntaxHighlighter/StreamRenderer.tsx","../src/hooks/useStreamHighlight.ts","../src/Highlighter/SyntaxHighlighter/style.ts","../src/Collapse/Collapse.tsx","../src/Collapse/style.ts","../src/ColorSwatches/ColorSwatches.tsx","../src/ColorSwatches/style.ts","../src/ContextMenu/ContextMenuHost.tsx","../src/utils/devSingleton.ts","../src/ContextMenu/renderItems.tsx","../src/i18n/resources/en/common.ts","../src/i18n/useTranslation.ts","../src/i18n/context.tsx","../src/ContextMenu/store.ts","../src/ContextMenu/ContextMenuTrigger.tsx","../src/CopyButton/CopyButton.tsx","../src/hooks/useCopied.ts","../src/utils/copyToClipboard.ts","../src/DatePicker/DatePicker.tsx","../src/DatePicker/style.ts","../src/DownloadButton/DownloadButton.tsx","../src/utils/downloadBlob.ts","../src/DraggablePanel/DraggablePanel.tsx","../src/DraggablePanel/style.ts","../src/DraggablePanel/utils.ts","../src/DraggablePanel/components/DraggablePanelBody.tsx","../src/DraggablePanel/components/style.ts","../src/DraggablePanel/components/DraggablePanelContainer.tsx","../src/DraggablePanel/components/DraggablePanelFooter.tsx","../src/DraggablePanel/components/DraggablePanelHeader.tsx","../src/DraggablePanel/index.ts","../src/DraggableSideNav/DraggableSideNav.tsx","../src/DraggableSideNav/style.ts","../src/Drawer/Drawer.tsx","../src/Dropdown/Dropdown.tsx","../src/EditableText/EditableText.tsx","../src/EditableText/ControlInput.tsx","../src/Input/Input.tsx","../src/Input/style.ts","../src/Input/InputNumber.tsx","../src/Input/InputOPT.tsx","../src/Input/InputPassword.tsx","../src/Input/TextArea.tsx","../src/EditorSlashMenu/atoms.tsx","../src/EditorSlashMenu/style.ts","../src/EditorSlashMenu/EditorSlashMenu.tsx","../src/EditorSlashMenu/MenuItemRenderer.tsx","../src/EditorSlashMenu/useKeyboardNavigation.ts","../src/EditorSlashMenu/utils.ts","../src/EditorSlashMenu/useNormalizedItems.ts","../src/EmojiPicker/EmojiPicker.tsx","../src/Popover/ArrowIcon.tsx","../src/Popover/atoms.tsx","../src/Popover/PopoverPortal.tsx","../src/Popover/style.ts","../src/Popover/context.tsx","../src/Popover/Popover.tsx","../src/Popover/PopoverInGroup.tsx","../src/Popover/groupContext.ts","../src/Popover/useMergedPopoverProps.ts","../src/Popover/PopoverStandalone.tsx","../src/Popover/PopoverGroup.tsx","../src/Tabs/Tabs.tsx","../src/Tabs/style.ts","../src/i18n/resources/en/emojiPicker.ts","../src/EmojiPicker/AvatarUploader.tsx","../src/Tag/Tag.tsx","../src/Tag/utils.ts","../src/Tag/styles.ts","../src/EmojiPicker/style.ts","../src/Empty/Empty.tsx","../src/Footer/Footer.tsx","../src/Footer/style.ts","../src/Form/index.ts","../src/Form/Form.tsx","../src/Form/components/FormFlatGroup.tsx","../src/Form/style.ts","../src/Form/components/FormGroup.tsx","../src/Form/components/FormItem.tsx","../src/Form/components/FormDivider.tsx","../src/Form/components/FormTitle.tsx","../src/Form/components/FormProvider.tsx","../src/Form/components/FormSubmitFooter.tsx","../src/i18n/resources/en/form.ts","../src/Form/components/merge.ts","../src/FormModal/FormModal.tsx","../src/Modal/imperative.tsx","../src/Modal/ModalStackItem.tsx","../src/hooks/useEventCallback.ts","../src/Modal/Modal.tsx","../src/Modal/style.ts","../src/Modal/ModalProvider.tsx","../src/Modal/RawModalStackItem.tsx","../src/FormModal/style.ts","../src/Grid/Grid.tsx","../src/Grid/style.ts","../src/GroupAvatar/GroupAvatar.tsx","../src/GroupAvatar/style.ts","../src/utils/smoothCorners.ts","../src/GuideCard/GuideCard.tsx","../src/GuideCard/style.ts","../src/Header/Header.tsx","../src/Header/style.ts","../src/Highlighter/Highlighter.tsx","../src/Highlighter/FullFeatured.tsx","../src/Highlighter/LangSelect.tsx","../src/Highlighter/style.ts","../src/hooks/useMarkdown/latex.ts","../src/hooks/useMarkdown/utils.ts","../src/HotkeyInput/HotkeyInput.tsx","../src/i18n/resources/en/hotkey.ts","../src/HotkeyInput/style.ts","../src/Image/Image.tsx","../src/Image/components/usePreview.tsx","../src/Image/style.ts","../src/Image/components/Preview.tsx","../src/Image/components/Toolbar.tsx","../src/Image/PreviewGroup.tsx","../src/Image/components/usePreviewGroup.tsx","../src/Image/index.ts","../src/ImageSelect/ImageSelect.tsx","../src/ImageSelect/styles.ts","../src/Layout/Layout.tsx","../src/Layout/components/LayoutFooter.tsx","../src/Layout/style.ts","../src/Layout/components/LayoutHeader.tsx","../src/Layout/components/LayoutMain.tsx","../src/Layout/components/LayoutSidebar.tsx","../src/Layout/components/LayoutSidebarInner.tsx","../src/Layout/components/LayoutToc.tsx","../src/Layout/index.ts","../src/List/List.tsx","../src/List/ListItem/index.tsx","../src/List/ListItem/style.ts","../src/List/ListItem/time.ts","../src/List/index.ts","../src/LobeSelect/atoms.tsx","../src/LobeSelect/constants.ts","../src/LobeSelect/style.ts","../src/LobeSelect/LobeSelect.tsx","../src/LobeSwitch/atoms.tsx","../src/LobeSwitch/style.ts","../src/LobeSwitch/LobeSwitch.tsx","../src/Markdown/Markdown.tsx","../src/Markdown/SyntaxMarkdown/MarkdownRender.tsx","../src/hooks/useMarkdown/useMarkdownComponents.tsx","../src/Markdown/components/CodeBlock.tsx","../src/mdx/mdxComponents/Pre.tsx","../src/Mermaid/const.ts","../src/Mermaid/Mermaid.tsx","../src/Mermaid/FullFeatured.tsx","../src/Mermaid/SyntaxMermaid/index.tsx","../src/Mermaid/SyntaxMermaid/StaticMermaid.tsx","../src/hooks/useMermaid.ts","../src/Mermaid/SyntaxMermaid/StreamMermaid.tsx","../src/hooks/useStreamMermaid.ts","../src/Mermaid/SyntaxMermaid/style.ts","../src/Snippet/Snippet.tsx","../src/awesome/Spotlight/Spotlight.tsx","../src/awesome/Spotlight/style.ts","../src/awesome/Spotlight/useMouseOffset.ts","../src/Snippet/style.ts","../src/Markdown/components/MarkdownProvider.tsx","../src/mdx/mdxComponents/Image.tsx","../src/utils/safeParseJSON.ts","../src/mdx/mdxComponents/Citation/index.tsx","../src/mdx/mdxComponents/Citation/PopoverPanel.tsx","../src/mdx/mdxComponents/Citation/style.ts","../src/mdx/mdxComponents/Link.tsx","../src/Markdown/components/Footnotes.tsx","../src/Markdown/components/SearchResultCards/index.tsx","../src/ScrollShadow/ScrollShadow.tsx","../src/ScrollShadow/style.ts","../src/ScrollShadow/useScrollOverflow.ts","../src/Markdown/components/SearchResultCards/SearchResultCard.tsx","../src/Markdown/components/SearchResultCards/style.ts","../src/mdx/mdxComponents/Section.tsx","../src/Video/index.tsx","../src/Video/style.ts","../src/mdx/mdxComponents/Video.tsx","../src/hooks/useMarkdown/useMarkdownContent.ts","../src/hooks/useMarkdown/useMarkdownRehypePlugins.ts","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit/node_modules/unist-util-visit-parents/lib/color.node.js","../node_modules/unist-util-visit/node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../src/Markdown/plugins/rehypeCustomFootnotes.ts","../src/Markdown/plugins/rehypeKatexDir.ts","../src/Markdown/plugins/rehypeStreamAnimated.ts","../src/hooks/useMarkdown/useMarkdownRemarkPlugins.ts","../src/Markdown/plugins/remarkBr.ts","../src/Markdown/plugins/remarkCustomFootnotes.ts","../src/Markdown/plugins/remarkGfmPlus.ts","../src/Markdown/plugins/remarkVideo.ts","../src/Markdown/SyntaxMarkdown/StreamdownRender.tsx","../src/Markdown/SyntaxMarkdown/style.ts","../src/Markdown/Typography.tsx","../src/Markdown/markdown.style.ts","../src/Markdown/components/useDelayedAnimated.ts","../src/Markdown/style.ts","../src/Markdown/plugins/remarkColor.ts","../src/MaskShadow/MaskShadow.tsx","../src/MaskShadow/style.ts","../src/ScrollArea/atoms.tsx","../src/ScrollArea/globalStyle.ts","../src/ScrollArea/style.ts","../src/ScrollArea/ScrollArea.tsx","../src/SearchBar/SearchBar.tsx","../src/SearchBar/style.ts","../src/Segmented/Segmented.tsx","../src/Segmented/style.ts","../src/Select/Select.tsx","../src/Select/style.ts","../src/SideNav/SideNav.tsx","../src/SideNav/style.ts","../src/Skeleton/Skeleton.tsx","../src/Skeleton/SkeletonAvatar.tsx","../src/Skeleton/SkeletonBlock.tsx","../src/Skeleton/style.ts","../src/Skeleton/SkeletonParagraph.tsx","../src/Skeleton/SkeletonTitle.tsx","../src/Skeleton/SkeletonButton.tsx","../src/Skeleton/SkeletonTags.tsx","../src/Skeleton/index.ts","../src/SliderWithInput/SliderWithInput.tsx","../src/SortableList/SortableList.tsx","../src/SortableList/components/DragHandle.tsx","../src/SortableList/components/SortableItem.tsx","../src/SortableList/style.ts","../src/SortableList/components/SortableOverlay.tsx","../src/ThemeSwitch/ThemeSwitch.tsx","../src/Toast/imperative.tsx","../src/Toast/Toast.tsx","../src/Toast/context.ts","../src/Toast/style.ts","../src/Toc/Toc.tsx","../src/Toc/TocMobile.tsx","../src/Toc/style.ts","../src/Toc/utils.ts"],"sourcesContent":["export { default as A } from './A';\nexport {\n Accordion,\n AccordionItem,\n type AccordionItemProps,\n type AccordionProps,\n} from './Accordion';\nexport { default as ActionIcon, type ActionIconProps, type ActionIconSize } from './ActionIcon';\nexport {\n default as ActionIconGroup,\n type ActionIconGroupEvent,\n type ActionIconGroupItemType,\n type ActionIconGroupProps,\n} from './ActionIconGroup';\nexport { default as Alert, type AlertProps } from './Alert';\nexport { default as AutoComplete, type AutoCompleteProps } from './AutoComplete';\nexport { default as Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps } from './Avatar';\nexport { default as Block, type BlockProps } from './Block';\nexport { default as Burger, type BurgerProps } from './Burger';\nexport { default as Button, type ButtonProps } from './Button';\nexport {\n default as Checkbox,\n CheckboxGroup,\n type CheckboxGroupOption,\n type CheckboxGroupProps,\n type CheckboxProps,\n} from './Checkbox';\nexport {\n CodeDiff,\n type CodeDiffProps,\n type DiffViewMode,\n PatchDiff,\n type PatchDiffProps,\n} from './CodeDiff';\nexport { default as CodeEditor, type CodeEditorProps } from './CodeEditor';\nexport { default as Collapse, type CollapseItemType, type CollapseProps } from './Collapse';\nexport { default as ColorSwatches, type ColorSwatchesProps } from './ColorSwatches';\nexport { type Config, default as ConfigProvider, useCdnFn } from './ConfigProvider';\nexport type { ContextMenuCheckboxItem, ContextMenuItem } from './ContextMenu';\nexport {\n closeContextMenu,\n ContextMenuHost,\n ContextMenuTrigger,\n showContextMenu,\n updateContextMenuItems,\n} from './ContextMenu';\nexport { default as CopyButton, type CopyButtonProps } from './CopyButton';\nexport { default as DatePicker, type DatePickerProps } from './DatePicker';\nexport { default as DownloadButton, type DownloadButtonProps } from './DownloadButton';\nexport {\n default as DraggablePanel,\n DraggablePanelBody,\n type DraggablePanelBodyProps,\n DraggablePanelContainer,\n type DraggablePanelContainerProps,\n DraggablePanelFooter,\n type DraggablePanelFooterProps,\n DraggablePanelHeader,\n type DraggablePanelHeaderProps,\n type DraggablePanelProps,\n} from './DraggablePanel';\nexport { default as DraggableSideNav, type DraggableSideNavProps } from './DraggableSideNav';\nexport { default as Drawer, type DrawerProps } from './Drawer';\nexport { default as Dropdown, type DropdownMenuItemType, type DropdownProps } from './Dropdown';\nexport {\n DROPDOWN_MENU_CONTAINER_ATTR,\n type DropdownItem,\n default as DropdownMenu,\n type DropdownMenuCheckboxItem,\n DropdownMenuCheckboxItemIndicator,\n DropdownMenuCheckboxItemPrimitive,\n DropdownMenuGroup,\n DropdownMenuGroupLabel,\n type DropdownMenuGroupLabelProps,\n DropdownMenuItem,\n DropdownMenuItemContent,\n type DropdownMenuItemContentProps,\n DropdownMenuItemExtra,\n type DropdownMenuItemExtraProps,\n DropdownMenuItemIcon,\n type DropdownMenuItemIconProps,\n DropdownMenuItemLabel,\n type DropdownMenuItemLabelProps,\n type DropdownMenuItemProps,\n type DropdownMenuPlacement,\n DropdownMenuPopup,\n type DropdownMenuPopupProps,\n DropdownMenuPortal,\n type DropdownMenuPortalProps,\n DropdownMenuPositioner,\n type DropdownMenuPositionerProps,\n type DropdownMenuProps,\n DropdownMenuRoot,\n DropdownMenuSeparator,\n type DropdownMenuSeparatorProps,\n DropdownMenuSubmenuArrow,\n type DropdownMenuSubmenuArrowProps,\n DropdownMenuSubmenuRoot,\n DropdownMenuSubmenuTrigger,\n type DropdownMenuSubmenuTriggerProps,\n DropdownMenuTrigger,\n type DropdownMenuTriggerProps,\n renderDropdownMenuItems,\n} from './DropdownMenu';\nexport { default as EditableText, type EditableTextProps } from './EditableText';\nexport {\n default as EditorSlashMenu,\n type EditorSlashMenuGroup,\n type EditorSlashMenuItems,\n type EditorSlashMenuOption,\n} from './EditorSlashMenu';\nexport { default as EmojiPicker, type EmojiPickerProps } from './EmojiPicker';\nexport { default as Empty, type EmptyProps } from './Empty';\nexport { default as FileTypeIcon, type FileTypeIconProps } from './FileTypeIcon';\nexport {\n Center,\n type CenterProps,\n FlexBasic,\n type FlexBasicProps,\n Flexbox,\n type FlexboxProps,\n} from './Flex';\nexport { default as FluentEmoji, type FluentEmojiProps } from './FluentEmoji';\nexport { default as FontLoader, type FontLoaderProps } from './FontLoader';\nexport { default as Footer, type FooterProps } from './Footer';\nexport {\n default as Form,\n FormGroup,\n type FormGroupItemType,\n type FormGroupProps,\n type FormInstance,\n FormItem,\n type FormItemProps,\n type FormProps,\n FormSubmitFooter,\n type FormSubmitFooterProps,\n FormTitle,\n type FormTitleProps,\n} from './Form';\nexport { default as FormModal, type FormModalProps } from './FormModal';\nexport { default as Grid, type GridProps } from './Grid';\nexport { default as GroupAvatar, type GroupAvatarProps } from './GroupAvatar';\nexport { default as GuideCard, type GuideCardProps } from './GuideCard';\nexport { default as Header, type HeaderProps } from './Header';\nexport {\n default as Highlighter,\n type HighlighterProps,\n highlighterThemes,\n SyntaxHighlighter,\n type SyntaxHighlighterProps,\n} from './Highlighter';\nexport { preprocessMarkdownContent } from './hooks/useMarkdown/utils';\nexport { combineKeys, default as Hotkey, type HotkeyProps, KeyMapEnum } from './Hotkey';\nexport { default as HotkeyInput, type HotkeyInputProps } from './HotkeyInput';\nexport { default as Icon, type IconProps, IconProvider, type IconSize } from './Icon';\nexport { default as Image, type ImageProps, PreviewGroup, type PreviewGroupProps } from './Image';\nexport { default as ImageSelect, type ImageSelectItem, type ImageSelectProps } from './ImageSelect';\nexport {\n default as Input,\n InputNumber,\n type InputNumberProps,\n InputOPT,\n type InputOPTProps,\n InputPassword,\n type InputPasswordProps,\n type InputProps,\n TextArea,\n type TextAreaProps,\n} from './Input';\nexport {\n default as Layout,\n LayoutFooter,\n type LayoutFooterProps,\n LayoutHeader,\n type LayoutHeaderProps,\n LayoutMain,\n type LayoutMainProps,\n type LayoutProps,\n LayoutSidebar,\n LayoutSidebarInner,\n type LayoutSidebarInnerProps,\n type LayoutSidebarProps,\n LayoutToc,\n type LayoutTocProps,\n} from './Layout';\nexport { default as List, ListItem, type ListItemProps, type ListProps } from './List';\nexport {\n LOBE_SELECT_CONTAINER_ATTR,\n default as LobeSelect,\n LobeSelectArrow,\n type LobeSelectArrowProps,\n LobeSelectBackdrop,\n LobeSelectGroup,\n LobeSelectGroupLabel,\n type LobeSelectGroupLabelProps,\n type LobeSelectGroupProps,\n LobeSelectIcon,\n type LobeSelectIconProps,\n LobeSelectItem,\n LobeSelectItemIndicator,\n type LobeSelectItemIndicatorProps,\n type LobeSelectItemProps,\n LobeSelectItemText,\n type LobeSelectItemTextProps,\n LobeSelectList,\n type LobeSelectListProps,\n LobeSelectPopup,\n type LobeSelectPopupProps,\n LobeSelectPortal,\n type LobeSelectPortalProps,\n LobeSelectPositioner,\n type LobeSelectPositionerProps,\n type LobeSelectProps,\n LobeSelectRoot,\n LobeSelectScrollDownArrow,\n type LobeSelectScrollDownArrowProps,\n LobeSelectScrollUpArrow,\n type LobeSelectScrollUpArrowProps,\n LobeSelectSeparator,\n LobeSelectTrigger,\n type LobeSelectTriggerProps,\n LobeSelectValue,\n type LobeSelectValueProps,\n} from './LobeSelect';\nexport {\n default as LobeSwitch,\n type LobeSwitchChangeEventHandler,\n type LobeSwitchClassNames,\n type LobeSwitchClickEventHandler,\n type LobeSwitchContextType,\n LobeSwitchIcon,\n type LobeSwitchIconPosition,\n type LobeSwitchIconProps,\n type LobeSwitchProps,\n LobeSwitchRoot,\n type LobeSwitchRootProps,\n type LobeSwitchSize,\n type LobeSwitchStyles,\n lobeSwitchStyles,\n LobeSwitchThumb,\n type LobeSwitchThumbProps,\n useLobeSwitchContext,\n} from './LobeSwitch';\nexport {\n default as Markdown,\n type MarkdownProps,\n Typography,\n type TypographyProps,\n} from './Markdown';\nexport {\n default as SearchResultCards,\n type SearchResultCardsProps,\n} from './Markdown/components/SearchResultCards';\nexport { rehypeCustomFootnotes } from './Markdown/plugins/rehypeCustomFootnotes';\nexport { rehypeKatexDir } from './Markdown/plugins/rehypeKatexDir';\nexport { rehypeStreamAnimated } from './Markdown/plugins/rehypeStreamAnimated';\nexport { remarkBr } from './Markdown/plugins/remarkBr';\nexport { remarkColor } from './Markdown/plugins/remarkColor';\nexport { remarkCustomFootnotes } from './Markdown/plugins/remarkCustomFootnotes';\nexport { remarkGfmPlus } from './Markdown/plugins/remarkGfmPlus';\nexport { remarkVideo } from './Markdown/plugins/remarkVideo';\nexport { default as MaskShadow, type MaskShadowProps } from './MaskShadow';\nexport {\n default as MaterialFileTypeIcon,\n type MaterialFileTypeIconProps,\n} from './MaterialFileTypeIcon';\nexport {\n type BaseMenuItemType,\n type GenericItemType,\n type ItemType,\n default as Menu,\n type MenuCheckboxItemType,\n type MenuInfo,\n type MenuItemType,\n type MenuProps,\n} from './Menu';\nexport { styles as menuSharedStyles } from './Menu/sharedStyle';\nexport {\n default as Mermaid,\n type MermaidProps,\n mermaidThemes,\n SyntaxMermaid,\n type SyntaxMermaidProps,\n} from './Mermaid';\nexport {\n createModal,\n createRawModal,\n type ImperativeModalProps,\n default as Modal,\n ModalHost,\n type ModalHostProps,\n type ModalInstance,\n type ModalProps,\n ModalProvider,\n type RawModalComponent,\n type RawModalComponentProps,\n type RawModalInstance,\n type RawModalKeyOptions,\n type RawModalOptions,\n useModalContext,\n} from './Modal';\nexport type { MotionComponentType } from './MotionProvider';\nexport { MotionComponent, MotionProvider, useMotionComponent } from './MotionProvider';\nexport {\n default as Popover,\n POPOVER_CONTAINER_ATTR,\n PopoverArrow,\n type PopoverArrowAtomProps,\n PopoverArrowIcon,\n PopoverBackdrop,\n type PopoverContextValue,\n PopoverGroup,\n type PopoverPlacement,\n PopoverPopup,\n type PopoverPopupAtomProps,\n PopoverPortal,\n type PopoverPortalAtomProps,\n PopoverPositioner,\n type PopoverPositionerAtomProps,\n type PopoverProps,\n PopoverProvider,\n PopoverRoot,\n type PopoverTrigger,\n PopoverTriggerElement,\n type PopoverTriggerElementProps,\n PopoverViewport,\n type PopoverViewportAtomProps,\n usePopoverContext,\n usePopoverPortalContainer,\n} from './Popover';\nexport { I18nProvider, type I18nProviderProps, LobeUIProvider, useTranslation } from './Provider';\nexport * from './ScrollArea';\nexport { default as ScrollShadow, type ScrollShadowProps } from './ScrollShadow';\nexport { default as SearchBar, type SearchBarProps } from './SearchBar';\nexport { default as Segmented, type SegmentedProps } from './Segmented';\nexport { default as Select, type SelectProps } from './Select';\nexport { default as SideNav, type SideNavProps } from './SideNav';\nexport {\n default as Skeleton,\n SkeletonAvatar,\n type SkeletonAvatarProps,\n SkeletonBlock,\n type SkeletonBlockProps,\n SkeletonButton,\n type SkeletonButtonProps,\n SkeletonParagraph,\n type SkeletonParagraphProps,\n type SkeletonProps,\n SkeletonTags,\n type SkeletonTagsProps,\n SkeletonTitle,\n type SkeletonTitleProps,\n} from './Skeleton';\nexport { default as SliderWithInput, type SliderWithInputProps } from './SliderWithInput';\nexport { default as Snippet, type SnippetProps } from './Snippet';\nexport { default as SortableList, type SortableListProps } from './SortableList';\nexport * from './styles';\nexport { CLASSNAMES } from './styles/classNames';\nexport { default as Tabs, type TabsProps } from './Tabs';\nexport { default as Tag, type TagProps } from './Tag';\nexport { default as Text, type TextProps } from './Text';\nexport {\n Meta,\n type MetaProps,\n default as ThemeProvider,\n type ThemeProviderProps,\n} from './ThemeProvider';\nexport { LOBE_THEME_APP_ID } from './ThemeProvider/constants';\nexport { default as ThemeSwitch, type ThemeSwitchProps } from './ThemeSwitch';\nexport {\n toast,\n type ToastAPI,\n ToastHost,\n type ToastHostProps,\n type ToastInstance,\n type ToastOptions,\n type ToastPosition,\n type ToastPromiseOptions,\n type ToastProps,\n type ToastType,\n useToast,\n} from './Toast';\nexport { default as Toc, type TocProps } from './Toc';\nexport { default as Tooltip, TooltipGroup, type TooltipProps } from './Tooltip';\nexport type * from './types';\nexport { copyToClipboard } from './utils/copyToClipboard';\nexport { preventDefault, preventDefaultAndStopPropagation, stopPropagation } from './utils/dom';\nexport { type CDN, genCdnUrl } from './utils/genCdnUrl';\nexport {\n type Placement,\n type PlacementConfig,\n placementMap,\n toFloatingUIPlacement,\n} from './utils/placement';\nexport { default as Video, type VideoProps } from './Video';\nexport { default as ShikiLobeTheme } from '@/Highlighter/theme/lobe-theme';\nexport { ErrorBoundary, type ErrorBoundaryProps } from 'react-error-boundary';\n","'use client';\n\nimport { type ElementType, type FC, type Ref, createElement, memo, use, useMemo } from 'react';\n\nimport { ConfigContext } from '@/ConfigProvider';\nimport type { AProps } from '@/types';\n\nconst createContainer = (as: ElementType) => memo((props: any) => createElement(as, props));\n\nconst A: FC<AProps & { ref?: Ref<HTMLAnchorElement> }> = (props) => {\n const config = use(ConfigContext);\n const render = config?.aAs || 'a';\n\n const AContainer = useMemo(() => createContainer(render), [render]);\n\n return <AContainer {...props} />;\n};\n\nA.displayName = 'A';\n\nexport default A;\n","'use client';\n\nimport {\n ElementType,\n ReactNode,\n createContext,\n memo,\n use,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { MotionComponent, type MotionComponentType } from '@/MotionProvider';\nimport type {\n I18nContextValue,\n TranslationKey,\n TranslationResourcesInput,\n TranslationResourcesMap,\n} from '@/i18n/types';\nimport { CDN, CdnApi, genCdnUrl } from '@/utils/genCdnUrl';\n\nexport interface Config {\n aAs?: ElementType;\n customCdnFn?: CdnFn;\n imgAs?: ElementType;\n imgUnoptimized?: boolean;\n proxy?: CDN | 'custom';\n}\n\nexport const ConfigContext = createContext<Config | null>(null);\n\n// Internal i18n context\nconst I18nContextInternal = createContext<I18nContextValue>({\n locale: 'en',\n t: (key: TranslationKey) => key,\n});\n\nexport interface ConfigProviderProps {\n children: ReactNode;\n config?: Config;\n // i18n props - flattened at top level\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\nconst isThenable = (value: unknown): value is Promise<TranslationResourcesMap> =>\n typeof (value as { then?: unknown })?.then === 'function';\n\nconst ConfigProvider = memo<ConfigProviderProps>(\n ({ children, config, locale, resources, motion }) => {\n const fallbackLocale = locale ?? 'en';\n const [resolvedResources, setResolvedResources] = useState<TranslationResourcesMap | undefined>(\n () => (resources && !isThenable(resources) ? resources : undefined),\n );\n const [resolvedLocale, setResolvedLocale] = useState(fallbackLocale);\n const latestRequestId = useRef(0);\n\n useEffect(() => {\n const requestId = ++latestRequestId.current;\n\n if (!resources) {\n setResolvedResources(undefined);\n setResolvedLocale(fallbackLocale);\n return;\n }\n\n if (isThenable(resources)) {\n const targetLocale = fallbackLocale;\n resources\n .then((nextResources) => {\n if (latestRequestId.current !== requestId) return;\n setResolvedResources(nextResources);\n setResolvedLocale(targetLocale);\n })\n .catch(() => {\n if (latestRequestId.current !== requestId) return;\n });\n return;\n }\n\n setResolvedResources(resources);\n setResolvedLocale(fallbackLocale);\n }, [fallbackLocale, resources]);\n\n const currentResources = isThenable(resources) ? resolvedResources : resources;\n const currentLocale = isThenable(resources) ? resolvedLocale : fallbackLocale;\n\n const i18nValue = useMemo((): I18nContextValue => {\n const resourceList = Array.isArray(currentResources)\n ? currentResources\n : currentResources\n ? Object.values(currentResources)\n : [];\n const mergedResources = Object.assign({}, ...resourceList);\n const t = (key: TranslationKey): string => mergedResources[key] || key;\n return { locale: currentLocale, t };\n }, [currentLocale, currentResources]);\n\n return (\n <I18nContextInternal value={i18nValue}>\n <ConfigContext value={config ?? null}>\n <MotionComponent value={motion}>{children}</MotionComponent>\n </ConfigContext>\n </I18nContextInternal>\n );\n },\n);\n\n// useCdnFn\nexport type CdnFn = ({ pkg, version, path }: CdnApi) => string;\n\nconst cdnFallback: CdnFn = ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: 'aliyun', version });\n\nexport const useCdnFn = (): CdnFn => {\n const config = use(ConfigContext);\n if (!config) return cdnFallback;\n if (config?.proxy !== 'custom')\n return ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: config.proxy as any, version });\n return config?.customCdnFn || cdnFallback;\n};\n\n// useI18n hook\nexport const useI18n = () => use(I18nContextInternal);\n\n// Export I18nContext for external reference\nexport { I18nContextInternal as I18nContext };\n\nexport default ConfigProvider;\n","'use client';\n\nimport type * as m from 'motion/react-m';\nimport { type Context, type ReactNode, createContext, memo, use } from 'react';\n\nexport type MotionComponentType = typeof import('motion/react').motion | typeof m;\n\nexport const MotionComponent: Context<MotionComponentType> = createContext<MotionComponentType>(\n null!,\n);\n\nexport const MotionProvider = memo<{ children: ReactNode; motion: MotionComponentType }>(\n ({ children, motion }) => {\n return <MotionComponent value={motion}>{children}</MotionComponent>;\n },\n);\n\nexport const useMotionComponent = (): MotionComponentType => {\n const context = use(MotionComponent);\n if (!context) {\n throw new Error(\n 'Please wrap your app with <ConfigProvider> (or <MotionProvider>) and pass the motion component',\n );\n }\n return context;\n};\n","import urlJoin from 'url-join';\n\nconst UNPKG_API = 'https://unpkg.com';\nconst ALIYUN_API = 'https://registry.npmmirror.com';\n\nexport type CDN = 'aliyun' | 'unpkg';\nexport interface CdnApi {\n path: string;\n pkg: string;\n proxy?: CDN;\n version?: string;\n}\n\nexport const genCdnUrl = ({ pkg, version = 'latest', path, proxy }: CdnApi): string => {\n switch (proxy) {\n case 'unpkg': {\n return urlJoin(UNPKG_API, `${pkg}@${version}`, path);\n }\n default: {\n return urlJoin(ALIYUN_API, pkg, version, 'files', path);\n }\n }\n};\n\nexport { ALIYUN_API, UNPKG_API };\n","'use client';\n\nimport { Divider } from 'antd';\nimport { cx } from 'antd-style';\nimport { LayoutGroup } from 'motion/react';\nimport { Children, Fragment, isValidElement, memo, useCallback } from 'react';\nimport type { Key } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport { AccordionContext } from './context';\nimport { styles } from './style';\nimport type { AccordionProps } from './type';\n\nconst Accordion = memo<AccordionProps>(\n ({\n children,\n className: userClassName,\n style: userStyle,\n accordion = false,\n defaultExpandedKeys,\n expandedKeys: expandedKeysProp,\n onExpandedChange,\n variant = 'borderless',\n gap,\n showDivider = false,\n disableAnimation = false,\n hideIndicator = false,\n indicatorPlacement = 'start',\n keepContentMounted = true,\n classNames,\n styles: customStyles,\n motionProps,\n ref,\n ...rest\n }) => {\n // Convert children to array and filter valid elements\n const validChildren = Children.toArray(children).filter(isValidElement);\n\n // Collect all item keys\n const allItemKeys = validChildren.map((child, index) => (child.props as any).itemKey || index);\n\n // If defaultExpandedKeys or expandedKeys is undefined, expand all items by default\n const initialExpandedKeys = defaultExpandedKeys ?? allItemKeys;\n\n const [expandedKeys, setExpandedKeys] = useMergeState<Key[]>(initialExpandedKeys, {\n onChange: onExpandedChange,\n value: expandedKeysProp,\n });\n\n const toggleExpand = useCallback(\n (key: Key) => {\n const prev = expandedKeys;\n let newKeys: Key[];\n\n if (accordion) {\n newKeys = prev.includes(key) ? [] : [key];\n } else {\n newKeys = prev.includes(key) ? prev.filter((k: Key) => k !== key) : [...prev, key];\n }\n\n setExpandedKeys(newKeys);\n },\n [accordion, expandedKeys, setExpandedKeys],\n );\n\n const isExpanded = useCallback(\n (key: Key) => {\n return expandedKeys.includes(key);\n },\n [expandedKeys],\n );\n\n const contextValue = {\n disableAnimation,\n expandedKeys,\n hideIndicator,\n indicatorPlacement,\n isExpanded,\n keepContentMounted,\n motionProps,\n onToggle: toggleExpand,\n showDivider,\n variant,\n };\n\n const content = (\n <>\n {validChildren.map((child, index) => {\n // Extract itemKey from child props to use as React key\n const childKey = (child.props as any).itemKey || index;\n return (\n <Fragment key={childKey}>\n {child}\n {showDivider && index < validChildren.length - 1 && (\n <Divider className={styles.divider} />\n )}\n </Fragment>\n );\n })}\n </>\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n className={cx(styles.base, classNames?.base, userClassName)}\n ref={ref}\n style={{\n gap: gap,\n ...customStyles?.base,\n ...userStyle,\n }}\n {...rest}\n >\n {disableAnimation ? content : <LayoutGroup>{content}</LayoutGroup>}\n </div>\n </AccordionContext.Provider>\n );\n },\n);\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n","import type { Key } from 'react';\nimport { createContext, useContext } from 'react';\n\ninterface AccordionContextValue {\n disableAnimation?: boolean;\n expandedKeys: Key[];\n hideIndicator?: boolean;\n indicatorPlacement?: 'end' | 'start';\n isExpanded: (key: Key) => boolean;\n keepContentMounted?: boolean;\n motionProps?: any;\n onToggle: (key: Key) => void;\n showDivider?: boolean;\n variant?: 'filled' | 'outlined' | 'borderless';\n}\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(null);\n\nexport const useAccordionContext = () => {\n return useContext(AccordionContext);\n};\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n action: css`\n opacity: 0;\n `,\n base: css`\n display: flex;\n flex-direction: column;\n width: 100%;\n `,\n content: css`\n overflow: hidden;\n `,\n contentInner: css`\n /* Content wrapper for animation */\n `,\n divider: css`\n margin-block: 0;\n `,\n header: css`\n &:hover .accordion-action {\n opacity: 1;\n }\n\n &:focus-visible {\n border-radius: ${cssVar.borderRadiusLG};\n outline: 2px solid ${cssVar.colorPrimary};\n outline-offset: 2px;\n }\n `,\n icon: css`\n transition: transform 200ms ${cssVar.motionEaseOut};\n `,\n iconRotate: css`\n transform: rotate(90deg);\n `,\n indicator: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n\n font-size: 18px;\n color: ${cssVar.colorTextDescription};\n\n transition: transform 200ms ${cssVar.motionEaseOut};\n `,\n item: css`\n position: relative;\n display: flex;\n flex-direction: column;\n `,\n titleWrapper: css`\n user-select: none;\n `,\n };\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { AnimatePresence } from 'motion/react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { KeyboardEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport { type MotionComponentType, useMotionComponent } from '@/MotionProvider';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport ArrowIcon from './ArrowIcon';\nimport { useAccordionContext } from './context';\nimport { styles } from './style';\nimport type { AccordionItemProps } from './type';\n\ntype AccordionContentBaseProps = {\n children?: ReactNode;\n className?: string;\n contentInnerClassName: string;\n style?: CSSProperties;\n};\n\ntype AccordionStaticContentProps = AccordionContentBaseProps & {\n isOpen: boolean;\n keepContentMounted: boolean;\n};\n\ntype MotionDivProps = ComponentPropsWithoutRef<MotionComponentType['div']>;\n\ntype AccordionMotionContentProps = AccordionContentBaseProps & {\n contextMotionProps?: MotionDivProps;\n isOpen: boolean;\n skipInitialAnimation: boolean;\n};\n\ntype AccordionItemContentProps = AccordionContentBaseProps & {\n contextMotionProps?: MotionDivProps;\n disableAnimation: boolean;\n isOpen: boolean;\n keepContentMounted: boolean;\n skipInitialAnimation: boolean;\n};\n\nconst motionContainerStyle: CSSProperties = { overflow: 'hidden' };\n\nconst AccordionStaticContent = memo<AccordionStaticContentProps>(\n ({ className, style, children, contentInnerClassName, isOpen, keepContentMounted }) => {\n if (keepContentMounted) {\n return (\n <div\n className={className}\n role=\"region\"\n style={{\n display: isOpen ? 'block' : 'none',\n ...style,\n }}\n >\n <div className={contentInnerClassName}>{children}</div>\n </div>\n );\n }\n\n if (!isOpen) return null;\n\n return (\n <div className={className} role=\"region\" style={style}>\n <div className={contentInnerClassName}>{children}</div>\n </div>\n );\n },\n);\n\nAccordionStaticContent.displayName = 'AccordionStaticContent';\n\nconst AccordionMotionContent = memo<AccordionMotionContentProps>(\n ({\n contextMotionProps,\n className,\n style,\n children,\n contentInnerClassName,\n isOpen,\n skipInitialAnimation,\n }) => {\n const Motion = useMotionComponent();\n\n const motionProps = useMemo(\n () => ({\n animate: 'enter',\n exit: 'exit',\n initial: skipInitialAnimation ? false : 'exit',\n variants: {\n enter: {\n height: 'auto',\n opacity: 1,\n transition: {\n duration: 0.2,\n ease: [0.4, 0, 0.2, 1],\n },\n },\n exit: {\n height: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n ease: [0.4, 0, 0.2, 1],\n },\n },\n },\n ...contextMotionProps,\n }),\n [contextMotionProps, skipInitialAnimation],\n );\n\n return (\n <AnimatePresence initial={false}>\n {isOpen ? (\n <Motion.div {...(motionProps as any)} style={motionContainerStyle}>\n <div className={className} role=\"region\" style={style}>\n <div className={contentInnerClassName}>{children}</div>\n </div>\n </Motion.div>\n ) : null}\n </AnimatePresence>\n );\n },\n);\n\nAccordionMotionContent.displayName = 'AccordionMotionContent';\n\nconst AccordionItemContent = memo<AccordionItemContentProps>(\n ({\n disableAnimation,\n isOpen,\n keepContentMounted,\n className,\n style,\n children,\n contentInnerClassName,\n contextMotionProps,\n skipInitialAnimation,\n }) => {\n if (disableAnimation || !keepContentMounted) {\n return (\n <AccordionStaticContent\n className={className}\n contentInnerClassName={contentInnerClassName}\n isOpen={isOpen}\n keepContentMounted={keepContentMounted}\n style={style}\n >\n {children}\n </AccordionStaticContent>\n );\n }\n\n return (\n <AccordionMotionContent\n className={className}\n contentInnerClassName={contentInnerClassName}\n contextMotionProps={contextMotionProps}\n isOpen={isOpen}\n skipInitialAnimation={skipInitialAnimation}\n style={style}\n >\n {children}\n </AccordionMotionContent>\n );\n },\n);\n\nAccordionItemContent.displayName = 'AccordionItemContent';\n\nconst AccordionItem = memo<AccordionItemProps>(\n ({\n itemKey,\n title,\n children,\n action,\n disabled = false,\n allowExpand = true,\n hideIndicator: itemHideIndicator,\n indicatorPlacement: itemIndicatorPlacement,\n indicator: customIndicator,\n classNames,\n paddingInline = 16,\n paddingBlock = 8,\n padding,\n ref,\n variant: customVariant,\n styles: customStyles,\n headerWrapper,\n defaultExpand,\n expand,\n onExpandChange,\n }) => {\n const context = useAccordionContext();\n\n // Determine if using standalone mode (has expand or defaultExpand props)\n const isStandalone = expand !== undefined || defaultExpand !== undefined;\n\n // Standalone state management\n const [isExpandedStandalone, setIsExpandedStandalone] = useMergeState<boolean>(\n defaultExpand ?? false,\n {\n onChange: onExpandChange,\n value: expand,\n },\n );\n\n // Context values (may be null if used standalone)\n const contextIsExpanded = context?.isExpanded;\n const contextOnToggle = context?.onToggle;\n const contextHideIndicator = context?.hideIndicator;\n const contextIndicatorPlacement = context?.indicatorPlacement;\n const contextKeepContentMounted = context?.keepContentMounted;\n const contextDisableAnimation = context?.disableAnimation;\n const contextMotionProps = context?.motionProps;\n const contextVariant = context?.variant ?? 'borderless';\n\n const isInitialRenderRef = useRef(true);\n\n useEffect(() => {\n isInitialRenderRef.current = false;\n }, []);\n\n // Determine expanded state\n const isOpen = isStandalone\n ? isExpandedStandalone\n : contextIsExpanded\n ? contextIsExpanded(itemKey)\n : false;\n\n // Determine other props with fallbacks\n const hideIndicatorFinal = itemHideIndicator ?? contextHideIndicator ?? false;\n const indicatorPlacementFinal = itemIndicatorPlacement ?? contextIndicatorPlacement ?? 'start';\n const keepContentMounted = contextKeepContentMounted ?? true;\n const disableAnimation = contextDisableAnimation ?? false;\n const variant = customVariant || contextVariant;\n\n const handleToggle = useCallback(() => {\n // If allowExpand is false, only allow controlled expansion via expand prop\n if (!allowExpand) return;\n\n if (!disabled) {\n if (isStandalone) {\n setIsExpandedStandalone(!isExpandedStandalone);\n } else if (contextOnToggle) {\n contextOnToggle(itemKey);\n }\n }\n }, [\n allowExpand,\n disabled,\n isStandalone,\n setIsExpandedStandalone,\n isExpandedStandalone,\n contextOnToggle,\n itemKey,\n ]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n // If allowExpand is false, disable keyboard toggle\n if (!allowExpand || disabled) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ': {\n e.preventDefault();\n handleToggle();\n break;\n }\n }\n },\n [allowExpand, disabled, handleToggle],\n );\n\n const preventTitleTextSelection = useCallback((e: any) => {\n // Prevent browser from creating a selection range on double/multi click,\n // which can accidentally select the content region.\n if (e?.detail > 1) e.preventDefault();\n }, []);\n\n // Build indicator\n const indicator = useMemo(() => {\n if (!allowExpand || hideIndicatorFinal) return null;\n\n if (customIndicator) {\n if (typeof customIndicator === 'function') {\n return (\n <span\n aria-hidden=\"true\"\n className={cx(styles.indicator, classNames?.indicator)}\n style={customStyles?.indicator}\n >\n {customIndicator({ isDisabled: disabled, isOpen })}\n </span>\n );\n }\n return (\n <span\n aria-hidden=\"true\"\n className={cx(styles.indicator, classNames?.indicator)}\n style={customStyles?.indicator}\n >\n {customIndicator}\n </span>\n );\n }\n\n return (\n <span\n aria-hidden=\"true\"\n className={cx(styles.indicator, classNames?.indicator)}\n style={customStyles?.indicator}\n >\n <ArrowIcon className={cx(styles.icon, isOpen && styles.iconRotate)} />\n </span>\n );\n }, [\n allowExpand,\n hideIndicatorFinal,\n customIndicator,\n disabled,\n isOpen,\n cx,\n styles,\n classNames,\n customStyles,\n ]);\n\n const skipInitialAnimation = isInitialRenderRef.current && isOpen;\n\n const contentClassName = useMemo(\n () => cx('accordion-content', styles.content, classNames?.content),\n [cx, styles, classNames?.content],\n );\n\n const titleNode = useMemo(\n () =>\n typeof title === 'string' ? (\n <Text className={classNames?.title} ellipsis style={customStyles?.title}>\n {title}\n </Text>\n ) : (\n title\n ),\n [title, classNames?.title, customStyles?.title],\n );\n\n const actionNode = useMemo(\n () =>\n action && (\n <Flexbox\n align={'center'}\n className={cx('accordion-action', styles.action, classNames?.action)}\n flex={'none'}\n gap={4}\n horizontal\n onClick={stopPropagation}\n style={customStyles?.action}\n >\n {action}\n </Flexbox>\n ),\n [action, cx, styles, classNames?.action, customStyles?.action],\n );\n\n const headerElement = useMemo(() => {\n const header = (\n <Block\n className={cx('accordion-header', styles.header, classNames?.header)}\n clickable={!disabled && allowExpand}\n gap={4}\n horizontal\n justify={'space-between'}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n padding={padding}\n paddingBlock={paddingBlock}\n paddingInline={paddingInline}\n ref={ref}\n style={{\n alignItems: 'center',\n cursor: disabled ? 'not-allowed' : allowExpand ? 'pointer' : 'default',\n opacity: disabled ? 0.5 : undefined,\n overflow: 'hidden',\n width: '100%',\n ...customStyles?.header,\n }}\n variant={customVariant || variant}\n >\n {indicatorPlacementFinal === 'start' ? (\n <>\n <Flexbox\n align={'center'}\n className={styles.titleWrapper}\n flex={1}\n gap={2}\n horizontal\n onDoubleClick={preventTitleTextSelection}\n onMouseDown={preventTitleTextSelection}\n style={{\n overflow: 'hidden',\n }}\n >\n {titleNode}\n {indicator}\n </Flexbox>\n <Flexbox align={'center'} flex={'none'} gap={4} horizontal>\n {actionNode}\n </Flexbox>\n </>\n ) : (\n <>\n <Flexbox\n align={'center'}\n className={styles.titleWrapper}\n flex={1}\n gap={2}\n horizontal\n onDoubleClick={preventTitleTextSelection}\n onMouseDown={preventTitleTextSelection}\n style={{\n overflow: 'hidden',\n }}\n >\n {titleNode}\n </Flexbox>\n <Flexbox align={'center'} flex={'none'} gap={4} horizontal>\n {actionNode}\n {indicator}\n </Flexbox>\n </>\n )}\n </Block>\n );\n if (headerWrapper) {\n return headerWrapper(header);\n }\n return header;\n }, [\n cx,\n styles,\n classNames,\n disabled,\n handleToggle,\n handleKeyDown,\n padding,\n paddingBlock,\n paddingInline,\n ref,\n customVariant,\n variant,\n indicatorPlacementFinal,\n titleNode,\n indicator,\n actionNode,\n headerWrapper,\n ]);\n\n return (\n <div\n className={cx('accordion-item', styles.item, classNames?.base)}\n style={customStyles?.base}\n >\n {headerElement}\n <AccordionItemContent\n className={contentClassName}\n contentInnerClassName={styles.contentInner}\n contextMotionProps={contextMotionProps}\n disableAnimation={!!disableAnimation}\n isOpen={isOpen}\n keepContentMounted={!!keepContentMounted}\n skipInitialAnimation={skipInitialAnimation}\n style={customStyles?.content}\n >\n {children}\n </AccordionItemContent>\n </div>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n\nexport default AccordionItem;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { variants } from './style';\nimport type { BlockProps } from './type';\n\nconst Block: FC<BlockProps> = ({\n className,\n variant = 'filled',\n shadow,\n glass,\n children,\n clickable,\n ref,\n ...rest\n}) => {\n return (\n <Flexbox\n className={cx(variants({ clickable, glass, shadow, variant }), className)}\n ref={ref}\n {...rest}\n >\n {children}\n </Flexbox>\n );\n};\n\nBlock.displayName = 'Block';\n\nexport default Block;\n","'use client';\n\nimport { type CSSProperties, type ElementType, type FC, memo } from 'react';\n\nimport type { FlexBasicProps } from './type';\nimport { getCssValue, getFlexDirection, isHorizontal, isSpaceDistribution } from './utils';\n\nconst FlexBasic: FC<FlexBasicProps> = ({\n visible,\n flex,\n gap,\n direction,\n horizontal,\n align,\n justify,\n distribution,\n height,\n width,\n allowShrink,\n padding,\n paddingInline,\n paddingBlock,\n prefixCls,\n as: Container = 'div' as ElementType,\n className,\n style,\n children,\n wrap,\n ref,\n ...props\n}) => {\n const justifyContent = justify || distribution;\n\n const calcWidth = () => {\n if (isHorizontal(direction, horizontal) && !width && isSpaceDistribution(justifyContent))\n return '100%';\n\n return getCssValue(width);\n };\n const finalWidth = calcWidth();\n\n const cssVars: Record<string, string | number> = {\n ...(flex !== undefined ? { '--lobe-flex': String(flex) } : {}),\n ...(direction || horizontal\n ? { '--lobe-flex-direction': getFlexDirection(direction, horizontal) }\n : {}),\n ...(wrap !== undefined ? { '--lobe-flex-wrap': wrap } : {}),\n ...(justifyContent !== undefined ? { '--lobe-flex-justify': justifyContent } : {}),\n ...(align !== undefined ? { '--lobe-flex-align': align } : {}),\n ...(finalWidth !== undefined ? { '--lobe-flex-width': finalWidth } : {}),\n ...(height !== undefined ? { '--lobe-flex-height': getCssValue(height) } : {}),\n ...(padding !== undefined ? { '--lobe-flex-padding': getCssValue(padding) } : {}),\n ...(paddingInline !== undefined\n ? { '--lobe-flex-padding-inline': getCssValue(paddingInline) }\n : {}),\n ...(paddingBlock !== undefined\n ? { '--lobe-flex-padding-block': getCssValue(paddingBlock) }\n : {}),\n ...(gap !== undefined ? { '--lobe-flex-gap': getCssValue(gap) } : {}),\n };\n\n const mergedStyle: CSSProperties = {\n ...(cssVars as CSSProperties),\n ...(allowShrink ? { minWidth: 0 } : {}),\n ...style,\n };\n\n const baseClassName = 'lobe-flex';\n const mergedClassName = [\n baseClassName,\n visible === false ? `${baseClassName}--hidden` : undefined,\n prefixCls ? `${prefixCls}-flex` : undefined,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Container ref={ref} {...props} className={mergedClassName} style={mergedStyle}>\n {children}\n </Container>\n );\n};\n\nexport default memo(FlexBasic);\n","import type { FlexDirection } from './type';\n\nexport const getPrefix = (prefixCls?: string) => {\n if (prefixCls) return prefixCls;\n return 'lobe';\n};\n\nexport const getFlexDirection = (direction?: FlexDirection, isHorizontal?: boolean) => {\n if (isHorizontal) return 'row';\n\n switch (direction) {\n case 'horizontal': {\n return 'row';\n }\n case 'horizontal-reverse': {\n return 'row-reverse';\n }\n case 'vertical':\n default: {\n return 'column';\n }\n case 'vertical-reverse': {\n return 'column-reverse';\n }\n }\n};\n\nexport const isSpaceDistribution = (distribution?: string) => {\n if (!distribution) return;\n return ['space-between', 'space-around', 'space-evenly'].includes(distribution);\n};\n\nexport const isHorizontal = (direction?: FlexDirection, isHorizontal?: boolean) =>\n getFlexDirection(direction, isHorizontal) === 'row';\n\nexport const isVertical = (direction?: FlexDirection, isHorizontal?: boolean) =>\n getFlexDirection(direction, isHorizontal) === 'column';\n\nexport const getCssValue = (value: string | number | undefined) =>\n typeof value === 'number' ? `${value}px` : value;\n","import { type FC } from 'react';\n\nimport FlexBasic from './FlexBasic';\nimport type { CenterProps } from './type';\n\nconst Center: FC<CenterProps> = ({ children, ref, ...props }) => (\n <FlexBasic {...props} align=\"center\" justify=\"center\" ref={ref}>\n {children}\n </FlexBasic>\n);\n\nexport default Center;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n clickableBorderless: lobeStaticStylish.variantBorderless,\n clickableFilled: lobeStaticStylish.variantFilled,\n clickableOutlined: lobeStaticStylish.variantOutlined,\n clickableRoot: css`\n cursor: pointer;\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n glass: lobeStaticStylish.blur,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.clickableBorderless,\n clickable: true,\n variant: 'borderless',\n },\n {\n class: styles.clickableFilled,\n clickable: true,\n variant: 'filled',\n },\n {\n class: styles.clickableOutlined,\n clickable: true,\n variant: 'outlined',\n },\n ],\n defaultVariants: {\n clickable: false,\n glass: false,\n shadow: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n clickable: {\n false: null,\n true: styles.clickableRoot,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { ColorScaleItem } from '../types';\n\nconst blue: ColorScaleItem = {\n dark: [\n '#000506',\n '#002126',\n '#00363f',\n '#004e59',\n '#006675',\n '#008093',\n '#159ab0',\n '#47b3ca',\n '#6acde4',\n '#8ae8ff',\n '#b8f0ff',\n '#def7ff',\n '#ffffff',\n ],\n darkA: [\n 'rgba(0, 167, 200, 0.03)',\n 'rgba(0, 220, 253, 0.15)',\n 'rgba(0, 216, 252, 0.25)',\n 'rgba(0, 223, 254, 0.35)',\n 'rgba(0, 222, 254, 0.46)',\n 'rgba(0, 221, 253, 0.58)',\n 'rgba(30, 223, 255, 0.69)',\n 'rgba(89, 224, 252, 0.8)',\n 'rgba(118, 228, 253, 0.9)',\n '#8ae8ff',\n '#b8f0ff',\n '#def7ff',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fbfeff',\n '#f4fcff',\n '#eafaff',\n '#dff7ff',\n '#d3f5ff',\n '#c4f2ff',\n '#b4efff',\n '#a1ecff',\n '#8ae8ff',\n '#159ab0',\n '#004e59',\n '#000506',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(55, 205, 255, 0.02)',\n 'rgba(35, 195, 255, 0.05)',\n 'rgba(22, 199, 255, 0.09)',\n 'rgba(9, 193, 255, 0.13)',\n 'rgba(11, 199, 255, 0.18)',\n 'rgba(9, 201, 255, 0.24)',\n 'rgba(5, 202, 255, 0.3)',\n 'rgba(1, 204, 255, 0.37)',\n 'rgba(1, 205, 255, 0.46)',\n 'rgba(1, 145, 169, 0.92)',\n '#004e59',\n '#000506',\n ],\n};\n\nexport default blue;\n","import { ColorScaleItem } from '../types';\n\nconst cyan: ColorScaleItem = {\n dark: [\n '#000503',\n '#00221c',\n '#003930',\n '#005245',\n '#006c5b',\n '#008772',\n '#2fa28a',\n '#55bca4',\n '#75d7be',\n '#95f3d9',\n '#bdf7e4',\n '#dffcf0',\n '#ffffff',\n ],\n darkA: [\n 'rgba(0, 250, 150, 0.02)',\n 'rgba(0, 243, 200, 0.14)',\n 'rgba(0, 248, 209, 0.23)',\n 'rgba(0, 248, 209, 0.33)',\n 'rgba(0, 251, 212, 0.43)',\n 'rgba(0, 255, 215, 0.53)',\n 'rgba(73, 253, 216, 0.64)',\n 'rgba(115, 254, 222, 0.74)',\n 'rgba(138, 253, 224, 0.85)',\n 'rgba(155, 253, 226, 0.96)',\n 'rgba(195, 255, 235, 0.97)',\n 'rgba(225, 255, 242, 0.99)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f9fffb',\n '#effff8',\n '#e3fff4',\n '#d8fef0',\n '#ccfcec',\n '#c0fae8',\n '#b3f8e3',\n '#a5f6de',\n '#95f3d9',\n '#2fa28a',\n '#005245',\n '#000503',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(55, 255, 122, 0.03)',\n 'rgba(26, 255, 155, 0.07)',\n 'rgba(0, 255, 155, 0.11)',\n 'rgba(11, 249, 161, 0.16)',\n 'rgba(0, 240, 160, 0.2)',\n 'rgba(3, 235, 163, 0.25)',\n 'rgba(2, 232, 162, 0.3)',\n 'rgba(5, 230, 163, 0.36)',\n 'rgba(3, 226, 165, 0.42)',\n 'rgba(1, 142, 112, 0.82)',\n '#005245',\n '#000503',\n ],\n};\n\nexport default cyan;\n","import { ColorScaleItem } from '../types';\n\nconst geekblue: ColorScaleItem = {\n dark: [\n '#00021b',\n '#000d4c',\n '#001a69',\n '#002a8a',\n '#003bac',\n '#004cca',\n '#005ae0',\n '#0065ed',\n '#006cf3',\n '#0072f5',\n '#9abeff',\n '#e2ebff',\n '#ffffff',\n ],\n darkA: [\n 'rgba(0, 18, 245, 0.11)',\n 'rgba(0, 43, 253, 0.3)',\n 'rgba(0, 62, 250, 0.42)',\n 'rgba(0, 76, 251, 0.55)',\n 'rgba(0, 87, 253, 0.68)',\n 'rgba(0, 95, 252, 0.8)',\n 'rgba(0, 102, 255, 0.88)',\n 'rgba(0, 109, 255, 0.93)',\n 'rgba(0, 112, 253, 0.96)',\n 'rgba(0, 119, 255, 0.96)',\n '#9abeff',\n '#e2ebff',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fcfbff',\n '#f1f5ff',\n '#e2ebff',\n '#cedfff',\n '#b6d0ff',\n '#9abeff',\n '#78a9ff',\n '#4c90ff',\n '#0072f5',\n '#005ae0',\n '#002a8a',\n '#00021b',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(105, 55, 255, 0.02)',\n 'rgba(22, 88, 255, 0.06)',\n 'rgba(13, 88, 255, 0.12)',\n 'rgba(10, 95, 255, 0.2)',\n 'rgba(3, 93, 255, 0.29)',\n 'rgba(3, 93, 255, 0.4)',\n 'rgba(0, 93, 255, 0.53)',\n 'rgba(3, 99, 255, 0.71)',\n '#0072f5',\n '#005ae0',\n '#002a8a',\n '#00021b',\n ],\n};\n\nexport default geekblue;\n","import { ColorScaleItem } from '../types';\n\nconst gold: ColorScaleItem = {\n dark: [\n '#070300',\n '#2a1b00',\n '#483000',\n '#6a4900',\n '#916400',\n '#b77e00',\n '#d59300',\n '#eaa100',\n '#f8aa00',\n '#ffb224',\n '#ffdcaf',\n '#fff4eb',\n '#ffffff',\n ],\n darkA: [\n 'rgba(233, 100, 0, 0.03)',\n 'rgba(247, 159, 0, 0.17)',\n 'rgba(248, 166, 0, 0.29)',\n 'rgba(252, 174, 0, 0.42)',\n 'rgba(254, 175, 0, 0.57)',\n 'rgba(254, 175, 0, 0.72)',\n 'rgba(254, 175, 0, 0.84)',\n 'rgba(254, 175, 0, 0.92)',\n 'rgba(253, 173, 0, 0.98)',\n '#ffb224',\n '#ffdcaf',\n '#fff4eb',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fffdff',\n '#fff9f7',\n '#fff4eb',\n '#ffeedc',\n '#ffe6c8',\n '#ffdcaf',\n '#ffd190',\n '#ffc368',\n '#ee9e0b',\n '#d59300',\n '#6a4900',\n '#070300',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255,145,55,0.04)',\n 'rgba(255,155,55,0.08)',\n 'rgba(255, 117, 5, 0.16)',\n 'rgba(255, 134, 5, 0.20)',\n 'rgba(255, 141, 5, 0.26)',\n 'rgba(255, 146, 5, 0.32)',\n 'rgba(255, 150, 3, 0.44)',\n 'rgba(255, 155, 3, 0.6)',\n 'rgba(255, 165, 0, 0.86)',\n '#d59300',\n '#6a4900',\n '#070300',\n ],\n};\n\nexport default gold;\n","import { ColorScaleItem } from '../types';\n\nconst gray: ColorScaleItem = {\n dark: [\n '#000000',\n '#0d0d0d',\n '#1a1a1a',\n '#202020',\n '#2d2d2d',\n '#444444',\n '#555555',\n '#666666',\n '#6f6f6f',\n '#777777',\n '#aaaaaa',\n '#dddddd',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 255, 255, 0.06)',\n 'rgba(255, 255, 255, 0.10)',\n 'rgba(255, 255, 255, 0.16)',\n 'rgba(255, 255, 255, 0.24)',\n 'rgba(255, 255, 255, 0.28)',\n 'rgba(255, 255, 255, 0.32)',\n 'rgba(255, 255, 255, 0.38)',\n 'rgba(255, 255, 255, 0.44)',\n 'rgba(255, 255, 255, 0.5)',\n 'rgba(255, 255, 255, 0.66)',\n 'rgba(255, 255, 255, 0.84)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f8f8f8',\n '#eeeeee',\n '#e3e3e3',\n '#dddddd',\n '#cccccc',\n '#bbbbbb',\n '#aaaaaa',\n '#999999',\n '#888888',\n '#666666',\n '#333333',\n '#080808',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(0, 0, 0, 0.03)',\n 'rgba(0, 0, 0, 0.06)',\n 'rgba(0, 0, 0, 0.12)',\n 'rgba(0, 0, 0, 0.18)',\n 'rgba(0, 0, 0, 0.24)',\n 'rgba(0, 0, 0, 0.32)',\n 'rgba(0, 0, 0, 0.38)',\n 'rgba(0, 0, 0, 0.44)',\n 'rgba(0, 0, 0, 0.5)',\n 'rgba(0, 0, 0, 0.68)',\n 'rgba(0, 0, 0, 0.84)',\n 'rgba(0, 0, 0, 0.98)',\n ],\n};\n\nexport default gray;\n","import { ColorScaleItem } from '../types';\n\nconst green: ColorScaleItem = {\n dark: [\n '#000503',\n '#001d12',\n '#002d1d',\n '#003f28',\n '#005232',\n '#00653c',\n '#007944',\n '#1b8d4d',\n '#3ba05a',\n '#62c473',\n '#96cd92',\n '#cde6c3',\n '#ffffff',\n ],\n darkA: [\n 'rgba(0, 250, 150, 0.02)',\n 'rgba(0, 242, 150, 0.12)',\n 'rgba(0, 250, 161, 0.18)',\n 'rgba(0, 252, 160, 0.25)',\n 'rgba(0, 248, 152, 0.33)',\n 'rgba(0, 252, 150, 0.4)',\n 'rgba(0, 252, 142, 0.48)',\n 'rgba(48, 252, 137, 0.56)',\n 'rgba(94, 254, 143, 0.63)',\n 'rgba(120, 254, 145, 0.71)',\n 'rgba(185, 253, 180, 0.81)',\n 'rgba(225, 253, 214, 0.91)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f4fdeb',\n '#e7f8dd',\n '#d8f2ce',\n '#c7eabd',\n '#b4e1ac',\n '#a0d79b',\n '#89cc8a',\n '#71c179',\n '#379d4a',\n '#007944',\n '#003f28',\n '#000503',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(117, 230, 5, 0.06)',\n 'rgba(84, 205, 12, 0.10)',\n 'rgba(60, 190, 10, 0.14)',\n 'rgba(40, 174, 1, 0.26)',\n 'rgba(28, 164, 3, 0.33)',\n 'rgba(18, 155, 5, 0.4)',\n 'rgba(4, 146, 6, 0.47)',\n 'rgba(1, 144, 16, 0.56)',\n 'rgba(1, 143, 28, 0.67)',\n '#007944',\n '#003f28',\n '#000503',\n ],\n};\n\nexport default green;\n","import { ColorScaleItem } from '../types';\n\nconst lime: ColorScaleItem = {\n dark: [\n '#020400',\n '#142100',\n '#253700',\n '#374f00',\n '#4b6800',\n '#608200',\n '#769d00',\n '#8fb81b',\n '#a9d42f',\n '#c4f042',\n '#daf685',\n '#eefbbe',\n '#ffffff',\n ],\n darkA: [\n 'rgba(100, 200, 0, 0.02)',\n 'rgba(154, 254, 0, 0.13)',\n 'rgba(168, 250, 0, 0.22)',\n 'rgba(177, 255, 0, 0.31)',\n 'rgba(183, 254, 0, 0.41)',\n 'rgba(188, 255, 0, 0.51)',\n 'rgba(190, 253, 0, 0.62)',\n 'rgba(196, 252, 37, 0.73)',\n 'rgba(204, 255, 57, 0.83)',\n 'rgba(209, 255, 70, 0.94)',\n 'rgba(225, 254, 137, 0.97)',\n 'rgba(240, 254, 192, 0.99)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#feffeb',\n '#f9ffd8',\n '#f2ffc1',\n '#ebfdaf',\n '#e4fc9b',\n '#ddf987',\n '#d5f773',\n '#cdf35c',\n '#c4f042',\n '#769d00',\n '#374f00',\n '#020400',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(242, 255, 5, 0.08)',\n 'rgba(218, 255, 11, 0.16)',\n 'rgba(203, 255, 7, 0.25)',\n 'rgba(193, 249, 5, 0.32)',\n 'rgba(187, 247, 5, 0.4)',\n 'rgba(183, 242, 0, 0.47)',\n 'rgba(179, 240, 0, 0.55)',\n 'rgba(177, 236, 0, 0.64)',\n 'rgba(175, 235, 0, 0.74)',\n '#769d00',\n '#374f00',\n '#020400',\n ],\n};\n\nexport default lime;\n","import { ColorScaleItem } from '../types';\n\nconst magenta: ColorScaleItem = {\n dark: [\n '#100002',\n '#350011',\n '#4b001e',\n '#63002d',\n '#79093f',\n '#8e1752',\n '#a32466',\n '#b8317b',\n '#ce3e91',\n '#e34ba9',\n '#f38bcb',\n '#fec5e8',\n '#ffffff',\n ],\n darkA: [\n 'rgba(229, 0, 29, 0.07)',\n 'rgba(252, 0, 81, 0.21)',\n 'rgba(250, 0, 100, 0.3)',\n 'rgba(254, 0, 115, 0.39)',\n 'rgba(252, 19, 131, 0.48)',\n 'rgba(254, 41, 146, 0.56)',\n 'rgba(255, 56, 159, 0.64)',\n 'rgba(252, 67, 168, 0.73)',\n 'rgba(254, 77, 179, 0.81)',\n 'rgba(255, 84, 190, 0.89)',\n 'rgba(253, 145, 211, 0.96)',\n '#fec5e8',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fff7f9',\n '#ffeaf4',\n '#ffdaee',\n '#ffc7e7',\n '#ffb2df',\n '#ff99d6',\n '#f980ca',\n '#ef67ba',\n '#e34ba9',\n '#a32466',\n '#63002d',\n '#100002',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(255, 55, 105, 0.04)',\n 'rgba(255, 22, 133, 0.09)',\n 'rgba(255, 8, 142, 0.15)',\n 'rgba(255, 0, 146, 0.22)',\n 'rgba(255, 7, 152, 0.31)',\n 'rgba(255, 0, 153, 0.4)',\n 'rgba(243, 1, 149, 0.5)',\n 'rgba(228, 2, 140, 0.6)',\n 'rgba(216, 1, 134, 0.71)',\n 'rgba(148, 0, 77, 0.86)',\n '#63002d',\n '#100002',\n ],\n};\n\nexport default magenta;\n","import { ColorScaleItem } from '../types';\n\nconst orange: ColorScaleItem = {\n dark: [\n '#070300',\n '#291900',\n '#462b00',\n '#684100',\n '#8e5900',\n '#b36f00',\n '#d18000',\n '#e88b00',\n '#f89200',\n '#ff9927',\n '#ffd1b1',\n '#fff1eb',\n '#ffffff',\n ],\n darkA: [\n 'rgba(233, 100, 0, 0.03)',\n 'rgba(241, 147, 0, 0.17)',\n 'rgba(250, 154, 0, 0.28)',\n 'rgba(254, 159, 0, 0.41)',\n 'rgba(254, 159, 0, 0.56)',\n 'rgba(252, 156, 0, 0.71)',\n 'rgba(255, 156, 0, 0.82)',\n 'rgba(255, 153, 0, 0.91)',\n 'rgba(253, 149, 0, 0.98)',\n '#ff9927',\n '#ffd1b1',\n '#fff1eb',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fffcff',\n '#fff8f6',\n '#fff1eb',\n '#ffe9dd',\n '#ffdeca',\n '#ffd1b1',\n '#ffc293',\n '#ffb06a',\n '#f88c13',\n '#d18000',\n '#684100',\n '#070300',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 105, 255, 0.03)',\n 'rgba(255, 80, 30, 0.08)',\n 'rgba(255, 80, 5, 0.12)',\n 'rgba(255, 98, 12, 0.16)',\n 'rgba(255, 98, 3, 0.21)',\n 'rgba(255, 107, 3, 0.31)',\n 'rgba(255, 113, 4, 0.43)',\n 'rgba(255, 121, 2, 0.59)',\n 'rgba(255, 135, 1, 0.85)',\n '#d18000',\n '#684100',\n '#070300',\n ],\n};\n\nexport default orange;\n","import { ColorScaleItem } from '../types';\n\nconst primary: ColorScaleItem = {\n dark: [\n '#000000',\n '#111111',\n '#333333',\n '#555555',\n '#666666',\n '#888888',\n '#aaaaaa',\n '#cccccc',\n '#dddddd',\n '#eeeeee',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 255, 255, 0.08)',\n 'rgba(255, 255, 255, 0.16)',\n 'rgba(255, 255, 255, 0.22)',\n 'rgba(255, 255, 255, 0.36)',\n 'rgba(255, 255, 255, 0.48)',\n 'rgba(255, 255, 255, 0.6)',\n 'rgba(255, 255, 255, 0.72)',\n 'rgba(255, 255, 255, 0.84)',\n 'rgba(255, 255, 255, 0.88)',\n 'rgba(255, 255, 255, 0.92)',\n 'rgba(255, 255, 255, 0.96)',\n 'rgba(255, 255, 255, 0.98)',\n ],\n light: [\n '#ffffff',\n '#f5f5f5',\n '#eeeeee',\n '#cccccc',\n '#aaaaaa',\n '#888888',\n '#666666',\n '#444444',\n '#333333',\n '#222222',\n '#111111',\n '#0b0b0b',\n '#000000',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.02)',\n 'rgba(0, 0, 0, 0.08)',\n 'rgba(0, 0, 0, 0.16)',\n 'rgba(0, 0, 0, 0.22)',\n 'rgba(0, 0, 0, 0.36)',\n 'rgba(0, 0, 0, 0.48)',\n 'rgba(0, 0, 0, 0.6)',\n 'rgba(0, 0, 0, 0.72)',\n 'rgba(0, 0, 0, 0.84)',\n 'rgba(0, 0, 0, 0.88)',\n 'rgba(0, 0, 0, 0.92)',\n 'rgba(0, 0, 0, 0.96)',\n 'rgba(0, 0, 0, 0.98)',\n ],\n};\n\nexport default primary;\n","import { ColorScaleItem } from '../types';\n\nconst purple: ColorScaleItem = {\n dark: [\n '#0d000b',\n '#2e002a',\n '#42003e',\n '#560053',\n '#670e66',\n '#781e78',\n '#892b8a',\n '#9a399e',\n '#ab46b2',\n '#bd54c6',\n '#d590da',\n '#edc7ee',\n '#ffffff',\n ],\n darkA: [\n 'rgba(217, 0, 183, 0.06)',\n 'rgba(242, 0, 221, 0.19)',\n 'rgba(254, 0, 238, 0.26)',\n 'rgba(253, 0, 244, 0.34)',\n 'rgba(251, 34, 249, 0.41)',\n 'rgba(255, 64, 255, 0.47)',\n 'rgba(249, 78, 251, 0.55)',\n 'rgba(248, 92, 255, 0.62)',\n 'rgba(244, 100, 254, 0.7)',\n 'rgba(242, 108, 254, 0.78)',\n 'rgba(248, 167, 253, 0.86)',\n 'rgba(252, 212, 253, 0.94)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fff6fb',\n '#ffe7fd',\n '#fdd6fe',\n '#f6c4f8',\n '#eeb1f1',\n '#e49ce8',\n '#d886de',\n '#cb6ed2',\n '#bd54c6',\n '#892b8a',\n '#560053',\n '#0d000b',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(255, 30, 155, 0.04)',\n 'rgba(255, 15, 235, 0.08)',\n 'rgba(243, 14, 249, 0.16)',\n 'rgba(218, 9, 226, 0.24)',\n 'rgba(200, 3, 210, 0.31)',\n 'rgba(186, 1, 196, 0.39)',\n 'rgba(174, 3, 186, 0.48)',\n 'rgba(164, 1, 176, 0.57)',\n 'rgba(156, 0, 170, 0.67)',\n 'rgba(113, 0, 114, 0.83)',\n '#560053',\n '#0d000b',\n ],\n};\n\nexport default purple;\n","import { ColorScaleItem } from '../types';\n\nconst red: ColorScaleItem = {\n dark: [\n '#0f0003',\n '#380015',\n '#560023',\n '#780032',\n '#9d0042',\n '#c10251',\n '#d6225d',\n '#e43165',\n '#ee3a6a',\n '#f4416c',\n '#ffb0b7',\n '#ffe8e8',\n '#ffffff',\n ],\n darkA: [\n 'rgba(250, 0, 50, 0.06)',\n 'rgba(255, 0, 95, 0.22)',\n 'rgba(253, 0, 103, 0.34)',\n 'rgba(255, 0, 106, 0.47)',\n 'rgba(253, 0, 106, 0.62)',\n 'rgba(254, 3, 107, 0.76)',\n 'rgba(255, 40, 111, 0.84)',\n 'rgba(253, 54, 112, 0.9)',\n 'rgba(253, 62, 113, 0.94)',\n 'rgba(254, 68, 112, 0.96)',\n '#ffb0b7',\n '#ffe8e8',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fffbff',\n '#fff3f3',\n '#ffe8e8',\n '#ffdadb',\n '#ffc7ca',\n '#ffb0b7',\n '#ff94a1',\n '#ff6f87',\n '#f4416c',\n '#d6225d',\n '#780032',\n '#0f0003',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(255, 55, 255, 0.02)',\n 'rgba(255, 15, 15, 0.05)',\n 'rgba(255, 25, 25, 0.1)',\n 'rgba(255, 8, 15, 0.15)',\n 'rgba(255, 0, 14, 0.22)',\n 'rgba(255, 0, 23, 0.31)',\n 'rgba(255, 0, 31, 0.42)',\n 'rgba(255, 2, 44, 0.57)',\n 'rgba(240, 2, 59, 0.75)',\n 'rgba(208, 1, 69, 0.87)',\n '#780032',\n '#0f0003',\n ],\n};\n\nexport default red;\n","import { ColorScaleItem } from '../types';\n\nconst volcano: ColorScaleItem = {\n dark: [\n '#0c0100',\n '#2f0a00',\n '#451200',\n '#5d1900',\n '#762000',\n '#8e2a07',\n '#a53716',\n '#bc4424',\n '#d45132',\n '#ec5e41',\n '#ff9480',\n '#ffcbc3',\n '#ffffff',\n ],\n darkA: [\n 'rgba(240, 20, 0, 0.05)',\n 'rgba(247, 53, 0, 0.19)',\n 'rgba(246, 64, 0, 0.28)',\n 'rgba(251, 68, 0, 0.37)',\n 'rgba(251, 68, 0, 0.47)',\n 'rgba(254, 75, 12, 0.56)',\n 'rgba(254, 85, 34, 0.65)',\n 'rgba(254, 92, 49, 0.74)',\n 'rgba(255, 98, 60, 0.83)',\n 'rgba(254, 101, 70, 0.93)',\n '#ff9480',\n '#ffcbc3',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fff7f6',\n '#ffece9',\n '#ffded9',\n '#ffcec5',\n '#ffbbaf',\n '#ffa695',\n '#ff8e78',\n '#fb745a',\n '#ec5e41',\n '#a53716',\n '#5d1900',\n '#0c0100',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(255, 55, 30, 0.04)',\n 'rgba(255, 44, 11, 0.06)',\n 'rgba(255, 35, 2, 0.12)',\n 'rgba(255, 42, 3, 0.20)',\n 'rgba(255, 43, 5, 0.32)',\n 'rgba(255, 43, 3, 0.42)',\n 'rgba(255, 42, 0, 0.53)',\n 'rgba(249, 41, 1, 0.65)',\n 'rgba(230, 40, 2, 0.75)',\n 'rgba(157, 38, 2, 0.92)',\n '#5d1900',\n '#0c0100',\n ],\n};\n\nexport default volcano;\n","import { ColorScaleItem } from '../types';\n\nconst yellow: ColorScaleItem = {\n dark: [\n '#050400',\n '#251d00',\n '#3e3300',\n '#584a00',\n '#736300',\n '#8e7d00',\n '#ab9800',\n '#c7b426',\n '#e3d142',\n '#ffef5c',\n '#fff594',\n '#fffad3',\n '#ffffff',\n ],\n darkA: [\n 'rgba(250, 200, 0, 0.02)',\n 'rgba(247, 193, 0, 0.15)',\n 'rgba(248, 204, 0, 0.25)',\n 'rgba(251, 211, 0, 0.35)',\n 'rgba(250, 215, 0, 0.46)',\n 'rgba(254, 223, 0, 0.56)',\n 'rgba(255, 227, 0, 0.67)',\n 'rgba(255, 231, 49, 0.78)',\n 'rgba(255, 235, 74, 0.89)',\n '#ffef5c',\n '#fff594',\n '#fffad3',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fffeff',\n '#fffcff',\n '#fffbf1',\n '#fffada',\n '#fff9c2',\n '#fff7aa',\n '#fff592',\n '#fff279',\n '#ffef5c',\n '#ab9800',\n '#584a00',\n '#050400',\n ],\n lightA: [\n 'rgba(255, 255, 255, 0.01)',\n 'rgba(255, 155, 255, 0.01)',\n 'rgba(255, 105, 255, 0.02)',\n 'rgba(255, 188, 22, 0.06)',\n 'rgba(255, 222, 8, 0.15)',\n 'rgba(255, 230, 1, 0.24)',\n 'rgba(255, 231, 5, 0.34)',\n 'rgba(255, 232, 2, 0.43)',\n 'rgba(255, 230, 2, 0.53)',\n 'rgba(255, 230, 0, 0.64)',\n '#ab9800',\n '#584a00',\n '#050400',\n ],\n};\n\nexport default yellow;\n","import type { ColorScaleItem } from '../types';\nimport blue from './blue';\nimport cyan from './cyan';\nimport geekblue from './geekblue';\nimport gold from './gold';\nimport gray from './gray';\nimport green from './green';\nimport lime from './lime';\nimport magenta from './magenta';\nimport orange from './orange';\nimport primary from './primary';\nimport purple from './purple';\nimport red from './red';\nimport volcano from './volcano';\nimport yellow from './yellow';\n\nexport interface ColorScales {\n blue: ColorScaleItem;\n cyan: ColorScaleItem;\n geekblue: ColorScaleItem;\n gold: ColorScaleItem;\n gray: ColorScaleItem;\n green: ColorScaleItem;\n lime: ColorScaleItem;\n magenta: ColorScaleItem;\n orange: ColorScaleItem;\n primary: ColorScaleItem;\n purple: ColorScaleItem;\n red: ColorScaleItem;\n volcano: ColorScaleItem;\n yellow: ColorScaleItem;\n}\n\nexport const colorScales: ColorScales = {\n blue,\n cyan,\n geekblue,\n gold,\n gray,\n green,\n lime,\n magenta,\n orange,\n primary,\n purple,\n red,\n volcano,\n yellow,\n};\n\nexport { colorScales as colors };\n\nexport { default as blue } from './blue';\nexport { default as cyan } from './cyan';\nexport { default as geekblue } from './geekblue';\nexport { default as gold } from './gold';\nexport { default as gray } from './gray';\nexport { default as green } from './green';\nexport { default as lime } from './lime';\nexport { default as magenta } from './magenta';\nexport { default as orange } from './orange';\nexport { default as primary } from './primary';\nexport { default as purple } from './purple';\nexport { default as red } from './red';\nexport { default as volcano } from './volcano';\nexport { default as yellow } from './yellow';\n","import { ColorScaleItem } from '../types';\n\nconst mauve: ColorScaleItem = {\n dark: [\n '#000000',\n '#1c1b1e',\n '#252528',\n '#2f2f32',\n '#3a393d',\n '#454448',\n '#504f53',\n '#5b5a5f',\n '#67666a',\n '#737177',\n '#7f7d83',\n '#bbb9bd',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(233, 225, 250, 0.12)',\n 'rgba(231, 231, 250, 0.16)',\n 'rgba(235, 235, 250, 0.2)',\n 'rgba(242, 237, 254, 0.24)',\n 'rgba(238, 234, 248, 0.29)',\n 'rgba(242, 239, 252, 0.33)',\n 'rgba(239, 237, 250, 0.38)',\n 'rgba(245, 243, 252, 0.42)',\n 'rgba(245, 240, 253, 0.47)',\n 'rgba(244, 240, 252, 0.52)',\n 'rgba(253, 250, 255, 0.74)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#fcf8fb',\n '#edeaed',\n '#dfdcdf',\n '#d1ced2',\n '#c2c0c4',\n '#b4b2b7',\n '#a7a4a9',\n '#99979c',\n '#8c8a90',\n '#7f7d83',\n '#4a494d',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(155, 22, 122, 0.03)',\n 'rgba(55, 22, 55, 0.09)',\n 'rgba(26, 5, 26, 0.14)',\n 'rgba(25, 10, 30, 0.2)',\n 'rgba(11, 3, 19, 0.25)',\n 'rgba(13, 7, 23, 0.31)',\n 'rgba(11, 2, 16, 0.36)',\n 'rgba(6, 1, 14, 0.41)',\n 'rgba(5, 1, 14, 0.46)',\n 'rgba(4, 0, 12, 0.51)',\n 'rgba(4, 2, 8, 0.72)',\n 'rgba(3, 2, 5, 0.9)',\n ],\n};\n\nexport default mauve;\n","import { ColorScaleItem } from '../types';\n\nconst olive: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1c1b',\n '#232624',\n '#2d302e',\n '#383a38',\n '#424542',\n '#4d504d',\n '#585c58',\n '#646763',\n '#70736e',\n '#7c7f79',\n '#b9bab5',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 255, 245, 0.11)',\n 'rgba(233, 253, 240, 0.15)',\n 'rgba(237, 253, 242, 0.19)',\n 'rgba(243, 252, 243, 0.23)',\n 'rgba(236, 246, 236, 0.28)',\n 'rgba(241, 250, 241, 0.32)',\n 'rgba(238, 249, 238, 0.37)',\n 'rgba(244, 251, 241, 0.41)',\n 'rgba(243, 250, 239, 0.46)',\n 'rgba(248, 254, 242, 0.5)',\n 'rgba(253, 255, 248, 0.73)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#faf9f4',\n '#ecebe6',\n '#ddddd7',\n '#cfcfc9',\n '#c0c1bb',\n '#b2b4ae',\n '#a4a6a0',\n '#969993',\n '#898c86',\n '#7c7f79',\n '#484b48',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(155, 135, 35, 0.05)',\n 'rgba(65, 55, 5, 0.1)',\n 'rgba(43, 43, 5, 0.16)',\n 'rgba(37, 37, 10, 0.22)',\n 'rgba(22, 25, 3, 0.27)',\n 'rgba(14, 21, 2, 0.32)',\n 'rgba(16, 21, 5, 0.38)',\n 'rgba(11, 18, 4, 0.43)',\n 'rgba(9, 15, 3, 0.48)',\n 'rgba(8, 13, 2, 0.53)',\n 'rgba(1, 5, 1, 0.72)',\n 'rgba(1, 3, 2, 0.9)',\n ],\n};\n\nexport default olive;\n","import { ColorScaleItem } from '../types';\n\nconst sage: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1b1c',\n '#232526',\n '#2d2f30',\n '#383a3a',\n '#424545',\n '#4d5050',\n '#585c5c',\n '#636766',\n '#6e7371',\n '#797f7c',\n '#b5bab6',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 246, 255, 0.11)',\n 'rgba(233, 246, 253, 0.15)',\n 'rgba(237, 248, 253, 0.19)',\n 'rgba(243, 252, 252, 0.23)',\n 'rgba(236, 246, 246, 0.28)',\n 'rgba(241, 250, 250, 0.32)',\n 'rgba(238, 249, 249, 0.37)',\n 'rgba(241, 251, 248, 0.41)',\n 'rgba(239, 250, 246, 0.46)',\n 'rgba(242, 254, 248, 0.5)',\n 'rgba(248, 255, 250, 0.73)',\n 'rgba(255, 255, 255, 1)',\n ],\n light: [\n '#ffffff',\n '#f5faf4',\n '#e7ece6',\n '#d7ddd7',\n '#c9cfc9',\n '#bbc1bc',\n '#aeb4b0',\n '#a0a6a2',\n '#939996',\n '#868c89',\n '#797f7c',\n '#484b4b',\n '#111111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 155, 35, 0.05)',\n 'rgba(15, 65, 5, 0.1)',\n 'rgba(5, 43, 5, 0.16)',\n 'rgba(10, 37, 10, 0.22)',\n 'rgba(3, 25, 6, 0.27)',\n 'rgba(2, 21, 9, 0.32)',\n 'rgba(5, 21, 10, 0.38)',\n 'rgba(4, 18, 11, 0.43)',\n 'rgba(3, 15, 9, 0.48)',\n 'rgba(2, 13, 7, 0.53)',\n 'rgba(1, 5, 5, 0.72)',\n 'rgba(1, 2, 3, 0.9)',\n ],\n};\n\nexport default sage;\n","import { ColorScaleItem } from '../types';\n\nconst sand: ColorScaleItem = {\n dark: [\n '#000000',\n '#1c1c18',\n '#262521',\n '#30302b',\n '#3a3a35',\n '#45453f',\n '#505049',\n '#5c5b54',\n '#67675f',\n '#73726a',\n '#7f7e76',\n '#bcbab2',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 255, 218, 0.11)',\n 'rgba(253, 247, 220, 0.15)',\n 'rgba(253, 253, 226, 0.19)',\n 'rgba(252, 252, 230, 0.23)',\n 'rgba(246, 246, 225, 0.28)',\n 'rgba(250, 250, 228, 0.32)',\n 'rgba(249, 246, 227, 0.37)',\n 'rgba(251, 251, 232, 0.41)',\n 'rgba(250, 248, 230, 0.46)',\n 'rgba(254, 252, 236, 0.5)',\n 'rgba(254, 251, 241, 0.74)',\n 'rgba(255, 252, 245, 0.99)',\n ],\n light: [\n '#ffffff',\n '#fcf9f3',\n '#edebe4',\n '#dfddd5',\n '#d1cfc7',\n '#c3c1b9',\n '#b5b3ab',\n '#a7a69d',\n '#999890',\n '#8c8b83',\n '#7f7e76',\n '#4b4a44',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(195, 135, 15, 0.05)',\n 'rgba(91, 73, 10, 0.11)',\n 'rgba(67, 55, 8, 0.17)',\n 'rgba(46, 37, 0, 0.22)',\n 'rgba(41, 34, 5, 0.28)',\n 'rgba(31, 25, 0, 0.33)',\n 'rgba(29, 27, 4, 0.39)',\n 'rgba(23, 21, 3, 0.44)',\n 'rgba(20, 18, 2, 0.49)',\n 'rgba(18, 16, 1, 0.54)',\n 'rgba(12, 10, 2, 0.74)',\n 'rgba(6, 6, 1, 0.91)',\n ],\n};\n\nexport default sand;\n","import { ColorScaleItem } from '../types';\n\nconst slate: ColorScaleItem = {\n dark: [\n '#000000',\n '#1b1c1d',\n '#242527',\n '#2e2f32',\n '#383a3c',\n '#434547',\n '#4e5052',\n '#595b5e',\n '#64676a',\n '#707276',\n '#7b7e82',\n '#b8babc',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(225, 233, 242, 0.12)',\n 'rgba(225, 231, 244, 0.16)',\n 'rgba(230, 235, 250, 0.2)',\n 'rgba(233, 242, 250, 0.24)',\n 'rgba(239, 246, 254, 0.28)',\n 'rgba(236, 242, 248, 0.33)',\n 'rgba(241, 246, 254, 0.37)',\n 'rgba(238, 245, 252, 0.42)',\n 'rgba(238, 243, 251, 0.47)',\n 'rgba(241, 247, 255, 0.51)',\n 'rgba(249, 251, 254, 0.74)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f9f9fa',\n '#ebebec',\n '#dcddde',\n '#cecfd0',\n '#bfc1c3',\n '#b1b3b5',\n '#a4a6a8',\n '#96989b',\n '#898b8e',\n '#7b7e82',\n '#484a4d',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 55, 88, 0.03)',\n 'rgba(5, 5, 17, 0.08)',\n 'rgba(5, 12, 19, 0.14)',\n 'rgba(10, 15, 20, 0.2)',\n 'rgba(9, 17, 24, 0.26)',\n 'rgba(3, 10, 16, 0.31)',\n 'rgba(2, 8, 13, 0.36)',\n 'rgba(5, 10, 17, 0.42)',\n 'rgba(4, 8, 15, 0.47)',\n 'rgba(1, 7, 15, 0.52)',\n 'rgba(1, 4, 8, 0.72)',\n 'rgba(2, 3, 4, 0.9)',\n ],\n};\n\nexport default slate;\n","import type { ColorScaleItem } from '@/color/types';\n\nimport mauve from './mauve';\nimport olive from './olive';\nimport sage from './sage';\nimport sand from './sand';\nimport slate from './slate';\n\nexport interface NeutralColorScales {\n mauve: ColorScaleItem;\n olive: ColorScaleItem;\n sage: ColorScaleItem;\n sand: ColorScaleItem;\n slate: ColorScaleItem;\n}\n\nexport const neutralColorScales: NeutralColorScales = {\n mauve,\n olive,\n sage,\n sand,\n slate,\n};\n\nexport { neutralColorScales as neutrals };\nexport { default as mauve } from './mauve';\nexport { default as olive } from './olive';\nexport { default as sage } from './sage';\nexport { default as sand } from './sand';\nexport { default as slate } from './slate';\n","import {\n blue,\n cyan,\n geekblue,\n gold,\n green,\n lime,\n magenta,\n orange,\n purple,\n red,\n volcano,\n yellow,\n} from '@/color/colors';\nimport { mauve, olive, sage, sand, slate } from '@/color/neutrals';\n\nexport const primaryColors = {\n blue: blue.dark[9],\n cyan: cyan.dark[9],\n geekblue: geekblue.dark[9],\n gold: gold.dark[9],\n green: green.dark[9],\n lime: lime.dark[9],\n magenta: magenta.dark[9],\n orange: orange.dark[9],\n purple: purple.dark[9],\n red: red.dark[9],\n volcano: volcano.dark[9],\n yellow: yellow.dark[9],\n};\n\nexport type PrimaryColorsObj = typeof primaryColors;\nexport type PrimaryColors = keyof PrimaryColorsObj;\nexport const primaryColorsSwatches = [\n primaryColors.red,\n primaryColors.orange,\n primaryColors.gold,\n primaryColors.yellow,\n primaryColors.lime,\n primaryColors.green,\n primaryColors.cyan,\n primaryColors.blue,\n primaryColors.geekblue,\n primaryColors.purple,\n primaryColors.magenta,\n primaryColors.volcano,\n];\nexport const neutralColors = {\n mauve: mauve.dark[9],\n olive: olive.dark[9],\n sage: sage.dark[9],\n sand: sand.dark[9],\n slate: slate.dark[9],\n};\nexport const neutralColorsSwatches = [\n neutralColors.mauve,\n neutralColors.slate,\n neutralColors.sage,\n neutralColors.olive,\n neutralColors.sand,\n];\n\nexport type NeutralColorsObj = typeof neutralColors;\nexport type NeutralColors = keyof NeutralColorsObj;\n\nexport const findCustomThemeName = (type: 'primary' | 'neutral', value: string) => {\n const res = type === 'primary' ? primaryColors : neutralColors;\n const result = Object.entries(res).find((item) => item[1] === value);\n return result?.[0];\n};\n","import { GetCustomStylish, keyframes } from 'antd-style';\n\nimport { LobeCustomStylish } from '@/types/customStylish';\n\nexport const generateCustomStylish: GetCustomStylish<LobeCustomStylish> = ({\n css,\n token,\n isDarkMode,\n}) => {\n const gradient = keyframes`\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n `;\n\n return {\n active: css`\n color: ${token.colorText};\n background: ${token.colorFillSecondary};\n\n &:hover {\n color: ${token.colorText};\n background: ${token.colorFill};\n }\n `,\n blur: css`\n backdrop-filter: saturate(150%) blur(10px);\n `,\n blurStrong: css`\n backdrop-filter: saturate(150%) blur(36px);\n `,\n bottomScrollbar: css`\n ::-webkit-scrollbar {\n width: 0;\n height: 4px;\n background-color: transparent;\n\n &-thumb {\n border-radius: 4px;\n background-color: ${token.colorFill};\n transition: background-color 500ms ${token.motionEaseOut};\n }\n\n &-corner {\n display: none;\n width: 0;\n height: 0;\n }\n }\n `,\n disabled: css`\n cursor: not-allowed;\n opacity: 0.5;\n `,\n gradientAnimation: css`\n border-radius: inherit;\n background-image: linear-gradient(\n -45deg,\n ${token.gold},\n ${token.magenta},\n ${token.geekblue},\n ${token.cyan}\n );\n background-size: 400% 400%;\n animation: 5s ${gradient} 5s ease infinite;\n `,\n noScrollbar: css`\n ::-webkit-scrollbar {\n display: none;\n width: 0;\n height: 0;\n background-color: transparent;\n }\n `,\n resetLinkColor: css`\n cursor: pointer;\n color: ${token.colorTextSecondary};\n\n &:hover {\n color: ${token.colorText};\n }\n `,\n shadow: css`\n box-shadow:\n 0 1px 0 -1px ${isDarkMode ? token.colorBgLayout : token.colorBorder},\n 0 1px 2px -0.5px ${isDarkMode ? token.colorBgLayout : token.colorBorder},\n 0 2px 2px -1px ${isDarkMode ? token.colorBgLayout : token.colorBorderSecondary},\n 0 3px 6px -4px ${isDarkMode ? token.colorBgLayout : token.colorBorderSecondary};\n `,\n variantBorderless: css`\n border: none;\n background: none;\n box-shadow: none;\n\n &:hover {\n background: ${token.colorFillTertiary};\n }\n `,\n variantBorderlessDanger: css`\n border: none;\n background: none;\n box-shadow: none;\n\n &:hover {\n background: ${token.colorErrorFillTertiary};\n box-shadow: inset 0 0 0 1px ${token.colorErrorFillTertiary};\n }\n `,\n variantBorderlessWithoutHover: css`\n border: none;\n background: none;\n box-shadow: none;\n `,\n variantFilled: css`\n background: ${token.colorFillTertiary};\n\n &:hover {\n background: ${token.colorFillSecondary};\n }\n `,\n variantFilledDanger: css`\n background: ${token.colorErrorFillTertiary};\n\n &:hover {\n background: ${token.colorErrorFillSecondary};\n }\n `,\n variantFilledWithoutHover: css`\n background: ${token.colorFillTertiary};\n `,\n variantOutlined: css`\n border: 1px solid ${token.colorBorderSecondary};\n background: ${token.colorBgContainer};\n\n &:hover {\n border: 1px solid ${token.colorBorder};\n background: ${token.colorBgContainer};\n }\n `,\n\n variantOutlinedDanger: css`\n border: 1px solid ${token.colorErrorBorder};\n\n &:hover {\n border: 1px solid ${token.colorErrorBorder};\n }\n `,\n variantOutlinedWithoutHover: css`\n border: 1px solid ${token.colorBorderSecondary};\n background: ${token.colorBgContainer};\n `,\n };\n};\n","import { createStaticStyles, keyframes } from 'antd-style';\n\nimport type { LobeCustomStylish } from '@/types/customStylish';\n\n/**\n * Static version of custom stylish utilities.\n * This can be used with createStaticStyles for better performance.\n *\n * Note: Some styles that depend on isDarkMode or custom tokens may have limitations.\n * For full dynamic support, use the regular customStylish from './customStylish'.\n */\nconst gradient = keyframes`\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n`;\n\nexport const staticStylish = createStaticStyles(({ css, cssVar }) => ({\n active: css`\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFill};\n }\n `,\n\n blur: css`\n backdrop-filter: saturate(150%) blur(10px);\n `,\n\n blurStrong: css`\n backdrop-filter: saturate(150%) blur(36px);\n `,\n\n bottomScrollbar: css`\n ::-webkit-scrollbar {\n width: 0;\n height: 4px;\n background-color: transparent;\n\n &-thumb {\n border-radius: 4px;\n background-color: ${cssVar.colorFill};\n transition: background-color 500ms ${cssVar.motionEaseOut};\n }\n\n &-corner {\n display: none;\n width: 0;\n height: 0;\n }\n }\n `,\n\n disabled: css`\n cursor: not-allowed;\n opacity: 0.5;\n `,\n\n gradientAnimation: css`\n border-radius: inherit;\n background-image: linear-gradient(\n -45deg,\n ${cssVar.gold},\n ${cssVar.magenta},\n ${cssVar.geekblue},\n ${cssVar.cyan}\n );\n background-size: 400% 400%;\n animation: 5s ${gradient} 5s ease infinite;\n `,\n\n noScrollbar: css`\n ::-webkit-scrollbar {\n display: none;\n width: 0;\n height: 0;\n background-color: transparent;\n }\n `,\n\n resetLinkColor: css`\n cursor: pointer;\n color: ${cssVar.colorTextSecondary};\n\n &:hover {\n color: ${cssVar.colorText};\n }\n `,\n\n /**\n * Shadow style using CSS variables.\n * Note: This uses CSS variables which automatically adapt to light/dark mode.\n * For more control, use the dynamic version from customStylish.\n */\n shadow: css`\n box-shadow:\n 0 1px 0 -1px ${cssVar.colorBorder},\n 0 1px 2px -0.5px ${cssVar.colorBorder},\n 0 2px 2px -1px ${cssVar.colorBorderSecondary},\n 0 3px 6px -4px ${cssVar.colorBorderSecondary};\n `,\n\n variantBorderless: css`\n border: none;\n background: none;\n box-shadow: none;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n `,\n\n /**\n * Variant borderless danger style.\n * Note: Uses colorErrorBg as fallback since colorErrorFillTertiary is not in cssVar.\n * For exact match, use the dynamic version from customStylish.\n */\n variantBorderlessDanger: css`\n border: none;\n background: none;\n box-shadow: none;\n\n &:hover {\n background: ${cssVar.colorErrorBg};\n box-shadow: inset 0 0 0 1px ${cssVar.colorErrorBg};\n }\n `,\n\n variantBorderlessWithoutHover: css`\n border: none;\n background: none;\n box-shadow: none;\n `,\n\n variantFilled: css`\n background: ${cssVar.colorFillTertiary};\n\n &:hover {\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n /**\n * Variant filled danger style.\n * Note: Uses colorErrorBg as fallback since colorErrorFillTertiary/Secondary are not in cssVar.\n * For exact match, use the dynamic version from customStylish.\n */\n variantFilledDanger: css`\n background: ${cssVar.colorErrorBg};\n\n &:hover {\n background: ${cssVar.colorErrorBgHover};\n }\n `,\n\n variantFilledWithoutHover: css`\n background: ${cssVar.colorFillTertiary};\n `,\n\n variantOutlined: css`\n border: 1px solid ${cssVar.colorBorderSecondary};\n background: ${cssVar.colorBgContainer};\n\n &:hover {\n border: 1px solid ${cssVar.colorBorder};\n background: ${cssVar.colorBgContainer};\n }\n `,\n\n variantOutlinedDanger: css`\n border: 1px solid ${cssVar.colorErrorBorder};\n\n &:hover {\n border: 1px solid ${cssVar.colorErrorBorder};\n }\n `,\n\n variantOutlinedWithoutHover: css`\n border: 1px solid ${cssVar.colorBorderSecondary};\n background: ${cssVar.colorBgContainer};\n `,\n})) as LobeCustomStylish;\n","import { GetCustomToken } from 'antd-style';\nimport { AliasToken } from 'antd/es/theme/interface';\nimport { camelCase } from 'es-toolkit/compat';\nimport { mix } from 'polished';\n\nimport { colorScales } from '@/color/colors';\nimport type { ColorScaleItem } from '@/color/types';\nimport type { LobeCustomToken } from '@/types/customToken';\n\nconst generateColorPalette = ({\n name,\n scale,\n appearance,\n}: {\n appearance: 'light' | 'dark';\n name: string;\n scale: ColorScaleItem;\n}) => {\n const isDarkMode = appearance === 'dark';\n return {\n [`${name}Fill`]: scale[`${appearance}A`][isDarkMode ? 3 : 4],\n [`${name}FillSecondary`]: scale[`${appearance}A`][isDarkMode ? 2 : 3],\n [`${name}FillTertiary`]: scale[`${appearance}A`][isDarkMode ? 1 : 2],\n [`${name}FillQuaternary`]: scale[`${appearance}A`][isDarkMode ? 0 : 1],\n [`${name}Bg`]: scale[`${appearance}A`][1],\n [`${name}BgHover`]: scale[`${appearance}A`][2],\n [`${name}Border`]: scale[appearance][4],\n [`${name}BorderSecondary`]: scale[appearance][3],\n [`${name}BorderHover`]: scale[appearance][isDarkMode ? 5 : 3],\n [`${name}Hover`]: scale[appearance][isDarkMode ? 10 : 8],\n [`${name}`]: scale[appearance][9],\n [`${name}Active`]: scale[appearance][isDarkMode ? 7 : 10],\n [`${name}TextHover`]: scale[`${appearance}A`][isDarkMode ? 10 : 8],\n [`${name}Text`]: scale[`${appearance}A`][9],\n [`${name}TextActive`]: scale[`${appearance}A`][isDarkMode ? 7 : 10],\n };\n};\n\nconst generateCustomColorPalette = ({\n name,\n scale,\n appearance,\n}: {\n appearance: 'light' | 'dark';\n name: string;\n scale: ColorScaleItem;\n}): Partial<AliasToken> => {\n const colorStepPalette: { [key: string]: string } = {};\n\n for (const [index, color] of scale[appearance].entries()) {\n if (index === 0 || index === 12) continue;\n\n colorStepPalette[`${name}${index}`] = color;\n }\n for (const [index, color] of scale[`${appearance}A`].entries()) {\n if (index === 0 || index === 12) continue;\n\n colorStepPalette[`${name}${index}A`] = color;\n }\n\n return {\n ...colorStepPalette,\n ...generateColorPalette({ appearance, name, scale }),\n };\n};\n\nexport const generateCustomColorToken = (isDarkMode: boolean) => {\n let colorCustomToken: any = {};\n\n for (const [type, scale] of Object.entries(colorScales)) {\n colorCustomToken = {\n ...colorCustomToken,\n ...generateCustomColorPalette({\n appearance: isDarkMode ? 'dark' : 'light',\n name: camelCase(type),\n scale,\n }),\n };\n }\n\n return colorCustomToken;\n};\n\nexport const generateCustomToken: GetCustomToken<LobeCustomToken> = ({ isDarkMode, token }) => {\n return {\n ...generateCustomColorToken(isDarkMode),\n colorBgContainerSecondary: mix(0.5, token.colorBgLayout, token.colorBgContainer),\n };\n};\n","import { AliasToken } from 'antd/es/theme/interface';\nimport { capitalize } from 'es-toolkit/compat';\n\nimport type { ColorScaleItem } from '@/color/types';\n\nexport const generateColorPalette = ({\n type,\n scale,\n appearance,\n}: {\n appearance: 'light' | 'dark';\n scale: ColorScaleItem;\n type: 'Primary' | 'Success' | 'Warning' | 'Error' | 'Info' | string;\n}): Partial<AliasToken> => {\n const name = capitalize(type);\n const isDarkMode = appearance === 'dark';\n return {\n [`color${name}Fill`]: scale[`${appearance}A`][isDarkMode ? 3 : 4],\n [`color${name}FillSecondary`]: scale[`${appearance}A`][isDarkMode ? 2 : 3],\n [`color${name}FillTertiary`]: scale[`${appearance}A`][isDarkMode ? 1 : 2],\n [`color${name}FillQuaternary`]: scale[`${appearance}A`][isDarkMode ? 0 : 1],\n [`color${name}Bg`]: scale[appearance][1],\n [`color${name}BgHover`]: scale[appearance][2],\n [`color${name}Border`]: scale[appearance][4],\n [`color${name}BorderHover`]: scale[appearance][isDarkMode ? 5 : 3],\n [`color${name}Hover`]: scale[appearance][isDarkMode ? 10 : 8],\n [`color${name}`]: scale[appearance][9],\n [`color${name}Active`]: scale[appearance][isDarkMode ? 7 : 10],\n [`color${name}TextHover`]: scale[appearance][isDarkMode ? 10 : 8],\n [`color${name}Text`]: scale[appearance][9],\n [`color${name}TextActive`]: scale[appearance][isDarkMode ? 7 : 10],\n };\n};\n\nexport const generateColorNeutralPalette = ({\n scale,\n appearance,\n}: {\n appearance: 'light' | 'dark';\n scale: ColorScaleItem;\n}): Partial<AliasToken> => {\n return {\n colorBgContainer: appearance === 'dark' ? scale[appearance][1] : scale[appearance][0],\n colorBgElevated: appearance === 'dark' ? scale[appearance][2] : scale[appearance][0],\n colorBgLayout: appearance === 'dark' ? scale[appearance][0] : scale[appearance][1],\n colorBgMask: scale.lightA[8],\n colorBgSpotlight: scale[appearance][4],\n colorBorder: scale[appearance][3],\n colorBorderSecondary: scale[appearance][2],\n colorFill: scale[`${appearance}A`][3],\n colorFillQuaternary: scale[`${appearance}A`][0],\n colorFillSecondary: scale[`${appearance}A`][2],\n colorFillTertiary: scale[`${appearance}A`][1],\n colorText: scale[appearance][12],\n colorTextQuaternary: scale[appearance][6],\n colorTextSecondary: scale[appearance][10],\n colorTextTertiary: scale[appearance][8],\n };\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useRef } from 'react';\n\nimport Tooltip from '@/Tooltip';\nimport { useTextOverflow } from '@/hooks/useTextOverflow';\n\nimport { variants } from './styles';\nimport type { TextProps } from './type';\n\nconst Text: FC<TextProps> = ({\n as: Container = 'div',\n align,\n className,\n children,\n style,\n type,\n disabled,\n strong,\n italic,\n underline,\n delete: deleteStyle,\n fontSize,\n lineClamp,\n lineHeight,\n mark,\n code,\n color,\n weight,\n ellipsis,\n noWrap,\n textDecoration,\n textTransform,\n whiteSpace,\n wordBreak,\n ...rest\n}) => {\n const textRef = useRef<HTMLElement>(null);\n const isOverflow = useTextOverflow(textRef, ellipsis, children);\n\n const isMultiEllipsis = typeof ellipsis === 'object' && !!ellipsis.rows && ellipsis.rows > 1;\n const tooltipWhenOverflow = typeof ellipsis === 'object' && ellipsis.tooltipWhenOverflow;\n\n const textStyle = {\n ...(color && { color }),\n ...(weight && { fontWeight: weight }),\n ...(lineHeight && { lineHeight }),\n ...(textTransform && { textTransform }),\n ...(textDecoration && { textDecoration }),\n ...(wordBreak && { wordBreak }),\n ...(typeof ellipsis === 'object' &&\n ellipsis.rows && {\n WebkitLineClamp: ellipsis.rows,\n }),\n ...(!ellipsis &&\n !!lineClamp && {\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lineClamp,\n display: '-webkit-box',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n ...(fontSize && { fontSize }),\n ...(align && { textAlign: align }),\n ...(!isMultiEllipsis && noWrap && { whiteSpace: 'nowrap' as const }),\n ...(whiteSpace && { whiteSpace }),\n ...style,\n };\n\n const content = (\n <Container\n className={cx(\n variants({\n as: ['h1', 'h2', 'h3', 'h4', 'h5', 'p'].includes(Container as string)\n ? (Container as any)\n : undefined,\n code,\n delete: deleteStyle,\n disabled,\n ellipsis: ellipsis\n ? typeof ellipsis === 'object' && ellipsis.rows\n ? 'multi'\n : true\n : undefined,\n italic,\n mark,\n strong,\n type,\n underline,\n }),\n className,\n )}\n ref={textRef}\n style={textStyle}\n {...rest}\n >\n {children}\n </Container>\n );\n\n // 处理带有 tooltip 的省略\n if (\n ellipsis &&\n typeof ellipsis === 'object' &&\n (ellipsis.tooltip || ellipsis.tooltipWhenOverflow)\n ) {\n // 如果设置了 tooltipWhenOverflow,只在溢出时显示 tooltip\n if (tooltipWhenOverflow && !isOverflow) {\n return content;\n }\n\n const title = typeof ellipsis.tooltip === 'string' ? ellipsis.tooltip : children;\n if (ellipsis.tooltip && typeof ellipsis.tooltip === 'object')\n return (\n <Tooltip {...ellipsis.tooltip} title={ellipsis.tooltip?.title || title}>\n {content}\n </Tooltip>\n );\n return <Tooltip title={title}>{content}</Tooltip>;\n }\n\n return content;\n};\n\nText.displayName = 'Text';\n\nexport default Text;\n","'use client';\n\nimport { type FC, useContext } from 'react';\n\nimport { TooltipInGroup } from './TooltipInGroup';\nimport { TooltipStandalone } from './TooltipStandalone';\nimport { TooltipGroupHandleContext } from './groupContext';\nimport type { TooltipProps } from './type';\n\nexport const Tooltip: FC<TooltipProps> = (props) => {\n const group = useContext(TooltipGroupHandleContext);\n\n const canUseGroup =\n Boolean(group) &&\n props.open === undefined &&\n props.defaultOpen === undefined &&\n !props.standalone;\n\n return canUseGroup ? <TooltipInGroup {...props} /> : <TooltipStandalone {...props} />;\n};\n\nexport default Tooltip;\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { type FC, cloneElement, isValidElement, useCallback, useContext, useMemo } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useNativeButton } from '@/hooks/useNativeButton';\n\nimport { TooltipGroupHandleContext } from './groupContext';\nimport type { TooltipProps } from './type';\nimport { useMergedTooltipProps } from './useMergedTooltipProps';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\nexport const TooltipInGroup: FC<TooltipProps> = ({ children, ref: refProp, ...props }) => {\n const group = useContext(TooltipGroupHandleContext);\n const item = useMergedTooltipProps(props);\n\n const resolvedOpenDelay = useMemo(() => {\n if (item.openDelay !== undefined) return item.openDelay;\n if (item.mouseEnterDelay !== undefined) return item.mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [item.mouseEnterDelay, item.openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (item.closeDelay !== undefined) return item.closeDelay;\n if (item.mouseLeaveDelay !== undefined) return item.mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [item.closeDelay, item.mouseLeaveDelay]);\n\n const disabled = Boolean(item.disabled);\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const childElement = isValidElement(children) ? children : null;\n\n const renderTrigger = useCallback(\n (renderProps: unknown) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return renderProps as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = renderProps as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((childElement as any).props, resolvedProps);\n return cloneElement(childElement as any, {\n ...mergedProps,\n ref: mergeRefs([(childElement as any).ref, (renderProps as any).ref, refProp]),\n });\n },\n [childElement, isNativeButtonTriggerElement, refProp],\n );\n\n // Don't render trigger behavior if no content\n // eslint-disable-next-line eqeqeq\n if (item.title == null && !item.hotkey) {\n return children as any;\n }\n\n const triggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n payload: item,\n };\n\n if (childElement) {\n return (\n <BaseTooltip.Trigger handle={group ?? undefined} {...triggerProps} render={renderTrigger} />\n );\n }\n\n return (\n <BaseTooltip.Trigger handle={group ?? undefined} {...triggerProps} ref={refProp}>\n {children}\n </BaseTooltip.Trigger>\n );\n};\n\nTooltipInGroup.displayName = 'TooltipInGroup';\n","import { type ReactElement, type ReactNode, isValidElement, useMemo } from 'react';\n\nexport interface UseNativeButtonOptions {\n /**\n * The children element that will be used as the trigger\n */\n children: ReactNode;\n /**\n * User-provided nativeButton prop\n */\n nativeButton?: boolean;\n /**\n * Additional nativeButton from trigger props (for DropdownMenu)\n */\n triggerNativeButton?: boolean;\n}\n\nexport interface UseNativeButtonResult {\n /**\n * Whether the trigger element is a native button\n */\n isNativeButtonTriggerElement: boolean;\n /**\n * The resolved nativeButton value to pass to Base UI components\n */\n resolvedNativeButton: boolean | undefined;\n}\n\n/**\n * Map of component displayNames to their nativeButton values.\n * Components that render native <button> elements should be true,\n * components that render non-button elements should be false.\n */\nconst NATIVE_BUTTON_MAP: Record<string, boolean> = {\n A: false,\n ActionIcon: false,\n ActionIconGroup: false,\n Alert: false,\n Avatar: false,\n AvatarGroup: false,\n Block: false,\n BottomGradientButton: true,\n Burger: false,\n Button: true,\n Center: false,\n Checkbox: false,\n CheckboxGroup: false,\n Collapse: false,\n ColorSwatches: false,\n CopyButton: false,\n DownloadButton: false,\n EditableText: false,\n Empty: false,\n FileTypeIcon: false,\n Flexbox: false,\n FluentEmoji: false,\n GradientButton: true,\n Highlighter: false,\n Hotkey: false,\n Icon: false,\n Image: false,\n Img: false,\n Input: false,\n InputNumber: false,\n InputPassword: false,\n List: false,\n ListItem: false,\n LobeSelect: false,\n LobeSwitch: false,\n Markdown: false,\n MaterialFileTypeIcon: false,\n Segmented: false,\n Skeleton: false,\n SkeletonAvatar: false,\n SkeletonBlock: false,\n SkeletonButton: false,\n SkeletonParagraph: false,\n SkeletonTags: false,\n SkeletonTitle: false,\n Snippet: false,\n Tag: false,\n Text: false,\n TextArea: false,\n ThemeSwitch: false,\n Video: false,\n};\n\n/**\n * Get the displayName of a React component from an element.\n * Handles function components, forwardRef, memo, etc.\n */\nfunction getComponentDisplayName(element: ReactElement): string | undefined {\n const type = element.type;\n\n if (typeof type === 'string') return undefined;\n\n if (typeof type === 'function') {\n return (type as any).displayName || type.name;\n }\n\n if (typeof type === 'object' && type !== null) {\n // Handle forwardRef, memo, etc.\n const displayName =\n (type as any).displayName ||\n (type as any).render?.displayName ||\n (type as any).render?.name ||\n (type as any).type?.displayName ||\n (type as any).type?.name;\n return displayName;\n }\n\n return undefined;\n}\n\n/**\n * Hook to resolve nativeButton prop for Base UI trigger components.\n *\n * When using `render`, Base UI expects the rendered element to be a native <button> by default.\n * If we can infer it's not, we opt out to avoid warnings (users can still override via `nativeButton`).\n */\nexport function useNativeButton({\n children,\n nativeButton,\n triggerNativeButton,\n}: UseNativeButtonOptions): UseNativeButtonResult {\n const isNativeButtonTriggerElement = useMemo(() => {\n if (!isValidElement(children)) return false;\n return typeof children.type === 'string' && children.type === 'button';\n }, [children]);\n\n const resolvedNativeButton = useMemo(() => {\n // User-provided nativeButton takes highest priority\n if (nativeButton !== undefined) return nativeButton;\n // Trigger props nativeButton (for DropdownMenu) takes second priority\n if (triggerNativeButton !== undefined) return triggerNativeButton;\n // If it's a native button element, return true\n if (isNativeButtonTriggerElement) return true;\n // If children is not a valid element, let Base UI decide\n if (!isValidElement(children)) return undefined;\n // If it's a string type but not a button (e.g., 'div'), return false\n if (typeof children.type === 'string') return false;\n\n // Check if it's a known component from the library\n const displayName = getComponentDisplayName(children);\n if (displayName && displayName in NATIVE_BUTTON_MAP) {\n return NATIVE_BUTTON_MAP[displayName];\n }\n\n // For unknown React components, default to false to avoid warnings\n // since most custom components don't render native buttons\n return false;\n }, [children, isNativeButtonTriggerElement, nativeButton, triggerNativeButton]);\n\n return {\n isNativeButtonTriggerElement,\n resolvedNativeButton,\n };\n}\n","'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { createContext } from 'react';\n\nimport type { TooltipProps } from './type';\n\nexport type TooltipGroupItem = Omit<TooltipProps, 'children' | 'open' | 'defaultOpen' | 'ref'>;\n\nexport type TooltipGroupSharedProps = Omit<\n TooltipProps,\n 'children' | 'defaultOpen' | 'open' | 'ref' | 'title'\n> & {\n /**\n * @description Whether to enable content layout animation when switching triggers\n * @default false\n */\n layoutAnimation?: boolean;\n};\n\nexport type TooltipGroupHandle = ReturnType<typeof BaseTooltip.createHandle<TooltipGroupItem>>;\n\nexport const TooltipGroupHandleContext = createContext<TooltipGroupHandle | null>(null);\nexport const TooltipGroupPropsContext = createContext<TooltipGroupSharedProps | null>(null);\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { type TooltipGroupItem, TooltipGroupPropsContext } from './groupContext';\nimport type { TooltipProps } from './type';\n\nexport const useMergedTooltipProps = (props: Partial<TooltipProps>): TooltipGroupItem => {\n const sharedProps = useContext(TooltipGroupPropsContext);\n\n const {\n arrow,\n className,\n classNames,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n openDelay,\n placement,\n styles: styleProps,\n title,\n zIndex,\n positionerProps,\n triggerProps,\n popupProps,\n } = props;\n\n const mergedClassName = useMemo(() => {\n if (!sharedProps?.className && !className) return undefined;\n return [sharedProps?.className, className].filter(Boolean).join(' ');\n }, [className, sharedProps?.className]);\n\n const mergedClassNames = useMemo(() => {\n if (!sharedProps?.classNames && !classNames) return undefined;\n return { ...sharedProps?.classNames, ...classNames };\n }, [classNames, sharedProps?.classNames]);\n\n const resolvedSharedStyles = useMemo(() => {\n if (typeof sharedProps?.styles === 'function') return undefined;\n return sharedProps?.styles;\n }, [sharedProps?.styles]);\n\n const resolvedLocalStyles = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const mergedStyles = useMemo(() => {\n if (!resolvedSharedStyles && !resolvedLocalStyles) return undefined;\n return { ...resolvedSharedStyles, ...resolvedLocalStyles };\n }, [resolvedSharedStyles, resolvedLocalStyles]);\n\n const mergedHotkeyProps = useMemo(() => {\n if (!sharedProps?.hotkeyProps && !hotkeyProps) return undefined;\n return { ...sharedProps?.hotkeyProps, ...hotkeyProps };\n }, [hotkeyProps, sharedProps?.hotkeyProps]);\n\n const mergedOnOpenChange = useMemo(() => {\n if (!sharedProps?.onOpenChange && !onOpenChange) return undefined;\n return (open: boolean) => {\n sharedProps?.onOpenChange?.(open);\n onOpenChange?.(open);\n };\n }, [onOpenChange, sharedProps?.onOpenChange]);\n\n const item: TooltipGroupItem = useMemo(\n () => ({\n arrow: arrow ?? sharedProps?.arrow ?? false,\n className: mergedClassName,\n classNames: mergedClassNames,\n closeDelay: closeDelay ?? sharedProps?.closeDelay,\n disabled: disabled ?? sharedProps?.disabled,\n getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,\n hotkey: hotkey ?? sharedProps?.hotkey,\n hotkeyProps: mergedHotkeyProps,\n mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,\n onOpenChange: mergedOnOpenChange,\n openDelay: openDelay ?? sharedProps?.openDelay,\n placement: placement ?? sharedProps?.placement ?? 'top',\n popupProps: popupProps ?? sharedProps?.popupProps,\n positionerProps: positionerProps ?? sharedProps?.positionerProps,\n styles: mergedStyles,\n title,\n triggerProps: triggerProps ?? sharedProps?.triggerProps,\n zIndex: zIndex ?? sharedProps?.zIndex,\n }),\n [\n arrow,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n mergedClassName,\n mergedClassNames,\n mergedHotkeyProps,\n mergedOnOpenChange,\n mergedStyles,\n mouseEnterDelay,\n mouseLeaveDelay,\n openDelay,\n placement,\n popupProps,\n positionerProps,\n sharedProps?.arrow,\n sharedProps?.closeDelay,\n sharedProps?.disabled,\n sharedProps?.getPopupContainer,\n sharedProps?.hotkey,\n sharedProps?.mouseEnterDelay,\n sharedProps?.mouseLeaveDelay,\n sharedProps?.onOpenChange,\n sharedProps?.openDelay,\n sharedProps?.placement,\n sharedProps?.popupProps,\n sharedProps?.positionerProps,\n sharedProps?.triggerProps,\n sharedProps?.zIndex,\n title,\n triggerProps,\n zIndex,\n ],\n );\n\n return item;\n};\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport TooltipContent from './TooltipContent';\nimport { useTooltipPortalContainer } from './TooltipPortal';\nimport { styles } from './style';\nimport type { TooltipProps } from './type';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\n/**\n * Tooltip component - displays small contextual hints on hover/focus\n * Compatible with Ant Design Tooltip-like API (subset)\n */\nexport const TooltipStandalone = memo<TooltipProps>(\n ({\n children,\n title,\n arrow = false,\n className,\n classNames,\n closeDelay,\n defaultOpen = false,\n disabled = false,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n open,\n openDelay,\n placement = 'top',\n styles: styleProps,\n zIndex,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n portalProps,\n }) => {\n const isClient = useIsClient();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [disabled, onOpenChange, open],\n );\n\n const resolvedOpenDelay = useMemo(() => {\n if (openDelay !== undefined) return openDelay;\n if (mouseEnterDelay !== undefined) return mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [mouseEnterDelay, openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (closeDelay !== undefined) return closeDelay;\n if (mouseLeaveDelay !== undefined) return mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [closeDelay, mouseLeaveDelay]);\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const defaultPortalContainer = useTooltipPortalContainer();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? defaultPortalContainer;\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: cx(styles.arrow, classNames?.arrow),\n popup: cx(styles.popup, className, classNames?.root, classNames?.container),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, classNames?.content),\n }),\n [className, classNames?.arrow, classNames?.container, classNames?.content, classNames?.root],\n );\n\n const resolvedStyleProps = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n }),\n [resolvedStyleProps, zIndex],\n );\n\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n ...triggerProps,\n };\n\n if (isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n {...baseTriggerProps}\n render={(props) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BaseTooltip.Trigger {...baseTriggerProps} ref={refProp}>\n {children}\n </BaseTooltip.Trigger>\n );\n }, [\n children,\n disabled,\n isNativeButtonTriggerElement,\n refProp,\n resolvedCloseDelay,\n resolvedOpenDelay,\n triggerProps,\n ]);\n\n const customContainer = useMemo(() => {\n if (!getPopupContainer || !isClient) return undefined;\n return undefined;\n }, [getPopupContainer, isClient]);\n\n const popup = useMemo(\n () => (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n style={resolvedStyles.popup}\n {...popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent hotkey={hotkey} hotkeyProps={hotkeyProps} title={title} />\n </div>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n ),\n [\n arrow,\n baseSideOffset,\n hotkey,\n hotkeyProps,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedStyles,\n title,\n ],\n );\n\n // eslint-disable-next-line eqeqeq\n if (title == null && !hotkey) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <BaseTooltip.Root\n defaultOpen={defaultOpen}\n disabled={disabled}\n onOpenChange={handleOpenChange}\n open={resolvedOpen}\n >\n {triggerElement}\n {resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </BaseTooltip.Portal>\n ) : null}\n </BaseTooltip.Root>\n );\n },\n);\n\nTooltipStandalone.displayName = 'TooltipStandalone';\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\n/**\n * Context for managing floating layer stacking.\n * When a component like Popover opens, it can provide its container\n * so that nested floating elements (like Tooltip) can render into it,\n * avoiding z-index stacking context issues.\n */\nexport const FloatingLayerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Hook to get the current floating layer container.\n * Returns the nearest floating layer container from context, or null if none exists.\n */\nexport const useFloatingLayer = (): HTMLElement | null => {\n return useContext(FloatingLayerContext);\n};\n\n/**\n * Provider component for floating layer context.\n */\nexport const FloatingLayerProvider = FloatingLayerContext.Provider;\n","import { useEffect, useState } from 'react';\n\nexport const useIsClient = () => {\n const [isClient, setIsClient] = useState(typeof document !== 'undefined');\n\n useEffect(() => {\n if (isClient) return;\n setIsClient(true);\n }, []);\n\n return isClient;\n};\n","import type { Placement as FloatingUIPlacement } from '@floating-ui/react';\n\n/**\n * Base UI uses a small set of string literal unions for alignment and side.\n * We re-declare them here to avoid importing internal/non-exported Base UI paths.\n */\nexport type Side = 'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start';\nexport type Align = 'start' | 'center' | 'end';\n\nexport type PlacementConfig = {\n align: Align;\n side: Side;\n};\n\n/**\n * All supported placement values\n * - Unified placement names for Tooltip, Popover, and DropdownMenu\n * - Ant Design style: topLeft, topCenter, topRight, etc.\n * - Additional aliases: top (same as topCenter), bottom (same as bottomCenter)\n */\nexport type Placement =\n | 'top'\n | 'topLeft'\n | 'topCenter'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomCenter'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom';\n\nconst top: PlacementConfig = { align: 'center', side: 'top' };\nconst topLeft: PlacementConfig = { align: 'start', side: 'top' };\nconst topRight: PlacementConfig = { align: 'end', side: 'top' };\nconst bottom: PlacementConfig = { align: 'center', side: 'bottom' };\nconst bottomLeft: PlacementConfig = { align: 'start', side: 'bottom' };\nconst bottomRight: PlacementConfig = { align: 'end', side: 'bottom' };\nconst left: PlacementConfig = { align: 'center', side: 'left' };\nconst leftTop: PlacementConfig = { align: 'start', side: 'left' };\nconst leftBottom: PlacementConfig = { align: 'end', side: 'left' };\nconst right: PlacementConfig = { align: 'center', side: 'right' };\nconst rightTop: PlacementConfig = { align: 'start', side: 'right' };\nconst rightBottom: PlacementConfig = { align: 'end', side: 'right' };\n\n/**\n * Map of placement values to Base UI placement config\n * Used by Popover and DropdownMenu components\n */\nexport const placementMap: Record<Placement, PlacementConfig> = {\n bottom,\n bottomCenter: bottom,\n bottomLeft,\n bottomRight,\n left,\n leftBottom,\n leftTop,\n right,\n rightBottom,\n rightTop,\n top,\n topCenter: top,\n topLeft,\n topRight,\n};\n\n/**\n * Convert unified Placement to Floating UI placement format\n * Used by Tooltip component which uses @floating-ui/react\n *\n * @param placement - Unified placement value\n * @returns Floating UI placement (e.g., 'top-start', 'bottom-end')\n */\nexport const toFloatingUIPlacement = (placement?: Placement): FloatingUIPlacement => {\n if (!placement) return 'top';\n\n switch (placement) {\n case 'topLeft': {\n return 'top-start';\n }\n case 'top':\n case 'topCenter': {\n return 'top';\n }\n case 'topRight': {\n return 'top-end';\n }\n case 'bottomLeft': {\n return 'bottom-start';\n }\n case 'bottom':\n case 'bottomCenter': {\n return 'bottom';\n }\n case 'bottomRight': {\n return 'bottom-end';\n }\n case 'leftTop': {\n return 'left-start';\n }\n case 'left': {\n return 'left';\n }\n case 'leftBottom': {\n return 'left-end';\n }\n case 'rightTop': {\n return 'right-start';\n }\n case 'right': {\n return 'right';\n }\n case 'rightBottom': {\n return 'right-end';\n }\n default: {\n return 'top';\n }\n }\n};\n","'use client';\n\nexport const TooltipArrowIcon = (\n <svg aria-hidden=\"true\" height=\"6\" viewBox=\"0 0 12 6\" width=\"12\">\n <path d=\"M0 6L6 0L12 6Z\" data-role=\"fill\" />\n <path d=\"M0 6L6 0L12 6\" data-role=\"stroke\" />\n </svg>\n);\n","'use client';\n\nimport { type ReactNode, memo, useMemo } from 'react';\n\nimport Hotkey, { type HotkeyProps } from '@/Hotkey';\n\ntype TooltipContentProps = {\n hotkey?: string;\n hotkeyProps?: Omit<HotkeyProps, 'keys'>;\n title: ReactNode;\n};\n\nconst TooltipContent = memo<TooltipContentProps>(({ title, hotkey, hotkeyProps }) => {\n const resolvedHotkeyProps = useMemo(\n () => ({\n compact: true,\n ...hotkeyProps,\n }),\n [hotkeyProps],\n );\n\n return (\n <>\n {title}\n {hotkey ? <Hotkey keys={hotkey} {...resolvedHotkeyProps} /> : null}\n </>\n );\n});\n\nTooltipContent.displayName = 'TooltipContent';\n\nexport default TooltipContent;\n","export const KeyMapEnum = {\n Alt: 'alt',\n Backquote: 'backquote', // `\n Backslash: 'backslash', // \\\n Backspace: 'backspace',\n BracketLeft: 'bracketleft', // [\n BracketRight: 'bracketright', // ]\n Comma: 'comma',\n CommandOrControl: 'commandorcontrol',\n Control: 'control',\n Ctrl: 'ctrl',\n Down: 'down',\n Enter: 'enter',\n Equal: 'equal', // =\n Esc: 'esc',\n Left: 'left',\n LeftClick: 'left-click',\n LeftDoubleClick: 'left-double-click',\n Meta: 'meta', // Command on Mac, Win on Win\n MiddleClick: 'middle-click',\n Minus: 'minus', // -\n Mod: 'mod', // Command on Mac, Ctrl on Win\n Period: 'period', // .\n Plus: 'equal', // +\n QuestionMark: 'slash', // ?\n Quote: 'quote', // '\n Right: 'right',\n RightClick: 'right-click',\n RightDoubleClick: 'right-double-click',\n Semicolon: 'semicolon', // ;\n Shift: 'shift',\n Slash: 'slash', // /\n Space: 'space',\n Tab: 'tab',\n Up: 'up',\n} as const;\n","'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n ArrowBigUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowRightToLineIcon,\n ArrowUpIcon,\n ChevronUpIcon,\n Command,\n CornerDownLeftIcon,\n Delete,\n Grid2X2Icon,\n MouseIcon,\n Option,\n SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n 'Ctrl'\n ),\n [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n [KeyMapEnum.Meta]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n <Icon icon={Grid2X2Icon} />\n ),\n [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n [KeyMapEnum.RightClick]: (\n <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.RightDoubleClick]: (\n <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.LeftDoubleClick]: (\n <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n [KeyMapEnum.Shift]: isAppleDevice ? (\n <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n ) : (\n 'Shift'\n ),\n [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n [KeyMapEnum.Comma]: ',',\n [KeyMapEnum.Period]: '.',\n [KeyMapEnum.Slash]: '?',\n [KeyMapEnum.Semicolon]: ';',\n [KeyMapEnum.Quote]: \"'\",\n [KeyMapEnum.Backquote]: '`',\n [KeyMapEnum.Backslash]: '\\\\',\n [KeyMapEnum.BracketLeft]: '[',\n [KeyMapEnum.BracketRight]: ']',\n [KeyMapEnum.Minus]: '-',\n [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n ({\n variant = 'filled',\n classNames,\n styles: customStyles,\n keys,\n inverseTheme,\n isApple,\n compact,\n className,\n style,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const isBorderless = variant === 'borderless';\n const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n useEffect(() => {\n const newValue = splitKeysByPlus(keys);\n setKeysGroup(newValue);\n }, [keys]);\n\n const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n return (\n <Flexbox\n align={'center'}\n className={className}\n gap={isBorderless ? 6 : 2}\n horizontal\n style={style}\n {...rest}\n >\n {compact || isBorderless ? (\n <Center\n as={'kbd'}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n gap={6}\n horizontal\n style={customStyles?.kbdStyle}\n >\n {keysGroup.map((key, index) => (\n <div key={index}>{mapping[key] ?? startCase(key)}</div>\n ))}\n </Center>\n ) : (\n keysGroup.map((key, index) => (\n <Center\n as={'kbd'}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n key={index}\n style={customStyles?.kbdStyle}\n >\n {mapping[key] ?? startCase(key)}\n </Center>\n ))\n )}\n </Flexbox>\n );\n },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n","'use client';\n\nimport { type ReactNode, createContext, memo, use } from 'react';\n\nimport type { IconProps } from '../type';\n\nexport type IconContentConfig = Omit<IconProps, 'icon' | 'ref'>;\n\nexport const IconContext = createContext<IconContentConfig>({});\n\nexport const IconProvider = memo<{ children: ReactNode; config?: IconContentConfig }>(\n ({ children, config = {} }) => {\n return <IconContext value={config}>{children}</IconContext>;\n },\n);\n\nexport const useIconContext = () => {\n return use(IconContext);\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { LucideIcon } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { useIconContext } from './components/IconProvider';\nimport { calcSize } from './components/utils';\nimport { variants } from './style';\nimport type { IconProps } from './type';\n\nconst Icon = memo<IconProps>(\n ({\n icon,\n size: iconSize,\n color,\n fill = 'transparent',\n className,\n focusable,\n spin,\n fillRule,\n fillOpacity,\n ref,\n ...rest\n }) => {\n const {\n color: colorConfig,\n fill: fillConfig,\n fillOpacity: fillOpacityConfig,\n fillRule: fillRuleConfig,\n focusable: focusableConfig,\n className: classNameConfig,\n size: sizeConfig,\n ...restConfig\n } = useIconContext();\n\n const { size, strokeWidth } = useMemo(\n () => calcSize(iconSize || sizeConfig),\n [iconSize, sizeConfig],\n );\n\n const SvgIcon = icon as LucideIcon;\n\n return (\n <span\n className={cx(variants({ spin }), classNameConfig, className)}\n role=\"img\"\n {...restConfig}\n {...rest}\n >\n {icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <SvgIcon\n color={color || colorConfig}\n fill={fill || fillConfig}\n fillOpacity={fillOpacity || fillOpacityConfig}\n fillRule={fillRule || fillRuleConfig}\n focusable={focusable || focusableConfig}\n height={size}\n ref={ref}\n size={size}\n strokeWidth={strokeWidth}\n width={size}\n />\n ))}\n </span>\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n","import { isNumber } from 'es-toolkit/compat';\n\nimport type { IconSize } from '../type';\n\nexport const calcSize = (iconSize?: IconSize) => {\n if (isNumber(iconSize)) {\n return { size: iconSize };\n }\n\n let size: number | string;\n let strokeWidth: number | string;\n\n switch (iconSize) {\n case 'large': {\n size = 24;\n strokeWidth = 2;\n break;\n }\n case 'middle': {\n size = 20;\n strokeWidth = 2;\n break;\n }\n case 'small': {\n size = 14;\n strokeWidth = 2;\n break;\n }\n default: {\n if (iconSize) {\n size = iconSize?.size || 24;\n strokeWidth = iconSize?.strokeWidth || 2;\n } else {\n size = '1em';\n strokeWidth = 2;\n }\n break;\n }\n }\n return { size, strokeWidth };\n};\n","import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst spin = keyframes`\n 0% {\n rotate: 0deg;\n }\n 100% {\n rotate: 360deg;\n }\n`;\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n spin: css`\n animation: ${spin} 1s linear infinite;\n `,\n };\n});\n\nexport const variants = cva('anticon', {\n defaultVariants: {\n spin: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n spin: {\n false: null,\n true: styles.spin,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { createLucideIcon } from 'lucide-react';\n\nconst LeftClickIcon = createLucideIcon('LeftClick', [\n [\n 'path',\n {\n d: 'M2 9.333C2 6.36 3.491 3.71 5.814 2M19 10C19 9.08075 18.8189 8.1705 18.4672 7.32122C18.1154 6.47194 17.5998 5.70026 16.9497 5.05025C16.2997 4.40024 15.5281 3.88463 14.6788 3.53284C13.8295 3.18106 12.9193 3 12 3C11.0807 3 10.1705 3.18106 9.32122 3.53284C8.47194 3.88463 7.70026 4.40024 7.05025 5.05025C6.40024 5.70026 5.88463 6.47194 5.53284 7.32122C5.18106 8.1705 5 9.08075 5 10V14C5 14.9193 5.18106 15.8295 5.53284 16.6788C5.88463 17.5281 6.40024 18.2997 7.05025 18.9497C7.70026 19.5998 8.47194 20.1154 9.32122 20.4672C10.1705 20.8189 11.0807 21 12 21C12.9193 21 13.8295 20.8189 14.6788 20.4672C15.5281 20.1154 16.2997 19.5998 16.9497 18.9497C17.5998 18.2997 18.1154 17.5281 18.4672 16.6788C18.8189 15.8295 19 14.9193 19 14V10Z',\n key: '1',\n },\n ],\n [\n 'path',\n {\n d: 'M12 4V11H6',\n key: '2',\n },\n ],\n]);\n\nLeftClickIcon.displayName = 'LeftClickIcon';\n\nexport default LeftClickIcon;\n","import { createLucideIcon } from 'lucide-react';\n\nconst LeftDoubleClickIcon = createLucideIcon('LeftDoubleClick', [\n [\n 'path',\n {\n d: 'M19 10V14C19 14.9193 18.8189 15.8295 18.4672 16.6788C18.1154 17.5281 17.5998 18.2997 16.9497 18.9497C16.2997 19.5998 15.5281 20.1154 14.6788 20.4672C13.8295 20.8189 12.9193 21 12 21C11.0807 21 10.1705 20.8189 9.32122 20.4672C8.47194 20.1154 7.70026 19.5998 7.05025 18.9497C6.40024 18.2997 5.88463 17.5281 5.53284 16.6788C5.18106 15.8295 5 14.9193 5 14V11M5 11V10C5 8.14348 5.7375 6.36301 7.05025 5.05025C8.36301 3.7375 10.1435 3 12 3V11H5ZM2 9.333C2 6.36 3.491 3.71 5.814 2M20.5 2H21.75C22.44 2 23 2.56 23 3.25C23 3.94 22.44 4.5 21.75 4.5C21.06 4.5 20.5 5.06 20.5 5.75V7H23M15 4L18 7M18 4L15 7',\n key: '1',\n },\n ],\n]);\n\nLeftDoubleClickIcon.displayName = 'LeftDoubleClickIcon';\n\nexport default LeftDoubleClickIcon;\n","import { createLucideIcon } from 'lucide-react';\n\nconst RightClickIcon = createLucideIcon('RightClick', [\n [\n 'path',\n {\n d: 'M22 9.333C22 6.36 20.509 3.71 18.186 2M19 10C19 9.08075 18.8189 8.1705 18.4672 7.32122C18.1154 6.47194 17.5998 5.70026 16.9497 5.05025C16.2997 4.40024 15.5281 3.88463 14.6788 3.53284C13.8295 3.18106 12.9193 3 12 3C11.0807 3 10.1705 3.18106 9.32122 3.53284C8.47194 3.88463 7.70026 4.40024 7.05025 5.05025C6.40024 5.70026 5.88463 6.47194 5.53284 7.32122C5.18106 8.1705 5 9.08075 5 10V14C5 14.9193 5.18106 15.8295 5.53284 16.6788C5.88463 17.5281 6.40024 18.2997 7.05025 18.9497C7.70026 19.5998 8.47194 20.1154 9.32122 20.4672C10.1705 20.8189 11.0807 21 12 21C12.9193 21 13.8295 20.8189 14.6788 20.4672C15.5281 20.1154 16.2997 19.5998 16.9497 18.9497C17.5998 18.2997 18.1154 17.5281 18.4672 16.6788C18.8189 15.8295 19 14.9193 19 14V10Z',\n key: '1',\n },\n ],\n [\n 'path',\n {\n d: 'M12 4V11H18',\n key: '2',\n },\n ],\n]);\n\nRightClickIcon.displayName = 'RightClickIcon';\n\nexport default RightClickIcon;\n","import { createLucideIcon } from 'lucide-react';\n\nconst RightDoubleClickIcon = createLucideIcon('RightDoubleClick', [\n [\n 'path',\n {\n d: 'M12 3C13.8565 3 15.637 3.7375 16.9497 5.05025C18.2625 6.36301 19 8.14348 19 10V14C19 14.9193 18.8189 15.8295 18.4672 16.6788C18.1154 17.5281 17.5998 18.2997 16.9497 18.9497C16.2997 19.5998 15.5281 20.1154 14.6788 20.4672C13.8295 20.8189 12.9193 21 12 21C11.0807 21 10.1705 20.8189 9.32122 20.4672C8.47194 20.1154 7.70026 19.5998 7.05025 18.9497C6.40024 18.2997 5.88463 17.5281 5.53284 16.6788C5.18106 15.8295 5 14.9193 5 14V10',\n key: '1',\n },\n ],\n [\n 'path',\n {\n d: 'M12 3V11H18.5M22 9.333C22 6.36 20.509 3.71 18.186 2M6.5 2H7.75C8.44 2 9 2.56 9 3.25C9 3.94 8.44 4.5 7.75 4.5C7.06 4.5 6.5 5.06 6.5 5.75V7H9M1 4L4 7M4 4L1 7',\n key: '2',\n },\n ],\n]);\n\nRightDoubleClickIcon.displayName = 'RightDoubleClickIcon';\n\nexport default RightDoubleClickIcon;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n ${lobeStaticStylish.variantBorderlessWithoutHover};\n padding-inline: 4px;\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n inverseThemeDark: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 8%, transparent);\n `,\n inverseThemeLight: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 16%, transparent);\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n overflow: hidden;\n\n min-width: 1.8em;\n height: 1.8em;\n padding-block: 0;\n padding-inline: 8px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-family: ${cssVar.fontFamily};\n font-size: 12px;\n line-height: 1.1;\n color: ${cssVar.colorTextSecondary};\n text-align: center;\n white-space: nowrap;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.inverseThemeDark,\n inverseTheme: true,\n isDarkMode: true,\n },\n {\n class: styles.inverseThemeLight,\n inverseTheme: true,\n isDarkMode: false,\n },\n ],\n defaultVariants: {\n inverseTheme: false,\n isDarkMode: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n inverseTheme: {\n false: null,\n true: null,\n },\n isDarkMode: {\n false: null,\n true: null,\n },\n variant: {\n borderless: styles.borderless,\n filled: styles.filled,\n outlined: styles.outlined,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { KeyMapEnum } from './const';\n\n// https://superuser.com/questions/1238058/key-combination-order\nexport const NORMATIVE_MODIFIER = [\n // win: Ctrl ,mac: Control\n KeyMapEnum.Ctrl,\n KeyMapEnum.Control,\n KeyMapEnum.CommandOrControl,\n\n // win: Win ,mac: Command\n KeyMapEnum.Meta,\n\n // Mod should have same priority as Ctrl since it represents Ctrl on Windows\n KeyMapEnum.Mod,\n\n // win: Alt ,mac: Option\n KeyMapEnum.Alt,\n\n // win: Shift ,mac: Shift\n KeyMapEnum.Shift,\n];\n\nconst orderMap = Object.fromEntries(NORMATIVE_MODIFIER.map((key, index) => [key, index]));\n\nexport const splitKeysByPlus = (keys: string): string[] => {\n return keys\n .replaceAll('++', `+${KeyMapEnum.Equal}`)\n .split('+')\n .sort((x, y) => {\n const idxX = orderMap[x.toLowerCase()] ?? orderMap.length;\n const idxY = orderMap[y.toLowerCase()] ?? orderMap.length;\n\n return idxX - idxY;\n });\n};\n\nexport const startCase = (str: string): string => {\n return str\n .replaceAll(/([A-Z])/g, ' $1')\n .replace(/^./, (s) => s.toUpperCase())\n .trim();\n};\n\nexport const checkIsAppleDevice = (isApple?: boolean) => {\n if (isApple !== undefined) {\n return isApple;\n }\n\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return false; // 处理 SSR 环境\n }\n\n const userAgent = navigator.userAgent.toLowerCase();\n return /mac|iphone|ipod|ipad|ios/i.test(userAgent);\n};\n\nexport const combineKeys = (keys: string[]): string => keys.join('+');\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\n\nconst PORTAL_ATTR = 'data-lobe-ui-tooltip-portal';\nexport const TOOLTIP_CONTAINER_ATTR = 'data-lobe-ui-tooltip-container';\n\n// Reuse one portal container per root (document.body by default).\nconst containerMap = new WeakMap<object, HTMLElement>();\n\nconst getOrCreateContainer = (root: HTMLElement | ShadowRoot): HTMLElement => {\n const resolvedRoot = (() => {\n if (typeof document === 'undefined') return root;\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) return root;\n\n const isBody = root === document.body;\n if (!isBody) return root;\n\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n if (themeApp) return themeApp;\n\n const tooltipContainer = document.querySelector<HTMLElement>(\n `[${TOOLTIP_CONTAINER_ATTR}=\"true\"]`,\n );\n if (tooltipContainer) return tooltipContainer;\n\n return root;\n })();\n\n const cached = containerMap.get(resolvedRoot);\n if (cached && cached.isConnected) return cached;\n\n const el = document.createElement('div');\n el.setAttribute(PORTAL_ATTR, 'true');\n resolvedRoot.append(el);\n containerMap.set(resolvedRoot, el);\n return el;\n};\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nexport const useTooltipPortalContainer = (\n root?: HTMLElement | ShadowRoot | null,\n): HTMLElement | null => {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n // Never mutate DOM / create portal container during render.\n // Create it after mount to avoid SSR/hydration side effects.\n useEffect(() => {\n const resolved = resolveRoot(root);\n if (!resolved) return;\n setContainer(getOrCreateContainer(resolved));\n }, [root, container?.isConnected]);\n\n return container;\n};\n","export const LOBE_THEME_APP_ID = 'lobe-ui-theme-app';\n","'use client';\n\nimport { type FC, useCallback } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\n\nimport type { MetaProps } from './type';\n\nconst Meta: FC<MetaProps> = ({\n title = 'LobeHub',\n description = 'Empowering your AI dreams with LobeHub',\n withManifest,\n}) => {\n const genCdnUrl = useCdnFn();\n const genAssets = useCallback(\n (path: string) =>\n genCdnUrl({\n path,\n pkg: '@lobehub/assets-favicons',\n version: 'latest',\n }),\n [],\n );\n return (\n <>\n <link href={genAssets('assets/favicon.ico')} rel=\"shortcut icon\" />\n <link\n href={genAssets('assets/apple-touch-icon.png')}\n rel=\"apple-touch-icon\"\n sizes=\"180x180\"\n />\n <link\n href={genAssets('assets/favicon-32x32.png')}\n rel=\"icon\"\n sizes=\"32x32\"\n type=\"image/png\"\n />\n <link\n href={genAssets('assets/favicon-16x16.png')}\n rel=\"icon\"\n sizes=\"16x16\"\n type=\"image/png\"\n />\n <meta\n content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no\"\n name=\"viewport\"\n />\n <meta content={title} name=\"apple-mobile-web-app-title\" />\n <meta content={title} name=\"application-name\" />\n <meta content={description} name=\"description\" />\n <meta content=\"#000000\" name=\"msapplication-TileColor\" />\n <meta content=\"#fff\" media=\"(prefers-color-scheme: light)\" name=\"theme-color\" />\n <meta content=\"#000\" media=\"(prefers-color-scheme: dark)\" name=\"theme-color\" />\n <meta content=\"yes\" name=\"apple-mobile-web-app-capable\" />\n <meta content={title} name=\"apple-mobile-web-app-title\" />\n <meta content=\"black-translucent\" name=\"apple-mobile-web-app-status-bar-style\" />\n {withManifest && <link href={genAssets('assets/site.webmanifest')} rel=\"manifest\" />}\n </>\n );\n};\n\nexport default Meta;\n","'use client';\n\nimport { App } from 'antd';\nimport {\n ThemeProvider as AntdThemeProvider,\n CustomStylishParams,\n CustomTokenParams,\n GetAntdTheme,\n} from 'antd-style';\nimport { merge } from 'es-toolkit/compat';\nimport { memo, useCallback, useMemo } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport FontLoader from '@/FontLoader';\nimport { lobeCustomStylish, lobeCustomToken } from '@/styles';\nimport { createLobeAntdTheme } from '@/styles/theme/antdTheme';\nimport { LobeCustomToken } from '@/types/customToken';\n\nimport AntdConfigProvider from './ConfigProvider';\nimport GlobalStyle from './GlobalStyle';\nimport { LOBE_THEME_APP_ID } from './constants';\nimport type { ThemeProviderProps } from './type';\n\nconst ThemeProvider = memo<ThemeProviderProps>(\n ({\n children,\n customStylish,\n customToken,\n enableCustomFonts = true,\n enableGlobalStyle = true,\n customFonts,\n customTheme = {},\n className,\n style,\n theme: antdTheme,\n ...rest\n }) => {\n const genCdnUrl = useCdnFn();\n\n const webfontUrls = useMemo(\n () =>\n customFonts || [\n genCdnUrl({ path: 'css/index.css', pkg: '@lobehub/webfont-mono' }),\n genCdnUrl({\n path: 'css/index.css',\n pkg: '@lobehub/webfont-harmony-sans',\n }),\n genCdnUrl({\n path: 'css/index.css',\n pkg: '@lobehub/webfont-harmony-sans-sc',\n }),\n genCdnUrl({ path: 'dist/katex.min.css', pkg: 'katex' }),\n ],\n [customFonts, genCdnUrl],\n );\n\n const stylish = useCallback(\n (theme: CustomStylishParams) => ({ ...lobeCustomStylish(theme), ...customStylish?.(theme) }),\n [customStylish],\n );\n\n const token = useCallback(\n (theme: CustomTokenParams) => ({ ...lobeCustomToken(theme), ...customToken?.(theme) }),\n [customToken],\n );\n\n const theme = useCallback<GetAntdTheme>(\n (appearance) => {\n const lobeTheme = createLobeAntdTheme({\n appearance,\n neutralColor: customTheme.neutralColor,\n primaryColor: customTheme.primaryColor,\n });\n return merge(lobeTheme, antdTheme);\n },\n [customTheme.primaryColor, customTheme.neutralColor, antdTheme],\n );\n\n return (\n <>\n {enableCustomFonts &&\n webfontUrls?.length > 0 &&\n webfontUrls.map((webfont) => <FontLoader key={webfont} url={webfont} />)}\n <AntdThemeProvider<LobeCustomToken>\n customStylish={stylish}\n customToken={token}\n theme={theme}\n {...rest}\n >\n <AntdConfigProvider>\n {enableGlobalStyle && <GlobalStyle />}\n\n <App className={className} style={{ minHeight: 'inherit', width: 'inherit', ...style }}>\n <div id={LOBE_THEME_APP_ID} style={{ display: 'contents' }}>\n {children}\n </div>\n </App>\n </AntdConfigProvider>\n </AntdThemeProvider>\n </>\n );\n },\n);\n\nThemeProvider.displayName = 'LobeThemeProvider';\n\nexport default ThemeProvider;\n","'use client';\n\nimport { memo, useEffect, useRef } from 'react';\n\nconst createElement = (url: string) => {\n const element = document.createElement('link');\n element.rel = 'stylesheet';\n element.href = url;\n return element;\n};\n\nexport interface FontLoaderProps {\n url: string;\n}\n\nconst FontLoader = memo<FontLoaderProps>(({ url }) => {\n const elementRef = useRef<HTMLLinkElement | null>(null);\n\n useEffect(() => {\n // Create and append element\n const element = createElement(url);\n document.head.append(element);\n elementRef.current = element;\n\n // Optional: Add error handling\n const handleError = () => console.error(`Failed to load font from ${url}`);\n element.addEventListener('error', handleError);\n\n // Cleanup function to remove element when component unmounts\n // or when url changes\n return () => {\n element.removeEventListener('error', handleError);\n element.remove();\n elementRef.current = null;\n };\n }, [url]);\n\n return null;\n});\n\nFontLoader.displayName = 'FontLoader';\n\nexport default FontLoader;\n","import { AliasToken } from 'antd/es/theme/interface';\n\nimport { blue, gold, gray, lime, primary, red } from '@/color/colors';\n\nimport { generateColorNeutralPalette, generateColorPalette } from '../generateColorPalette';\n\nconst primaryToken = generateColorPalette({\n appearance: 'dark',\n scale: primary,\n type: 'Primary',\n});\n\nconst neutralToken = generateColorNeutralPalette({\n appearance: 'dark',\n scale: gray,\n});\n\nconst successToken = generateColorPalette({\n appearance: 'dark',\n scale: lime,\n type: 'Success',\n});\n\nconst warningToken = generateColorPalette({\n appearance: 'dark',\n scale: gold,\n type: 'Warning',\n});\n\nconst errorToken = generateColorPalette({\n appearance: 'dark',\n scale: red,\n type: 'Error',\n});\n\nconst infoToken = generateColorPalette({\n appearance: 'dark',\n scale: blue,\n type: 'Info',\n});\n\nconst darkBaseToken: Partial<AliasToken> = {\n ...primaryToken,\n ...neutralToken,\n ...successToken,\n ...warningToken,\n ...errorToken,\n ...infoToken,\n\n boxShadow: '0 20px 20px -8px rgba(0, 0, 0, 0.24)',\n boxShadowSecondary: '0 8px 16px -4px rgba(0, 0, 0, 0.2)',\n boxShadowTertiary: '0 3px 1px -1px rgba(26, 26, 26, 0.06)',\n colorLink: infoToken.colorInfoText,\n colorLinkActive: infoToken.colorInfoTextActive,\n\n colorLinkHover: infoToken.colorInfoTextHover,\n colorTextLightSolid: neutralToken.colorBgLayout,\n};\n\nexport default darkBaseToken;\n","import { MappingAlgorithm } from 'antd/es/theme/interface';\n\nimport { colorScales } from '@/color/colors';\nimport { neutralColorScales } from '@/color/neutrals';\nimport type { ColorScaleItem } from '@/color/types';\nimport { generateCustomColorToken } from '@/styles/theme/customToken';\nimport darkBaseToken from '@/styles/theme/token/dark';\n\nimport { NeutralColors, PrimaryColors } from '../../customTheme';\nimport { generateColorNeutralPalette, generateColorPalette } from '../generateColorPalette';\n\nexport const darkAlgorithm: MappingAlgorithm = (seedToken, mapToken) => {\n const primaryColor = (seedToken as any).primaryColor as PrimaryColors;\n const neutralColor = (seedToken as any).neutralColor as NeutralColors;\n\n let primaryTokens = {};\n let neutralTokens = {};\n\n // generate primary color Token with colorPrimary\n const primaryScale: ColorScaleItem = colorScales[primaryColor];\n\n if (primaryScale) {\n primaryTokens = generateColorPalette({\n appearance: 'dark',\n scale: primaryScale,\n type: 'Primary',\n });\n }\n\n // generate neutral color Token with colorBgBase\n const neutralScale = neutralColorScales[neutralColor];\n if (neutralScale) {\n neutralTokens = generateColorNeutralPalette({ appearance: 'dark', scale: neutralScale });\n }\n\n return {\n ...mapToken!,\n ...darkBaseToken,\n ...primaryTokens,\n ...neutralTokens,\n ...generateCustomColorToken(true),\n };\n};\n","import { AliasToken } from 'antd/es/theme/interface';\n\nimport { geekblue, gold, gray, green, primary, volcano } from '@/color/colors';\n\nimport { generateColorNeutralPalette, generateColorPalette } from '../generateColorPalette';\n\nconst primaryToken = generateColorPalette({\n appearance: 'light',\n scale: primary,\n type: 'Primary',\n});\n\nconst neutralToken = generateColorNeutralPalette({\n appearance: 'light',\n scale: gray,\n});\n\nconst successToken = generateColorPalette({\n appearance: 'light',\n scale: green,\n type: 'Success',\n});\n\nconst warningToken = generateColorPalette({\n appearance: 'light',\n scale: gold,\n type: 'Warning',\n});\n\nconst errorToken = generateColorPalette({\n appearance: 'light',\n scale: volcano,\n type: 'Error',\n});\n\nconst infoToken = generateColorPalette({\n appearance: 'light',\n scale: geekblue,\n type: 'Info',\n});\n\nconst lightBaseToken: Partial<AliasToken> = {\n ...primaryToken,\n ...neutralToken,\n ...successToken,\n ...warningToken,\n ...errorToken,\n ...infoToken,\n\n boxShadow: '0 20px 20px -8px rgba(0, 0, 0, 0.24)',\n boxShadowSecondary: '0 8px 16px -4px rgba(0, 0, 0, 0.2)',\n boxShadowTertiary: '0 3px 1px -1px rgba(26, 26, 26, 0.06)',\n colorLink: infoToken.colorInfoText,\n colorLinkActive: infoToken.colorInfoTextActive,\n\n colorLinkHover: infoToken.colorInfoTextHover,\n colorTextLightSolid: neutralToken.colorBgLayout,\n};\n\nexport default lightBaseToken;\n","import { MappingAlgorithm } from 'antd/es/theme/interface';\n\nimport { colorScales } from '@/color/colors';\nimport { neutralColorScales } from '@/color/neutrals';\nimport type { ColorScaleItem } from '@/color/types';\n\nimport { NeutralColors, PrimaryColors } from '../../customTheme';\nimport { generateCustomColorToken } from '../customToken';\nimport { generateColorNeutralPalette, generateColorPalette } from '../generateColorPalette';\nimport lightBaseToken from '../token/light';\n\nexport const lightAlgorithm: MappingAlgorithm = (seedToken, mapToken) => {\n const primaryColor = (seedToken as any).primaryColor as PrimaryColors;\n const neutralColor = (seedToken as any).neutralColor as NeutralColors;\n\n let primaryTokens = {};\n let neutralTokens = {};\n const primaryScale: ColorScaleItem = colorScales[primaryColor];\n\n if (primaryScale) {\n primaryTokens = generateColorPalette({\n appearance: 'light',\n scale: primaryScale,\n type: 'Primary',\n });\n }\n\n const neutralScale = neutralColorScales[neutralColor];\n if (neutralScale) {\n neutralTokens = generateColorNeutralPalette({ appearance: 'light', scale: neutralScale });\n }\n\n return {\n ...mapToken!,\n ...lightBaseToken,\n ...primaryTokens,\n ...neutralTokens,\n ...generateCustomColorToken(false),\n };\n};\n","import { AliasToken } from 'antd/es/theme/interface';\n\nconst FONT_EMOJI = `\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Apple Color Emoji\",\"Twemoji Mozilla\",\"Noto Color Emoji\",\"Android Emoji\"`;\nconst FONT_EN = `\"HarmonyOS Sans\",\"Segoe UI\",\"SF Pro Display\",-apple-system,BlinkMacSystemFont,Roboto,Oxygen,Ubuntu,Cantarell,\"Open Sans\",\"Helvetica Neue\",sans-serif`;\nconst FONT_CN = `\"HarmonyOS Sans SC\",\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft Yahei UI\",\"Microsoft Yahei\",\"Source Han Sans CN\",sans-serif`;\nconst FONT_CODE = `Hack,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas`;\n\nexport const baseToken: Partial<AliasToken> = {\n borderRadius: 8,\n borderRadiusLG: 12,\n borderRadiusSM: 6,\n borderRadiusXS: 4,\n controlHeight: 36,\n fontFamily: [FONT_EN, FONT_CN, FONT_EMOJI].join(','),\n fontFamilyCode: [FONT_CODE, FONT_CN, FONT_EMOJI].join(','),\n};\n","import { ThemeConfig } from 'antd';\nimport { ThemeAppearance } from 'antd-style';\n\nimport { NeutralColors, PrimaryColors } from '../customTheme';\nimport { darkAlgorithm } from './algorithms/darkAlgorithm';\nimport { lightAlgorithm } from './algorithms/lightAlgorithm';\nimport { baseToken } from './token/base';\n\nexport interface LobeAntdThemeParams {\n appearance: ThemeAppearance;\n neutralColor?: NeutralColors;\n primaryColor?: PrimaryColors;\n}\n\n/**\n * create A LobeHub Style Antd Theme Object\n * @param neutralColor\n * @param appearance\n * @param primaryColor\n */\nexport const createLobeAntdTheme = ({\n neutralColor,\n appearance,\n primaryColor,\n}: LobeAntdThemeParams): ThemeConfig => {\n const isDark = appearance === 'dark';\n\n return {\n algorithm: isDark ? darkAlgorithm : lightAlgorithm,\n components: {\n Button: {\n contentFontSizeSM: 12,\n },\n DatePicker: {\n activeBorderColor: baseToken.colorBorder,\n hoverBorderColor: baseToken.colorBorder,\n },\n Input: {\n activeBorderColor: baseToken.colorBorder,\n hoverBorderColor: baseToken.colorBorder,\n },\n InputNumber: {\n activeBorderColor: baseToken.colorBorder,\n hoverBorderColor: baseToken.colorBorder,\n },\n Mentions: {\n activeBorderColor: baseToken.colorBorder,\n hoverBorderColor: baseToken.colorBorder,\n },\n Select: {\n activeBorderColor: baseToken.colorBorder,\n hoverBorderColor: baseToken.colorBorder,\n },\n },\n token: {\n ...baseToken,\n // @ts-ignore\n neutralColor,\n primaryColor,\n },\n };\n};\n","'use client';\n\nimport { ConfigProvider as AntdConfigProvider } from 'antd';\nimport { cssVar } from 'antd-style';\nimport { PropsWithChildren, memo } from 'react';\n\nconst ConfigProvider = memo<PropsWithChildren>(({ children }) => {\n return (\n <AntdConfigProvider\n theme={{\n components: {\n Button: {\n contentFontSizeSM: 12,\n },\n DatePicker: {\n activeBorderColor: cssVar.colorBorder,\n hoverBorderColor: cssVar.colorBorder,\n },\n Input: {\n activeBorderColor: cssVar.colorBorder,\n hoverBorderColor: cssVar.colorBorder,\n },\n InputNumber: {\n activeBorderColor: cssVar.colorBorder,\n hoverBorderColor: cssVar.colorBorder,\n },\n Mentions: {\n activeBorderColor: cssVar.colorBorder,\n hoverBorderColor: cssVar.colorBorder,\n },\n Select: {\n activeBorderColor: cssVar.colorBorder,\n hoverBorderColor: cssVar.colorBorder,\n },\n },\n }}\n >\n {children}\n </AntdConfigProvider>\n );\n});\n\nexport default ConfigProvider;\n","'use client';\n\nimport { createGlobalStyle } from 'antd-style';\n\nimport antdOverride from './antdOverride';\nimport global from './global';\n\nconst GlobalStyle = createGlobalStyle(({ theme }) => [global(theme), antdOverride(theme)]);\n\nexport default GlobalStyle;\n","import { Theme, css } from 'antd-style';\nimport { rgba } from 'polished';\n\nimport { safeReadableColor } from '@/utils/safeReadableColor';\n\nexport default (token: Theme) => {\n const readColor = safeReadableColor(token.colorPrimary);\n return css`\n .${token.prefixCls}-checkbox-inner:after {\n border-color: ${safeReadableColor(token.colorPrimary)} !important;\n }\n\n .${token.prefixCls}-btn {\n box-shadow: none;\n }\n\n .${token.prefixCls}-btn-primary:not(:disabled) {\n color: ${readColor} !important;\n\n &:hover {\n color: ${readColor} !important;\n }\n\n &:active {\n color: ${readColor} !important;\n }\n }\n\n .${token.prefixCls}-tooltip {\n --antd-arrow-background-color: ${token.colorBgElevated};\n\n max-width: 320px;\n }\n\n .${token.prefixCls}-tooltip-arrow::before {\n background: ${token.colorBgElevated} !important;\n }\n\n .${token.prefixCls}-tooltip-arrow::after {\n box-shadow: 0 0 0 1px ${token.colorBorderSecondary} !important;\n }\n\n .${token.prefixCls}-tooltip-container {\n user-select: none;\n\n display: flex;\n gap: 6px;\n align-items: center;\n\n min-width: unset;\n min-height: unset;\n padding-block: 4px;\n padding-inline: 8px;\n border: 1px solid ${token.colorBorderSecondary} !important;\n border-radius: ${token.borderRadiusSM}px !important;\n\n font-size: ${token.fontSizeSM}px;\n line-height: 1.2;\n color: ${token.colorTextSecondary} !important;\n word-break: break-word;\n white-space: normal;\n\n background: ${token.colorBgElevated} !important;\n box-shadow:\n 0 1px 2px 0 rgba(0, 0, 0, 3%),\n 0 1px 6px -1px rgba(0, 0, 0, 2%),\n 0 2px 4px 0 rgba(0, 0, 0, 2%) !important;\n }\n\n .${token.prefixCls}-switch-handle::before {\n background: ${token.colorBgContainer} !important;\n }\n\n .${token.prefixCls}-image-preview-close,\n .${token.prefixCls}-image-preview-switch-right,\n .${token.prefixCls}-image-preview-switch-left {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0;\n\n background: ${rgba(token.colorBgMask, 0.1)};\n\n border-radius: ${token.borderRadiusLG}px;\n\n ${token.stylish.blur};\n }\n\n .${token.prefixCls}-dropdown-menu, .${token.prefixCls}-select-dropdown {\n border-radius: ${token.borderRadius}px !important;\n box-shadow:\n 0 0 15px 0 #00000008,\n 0 2px 30px 0 #00000014,\n 0 0 0 1px ${token.isDarkMode ? token.colorFillTertiary : token.colorBorder} inset !important;\n }\n\n .${token.prefixCls}-modal-content {\n border: 1px solid ${token.colorBorderSecondary} !important;\n }\n\n .${token.prefixCls}-radio-wrapper\n .${token.prefixCls}-radio-checked\n .${token.prefixCls}-radio-inner:after {\n background: ${readColor};\n }\n `;\n};\n","import { cssVar } from 'antd-style';\nimport { readableColor } from 'polished';\n\nexport const safeReadableColor = (bgColor: string, fallbackColor?: string): string => {\n try {\n return readableColor(bgColor);\n } catch {\n return fallbackColor || cssVar.colorText;\n }\n};\n","import { Theme, css } from 'antd-style';\n\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { LOBE_THEME_APP_ID } from '../constants';\n\nexport default (token: Theme) => css`\n :root {\n --font-settings: 'cv01', 'tnum', 'kern';\n --font-variations: 'opsz' auto, tabular-nums;\n\n text-autospace: normal;\n }\n\n html {\n overscroll-behavior: none;\n color-scheme: ${token.isDarkMode ? 'dark' : 'light'};\n }\n\n body {\n overflow: hidden auto;\n\n min-height: 100vh;\n margin: 0;\n padding: 0;\n\n font-family: ${token.fontFamily};\n font-size: ${token.fontSize}px;\n font-feature-settings: var(--font-settings);\n font-variation-settings: var(--font-variations);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1;\n color: ${token.colorTextBase};\n text-size-adjust: none;\n text-rendering: optimizelegibility;\n word-wrap: break-word;\n vertical-align: baseline;\n\n background-color: ${token.colorBgLayout};\n\n -webkit-overflow-scrolling: touch;\n -webkit-tap-highlight-color: transparent;\n }\n\n code {\n font-family: ${token.fontFamilyCode} !important;\n\n span {\n font-family: ${token.fontFamilyCode} !important;\n }\n }\n\n ::selection {\n color: #000;\n background: ${token.yellow9};\n\n -webkit-text-fill-color: unset !important;\n }\n\n * {\n scrollbar-color: ${token.colorFill} transparent;\n scrollbar-width: thin;\n box-sizing: border-box;\n vertical-align: baseline;\n }\n #${LOBE_THEME_APP_ID} {\n /* https://base-ui.com/react/overview/quick-start#set-up-portals */\n isolation: isolate;\n }\n @layer lobe-popup {\n .${CLASSNAMES.ContextTrigger}[data-popup-open],\n .${CLASSNAMES.DropdownMenuTrigger}[data-popup-open] {\n background: ${token.colorFillTertiary};\n }\n }\n\n @layer lobe-base {\n :where(.lobe-flex) {\n /* Define defaults on the element itself to avoid CSS variable inheritance leaking to nested Flex */\n --lobe-flex: 0 1 auto;\n --lobe-flex-direction: column;\n --lobe-flex-wrap: nowrap;\n --lobe-flex-justify: flex-start;\n --lobe-flex-align: stretch;\n --lobe-flex-width: auto;\n --lobe-flex-height: auto;\n --lobe-flex-padding: 0;\n /* Keep padding-inline/block aligned with padding by default, and prevent inheriting from parent */\n --lobe-flex-padding-inline: var(--lobe-flex-padding);\n --lobe-flex-padding-block: var(--lobe-flex-padding);\n --lobe-flex-gap: 0;\n\n display: flex;\n\n flex: var(--lobe-flex);\n flex-direction: var(--lobe-flex-direction);\n flex-wrap: var(--lobe-flex-wrap);\n justify-content: var(--lobe-flex-justify);\n align-items: var(--lobe-flex-align);\n\n width: var(--lobe-flex-width);\n height: var(--lobe-flex-height);\n\n padding: var(--lobe-flex-padding);\n padding-inline: var(--lobe-flex-padding-inline);\n padding-block: var(--lobe-flex-padding-block);\n\n gap: var(--lobe-flex-gap);\n }\n\n .lobe-flex--hidden {\n display: none;\n }\n }\n\n /* Brand Loading */\n @keyframes draw {\n 0% {\n stroke-dashoffset: 1000;\n }\n\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes fill {\n 30% {\n fill-opacity: 5%;\n }\n\n 100% {\n fill-opacity: 100%;\n }\n }\n\n .lobe-brand-loading path {\n fill: currentcolor;\n fill-opacity: 0%;\n stroke: currentcolor;\n stroke-dasharray: 1000;\n stroke-dashoffset: 1000;\n stroke-width: 0.25em;\n\n animation:\n draw 2s cubic-bezier(0.4, 0, 0.2, 1) infinite,\n fill 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n`;\n","export const CLASSNAMES = {\n ContextTrigger: 'lobe-context-trigger',\n DropdownMenuTrigger: 'lobe-dropdown-menu-trigger',\n};\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n arrow: css`\n --lobe-tooltip-arrow-offset-block: 4px;\n --lobe-tooltip-arrow-offset-inline: 6px;\n\n pointer-events: none;\n\n position: absolute;\n transform-origin: center;\n\n display: flex;\n\n width: 8px;\n height: 4px;\n\n & > svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: ${cssVar.colorBgElevated};\n }\n\n & [data-role='stroke'] {\n stroke: ${cssVar.colorBorderSecondary};\n }\n\n &[data-side='top'] {\n inset-block-end: calc(var(--lobe-tooltip-arrow-offset-block) * -1);\n transform: rotate(180deg);\n }\n\n &[data-side='left'] {\n inset-inline-end: calc(var(--lobe-tooltip-arrow-offset-inline) * -1);\n transform: rotate(90deg);\n }\n\n &[data-side='right'] {\n inset-inline-start: calc(var(--lobe-tooltip-arrow-offset-inline) * -1);\n transform: rotate(-90deg);\n }\n\n &[data-side='bottom'] {\n inset-block-start: calc(var(--lobe-tooltip-arrow-offset-block) * -1);\n }\n `,\n\n popup: css`\n user-select: none;\n\n position: relative;\n transform-origin: var(--transform-origin);\n\n max-width: min(320px, var(--available-width));\n border: 1px solid ${cssVar.colorFill};\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: ${cssVar.fontSizeSM};\n line-height: 1.2;\n color: ${cssVar.colorTextLabel};\n\n background: ${cssVar.colorBgElevated};\n box-shadow:\n 0 1px 2px 0 rgba(0, 0, 0, 3%),\n 0 1px 6px -1px rgba(0, 0, 0, 2%),\n 0 2px 4px 0 rgba(0, 0, 0, 2%);\n\n transition-timing-function: var(--lobe-tooltip-animation-ease-out);\n transition-duration: var(--lobe-tooltip-animation-duration);\n transition-property: opacity;\n\n &[data-layout-animation] {\n transition-property: opacity, transform, width, height;\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translate3d(var(--lobe-tooltip-translate-x), var(--lobe-tooltip-translate-y), 0)\n scale(var(--lobe-tooltip-animation-scale));\n opacity: 0;\n }\n\n &[data-ending-style] {\n transition-timing-function: var(--lobe-tooltip-animation-ease-in);\n transition-duration: var(--lobe-tooltip-animation-duration-exit);\n }\n\n &[data-instant] {\n transition: none;\n }\n `,\n\n positioner: css`\n --lobe-tooltip-animation-duration: 100ms;\n --lobe-tooltip-animation-duration-exit: 60ms;\n --lobe-tooltip-animation-translate: 2px;\n --lobe-tooltip-animation-scale: 0.98;\n --lobe-tooltip-animation-ease-in: ease-in;\n --lobe-tooltip-animation-ease-out: ${cssVar.motionEaseOut};\n --lobe-tooltip-translate-x: 0;\n --lobe-tooltip-translate-y: calc(var(--lobe-tooltip-animation-translate) * -1);\n\n will-change: transform, opacity;\n\n z-index: 114514;\n\n width: min(var(--positioner-width), 320px, var(--available-width));\n height: var(--positioner-height);\n\n transition-timing-function: var(--lobe-tooltip-animation-ease-out);\n transition-duration: var(--lobe-tooltip-animation-duration);\n transition-property: none;\n\n &[data-layout-animation] {\n transition-property:\n inset-block-start, inset-inline-start, inset-inline-end, inset-block-end, transform;\n }\n\n &[data-instant] {\n transition: none;\n }\n\n /* Fallback: never show a tooltip when the anchor is hidden or the positioner falls back to (0,0). */\n &[data-anchor-hidden],\n &[data-zero-origin='true'] {\n pointer-events: none;\n visibility: hidden;\n }\n\n &[data-placement='top'],\n &[data-placement='topLeft'],\n &[data-placement='topRight'] {\n --lobe-tooltip-translate-x: 0;\n --lobe-tooltip-translate-y: var(--lobe-tooltip-animation-translate);\n }\n\n &[data-placement='bottom'],\n &[data-placement='bottomLeft'],\n &[data-placement='bottomRight'] {\n --lobe-tooltip-translate-x: 0;\n --lobe-tooltip-translate-y: calc(var(--lobe-tooltip-animation-translate) * -1);\n }\n\n &[data-placement='left'],\n &[data-placement='leftTop'],\n &[data-placement='leftBottom'] {\n --lobe-tooltip-translate-x: var(--lobe-tooltip-animation-translate);\n --lobe-tooltip-translate-y: 0;\n }\n\n &[data-placement='right'],\n &[data-placement='rightTop'],\n &[data-placement='rightBottom'] {\n --lobe-tooltip-translate-x: calc(var(--lobe-tooltip-animation-translate) * -1);\n --lobe-tooltip-translate-y: 0;\n }\n `,\n\n viewport: css`\n --lobe-tooltip-viewport-inline-padding: 8px;\n\n position: relative;\n\n overflow: clip;\n display: flex;\n gap: 6px;\n align-items: center;\n\n max-width: var(--available-width);\n padding-block: 4px;\n padding-inline: var(--lobe-tooltip-viewport-inline-padding);\n\n word-break: break-word;\n white-space: normal;\n\n [data-previous],\n [data-current] {\n transform: translateX(0);\n\n display: flex;\n gap: 6px;\n align-items: center;\n\n opacity: 1;\n\n transition:\n transform var(--lobe-tooltip-animation-duration) var(--lobe-tooltip-animation-ease-out),\n opacity calc(var(--lobe-tooltip-animation-duration) / 2)\n var(--lobe-tooltip-animation-ease-out);\n }\n\n [data-previous] {\n position: absolute;\n inset-block-start: 4px;\n inset-inline-start: var(--lobe-tooltip-viewport-inline-padding);\n }\n\n &[data-activation-direction~='right'] [data-previous][data-ending-style] {\n transform: translateX(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='right'] [data-current][data-starting-style] {\n transform: translateX(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='left'] [data-previous][data-ending-style] {\n transform: translateX(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='left'] [data-current][data-starting-style] {\n transform: translateX(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='down'] [data-previous][data-ending-style] {\n transform: translateY(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='down'] [data-current][data-starting-style] {\n transform: translateY(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='up'] [data-previous][data-ending-style] {\n transform: translateY(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='up'] [data-current][data-starting-style] {\n transform: translateY(-50%);\n opacity: 0;\n }\n `,\n}));\n","'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { type FC, useCallback, useRef, useState } from 'react';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport TooltipContent from './TooltipContent';\nimport { useTooltipPortalContainer } from './TooltipPortal';\nimport {\n TooltipGroupHandleContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport { styles } from './style';\nimport type { TooltipGroupProps } from './type';\n\nconst TooltipGroup: FC<TooltipGroupProps> = ({\n children,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n layoutAnimation = false,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<TooltipGroupItem | null>(null);\n\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: key + 1,\n }));\n }, []);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n const defaultPortalContainer = useTooltipPortalContainer();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? defaultPortalContainer;\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n return (\n <TooltipGroupHandleContext.Provider value={handle}>\n <TooltipGroupPropsContext.Provider value={sharedProps}>\n {children}\n\n <BaseTooltip.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as TooltipGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n // eslint-disable-next-line eqeqeq\n if (!item || (item.title == null && !item.hotkey)) return null;\n\n const arrow = item.arrow ?? false;\n const placement = item.placement ?? 'top';\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const resolvedClassNames = {\n arrow: cx(styles.arrow, item.classNames?.arrow),\n popup: cx(\n styles.popup,\n item.className,\n item.classNames?.root,\n item.classNames?.container,\n ),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, item.classNames?.content),\n };\n\n const resolvedStyleProps = (() => {\n if (typeof item.styles === 'function') return undefined;\n return item.styles;\n })();\n\n const resolvedStyles = {\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: item.zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n };\n\n const body = layoutAnimation ? (\n <BaseTooltip.Viewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </BaseTooltip.Viewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </div>\n );\n\n const popup = (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={layoutAnimation || undefined}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n data-layout-animation={layoutAnimation || undefined}\n style={resolvedStyles.popup}\n {...item.popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow\n className={resolvedClassNames.arrow}\n style={resolvedStyles.arrow}\n >\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n {body}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n );\n\n return portalContainer ? (\n <BaseTooltip.Portal container={portalContainer}>{popup}</BaseTooltip.Portal>\n ) : null;\n }}\n </BaseTooltip.Root>\n </TooltipGroupPropsContext.Provider>\n </TooltipGroupHandleContext.Provider>\n );\n};\n\nTooltipGroup.displayName = 'TooltipGroup';\n\nexport default TooltipGroup;\n","import { useLayoutEffect } from 'react';\n\ntype PopupStoreLike = {\n // Base UI store's `useState` has a strongly-typed key union; we keep it loose here on purpose.\n state: {\n activeTriggerElement?: Element | null;\n open?: boolean;\n positionerElement?: HTMLElement | null;\n };\n useState?: (...args: any[]) => unknown;\n};\n\nconst isInvalidTriggerElement = (el: Element | null): boolean => {\n if (!el) return true;\n\n if (!el.isConnected) return true;\n\n // \"display: none\" on self or an ancestor effectively hides the trigger.\n // `getComputedStyle` can throw in some edge cases (e.g. non-Element in old envs),\n // so we guard it defensively.\n try {\n // Check self and all ancestors for display: none\n let current: Element | null = el;\n while (current) {\n if (getComputedStyle(current).display === 'none') {\n return true;\n }\n current = current.parentElement;\n }\n return false;\n } catch {\n return false;\n }\n};\n\n/**\n * Destroys (hard reset) a group popup (Tooltip/Popover) when its active trigger element becomes\n * disconnected from the DOM or is effectively hidden via `display: none`.\n *\n * We intentionally poll while open to also catch CSS-driven visibility changes that won't\n * necessarily trigger DOM mutation observers.\n */\nexport const useDestroyOnInvalidActiveTriggerElement = (\n store: PopupStoreLike,\n destroy: () => void,\n options?: {\n /**\n * @default true\n */\n enabled?: boolean;\n },\n) => {\n const enabled = options?.enabled ?? true;\n\n // Subscribe with `useState` (reactive), but read from `state` (immediate) inside the loop.\n // Base UI note: `state` updates immediately, while `useState` reflects updates before the next render.\n const openReactive =\n (store.useState?.('open') as boolean | undefined) ?? Boolean(store.state.open);\n const shouldWatch = enabled && openReactive;\n\n // Use layout effect so the first check runs right after React commits DOM updates.\n // Then keep watching via rAF while open to also capture CSS-driven visibility changes.\n useLayoutEffect(() => {\n if (!shouldWatch) return;\n\n let raf = 0;\n\n const loop = () => {\n if (isInvalidTriggerElement(store.state.activeTriggerElement ?? null)) {\n destroy();\n return;\n }\n raf = window.requestAnimationFrame(loop);\n };\n\n loop();\n return () => window.cancelAnimationFrame(raf);\n }, [destroy, shouldWatch, store]);\n};\n\n/**\n * UI-only fallback: If the positioner ends up at viewport (0,0), hide it to avoid a visible flash\n * in the corner. This doesn't replace \"destroy on invalid trigger\"; it's purely a visual guard.\n */\nexport const useHidePopupWhenPositionerAtOrigin = (\n store: PopupStoreLike,\n options?: {\n /**\n * @default true\n */\n enabled?: boolean;\n /**\n * Pixel threshold to consider the element \"at origin\".\n * @default 0.5\n */\n threshold?: number;\n },\n) => {\n const enabled = options?.enabled ?? true;\n const threshold = options?.threshold ?? 0.5;\n\n const openReactive =\n (store.useState?.('open') as boolean | undefined) ?? Boolean(store.state.open);\n const positionerElementReactive =\n (store.useState?.('positionerElement') as HTMLElement | null | undefined) ??\n store.state.positionerElement ??\n null;\n\n useLayoutEffect(() => {\n const positionerEl = store.state.positionerElement ?? positionerElementReactive;\n\n if (!enabled || !openReactive || !positionerEl) {\n if (positionerEl) delete positionerEl.dataset.zeroOrigin;\n return;\n }\n\n let raf = 0;\n const loop = () => {\n const current = store.state.positionerElement ?? positionerEl;\n if (!current) return;\n\n const rect = current.getBoundingClientRect();\n const atOrigin = Math.abs(rect.left) <= threshold && Math.abs(rect.top) <= threshold;\n if (atOrigin) current.dataset.zeroOrigin = 'true';\n else delete current.dataset.zeroOrigin;\n\n raf = window.requestAnimationFrame(loop);\n };\n\n loop();\n return () => {\n window.cancelAnimationFrame(raf);\n const current = store.state.positionerElement ?? positionerEl;\n if (current) delete current.dataset.zeroOrigin;\n };\n }, [enabled, openReactive, positionerElementReactive, store, threshold]);\n};\n","import { type ReactNode, type RefObject, useEffect, useState } from 'react';\n\ninterface EllipsisConfig {\n rows?: number;\n tooltipWhenOverflow?: boolean;\n}\n\nexport const useTextOverflow = <T extends HTMLElement = HTMLElement>(\n textRef: RefObject<T | null>,\n ellipsis: boolean | EllipsisConfig | undefined,\n children: ReactNode,\n) => {\n const [isOverflow, setIsOverflow] = useState(false);\n\n const tooltipWhenOverflow = typeof ellipsis === 'object' && ellipsis.tooltipWhenOverflow;\n\n useEffect(() => {\n if (!tooltipWhenOverflow) return;\n\n const checkOverflow = () => {\n const element = textRef.current;\n if (!element) return;\n\n const rows = typeof ellipsis === 'object' ? ellipsis.rows : undefined;\n if (rows && rows > 1) {\n setIsOverflow(element.scrollHeight > element.clientHeight);\n } else {\n setIsOverflow(element.scrollWidth > element.clientWidth);\n }\n };\n\n checkOverflow();\n\n const resizeObserver = new ResizeObserver(checkOverflow);\n if (textRef.current) {\n resizeObserver.observe(textRef.current);\n }\n\n return () => resizeObserver.disconnect();\n }, [tooltipWhenOverflow, ellipsis, children, textRef]);\n\n return isOverflow;\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n code: css`\n font-family: ${cssVar.fontFamilyCode};\n `,\n danger: css`\n color: ${cssVar.colorError};\n `,\n delete: css`\n text-decoration: line-through;\n `,\n disabled: css`\n cursor: not-allowed;\n color: ${cssVar.colorTextDisabled};\n `,\n ellipsis: css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n ellipsisMulti: css`\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n `,\n // Heading styles\n h1: css`\n font-size: calc(${cssVar.fontSize} * 2.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h2: css`\n font-size: calc(${cssVar.fontSize} * 2);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h3: css`\n font-size: calc(${cssVar.fontSize} * 1.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h4: css`\n font-size: calc(${cssVar.fontSize} * 1.25);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h5: css`\n font-size: ${cssVar.fontSize};\n font-weight: bold;\n line-height: 1.25;\n `,\n info: css`\n color: ${cssVar.colorInfo};\n `,\n\n italic: css`\n font-style: italic;\n `,\n\n mark: css`\n color: #000;\n background-color: ${cssVar.yellow};\n `,\n\n p: css`\n margin-block: 0;\n `,\n\n secondary: css`\n color: ${cssVar.colorTextDescription};\n `,\n\n strong: css`\n font-weight: bold;\n `,\n success: css`\n color: ${cssVar.colorSuccess};\n `,\n text: css`\n color: ${cssVar.colorText};\n `,\n underline: css`\n text-decoration: underline;\n `,\n warning: css`\n color: ${cssVar.colorWarning};\n `,\n}));\n\nexport const variants = cva(styles.text, {\n defaultVariants: {},\n variants: {\n as: {\n h1: styles.h1,\n h2: styles.h2,\n h3: styles.h3,\n h4: styles.h4,\n h5: styles.h5,\n p: styles.p,\n },\n code: {\n true: styles.code,\n },\n delete: {\n true: styles.delete,\n },\n disabled: {\n true: styles.disabled,\n },\n ellipsis: {\n multi: styles.ellipsisMulti,\n true: styles.ellipsis,\n },\n italic: {\n true: styles.italic,\n },\n mark: {\n true: styles.mark,\n },\n strong: {\n true: styles.strong,\n },\n type: {\n danger: styles.danger,\n info: styles.info,\n secondary: styles.secondary,\n success: styles.success,\n warning: styles.warning,\n },\n underline: {\n true: styles.underline,\n },\n },\n});\n","export const preventDefault = <\n T extends {\n preventDefault: () => void;\n },\n>(\n event: T,\n) => {\n event.preventDefault();\n};\n\nexport const stopPropagation = <\n T extends {\n stopPropagation: () => void;\n },\n>(\n event: T,\n) => {\n event.stopPropagation();\n};\n\nexport const preventDefaultAndStopPropagation = <\n T extends {\n preventBaseUIHandler?: () => void;\n preventDefault: () => void;\n stopPropagation: () => void;\n },\n>(\n event: T,\n) => {\n event.preventDefault();\n event.stopPropagation();\n event.preventBaseUIHandler?.();\n};\n","'use client';\n\nimport type { IconType } from '@lobehub/icons';\nimport { memo } from 'react';\n\nconst ArrowIcon: IconType = memo(({ size = '1em', style, ...rest }) => {\n return (\n <svg\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n height={size}\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 16 16\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M7.002 10.624a.5.5 0 01-.752-.432V5.808a.5.5 0 01.752-.432l3.758 2.192a.5.5 0 010 .864l-3.758 2.192z\" />\n </svg>\n );\n});\n\nexport default ArrowIcon;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { Loader2 } from 'lucide-react';\nimport { type MouseEventHandler, memo, useCallback, useMemo } from 'react';\n\nimport { Center } from '@/Flex';\nimport Icon from '@/Icon';\nimport Tooltip from '@/Tooltip';\n\nimport { calcSize } from './components/utils';\nimport { variants } from './style';\nimport type { ActionIconProps } from './type';\n\nconst ActionIcon = memo<ActionIconProps>(\n ({\n color,\n fill,\n className,\n active,\n icon,\n size = 'middle',\n variant = 'borderless',\n style,\n glass,\n title,\n onClick,\n loading,\n fillOpacity,\n fillRule,\n focusable,\n shadow,\n disabled,\n spin: iconSpinning,\n tooltipProps,\n danger,\n ref,\n ...rest\n }) => {\n const { blockSize, borderRadius } = useMemo(() => calcSize(size), [size]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n if (loading || disabled) return;\n onClick?.(event);\n },\n [loading, disabled, onClick],\n );\n\n const node = (\n <Center\n className={cx(variants({ active, danger, disabled, glass, shadow, variant }), className)}\n flex={'none'}\n horizontal\n onClick={handleClick}\n ref={ref}\n role=\"button\"\n style={{ borderRadius, height: blockSize, width: blockSize, ...style }}\n tabIndex={disabled ? -1 : 0}\n {...rest}\n >\n {icon && (\n <Icon\n color={color}\n fill={fill}\n fillOpacity={fillOpacity}\n fillRule={fillRule}\n focusable={focusable}\n icon={loading ? Loader2 : icon}\n size={size}\n spin={loading ? true : iconSpinning}\n style={{\n pointerEvents: 'none',\n }}\n />\n )}\n </Center>\n );\n\n if (!title) return node;\n\n return (\n <Tooltip\n title={title}\n {...tooltipProps}\n styles={\n typeof tooltipProps?.styles === 'function'\n ? tooltipProps.styles\n : {\n ...tooltipProps?.styles,\n container: { pointerEvents: 'none', ...tooltipProps?.styles?.container },\n }\n }\n >\n {node}\n </Tooltip>\n );\n },\n);\n\nActionIcon.displayName = 'ActionIcon';\n\nexport default ActionIcon;\n","import { isNumber } from 'es-toolkit/compat';\n\nimport type { ActionIconSize } from '@/ActionIcon';\n\nexport const calcSize = (iconSize?: ActionIconSize) => {\n let blockSize: number | string;\n let borderRadius: number | string;\n\n if (isNumber(iconSize)) {\n const blockSize = iconSize * 1.8;\n return {\n blockSize,\n borderRadius: Math.floor(blockSize / 6),\n };\n }\n\n switch (iconSize) {\n case 'large': {\n blockSize = 44;\n borderRadius = 8;\n break;\n }\n case 'middle': {\n blockSize = 36;\n borderRadius = 6;\n break;\n }\n case 'small': {\n blockSize = 24;\n borderRadius = 4;\n break;\n }\n default: {\n if (iconSize) {\n blockSize = iconSize?.blockSize || 36;\n borderRadius = iconSize?.borderRadius || 6;\n } else {\n blockSize = '1.8em';\n borderRadius = '0.3em';\n }\n\n break;\n }\n }\n\n return {\n blockSize,\n borderRadius,\n };\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: lobeStaticStylish.active,\n borderless: lobeStaticStylish.variantBorderless,\n dangerBorderless: lobeStaticStylish.variantBorderlessDanger,\n dangerFilled: lobeStaticStylish.variantFilledDanger,\n dangerOutlined: lobeStaticStylish.variantOutlinedDanger,\n dangerRoot: css`\n &:hover {\n color: ${cssVar.colorError};\n }\n\n &:active {\n color: ${cssVar.colorErrorActive};\n }\n `,\n disabled: lobeStaticStylish.disabled,\n filled: lobeStaticStylish.variantFilled,\n glass: lobeStaticStylish.blur,\n outlined: lobeStaticStylish.variantOutlined,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n overflow: hidden;\n\n color: ${cssVar.colorTextTertiary};\n\n transition:\n color 400ms ${cssVar.motionEaseOut},\n background 100ms ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n color: ${cssVar.colorText};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n className: styles.dangerFilled,\n danger: true,\n variant: 'filled',\n },\n {\n className: styles.dangerBorderless,\n danger: true,\n variant: 'borderless',\n },\n {\n className: styles.dangerOutlined,\n danger: true,\n variant: 'outlined',\n },\n ],\n defaultVariants: {\n active: false,\n danger: false,\n disabled: false,\n glass: false,\n shadow: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n active: {\n false: null,\n true: styles.active,\n },\n danger: {\n false: null,\n true: styles.dangerRoot,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { MoreHorizontal } from 'lucide-react';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport DropdownMenu from '@/DropdownMenu';\nimport { Center } from '@/Flex';\nimport { TooltipGroup } from '@/Tooltip';\n\nimport { variants } from './style';\nimport type { ActionIconGroupProps } from './type';\n\nconst ActionIconGroup: FC<ActionIconGroupProps> = ({\n variant = 'filled',\n disabled,\n shadow,\n glass,\n actionIconProps,\n items = [],\n horizontal = true,\n menu,\n onActionClick,\n className,\n size = 'small',\n ref,\n ...rest\n}) => {\n const tooltipPlacement = useMemo(\n () => (actionIconProps?.tooltipProps?.placement || horizontal ? 'top' : 'right'),\n [actionIconProps, horizontal],\n );\n\n const menuItems = useMemo(() => {\n const rawItems = typeof menu === 'function' ? menu() : menu;\n if (!rawItems) return [];\n return rawItems.map((item) => ({\n ...(item as any),\n onClick: (info: any) => {\n (item as any)?.onClick?.(info);\n onActionClick?.(info);\n },\n }));\n }, [menu, onActionClick]);\n\n return (\n <TooltipGroup>\n <Center\n className={cx(variants({ disabled, glass, shadow, variant }), className)}\n horizontal={horizontal}\n padding={2}\n ref={ref}\n {...rest}\n >\n {items?.length > 0 &&\n items.map((item) => {\n const { icon, key, label, onClick, danger, loading, ...itemRest } = item;\n return (\n <ActionIcon\n danger={danger}\n icon={icon}\n key={key}\n loading={loading}\n onClick={(e) => {\n onActionClick?.({\n domEvent: e,\n key: String(key),\n keyPath: [String(key)],\n });\n onClick?.(e as any);\n }}\n size={size}\n title={label}\n tooltipProps={{\n placement: tooltipPlacement,\n }}\n {...actionIconProps}\n disabled={disabled || loading || itemRest?.disabled}\n />\n );\n })}\n {menu && (\n <DropdownMenu items={menuItems} nativeButton={false}>\n <ActionIcon\n disabled={disabled}\n icon={MoreHorizontal}\n key=\"more\"\n size={size}\n {...actionIconProps}\n tooltipProps={{\n placement: tooltipPlacement,\n ...actionIconProps?.tooltipProps,\n }}\n />\n </DropdownMenu>\n )}\n </Center>\n </TooltipGroup>\n );\n};\n\nActionIconGroup.displayName = 'ActionIconGroup';\n\nexport default ActionIconGroup;\n","'use client';\n\nimport { Menu } from '@base-ui/react/menu';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Switch } from 'antd';\nimport { cx } from 'antd-style';\nimport clsx from 'clsx';\nimport type React from 'react';\nimport { cloneElement, isValidElement, useCallback, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { styles } from '@/Menu/sharedStyle';\nimport { FloatingLayerProvider } from '@/hooks/useFloatingLayer';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { usePortalContainer } from '@/hooks/usePortalContainer';\nimport { CLASSNAMES } from '@/styles/classNames';\nimport { placementMap } from '@/utils/placement';\n\nimport type { DropdownMenuPlacement } from './type';\n\nexport const DROPDOWN_MENU_CONTAINER_ATTR = 'data-lobe-ui-dropdown-menu-container';\n\nexport const DropdownMenuRoot: typeof Menu.Root = (props) => <Menu.Root modal={false} {...props} />;\nexport const DropdownMenuSubmenuRoot = Menu.SubmenuRoot;\nexport const DropdownMenuCheckboxItemIndicator = Menu.CheckboxItemIndicator;\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => cx(base, className(state));\n return cx(base, className);\n};\n\nexport type DropdownMenuTriggerProps = Omit<\n React.ComponentPropsWithRef<typeof Menu.Trigger>,\n 'children' | 'render'\n> & {\n children: React.ReactNode;\n};\n\nexport const DropdownMenuTrigger = ({\n children,\n className,\n nativeButton,\n ref: refProp,\n ...rest\n}: DropdownMenuTriggerProps) => {\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n const renderer = (props: any) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n className: clsx(CLASSNAMES.DropdownMenuTrigger, className, mergedProps.className),\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n };\n\n if (isValidElement(children)) {\n return <Menu.Trigger {...rest} nativeButton={resolvedNativeButton} render={renderer as any} />;\n }\n\n return (\n <Menu.Trigger\n {...rest}\n className={clsx(CLASSNAMES.DropdownMenuTrigger, className)}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Menu.Trigger>\n );\n};\n\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger';\n\nexport type DropdownMenuPortalProps = React.ComponentProps<typeof Menu.Portal> & {\n /**\n * When `container` is not provided, it uses a shared container created by `usePortalContainer`.\n */\n container?: HTMLElement | null;\n};\n\nexport const DropdownMenuPortal = ({ container, ...rest }: DropdownMenuPortalProps) => {\n const defaultContainer = usePortalContainer(DROPDOWN_MENU_CONTAINER_ATTR);\n return <Menu.Portal container={container ?? defaultContainer} {...rest} />;\n};\n\nDropdownMenuPortal.displayName = 'DropdownMenuPortal';\n\nexport type DropdownMenuPositionerProps = React.ComponentProps<typeof Menu.Positioner> & {\n hoverTrigger?: boolean;\n placement?: DropdownMenuPlacement;\n};\n\nexport const DropdownMenuPositioner = ({\n className,\n placement,\n hoverTrigger,\n align,\n side,\n sideOffset,\n children,\n ...rest\n}: DropdownMenuPositionerProps) => {\n const placementConfig = placement ? placementMap[placement] : undefined;\n const [positionerNode, setPositionerNode] = useState<HTMLDivElement | null>(null);\n\n return (\n <Menu.Positioner\n {...rest}\n align={align ?? placementConfig?.align}\n className={mergeStateClassName(styles.positioner, className as any) as any}\n data-hover-trigger={hoverTrigger || undefined}\n data-placement={placement}\n ref={setPositionerNode}\n side={side ?? placementConfig?.side}\n sideOffset={sideOffset ?? (placementConfig ? 6 : undefined)}\n >\n <FloatingLayerProvider value={positionerNode}>{children}</FloatingLayerProvider>\n </Menu.Positioner>\n );\n};\n\nDropdownMenuPositioner.displayName = 'DropdownMenuPositioner';\n\nexport type DropdownMenuPopupProps = React.ComponentProps<typeof Menu.Popup>;\n\nexport const DropdownMenuPopup = ({ className, ...rest }: DropdownMenuPopupProps) => {\n return (\n <Menu.Popup {...rest} className={mergeStateClassName(styles.popup, className as any) as any} />\n );\n};\n\nDropdownMenuPopup.displayName = 'DropdownMenuPopup';\n\nexport type DropdownMenuItemProps = React.ComponentProps<typeof Menu.Item> & { danger?: boolean };\n\nexport const DropdownMenuItem = ({ className, danger, ...rest }: DropdownMenuItemProps) => {\n return (\n <Menu.Item\n {...rest}\n className={(state) =>\n cx(\n styles.item,\n danger && styles.danger,\n typeof className === 'function' ? className(state) : className,\n )\n }\n />\n );\n};\n\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentProps<typeof Menu.CheckboxItem> & {\n danger?: boolean;\n};\n\nexport const DropdownMenuCheckboxItemPrimitive = ({\n className,\n danger,\n ...rest\n}: DropdownMenuCheckboxItemProps) => {\n return (\n <Menu.CheckboxItem\n {...rest}\n className={(state) =>\n cx(\n styles.item,\n danger && styles.danger,\n typeof className === 'function' ? className(state) : className,\n )\n }\n />\n );\n};\n\nDropdownMenuCheckboxItemPrimitive.displayName = 'DropdownMenuCheckboxItemPrimitive';\n\nexport type DropdownMenuSeparatorProps = React.ComponentProps<typeof Menu.Separator>;\n\nexport const DropdownMenuSeparator = ({ className, ...rest }: DropdownMenuSeparatorProps) => {\n return (\n <Menu.Separator\n {...rest}\n className={(state) =>\n cx(styles.separator, typeof className === 'function' ? className(state) : className)\n }\n />\n );\n};\n\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport const DropdownMenuGroup = Menu.Group;\n\nexport type DropdownMenuGroupLabelProps = React.ComponentProps<typeof Menu.GroupLabel>;\n\nexport const DropdownMenuGroupLabel = ({ className, ...rest }: DropdownMenuGroupLabelProps) => {\n return (\n <Menu.GroupLabel\n {...rest}\n className={(state) =>\n cx(styles.groupLabel, typeof className === 'function' ? className(state) : className)\n }\n />\n );\n};\n\nDropdownMenuGroupLabel.displayName = 'DropdownMenuGroupLabel';\n\nexport type DropdownMenuSubmenuTriggerProps = React.ComponentProps<typeof Menu.SubmenuTrigger> & {\n danger?: boolean;\n};\n\nexport const DropdownMenuSubmenuTrigger = ({\n className,\n danger,\n ...rest\n}: DropdownMenuSubmenuTriggerProps) => {\n return (\n <Menu.SubmenuTrigger\n {...rest}\n className={(state) =>\n cx(\n styles.item,\n danger && styles.danger,\n typeof className === 'function' ? className(state) : className,\n )\n }\n />\n );\n};\n\nDropdownMenuSubmenuTrigger.displayName = 'DropdownMenuSubmenuTrigger';\n\nexport type DropdownMenuItemContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const DropdownMenuItemContent = ({ className, ...rest }: DropdownMenuItemContentProps) => {\n return <div {...rest} className={cx(styles.itemContent, className)} />;\n};\n\nDropdownMenuItemContent.displayName = 'DropdownMenuItemContent';\n\nexport type DropdownMenuItemIconProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const DropdownMenuItemIcon = ({ className, ...rest }: DropdownMenuItemIconProps) => {\n return <span {...rest} className={cx(styles.icon, className)} />;\n};\n\nDropdownMenuItemIcon.displayName = 'DropdownMenuItemIcon';\n\nexport type DropdownMenuItemLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const DropdownMenuItemLabel = ({ className, ...rest }: DropdownMenuItemLabelProps) => {\n return <span {...rest} className={cx(styles.label, className)} />;\n};\n\nDropdownMenuItemLabel.displayName = 'DropdownMenuItemLabel';\n\nexport type DropdownMenuItemExtraProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const DropdownMenuItemExtra = ({ className, ...rest }: DropdownMenuItemExtraProps) => {\n return <span {...rest} className={cx(styles.extra, className)} />;\n};\n\nDropdownMenuItemExtra.displayName = 'DropdownMenuItemExtra';\n\nexport type DropdownMenuSubmenuArrowProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const DropdownMenuSubmenuArrow = ({ className, ...rest }: DropdownMenuSubmenuArrowProps) => {\n return <span {...rest} className={cx(styles.submenuArrow, className)} />;\n};\n\nDropdownMenuSubmenuArrow.displayName = 'DropdownMenuSubmenuArrow';\n\nexport type DropdownMenuSwitchItemProps = Omit<\n React.ComponentProps<typeof Menu.Item>,\n 'onClick'\n> & {\n checked?: boolean;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n};\n\nexport const DropdownMenuSwitchItem = ({\n checked: checkedProp,\n className,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n onCheckedChange,\n children,\n ...rest\n}: DropdownMenuSwitchItemProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <Menu.Item\n {...rest}\n className={(state) =>\n cx(\n styles.item,\n danger && styles.danger,\n typeof className === 'function' ? className(state) : className,\n )\n }\n closeOnClick={closeOnClick}\n disabled={disabled}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <Switch\n checked={checked}\n disabled={disabled}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n size=\"small\"\n style={{ marginInlineStart: 16 }}\n />\n </Menu.Item>\n );\n};\n\nDropdownMenuSwitchItem.displayName = 'DropdownMenuSwitchItem';\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n danger: css`\n color: ${cssVar.colorError} !important;\n\n &:hover {\n background: ${cssVar.colorErrorBg} !important;\n }\n `,\n\n empty: css`\n cursor: default;\n font-style: italic;\n color: ${cssVar.colorTextTertiary};\n `,\n\n extra: css`\n margin-inline-start: auto;\n padding-inline-start: 16px;\n font-size: 12px;\n color: ${cssVar.colorTextTertiary};\n `,\n\n groupLabel: css`\n user-select: none;\n\n padding-block: 8px 4px;\n padding-inline: 12px;\n\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n color: ${cssVar.colorTextTertiary};\n text-transform: capitalize;\n `,\n\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 16px;\n height: 16px;\n margin-inline-end: 8px;\n `,\n\n item: css`\n cursor: pointer;\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n\n width: 100%;\n min-height: 36px;\n padding-block: 8px;\n padding-inline: 12px;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 14px;\n line-height: 20px;\n color: ${cssVar.colorText};\n\n outline: none;\n\n transition: all 150ms ${cssVar.motionEaseOut};\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active {\n background: ${cssVar.colorFillSecondary};\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: ${cssVar.colorTextDisabled};\n opacity: 0.5;\n\n &:hover {\n background: transparent;\n }\n }\n\n &[data-highlighted]:not([data-disabled]) {\n background: ${cssVar.colorFillTertiary};\n }\n\n &[data-state='open']:not([data-disabled]),\n &[data-open]:not([data-disabled]),\n &[aria-expanded='true']:not([data-disabled]) {\n background: ${cssVar.colorFillTertiary};\n }\n `,\n\n itemContent: css`\n display: flex;\n flex: 1;\n gap: 0;\n align-items: center;\n `,\n\n label: css`\n overflow: hidden;\n flex: 1;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n & a,\n & a:visited,\n & a:hover,\n & a:active {\n color: inherit;\n }\n `,\n\n popup: css`\n min-width: 120px;\n padding: 4px;\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorBgElevated};\n outline: none;\n box-shadow:\n 0 0 15px 0 #00000008,\n 0 2px 30px 0 #00000014,\n 0 0 0 1px ${cssVar.colorBorder} inset;\n `,\n positioner: css`\n --lobe-dropdown-animation-duration: 140ms;\n --lobe-dropdown-animation-scale-y: 0.92;\n --lobe-dropdown-animation-ease-in: ease-in;\n --lobe-dropdown-animation-ease-out: ${cssVar.motionEaseOut};\n\n z-index: 1100;\n\n & > * {\n will-change: opacity, transform;\n transform-origin: var(--transform-origin);\n animation: none;\n }\n\n &[data-open] > * {\n transform: scaleY(1);\n opacity: 1;\n transition:\n opacity var(--lobe-dropdown-animation-duration) var(--lobe-dropdown-animation-ease-out),\n transform var(--lobe-dropdown-animation-duration) var(--lobe-dropdown-animation-ease-out);\n }\n\n &[data-open] > *[data-starting-style] {\n transform: scaleY(var(--lobe-dropdown-animation-scale-y));\n opacity: 0;\n }\n\n &[data-closed] > * {\n transform: scaleY(var(--lobe-dropdown-animation-scale-y));\n opacity: 0;\n transition:\n opacity var(--lobe-dropdown-animation-duration) var(--lobe-dropdown-animation-ease-in),\n transform var(--lobe-dropdown-animation-duration) var(--lobe-dropdown-animation-ease-in);\n }\n\n &[data-hover-trigger] {\n --lobe-dropdown-animation-duration: 140ms;\n }\n\n &[data-submenu] {\n --lobe-dropdown-animation-duration: 0ms;\n --lobe-dropdown-animation-scale-y: 1;\n }\n `,\n\n separator: css`\n height: 1px;\n margin-block: 4px;\n margin-inline: 0;\n background: ${cssVar.colorBorder};\n `,\n\n submenuArrow: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n margin-inline-start: auto;\n padding-inline-start: 8px;\n `,\n}));\n","'use client';\n\nimport { useMemo } from 'react';\n\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\n\nimport { useIsClient } from './useIsClient';\n\nexport const usePortalContainer = (containerAttr?: string): HTMLElement | null => {\n const isClient = useIsClient();\n\n return useMemo(() => {\n if (!isClient) return null;\n\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n if (themeApp) return themeApp;\n\n if (containerAttr) {\n const container = document.querySelector<HTMLElement>(`[${containerAttr}=\"true\"]`);\n if (container) return container;\n }\n\n return document.body;\n }, [isClient, containerAttr]);\n};\n","'use client';\n\nimport { Menu } from '@base-ui/react/menu';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { parseTrigger } from '@/utils/parseTrigger';\n\nimport {\n DropdownMenuPopup,\n DropdownMenuPortal,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from './atoms';\nimport { renderDropdownMenuItems } from './renderItems';\nimport type { DropdownMenuProps } from './type';\n\nconst DropdownMenu = memo<DropdownMenuProps>(\n ({\n children,\n defaultOpen,\n iconSpaceMode,\n items,\n nativeButton,\n onOpenChange,\n onOpenChangeComplete,\n open,\n placement = 'bottomLeft',\n popupProps,\n portalProps,\n positionerProps,\n trigger = 'click',\n triggerProps,\n ...rest\n }) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const { openOnHover } = useMemo(() => parseTrigger(trigger), [trigger]);\n\n useEffect(() => {\n if (open === undefined) return;\n setUncontrolledOpen(open);\n }, [open]);\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, details: Parameters<NonNullable<typeof onOpenChange>>[1]) => {\n onOpenChange?.(nextOpen, details);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [onOpenChange, open],\n );\n\n const menuItemsRef = useRef<ReturnType<typeof renderDropdownMenuItems> | null>(null);\n const isOpen = open ?? uncontrolledOpen;\n const menuItems = useMemo(() => {\n if (isOpen) {\n const resolvedItems = typeof items === 'function' ? items() : items;\n const renderedItems = renderDropdownMenuItems(resolvedItems, [], { iconSpaceMode });\n menuItemsRef.current = renderedItems;\n return renderedItems;\n }\n return menuItemsRef.current;\n }, [isOpen, items, iconSpaceMode]);\n const handleOpenChangeComplete = useCallback(\n (nextOpen: boolean) => {\n onOpenChangeComplete?.(nextOpen);\n if (!nextOpen) {\n menuItemsRef.current = null;\n }\n },\n [onOpenChangeComplete],\n );\n const { container: portalContainer, ...restPortalProps } = (portalProps ?? {}) as any;\n\n const { resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n triggerNativeButton: triggerProps?.nativeButton,\n });\n\n const triggerElement = (\n <DropdownMenuTrigger\n {...triggerProps}\n nativeButton={resolvedNativeButton}\n openOnHover={openOnHover}\n >\n {children}\n </DropdownMenuTrigger>\n );\n\n return (\n <Menu.Root\n {...rest}\n defaultOpen={defaultOpen}\n modal={false}\n onOpenChange={handleOpenChange}\n onOpenChangeComplete={handleOpenChangeComplete}\n open={open}\n >\n {triggerElement}\n <DropdownMenuPortal container={portalContainer} {...restPortalProps}>\n <DropdownMenuPositioner\n {...positionerProps}\n hoverTrigger={openOnHover}\n placement={placement}\n >\n <DropdownMenuPopup {...popupProps}>{menuItems}</DropdownMenuPopup>\n </DropdownMenuPositioner>\n </DropdownMenuPortal>\n </Menu.Root>\n );\n },\n);\n\nDropdownMenu.displayName = 'DropdownMenuV2';\n\nexport default DropdownMenu;\n","'use client';\n\nimport type { Trigger } from '@/types';\n\n/**\n * Parses trigger prop to determine hover and click behavior\n */\nexport function parseTrigger(trigger: Trigger): {\n openOnClick: boolean;\n openOnHover: boolean;\n} {\n const triggers = Array.isArray(trigger) ? trigger : [trigger];\n const normalizedTriggers = new Set(\n triggers.flatMap((item) => (item === 'both' ? ['hover', 'click'] : [item])),\n );\n return {\n openOnClick: normalizedTriggers.has('click'),\n openOnHover: normalizedTriggers.has('hover'),\n };\n}\n","import { Check, ChevronRight } from 'lucide-react';\nimport type { MenuInfo } from 'rc-menu/es/interface';\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n} from 'react';\n\nimport {\n type MenuDividerType,\n type MenuItemGroupType,\n type MenuItemType,\n type RenderItemContentOptions,\n type RenderOptions,\n type SubMenuType,\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n} from '@/Menu';\n\nimport {\n DropdownMenuCheckboxItemIndicator,\n DropdownMenuCheckboxItemPrimitive,\n DropdownMenuGroup,\n DropdownMenuGroupLabel,\n DropdownMenuItem,\n DropdownMenuItemContent,\n DropdownMenuItemExtra,\n DropdownMenuItemIcon,\n DropdownMenuItemLabel,\n DropdownMenuPopup,\n DropdownMenuPortal,\n DropdownMenuPositioner,\n DropdownMenuSeparator,\n DropdownMenuSubmenuArrow,\n DropdownMenuSubmenuRoot,\n DropdownMenuSubmenuTrigger,\n DropdownMenuSwitchItem,\n} from './atoms';\nimport type {\n DropdownItem,\n DropdownMenuCheckboxItem as DropdownMenuCheckboxItemType,\n DropdownMenuSwitchItem as DropdownMenuSwitchItemType,\n} from './type';\n\nexport type { IconSpaceMode } from '@/Menu';\n\nconst renderItemContent = (\n item: MenuItemType | SubMenuType | DropdownMenuCheckboxItemType | DropdownMenuSwitchItemType,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n return (\n <DropdownMenuItemContent>\n {shouldRenderIcon ? (\n <DropdownMenuItemIcon aria-hidden={!hasIcon}>\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon) : null}\n </DropdownMenuItemIcon>\n ) : null}\n <DropdownMenuItemLabel>{label}</DropdownMenuItemLabel>\n {extra ? <DropdownMenuItemExtra>{extra}</DropdownMenuItemExtra> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <DropdownMenuSubmenuArrow>\n <ChevronRight size={16} />\n </DropdownMenuSubmenuArrow>\n ) : null}\n </DropdownMenuItemContent>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderDropdownMenuItems = (\n items: DropdownItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as DropdownMenuCheckboxItemType).type === 'checkbox') {\n const checkboxItem = item as DropdownMenuCheckboxItemType;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <DropdownMenuCheckboxItemIndicator>{renderIcon(Check)}</DropdownMenuCheckboxItemIndicator>\n );\n\n return (\n <DropdownMenuCheckboxItemPrimitive\n checked={checkboxItem.checked}\n closeOnClick={checkboxItem.closeOnClick}\n danger={isDanger}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(checkboxItem, { indicatorOnRight, reserveIconSpace }, indicator)}\n </DropdownMenuCheckboxItemPrimitive>\n );\n }\n\n if ((item as DropdownMenuSwitchItemType).type === 'switch') {\n const switchItem = item as DropdownMenuSwitchItemType;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <DropdownMenuSwitchItem\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => switchItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(switchItem, { reserveIconSpace })}\n </DropdownMenuSwitchItem>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <DropdownMenuSeparator key={itemKey} />;\n }\n\n if ((item as MenuItemGroupType).type === 'group') {\n const group = item as MenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <DropdownMenuGroup key={itemKey}>\n {group.label ? <DropdownMenuGroupLabel>{group.label}</DropdownMenuGroupLabel> : null}\n {group.children\n ? renderDropdownMenuItems(group.children, nextKeyPath, {\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </DropdownMenuGroup>\n );\n }\n\n if ((item as SubMenuType).type === 'submenu' || 'children' in item) {\n const submenu = item as SubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n\n return (\n <DropdownMenuSubmenuRoot key={itemKey}>\n <DropdownMenuSubmenuTrigger\n danger={isDanger}\n disabled={submenu.disabled}\n label={labelText}\n >\n {renderItemContent(submenu, {\n reserveIconSpace,\n submenu: true,\n })}\n </DropdownMenuSubmenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuPositioner alignOffset={-4} data-submenu=\"\" sideOffset={-1}>\n <DropdownMenuPopup>\n {submenu.children\n ? renderDropdownMenuItems(submenu.children, nextKeyPath, { iconSpaceMode })\n : null}\n </DropdownMenuPopup>\n </DropdownMenuPositioner>\n </DropdownMenuPortal>\n </DropdownMenuSubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <DropdownMenuItem\n closeOnClick={menuItem.closeOnClick}\n danger={isDanger}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { reserveIconSpace })}\n </DropdownMenuItem>\n );\n });\n};\n","'use client';\n\nimport { Menu as AntdMenu, ConfigProvider } from 'antd';\nimport { cx, useTheme } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { IconProvider } from '@/Icon';\nimport { mapItems } from '@/Menu/utils';\n\nimport { variants } from './style';\nimport type { MenuProps } from './type';\n\nconst Menu = memo<MenuProps>(\n ({\n compact,\n shadow,\n variant = 'borderless',\n className,\n selectable,\n iconProps,\n items,\n ref,\n ...rest\n }) => {\n const theme = useTheme();\n\n const antdItems = useMemo(() => items.map((item) => mapItems(item)), [items]);\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Menu: {\n controlHeightLG: 36,\n iconMarginInlineEnd: 8,\n iconSize: 16,\n itemActiveBg: theme.isDarkMode ? theme.colorFillQuaternary : theme.colorFillSecondary,\n itemBorderRadius: theme.borderRadius,\n itemColor: theme.colorTextSecondary,\n itemHoverBg: theme.colorFillTertiary,\n itemMarginBlock: 4,\n itemMarginInline: 4,\n itemSelectedBg: theme.colorFillSecondary,\n },\n },\n }}\n >\n <IconProvider\n config={{\n size: 'small',\n ...iconProps,\n }}\n >\n <AntdMenu\n className={cx(variants({ compact, shadow, variant }), className)}\n inlineIndent={12}\n items={antdItems}\n mode=\"vertical\"\n ref={ref}\n selectable={selectable}\n {...rest}\n />\n </IconProvider>\n </ConfigProvider>\n );\n },\n);\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import type { ItemType as AntdItemType } from 'antd/es/menu/interface';\nimport { isValidElement } from 'react';\n\nimport Icon from '@/Icon';\n\nimport type { ItemType } from './type';\n\nexport const mapItems = (item: ItemType): AntdItemType => {\n switch (item?.type) {\n case 'divider': {\n return item;\n }\n case 'group': {\n const { children, ...rest } = item;\n return {\n children: children ? children?.map((i) => mapItems(i)) : undefined,\n ...rest,\n };\n }\n default: {\n const { children, icon, ...rest } = item as any;\n return {\n children: children ? children?.map((i: any) => mapItems(i)) : undefined,\n icon: icon ? isValidElement(icon) ? icon : <Icon icon={icon} size={'small'} /> : undefined,\n ...rest,\n };\n }\n }\n};\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n borderless: cx(\n lobeStaticStylish.variantBorderlessWithoutHover,\n css`\n padding: 0;\n border-radius: unset;\n `,\n ),\n compact: css`\n &[class*='ant-menu'] {\n [class*='ant-menu-item-divider'] {\n margin: 0;\n }\n }\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n &[class*='ant-menu'] {\n flex: 1;\n\n padding: 4px;\n border: none !important;\n border-radius: ${cssVar.borderRadiusLG};\n\n background: transparent;\n\n [class*='ant-menu-sub'][class*='ant-menu-inline'] {\n background: transparent;\n\n > [class*='ant-menu-item'] {\n padding-inline-start: 36px !important;\n }\n }\n\n [class*='ant-menu-item-divider'] {\n margin-block: 1em;\n }\n }\n `,\n shadow: lobeStaticStylish.shadow,\n}));\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n compact: false,\n shadow: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n compact: {\n false: null,\n true: styles.compact,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import type { Key, ReactNode } from 'react';\nimport { isValidElement } from 'react';\n\nimport Icon, { type IconSize } from '@/Icon';\n\nimport type { BaseMenuItemType } from './baseItem';\nimport type { MenuCheckboxItemType } from './checkboxItem';\nimport type { MenuItemType, SubMenuType } from './type';\n\nexport type IconSpaceMode = 'global' | 'group';\n\nexport interface RenderOptions {\n iconSpaceMode?: IconSpaceMode;\n indicatorOnRight?: boolean;\n reserveIconSpace?: boolean;\n}\n\nexport interface RenderItemContentOptions {\n indicatorOnRight?: boolean;\n reserveIconSpace?: boolean;\n submenu?: boolean;\n}\n\ntype KeyableItem = { key?: Key };\n\nexport const getItemKey = (item: KeyableItem, fallback: string): Key => {\n if (item && 'key' in item && item.key !== undefined) return item.key;\n return fallback;\n};\n\ntype LabelableItem = {\n key?: Key;\n label?: ReactNode;\n title?: ReactNode;\n};\n\nexport const getItemLabel = (\n item: MenuItemType | SubMenuType | MenuCheckboxItemType | LabelableItem,\n): ReactNode => {\n if (item.label !== undefined) return item.label;\n if ('title' in item && item.title !== undefined) return item.title;\n return item.key;\n};\n\nexport const renderIcon = (icon: MenuItemType['icon'], size?: IconSize): ReactNode => {\n if (!icon) return null;\n if (isValidElement(icon)) return icon;\n return <Icon icon={icon} size={size} />;\n};\n\nexport const hasAnyIcon = (items: BaseMenuItemType[], recursive = false): boolean => {\n return items.some((item) => {\n if (!item) return false;\n if ((item as MenuCheckboxItemType).type === 'checkbox') return true;\n if ('icon' in item && item.icon) return true;\n if (recursive && 'children' in item && item.children) {\n return hasAnyIcon(item.children as BaseMenuItemType[], true);\n }\n return false;\n });\n};\n\nexport const hasCheckboxAndIcon = (items: BaseMenuItemType[]): boolean => {\n let hasCheckbox = false;\n let hasIcon = false;\n for (const item of items) {\n if (!item) continue;\n if ((item as MenuCheckboxItemType).type === 'checkbox') {\n hasCheckbox = true;\n }\n if ('icon' in item && item.icon) {\n hasIcon = true;\n }\n if (hasCheckbox && hasIcon) return true;\n }\n return false;\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderless,\n disabled: lobeStaticStylish.disabled,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n glass: lobeStaticStylish.blur,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n disabled: false,\n glass: false,\n shadow: false,\n variant: 'outlined',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { Alert as AntdAlert } from 'antd';\nimport { cssVar, cx, useTheme } from 'antd-style';\nimport { camelCase } from 'es-toolkit/compat';\nimport { AlertTriangle, CheckCircle, Info, X, XCircle } from 'lucide-react';\nimport { memo } from 'react';\n\nimport { Accordion, AccordionItem } from '@/Accordion';\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { extraHeaderVariants, extraVariants, rootVariants } from './style';\nimport type { AlertProps } from './type';\n\nconst typeIcons = {\n error: XCircle,\n info: Info,\n secondary: AlertTriangle,\n success: CheckCircle,\n warning: AlertTriangle,\n};\n\nconst colors = (theme: any, type: string = 'info', ...keys: string[]) => {\n if (type === 'secondary') return theme[camelCase(['color', ...keys].join('-'))] as string;\n return theme[camelCase(['color', type, ...keys].join('-'))] as string;\n};\n\nconst Alert = memo<AlertProps>(\n ({\n closable = false,\n description,\n showIcon = true,\n type = 'info',\n glass,\n icon,\n colorfulText = true,\n iconProps,\n style,\n extra,\n classNames,\n styles: customStyles,\n text,\n extraDefaultExpand = false,\n extraIsolate,\n banner,\n variant = 'filled',\n ref,\n ...rest\n }) => {\n const theme = useTheme();\n const hasTitle = !!description;\n const isClosable = !!closable;\n const isShowIcon = !!showIcon;\n\n const isInsideExtra = Boolean(!extraIsolate && !!extra);\n\n const alert = (\n <AntdAlert\n banner={banner}\n className={cx(\n rootVariants({\n closable: isClosable,\n colorfulText,\n glass,\n hasExtra: isInsideExtra,\n hasTitle,\n showIcon: isShowIcon,\n variant,\n }),\n classNames?.alert,\n )}\n closable={\n typeof closable === 'boolean'\n ? closable\n : {\n closeIcon: <ActionIcon color={colors(theme, type)} icon={X} size={'small'} />,\n ...closable,\n }\n }\n description={description}\n icon={\n <Icon\n color={type === 'secondary' ? cssVar.colorTextSecondary : undefined}\n icon={icon || typeIcons[type]}\n size={description ? 24 : 18}\n {...iconProps}\n />\n }\n ref={ref}\n showIcon={showIcon}\n style={{\n background: colors(theme, type, 'fillTertiary'),\n borderColor: colors(theme, type, 'fillSecondary'),\n color: colorfulText ? colors(theme, type) : undefined,\n ...style,\n ...customStyles?.alert,\n }}\n type={type === 'secondary' ? 'info' : type}\n {...rest}\n />\n );\n\n if (!extra) return alert;\n\n if (extraIsolate)\n return (\n <Flexbox className={classNames?.container} gap={8}>\n {alert}\n {extra}\n </Flexbox>\n );\n\n return (\n <Flexbox className={classNames?.container} style={customStyles?.container}>\n {alert}\n <Flexbox\n className={extraVariants({ banner, variant })}\n style={{\n background: colors(theme, type, 'fillTertiary'),\n borderColor: colors(theme, type, 'fillSecondary'),\n color: colors(theme, type),\n fontSize: description ? 14 : 12,\n }}\n >\n <Accordion defaultExpandedKeys={extraDefaultExpand ? ['extra'] : []}>\n <AccordionItem\n classNames={{\n content: classNames?.extraContent,\n header: extraHeaderVariants({ hasTitle, variant }),\n }}\n itemKey={'extra'}\n styles={{\n content: {\n fontSize: 12,\n ...customStyles?.extraContent,\n },\n header: {\n borderColor: colors(theme, type, 'fillSecondary'),\n },\n indicator: {\n color: colors(theme, type),\n },\n title: {\n color: colors(theme, type),\n fontSize: 12,\n },\n }}\n title={text?.detail || 'Show Details'}\n >\n {extra}\n </AccordionItem>\n </Accordion>\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nAlert.displayName = 'Alert';\n\nexport default Alert;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n banner: css`\n border: none !important;\n border-radius: 0 !important;\n `,\n borderless: css`\n padding: 0 !important;\n border: none !important;\n background: transparent !important;\n `,\n borderlessExtraHeaderNoTitle: css`\n margin-block-start: 8px;\n padding-inline: 0;\n `,\n borderlessExtraHeaderWithTitle: css`\n margin-block-start: 16px;\n padding-inline: 0;\n `,\n colorfulText: css`\n .${prefixCls}-alert-message,.${prefixCls}-alert-description {\n color: inherit;\n }\n `,\n expandText: css`\n padding-inline-end: 12px;\n\n &:hover {\n cursor: pointer;\n }\n `,\n extra: css`\n position: relative;\n\n overflow: hidden;\n\n max-width: 100%;\n border: 1px solid;\n border-block-start: none;\n border-end-start-radius: ${cssVar.borderRadiusLG};\n border-end-end-radius: ${cssVar.borderRadiusLG};\n `,\n extraHeader: css`\n border-block-start: 1px dashed;\n border-radius: 0;\n background: transparent !important;\n `,\n filled: css``,\n glass: lobeStaticStylish.blur,\n hasExtra: css`\n border-block-end: none;\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n `,\n outlined: css`\n background: transparent !important;\n `,\n // Root variants based on closable, hasTitle, showIcon combinations\n rootBase: css`\n position: relative;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n max-width: 100%;\n\n .${prefixCls}-alert-icon {\n display: flex;\n align-items: center;\n height: 24px;\n margin: 0;\n }\n .${prefixCls}-alert-close-icon {\n display: flex;\n align-items: center;\n height: 24px;\n margin: 0;\n }\n `,\n rootNoTitleNoIconNoClosable: css`\n gap: 8px;\n padding-block: 8px;\n padding-inline: 12px;\n\n .${prefixCls}-alert-title {\n font-weight: 400;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n `,\n rootNoTitleNoIconWithClosable: css`\n gap: 8px;\n padding-block: 8px;\n padding-inline: 12px 9px;\n\n .${prefixCls}-alert-title {\n font-weight: 400;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n `,\n rootNoTitleWithIconNoClosable: css`\n gap: 8px;\n padding-block: 8px;\n padding-inline: 9px 12px;\n\n .${prefixCls}-alert-title {\n font-weight: 400;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n `,\n rootNoTitleWithIconWithClosable: css`\n gap: 8px;\n padding-block: 8px;\n padding-inline: 9px;\n\n .${prefixCls}-alert-title {\n font-weight: 400;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n `,\n rootWithTitleNoIconNoClosable: css`\n gap: 12px;\n padding-block: 16px;\n padding-inline: 16px;\n\n .${prefixCls}-alert-title {\n font-weight: 500;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n .${prefixCls}-alert-description {\n line-height: 1.5;\n word-break: normal;\n opacity: 0.75;\n }\n `,\n rootWithTitleNoIconWithClosable: css`\n gap: 12px;\n padding-block: 16px;\n padding-inline: 16px 12px;\n\n .${prefixCls}-alert-title {\n font-weight: 500;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n .${prefixCls}-alert-description {\n line-height: 1.5;\n word-break: normal;\n opacity: 0.75;\n }\n `,\n rootWithTitleWithIconNoClosable: css`\n gap: 12px;\n padding-block: 16px;\n padding-inline: 12px 16px;\n\n .${prefixCls}-alert-title {\n font-weight: 500;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n .${prefixCls}-alert-description {\n line-height: 1.5;\n word-break: normal;\n opacity: 0.75;\n }\n `,\n rootWithTitleWithIconWithClosable: css`\n gap: 12px;\n padding-block: 16px;\n padding-inline: 12px;\n\n .${prefixCls}-alert-title {\n font-weight: 500;\n line-height: 24px;\n color: inherit;\n word-break: normal;\n }\n .${prefixCls}-alert-description {\n line-height: 1.5;\n word-break: normal;\n opacity: 0.75;\n }\n `,\n };\n});\n\nexport const extraVariants = cva(styles.extra, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n banner: {\n false: null,\n true: styles.banner,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const rootVariants = cva(styles.rootBase, {\n compoundVariants: [\n {\n class: styles.rootNoTitleNoIconNoClosable,\n closable: false,\n hasTitle: false,\n showIcon: false,\n },\n {\n class: styles.rootNoTitleNoIconWithClosable,\n closable: true,\n hasTitle: false,\n showIcon: false,\n },\n {\n class: styles.rootNoTitleWithIconNoClosable,\n closable: false,\n hasTitle: false,\n showIcon: true,\n },\n {\n class: styles.rootNoTitleWithIconWithClosable,\n closable: true,\n hasTitle: false,\n showIcon: true,\n },\n {\n class: styles.rootWithTitleNoIconNoClosable,\n closable: false,\n hasTitle: true,\n showIcon: false,\n },\n {\n class: styles.rootWithTitleNoIconWithClosable,\n closable: true,\n hasTitle: true,\n showIcon: false,\n },\n {\n class: styles.rootWithTitleWithIconNoClosable,\n closable: false,\n hasTitle: true,\n showIcon: true,\n },\n {\n class: styles.rootWithTitleWithIconWithClosable,\n closable: true,\n hasTitle: true,\n showIcon: true,\n },\n ],\n defaultVariants: {\n closable: false,\n colorfulText: true,\n glass: false,\n hasTitle: false,\n showIcon: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n closable: {\n false: null,\n true: null,\n },\n colorfulText: {\n false: null,\n true: styles.colorfulText,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n hasTitle: {\n false: null,\n true: null,\n },\n showIcon: {\n false: null,\n true: null,\n },\n variant: {\n borderless: styles.borderless,\n filled: styles.filled,\n outlined: styles.outlined,\n },\n hasExtra: {\n false: null,\n true: styles.hasExtra,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const extraHeaderVariants = cva(styles.extraHeader, {\n compoundVariants: [\n {\n class: styles.borderlessExtraHeaderNoTitle,\n hasTitle: false,\n variant: 'borderless',\n },\n {\n class: styles.borderlessExtraHeaderWithTitle,\n hasTitle: true,\n variant: 'borderless',\n },\n ],\n defaultVariants: {\n hasTitle: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n hasTitle: {\n false: null,\n true: null,\n },\n variant: {\n borderless: null,\n filled: null,\n outlined: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { AutoComplete as AntAutoComplete } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport { AutoCompleteProps } from './type';\n\nconst AutoComplete = memo<AutoCompleteProps>(({ variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntAutoComplete\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nAutoComplete.displayName = 'AutoComplete';\n\nexport default AutoComplete;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n borderless: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantBorderless}\n }\n }\n `,\n filled: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantFilled}\n }\n }\n `,\n outlined: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantOutlined}\n }\n }\n `,\n root: css``,\n shadow: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.shadow}\n }\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n underlined: null,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { getEmoji } from '@lobehub/fluent-emoji';\nimport { Avatar as AntAvatar } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport { Loader2 } from 'lucide-react';\nimport { memo, useMemo, useState } from 'react';\n\nimport { Center } from '@/Flex';\nimport FluentEmoji from '@/FluentEmoji';\nimport Icon from '@/Icon';\nimport Img from '@/Img';\nimport { safeReadableColor } from '@/utils/safeReadableColor';\n\nimport { styles, variants } from './style';\nimport type { AvatarProps } from './type';\nimport {\n calculateEmojiSize,\n isDefaultAntAvatar as checkIsDefaultAntAvatar,\n formatAvatarText,\n getActualColorForReadable,\n hasValidBackground,\n} from './utils';\n\nconst Avatar = memo<AvatarProps>(\n ({\n bordered,\n className,\n avatar,\n title,\n animation,\n borderedColor,\n size = 48,\n shape = 'square',\n background,\n style,\n unoptimized,\n alt,\n variant = 'borderless',\n shadow,\n loading,\n sliceText = true,\n emojiScaleWithBackground = true,\n ref,\n ...rest\n }) => {\n const isStringAvatar = typeof avatar === 'string';\n\n const isDefaultAntAvatar = useMemo(() => checkIsDefaultAntAvatar(avatar), [avatar]);\n const [isImgError, setIsImgError] = useState(false);\n\n const emoji = useMemo(\n () => avatar && !isDefaultAntAvatar && isStringAvatar && getEmoji(avatar),\n [avatar, isStringAvatar, isDefaultAntAvatar],\n );\n\n const text = String(isDefaultAntAvatar ? title : avatar);\n\n const imgAlt = alt || title || 'avatar';\n\n const defaultAvatar = useMemo(\n () =>\n typeof avatar === 'string' ? (\n <Img\n alt={imgAlt}\n height={size}\n loading={'lazy'}\n onError={() => setIsImgError(true)}\n src={avatar}\n unoptimized={unoptimized}\n width={size}\n />\n ) : (\n avatar\n ),\n [avatar, imgAlt, size, unoptimized],\n );\n\n const hasBackground = hasValidBackground(background);\n\n const customAvatar = useMemo(\n () =>\n emoji ? (\n <FluentEmoji\n emoji={emoji}\n size={calculateEmojiSize(size, hasBackground, emojiScaleWithBackground)}\n type={animation ? 'anim' : '3d'}\n unoptimized={unoptimized}\n />\n ) : (\n formatAvatarText(text || title, sliceText)\n ),\n [\n animation,\n emoji,\n hasBackground,\n size,\n sliceText,\n text,\n title,\n unoptimized,\n emojiScaleWithBackground,\n ],\n );\n\n // Get actual color value for readableColor (CSS variables can't be parsed)\n const actualColorForReadable = useMemo(\n () => getActualColorForReadable(background, cssVar.colorBorder),\n [background],\n );\n\n const avatarStyle = useMemo(\n () => ({\n backgroundColor:\n (isDefaultAntAvatar && !isImgError) || emoji\n ? background\n : background || cssVar.colorBorder,\n borderRadius: shape === 'square' && size && size < 24 ? '33%' : undefined,\n boxShadow: bordered\n ? `${cssVar.colorBgLayout} 0 0 0 2px, ${borderedColor || cssVar.colorTextTertiary} 0 0 0 4px`\n : undefined,\n color: safeReadableColor(actualColorForReadable),\n cursor: rest?.onClick ? 'pointer' : undefined,\n fontSize: size * (emoji ? 0.7 : 0.5),\n ...style,\n }),\n [\n isDefaultAntAvatar,\n isImgError,\n background,\n shape,\n emoji,\n size,\n bordered,\n borderedColor,\n actualColorForReadable,\n rest?.onClick,\n style,\n ],\n );\n\n const showFallback = !isDefaultAntAvatar || isImgError;\n\n return (\n <AntAvatar\n alt={imgAlt}\n className={cx(variants({ shadow, variant }), className)}\n draggable={false}\n ref={ref}\n shape={shape}\n size={size}\n src={isDefaultAntAvatar && !isImgError ? defaultAvatar : undefined}\n style={avatarStyle}\n {...rest}\n >\n {loading && (\n <Center className={styles.loading} height={'100%'} width={'100%'}>\n <Icon icon={Loader2} spin />\n </Center>\n )}\n {showFallback && customAvatar}\n </AntAvatar>\n );\n },\n);\n\nAvatar.displayName = 'Avatar';\n\nexport default Avatar;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo, useState } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport { Center } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles } from './style';\nimport type { FluentEmojiProps } from './type';\nimport { genEmojiUrl } from './utils';\n\nconst FluentEmoji: FC<FluentEmojiProps> = ({\n emoji,\n className,\n style,\n type = '3d',\n size = 40,\n unoptimized,\n ref,\n ...rest\n}) => {\n const [loadingFail, setLoadingFail] = useState(false);\n const genCdnUrl = useCdnFn();\n\n const emojiUrl = useMemo(() => genEmojiUrl(emoji, type), [type, emoji]);\n\n if (type === 'raw' || !emojiUrl || loadingFail)\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n role={'img'}\n style={{ fontSize: size * 0.9, ...style }}\n width={size}\n {...rest}\n >\n {emoji}\n </Center>\n );\n\n return (\n <Img\n alt={emoji}\n className={className}\n height={size}\n loading={'lazy'}\n onError={() => setLoadingFail(true)}\n ref={ref}\n src={genCdnUrl(emojiUrl)}\n style={{ flex: 'none', ...style }}\n unoptimized={unoptimized}\n width={size}\n {...rest}\n />\n );\n};\n\nFluentEmoji.displayName = 'FluentEmoji';\n\nexport default FluentEmoji;\n","'use client';\n\nimport type { ImageProps } from 'antd';\nimport { type ElementType, type FC, type Ref, createElement, memo, use, useMemo } from 'react';\n\nimport { ConfigContext } from '@/ConfigProvider';\nimport type { ImgProps as HtmlImgeProps } from '@/types';\n\nconst createContainer = (as: ElementType) => memo((props: any) => createElement(as, props));\n\ntype ImgProps = HtmlImgeProps & ImageProps & { ref?: Ref<HTMLImageElement>; unoptimized?: boolean };\n\nconst Img: FC<ImgProps> = ({ unoptimized, ...rest }) => {\n const config = use(ConfigContext);\n const render = config?.imgAs || 'img';\n\n const ImgContainer = useMemo(() => createContainer(render), [render]);\n\n return (\n <ImgContainer\n unoptimized={unoptimized === undefined ? config?.imgUnoptimized : unoptimized}\n {...rest}\n />\n );\n};\n\nImg.displayName = 'Img';\n\nexport default Img;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n container: css`\n position: relative;\n line-height: 1;\n text-align: center;\n `,\n };\n});\n","export type EmojiType = 'anim' | 'flat' | 'modern' | 'mono' | 'raw' | '3d';\n\nexport function isFlagEmoji(emoji: string) {\n const flagRegex = /(?:\\uD83C[\\uDDE6-\\uDDFF]){2}/;\n return flagRegex.test(emoji);\n}\n\nexport function emojiToUnicode(emoji: string) {\n return [...emoji].map((char) => char?.codePointAt(0)?.toString(16)).join('-');\n}\n\nexport function emojiAnimPkg(emoji: string) {\n const mainPart = emojiToUnicode(emoji).split('-')[0];\n if (mainPart < '1f469') {\n return '@lobehub/fluent-emoji-anim-1';\n } else if (mainPart >= '1f469' && mainPart < '1f620') {\n return '@lobehub/fluent-emoji-anim-2';\n } else if (mainPart >= '1f620' && mainPart < '1f9a0') {\n return '@lobehub/fluent-emoji-anim-3';\n } else {\n return '@lobehub/fluent-emoji-anim-4';\n }\n}\n\nexport const genEmojiUrl = (emoji: string, type: EmojiType) => {\n const ext = ['anim', '3d'].includes(type) ? 'webp' : 'svg';\n\n switch (type) {\n case 'raw': {\n return null;\n }\n case 'anim': {\n return {\n path: `assets/${emojiToUnicode(emoji)}.${ext}`,\n pkg: emojiAnimPkg(emoji),\n version: 'latest',\n };\n }\n case '3d': {\n return {\n path: `assets/${emojiToUnicode(emoji)}.${ext}`,\n pkg: '@lobehub/fluent-emoji-3d',\n version: 'latest',\n };\n }\n case 'flat': {\n return {\n path: `assets/${emojiToUnicode(emoji)}.${ext}`,\n pkg: '@lobehub/fluent-emoji-flat',\n version: 'latest',\n };\n }\n case 'modern': {\n return {\n path: `assets/${emojiToUnicode(emoji)}.${ext}`,\n pkg: '@lobehub/fluent-emoji-modern',\n version: 'latest',\n };\n }\n case 'mono': {\n return {\n path: `assets/${emojiToUnicode(emoji)}.${ext}`,\n pkg: '@lobehub/fluent-emoji-mono',\n version: 'latest',\n };\n }\n }\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n loading: css`\n position: absolute;\n color: #fff;\n background: ${cssVar.colorBgMask};\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n flex: none;\n background: transparent;\n\n &[class*='ant-avatar'] {\n user-select: none;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: none;\n\n [class*='ant-avatar-string'] {\n transform: none !important;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n height: 100%;\n padding: 0;\n\n font-size: inherit;\n font-weight: bolder;\n line-height: 1;\n color: inherit;\n }\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { type ReactNode, isValidElement } from 'react';\n\n/**\n * 判断 avatar 是否是默认的 Ant Design Avatar 类型\n * (URL 路径或 React 元素)\n */\nexport const isDefaultAntAvatar = (avatar: ReactNode): boolean => {\n if (!avatar) return false;\n\n const isStringAvatar = typeof avatar === 'string';\n const isUrlOrDataUri =\n isStringAvatar && ['/', 'http', 'data:'].some((prefix) => avatar.startsWith(prefix));\n\n return Boolean(isUrlOrDataUri || isValidElement(avatar));\n};\n\n/**\n * 判断是否有有效的背景色\n */\nexport const hasValidBackground = (background?: string | null): boolean => {\n return Boolean(\n background &&\n background !== 'transparent' &&\n background !== 'rgba(0,0,0,0)' &&\n background !== null,\n );\n};\n\n/**\n * 获取用于可读性计算的实际颜色值\n * 如果是 CSS 变量,返回 fallback 值\n */\nexport const getActualColorForReadable = (\n background: string | undefined,\n fallbackColor: string,\n): string => {\n const bgColor = background || fallbackColor;\n\n // 如果背景是 CSS 变量,使用 fallback 颜色\n if (typeof bgColor === 'string' && bgColor.startsWith('var(')) {\n return fallbackColor;\n }\n\n return bgColor;\n};\n\n/**\n * 格式化头像文本(转大写并可选切片)\n */\nexport const formatAvatarText = (text: string | undefined, sliceText: boolean): string => {\n if (!text) return '';\n\n const upperText = text.toUpperCase();\n return sliceText ? upperText.slice(0, 2) : upperText;\n};\n\n/**\n * 计算 emoji 大小\n */\nexport const calculateEmojiSize = (\n size: number,\n hasBackground: boolean,\n emojiScaleWithBackground: boolean,\n): number => {\n if (emojiScaleWithBackground) {\n return hasBackground ? size * 0.85 : size;\n }\n return size * 0.85;\n};\n","'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport Avatar from '../Avatar';\nimport type { AvatarGroupProps } from '../type';\nimport { styles } from './style';\n\nconst AvatarGroup = memo<AvatarGroupProps>(\n ({\n items,\n max,\n gap,\n variant = 'borderless',\n bordered,\n shadow,\n size = 48,\n background,\n animation,\n draggable,\n classNames,\n shape,\n styles: customStyles,\n onClick,\n ref,\n zIndexReverse,\n ...rest\n }) => {\n const avatars = max ? items.slice(0, max) : items;\n const restAvatars = items.slice(max, items.length);\n const gapValue = gap ?? Math.floor(-size / 4);\n\n const avatarProps = {\n animation,\n background,\n bordered,\n draggable,\n shadow,\n shape,\n size,\n variant,\n };\n\n return (\n <Flexbox\n gap={gap}\n horizontal\n ref={ref}\n style={{\n position: 'relative',\n }}\n {...rest}\n >\n {avatars.map((avatar, index) => {\n const {\n key,\n style: avatarStyle,\n className: avatarClassName,\n ...restAvatarProps\n } = avatar;\n return (\n <Avatar\n className={cx(classNames?.avatar, avatarClassName, styles.avatar)}\n key={key}\n onClick={() => onClick?.({ item: avatar, key })}\n style={{\n marginLeft: index === 0 ? 0 : gapValue,\n zIndex: zIndexReverse ? items.length - index : index,\n ...customStyles?.avatar,\n ...avatarStyle,\n }}\n {...avatarProps}\n {...restAvatarProps}\n />\n );\n })}\n {max && restAvatars.length > 0 && (\n <Avatar\n {...avatarProps}\n avatar={`+${restAvatars.length}`}\n background={cssVar.colorText}\n className={cx(styles.avatar, styles.count, classNames?.count)}\n sliceText={false}\n style={{\n marginLeft: gapValue,\n zIndex: zIndexReverse ? 0 : avatars.length,\n ...customStyles?.count,\n }}\n />\n )}\n </Flexbox>\n );\n },\n);\n\nAvatarGroup.displayName = 'AvatarGroup';\n\nexport default AvatarGroup;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n avatar: css`\n border: 2px solid ${cssVar.colorBgContainer} !important;\n `,\n count: css`\n &[class*='ant-avatar'] {\n background: ${cssVar.colorText};\n\n > [class*='ant-avatar-string'] {\n transform: scale(0.8) !important;\n color: ${cssVar.colorBgLayout};\n }\n }\n `,\n };\n});\n","import { type ReactNode, RefAttributes } from 'react';\n\nimport AvatarParent from './Avatar';\nimport AvatarGroup from './AvatarGroup';\nimport { type AvatarProps } from './type';\n\ninterface IAvatar {\n (props: AvatarProps & RefAttributes<HTMLDivElement>): ReactNode;\n Group: typeof AvatarGroup;\n}\n\nconst Avatar = AvatarParent as unknown as IAvatar;\nAvatar.Group = AvatarGroup;\n\nexport default Avatar;\nexport { default as AvatarGroup } from './AvatarGroup';\nexport type * from './type';\n","'use client';\n\nimport { Drawer, Menu } from 'antd';\nimport { cx } from 'antd-style';\nimport { MenuIcon, X } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Center } from '@/Flex';\n\nimport { styles } from './style';\nimport type { BurgerProps } from './type';\n\nconst Burger = memo<BurgerProps>(\n ({\n items,\n openKeys,\n selectedKeys,\n opened,\n setOpened,\n className,\n headerHeight = 64,\n onClick,\n iconProps,\n size,\n variant,\n rootClassName,\n fullscreen,\n drawerProps,\n ...rest\n }) => {\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {\n '--burger-header-height': `${headerHeight}px`,\n };\n if (fullscreen) {\n vars['--burger-drawer-top'] = '0';\n vars['--burger-menu-padding-top'] = '0px';\n } else {\n vars['--burger-drawer-top'] = `calc(var(--burger-header-height, ${headerHeight}px) + 1px)`;\n vars['--burger-menu-padding-top'] = `${headerHeight}px`;\n }\n return vars;\n }, [fullscreen, headerHeight]);\n\n return (\n <Center\n className={cx(styles.container, className)}\n onClick={() => {\n setOpened(!opened);\n }}\n {...rest}\n >\n <ActionIcon icon={opened ? X : MenuIcon} size={size} variant={variant} {...iconProps} />\n <Drawer\n closeIcon={undefined}\n open={opened}\n placement={'left'}\n width={'100vw'}\n {...drawerProps}\n className={styles.drawer}\n rootClassName={cx(\n fullscreen ? styles.drawerRootFullscreen : styles.drawerRoot,\n rootClassName,\n )}\n rootStyle={{\n ...cssVariables,\n ...drawerProps?.rootStyle,\n }}\n styles={{\n body: { padding: 0 },\n header: { display: 'none' },\n }}\n >\n <Menu\n className={styles.menu}\n items={items}\n mode={'inline'}\n onClick={onClick}\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n style={cssVariables}\n />\n <div className={styles.fillRect} />\n </Drawer>\n </Center>\n );\n },\n);\n\nBurger.displayName = 'Burger';\n\nexport default Burger;\n","import { createStaticStyles } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n container: css`\n cursor: pointer;\n width: ${cssVar.controlHeight};\n height: ${cssVar.controlHeight};\n border-radius: ${cssVar.borderRadius};\n `,\n drawer: css`\n &.${prefixCls}-drawer-content {\n background: transparent;\n }\n\n .${prefixCls}-drawer-body {\n display: flex;\n flex-direction: column;\n }\n `,\n drawerRoot: css`\n inset-block-start: var(--burger-drawer-top, calc(var(--burger-header-height, 64px) + 1px));\n\n :focus-visible {\n outline: none;\n }\n\n .${prefixCls}-drawer {\n &-mask {\n ${lobeStaticStylish.blur};\n background-color: color-mix(in srgb, ${cssVar.colorBgLayout} 50%, transparent);\n }\n\n &-content-wrapper {\n box-shadow: none;\n }\n }\n `,\n drawerRootFullscreen: css`\n inset-block-start: 0;\n\n :focus-visible {\n outline: none;\n }\n\n .${prefixCls}-drawer {\n &-mask {\n ${lobeStaticStylish.blur};\n background-color: color-mix(in srgb, ${cssVar.colorBgLayout} 50%, transparent);\n }\n\n &-content-wrapper {\n box-shadow: none;\n }\n }\n `,\n\n fillRect: css`\n flex: 1;\n width: 100%;\n border-block-start: none;\n `,\n\n menu: css`\n padding-block-start: var(--burger-menu-padding-top, 0);\n border-inline-end: transparent !important;\n background: transparent;\n\n > .${prefixCls}-menu-item-only-child, .${prefixCls}-menu-submenu-title {\n width: 100%;\n margin: 0 !important;\n border-block-start: none;\n border-radius: 0;\n\n &:active {\n color: ${cssVar.colorText};\n background-color: ${cssVar.colorFill};\n }\n }\n\n .${prefixCls}-menu-item-only-child:first-child {\n border-block-start: none;\n }\n\n .${prefixCls}-menu-submenu-title[aria-expanded='true'] {\n a {\n font-weight: 600;\n color: ${cssVar.colorText} !important;\n }\n }\n\n .${prefixCls}-menu-item-group-title {\n padding-block: 8px;\n\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n\n background: ${cssVar.colorFillSecondary};\n }\n\n .${prefixCls}-menu-item {\n width: calc(100% - 16px) !important;\n margin: 8px !important;\n border-radius: ${cssVar.borderRadius};\n\n &:hover,\n &:active {\n color: ${cssVar.colorText} !important;\n background: ${cssVar.colorFillSecondary} !important;\n }\n }\n\n .${prefixCls}-menu-item-active {\n width: calc(100% - 16px) !important;\n margin: 8px !important;\n border-radius: ${cssVar.borderRadius};\n background: ${cssVar.colorFillSecondary};\n }\n\n .${prefixCls}-menu-item-selected {\n font-weight: 600;\n color: ${cssVar.colorBgLayout};\n background: ${cssVar.colorText};\n\n &:hover,\n &:active {\n color: ${cssVar.colorBgLayout} !important;\n background: ${cssVar.colorText} !important;\n }\n }\n `,\n };\n});\n","'use client';\n\nimport { Button as AntdButton } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { Loader2Icon } from 'lucide-react';\nimport { type FC, isValidElement } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { variants } from './style';\nimport type { ButtonProps } from './type';\n\nconst Button: FC<ButtonProps> = ({\n icon,\n variant,\n glass,\n shadow,\n loading,\n className,\n type,\n color,\n danger,\n children,\n iconProps,\n ref,\n ...rest\n}) => {\n const { isDarkMode } = useThemeMode();\n\n const defaultVariant = type ? undefined : variant || (isDarkMode ? 'filled' : 'outlined');\n\n return (\n <AntdButton\n className={cx(\n variants({\n glass,\n shadow,\n }),\n className,\n )}\n color={color || (defaultVariant === 'filled' ? 'default' : undefined)}\n danger={danger}\n icon={\n icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <Icon icon={icon} {...iconProps} size={iconProps?.size || { size: '1.2em' }} />\n ))\n }\n loading={\n loading\n ? {\n icon: (\n <Icon\n icon={Loader2Icon}\n {...iconProps}\n size={iconProps?.size || { size: '1.2em' }}\n spin\n />\n ),\n }\n : false\n }\n ref={ref}\n type={type}\n variant={defaultVariant}\n {...rest}\n >\n {children}\n </AntdButton>\n );\n};\n\nexport default Button;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n glass: lobeStaticStylish.blur,\n root: css`\n &[class*='ant-btn'] {\n > [class*='ant-btn-icon'] {\n display: flex;\n }\n }\n `,\n shadow: css`\n box-shadow: ${cssVar.boxShadowTertiary} !important;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n glass: false,\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { cx } from 'antd-style';\nimport { CheckIcon, Minus } from 'lucide-react';\nimport type { CSSProperties, FC, MouseEvent } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Text from '@/Text';\n\nimport { styles } from './style';\nimport type { CheckboxProps } from './type';\n\nconst Checkbox: FC<CheckboxProps> = ({\n checked,\n defaultChecked,\n onChange,\n size = 16,\n className,\n style,\n children,\n textProps,\n backgroundColor,\n classNames,\n styles: customStyles,\n shape = 'square',\n disabled,\n indeterminate,\n ...rest\n}) => {\n const [value, setValue] = useMergeState(defaultChecked || false, {\n defaultValue: defaultChecked,\n onChange,\n value: checked,\n });\n\n const checkboxStyles: CSSProperties = {\n borderRadius: shape === 'square' ? `max(4px, ${Math.round(size / 4)}px)` : '50%',\n ...style,\n ...customStyles?.checkbox,\n };\n\n const handleClick = (e?: MouseEvent) => {\n if (!disabled) {\n e?.preventDefault();\n setValue(!value);\n }\n };\n\n const isIndeterminate = indeterminate;\n const isChecked = !isIndeterminate && value;\n\n const checkIcon = (\n <Block\n align={'center'}\n className={cx(\n styles.root,\n isChecked && styles.checked,\n isIndeterminate && styles.indeterminate,\n disabled && styles.disabled,\n className,\n classNames?.checkbox,\n )}\n flex={'none'}\n height={size}\n justify={'center'}\n onClick={handleClick}\n style={\n backgroundColor && (isChecked || isIndeterminate)\n ? { backgroundColor, borderColor: backgroundColor, ...checkboxStyles }\n : { ...checkboxStyles }\n }\n variant={'outlined'}\n width={size}\n {...rest}\n >\n {isIndeterminate ? (\n <Minus\n size={size}\n strokeWidth={3}\n style={{\n transform: `scale(${shape === 'square' ? 0.75 : 0.66})`,\n }}\n />\n ) : isChecked ? (\n <CheckIcon\n size={size}\n strokeWidth={3}\n style={{\n transform: `scale(${shape === 'square' ? 0.75 : 0.66})`,\n }}\n />\n ) : null}\n </Block>\n );\n\n if (!children) return checkIcon;\n\n return (\n <Flexbox\n align={'center'}\n className={classNames?.wrapper}\n gap={Math.floor(size / 2)}\n horizontal\n onClick={handleClick}\n style={{\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n ...customStyles?.wrapper,\n }}\n >\n {checkIcon}\n <Text\n as={'span'}\n className={cx(classNames?.text)}\n style={customStyles?.text}\n {...textProps}\n type={disabled ? 'secondary' : textProps?.type}\n >\n {children}\n </Text>\n </Flexbox>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n checked: css`\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorBgLayout};\n background-color: ${cssVar.colorPrimary};\n `,\n disabled: css`\n cursor: not-allowed;\n\n border-color: ${cssVar.colorFill};\n\n color: ${cssVar.colorText};\n\n opacity: 0.25;\n background-color: ${cssVar.colorFill};\n `,\n indeterminate: css`\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorBgLayout};\n background-color: ${cssVar.colorPrimary};\n `,\n root: css`\n cursor: pointer;\n display: inline-flex;\n `,\n };\n});\n","import type { FC } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport { Flexbox } from '@/Flex';\n\nimport Checkbox from './Checkbox';\nimport type { CheckboxGroupProps } from './type';\n\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\n defaultValue,\n disabled,\n onChange,\n options,\n textProps,\n value,\n shape,\n size,\n ...rest\n}) => {\n const [selectedValues, setSelectedValues] = useMergeState<string[]>(defaultValue || [], {\n defaultValue,\n onChange,\n value,\n });\n\n const handleChange = (optionValue: string, checked: boolean) => {\n const newValues = checked\n ? [...selectedValues, optionValue]\n : selectedValues.filter((v) => v !== optionValue);\n\n setSelectedValues(newValues);\n };\n\n const normalizedOptions = options.map((option) => {\n if (typeof option === 'string') {\n return {\n disabled: false,\n label: option,\n value: option,\n };\n }\n return option;\n });\n\n return (\n <Flexbox align={'center'} gap={16} horizontal wrap={'wrap'} {...rest}>\n {normalizedOptions.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n const isDisabled = disabled || option.disabled;\n\n return (\n <Checkbox\n checked={isChecked}\n disabled={isDisabled}\n key={String(option.value)}\n onChange={(checked) => handleChange(option.value, checked)}\n shape={shape}\n size={size}\n textProps={textProps}\n >\n {option.label}\n </Checkbox>\n );\n })}\n </Flexbox>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n\nexport default CheckboxGroup;\n","import { type ReactNode, RefAttributes } from 'react';\n\nimport CheckboxParent from './Checkbox';\nimport CheckboxGroup from './CheckboxGroup';\nimport { type CheckboxProps } from './type';\n\ninterface ICheckbox {\n (props: CheckboxProps & RefAttributes<HTMLDivElement>): ReactNode;\n Group: typeof CheckboxGroup;\n}\n\nconst Checkbox = CheckboxParent as unknown as ICheckbox;\nCheckbox.Group = CheckboxGroup;\n\nexport default Checkbox;\nexport { default as CheckboxGroup } from './CheckboxGroup';\nexport type * from './type';\n","'use client';\n\nimport type { FileDiffOptions } from '@pierre/diffs';\nimport { MultiFileDiff } from '@pierre/diffs/react';\nimport { cx } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\n\nimport { headerVariants, prefix, styles, variants } from './style';\nimport type { CodeDiffProps } from './type';\n\nconst countContentChanges = (\n oldContent: string,\n newContent: string,\n): { additions: number; deletions: number } => {\n const oldLines = oldContent.split('\\n');\n const newLines = newContent.split('\\n');\n\n const oldSet = new Set(oldLines);\n const newSet = new Set(newLines);\n\n let deletions = 0;\n let additions = 0;\n\n for (const line of oldLines) {\n if (!newSet.has(line)) {\n deletions++;\n }\n }\n\n for (const line of newLines) {\n if (!oldSet.has(line)) {\n additions++;\n }\n }\n\n return { additions, deletions };\n};\n\nexport const CodeDiff = memo<CodeDiffProps>(\n ({\n oldContent,\n newContent,\n language,\n fileName,\n viewMode = 'split',\n showHeader = true,\n variant = 'filled',\n className,\n classNames,\n styles: customStyles,\n actionsRender,\n diffOptions,\n ...rest\n }) => {\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n if (language) return language;\n return 'diff';\n }, [fileName, language]);\n\n const { additions, deletions } = useMemo(\n () => countContentChanges(oldContent, newContent),\n [oldContent, newContent],\n );\n\n const actions = useMemo(() => {\n if (!actionsRender) return null;\n return actionsRender({\n newContent,\n oldContent,\n originalNode: null,\n });\n }, [actionsRender, oldContent, newContent]);\n\n const oldFile = useMemo(\n () => ({\n contents: oldContent,\n lang: language as any,\n name: fileName || 'file',\n }),\n [oldContent, language, fileName],\n );\n\n const newFile = useMemo(\n () => ({\n contents: newContent,\n lang: language as any,\n name: fileName || 'file',\n }),\n [newContent, language, fileName],\n );\n\n const options = useMemo<FileDiffOptions<string>>(\n () => ({\n diffStyle: viewMode,\n disableFileHeader: true,\n ...diffOptions,\n }),\n [viewMode, diffOptions],\n );\n\n return (\n <Flexbox\n className={cx(variants({ variant }), className)}\n data-code-type=\"code-diff\"\n {...rest}\n >\n {showHeader && (\n <div\n className={cx(headerVariants({ variant }), classNames?.header)}\n style={customStyles?.header}\n >\n <Flexbox align=\"center\" gap={8} horizontal>\n <MaterialFileTypeIcon filename={fileName || displayName} size={18} type=\"file\" />\n <span>{displayName}</span>\n </Flexbox>\n <Flexbox align=\"center\" gap={8} horizontal>\n {(deletions > 0 || additions > 0) && (\n <Flexbox className={styles.stats} gap={8} horizontal>\n {deletions > 0 && <span className={styles.deletions}>-{deletions}</span>}\n {additions > 0 && <span className={styles.additions}>+{additions}</span>}\n </Flexbox>\n )}\n {actions && (\n <Flexbox align=\"center\" className={cx(`${prefix}-actions`, styles.actions)} gap={4}>\n {actions}\n </Flexbox>\n )}\n </Flexbox>\n </div>\n )}\n <div className={cx(styles.body, classNames?.body)} style={customStyles?.body}>\n <MultiFileDiff newFile={newFile} oldFile={oldFile} options={options} />\n </div>\n </Flexbox>\n );\n },\n);\n\nCodeDiff.displayName = 'CodeDiff';\n\nexport default CodeDiff;\n","'use client';\n\nimport { type FC, useMemo } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport FileTypeIcon from '@/FileTypeIcon';\nimport { Center } from '@/Flex';\nimport Img from '@/Img';\n\nimport type { MaterialFileTypeIconProps } from './type';\nimport { getIconUrlForDirectoryPath, getIconUrlForFilePath } from './utils';\n\nconst MaterialFileTypeIcon: FC<MaterialFileTypeIconProps> = ({\n fallbackUnknownType = true,\n filename,\n size = 48,\n variant = 'raw',\n type,\n style,\n open,\n ...rest\n}) => {\n const genCdnUrl = useCdnFn();\n const ICONS_URL = genCdnUrl({\n path: 'assets',\n pkg: '@lobehub/assets-fileicon',\n version: '1.0.0',\n });\n\n const iconUrl: string = useMemo(() => {\n return type === 'file'\n ? getIconUrlForFilePath({ fallbackUnknownType, iconsUrl: ICONS_URL, path: filename })\n : getIconUrlForDirectoryPath({\n fallbackUnknownType,\n iconsUrl: ICONS_URL,\n open,\n path: filename,\n });\n }, [ICONS_URL, type, filename, open]);\n\n if (!iconUrl)\n return (\n <FileTypeIcon filetype={filename.split('.')[1]} size={size} type={type} variant={'mono'} />\n );\n\n if (variant === 'raw')\n return <Img alt={filename} height={size} src={iconUrl} style={style} width={size} {...rest} />;\n\n return (\n <Center\n flex={'none'}\n height={size}\n style={{ position: 'relative', ...style }}\n width={size}\n {...rest}\n >\n <FileTypeIcon size={size} type={variant} variant={'mono'} />\n <Img\n alt={filename}\n height={size / 2}\n src={iconUrl}\n style={{ position: 'absolute', top: size / 3 }}\n width={size / 2}\n {...rest}\n />\n </Center>\n );\n};\n\nMaterialFileTypeIcon.displayName = 'MaterialFileTypeIcon';\n\nexport default MaterialFileTypeIcon;\n","'use client';\n\nimport { cssVar, cx, useThemeMode } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { Center } from '@/Flex';\n\nimport FileIcon from './components/FileIcon';\nimport FolderIcon from './components/FolderIcon';\nimport { styles } from './style';\nimport type { FileTypeIconProps } from './type';\n\nconst FileTypeIcon: FC<FileTypeIconProps> = ({\n icon,\n color,\n filetype,\n type = 'file',\n size = 48,\n style,\n variant,\n className,\n ref,\n ...rest\n}) => {\n const { isDarkMode } = useThemeMode();\n const isMono = variant === 'mono';\n\n const filetypeShort = useMemo(\n () => (filetype && filetype.length > 4 ? filetype.slice(0, 4) : filetype),\n [filetype],\n );\n\n const fontSize = useMemo(() => {\n if (filetypeShort && filetypeShort.length > 3) {\n return 24 / (4 + (filetypeShort.length - 3));\n }\n return 6;\n }, [filetypeShort]);\n\n const iconColor = useMemo(\n () =>\n isMono ? (isDarkMode ? cssVar.colorFill : cssVar.colorBgContainer) : color || cssVar.geekblue,\n [isMono, isDarkMode, color],\n );\n\n const content =\n type === 'file' ? (\n <FileIcon\n filetypeShort={filetypeShort}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n ) : (\n <FolderIcon\n filetype={filetype}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n );\n\n if (!icon) return content;\n\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n style={style}\n width={size}\n {...rest}\n >\n <div\n className={styles.inner}\n style={{\n fontSize: size / 2.4,\n top: type === 'file' ? '20%' : '16%',\n }}\n >\n {icon}\n </div>\n {content}\n </Center>\n );\n};\n\nFileTypeIcon.displayName = 'FileTypeIcon';\n\nexport default FileTypeIcon;\n","import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FileIconProps extends SvgProps {\n filetypeShort?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FileIcon: FC<FileIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetypeShort,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\" fill={iconColor} />\n <path\n d=\"M14 2l6 6h-4a2 2 0 01-2-2V2z\"\n fill={isMono ? cssVar.colorFill : '#fff'}\n fillOpacity=\".5\"\n />\n {filetypeShort && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetypeShort.toUpperCase()}\n </text>\n )}\n <path\n d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\"\n fill={'transparent'}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n </svg>\n );\n};\n\nexport default FileIcon;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n container: css`\n position: relative;\n `,\n icon: css`\n position: relative;\n flex: none;\n line-height: 1;\n `,\n inner: css`\n position: absolute;\n z-index: 1;\n `,\n };\n});\n","import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FolderIconProps extends SvgProps {\n filetype?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FolderIcon: FC<FolderIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetype,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.46 5.076l-.92-.752A1.446 1.446 0 008.626 4H3.429c-.38 0-.743.147-1.01.41A1.386 1.386 0 002 5.4v13.2c0 .371.15.727.418.99.268.262.632.41 1.01.41h17.143c.38 0 .743-.148 1.01-.41.268-.263.419-.619.419-.99V6.8c0-.371-.15-.727-.418-.99a1.444 1.444 0 00-1.01-.41h-9.198c-.334 0-.657-.115-.914-.324z\"\n fill={iconColor}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n {!hasIcon && filetype && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetype.toUpperCase()}\n </text>\n )}\n </svg>\n );\n};\n\nexport default FolderIcon;\n","{\n \"fileExtensions\": {\n \"htm\": \"html\",\n \"xhtml\": \"html\",\n \"html_vm\": \"html\",\n \"asp\": \"html\",\n \"jade\": \"pug\",\n \"pug\": \"pug\",\n \"md\": \"markdown\",\n \"markdown\": \"markdown\",\n \"rst\": \"markdown\",\n \"blink\": \"blink\",\n \"css\": \"css\",\n \"scss\": \"sass\",\n \"sass\": \"sass\",\n \"less\": \"less\",\n \"json\": \"json\",\n \"jsonc\": \"json\",\n \"tsbuildinfo\": \"json\",\n \"json5\": \"json\",\n \"jsonl\": \"json\",\n \"ndjson\": \"json\",\n \"hjson\": \"hjson\",\n \"jinja\": \"jinja\",\n \"jinja2\": \"jinja\",\n \"j2\": \"jinja\",\n \"jinja-html\": \"jinja\",\n \"proto\": \"proto\",\n \"sublime-project\": \"sublime\",\n \"sublime-workspace\": \"sublime\",\n \"tw\": \"twine\",\n \"twee\": \"twine\",\n \"yml.dist\": \"yaml\",\n \"yaml.dist\": \"yaml\",\n \"YAML-tmLanguage\": \"yaml\",\n \"xml\": \"xml\",\n \"plist\": \"xml\",\n \"xsd\": \"xml\",\n \"dtd\": \"xml\",\n \"xsl\": \"xml\",\n \"xslt\": \"xml\",\n \"resx\": \"xml\",\n \"iml\": \"xml\",\n \"xquery\": \"xml\",\n \"tmLanguage\": \"xml\",\n \"manifest\": \"xml\",\n \"project\": \"xml\",\n \"xml.dist\": \"xml\",\n \"xml.dist.sample\": \"xml\",\n \"dmn\": \"xml\",\n \"jrxml\": \"xml\",\n \"png\": \"image\",\n \"jpeg\": \"image\",\n \"jpg\": \"image\",\n \"gif\": \"image\",\n \"ico\": \"image\",\n \"tif\": \"image\",\n \"tiff\": \"image\",\n \"psd\": \"image\",\n \"psb\": \"image\",\n \"ami\": \"image\",\n \"apx\": \"image\",\n \"avif\": \"image\",\n \"bmp\": \"image\",\n \"bpg\": \"image\",\n \"brk\": \"image\",\n \"cur\": \"image\",\n \"dds\": \"image\",\n \"dng\": \"image\",\n \"exr\": \"image\",\n \"fpx\": \"image\",\n \"gbr\": \"image\",\n \"img\": \"image\",\n \"jbig2\": \"image\",\n \"jb2\": \"image\",\n \"jng\": \"image\",\n \"jxr\": \"image\",\n \"pgf\": \"image\",\n \"pic\": \"image\",\n \"raw\": \"image\",\n \"webp\": \"image\",\n \"eps\": \"image\",\n \"afphoto\": \"image\",\n \"ase\": \"image\",\n \"aseprite\": \"image\",\n \"clip\": \"image\",\n \"cpt\": \"image\",\n \"heif\": \"image\",\n \"heic\": \"image\",\n \"kra\": \"image\",\n \"mdp\": \"image\",\n \"ora\": \"image\",\n \"pdn\": \"image\",\n \"reb\": \"image\",\n \"sai\": \"image\",\n \"tga\": \"image\",\n \"xcf\": \"image\",\n \"jfif\": \"image\",\n \"ppm\": \"image\",\n \"pbm\": \"image\",\n \"pgm\": \"image\",\n \"pnm\": \"image\",\n \"icns\": \"image\",\n \"esx\": \"javascript\",\n \"mjs\": \"javascript\",\n \"jsx\": \"react\",\n \"tsx\": \"react_ts\",\n \"routing.ts\": \"routing\",\n \"routing.tsx\": \"routing\",\n \"routing.js\": \"routing\",\n \"routing.jsx\": \"routing\",\n \"routes.ts\": \"routing\",\n \"routes.tsx\": \"routing\",\n \"routes.js\": \"routing\",\n \"routes.jsx\": \"routing\",\n \"ini\": \"settings\",\n \"dlc\": \"settings\",\n \"config\": \"settings\",\n \"conf\": \"settings\",\n \"properties\": \"settings\",\n \"prop\": \"settings\",\n \"settings\": \"settings\",\n \"option\": \"settings\",\n \"props\": \"settings\",\n \"toml\": \"settings\",\n \"prefs\": \"settings\",\n \"sln.dotsettings\": \"settings\",\n \"sln.dotsettings.user\": \"settings\",\n \"cfg\": \"settings\",\n \"d.ts\": \"typescript-def\",\n \"d.cts\": \"typescript-def\",\n \"d.mts\": \"typescript-def\",\n \"marko\": \"markojs\",\n \"astro\": \"astro\",\n \"pdf\": \"pdf\",\n \"xlsx\": \"table\",\n \"xlsm\": \"table\",\n \"xls\": \"table\",\n \"csv\": \"table\",\n \"tsv\": \"table\",\n \"psv\": \"table\",\n \"ods\": \"table\",\n \"vscodeignore\": \"vscode\",\n \"vsixmanifest\": \"vscode\",\n \"vsix\": \"vscode\",\n \"code-workplace\": \"vscode\",\n \"code-workspace\": \"vscode\",\n \"code-profile\": \"vscode\",\n \"code-snippets\": \"vscode\",\n \"csproj\": \"visualstudio\",\n \"ruleset\": \"visualstudio\",\n \"sln\": \"visualstudio\",\n \"slnx\": \"visualstudio\",\n \"suo\": \"visualstudio\",\n \"vb\": \"visualstudio\",\n \"vbs\": \"visualstudio\",\n \"vcxitems\": \"visualstudio\",\n \"vcxitems.filters\": \"visualstudio\",\n \"vcxproj\": \"visualstudio\",\n \"vcxproj.filters\": \"visualstudio\",\n \"pdb\": \"database\",\n \"sql\": \"database\",\n \"pks\": \"database\",\n \"pkb\": \"database\",\n \"accdb\": \"database\",\n \"mdb\": \"database\",\n \"sqlite\": \"database\",\n \"sqlite3\": \"database\",\n \"pgsql\": \"database\",\n \"postgres\": \"database\",\n \"plpgsql\": \"database\",\n \"psql\": \"database\",\n \"db\": \"database\",\n \"db3\": \"database\",\n \"dblite\": \"database\",\n \"dblite3\": \"database\",\n \"debugsymbols\": \"database\",\n \"kql\": \"kusto\",\n \"cs\": \"csharp\",\n \"csx\": \"csharp\",\n \"csharp\": \"csharp\",\n \"qs\": \"qsharp\",\n \"zip\": \"zip\",\n \"tar\": \"zip\",\n \"gz\": \"zip\",\n \"xz\": \"zip\",\n \"lzma\": \"zip\",\n \"lz4\": \"zip\",\n \"br\": \"zip\",\n \"bz2\": \"zip\",\n \"bzip2\": \"zip\",\n \"gzip\": \"zip\",\n \"brotli\": \"zip\",\n \"7z\": \"zip\",\n \"rar\": \"zip\",\n \"tz\": \"zip\",\n \"txz\": \"zip\",\n \"tgz\": \"zip\",\n \"zst\": \"zip\",\n \"vala\": \"vala\",\n \"zig\": \"zig\",\n \"zon\": \"zig\",\n \"exe\": \"exe\",\n \"msi\": \"exe\",\n \"dat\": \"hex\",\n \"bin\": \"hex\",\n \"hex\": \"hex\",\n \"java\": \"java\",\n \"jsp\": \"java\",\n \"jar\": \"jar\",\n \"class\": \"javaclass\",\n \"c\": \"c\",\n \"i\": \"c\",\n \"mi\": \"c\",\n \"h\": \"h\",\n \"cc\": \"cpp\",\n \"cpp\": \"cpp\",\n \"cxx\": \"cpp\",\n \"c++\": \"cpp\",\n \"cp\": \"cpp\",\n \"mii\": \"cpp\",\n \"ii\": \"cpp\",\n \"hh\": \"hpp\",\n \"hpp\": \"hpp\",\n \"hxx\": \"hpp\",\n \"h++\": \"hpp\",\n \"hp\": \"hpp\",\n \"tcc\": \"hpp\",\n \"inl\": \"hpp\",\n \"rc\": \"rc\",\n \"go\": \"go\",\n \"py\": \"python\",\n \"pyc\": \"python-misc\",\n \"whl\": \"python-misc\",\n \"url\": \"url\",\n \"sh\": \"console\",\n \"ksh\": \"console\",\n \"csh\": \"console\",\n \"tcsh\": \"console\",\n \"zsh\": \"console\",\n \"bash\": \"console\",\n \"bat\": \"console\",\n \"cmd\": \"console\",\n \"awk\": \"console\",\n \"fish\": \"console\",\n \"exp\": \"console\",\n \"nu\": \"console\",\n \"ps1\": \"powershell\",\n \"psm1\": \"powershell\",\n \"psd1\": \"powershell\",\n \"ps1xml\": \"powershell\",\n \"psc1\": \"powershell\",\n \"pssc\": \"powershell\",\n \"gradle\": \"gradle\",\n \"doc\": \"word\",\n \"docx\": \"word\",\n \"rtf\": \"word\",\n \"odt\": \"word\",\n \"cer\": \"certificate\",\n \"cert\": \"certificate\",\n \"crt\": \"certificate\",\n \"pub\": \"key\",\n \"key\": \"key\",\n \"pem\": \"key\",\n \"asc\": \"key\",\n \"gpg\": \"key\",\n \"passwd\": \"key\",\n \"woff\": \"font\",\n \"woff2\": \"font\",\n \"ttf\": \"font\",\n \"eot\": \"font\",\n \"suit\": \"font\",\n \"otf\": \"font\",\n \"bmap\": \"font\",\n \"fnt\": \"font\",\n \"odttf\": \"font\",\n \"ttc\": \"font\",\n \"font\": \"font\",\n \"fonts\": \"font\",\n \"sui\": \"font\",\n \"ntf\": \"font\",\n \"mrf\": \"font\",\n \"lib\": \"lib\",\n \"bib\": \"lib\",\n \"a\": \"lib\",\n \"dll\": \"dll\",\n \"ilk\": \"dll\",\n \"so\": \"dll\",\n \"rb\": \"ruby\",\n \"erb\": \"ruby\",\n \"rbs\": \"ruby\",\n \"fs\": \"fsharp\",\n \"fsx\": \"fsharp\",\n \"fsi\": \"fsharp\",\n \"fsproj\": \"fsharp\",\n \"swift\": \"swift\",\n \"ino\": \"arduino\",\n \"dockerignore\": \"docker\",\n \"dockerfile\": \"docker\",\n \"docker-compose.yml\": \"docker\",\n \"docker-compose.yaml\": \"docker\",\n \"containerignore\": \"docker\",\n \"containerfile\": \"docker\",\n \"compose.yaml\": \"docker\",\n \"compose.yml\": \"docker\",\n \"tex\": \"tex\",\n \"sty\": \"tex\",\n \"dtx\": \"tex\",\n \"ltx\": \"tex\",\n \"pptx\": \"powerpoint\",\n \"ppt\": \"powerpoint\",\n \"pptm\": \"powerpoint\",\n \"potx\": \"powerpoint\",\n \"potm\": \"powerpoint\",\n \"ppsx\": \"powerpoint\",\n \"ppsm\": \"powerpoint\",\n \"pps\": \"powerpoint\",\n \"ppam\": \"powerpoint\",\n \"ppa\": \"powerpoint\",\n \"odp\": \"powerpoint\",\n \"webm\": \"video\",\n \"mkv\": \"video\",\n \"flv\": \"video\",\n \"vob\": \"video\",\n \"ogv\": \"video\",\n \"ogg\": \"video\",\n \"gifv\": \"video\",\n \"avi\": \"video\",\n \"mov\": \"video\",\n \"qt\": \"video\",\n \"wmv\": \"video\",\n \"yuv\": \"video\",\n \"rm\": \"video\",\n \"rmvb\": \"video\",\n \"mp4\": \"video\",\n \"m4v\": \"video\",\n \"mpg\": \"video\",\n \"mp2\": \"video\",\n \"mpeg\": \"video\",\n \"mpe\": \"video\",\n \"mpv\": \"video\",\n \"m2v\": \"video\",\n \"vdi\": \"virtual\",\n \"vbox\": \"virtual\",\n \"vbox-prev\": \"virtual\",\n \"ved\": \"vedic\",\n \"veda\": \"vedic\",\n \"vedic\": \"vedic\",\n \"ics\": \"email\",\n \"mp3\": \"audio\",\n \"flac\": \"audio\",\n \"m4a\": \"audio\",\n \"wma\": \"audio\",\n \"aiff\": \"audio\",\n \"wav\": \"audio\",\n \"coffee\": \"coffee\",\n \"cson\": \"coffee\",\n \"iced\": \"coffee\",\n \"txt\": \"document\",\n \"graphql\": \"graphql\",\n \"gql\": \"graphql\",\n \"rs\": \"rust\",\n \"ron\": \"rust\",\n \"raml\": \"raml\",\n \"xaml\": \"xaml\",\n \"hs\": \"haskell\",\n \"kt\": \"kotlin\",\n \"kts\": \"kotlin\",\n \"otne\": \"otne\",\n \"patch\": \"git\",\n \"lua\": \"lua\",\n \"clj\": \"clojure\",\n \"cljs\": \"clojure\",\n \"cljc\": \"clojure\",\n \"groovy\": \"groovy\",\n \"r\": \"r\",\n \"rmd\": \"r\",\n \"dart\": \"dart\",\n \"freezed.dart\": \"dart_generated\",\n \"g.dart\": \"dart_generated\",\n \"as\": \"actionscript\",\n \"mxml\": \"mxml\",\n \"ahk\": \"autohotkey\",\n \"swf\": \"flash\",\n \"swc\": \"swc\",\n \"cmake\": \"cmake\",\n \"asm\": \"assembly\",\n \"a51\": \"assembly\",\n \"inc\": \"assembly\",\n \"nasm\": \"assembly\",\n \"s\": \"assembly\",\n \"ms\": \"assembly\",\n \"agc\": \"assembly\",\n \"ags\": \"assembly\",\n \"aea\": \"assembly\",\n \"argus\": \"assembly\",\n \"mitigus\": \"assembly\",\n \"binsource\": \"assembly\",\n \"vue\": \"vue\",\n \"ml\": \"ocaml\",\n \"mli\": \"ocaml\",\n \"cmx\": \"ocaml\",\n \"odin\": \"odin\",\n \"js.map\": \"javascript-map\",\n \"mjs.map\": \"javascript-map\",\n \"cjs.map\": \"javascript-map\",\n \"css.map\": \"css-map\",\n \"lock\": \"lock\",\n \"hbs\": \"handlebars\",\n \"mustache\": \"handlebars\",\n \"pm\": \"perl\",\n \"raku\": \"perl\",\n \"hx\": \"haxe\",\n \"spec.ts\": \"test-ts\",\n \"spec.cts\": \"test-ts\",\n \"spec.mts\": \"test-ts\",\n \"cy.ts\": \"test-ts\",\n \"e2e-spec.ts\": \"test-ts\",\n \"e2e-spec.cts\": \"test-ts\",\n \"e2e-spec.mts\": \"test-ts\",\n \"test.ts\": \"test-ts\",\n \"test.cts\": \"test-ts\",\n \"test.mts\": \"test-ts\",\n \"ts.snap\": \"test-ts\",\n \"spec-d.ts\": \"test-ts\",\n \"test-d.ts\": \"test-ts\",\n \"spec.tsx\": \"test-jsx\",\n \"test.tsx\": \"test-jsx\",\n \"tsx.snap\": \"test-jsx\",\n \"spec.jsx\": \"test-jsx\",\n \"test.jsx\": \"test-jsx\",\n \"jsx.snap\": \"test-jsx\",\n \"cy.jsx\": \"test-jsx\",\n \"cy.tsx\": \"test-jsx\",\n \"spec-d.tsx\": \"test-jsx\",\n \"test-d.tsx\": \"test-jsx\",\n \"spec.js\": \"test-js\",\n \"spec.cjs\": \"test-js\",\n \"spec.mjs\": \"test-js\",\n \"e2e-spec.js\": \"test-js\",\n \"e2e-spec.cjs\": \"test-js\",\n \"e2e-spec.mjs\": \"test-js\",\n \"test.js\": \"test-js\",\n \"test.cjs\": \"test-js\",\n \"test.mjs\": \"test-js\",\n \"js.snap\": \"test-js\",\n \"cy.js\": \"test-js\",\n \"module.ts\": \"angular\",\n \"module.js\": \"angular\",\n \"ng-template\": \"angular\",\n \"component.ts\": \"angular-component\",\n \"component.js\": \"angular-component\",\n \"guard.ts\": \"angular-guard\",\n \"guard.js\": \"angular-guard\",\n \"service.ts\": \"angular-service\",\n \"service.js\": \"angular-service\",\n \"pipe.ts\": \"angular-pipe\",\n \"pipe.js\": \"angular-pipe\",\n \"filter.js\": \"angular-pipe\",\n \"directive.ts\": \"angular-directive\",\n \"directive.js\": \"angular-directive\",\n \"resolver.ts\": \"angular-resolver\",\n \"resolver.js\": \"angular-resolver\",\n \"pp\": \"puppet\",\n \"ex\": \"elixir\",\n \"exs\": \"elixir\",\n \"eex\": \"elixir\",\n \"leex\": \"elixir\",\n \"heex\": \"elixir\",\n \"ls\": \"livescript\",\n \"erl\": \"erlang\",\n \"twig\": \"twig\",\n \"jl\": \"julia\",\n \"elm\": \"elm\",\n \"pure\": \"purescript\",\n \"purs\": \"purescript\",\n \"tpl\": \"smarty\",\n \"styl\": \"stylus\",\n \"re\": \"reason\",\n \"rei\": \"reason\",\n \"cmj\": \"bucklescript\",\n \"merlin\": \"merlin\",\n \"vhd\": \"verilog\",\n \"sv\": \"verilog\",\n \"svh\": \"verilog\",\n \"nb\": \"mathematica\",\n \"wl\": \"wolframlanguage\",\n \"wls\": \"wolframlanguage\",\n \"njk\": \"nunjucks\",\n \"nunjucks\": \"nunjucks\",\n \"robot\": \"robot\",\n \"sol\": \"solidity\",\n \"au3\": \"autoit\",\n \"haml\": \"haml\",\n \"yang\": \"yang\",\n \"mjml\": \"mjml\",\n \"tf\": \"terraform\",\n \"tf.json\": \"terraform\",\n \"tfvars\": \"terraform\",\n \"tfstate\": \"terraform\",\n \"tfbackend\": \"terraform\",\n \"blade.php\": \"laravel\",\n \"inky.php\": \"laravel\",\n \"applescript\": \"applescript\",\n \"ipa\": \"applescript\",\n \"cake\": \"cake\",\n \"feature\": \"cucumber\",\n \"features\": \"cucumber\",\n \"nim\": \"nim\",\n \"nimble\": \"nim\",\n \"apib\": \"apiblueprint\",\n \"apiblueprint\": \"apiblueprint\",\n \"riot\": \"riot\",\n \"tag\": \"riot\",\n \"vfl\": \"vfl\",\n \"kl\": \"kl\",\n \"pcss\": \"postcss\",\n \"sss\": \"postcss\",\n \"todo\": \"todo\",\n \"cfml\": \"coldfusion\",\n \"cfc\": \"coldfusion\",\n \"lucee\": \"coldfusion\",\n \"cfm\": \"coldfusion\",\n \"cabal\": \"cabal\",\n \"nix\": \"nix\",\n \"slim\": \"slim\",\n \"http\": \"http\",\n \"rest\": \"http\",\n \"rql\": \"restql\",\n \"restql\": \"restql\",\n \"kv\": \"kivy\",\n \"graphcool\": \"graphcool\",\n \"sbt\": \"sbt\",\n \"apk\": \"android\",\n \"smali\": \"android\",\n \"dex\": \"android\",\n \"env\": \"tune\",\n \"gitlab-ci.yml\": \"gitlab\",\n \"jenkinsfile\": \"jenkins\",\n \"jenkins\": \"jenkins\",\n \"fig\": \"figma\",\n \"huff\": \"huff\",\n \"cr\": \"crystal\",\n \"ecr\": \"crystal\",\n \"drone.yml\": \"drone\",\n \"cu\": \"cuda\",\n \"cuh\": \"cuda\",\n \"log\": \"log\",\n \"def\": \"dotjs\",\n \"dot\": \"dotjs\",\n \"jst\": \"dotjs\",\n \"ejs\": \"ejs\",\n \".wakatime-project\": \"wakatime\",\n \"pde\": \"processing\",\n \"stories.js\": \"storybook\",\n \"stories.jsx\": \"storybook\",\n \"stories.mdx\": \"storybook\",\n \"story.js\": \"storybook\",\n \"story.jsx\": \"storybook\",\n \"stories.ts\": \"storybook\",\n \"stories.tsx\": \"storybook\",\n \"story.ts\": \"storybook\",\n \"story.tsx\": \"storybook\",\n \"stories.svelte\": \"storybook\",\n \"story.mdx\": \"storybook\",\n \"wpy\": \"wepy\",\n \"hcl\": \"hcl\",\n \"san\": \"san\",\n \"quokka.js\": \"quokka\",\n \"quokka.ts\": \"quokka\",\n \"quokka.jsx\": \"quokka\",\n \"quokka.tsx\": \"quokka\",\n \"djt\": \"django\",\n \"red\": \"red\",\n \"mk\": \"makefile\",\n \"fxp\": \"foxpro\",\n \"prg\": \"foxpro\",\n \"pot\": \"i18n\",\n \"po\": \"i18n\",\n \"mo\": \"i18n\",\n \"lang\": \"i18n\",\n \"wat\": \"webassembly\",\n \"wasm\": \"webassembly\",\n \"ipynb\": \"jupyter\",\n \"d\": \"d\",\n \"mdx\": \"mdx\",\n \"svx\": \"mdsvex\",\n \"bal\": \"ballerina\",\n \"balx\": \"ballerina\",\n \"rkt\": \"racket\",\n \"bzl\": \"bazel\",\n \"bazel\": \"bazel\",\n \"mint\": \"mint\",\n \"vm\": \"velocity\",\n \"fhtml\": \"velocity\",\n \"vtl\": \"velocity\",\n \"gd\": \"godot\",\n \"godot\": \"godot-assets\",\n \"tres\": \"godot-assets\",\n \"tscn\": \"godot-assets\",\n \"gdns\": \"godot-assets\",\n \"gdnlib\": \"godot-assets\",\n \"gdshader\": \"godot-assets\",\n \"gdshaderinc\": \"godot-assets\",\n \"gdextension\": \"godot-assets\",\n \"azure-pipelines.yml\": \"azure-pipelines\",\n \"azure-pipelines.yaml\": \"azure-pipelines\",\n \"azure-pipelines-main.yml\": \"azure-pipelines\",\n \"azure-pipelines-main.yaml\": \"azure-pipelines\",\n \"azcli\": \"azure\",\n \"vagrantfile\": \"vagrant\",\n \"prisma\": \"prisma\",\n \"cshtml\": \"razor\",\n \"vbhtml\": \"razor\",\n \"abc\": \"abc\",\n \"ad\": \"asciidoc\",\n \"adoc\": \"asciidoc\",\n \"asciidoc\": \"asciidoc\",\n \"edge\": \"edge\",\n \"ss\": \"scheme\",\n \"scm\": \"scheme\",\n \"lisp\": \"lisp\",\n \"lsp\": \"lisp\",\n \"cl\": \"lisp\",\n \"fast\": \"lisp\",\n \"stl\": \"3d\",\n \"stp\": \"3d\",\n \"obj\": \"3d\",\n \"o\": \"3d\",\n \"ac\": \"3d\",\n \"blend\": \"3d\",\n \"dxf\": \"3d\",\n \"fbx\": \"3d\",\n \"mesh\": \"3d\",\n \"mqo\": \"3d\",\n \"pmd\": \"3d\",\n \"pmx\": \"3d\",\n \"skp\": \"3d\",\n \"vac\": \"3d\",\n \"vdp\": \"3d\",\n \"vox\": \"3d\",\n \"svg\": \"svg\",\n \"svelte\": \"svelte\",\n \"vimrc\": \"vim\",\n \"gvimrc\": \"vim\",\n \"exrc\": \"vim\",\n \"vim\": \"vim\",\n \"viminfo\": \"vim\",\n \"moon\": \"moonscript\",\n \"prw\": \"advpl_prw\",\n \"prx\": \"advpl_prw\",\n \"ptm\": \"advpl_ptm\",\n \"tlpp\": \"advpl_tlpp\",\n \"ch\": \"advpl_include\",\n \"iso\": \"disc\",\n \"vmdk\": \"disc\",\n \"hdd\": \"disc\",\n \"qcow\": \"disc\",\n \"qcow2\": \"disc\",\n \"qed\": \"disc\",\n \"dmg\": \"disc\",\n \"f\": \"fortran\",\n \"f77\": \"fortran\",\n \"f90\": \"fortran\",\n \"f95\": \"fortran\",\n \"f03\": \"fortran\",\n \"f08\": \"fortran\",\n \"tcl\": \"tcl\",\n \"liquid\": \"liquid\",\n \"p\": \"prolog\",\n \"pro\": \"prolog\",\n \"pl\": \"prolog\",\n \"coco\": \"coconut\",\n \"sketch\": \"sketch\",\n \"pwn\": \"pawn\",\n \"amx\": \"pawn\",\n \"4th\": \"forth\",\n \"fth\": \"forth\",\n \"frt\": \"forth\",\n \"iuml\": \"uml\",\n \"pu\": \"uml\",\n \"puml\": \"uml\",\n \"plantuml\": \"uml\",\n \"wsd\": \"uml\",\n \"wrap\": \"meson\",\n \"dhall\": \"dhall\",\n \"dhallb\": \"dhall\",\n \"sml\": \"sml\",\n \"mlton\": \"sml\",\n \"mlb\": \"sml\",\n \"sig\": \"sml\",\n \"fun\": \"sml\",\n \"cm\": \"sml\",\n \"lex\": \"sml\",\n \"use\": \"sml\",\n \"grm\": \"sml\",\n \"opam\": \"opam\",\n \"imba\": \"imba\",\n \"drawio\": \"drawio\",\n \"dio\": \"drawio\",\n \"pas\": \"pascal\",\n \"unity\": \"shaderlab\",\n \"sas\": \"sas\",\n \"sas7bdat\": \"sas\",\n \"sashdat\": \"sas\",\n \"astore\": \"sas\",\n \"ast\": \"sas\",\n \"sast\": \"sas\",\n \"nupkg\": \"nuget\",\n \"command\": \"command\",\n \"dsc\": \"denizenscript\",\n \"code-search\": \"search\",\n \"nginx\": \"nginx\",\n \"nginxconf\": \"nginx\",\n \"nginxconfig\": \"nginx\",\n \"mcfunction\": \"minecraft\",\n \"mcmeta\": \"minecraft\",\n \"mcr\": \"minecraft\",\n \"mca\": \"minecraft\",\n \"mcgame\": \"minecraft\",\n \"mclevel\": \"minecraft\",\n \"mcworld\": \"minecraft\",\n \"mine\": \"minecraft\",\n \"mus\": \"minecraft\",\n \"mcstructure\": \"minecraft\",\n \"mcpack\": \"minecraft\",\n \"mcaddon\": \"minecraft\",\n \"mctemplate\": \"minecraft\",\n \"mcproject\": \"minecraft\",\n \"res\": \"rescript\",\n \"resi\": \"rescript-interface\",\n \"b\": \"brainfuck\",\n \"bf\": \"brainfuck\",\n \"bicep\": \"bicep\",\n \"cob\": \"cobol\",\n \"cbl\": \"cobol\",\n \"gr\": \"grain\",\n \"lol\": \"lolcode\",\n \"idr\": \"idris\",\n \"ibc\": \"idris\",\n \"pipeline\": \"pipeline\",\n \"rego\": \"opa\",\n \"windi\": \"windicss\",\n \"scala\": \"scala\",\n \"sc\": \"scala\",\n \"ly\": \"lilypond\",\n \"v\": \"vlang\",\n \"pgn\": \"chess\",\n \"fen\": \"chess\",\n \"gmi\": \"gemini\",\n \"gemini\": \"gemini\",\n \"tsconfig.json\": \"tsconfig\",\n \"tauri\": \"tauri\",\n \"jsconfig.json\": \"jsconfig\",\n \"ada\": \"ada\",\n \"adb\": \"ada\",\n \"ads\": \"ada\",\n \"ali\": \"ada\",\n \"horusec-config.json\": \"horusec\",\n \"pdm.lock\": \"pdm\",\n \"pdm.toml\": \"pdm\",\n \"coarc\": \"coala\",\n \"coafile\": \"coala\",\n \"bubble\": \"dinophp\",\n \"html.bubble\": \"dinophp\",\n \"php.bubble\": \"dinophp\",\n \"tl\": \"teal\",\n \"template\": \"template\",\n \"glsl\": \"shader\",\n \"vert\": \"shader\",\n \"tesc\": \"shader\",\n \"tese\": \"shader\",\n \"geom\": \"shader\",\n \"frag\": \"shader\",\n \"comp\": \"shader\",\n \"vert.glsl\": \"shader\",\n \"tesc.glsl\": \"shader\",\n \"tese.glsl\": \"shader\",\n \"geom.glsl\": \"shader\",\n \"frag.glsl\": \"shader\",\n \"comp.glsl\": \"shader\",\n \"vertex.glsl\": \"shader\",\n \"geometry.glsl\": \"shader\",\n \"fragment.glsl\": \"shader\",\n \"compute.glsl\": \"shader\",\n \"ts.glsl\": \"shader\",\n \"gs.glsl\": \"shader\",\n \"vs.glsl\": \"shader\",\n \"fs.glsl\": \"shader\",\n \"shader\": \"shader\",\n \"vertexshader\": \"shader\",\n \"fragmentshader\": \"shader\",\n \"geometryshader\": \"shader\",\n \"computeshader\": \"shader\",\n \"hlsl\": \"shader\",\n \"pixel.hlsl\": \"shader\",\n \"geometry.hlsl\": \"shader\",\n \"compute.hlsl\": \"shader\",\n \"tessellation.hlsl\": \"shader\",\n \"px.hlsl\": \"shader\",\n \"geom.hlsl\": \"shader\",\n \"comp.hlsl\": \"shader\",\n \"tess.hlsl\": \"shader\",\n \"wgsl\": \"shader\",\n \"sy\": \"siyuan\",\n \"ndst.yml\": \"ndst\",\n \"ndst.yaml\": \"ndst\",\n \"ndst.json\": \"ndst\",\n \"tobi\": \"tobi\",\n \"gleam\": \"gleam\",\n \"steadybit.yml\": \"steadybit\",\n \"steadybit.yaml\": \"steadybit\",\n \"capnp\": \"capnp\",\n \"tree\": \"tree\",\n \"cdc\": \"cadence\",\n \"openapi.json\": \"openapi\",\n \"openapi.yml\": \"openapi\",\n \"openapi.yaml\": \"openapi\",\n \"swagger.json\": \"swagger\",\n \"swagger.yml\": \"swagger\",\n \"swagger.yaml\": \"swagger\",\n \"g4\": \"antlr\",\n \"st.css\": \"stylable\",\n \"pine\": \"pinejs\",\n \"taskfile.yml\": \"taskfile\",\n \"taskfile.yaml\": \"taskfile\",\n \"gml\": \"gamemaker\",\n \"yy\": \"gamemaker\",\n \"yyp\": \"gamemaker\",\n \"yyz\": \"gamemaker\",\n \"tldr\": \"tldraw\",\n \"typ\": \"typst\",\n \"mmd\": \"mermaid\",\n \"mermaid\": \"mermaid\",\n \"mojo\": \"mojo\",\n \"🔥\": \"mojo\",\n \"rbxl\": \"roblox\",\n \"rbxlx\": \"roblox\",\n \"rbxm\": \"roblox\",\n \"rbxmx\": \"roblox\",\n \"spwn\": \"spwn\",\n \"templ\": \"templ\",\n \"crx\": \"chrome\",\n \"stan\": \"stan\",\n \"abap\": \"abap\",\n \"acds\": \"abap\",\n \"asddls\": \"abap\",\n \"lottie\": \"lottie\",\n \"gs\": \"apps-script\",\n \"pkl\": \"pkl\"\n },\n \"fileNames\": {\n \".pug-lintrc\": \"pug\",\n \".pug-lintrc.js\": \"pug\",\n \".pug-lintrc.json\": \"pug\",\n \".jscsrc\": \"json\",\n \".jshintrc\": \"json\",\n \"composer.lock\": \"json\",\n \".jsbeautifyrc\": \"json\",\n \".esformatter\": \"json\",\n \"cdp.pid\": \"json\",\n \".lintstagedrc\": \"json\",\n \".whitesource\": \"json\",\n \"playwright.config.js\": \"playwright\",\n \"playwright.config.mjs\": \"playwright\",\n \"playwright.config.ts\": \"playwright\",\n \"playwright.config.base.js\": \"playwright\",\n \"playwright.config.base.mjs\": \"playwright\",\n \"playwright.config.base.ts\": \"playwright\",\n \"playwright-ct.config.js\": \"playwright\",\n \"playwright-ct.config.mjs\": \"playwright\",\n \"playwright-ct.config.ts\": \"playwright\",\n \".htaccess\": \"xml\",\n \"router.js\": \"routing\",\n \"router.jsx\": \"routing\",\n \"router.ts\": \"routing\",\n \"router.tsx\": \"routing\",\n \"routes.js\": \"routing\",\n \"routes.jsx\": \"routing\",\n \"routes.ts\": \"routing\",\n \"routes.tsx\": \"routing\",\n \".jshintignore\": \"settings\",\n \".buildignore\": \"settings\",\n \".mrconfig\": \"settings\",\n \".yardopts\": \"settings\",\n \"manifest.mf\": \"settings\",\n \".clang-format\": \"settings\",\n \".clang-tidy\": \"settings\",\n \"astro.config.js\": \"astro\",\n \"astro.config.mjs\": \"astro\",\n \"astro.config.cjs\": \"astro\",\n \"astro.config.ts\": \"astro\",\n \"astro.config.cts\": \"astro\",\n \"astro.config.mts\": \"astro\",\n \"go.mod\": \"go-mod\",\n \"go.sum\": \"go-mod\",\n \"go.work\": \"go-mod\",\n \"go.work.sum\": \"go-mod\",\n \"requirements.txt\": \"python-misc\",\n \"pipfile\": \"python-misc\",\n \".python-version\": \"python-misc\",\n \"manifest.in\": \"python-misc\",\n \"pylintrc\": \"python-misc\",\n \".pylintrc\": \"python-misc\",\n \"pyproject.toml\": \"python-misc\",\n \"commit-msg\": \"console\",\n \"pre-commit\": \"console\",\n \"pre-push\": \"console\",\n \"post-merge\": \"console\",\n \"gradle.properties\": \"gradle\",\n \"gradlew\": \"gradle\",\n \"gradle-wrapper.properties\": \"gradle\",\n \"copying\": \"certificate\",\n \"copying.md\": \"certificate\",\n \"copying.rst\": \"certificate\",\n \"copying.txt\": \"certificate\",\n \"copyright\": \"certificate\",\n \"copyright.md\": \"certificate\",\n \"copyright.rst\": \"certificate\",\n \"copyright.txt\": \"certificate\",\n \"license\": \"certificate\",\n \"license-agpl\": \"certificate\",\n \"license-apache\": \"certificate\",\n \"license-bsd\": \"certificate\",\n \"license-mit\": \"certificate\",\n \"license-gpl\": \"certificate\",\n \"license-lgpl\": \"certificate\",\n \"license.md\": \"certificate\",\n \"license.rst\": \"certificate\",\n \"license.txt\": \"certificate\",\n \"licence\": \"certificate\",\n \"licence-agpl\": \"certificate\",\n \"licence-apache\": \"certificate\",\n \"licence-bsd\": \"certificate\",\n \"licence-mit\": \"certificate\",\n \"licence-gpl\": \"certificate\",\n \"licence-lgpl\": \"certificate\",\n \"licence.md\": \"certificate\",\n \"licence.rst\": \"certificate\",\n \"licence.txt\": \"certificate\",\n \".htpasswd\": \"key\",\n \".ruby-version\": \"ruby\",\n \"gemfile\": \"gemfile\",\n \".rubocop.yml\": \"rubocop\",\n \".rubocop-todo.yml\": \"rubocop\",\n \".rubocop_todo.yml\": \"rubocop\",\n \".rspec\": \"rspec\",\n \"dockerfile\": \"docker\",\n \"dockerfile.prod\": \"docker\",\n \"dockerfile.production\": \"docker\",\n \"dockerfile.alpha\": \"docker\",\n \"dockerfile.beta\": \"docker\",\n \"dockerfile.stage\": \"docker\",\n \"dockerfile.staging\": \"docker\",\n \"dockerfile.dev\": \"docker\",\n \"dockerfile.development\": \"docker\",\n \"dockerfile.local\": \"docker\",\n \"dockerfile.test\": \"docker\",\n \"dockerfile.testing\": \"docker\",\n \"dockerfile.ci\": \"docker\",\n \"dockerfile.web\": \"docker\",\n \"dockerfile.worker\": \"docker\",\n \"docker-compose.yml\": \"docker\",\n \"docker-compose.override.yml\": \"docker\",\n \"docker-compose.prod.yml\": \"docker\",\n \"docker-compose.production.yml\": \"docker\",\n \"docker-compose.alpha.yml\": \"docker\",\n \"docker-compose.beta.yml\": \"docker\",\n \"docker-compose.stage.yml\": \"docker\",\n \"docker-compose.staging.yml\": \"docker\",\n \"docker-compose.dev.yml\": \"docker\",\n \"docker-compose.development.yml\": \"docker\",\n \"docker-compose.local.yml\": \"docker\",\n \"docker-compose.test.yml\": \"docker\",\n \"docker-compose.testing.yml\": \"docker\",\n \"docker-compose.ci.yml\": \"docker\",\n \"docker-compose.web.yml\": \"docker\",\n \"docker-compose.worker.yml\": \"docker\",\n \"docker-compose.yaml\": \"docker\",\n \"docker-compose.override.yaml\": \"docker\",\n \"docker-compose.prod.yaml\": \"docker\",\n \"docker-compose.production.yaml\": \"docker\",\n \"docker-compose.alpha.yaml\": \"docker\",\n \"docker-compose.beta.yaml\": \"docker\",\n \"docker-compose.stage.yaml\": \"docker\",\n \"docker-compose.staging.yaml\": \"docker\",\n \"docker-compose.dev.yaml\": \"docker\",\n \"docker-compose.development.yaml\": \"docker\",\n \"docker-compose.local.yaml\": \"docker\",\n \"docker-compose.test.yaml\": \"docker\",\n \"docker-compose.testing.yaml\": \"docker\",\n \"docker-compose.ci.yaml\": \"docker\",\n \"docker-compose.web.yaml\": \"docker\",\n \"docker-compose.worker.yaml\": \"docker\",\n \"containerfile\": \"docker\",\n \"containerfile.prod\": \"docker\",\n \"containerfile.production\": \"docker\",\n \"containerfile.alpha\": \"docker\",\n \"containerfile.beta\": \"docker\",\n \"containerfile.stage\": \"docker\",\n \"containerfile.staging\": \"docker\",\n \"containerfile.dev\": \"docker\",\n \"containerfile.development\": \"docker\",\n \"containerfile.local\": \"docker\",\n \"containerfile.test\": \"docker\",\n \"containerfile.testing\": \"docker\",\n \"containerfile.ci\": \"docker\",\n \"containerfile.web\": \"docker\",\n \"containerfile.worker\": \"docker\",\n \"compose.yaml\": \"docker\",\n \"compose.override.yaml\": \"docker\",\n \"compose.prod.yaml\": \"docker\",\n \"compose.production.yaml\": \"docker\",\n \"compose.alpha.yaml\": \"docker\",\n \"compose.beta.yaml\": \"docker\",\n \"compose.stage.yaml\": \"docker\",\n \"compose.staging.yaml\": \"docker\",\n \"compose.dev.yaml\": \"docker\",\n \"compose.development.yaml\": \"docker\",\n \"compose.local.yaml\": \"docker\",\n \"compose.test.yaml\": \"docker\",\n \"compose.testing.yaml\": \"docker\",\n \"compose.ci.yaml\": \"docker\",\n \"compose.web.yaml\": \"docker\",\n \"compose.worker.yaml\": \"docker\",\n \"compose.yml\": \"docker\",\n \"compose.override.yml\": \"docker\",\n \"compose.prod.yml\": \"docker\",\n \"compose.production.yml\": \"docker\",\n \"compose.alpha.yml\": \"docker\",\n \"compose.beta.yml\": \"docker\",\n \"compose.stage.yml\": \"docker\",\n \"compose.staging.yml\": \"docker\",\n \"compose.dev.yml\": \"docker\",\n \"compose.development.yml\": \"docker\",\n \"compose.local.yml\": \"docker\",\n \"compose.test.yml\": \"docker\",\n \"compose.testing.yml\": \"docker\",\n \"compose.ci.yml\": \"docker\",\n \"compose.web.yml\": \"docker\",\n \"compose.worker.yml\": \"docker\",\n \".mailmap\": \"email\",\n \".graphqlrc\": \"graphql\",\n \".graphqlrc.json\": \"graphql\",\n \".graphqlrc.jsonc\": \"graphql\",\n \".graphqlrc.json5\": \"graphql\",\n \".graphqlrc.yaml\": \"graphql\",\n \".graphqlrc.yml\": \"graphql\",\n \".graphqlrc.toml\": \"graphql\",\n \".graphqlrc.js\": \"graphql\",\n \".graphqlrc.mjs\": \"graphql\",\n \".graphqlrc.cjs\": \"graphql\",\n \".graphqlrc.ts\": \"graphql\",\n \".graphqlrc.mts\": \"graphql\",\n \".graphqlrc.cts\": \"graphql\",\n \".config/graphqlrc\": \"graphql\",\n \".config/graphqlrc.json\": \"graphql\",\n \".config/graphqlrc.jsonc\": \"graphql\",\n \".config/graphqlrc.json5\": \"graphql\",\n \".config/graphqlrc.yaml\": \"graphql\",\n \".config/graphqlrc.yml\": \"graphql\",\n \".config/graphqlrc.toml\": \"graphql\",\n \".config/graphqlrc.js\": \"graphql\",\n \".config/graphqlrc.mjs\": \"graphql\",\n \".config/graphqlrc.cjs\": \"graphql\",\n \".config/graphqlrc.ts\": \"graphql\",\n \".config/graphqlrc.mts\": \"graphql\",\n \".config/graphqlrc.cts\": \"graphql\",\n \"graphql.config.json\": \"graphql\",\n \"graphql.config.jsonc\": \"graphql\",\n \"graphql.config.json5\": \"graphql\",\n \"graphql.config.yaml\": \"graphql\",\n \"graphql.config.yml\": \"graphql\",\n \"graphql.config.toml\": \"graphql\",\n \"graphql.config.js\": \"graphql\",\n \"graphql.config.mjs\": \"graphql\",\n \"graphql.config.cjs\": \"graphql\",\n \"graphql.config.ts\": \"graphql\",\n \"graphql.config.mts\": \"graphql\",\n \"graphql.config.cts\": \"graphql\",\n \".graphqlconfig\": \"graphql\",\n \".git\": \"git\",\n \".gitignore\": \"git\",\n \".gitmessage\": \"git\",\n \".gitignore-global\": \"git\",\n \".gitignore_global\": \"git\",\n \".gitattributes\": \"git\",\n \".gitattributes-global\": \"git\",\n \".gitattributes_global\": \"git\",\n \".gitconfig\": \"git\",\n \".gitmodules\": \"git\",\n \".gitkeep\": \"git\",\n \".keep\": \"git\",\n \".gitpreserve\": \"git\",\n \".gitinclude\": \"git\",\n \".git-blame-ignore\": \"git\",\n \".git-blame-ignore-revs\": \"git\",\n \".git-for-windows-updater\": \"git\",\n \"git-history\": \"git\",\n \".luacheckrc\": \"lua\",\n \".Rhistory\": \"r\",\n \".pubignore\": \"dart\",\n \"cmakelists.txt\": \"cmake\",\n \"cmakecache.txt\": \"cmake\",\n \"semgrep.yml\": \"semgrep\",\n \".semgrepignore\": \"semgrep\",\n \"vue.config.js\": \"vue-config\",\n \"vue.config.ts\": \"vue-config\",\n \"vetur.config.js\": \"vue-config\",\n \"vetur.config.ts\": \"vue-config\",\n \"volar.config.js\": \"vue-config\",\n \"nuxt.config.js\": \"nuxt\",\n \"nuxt.config.ts\": \"nuxt\",\n \".nuxtignore\": \"nuxt\",\n \"security.md\": \"lock\",\n \"security.txt\": \"lock\",\n \"security\": \"lock\",\n \"angular-cli.json\": \"angular\",\n \".angular-cli.json\": \"angular\",\n \"angular.json\": \"angular\",\n \"ng-package.json\": \"angular\",\n \".mjmlconfig\": \"mjml\",\n \"vercel.json\": \"vercel\",\n \".vercelignore\": \"vercel\",\n \"now.json\": \"vercel\",\n \".nowignore\": \"vercel\",\n \"verdaccio.yml\": \"verdaccio\",\n \"payload.config.js\": \"payload\",\n \"payload.config.mjs\": \"payload\",\n \"payload.config.ts\": \"payload\",\n \"payload.config.mts\": \"payload\",\n \"next.config.js\": \"next\",\n \"next.config.mjs\": \"next\",\n \"next.config.ts\": \"next\",\n \"next.config.mts\": \"next\",\n \"remix.config.js\": \"remix\",\n \"remix.config.ts\": \"remix\",\n \"artisan\": \"laravel\",\n \".vfl\": \"vfl\",\n \".kl\": \"kl\",\n \".postcssrc\": \"postcss\",\n \".postcssrc.json\": \"postcss\",\n \".postcssrc.jsonc\": \"postcss\",\n \".postcssrc.json5\": \"postcss\",\n \".postcssrc.yaml\": \"postcss\",\n \".postcssrc.yml\": \"postcss\",\n \".postcssrc.toml\": \"postcss\",\n \".postcssrc.js\": \"postcss\",\n \".postcssrc.mjs\": \"postcss\",\n \".postcssrc.cjs\": \"postcss\",\n \".postcssrc.ts\": \"postcss\",\n \".postcssrc.mts\": \"postcss\",\n \".postcssrc.cts\": \"postcss\",\n \".config/postcssrc\": \"postcss\",\n \".config/postcssrc.json\": \"postcss\",\n \".config/postcssrc.jsonc\": \"postcss\",\n \".config/postcssrc.json5\": \"postcss\",\n \".config/postcssrc.yaml\": \"postcss\",\n \".config/postcssrc.yml\": \"postcss\",\n \".config/postcssrc.toml\": \"postcss\",\n \".config/postcssrc.js\": \"postcss\",\n \".config/postcssrc.mjs\": \"postcss\",\n \".config/postcssrc.cjs\": \"postcss\",\n \".config/postcssrc.ts\": \"postcss\",\n \".config/postcssrc.mts\": \"postcss\",\n \".config/postcssrc.cts\": \"postcss\",\n \"postcss.config.json\": \"postcss\",\n \"postcss.config.jsonc\": \"postcss\",\n \"postcss.config.json5\": \"postcss\",\n \"postcss.config.yaml\": \"postcss\",\n \"postcss.config.yml\": \"postcss\",\n \"postcss.config.toml\": \"postcss\",\n \"postcss.config.js\": \"postcss\",\n \"postcss.config.mjs\": \"postcss\",\n \"postcss.config.cjs\": \"postcss\",\n \"postcss.config.ts\": \"postcss\",\n \"postcss.config.mts\": \"postcss\",\n \"postcss.config.cts\": \"postcss\",\n \".posthtmlrc\": \"posthtml\",\n \".posthtmlrc.json\": \"posthtml\",\n \".posthtmlrc.jsonc\": \"posthtml\",\n \".posthtmlrc.json5\": \"posthtml\",\n \".posthtmlrc.yaml\": \"posthtml\",\n \".posthtmlrc.yml\": \"posthtml\",\n \".posthtmlrc.toml\": \"posthtml\",\n \".posthtmlrc.js\": \"posthtml\",\n \".posthtmlrc.mjs\": \"posthtml\",\n \".posthtmlrc.cjs\": \"posthtml\",\n \".posthtmlrc.ts\": \"posthtml\",\n \".posthtmlrc.mts\": \"posthtml\",\n \".posthtmlrc.cts\": \"posthtml\",\n \".config/posthtmlrc\": \"posthtml\",\n \".config/posthtmlrc.json\": \"posthtml\",\n \".config/posthtmlrc.jsonc\": \"posthtml\",\n \".config/posthtmlrc.json5\": \"posthtml\",\n \".config/posthtmlrc.yaml\": \"posthtml\",\n \".config/posthtmlrc.yml\": \"posthtml\",\n \".config/posthtmlrc.toml\": \"posthtml\",\n \".config/posthtmlrc.js\": \"posthtml\",\n \".config/posthtmlrc.mjs\": \"posthtml\",\n \".config/posthtmlrc.cjs\": \"posthtml\",\n \".config/posthtmlrc.ts\": \"posthtml\",\n \".config/posthtmlrc.mts\": \"posthtml\",\n \".config/posthtmlrc.cts\": \"posthtml\",\n \"posthtml.config.json\": \"posthtml\",\n \"posthtml.config.jsonc\": \"posthtml\",\n \"posthtml.config.json5\": \"posthtml\",\n \"posthtml.config.yaml\": \"posthtml\",\n \"posthtml.config.yml\": \"posthtml\",\n \"posthtml.config.toml\": \"posthtml\",\n \"posthtml.config.js\": \"posthtml\",\n \"posthtml.config.mjs\": \"posthtml\",\n \"posthtml.config.cjs\": \"posthtml\",\n \"posthtml.config.ts\": \"posthtml\",\n \"posthtml.config.mts\": \"posthtml\",\n \"posthtml.config.cts\": \"posthtml\",\n \"todo.md\": \"todo\",\n \"todos.md\": \"todo\",\n \"cabal.project\": \"cabal\",\n \"cabal.project.freeze\": \"cabal\",\n \"cabal.project.local\": \"cabal\",\n \"CNAME\": \"http\",\n \"project.graphcool\": \"graphcool\",\n \"webpack.base.js\": \"webpack\",\n \"webpack.base.mjs\": \"webpack\",\n \"webpack.base.cjs\": \"webpack\",\n \"webpack.base.ts\": \"webpack\",\n \"webpack.base.mts\": \"webpack\",\n \"webpack.base.cts\": \"webpack\",\n \"webpack.client.js\": \"webpack\",\n \"webpack.client.mjs\": \"webpack\",\n \"webpack.client.cjs\": \"webpack\",\n \"webpack.client.ts\": \"webpack\",\n \"webpack.client.mts\": \"webpack\",\n \"webpack.client.cts\": \"webpack\",\n \"webpack.common.js\": \"webpack\",\n \"webpack.common.mjs\": \"webpack\",\n \"webpack.common.cjs\": \"webpack\",\n \"webpack.common.ts\": \"webpack\",\n \"webpack.common.mts\": \"webpack\",\n \"webpack.common.cts\": \"webpack\",\n \"webpack.config.babel.js\": \"webpack\",\n \"webpack.config.babel.mjs\": \"webpack\",\n \"webpack.config.babel.cjs\": \"webpack\",\n \"webpack.config.babel.ts\": \"webpack\",\n \"webpack.config.babel.mts\": \"webpack\",\n \"webpack.config.babel.cts\": \"webpack\",\n \"webpack.config.base.babel.js\": \"webpack\",\n \"webpack.config.base.babel.mjs\": \"webpack\",\n \"webpack.config.base.babel.cjs\": \"webpack\",\n \"webpack.config.base.babel.ts\": \"webpack\",\n \"webpack.config.base.babel.mts\": \"webpack\",\n \"webpack.config.base.babel.cts\": \"webpack\",\n \"webpack.config.base.js\": \"webpack\",\n \"webpack.config.base.mjs\": \"webpack\",\n \"webpack.config.base.cjs\": \"webpack\",\n \"webpack.config.base.ts\": \"webpack\",\n \"webpack.config.base.mts\": \"webpack\",\n \"webpack.config.base.cts\": \"webpack\",\n \"webpack.config.client.js\": \"webpack\",\n \"webpack.config.client.mjs\": \"webpack\",\n \"webpack.config.client.cjs\": \"webpack\",\n \"webpack.config.client.ts\": \"webpack\",\n \"webpack.config.client.mts\": \"webpack\",\n \"webpack.config.client.cts\": \"webpack\",\n \"webpack.config.common.babel.js\": \"webpack\",\n \"webpack.config.common.babel.mjs\": \"webpack\",\n \"webpack.config.common.babel.cjs\": \"webpack\",\n \"webpack.config.common.babel.ts\": \"webpack\",\n \"webpack.config.common.babel.mts\": \"webpack\",\n \"webpack.config.common.babel.cts\": \"webpack\",\n \"webpack.config.common.js\": \"webpack\",\n \"webpack.config.common.mjs\": \"webpack\",\n \"webpack.config.common.cjs\": \"webpack\",\n \"webpack.config.common.ts\": \"webpack\",\n \"webpack.config.common.mts\": \"webpack\",\n \"webpack.config.common.cts\": \"webpack\",\n \"webpack.config.dev.babel.js\": \"webpack\",\n \"webpack.config.dev.babel.mjs\": \"webpack\",\n \"webpack.config.dev.babel.cjs\": \"webpack\",\n \"webpack.config.dev.babel.ts\": \"webpack\",\n \"webpack.config.dev.babel.mts\": \"webpack\",\n \"webpack.config.dev.babel.cts\": \"webpack\",\n \"webpack.config.dev.js\": \"webpack\",\n \"webpack.config.dev.mjs\": \"webpack\",\n \"webpack.config.dev.cjs\": \"webpack\",\n \"webpack.config.dev.ts\": \"webpack\",\n \"webpack.config.dev.mts\": \"webpack\",\n \"webpack.config.dev.cts\": \"webpack\",\n \"webpack.config.main.js\": \"webpack\",\n \"webpack.config.main.mjs\": \"webpack\",\n \"webpack.config.main.cjs\": \"webpack\",\n \"webpack.config.main.ts\": \"webpack\",\n \"webpack.config.main.mts\": \"webpack\",\n \"webpack.config.main.cts\": \"webpack\",\n \"webpack.config.prod.babel.js\": \"webpack\",\n \"webpack.config.prod.babel.mjs\": \"webpack\",\n \"webpack.config.prod.babel.cjs\": \"webpack\",\n \"webpack.config.prod.babel.ts\": \"webpack\",\n \"webpack.config.prod.babel.mts\": \"webpack\",\n \"webpack.config.prod.babel.cts\": \"webpack\",\n \"webpack.config.prod.js\": \"webpack\",\n \"webpack.config.prod.mjs\": \"webpack\",\n \"webpack.config.prod.cjs\": \"webpack\",\n \"webpack.config.prod.ts\": \"webpack\",\n \"webpack.config.prod.mts\": \"webpack\",\n \"webpack.config.prod.cts\": \"webpack\",\n \"webpack.config.production.babel.js\": \"webpack\",\n \"webpack.config.production.babel.mjs\": \"webpack\",\n \"webpack.config.production.babel.cjs\": \"webpack\",\n \"webpack.config.production.babel.ts\": \"webpack\",\n \"webpack.config.production.babel.mts\": \"webpack\",\n \"webpack.config.production.babel.cts\": \"webpack\",\n \"webpack.config.production.js\": \"webpack\",\n \"webpack.config.production.mjs\": \"webpack\",\n \"webpack.config.production.cjs\": \"webpack\",\n \"webpack.config.production.ts\": \"webpack\",\n \"webpack.config.production.mts\": \"webpack\",\n \"webpack.config.production.cts\": \"webpack\",\n \"webpack.config.renderer.js\": \"webpack\",\n \"webpack.config.renderer.mjs\": \"webpack\",\n \"webpack.config.renderer.cjs\": \"webpack\",\n \"webpack.config.renderer.ts\": \"webpack\",\n \"webpack.config.renderer.mts\": \"webpack\",\n \"webpack.config.renderer.cts\": \"webpack\",\n \"webpack.config.server.js\": \"webpack\",\n \"webpack.config.server.mjs\": \"webpack\",\n \"webpack.config.server.cjs\": \"webpack\",\n \"webpack.config.server.ts\": \"webpack\",\n \"webpack.config.server.mts\": \"webpack\",\n \"webpack.config.server.cts\": \"webpack\",\n \"webpack.config.staging.babel.js\": \"webpack\",\n \"webpack.config.staging.babel.mjs\": \"webpack\",\n \"webpack.config.staging.babel.cjs\": \"webpack\",\n \"webpack.config.staging.babel.ts\": \"webpack\",\n \"webpack.config.staging.babel.mts\": \"webpack\",\n \"webpack.config.staging.babel.cts\": \"webpack\",\n \"webpack.config.staging.js\": \"webpack\",\n \"webpack.config.staging.mjs\": \"webpack\",\n \"webpack.config.staging.cjs\": \"webpack\",\n \"webpack.config.staging.ts\": \"webpack\",\n \"webpack.config.staging.mts\": \"webpack\",\n \"webpack.config.staging.cts\": \"webpack\",\n \"webpack.config.test.js\": \"webpack\",\n \"webpack.config.test.mjs\": \"webpack\",\n \"webpack.config.test.cjs\": \"webpack\",\n \"webpack.config.test.ts\": \"webpack\",\n \"webpack.config.test.mts\": \"webpack\",\n \"webpack.config.test.cts\": \"webpack\",\n \"webpack.config.vendor.production.js\": \"webpack\",\n \"webpack.config.vendor.production.mjs\": \"webpack\",\n \"webpack.config.vendor.production.cjs\": \"webpack\",\n \"webpack.config.vendor.production.ts\": \"webpack\",\n \"webpack.config.vendor.production.mts\": \"webpack\",\n \"webpack.config.vendor.production.cts\": \"webpack\",\n \"webpack.config.vendor.js\": \"webpack\",\n \"webpack.config.vendor.mjs\": \"webpack\",\n \"webpack.config.vendor.cjs\": \"webpack\",\n \"webpack.config.vendor.ts\": \"webpack\",\n \"webpack.config.vendor.mts\": \"webpack\",\n \"webpack.config.vendor.cts\": \"webpack\",\n \"webpack.config.js\": \"webpack\",\n \"webpack.config.mjs\": \"webpack\",\n \"webpack.config.cjs\": \"webpack\",\n \"webpack.config.ts\": \"webpack\",\n \"webpack.config.mts\": \"webpack\",\n \"webpack.config.cts\": \"webpack\",\n \"webpack.dev.js\": \"webpack\",\n \"webpack.dev.mjs\": \"webpack\",\n \"webpack.dev.cjs\": \"webpack\",\n \"webpack.dev.ts\": \"webpack\",\n \"webpack.dev.mts\": \"webpack\",\n \"webpack.dev.cts\": \"webpack\",\n \"webpack.development.js\": \"webpack\",\n \"webpack.development.mjs\": \"webpack\",\n \"webpack.development.cjs\": \"webpack\",\n \"webpack.development.ts\": \"webpack\",\n \"webpack.development.mts\": \"webpack\",\n \"webpack.development.cts\": \"webpack\",\n \"webpack.dist.js\": \"webpack\",\n \"webpack.dist.mjs\": \"webpack\",\n \"webpack.dist.cjs\": \"webpack\",\n \"webpack.dist.ts\": \"webpack\",\n \"webpack.dist.mts\": \"webpack\",\n \"webpack.dist.cts\": \"webpack\",\n \"webpack.mix.js\": \"webpack\",\n \"webpack.mix.mjs\": \"webpack\",\n \"webpack.mix.cjs\": \"webpack\",\n \"webpack.mix.ts\": \"webpack\",\n \"webpack.mix.mts\": \"webpack\",\n \"webpack.mix.cts\": \"webpack\",\n \"webpack.prod.config.js\": \"webpack\",\n \"webpack.prod.config.mjs\": \"webpack\",\n \"webpack.prod.config.cjs\": \"webpack\",\n \"webpack.prod.config.ts\": \"webpack\",\n \"webpack.prod.config.mts\": \"webpack\",\n \"webpack.prod.config.cts\": \"webpack\",\n \"webpack.prod.js\": \"webpack\",\n \"webpack.prod.mjs\": \"webpack\",\n \"webpack.prod.cjs\": \"webpack\",\n \"webpack.prod.ts\": \"webpack\",\n \"webpack.prod.mts\": \"webpack\",\n \"webpack.prod.cts\": \"webpack\",\n \"webpack.production.js\": \"webpack\",\n \"webpack.production.mjs\": \"webpack\",\n \"webpack.production.cjs\": \"webpack\",\n \"webpack.production.ts\": \"webpack\",\n \"webpack.production.mts\": \"webpack\",\n \"webpack.production.cts\": \"webpack\",\n \"webpack.server.js\": \"webpack\",\n \"webpack.server.mjs\": \"webpack\",\n \"webpack.server.cjs\": \"webpack\",\n \"webpack.server.ts\": \"webpack\",\n \"webpack.server.mts\": \"webpack\",\n \"webpack.server.cts\": \"webpack\",\n \"webpack.test.js\": \"webpack\",\n \"webpack.test.mjs\": \"webpack\",\n \"webpack.test.cjs\": \"webpack\",\n \"webpack.test.ts\": \"webpack\",\n \"webpack.test.mts\": \"webpack\",\n \"webpack.test.cts\": \"webpack\",\n \"webpack.js\": \"webpack\",\n \"webpack.mjs\": \"webpack\",\n \"webpack.cjs\": \"webpack\",\n \"webpack.ts\": \"webpack\",\n \"webpack.mts\": \"webpack\",\n \"webpack.cts\": \"webpack\",\n \"webpackfile.js\": \"webpack\",\n \"webpackfile.mjs\": \"webpack\",\n \"webpackfile.cjs\": \"webpack\",\n \"webpackfile.ts\": \"webpack\",\n \"webpackfile.mts\": \"webpack\",\n \"webpackfile.cts\": \"webpack\",\n \"webpack.config.coffee\": \"webpack\",\n \"ionic.config.json\": \"ionic\",\n \".io-config.json\": \"ionic\",\n \"gulpfile.js\": \"gulp\",\n \"gulpfile.mjs\": \"gulp\",\n \"gulpfile.ts\": \"gulp\",\n \"gulpfile.cts\": \"gulp\",\n \"gulpfile.mts\": \"gulp\",\n \"gulpfile.babel.js\": \"gulp\",\n \"package.json\": \"nodejs\",\n \"package-lock.json\": \"nodejs\",\n \".nvmrc\": \"nodejs\",\n \".esmrc\": \"nodejs\",\n \".node-version\": \"nodejs\",\n \".npmignore\": \"npm\",\n \".npmrc\": \"npm\",\n \".yarnrc\": \"yarn\",\n \"yarn.lock\": \"yarn\",\n \".yarnclean\": \"yarn\",\n \".yarn-integrity\": \"yarn\",\n \"yarn-error.log\": \"yarn\",\n \".yarnrc.yml\": \"yarn\",\n \".yarnrc.yaml\": \"yarn\",\n \"androidmanifest.xml\": \"android\",\n \".env.defaults\": \"tune\",\n \".env.example\": \"tune\",\n \".env.sample\": \"tune\",\n \".env.template\": \"tune\",\n \".env.schema\": \"tune\",\n \".env.local\": \"tune\",\n \".env.dev\": \"tune\",\n \".env.development\": \"tune\",\n \".env.alpha\": \"tune\",\n \".env.e2e\": \"tune\",\n \".env.qa\": \"tune\",\n \".env.dist\": \"tune\",\n \".env.prod\": \"tune\",\n \".env.production\": \"tune\",\n \".env.stage\": \"tune\",\n \".env.staging\": \"tune\",\n \".env.preview\": \"tune\",\n \".env.test\": \"tune\",\n \".env.testing\": \"tune\",\n \".env.development.local\": \"tune\",\n \".env.qa.local\": \"tune\",\n \".env.production.local\": \"tune\",\n \".env.staging.local\": \"tune\",\n \".env.test.local\": \"tune\",\n \".env.uat\": \"tune\",\n \"turbo.json\": \"turborepo\",\n \".babelrc\": \"babel\",\n \".babelrc.json\": \"babel\",\n \".babelrc.jsonc\": \"babel\",\n \".babelrc.json5\": \"babel\",\n \".babelrc.yaml\": \"babel\",\n \".babelrc.yml\": \"babel\",\n \".babelrc.toml\": \"babel\",\n \".babelrc.js\": \"babel\",\n \".babelrc.mjs\": \"babel\",\n \".babelrc.cjs\": \"babel\",\n \".babelrc.ts\": \"babel\",\n \".babelrc.mts\": \"babel\",\n \".babelrc.cts\": \"babel\",\n \".config/babelrc\": \"babel\",\n \".config/babelrc.json\": \"babel\",\n \".config/babelrc.jsonc\": \"babel\",\n \".config/babelrc.json5\": \"babel\",\n \".config/babelrc.yaml\": \"babel\",\n \".config/babelrc.yml\": \"babel\",\n \".config/babelrc.toml\": \"babel\",\n \".config/babelrc.js\": \"babel\",\n \".config/babelrc.mjs\": \"babel\",\n \".config/babelrc.cjs\": \"babel\",\n \".config/babelrc.ts\": \"babel\",\n \".config/babelrc.mts\": \"babel\",\n \".config/babelrc.cts\": \"babel\",\n \"babel.config.json\": \"babel\",\n \"babel.config.jsonc\": \"babel\",\n \"babel.config.json5\": \"babel\",\n \"babel.config.yaml\": \"babel\",\n \"babel.config.yml\": \"babel\",\n \"babel.config.toml\": \"babel\",\n \"babel.config.js\": \"babel\",\n \"babel.config.mjs\": \"babel\",\n \"babel.config.cjs\": \"babel\",\n \"babel.config.ts\": \"babel\",\n \"babel.config.mts\": \"babel\",\n \"babel.config.cts\": \"babel\",\n \".babel-plugin-macrosrc\": \"babel\",\n \".babel-plugin-macrosrc.json\": \"babel\",\n \".babel-plugin-macrosrc.jsonc\": \"babel\",\n \".babel-plugin-macrosrc.json5\": \"babel\",\n \".babel-plugin-macrosrc.yaml\": \"babel\",\n \".babel-plugin-macrosrc.yml\": \"babel\",\n \".babel-plugin-macrosrc.toml\": \"babel\",\n \".babel-plugin-macrosrc.js\": \"babel\",\n \".babel-plugin-macrosrc.mjs\": \"babel\",\n \".babel-plugin-macrosrc.cjs\": \"babel\",\n \".babel-plugin-macrosrc.ts\": \"babel\",\n \".babel-plugin-macrosrc.mts\": \"babel\",\n \".babel-plugin-macrosrc.cts\": \"babel\",\n \".config/babel-plugin-macrosrc\": \"babel\",\n \".config/babel-plugin-macrosrc.json\": \"babel\",\n \".config/babel-plugin-macrosrc.jsonc\": \"babel\",\n \".config/babel-plugin-macrosrc.json5\": \"babel\",\n \".config/babel-plugin-macrosrc.yaml\": \"babel\",\n \".config/babel-plugin-macrosrc.yml\": \"babel\",\n \".config/babel-plugin-macrosrc.toml\": \"babel\",\n \".config/babel-plugin-macrosrc.js\": \"babel\",\n \".config/babel-plugin-macrosrc.mjs\": \"babel\",\n \".config/babel-plugin-macrosrc.cjs\": \"babel\",\n \".config/babel-plugin-macrosrc.ts\": \"babel\",\n \".config/babel-plugin-macrosrc.mts\": \"babel\",\n \".config/babel-plugin-macrosrc.cts\": \"babel\",\n \"babel-plugin-macros.config.json\": \"babel\",\n \"babel-plugin-macros.config.jsonc\": \"babel\",\n \"babel-plugin-macros.config.json5\": \"babel\",\n \"babel-plugin-macros.config.yaml\": \"babel\",\n \"babel-plugin-macros.config.yml\": \"babel\",\n \"babel-plugin-macros.config.toml\": \"babel\",\n \"babel-plugin-macros.config.js\": \"babel\",\n \"babel-plugin-macros.config.mjs\": \"babel\",\n \"babel-plugin-macros.config.cjs\": \"babel\",\n \"babel-plugin-macros.config.ts\": \"babel\",\n \"babel-plugin-macros.config.mts\": \"babel\",\n \"babel-plugin-macros.config.cts\": \"babel\",\n \"babel-transform.js\": \"babel\",\n \"blitz.config.js\": \"blitz\",\n \"blitz.config.ts\": \"blitz\",\n \".blitz.config.compiled.js\": \"blitz\",\n \"contributing.md\": \"contributing\",\n \"contributing.rst\": \"contributing\",\n \"contributing.txt\": \"contributing\",\n \"contributing\": \"contributing\",\n \"readme.md\": \"readme\",\n \"readme.rst\": \"readme\",\n \"readme.txt\": \"readme\",\n \"readme\": \"readme\",\n \"changelog\": \"changelog\",\n \"changelog.md\": \"changelog\",\n \"changelog.rst\": \"changelog\",\n \"changelog.txt\": \"changelog\",\n \"changes\": \"changelog\",\n \"changes.md\": \"changelog\",\n \"changes.rst\": \"changelog\",\n \"changes.txt\": \"changelog\",\n \"architecture.md\": \"architecture\",\n \"architecture.rst\": \"architecture\",\n \"architecture.txt\": \"architecture\",\n \"architecture\": \"architecture\",\n \"credits.md\": \"credits\",\n \"credits.rst\": \"credits\",\n \"credits.txt\": \"credits\",\n \"credits\": \"credits\",\n \"authors.md\": \"authors\",\n \"authors.rst\": \"authors\",\n \"authors.txt\": \"authors\",\n \"authors\": \"authors\",\n \"contributors.md\": \"authors\",\n \"contributors.rst\": \"authors\",\n \"contributors.txt\": \"authors\",\n \"contributors\": \"authors\",\n \".flowconfig\": \"flow\",\n \"favicon.ico\": \"favicon\",\n \"karma.conf.js\": \"karma\",\n \"karma.conf.ts\": \"karma\",\n \"karma.conf.coffee\": \"karma\",\n \"karma.config.js\": \"karma\",\n \"karma.config.ts\": \"karma\",\n \"karma-main.js\": \"karma\",\n \"karma-main.ts\": \"karma\",\n \".bithoundrc\": \"bithound\",\n \"svgo.config.js\": \"svgo\",\n \"svgo.config.cjs\": \"svgo\",\n \"svgo.config.mjs\": \"svgo\",\n \".appveyor.yml\": \"appveyor\",\n \"appveyor.yml\": \"appveyor\",\n \".travis.yml\": \"travis\",\n \".codecov.yml\": \"codecov\",\n \"codecov.yml\": \"codecov\",\n \"sonar-project.properties\": \"sonarcloud\",\n \".sonarcloud.properties\": \"sonarcloud\",\n \"sonarcloud.yaml\": \"sonarcloud\",\n \"protractor.conf.js\": \"protractor\",\n \"protractor.conf.ts\": \"protractor\",\n \"protractor.conf.coffee\": \"protractor\",\n \"protractor.config.js\": \"protractor\",\n \"protractor.config.ts\": \"protractor\",\n \"fuse.js\": \"fusebox\",\n \"procfile\": \"heroku\",\n \"procfile.windows\": \"heroku\",\n \".editorconfig\": \"editorconfig\",\n \".bowerrc\": \"bower\",\n \"bower.json\": \"bower\",\n \".eslintrc\": \"eslint\",\n \".eslintrc.json\": \"eslint\",\n \".eslintrc.jsonc\": \"eslint\",\n \".eslintrc.json5\": \"eslint\",\n \".eslintrc.yaml\": \"eslint\",\n \".eslintrc.yml\": \"eslint\",\n \".eslintrc.toml\": \"eslint\",\n \".eslintrc.js\": \"eslint\",\n \".eslintrc.mjs\": \"eslint\",\n \".eslintrc.cjs\": \"eslint\",\n \".eslintrc.ts\": \"eslint\",\n \".eslintrc.mts\": \"eslint\",\n \".eslintrc.cts\": \"eslint\",\n \".config/eslintrc\": \"eslint\",\n \".config/eslintrc.json\": \"eslint\",\n \".config/eslintrc.jsonc\": \"eslint\",\n \".config/eslintrc.json5\": \"eslint\",\n \".config/eslintrc.yaml\": \"eslint\",\n \".config/eslintrc.yml\": \"eslint\",\n \".config/eslintrc.toml\": \"eslint\",\n \".config/eslintrc.js\": \"eslint\",\n \".config/eslintrc.mjs\": \"eslint\",\n \".config/eslintrc.cjs\": \"eslint\",\n \".config/eslintrc.ts\": \"eslint\",\n \".config/eslintrc.mts\": \"eslint\",\n \".config/eslintrc.cts\": \"eslint\",\n \"eslint.config.json\": \"eslint\",\n \"eslint.config.jsonc\": \"eslint\",\n \"eslint.config.json5\": \"eslint\",\n \"eslint.config.yaml\": \"eslint\",\n \"eslint.config.yml\": \"eslint\",\n \"eslint.config.toml\": \"eslint\",\n \"eslint.config.js\": \"eslint\",\n \"eslint.config.mjs\": \"eslint\",\n \"eslint.config.cjs\": \"eslint\",\n \"eslint.config.ts\": \"eslint\",\n \"eslint.config.mts\": \"eslint\",\n \"eslint.config.cts\": \"eslint\",\n \".eslintrc-md.js\": \"eslint\",\n \".eslintrc-jsdoc.js\": \"eslint\",\n \".eslintignore\": \"eslint\",\n \".eslintcache\": \"eslint\",\n \".eslintrc.base.json\": \"eslint\",\n \"code_of_conduct.md\": \"conduct\",\n \"code_of_conduct.txt\": \"conduct\",\n \"code_of_conduct\": \"conduct\",\n \".watchmanconfig\": \"watchman\",\n \"aurelia.json\": \"aurelia\",\n \".autorc\": \"auto\",\n \"auto.config.js\": \"auto\",\n \"auto.config.ts\": \"auto\",\n \"auto-config.json\": \"auto\",\n \"auto-config.yaml\": \"auto\",\n \"auto-config.yml\": \"auto\",\n \"auto-config.ts\": \"auto\",\n \"auto-config.js\": \"auto\",\n \"mocha.opts\": \"mocha\",\n \".mocharc.yml\": \"mocha\",\n \".mocharc.yaml\": \"mocha\",\n \".mocharc.js\": \"mocha\",\n \".mocharc.json\": \"mocha\",\n \".mocharc.jsonc\": \"mocha\",\n \"jenkinsfile\": \"jenkins\",\n \"firebase.json\": \"firebase\",\n \".firebaserc\": \"firebase\",\n \"firestore.rules\": \"firebase\",\n \"firestore.indexes.json\": \"firebase\",\n \"rollup.config.js\": \"rollup\",\n \"rollup.config.mjs\": \"rollup\",\n \"rollup.config.ts\": \"rollup\",\n \"rollup-config.js\": \"rollup\",\n \"rollup-config.mjs\": \"rollup\",\n \"rollup-config.ts\": \"rollup\",\n \"rollup.config.common.js\": \"rollup\",\n \"rollup.config.common.mjs\": \"rollup\",\n \"rollup.config.common.ts\": \"rollup\",\n \"rollup.config.base.js\": \"rollup\",\n \"rollup.config.base.mjs\": \"rollup\",\n \"rollup.config.base.ts\": \"rollup\",\n \"rollup.config.prod.js\": \"rollup\",\n \"rollup.config.prod.mjs\": \"rollup\",\n \"rollup.config.prod.ts\": \"rollup\",\n \"rollup.config.dev.js\": \"rollup\",\n \"rollup.config.dev.mjs\": \"rollup\",\n \"rollup.config.dev.ts\": \"rollup\",\n \"rollup.config.prod.vendor.js\": \"rollup\",\n \"rollup.config.prod.vendor.mjs\": \"rollup\",\n \"rollup.config.prod.vendor.ts\": \"rollup\",\n \".hhconfig\": \"hack\",\n \"hardhat.config.js\": \"hardhat\",\n \"hardhat.config.ts\": \"hardhat\",\n \".stylelintrc\": \"stylelint\",\n \".stylelintrc.json\": \"stylelint\",\n \".stylelintrc.jsonc\": \"stylelint\",\n \".stylelintrc.json5\": \"stylelint\",\n \".stylelintrc.yaml\": \"stylelint\",\n \".stylelintrc.yml\": \"stylelint\",\n \".stylelintrc.toml\": \"stylelint\",\n \".stylelintrc.js\": \"stylelint\",\n \".stylelintrc.mjs\": \"stylelint\",\n \".stylelintrc.cjs\": \"stylelint\",\n \".stylelintrc.ts\": \"stylelint\",\n \".stylelintrc.mts\": \"stylelint\",\n \".stylelintrc.cts\": \"stylelint\",\n \".config/stylelintrc\": \"stylelint\",\n \".config/stylelintrc.json\": \"stylelint\",\n \".config/stylelintrc.jsonc\": \"stylelint\",\n \".config/stylelintrc.json5\": \"stylelint\",\n \".config/stylelintrc.yaml\": \"stylelint\",\n \".config/stylelintrc.yml\": \"stylelint\",\n \".config/stylelintrc.toml\": \"stylelint\",\n \".config/stylelintrc.js\": \"stylelint\",\n \".config/stylelintrc.mjs\": \"stylelint\",\n \".config/stylelintrc.cjs\": \"stylelint\",\n \".config/stylelintrc.ts\": \"stylelint\",\n \".config/stylelintrc.mts\": \"stylelint\",\n \".config/stylelintrc.cts\": \"stylelint\",\n \"stylelint.config.json\": \"stylelint\",\n \"stylelint.config.jsonc\": \"stylelint\",\n \"stylelint.config.json5\": \"stylelint\",\n \"stylelint.config.yaml\": \"stylelint\",\n \"stylelint.config.yml\": \"stylelint\",\n \"stylelint.config.toml\": \"stylelint\",\n \"stylelint.config.js\": \"stylelint\",\n \"stylelint.config.mjs\": \"stylelint\",\n \"stylelint.config.cjs\": \"stylelint\",\n \"stylelint.config.ts\": \"stylelint\",\n \"stylelint.config.mts\": \"stylelint\",\n \"stylelint.config.cts\": \"stylelint\",\n \".stylelintignore\": \"stylelint\",\n \".stylelintcache\": \"stylelint\",\n \".codeclimate.yml\": \"code-climate\",\n \".prettierrc\": \"prettier\",\n \".prettierrc.json\": \"prettier\",\n \".prettierrc.jsonc\": \"prettier\",\n \".prettierrc.json5\": \"prettier\",\n \".prettierrc.yaml\": \"prettier\",\n \".prettierrc.yml\": \"prettier\",\n \".prettierrc.toml\": \"prettier\",\n \".prettierrc.js\": \"prettier\",\n \".prettierrc.mjs\": \"prettier\",\n \".prettierrc.cjs\": \"prettier\",\n \".prettierrc.ts\": \"prettier\",\n \".prettierrc.mts\": \"prettier\",\n \".prettierrc.cts\": \"prettier\",\n \".config/prettierrc\": \"prettier\",\n \".config/prettierrc.json\": \"prettier\",\n \".config/prettierrc.jsonc\": \"prettier\",\n \".config/prettierrc.json5\": \"prettier\",\n \".config/prettierrc.yaml\": \"prettier\",\n \".config/prettierrc.yml\": \"prettier\",\n \".config/prettierrc.toml\": \"prettier\",\n \".config/prettierrc.js\": \"prettier\",\n \".config/prettierrc.mjs\": \"prettier\",\n \".config/prettierrc.cjs\": \"prettier\",\n \".config/prettierrc.ts\": \"prettier\",\n \".config/prettierrc.mts\": \"prettier\",\n \".config/prettierrc.cts\": \"prettier\",\n \"prettier.config.json\": \"prettier\",\n \"prettier.config.jsonc\": \"prettier\",\n \"prettier.config.json5\": \"prettier\",\n \"prettier.config.yaml\": \"prettier\",\n \"prettier.config.yml\": \"prettier\",\n \"prettier.config.toml\": \"prettier\",\n \"prettier.config.js\": \"prettier\",\n \"prettier.config.mjs\": \"prettier\",\n \"prettier.config.cjs\": \"prettier\",\n \"prettier.config.ts\": \"prettier\",\n \"prettier.config.mts\": \"prettier\",\n \"prettier.config.cts\": \"prettier\",\n \".prettierignore\": \"prettier\",\n \".renovaterc\": \"renovate\",\n \".renovaterc.json\": \"renovate\",\n \"renovate-config.json\": \"renovate\",\n \"renovate.json\": \"renovate\",\n \"renovate.json5\": \"renovate\",\n \"apollo.config.js\": \"apollo\",\n \"nodemon.json\": \"nodemon\",\n \"nodemon-debug.json\": \"nodemon\",\n \".hintrc\": \"webhint\",\n \"browserslist\": \"browserlist\",\n \".browserslistrc\": \"browserlist\",\n \".snyk\": \"snyk\",\n \".drone.yml\": \"drone\",\n \".sequelizerc\": \"sequelize\",\n \"gatsby-config.js\": \"gatsby\",\n \"gatsby-config.mjs\": \"gatsby\",\n \"gatsby-config.ts\": \"gatsby\",\n \"gatsby-node.js\": \"gatsby\",\n \"gatsby-node.mjs\": \"gatsby\",\n \"gatsby-node.ts\": \"gatsby\",\n \"gatsby-browser.js\": \"gatsby\",\n \"gatsby-browser.tsx\": \"gatsby\",\n \"gatsby-ssr.js\": \"gatsby\",\n \"gatsby-ssr.tsx\": \"gatsby\",\n \".wakatime-project\": \"wakatime\",\n \"circle.yml\": \"circleci\",\n \".cfignore\": \"cloudfoundry\",\n \"gruntfile.js\": \"grunt\",\n \"gruntfile.ts\": \"grunt\",\n \"gruntfile.cjs\": \"grunt\",\n \"gruntfile.cts\": \"grunt\",\n \"gruntfile.coffee\": \"grunt\",\n \"gruntfile.babel.js\": \"grunt\",\n \"gruntfile.babel.ts\": \"grunt\",\n \"gruntfile.babel.coffee\": \"grunt\",\n \"jest.config.js\": \"jest\",\n \"jest.config.cjs\": \"jest\",\n \"jest.config.mjs\": \"jest\",\n \"jest.config.ts\": \"jest\",\n \"jest.config.cts\": \"jest\",\n \"jest.config.mts\": \"jest\",\n \"jest.config.json\": \"jest\",\n \"jest.e2e.config.js\": \"jest\",\n \"jest.e2e.config.cjs\": \"jest\",\n \"jest.e2e.config.mjs\": \"jest\",\n \"jest.e2e.config.ts\": \"jest\",\n \"jest.e2e.config.cts\": \"jest\",\n \"jest.e2e.config.mts\": \"jest\",\n \"jest.e2e.config.json\": \"jest\",\n \"jest.e2e.json\": \"jest\",\n \"jest-unit.config.js\": \"jest\",\n \"jest-e2e.config.js\": \"jest\",\n \"jest-e2e.config.cjs\": \"jest\",\n \"jest-e2e.config.mjs\": \"jest\",\n \"jest-e2e.config.ts\": \"jest\",\n \"jest-e2e.config.cts\": \"jest\",\n \"jest-e2e.config.mts\": \"jest\",\n \"jest-e2e.config.json\": \"jest\",\n \"jest-e2e.json\": \"jest\",\n \"jest-github-actions-reporter.js\": \"jest\",\n \"jest.setup.js\": \"jest\",\n \"jest.setup.ts\": \"jest\",\n \"jest.json\": \"jest\",\n \".jestrc\": \"jest\",\n \".jestrc.js\": \"jest\",\n \".jestrc.json\": \"jest\",\n \"jest.teardown.js\": \"jest\",\n \"jest-preset.json\": \"jest\",\n \"jest-preset.js\": \"jest\",\n \"jest-preset.cjs\": \"jest\",\n \"jest-preset.mjs\": \"jest\",\n \"jest.preset.js\": \"jest\",\n \"jest.preset.mjs\": \"jest\",\n \"jest.preset.cjs\": \"jest\",\n \"jest.preset.json\": \"jest\",\n \"fastfile\": \"fastlane\",\n \"appfile\": \"fastlane\",\n \".helmignore\": \"helm\",\n \"wallaby.js\": \"wallaby\",\n \"wallaby.conf.js\": \"wallaby\",\n \"stencil.config.js\": \"stencil\",\n \"stencil.config.ts\": \"stencil\",\n \"makefile\": \"makefile\",\n \"gnumakefile\": \"makefile\",\n \"kbuild\": \"makefile\",\n \".releaserc\": \"semantic-release\",\n \".releaserc.json\": \"semantic-release\",\n \".releaserc.jsonc\": \"semantic-release\",\n \".releaserc.json5\": \"semantic-release\",\n \".releaserc.yaml\": \"semantic-release\",\n \".releaserc.yml\": \"semantic-release\",\n \".releaserc.toml\": \"semantic-release\",\n \".releaserc.js\": \"semantic-release\",\n \".releaserc.mjs\": \"semantic-release\",\n \".releaserc.cjs\": \"semantic-release\",\n \".releaserc.ts\": \"semantic-release\",\n \".releaserc.mts\": \"semantic-release\",\n \".releaserc.cts\": \"semantic-release\",\n \".config/releaserc\": \"semantic-release\",\n \".config/releaserc.json\": \"semantic-release\",\n \".config/releaserc.jsonc\": \"semantic-release\",\n \".config/releaserc.json5\": \"semantic-release\",\n \".config/releaserc.yaml\": \"semantic-release\",\n \".config/releaserc.yml\": \"semantic-release\",\n \".config/releaserc.toml\": \"semantic-release\",\n \".config/releaserc.js\": \"semantic-release\",\n \".config/releaserc.mjs\": \"semantic-release\",\n \".config/releaserc.cjs\": \"semantic-release\",\n \".config/releaserc.ts\": \"semantic-release\",\n \".config/releaserc.mts\": \"semantic-release\",\n \".config/releaserc.cts\": \"semantic-release\",\n \"release.config.json\": \"semantic-release\",\n \"release.config.jsonc\": \"semantic-release\",\n \"release.config.json5\": \"semantic-release\",\n \"release.config.yaml\": \"semantic-release\",\n \"release.config.yml\": \"semantic-release\",\n \"release.config.toml\": \"semantic-release\",\n \"release.config.js\": \"semantic-release\",\n \"release.config.mjs\": \"semantic-release\",\n \"release.config.cjs\": \"semantic-release\",\n \"release.config.ts\": \"semantic-release\",\n \"release.config.mts\": \"semantic-release\",\n \"release.config.cts\": \"semantic-release\",\n \"bitbucket-pipelines.yaml\": \"bitbucket\",\n \"bitbucket-pipelines.yml\": \"bitbucket\",\n \".bazelignore\": \"bazel\",\n \".bazelrc\": \"bazel\",\n \".bazelversion\": \"bazel\",\n \".gdignore\": \"godot-assets\",\n \"._sc_\": \"godot-assets\",\n \"_sc_\": \"godot-assets\",\n \"azure-pipelines.yml\": \"azure-pipelines\",\n \"azure-pipelines.yaml\": \"azure-pipelines\",\n \"azure-pipelines-main.yml\": \"azure-pipelines\",\n \"azure-pipelines-main.yaml\": \"azure-pipelines\",\n \"vagrantfile\": \"vagrant\",\n \"prisma.yml\": \"prisma\",\n \".nycrc\": \"istanbul\",\n \".nycrc.json\": \"istanbul\",\n \".nycrc.yaml\": \"istanbul\",\n \".nycrc.yml\": \"istanbul\",\n \"nyc.config.js\": \"istanbul\",\n \".istanbul.yml\": \"istanbul\",\n \"tailwind.js\": \"tailwindcss\",\n \"tailwind.ts\": \"tailwindcss\",\n \"tailwind.config.js\": \"tailwindcss\",\n \"tailwind.config.cjs\": \"tailwindcss\",\n \"tailwind.config.mjs\": \"tailwindcss\",\n \"tailwind.config.ts\": \"tailwindcss\",\n \"tailwind.config.cts\": \"tailwindcss\",\n \"tailwind.config.mts\": \"tailwindcss\",\n \"buildkite.yml\": \"buildkite\",\n \"buildkite.yaml\": \"buildkite\",\n \"netlify.json\": \"netlify\",\n \"netlify.yml\": \"netlify\",\n \"netlify.yaml\": \"netlify\",\n \"netlify.toml\": \"netlify\",\n \"svelte.config.js\": \"svelte\",\n \"svelte.config.cjs\": \"svelte\",\n \"nest-cli.json\": \"nest\",\n \".nest-cli.json\": \"nest\",\n \"nestconfig.json\": \"nest\",\n \".nestconfig.json\": \"nest\",\n \"moon.yml\": \"moon\",\n \".percy.yml\": \"percy\",\n \".gitpod.yml\": \"gitpod\",\n \"codeowners\": \"codeowners\",\n \"OWNERS\": \"codeowners\",\n \".gcloudignore\": \"gcp\",\n \".huskyrc\": \"husky\",\n \".huskyrc.json\": \"husky\",\n \".huskyrc.jsonc\": \"husky\",\n \".huskyrc.json5\": \"husky\",\n \".huskyrc.yaml\": \"husky\",\n \".huskyrc.yml\": \"husky\",\n \".huskyrc.toml\": \"husky\",\n \".huskyrc.js\": \"husky\",\n \".huskyrc.mjs\": \"husky\",\n \".huskyrc.cjs\": \"husky\",\n \".huskyrc.ts\": \"husky\",\n \".huskyrc.mts\": \"husky\",\n \".huskyrc.cts\": \"husky\",\n \".config/huskyrc\": \"husky\",\n \".config/huskyrc.json\": \"husky\",\n \".config/huskyrc.jsonc\": \"husky\",\n \".config/huskyrc.json5\": \"husky\",\n \".config/huskyrc.yaml\": \"husky\",\n \".config/huskyrc.yml\": \"husky\",\n \".config/huskyrc.toml\": \"husky\",\n \".config/huskyrc.js\": \"husky\",\n \".config/huskyrc.mjs\": \"husky\",\n \".config/huskyrc.cjs\": \"husky\",\n \".config/huskyrc.ts\": \"husky\",\n \".config/huskyrc.mts\": \"husky\",\n \".config/huskyrc.cts\": \"husky\",\n \"husky.config.json\": \"husky\",\n \"husky.config.jsonc\": \"husky\",\n \"husky.config.json5\": \"husky\",\n \"husky.config.yaml\": \"husky\",\n \"husky.config.yml\": \"husky\",\n \"husky.config.toml\": \"husky\",\n \"husky.config.js\": \"husky\",\n \"husky.config.mjs\": \"husky\",\n \"husky.config.cjs\": \"husky\",\n \"husky.config.ts\": \"husky\",\n \"husky.config.mts\": \"husky\",\n \"husky.config.cts\": \"husky\",\n \"tiltfile\": \"tilt\",\n \"capacitor.config.json\": \"capacitor\",\n \"capacitor.config.ts\": \"capacitor\",\n \".adonisrc.json\": \"adonis\",\n \"ace\": \"adonis\",\n \"meson.build\": \"meson\",\n \"meson_options.txt\": \"meson\",\n \".commitlintrc\": \"commitlint\",\n \".commitlintrc.json\": \"commitlint\",\n \".commitlintrc.jsonc\": \"commitlint\",\n \".commitlintrc.json5\": \"commitlint\",\n \".commitlintrc.yaml\": \"commitlint\",\n \".commitlintrc.yml\": \"commitlint\",\n \".commitlintrc.toml\": \"commitlint\",\n \".commitlintrc.js\": \"commitlint\",\n \".commitlintrc.mjs\": \"commitlint\",\n \".commitlintrc.cjs\": \"commitlint\",\n \".commitlintrc.ts\": \"commitlint\",\n \".commitlintrc.mts\": \"commitlint\",\n \".commitlintrc.cts\": \"commitlint\",\n \".config/commitlintrc\": \"commitlint\",\n \".config/commitlintrc.json\": \"commitlint\",\n \".config/commitlintrc.jsonc\": \"commitlint\",\n \".config/commitlintrc.json5\": \"commitlint\",\n \".config/commitlintrc.yaml\": \"commitlint\",\n \".config/commitlintrc.yml\": \"commitlint\",\n \".config/commitlintrc.toml\": \"commitlint\",\n \".config/commitlintrc.js\": \"commitlint\",\n \".config/commitlintrc.mjs\": \"commitlint\",\n \".config/commitlintrc.cjs\": \"commitlint\",\n \".config/commitlintrc.ts\": \"commitlint\",\n \".config/commitlintrc.mts\": \"commitlint\",\n \".config/commitlintrc.cts\": \"commitlint\",\n \"commitlint.config.json\": \"commitlint\",\n \"commitlint.config.jsonc\": \"commitlint\",\n \"commitlint.config.json5\": \"commitlint\",\n \"commitlint.config.yaml\": \"commitlint\",\n \"commitlint.config.yml\": \"commitlint\",\n \"commitlint.config.toml\": \"commitlint\",\n \"commitlint.config.js\": \"commitlint\",\n \"commitlint.config.mjs\": \"commitlint\",\n \"commitlint.config.cjs\": \"commitlint\",\n \"commitlint.config.ts\": \"commitlint\",\n \"commitlint.config.mts\": \"commitlint\",\n \"commitlint.config.cts\": \"commitlint\",\n \".commitlint.yaml\": \"commitlint\",\n \".commitlint.yml\": \"commitlint\",\n \".buckconfig\": \"buck\",\n \"nx.json\": \"nx\",\n \".nxignore\": \"nx\",\n \"dune\": \"dune\",\n \"dune-project\": \"dune\",\n \"dune-workspace\": \"dune\",\n \"dune-workspace.dev\": \"dune\",\n \"roadmap.md\": \"roadmap\",\n \"roadmap.txt\": \"roadmap\",\n \"timeline.md\": \"roadmap\",\n \"timeline.txt\": \"roadmap\",\n \"milestones.md\": \"roadmap\",\n \"milestones.txt\": \"roadmap\",\n \"nuget.config\": \"nuget\",\n \".nuspec\": \"nuget\",\n \"nuget.exe\": \"nuget\",\n \"stryker.conf.json\": \"stryker\",\n \"stryker.conf.js\": \"stryker\",\n \"stryker.conf.cjs\": \"stryker\",\n \"stryker.conf.mjs\": \"stryker\",\n \".stryker.conf.json\": \"stryker\",\n \".stryker.conf.js\": \"stryker\",\n \".stryker.conf.cjs\": \"stryker\",\n \".stryker.conf.mjs\": \"stryker\",\n \".modernizrrc\": \"modernizr\",\n \".modernizrrc.js\": \"modernizr\",\n \".modernizrrc.json\": \"modernizr\",\n \".slugignore\": \"slug\",\n \"stitches.config.js\": \"stitches\",\n \"stitches.config.ts\": \"stitches\",\n \"nginx.conf\": \"nginx\",\n \".mcattributes\": \"minecraft\",\n \".mcdefinitions\": \"minecraft\",\n \".mcignore\": \"minecraft\",\n \".replit\": \"replit\",\n \"snowpack.config.js\": \"snowpack\",\n \"snowpack.config.cjs\": \"snowpack\",\n \"snowpack.config.mjs\": \"snowpack\",\n \"snowpack.config.ts\": \"snowpack\",\n \"snowpack.config.cts\": \"snowpack\",\n \"snowpack.config.mts\": \"snowpack\",\n \"snowpack.deps.json\": \"snowpack\",\n \"snowpack.config.json\": \"snowpack\",\n \"quasar.conf.js\": \"quasar\",\n \"quasar.config.js\": \"quasar\",\n \"dependabot.yml\": \"dependabot\",\n \"dependabot.yaml\": \"dependabot\",\n \"vite.config.js\": \"vite\",\n \"vite.config.mjs\": \"vite\",\n \"vite.config.cjs\": \"vite\",\n \"vite.config.ts\": \"vite\",\n \"vite.config.cts\": \"vite\",\n \"vite.config.mts\": \"vite\",\n \"vitest.config.ts\": \"vitest\",\n \"vitest.config.mts\": \"vitest\",\n \"vitest.config.cts\": \"vitest\",\n \"vitest.config.js\": \"vitest\",\n \"vitest.config.mjs\": \"vitest\",\n \"vitest.config.cjs\": \"vitest\",\n \"vitest.workspace.ts\": \"vitest\",\n \"vitest.workspace.mts\": \"vitest\",\n \"vitest.workspace.cts\": \"vitest\",\n \"vitest.workspace.js\": \"vitest\",\n \"vitest.workspace.mjs\": \"vitest\",\n \"vitest.workspace.cjs\": \"vitest\",\n \"lerna.json\": \"lerna\",\n \"windi.config.js\": \"windicss\",\n \"windi.config.cjs\": \"windicss\",\n \"windi.config.ts\": \"windicss\",\n \"windi.config.cts\": \"windicss\",\n \"windi.config.json\": \"windicss\",\n \".textlintrc\": \"textlint\",\n \".textlintrc.js\": \"textlint\",\n \".textlintrc.json\": \"textlint\",\n \".textlintrc.yml\": \"textlint\",\n \".textlintrc.yaml\": \"textlint\",\n \"vpkg.json\": \"vlang\",\n \"v.mod\": \"vlang\",\n \".sentryclirc\": \"sentry\",\n \".phpunit.result.cache\": \"phpunit\",\n \".phpunit-watcher.yml\": \"phpunit\",\n \"phpunit.xml\": \"phpunit\",\n \"phpunit.xml.dist\": \"phpunit\",\n \"phpunit-watcher.yml\": \"phpunit\",\n \"phpunit-watcher.yml.dist\": \"phpunit\",\n \".php_cs\": \"php-cs-fixer\",\n \".php_cs.dist\": \"php-cs-fixer\",\n \".php_cs.php\": \"php-cs-fixer\",\n \".php_cs.dist.php\": \"php-cs-fixer\",\n \".php-cs-fixer.php\": \"php-cs-fixer\",\n \".php-cs-fixer.dist.php\": \"php-cs-fixer\",\n \"robots.txt\": \"robots\",\n \"tsconfig.json\": \"tsconfig\",\n \"tsconfig.app.json\": \"tsconfig\",\n \"tsconfig.editor.json\": \"tsconfig\",\n \"tsconfig.spec.json\": \"tsconfig\",\n \"tsconfig.base.json\": \"tsconfig\",\n \"tsconfig.build.json\": \"tsconfig\",\n \"tsconfig.eslint.json\": \"tsconfig\",\n \"tsconfig.lib.json\": \"tsconfig\",\n \"tsconfig.lib.prod.json\": \"tsconfig\",\n \"tsconfig.node.json\": \"tsconfig\",\n \"tsconfig.test.json\": \"tsconfig\",\n \"tsconfig.e2e.json\": \"tsconfig\",\n \"tsconfig.web.json\": \"tsconfig\",\n \"tsconfig.webworker.json\": \"tsconfig\",\n \"tsconfig.worker.json\": \"tsconfig\",\n \"tsconfig.config.json\": \"tsconfig\",\n \"tsconfig.vitest.json\": \"tsconfig\",\n \"tsconfig.cjs.json\": \"tsconfig\",\n \"tsconfig.esm.json\": \"tsconfig\",\n \"tsconfig.mjs.json\": \"tsconfig\",\n \"tsconfig.doc.json\": \"tsconfig\",\n \"tsconfig.paths.json\": \"tsconfig\",\n \"tsconfig.main.json\": \"tsconfig\",\n \"tsconfig.renderer.json\": \"tsconfig\",\n \"tsconfig.server.json\": \"tsconfig\",\n \"tauri.conf.json\": \"tauri\",\n \"tauri.config.json\": \"tauri\",\n \"tauri.linux.conf.json\": \"tauri\",\n \"tauri.windows.conf.json\": \"tauri\",\n \"tauri.macos.conf.json\": \"tauri\",\n \".taurignore\": \"tauri\",\n \"jsconfig.json\": \"jsconfig\",\n \"maven.config\": \"maven\",\n \"jvm.config\": \"maven\",\n \"pom.xml\": \"maven\",\n \"serverless.yml\": \"serverless\",\n \"serverless.yaml\": \"serverless\",\n \"serverless.json\": \"serverless\",\n \"serverless.js\": \"serverless\",\n \"serverless.ts\": \"serverless\",\n \"supabase.js\": \"supabase\",\n \"supabase.py\": \"supabase\",\n \".ember-cli\": \"ember\",\n \".ember-cli.js\": \"ember\",\n \"ember-cli-builds.js\": \"ember\",\n \"horusec-config.json\": \"horusec\",\n \"poetry.lock\": \"poetry\",\n \"pdm.lock\": \"pdm\",\n \"pdm.toml\": \"pdm\",\n \".pdm-python\": \"pdm\",\n \".parcelrc\": \"parcel\",\n \".astylerc\": \"astyle\",\n \".lighthouserc.js\": \"lighthouse\",\n \"lighthouserc.js\": \"lighthouse\",\n \".lighthouserc.cjs\": \"lighthouse\",\n \"lighthouserc.cjs\": \"lighthouse\",\n \".lighthouserc.json\": \"lighthouse\",\n \"lighthouserc.json\": \"lighthouse\",\n \".lighthouserc.yml\": \"lighthouse\",\n \"lighthouserc.yml\": \"lighthouse\",\n \".lighthouserc.yaml\": \"lighthouse\",\n \"lighthouserc.yaml\": \"lighthouse\",\n \".svgrrc\": \"svgr\",\n \".svgrrc.json\": \"svgr\",\n \".svgrrc.jsonc\": \"svgr\",\n \".svgrrc.json5\": \"svgr\",\n \".svgrrc.yaml\": \"svgr\",\n \".svgrrc.yml\": \"svgr\",\n \".svgrrc.toml\": \"svgr\",\n \".svgrrc.js\": \"svgr\",\n \".svgrrc.mjs\": \"svgr\",\n \".svgrrc.cjs\": \"svgr\",\n \".svgrrc.ts\": \"svgr\",\n \".svgrrc.mts\": \"svgr\",\n \".svgrrc.cts\": \"svgr\",\n \".config/svgrrc\": \"svgr\",\n \".config/svgrrc.json\": \"svgr\",\n \".config/svgrrc.jsonc\": \"svgr\",\n \".config/svgrrc.json5\": \"svgr\",\n \".config/svgrrc.yaml\": \"svgr\",\n \".config/svgrrc.yml\": \"svgr\",\n \".config/svgrrc.toml\": \"svgr\",\n \".config/svgrrc.js\": \"svgr\",\n \".config/svgrrc.mjs\": \"svgr\",\n \".config/svgrrc.cjs\": \"svgr\",\n \".config/svgrrc.ts\": \"svgr\",\n \".config/svgrrc.mts\": \"svgr\",\n \".config/svgrrc.cts\": \"svgr\",\n \"svgr.config.json\": \"svgr\",\n \"svgr.config.jsonc\": \"svgr\",\n \"svgr.config.json5\": \"svgr\",\n \"svgr.config.yaml\": \"svgr\",\n \"svgr.config.yml\": \"svgr\",\n \"svgr.config.toml\": \"svgr\",\n \"svgr.config.js\": \"svgr\",\n \"svgr.config.mjs\": \"svgr\",\n \"svgr.config.cjs\": \"svgr\",\n \"svgr.config.ts\": \"svgr\",\n \"svgr.config.mts\": \"svgr\",\n \"svgr.config.cts\": \"svgr\",\n \"rome.json\": \"rome\",\n \"cypress.json\": \"cypress\",\n \"cypress.env.json\": \"cypress\",\n \"cypress.config.ts\": \"cypress\",\n \"cypress.config.js\": \"cypress\",\n \"cypress.config.cjs\": \"cypress\",\n \"cypress.config.mjs\": \"cypress\",\n \"plopfile.js\": \"plop\",\n \"plopfile.cjs\": \"plop\",\n \"plopfile.mjs\": \"plop\",\n \"plopfile.ts\": \"plop\",\n \".tobimake\": \"tobimake\",\n \"gleam.toml\": \"gleam\",\n \"pnpm-lock.yaml\": \"pnpm\",\n \"pnpm-workspace.yaml\": \"pnpm\",\n \".pnpmfile.cjs\": \"pnpm\",\n \"gridsome.config.js\": \"gridsome\",\n \"gridsome.server.js\": \"gridsome\",\n \".steadybit.yml\": \"steadybit\",\n \"steadybit.yml\": \"steadybit\",\n \".steadybit.yaml\": \"steadybit\",\n \"steadybit.yaml\": \"steadybit\",\n \"Caddyfile\": \"caddy\",\n \"openapi.json\": \"openapi\",\n \"openapi.yml\": \"openapi\",\n \"openapi.yaml\": \"openapi\",\n \"swagger.json\": \"swagger\",\n \"swagger.yml\": \"swagger\",\n \"swagger.yaml\": \"swagger\",\n \"bun.lockb\": \"bun\",\n \"bunfig.toml\": \"bun\",\n \".nano-staged.js\": \"nano-staged\",\n \"nano-staged.js\": \"nano-staged\",\n \".nano-staged.cjs\": \"nano-staged\",\n \"nano-staged.cjs\": \"nano-staged\",\n \".nano-staged.mjs\": \"nano-staged\",\n \"nano-staged.mjs\": \"nano-staged\",\n \".nano-staged.json\": \"nano-staged\",\n \"nano-staged.json\": \"nano-staged\",\n \".nanostagedrc\": \"nano-staged\",\n \"knip.json\": \"knip\",\n \"knip.jsonc\": \"knip\",\n \".knip.json\": \"knip\",\n \".knip.jsonc\": \"knip\",\n \"knip.ts\": \"knip\",\n \"knip.js\": \"knip\",\n \"knip.config.ts\": \"knip\",\n \"knip.config.js\": \"knip\",\n \"taskfile.yml\": \"taskfile\",\n \"taskfile.yaml\": \"taskfile\",\n \"taskfile.dist.yml\": \"taskfile\",\n \"taskfile.dist.yaml\": \"taskfile\",\n \".cracorc\": \"craco\",\n \".cracorc.json\": \"craco\",\n \".cracorc.jsonc\": \"craco\",\n \".cracorc.json5\": \"craco\",\n \".cracorc.yaml\": \"craco\",\n \".cracorc.yml\": \"craco\",\n \".cracorc.toml\": \"craco\",\n \".cracorc.js\": \"craco\",\n \".cracorc.mjs\": \"craco\",\n \".cracorc.cjs\": \"craco\",\n \".cracorc.ts\": \"craco\",\n \".cracorc.mts\": \"craco\",\n \".cracorc.cts\": \"craco\",\n \".config/cracorc\": \"craco\",\n \".config/cracorc.json\": \"craco\",\n \".config/cracorc.jsonc\": \"craco\",\n \".config/cracorc.json5\": \"craco\",\n \".config/cracorc.yaml\": \"craco\",\n \".config/cracorc.yml\": \"craco\",\n \".config/cracorc.toml\": \"craco\",\n \".config/cracorc.js\": \"craco\",\n \".config/cracorc.mjs\": \"craco\",\n \".config/cracorc.cjs\": \"craco\",\n \".config/cracorc.ts\": \"craco\",\n \".config/cracorc.mts\": \"craco\",\n \".config/cracorc.cts\": \"craco\",\n \"craco.config.json\": \"craco\",\n \"craco.config.jsonc\": \"craco\",\n \"craco.config.json5\": \"craco\",\n \"craco.config.yaml\": \"craco\",\n \"craco.config.yml\": \"craco\",\n \"craco.config.toml\": \"craco\",\n \"craco.config.js\": \"craco\",\n \"craco.config.mjs\": \"craco\",\n \"craco.config.cjs\": \"craco\",\n \"craco.config.ts\": \"craco\",\n \"craco.config.mts\": \"craco\",\n \"craco.config.cts\": \"craco\",\n \".hg\": \"mercurial\",\n \".hgignore\": \"mercurial\",\n \".hgflow\": \"mercurial\",\n \".hgrc\": \"mercurial\",\n \"hgrc\": \"mercurial\",\n \"mercurial.ini\": \"mercurial\",\n \"deno.json\": \"deno\",\n \"deno.jsonc\": \"deno\",\n \"deno.lock\": \"deno\",\n \"plastic.branchexplorer\": \"plastic\",\n \"plastic.selector\": \"plastic\",\n \"plastic.wktree\": \"plastic\",\n \"plastic.workspace\": \"plastic\",\n \"plastic.workspaces\": \"plastic\",\n \"uno.config.js\": \"unocss\",\n \"uno.config.mjs\": \"unocss\",\n \"uno.config.ts\": \"unocss\",\n \"uno.config.mts\": \"unocss\",\n \"unocss.config.js\": \"unocss\",\n \"unocss.config.mjs\": \"unocss\",\n \"unocss.config.ts\": \"unocss\",\n \"unocss.config.mts\": \"unocss\",\n \".mincloudrc\": \"ifanr-cloud\",\n \"concourse.yml\": \"concourse\",\n \".syncpackrc\": \"syncpack\",\n \".syncpackrc.json\": \"syncpack\",\n \".syncpackrc.jsonc\": \"syncpack\",\n \".syncpackrc.json5\": \"syncpack\",\n \".syncpackrc.yaml\": \"syncpack\",\n \".syncpackrc.yml\": \"syncpack\",\n \".syncpackrc.toml\": \"syncpack\",\n \".syncpackrc.js\": \"syncpack\",\n \".syncpackrc.mjs\": \"syncpack\",\n \".syncpackrc.cjs\": \"syncpack\",\n \".syncpackrc.ts\": \"syncpack\",\n \".syncpackrc.mts\": \"syncpack\",\n \".syncpackrc.cts\": \"syncpack\",\n \".config/syncpackrc\": \"syncpack\",\n \".config/syncpackrc.json\": \"syncpack\",\n \".config/syncpackrc.jsonc\": \"syncpack\",\n \".config/syncpackrc.json5\": \"syncpack\",\n \".config/syncpackrc.yaml\": \"syncpack\",\n \".config/syncpackrc.yml\": \"syncpack\",\n \".config/syncpackrc.toml\": \"syncpack\",\n \".config/syncpackrc.js\": \"syncpack\",\n \".config/syncpackrc.mjs\": \"syncpack\",\n \".config/syncpackrc.cjs\": \"syncpack\",\n \".config/syncpackrc.ts\": \"syncpack\",\n \".config/syncpackrc.mts\": \"syncpack\",\n \".config/syncpackrc.cts\": \"syncpack\",\n \"syncpack.config.json\": \"syncpack\",\n \"syncpack.config.jsonc\": \"syncpack\",\n \"syncpack.config.json5\": \"syncpack\",\n \"syncpack.config.yaml\": \"syncpack\",\n \"syncpack.config.yml\": \"syncpack\",\n \"syncpack.config.toml\": \"syncpack\",\n \"syncpack.config.js\": \"syncpack\",\n \"syncpack.config.mjs\": \"syncpack\",\n \"syncpack.config.cjs\": \"syncpack\",\n \"syncpack.config.ts\": \"syncpack\",\n \"syncpack.config.mts\": \"syncpack\",\n \"syncpack.config.cts\": \"syncpack\",\n \"werf.yaml\": \"werf\",\n \"werf.yml\": \"werf\",\n \"werf-giterminism.yaml\": \"werf\",\n \"werf-giterminism.yml\": \"werf\",\n \"panda.config.ts\": \"panda\",\n \"panda.config.js\": \"panda\",\n \"panda.config.mjs\": \"panda\",\n \"panda.config.mts\": \"panda\",\n \"panda.config.cjs\": \"panda\",\n \"biome.json\": \"biome\",\n \"esbuild.js\": \"esbuild\",\n \"esbuild.ts\": \"esbuild\",\n \"esbuild.cjs\": \"esbuild\",\n \"esbuild.mjs\": \"esbuild\",\n \"esbuild.config.js\": \"esbuild\",\n \"esbuild.config.ts\": \"esbuild\",\n \"esbuild.config.cjs\": \"esbuild\",\n \"esbuild.config.mjs\": \"esbuild\",\n \".puppeteerrc\": \"puppeteer\",\n \".puppeteerrc.json\": \"puppeteer\",\n \".puppeteerrc.jsonc\": \"puppeteer\",\n \".puppeteerrc.json5\": \"puppeteer\",\n \".puppeteerrc.yaml\": \"puppeteer\",\n \".puppeteerrc.yml\": \"puppeteer\",\n \".puppeteerrc.toml\": \"puppeteer\",\n \".puppeteerrc.js\": \"puppeteer\",\n \".puppeteerrc.mjs\": \"puppeteer\",\n \".puppeteerrc.cjs\": \"puppeteer\",\n \".puppeteerrc.ts\": \"puppeteer\",\n \".puppeteerrc.mts\": \"puppeteer\",\n \".puppeteerrc.cts\": \"puppeteer\",\n \".config/puppeteerrc\": \"puppeteer\",\n \".config/puppeteerrc.json\": \"puppeteer\",\n \".config/puppeteerrc.jsonc\": \"puppeteer\",\n \".config/puppeteerrc.json5\": \"puppeteer\",\n \".config/puppeteerrc.yaml\": \"puppeteer\",\n \".config/puppeteerrc.yml\": \"puppeteer\",\n \".config/puppeteerrc.toml\": \"puppeteer\",\n \".config/puppeteerrc.js\": \"puppeteer\",\n \".config/puppeteerrc.mjs\": \"puppeteer\",\n \".config/puppeteerrc.cjs\": \"puppeteer\",\n \".config/puppeteerrc.ts\": \"puppeteer\",\n \".config/puppeteerrc.mts\": \"puppeteer\",\n \".config/puppeteerrc.cts\": \"puppeteer\",\n \"puppeteer.config.json\": \"puppeteer\",\n \"puppeteer.config.jsonc\": \"puppeteer\",\n \"puppeteer.config.json5\": \"puppeteer\",\n \"puppeteer.config.yaml\": \"puppeteer\",\n \"puppeteer.config.yml\": \"puppeteer\",\n \"puppeteer.config.toml\": \"puppeteer\",\n \"puppeteer.config.js\": \"puppeteer\",\n \"puppeteer.config.mjs\": \"puppeteer\",\n \"puppeteer.config.cjs\": \"puppeteer\",\n \"puppeteer.config.ts\": \"puppeteer\",\n \"puppeteer.config.mts\": \"puppeteer\",\n \"puppeteer.config.cts\": \"puppeteer\",\n \"PklProject\": \"pkl\",\n \"PklProject.deps.json\": \"pkl\",\n \"k8s.yml\": \"kubernetes\",\n \"k8s.yaml\": \"kubernetes\",\n \"kubernetes.yml\": \"kubernetes\",\n \"kubernetes.yaml\": \"kubernetes\",\n \".k8s.yml\": \"kubernetes\",\n \".k8s.yaml\": \"kubernetes\"\n },\n \"folderNames\": {\n \"bot\": \"folder-robot\",\n \".bot\": \"folder-robot\",\n \"_bot\": \"folder-robot\",\n \"__bot__\": \"folder-robot\",\n \"robot\": \"folder-robot\",\n \".robot\": \"folder-robot\",\n \"_robot\": \"folder-robot\",\n \"__robot__\": \"folder-robot\",\n \"src\": \"folder-src\",\n \".src\": \"folder-src\",\n \"_src\": \"folder-src\",\n \"__src__\": \"folder-src\",\n \"srcs\": \"folder-src\",\n \".srcs\": \"folder-src\",\n \"_srcs\": \"folder-src\",\n \"__srcs__\": \"folder-src\",\n \"source\": \"folder-src\",\n \".source\": \"folder-src\",\n \"_source\": \"folder-src\",\n \"__source__\": \"folder-src\",\n \"sources\": \"folder-src\",\n \".sources\": \"folder-src\",\n \"_sources\": \"folder-src\",\n \"__sources__\": \"folder-src\",\n \"code\": \"folder-src\",\n \".code\": \"folder-src\",\n \"_code\": \"folder-src\",\n \"__code__\": \"folder-src\",\n \"dist\": \"folder-dist\",\n \".dist\": \"folder-dist\",\n \"_dist\": \"folder-dist\",\n \"__dist__\": \"folder-dist\",\n \"out\": \"folder-dist\",\n \".out\": \"folder-dist\",\n \"_out\": \"folder-dist\",\n \"__out__\": \"folder-dist\",\n \"build\": \"folder-dist\",\n \".build\": \"folder-dist\",\n \"_build\": \"folder-dist\",\n \"__build__\": \"folder-dist\",\n \"release\": \"folder-dist\",\n \".release\": \"folder-dist\",\n \"_release\": \"folder-dist\",\n \"__release__\": \"folder-dist\",\n \"bin\": \"folder-dist\",\n \".bin\": \"folder-dist\",\n \"_bin\": \"folder-dist\",\n \"__bin__\": \"folder-dist\",\n \"css\": \"folder-css\",\n \".css\": \"folder-css\",\n \"_css\": \"folder-css\",\n \"__css__\": \"folder-css\",\n \"stylesheet\": \"folder-css\",\n \".stylesheet\": \"folder-css\",\n \"_stylesheet\": \"folder-css\",\n \"__stylesheet__\": \"folder-css\",\n \"stylesheets\": \"folder-css\",\n \".stylesheets\": \"folder-css\",\n \"_stylesheets\": \"folder-css\",\n \"__stylesheets__\": \"folder-css\",\n \"style\": \"folder-css\",\n \".style\": \"folder-css\",\n \"_style\": \"folder-css\",\n \"__style__\": \"folder-css\",\n \"styles\": \"folder-css\",\n \".styles\": \"folder-css\",\n \"_styles\": \"folder-css\",\n \"__styles__\": \"folder-css\",\n \"sass\": \"folder-sass\",\n \".sass\": \"folder-sass\",\n \"_sass\": \"folder-sass\",\n \"__sass__\": \"folder-sass\",\n \"scss\": \"folder-sass\",\n \".scss\": \"folder-sass\",\n \"_scss\": \"folder-sass\",\n \"__scss__\": \"folder-sass\",\n \"tv\": \"folder-television\",\n \".tv\": \"folder-television\",\n \"_tv\": \"folder-television\",\n \"__tv__\": \"folder-television\",\n \"television\": \"folder-television\",\n \".television\": \"folder-television\",\n \"_television\": \"folder-television\",\n \"__television__\": \"folder-television\",\n \"desktop\": \"folder-desktop\",\n \".desktop\": \"folder-desktop\",\n \"_desktop\": \"folder-desktop\",\n \"__desktop__\": \"folder-desktop\",\n \"console\": \"folder-console\",\n \".console\": \"folder-console\",\n \"_console\": \"folder-console\",\n \"__console__\": \"folder-console\",\n \"images\": \"folder-images\",\n \".images\": \"folder-images\",\n \"_images\": \"folder-images\",\n \"__images__\": \"folder-images\",\n \"image\": \"folder-images\",\n \".image\": \"folder-images\",\n \"_image\": \"folder-images\",\n \"__image__\": \"folder-images\",\n \"imgs\": \"folder-images\",\n \".imgs\": \"folder-images\",\n \"_imgs\": \"folder-images\",\n \"__imgs__\": \"folder-images\",\n \"img\": \"folder-images\",\n \".img\": \"folder-images\",\n \"_img\": \"folder-images\",\n \"__img__\": \"folder-images\",\n \"icons\": \"folder-images\",\n \".icons\": \"folder-images\",\n \"_icons\": \"folder-images\",\n \"__icons__\": \"folder-images\",\n \"icon\": \"folder-images\",\n \".icon\": \"folder-images\",\n \"_icon\": \"folder-images\",\n \"__icon__\": \"folder-images\",\n \"icos\": \"folder-images\",\n \".icos\": \"folder-images\",\n \"_icos\": \"folder-images\",\n \"__icos__\": \"folder-images\",\n \"ico\": \"folder-images\",\n \".ico\": \"folder-images\",\n \"_ico\": \"folder-images\",\n \"__ico__\": \"folder-images\",\n \"figures\": \"folder-images\",\n \".figures\": \"folder-images\",\n \"_figures\": \"folder-images\",\n \"__figures__\": \"folder-images\",\n \"figure\": \"folder-images\",\n \".figure\": \"folder-images\",\n \"_figure\": \"folder-images\",\n \"__figure__\": \"folder-images\",\n \"figs\": \"folder-images\",\n \".figs\": \"folder-images\",\n \"_figs\": \"folder-images\",\n \"__figs__\": \"folder-images\",\n \"fig\": \"folder-images\",\n \".fig\": \"folder-images\",\n \"_fig\": \"folder-images\",\n \"__fig__\": \"folder-images\",\n \"screenshot\": \"folder-images\",\n \".screenshot\": \"folder-images\",\n \"_screenshot\": \"folder-images\",\n \"__screenshot__\": \"folder-images\",\n \"screenshots\": \"folder-images\",\n \".screenshots\": \"folder-images\",\n \"_screenshots\": \"folder-images\",\n \"__screenshots__\": \"folder-images\",\n \"screengrab\": \"folder-images\",\n \".screengrab\": \"folder-images\",\n \"_screengrab\": \"folder-images\",\n \"__screengrab__\": \"folder-images\",\n \"screengrabs\": \"folder-images\",\n \".screengrabs\": \"folder-images\",\n \"_screengrabs\": \"folder-images\",\n \"__screengrabs__\": \"folder-images\",\n \"pic\": \"folder-images\",\n \".pic\": \"folder-images\",\n \"_pic\": \"folder-images\",\n \"__pic__\": \"folder-images\",\n \"pics\": \"folder-images\",\n \".pics\": \"folder-images\",\n \"_pics\": \"folder-images\",\n \"__pics__\": \"folder-images\",\n \"picture\": \"folder-images\",\n \".picture\": \"folder-images\",\n \"_picture\": \"folder-images\",\n \"__picture__\": \"folder-images\",\n \"pictures\": \"folder-images\",\n \".pictures\": \"folder-images\",\n \"_pictures\": \"folder-images\",\n \"__pictures__\": \"folder-images\",\n \"photo\": \"folder-images\",\n \".photo\": \"folder-images\",\n \"_photo\": \"folder-images\",\n \"__photo__\": \"folder-images\",\n \"photos\": \"folder-images\",\n \".photos\": \"folder-images\",\n \"_photos\": \"folder-images\",\n \"__photos__\": \"folder-images\",\n \"photograph\": \"folder-images\",\n \".photograph\": \"folder-images\",\n \"_photograph\": \"folder-images\",\n \"__photograph__\": \"folder-images\",\n \"photographs\": \"folder-images\",\n \".photographs\": \"folder-images\",\n \"_photographs\": \"folder-images\",\n \"__photographs__\": \"folder-images\",\n \"script\": \"folder-scripts\",\n \".script\": \"folder-scripts\",\n \"_script\": \"folder-scripts\",\n \"__script__\": \"folder-scripts\",\n \"scripts\": \"folder-scripts\",\n \".scripts\": \"folder-scripts\",\n \"_scripts\": \"folder-scripts\",\n \"__scripts__\": \"folder-scripts\",\n \"scripting\": \"folder-scripts\",\n \".scripting\": \"folder-scripts\",\n \"_scripting\": \"folder-scripts\",\n \"__scripting__\": \"folder-scripts\",\n \"node_modules\": \"folder-node\",\n \".node_modules\": \"folder-node\",\n \"_node_modules\": \"folder-node\",\n \"__node_modules__\": \"folder-node\",\n \"js\": \"folder-javascript\",\n \".js\": \"folder-javascript\",\n \"_js\": \"folder-javascript\",\n \"__js__\": \"folder-javascript\",\n \"javascript\": \"folder-javascript\",\n \".javascript\": \"folder-javascript\",\n \"_javascript\": \"folder-javascript\",\n \"__javascript__\": \"folder-javascript\",\n \"javascripts\": \"folder-javascript\",\n \".javascripts\": \"folder-javascript\",\n \"_javascripts\": \"folder-javascript\",\n \"__javascripts__\": \"folder-javascript\",\n \"json\": \"folder-json\",\n \".json\": \"folder-json\",\n \"_json\": \"folder-json\",\n \"__json__\": \"folder-json\",\n \"jsons\": \"folder-json\",\n \".jsons\": \"folder-json\",\n \"_jsons\": \"folder-json\",\n \"__jsons__\": \"folder-json\",\n \"font\": \"folder-font\",\n \".font\": \"folder-font\",\n \"_font\": \"folder-font\",\n \"__font__\": \"folder-font\",\n \"fonts\": \"folder-font\",\n \".fonts\": \"folder-font\",\n \"_fonts\": \"folder-font\",\n \"__fonts__\": \"folder-font\",\n \"bower_components\": \"folder-bower\",\n \".bower_components\": \"folder-bower\",\n \"_bower_components\": \"folder-bower\",\n \"__bower_components__\": \"folder-bower\",\n \"test\": \"folder-test\",\n \".test\": \"folder-test\",\n \"_test\": \"folder-test\",\n \"__test__\": \"folder-test\",\n \"tests\": \"folder-test\",\n \".tests\": \"folder-test\",\n \"_tests\": \"folder-test\",\n \"__tests__\": \"folder-test\",\n \"testing\": \"folder-test\",\n \".testing\": \"folder-test\",\n \"_testing\": \"folder-test\",\n \"__testing__\": \"folder-test\",\n \"snapshots\": \"folder-test\",\n \".snapshots\": \"folder-test\",\n \"_snapshots\": \"folder-test\",\n \"__snapshots__\": \"folder-test\",\n \"spec\": \"folder-test\",\n \".spec\": \"folder-test\",\n \"_spec\": \"folder-test\",\n \"__spec__\": \"folder-test\",\n \"specs\": \"folder-test\",\n \".specs\": \"folder-test\",\n \"_specs\": \"folder-test\",\n \"__specs__\": \"folder-test\",\n \"jinja\": \"folder-jinja\",\n \".jinja\": \"folder-jinja\",\n \"_jinja\": \"folder-jinja\",\n \"__jinja__\": \"folder-jinja\",\n \"jinja2\": \"folder-jinja\",\n \".jinja2\": \"folder-jinja\",\n \"_jinja2\": \"folder-jinja\",\n \"__jinja2__\": \"folder-jinja\",\n \"j2\": \"folder-jinja\",\n \".j2\": \"folder-jinja\",\n \"_j2\": \"folder-jinja\",\n \"__j2__\": \"folder-jinja\",\n \"markdown\": \"folder-markdown\",\n \".markdown\": \"folder-markdown\",\n \"_markdown\": \"folder-markdown\",\n \"__markdown__\": \"folder-markdown\",\n \"md\": \"folder-markdown\",\n \".md\": \"folder-markdown\",\n \"_md\": \"folder-markdown\",\n \"__md__\": \"folder-markdown\",\n \"pdm-plugins\": \"folder-pdm\",\n \".pdm-plugins\": \"folder-pdm\",\n \"_pdm-plugins\": \"folder-pdm\",\n \"__pdm-plugins__\": \"folder-pdm\",\n \"pdm-build\": \"folder-pdm\",\n \".pdm-build\": \"folder-pdm\",\n \"_pdm-build\": \"folder-pdm\",\n \"__pdm-build__\": \"folder-pdm\",\n \"php\": \"folder-php\",\n \".php\": \"folder-php\",\n \"_php\": \"folder-php\",\n \"__php__\": \"folder-php\",\n \"phpmailer\": \"folder-phpmailer\",\n \".phpmailer\": \"folder-phpmailer\",\n \"_phpmailer\": \"folder-phpmailer\",\n \"__phpmailer__\": \"folder-phpmailer\",\n \"sublime\": \"folder-sublime\",\n \".sublime\": \"folder-sublime\",\n \"_sublime\": \"folder-sublime\",\n \"__sublime__\": \"folder-sublime\",\n \"doc\": \"folder-docs\",\n \".doc\": \"folder-docs\",\n \"_doc\": \"folder-docs\",\n \"__doc__\": \"folder-docs\",\n \"docs\": \"folder-docs\",\n \".docs\": \"folder-docs\",\n \"_docs\": \"folder-docs\",\n \"__docs__\": \"folder-docs\",\n \"document\": \"folder-docs\",\n \".document\": \"folder-docs\",\n \"_document\": \"folder-docs\",\n \"__document__\": \"folder-docs\",\n \"documents\": \"folder-docs\",\n \".documents\": \"folder-docs\",\n \"_documents\": \"folder-docs\",\n \"__documents__\": \"folder-docs\",\n \"documentation\": \"folder-docs\",\n \".documentation\": \"folder-docs\",\n \"_documentation\": \"folder-docs\",\n \"__documentation__\": \"folder-docs\",\n \"post\": \"folder-docs\",\n \".post\": \"folder-docs\",\n \"_post\": \"folder-docs\",\n \"__post__\": \"folder-docs\",\n \"posts\": \"folder-docs\",\n \".posts\": \"folder-docs\",\n \"_posts\": \"folder-docs\",\n \"__posts__\": \"folder-docs\",\n \"article\": \"folder-docs\",\n \".article\": \"folder-docs\",\n \"_article\": \"folder-docs\",\n \"__article__\": \"folder-docs\",\n \"articles\": \"folder-docs\",\n \".articles\": \"folder-docs\",\n \"_articles\": \"folder-docs\",\n \"__articles__\": \"folder-docs\",\n \"git\": \"folder-git\",\n \".git\": \"folder-git\",\n \"_git\": \"folder-git\",\n \"__git__\": \"folder-git\",\n \"patches\": \"folder-git\",\n \".patches\": \"folder-git\",\n \"_patches\": \"folder-git\",\n \"__patches__\": \"folder-git\",\n \"githooks\": \"folder-git\",\n \".githooks\": \"folder-git\",\n \"_githooks\": \"folder-git\",\n \"__githooks__\": \"folder-git\",\n \"submodules\": \"folder-git\",\n \".submodules\": \"folder-git\",\n \"_submodules\": \"folder-git\",\n \"__submodules__\": \"folder-git\",\n \"github\": \"folder-github\",\n \".github\": \"folder-github\",\n \"_github\": \"folder-github\",\n \"__github__\": \"folder-github\",\n \"gitlab\": \"folder-gitlab\",\n \".gitlab\": \"folder-gitlab\",\n \"_gitlab\": \"folder-gitlab\",\n \"__gitlab__\": \"folder-gitlab\",\n \"vscode\": \"folder-vscode\",\n \".vscode\": \"folder-vscode\",\n \"_vscode\": \"folder-vscode\",\n \"__vscode__\": \"folder-vscode\",\n \"vscode-test\": \"folder-vscode\",\n \".vscode-test\": \"folder-vscode\",\n \"_vscode-test\": \"folder-vscode\",\n \"__vscode-test__\": \"folder-vscode\",\n \"view\": \"folder-views\",\n \".view\": \"folder-views\",\n \"_view\": \"folder-views\",\n \"__view__\": \"folder-views\",\n \"views\": \"folder-views\",\n \".views\": \"folder-views\",\n \"_views\": \"folder-views\",\n \"__views__\": \"folder-views\",\n \"screen\": \"folder-views\",\n \".screen\": \"folder-views\",\n \"_screen\": \"folder-views\",\n \"__screen__\": \"folder-views\",\n \"screens\": \"folder-views\",\n \".screens\": \"folder-views\",\n \"_screens\": \"folder-views\",\n \"__screens__\": \"folder-views\",\n \"page\": \"folder-views\",\n \".page\": \"folder-views\",\n \"_page\": \"folder-views\",\n \"__page__\": \"folder-views\",\n \"pages\": \"folder-views\",\n \".pages\": \"folder-views\",\n \"_pages\": \"folder-views\",\n \"__pages__\": \"folder-views\",\n \"public_html\": \"folder-views\",\n \".public_html\": \"folder-views\",\n \"_public_html\": \"folder-views\",\n \"__public_html__\": \"folder-views\",\n \"html\": \"folder-views\",\n \".html\": \"folder-views\",\n \"_html\": \"folder-views\",\n \"__html__\": \"folder-views\",\n \"vue\": \"folder-vue\",\n \".vue\": \"folder-vue\",\n \"_vue\": \"folder-vue\",\n \"__vue__\": \"folder-vue\",\n \"vuepress\": \"folder-vuepress\",\n \".vuepress\": \"folder-vuepress\",\n \"_vuepress\": \"folder-vuepress\",\n \"__vuepress__\": \"folder-vuepress\",\n \"expo\": \"folder-expo\",\n \".expo\": \"folder-expo\",\n \"_expo\": \"folder-expo\",\n \"__expo__\": \"folder-expo\",\n \"expo-shared\": \"folder-expo\",\n \".expo-shared\": \"folder-expo\",\n \"_expo-shared\": \"folder-expo\",\n \"__expo-shared__\": \"folder-expo\",\n \"cfg\": \"folder-config\",\n \".cfg\": \"folder-config\",\n \"_cfg\": \"folder-config\",\n \"__cfg__\": \"folder-config\",\n \"cfgs\": \"folder-config\",\n \".cfgs\": \"folder-config\",\n \"_cfgs\": \"folder-config\",\n \"__cfgs__\": \"folder-config\",\n \"conf\": \"folder-config\",\n \".conf\": \"folder-config\",\n \"_conf\": \"folder-config\",\n \"__conf__\": \"folder-config\",\n \"confs\": \"folder-config\",\n \".confs\": \"folder-config\",\n \"_confs\": \"folder-config\",\n \"__confs__\": \"folder-config\",\n \"config\": \"folder-config\",\n \".config\": \"folder-config\",\n \"_config\": \"folder-config\",\n \"__config__\": \"folder-config\",\n \"configs\": \"folder-config\",\n \".configs\": \"folder-config\",\n \"_configs\": \"folder-config\",\n \"__configs__\": \"folder-config\",\n \"configuration\": \"folder-config\",\n \".configuration\": \"folder-config\",\n \"_configuration\": \"folder-config\",\n \"__configuration__\": \"folder-config\",\n \"configurations\": \"folder-config\",\n \".configurations\": \"folder-config\",\n \"_configurations\": \"folder-config\",\n \"__configurations__\": \"folder-config\",\n \"setting\": \"folder-config\",\n \".setting\": \"folder-config\",\n \"_setting\": \"folder-config\",\n \"__setting__\": \"folder-config\",\n \"settings\": \"folder-config\",\n \".settings\": \"folder-config\",\n \"_settings\": \"folder-config\",\n \"__settings__\": \"folder-config\",\n \"META-INF\": \"folder-config\",\n \".META-INF\": \"folder-config\",\n \"_META-INF\": \"folder-config\",\n \"__META-INF__\": \"folder-config\",\n \"option\": \"folder-config\",\n \".option\": \"folder-config\",\n \"_option\": \"folder-config\",\n \"__option__\": \"folder-config\",\n \"options\": \"folder-config\",\n \".options\": \"folder-config\",\n \"_options\": \"folder-config\",\n \"__options__\": \"folder-config\",\n \"i18n\": \"folder-i18n\",\n \".i18n\": \"folder-i18n\",\n \"_i18n\": \"folder-i18n\",\n \"__i18n__\": \"folder-i18n\",\n \"internationalization\": \"folder-i18n\",\n \".internationalization\": \"folder-i18n\",\n \"_internationalization\": \"folder-i18n\",\n \"__internationalization__\": \"folder-i18n\",\n \"lang\": \"folder-i18n\",\n \".lang\": \"folder-i18n\",\n \"_lang\": \"folder-i18n\",\n \"__lang__\": \"folder-i18n\",\n \"langs\": \"folder-i18n\",\n \".langs\": \"folder-i18n\",\n \"_langs\": \"folder-i18n\",\n \"__langs__\": \"folder-i18n\",\n \"language\": \"folder-i18n\",\n \".language\": \"folder-i18n\",\n \"_language\": \"folder-i18n\",\n \"__language__\": \"folder-i18n\",\n \"languages\": \"folder-i18n\",\n \".languages\": \"folder-i18n\",\n \"_languages\": \"folder-i18n\",\n \"__languages__\": \"folder-i18n\",\n \"locale\": \"folder-i18n\",\n \".locale\": \"folder-i18n\",\n \"_locale\": \"folder-i18n\",\n \"__locale__\": \"folder-i18n\",\n \"locales\": \"folder-i18n\",\n \".locales\": \"folder-i18n\",\n \"_locales\": \"folder-i18n\",\n \"__locales__\": \"folder-i18n\",\n \"l10n\": \"folder-i18n\",\n \".l10n\": \"folder-i18n\",\n \"_l10n\": \"folder-i18n\",\n \"__l10n__\": \"folder-i18n\",\n \"localization\": \"folder-i18n\",\n \".localization\": \"folder-i18n\",\n \"_localization\": \"folder-i18n\",\n \"__localization__\": \"folder-i18n\",\n \"translation\": \"folder-i18n\",\n \".translation\": \"folder-i18n\",\n \"_translation\": \"folder-i18n\",\n \"__translation__\": \"folder-i18n\",\n \"translate\": \"folder-i18n\",\n \".translate\": \"folder-i18n\",\n \"_translate\": \"folder-i18n\",\n \"__translate__\": \"folder-i18n\",\n \"translations\": \"folder-i18n\",\n \".translations\": \"folder-i18n\",\n \"_translations\": \"folder-i18n\",\n \"__translations__\": \"folder-i18n\",\n \"tx\": \"folder-i18n\",\n \".tx\": \"folder-i18n\",\n \"_tx\": \"folder-i18n\",\n \"__tx__\": \"folder-i18n\",\n \"components\": \"folder-components\",\n \".components\": \"folder-components\",\n \"_components\": \"folder-components\",\n \"__components__\": \"folder-components\",\n \"widget\": \"folder-components\",\n \".widget\": \"folder-components\",\n \"_widget\": \"folder-components\",\n \"__widget__\": \"folder-components\",\n \"widgets\": \"folder-components\",\n \".widgets\": \"folder-components\",\n \"_widgets\": \"folder-components\",\n \"__widgets__\": \"folder-components\",\n \"fragments\": \"folder-components\",\n \".fragments\": \"folder-components\",\n \"_fragments\": \"folder-components\",\n \"__fragments__\": \"folder-components\",\n \"verdaccio\": \"folder-verdaccio\",\n \".verdaccio\": \"folder-verdaccio\",\n \"_verdaccio\": \"folder-verdaccio\",\n \"__verdaccio__\": \"folder-verdaccio\",\n \"aurelia_project\": \"folder-aurelia\",\n \".aurelia_project\": \"folder-aurelia\",\n \"_aurelia_project\": \"folder-aurelia\",\n \"__aurelia_project__\": \"folder-aurelia\",\n \"resource\": \"folder-resource\",\n \".resource\": \"folder-resource\",\n \"_resource\": \"folder-resource\",\n \"__resource__\": \"folder-resource\",\n \"resources\": \"folder-resource\",\n \".resources\": \"folder-resource\",\n \"_resources\": \"folder-resource\",\n \"__resources__\": \"folder-resource\",\n \"res\": \"folder-resource\",\n \".res\": \"folder-resource\",\n \"_res\": \"folder-resource\",\n \"__res__\": \"folder-resource\",\n \"asset\": \"folder-resource\",\n \".asset\": \"folder-resource\",\n \"_asset\": \"folder-resource\",\n \"__asset__\": \"folder-resource\",\n \"assets\": \"folder-resource\",\n \".assets\": \"folder-resource\",\n \"_assets\": \"folder-resource\",\n \"__assets__\": \"folder-resource\",\n \"static\": \"folder-resource\",\n \".static\": \"folder-resource\",\n \"_static\": \"folder-resource\",\n \"__static__\": \"folder-resource\",\n \"report\": \"folder-resource\",\n \".report\": \"folder-resource\",\n \"_report\": \"folder-resource\",\n \"__report__\": \"folder-resource\",\n \"reports\": \"folder-resource\",\n \".reports\": \"folder-resource\",\n \"_reports\": \"folder-resource\",\n \"__reports__\": \"folder-resource\",\n \"lib\": \"folder-lib\",\n \".lib\": \"folder-lib\",\n \"_lib\": \"folder-lib\",\n \"__lib__\": \"folder-lib\",\n \"libs\": \"folder-lib\",\n \".libs\": \"folder-lib\",\n \"_libs\": \"folder-lib\",\n \"__libs__\": \"folder-lib\",\n \"library\": \"folder-lib\",\n \".library\": \"folder-lib\",\n \"_library\": \"folder-lib\",\n \"__library__\": \"folder-lib\",\n \"libraries\": \"folder-lib\",\n \".libraries\": \"folder-lib\",\n \"_libraries\": \"folder-lib\",\n \"__libraries__\": \"folder-lib\",\n \"vendor\": \"folder-lib\",\n \".vendor\": \"folder-lib\",\n \"_vendor\": \"folder-lib\",\n \"__vendor__\": \"folder-lib\",\n \"vendors\": \"folder-lib\",\n \".vendors\": \"folder-lib\",\n \"_vendors\": \"folder-lib\",\n \"__vendors__\": \"folder-lib\",\n \"third-party\": \"folder-lib\",\n \".third-party\": \"folder-lib\",\n \"_third-party\": \"folder-lib\",\n \"__third-party__\": \"folder-lib\",\n \"themes\": \"folder-theme\",\n \".themes\": \"folder-theme\",\n \"_themes\": \"folder-theme\",\n \"__themes__\": \"folder-theme\",\n \"theme\": \"folder-theme\",\n \".theme\": \"folder-theme\",\n \"_theme\": \"folder-theme\",\n \"__theme__\": \"folder-theme\",\n \"color\": \"folder-theme\",\n \".color\": \"folder-theme\",\n \"_color\": \"folder-theme\",\n \"__color__\": \"folder-theme\",\n \"colors\": \"folder-theme\",\n \".colors\": \"folder-theme\",\n \"_colors\": \"folder-theme\",\n \"__colors__\": \"folder-theme\",\n \"design\": \"folder-theme\",\n \".design\": \"folder-theme\",\n \"_design\": \"folder-theme\",\n \"__design__\": \"folder-theme\",\n \"designs\": \"folder-theme\",\n \".designs\": \"folder-theme\",\n \"_designs\": \"folder-theme\",\n \"__designs__\": \"folder-theme\",\n \"webpack\": \"folder-webpack\",\n \".webpack\": \"folder-webpack\",\n \"_webpack\": \"folder-webpack\",\n \"__webpack__\": \"folder-webpack\",\n \"global\": \"folder-global\",\n \".global\": \"folder-global\",\n \"_global\": \"folder-global\",\n \"__global__\": \"folder-global\",\n \"public\": \"folder-public\",\n \".public\": \"folder-public\",\n \"_public\": \"folder-public\",\n \"__public__\": \"folder-public\",\n \"www\": \"folder-public\",\n \".www\": \"folder-public\",\n \"_www\": \"folder-public\",\n \"__www__\": \"folder-public\",\n \"wwwroot\": \"folder-public\",\n \".wwwroot\": \"folder-public\",\n \"_wwwroot\": \"folder-public\",\n \"__wwwroot__\": \"folder-public\",\n \"web\": \"folder-public\",\n \".web\": \"folder-public\",\n \"_web\": \"folder-public\",\n \"__web__\": \"folder-public\",\n \"website\": \"folder-public\",\n \".website\": \"folder-public\",\n \"_website\": \"folder-public\",\n \"__website__\": \"folder-public\",\n \"site\": \"folder-public\",\n \".site\": \"folder-public\",\n \"_site\": \"folder-public\",\n \"__site__\": \"folder-public\",\n \"browser\": \"folder-public\",\n \".browser\": \"folder-public\",\n \"_browser\": \"folder-public\",\n \"__browser__\": \"folder-public\",\n \"browsers\": \"folder-public\",\n \".browsers\": \"folder-public\",\n \"_browsers\": \"folder-public\",\n \"__browsers__\": \"folder-public\",\n \"inc\": \"folder-include\",\n \".inc\": \"folder-include\",\n \"_inc\": \"folder-include\",\n \"__inc__\": \"folder-include\",\n \"include\": \"folder-include\",\n \".include\": \"folder-include\",\n \"_include\": \"folder-include\",\n \"__include__\": \"folder-include\",\n \"includes\": \"folder-include\",\n \".includes\": \"folder-include\",\n \"_includes\": \"folder-include\",\n \"__includes__\": \"folder-include\",\n \"partial\": \"folder-include\",\n \".partial\": \"folder-include\",\n \"_partial\": \"folder-include\",\n \"__partial__\": \"folder-include\",\n \"partials\": \"folder-include\",\n \".partials\": \"folder-include\",\n \"_partials\": \"folder-include\",\n \"__partials__\": \"folder-include\",\n \"docker\": \"folder-docker\",\n \".docker\": \"folder-docker\",\n \"_docker\": \"folder-docker\",\n \"__docker__\": \"folder-docker\",\n \"dockerfiles\": \"folder-docker\",\n \".dockerfiles\": \"folder-docker\",\n \"_dockerfiles\": \"folder-docker\",\n \"__dockerfiles__\": \"folder-docker\",\n \"db\": \"folder-database\",\n \".db\": \"folder-database\",\n \"_db\": \"folder-database\",\n \"__db__\": \"folder-database\",\n \"data\": \"folder-database\",\n \".data\": \"folder-database\",\n \"_data\": \"folder-database\",\n \"__data__\": \"folder-database\",\n \"database\": \"folder-database\",\n \".database\": \"folder-database\",\n \"_database\": \"folder-database\",\n \"__database__\": \"folder-database\",\n \"databases\": \"folder-database\",\n \".databases\": \"folder-database\",\n \"_databases\": \"folder-database\",\n \"__databases__\": \"folder-database\",\n \"sql\": \"folder-database\",\n \".sql\": \"folder-database\",\n \"_sql\": \"folder-database\",\n \"__sql__\": \"folder-database\",\n \"log\": \"folder-log\",\n \".log\": \"folder-log\",\n \"_log\": \"folder-log\",\n \"__log__\": \"folder-log\",\n \"logs\": \"folder-log\",\n \".logs\": \"folder-log\",\n \"_logs\": \"folder-log\",\n \"__logs__\": \"folder-log\",\n \"logging\": \"folder-log\",\n \".logging\": \"folder-log\",\n \"_logging\": \"folder-log\",\n \"__logging__\": \"folder-log\",\n \"target\": \"folder-target\",\n \".target\": \"folder-target\",\n \"_target\": \"folder-target\",\n \"__target__\": \"folder-target\",\n \"temp\": \"folder-temp\",\n \".temp\": \"folder-temp\",\n \"_temp\": \"folder-temp\",\n \"__temp__\": \"folder-temp\",\n \"tmp\": \"folder-temp\",\n \".tmp\": \"folder-temp\",\n \"_tmp\": \"folder-temp\",\n \"__tmp__\": \"folder-temp\",\n \"cached\": \"folder-temp\",\n \".cached\": \"folder-temp\",\n \"_cached\": \"folder-temp\",\n \"__cached__\": \"folder-temp\",\n \"cache\": \"folder-temp\",\n \".cache\": \"folder-temp\",\n \"_cache\": \"folder-temp\",\n \"__cache__\": \"folder-temp\",\n \"aws\": \"folder-aws\",\n \".aws\": \"folder-aws\",\n \"_aws\": \"folder-aws\",\n \"__aws__\": \"folder-aws\",\n \"aud\": \"folder-audio\",\n \".aud\": \"folder-audio\",\n \"_aud\": \"folder-audio\",\n \"__aud__\": \"folder-audio\",\n \"auds\": \"folder-audio\",\n \".auds\": \"folder-audio\",\n \"_auds\": \"folder-audio\",\n \"__auds__\": \"folder-audio\",\n \"audio\": \"folder-audio\",\n \".audio\": \"folder-audio\",\n \"_audio\": \"folder-audio\",\n \"__audio__\": \"folder-audio\",\n \"audios\": \"folder-audio\",\n \".audios\": \"folder-audio\",\n \"_audios\": \"folder-audio\",\n \"__audios__\": \"folder-audio\",\n \"music\": \"folder-audio\",\n \".music\": \"folder-audio\",\n \"_music\": \"folder-audio\",\n \"__music__\": \"folder-audio\",\n \"sound\": \"folder-audio\",\n \".sound\": \"folder-audio\",\n \"_sound\": \"folder-audio\",\n \"__sound__\": \"folder-audio\",\n \"sounds\": \"folder-audio\",\n \".sounds\": \"folder-audio\",\n \"_sounds\": \"folder-audio\",\n \"__sounds__\": \"folder-audio\",\n \"vid\": \"folder-video\",\n \".vid\": \"folder-video\",\n \"_vid\": \"folder-video\",\n \"__vid__\": \"folder-video\",\n \"vids\": \"folder-video\",\n \".vids\": \"folder-video\",\n \"_vids\": \"folder-video\",\n \"__vids__\": \"folder-video\",\n \"video\": \"folder-video\",\n \".video\": \"folder-video\",\n \"_video\": \"folder-video\",\n \"__video__\": \"folder-video\",\n \"videos\": \"folder-video\",\n \".videos\": \"folder-video\",\n \"_videos\": \"folder-video\",\n \"__videos__\": \"folder-video\",\n \"movie\": \"folder-video\",\n \".movie\": \"folder-video\",\n \"_movie\": \"folder-video\",\n \"__movie__\": \"folder-video\",\n \"movies\": \"folder-video\",\n \".movies\": \"folder-video\",\n \"_movies\": \"folder-video\",\n \"__movies__\": \"folder-video\",\n \"kubernetes\": \"folder-kubernetes\",\n \".kubernetes\": \"folder-kubernetes\",\n \"_kubernetes\": \"folder-kubernetes\",\n \"__kubernetes__\": \"folder-kubernetes\",\n \"k8s\": \"folder-kubernetes\",\n \".k8s\": \"folder-kubernetes\",\n \"_k8s\": \"folder-kubernetes\",\n \"__k8s__\": \"folder-kubernetes\",\n \"import\": \"folder-import\",\n \".import\": \"folder-import\",\n \"_import\": \"folder-import\",\n \"__import__\": \"folder-import\",\n \"imports\": \"folder-import\",\n \".imports\": \"folder-import\",\n \"_imports\": \"folder-import\",\n \"__imports__\": \"folder-import\",\n \"imported\": \"folder-import\",\n \".imported\": \"folder-import\",\n \"_imported\": \"folder-import\",\n \"__imported__\": \"folder-import\",\n \"export\": \"folder-export\",\n \".export\": \"folder-export\",\n \"_export\": \"folder-export\",\n \"__export__\": \"folder-export\",\n \"exports\": \"folder-export\",\n \".exports\": \"folder-export\",\n \"_exports\": \"folder-export\",\n \"__exports__\": \"folder-export\",\n \"exported\": \"folder-export\",\n \".exported\": \"folder-export\",\n \"_exported\": \"folder-export\",\n \"__exported__\": \"folder-export\",\n \"wakatime\": \"folder-wakatime\",\n \".wakatime\": \"folder-wakatime\",\n \"_wakatime\": \"folder-wakatime\",\n \"__wakatime__\": \"folder-wakatime\",\n \"circleci\": \"folder-circleci\",\n \".circleci\": \"folder-circleci\",\n \"_circleci\": \"folder-circleci\",\n \"__circleci__\": \"folder-circleci\",\n \"wordpress-org\": \"folder-wordpress\",\n \".wordpress-org\": \"folder-wordpress\",\n \"_wordpress-org\": \"folder-wordpress\",\n \"__wordpress-org__\": \"folder-wordpress\",\n \"wp-content\": \"folder-wordpress\",\n \".wp-content\": \"folder-wordpress\",\n \"_wp-content\": \"folder-wordpress\",\n \"__wp-content__\": \"folder-wordpress\",\n \"gradle\": \"folder-gradle\",\n \".gradle\": \"folder-gradle\",\n \"_gradle\": \"folder-gradle\",\n \"__gradle__\": \"folder-gradle\",\n \"coverage\": \"folder-coverage\",\n \".coverage\": \"folder-coverage\",\n \"_coverage\": \"folder-coverage\",\n \"__coverage__\": \"folder-coverage\",\n \"nyc-output\": \"folder-coverage\",\n \".nyc-output\": \"folder-coverage\",\n \"_nyc-output\": \"folder-coverage\",\n \"__nyc-output__\": \"folder-coverage\",\n \"nyc_output\": \"folder-coverage\",\n \".nyc_output\": \"folder-coverage\",\n \"_nyc_output\": \"folder-coverage\",\n \"__nyc_output__\": \"folder-coverage\",\n \"e2e\": \"folder-coverage\",\n \".e2e\": \"folder-coverage\",\n \"_e2e\": \"folder-coverage\",\n \"__e2e__\": \"folder-coverage\",\n \"it\": \"folder-coverage\",\n \".it\": \"folder-coverage\",\n \"_it\": \"folder-coverage\",\n \"__it__\": \"folder-coverage\",\n \"integration-test\": \"folder-coverage\",\n \".integration-test\": \"folder-coverage\",\n \"_integration-test\": \"folder-coverage\",\n \"__integration-test__\": \"folder-coverage\",\n \"integration-tests\": \"folder-coverage\",\n \".integration-tests\": \"folder-coverage\",\n \"_integration-tests\": \"folder-coverage\",\n \"__integration-tests__\": \"folder-coverage\",\n \"class\": \"folder-class\",\n \".class\": \"folder-class\",\n \"_class\": \"folder-class\",\n \"__class__\": \"folder-class\",\n \"classes\": \"folder-class\",\n \".classes\": \"folder-class\",\n \"_classes\": \"folder-class\",\n \"__classes__\": \"folder-class\",\n \"model\": \"folder-class\",\n \".model\": \"folder-class\",\n \"_model\": \"folder-class\",\n \"__model__\": \"folder-class\",\n \"models\": \"folder-class\",\n \".models\": \"folder-class\",\n \"_models\": \"folder-class\",\n \"__models__\": \"folder-class\",\n \"schemas\": \"folder-class\",\n \".schemas\": \"folder-class\",\n \"_schemas\": \"folder-class\",\n \"__schemas__\": \"folder-class\",\n \"schema\": \"folder-class\",\n \".schema\": \"folder-class\",\n \"_schema\": \"folder-class\",\n \"__schema__\": \"folder-class\",\n \"other\": \"folder-other\",\n \".other\": \"folder-other\",\n \"_other\": \"folder-other\",\n \"__other__\": \"folder-other\",\n \"others\": \"folder-other\",\n \".others\": \"folder-other\",\n \"_others\": \"folder-other\",\n \"__others__\": \"folder-other\",\n \"misc\": \"folder-other\",\n \".misc\": \"folder-other\",\n \"_misc\": \"folder-other\",\n \"__misc__\": \"folder-other\",\n \"miscellaneous\": \"folder-other\",\n \".miscellaneous\": \"folder-other\",\n \"_miscellaneous\": \"folder-other\",\n \"__miscellaneous__\": \"folder-other\",\n \"extra\": \"folder-other\",\n \".extra\": \"folder-other\",\n \"_extra\": \"folder-other\",\n \"__extra__\": \"folder-other\",\n \"extras\": \"folder-other\",\n \".extras\": \"folder-other\",\n \"_extras\": \"folder-other\",\n \"__extras__\": \"folder-other\",\n \"etc\": \"folder-other\",\n \".etc\": \"folder-other\",\n \"_etc\": \"folder-other\",\n \"__etc__\": \"folder-other\",\n \"lua\": \"folder-lua\",\n \".lua\": \"folder-lua\",\n \"_lua\": \"folder-lua\",\n \"__lua__\": \"folder-lua\",\n \"typescript\": \"folder-typescript\",\n \".typescript\": \"folder-typescript\",\n \"_typescript\": \"folder-typescript\",\n \"__typescript__\": \"folder-typescript\",\n \"ts\": \"folder-typescript\",\n \".ts\": \"folder-typescript\",\n \"_ts\": \"folder-typescript\",\n \"__ts__\": \"folder-typescript\",\n \"typings\": \"folder-typescript\",\n \".typings\": \"folder-typescript\",\n \"_typings\": \"folder-typescript\",\n \"__typings__\": \"folder-typescript\",\n \"@types\": \"folder-typescript\",\n \".@types\": \"folder-typescript\",\n \"_@types\": \"folder-typescript\",\n \"__@types__\": \"folder-typescript\",\n \"types\": \"folder-typescript\",\n \".types\": \"folder-typescript\",\n \"_types\": \"folder-typescript\",\n \"__types__\": \"folder-typescript\",\n \"graphql\": \"folder-graphql\",\n \".graphql\": \"folder-graphql\",\n \"_graphql\": \"folder-graphql\",\n \"__graphql__\": \"folder-graphql\",\n \"gql\": \"folder-graphql\",\n \".gql\": \"folder-graphql\",\n \"_gql\": \"folder-graphql\",\n \"__gql__\": \"folder-graphql\",\n \"routes\": \"folder-routes\",\n \".routes\": \"folder-routes\",\n \"_routes\": \"folder-routes\",\n \"__routes__\": \"folder-routes\",\n \"router\": \"folder-routes\",\n \".router\": \"folder-routes\",\n \"_router\": \"folder-routes\",\n \"__router__\": \"folder-routes\",\n \"routers\": \"folder-routes\",\n \".routers\": \"folder-routes\",\n \"_routers\": \"folder-routes\",\n \"__routers__\": \"folder-routes\",\n \"ci\": \"folder-ci\",\n \".ci\": \"folder-ci\",\n \"_ci\": \"folder-ci\",\n \"__ci__\": \"folder-ci\",\n \"benchmark\": \"folder-benchmark\",\n \".benchmark\": \"folder-benchmark\",\n \"_benchmark\": \"folder-benchmark\",\n \"__benchmark__\": \"folder-benchmark\",\n \"benchmarks\": \"folder-benchmark\",\n \".benchmarks\": \"folder-benchmark\",\n \"_benchmarks\": \"folder-benchmark\",\n \"__benchmarks__\": \"folder-benchmark\",\n \"performance\": \"folder-benchmark\",\n \".performance\": \"folder-benchmark\",\n \"_performance\": \"folder-benchmark\",\n \"__performance__\": \"folder-benchmark\",\n \"measure\": \"folder-benchmark\",\n \".measure\": \"folder-benchmark\",\n \"_measure\": \"folder-benchmark\",\n \"__measure__\": \"folder-benchmark\",\n \"measures\": \"folder-benchmark\",\n \".measures\": \"folder-benchmark\",\n \"_measures\": \"folder-benchmark\",\n \"__measures__\": \"folder-benchmark\",\n \"measurement\": \"folder-benchmark\",\n \".measurement\": \"folder-benchmark\",\n \"_measurement\": \"folder-benchmark\",\n \"__measurement__\": \"folder-benchmark\",\n \"messages\": \"folder-messages\",\n \".messages\": \"folder-messages\",\n \"_messages\": \"folder-messages\",\n \"__messages__\": \"folder-messages\",\n \"messaging\": \"folder-messages\",\n \".messaging\": \"folder-messages\",\n \"_messaging\": \"folder-messages\",\n \"__messaging__\": \"folder-messages\",\n \"forum\": \"folder-messages\",\n \".forum\": \"folder-messages\",\n \"_forum\": \"folder-messages\",\n \"__forum__\": \"folder-messages\",\n \"chat\": \"folder-messages\",\n \".chat\": \"folder-messages\",\n \"_chat\": \"folder-messages\",\n \"__chat__\": \"folder-messages\",\n \"chats\": \"folder-messages\",\n \".chats\": \"folder-messages\",\n \"_chats\": \"folder-messages\",\n \"__chats__\": \"folder-messages\",\n \"conversation\": \"folder-messages\",\n \".conversation\": \"folder-messages\",\n \"_conversation\": \"folder-messages\",\n \"__conversation__\": \"folder-messages\",\n \"conversations\": \"folder-messages\",\n \".conversations\": \"folder-messages\",\n \"_conversations\": \"folder-messages\",\n \"__conversations__\": \"folder-messages\",\n \"less\": \"folder-less\",\n \".less\": \"folder-less\",\n \"_less\": \"folder-less\",\n \"__less__\": \"folder-less\",\n \"gulp\": \"folder-gulp\",\n \".gulp\": \"folder-gulp\",\n \"_gulp\": \"folder-gulp\",\n \"__gulp__\": \"folder-gulp\",\n \"gulp-tasks\": \"folder-gulp\",\n \".gulp-tasks\": \"folder-gulp\",\n \"_gulp-tasks\": \"folder-gulp\",\n \"__gulp-tasks__\": \"folder-gulp\",\n \"gulpfile.js\": \"folder-gulp\",\n \".gulpfile.js\": \"folder-gulp\",\n \"_gulpfile.js\": \"folder-gulp\",\n \"__gulpfile.js__\": \"folder-gulp\",\n \"gulpfile.mjs\": \"folder-gulp\",\n \".gulpfile.mjs\": \"folder-gulp\",\n \"_gulpfile.mjs\": \"folder-gulp\",\n \"__gulpfile.mjs__\": \"folder-gulp\",\n \"gulpfile.ts\": \"folder-gulp\",\n \".gulpfile.ts\": \"folder-gulp\",\n \"_gulpfile.ts\": \"folder-gulp\",\n \"__gulpfile.ts__\": \"folder-gulp\",\n \"gulpfile.babel.js\": \"folder-gulp\",\n \".gulpfile.babel.js\": \"folder-gulp\",\n \"_gulpfile.babel.js\": \"folder-gulp\",\n \"__gulpfile.babel.js__\": \"folder-gulp\",\n \"python\": \"folder-python\",\n \".python\": \"folder-python\",\n \"_python\": \"folder-python\",\n \"__python__\": \"folder-python\",\n \"pycache\": \"folder-python\",\n \".pycache\": \"folder-python\",\n \"_pycache\": \"folder-python\",\n \"__pycache__\": \"folder-python\",\n \"pytest_cache\": \"folder-python\",\n \".pytest_cache\": \"folder-python\",\n \"_pytest_cache\": \"folder-python\",\n \"__pytest_cache__\": \"folder-python\",\n \"mojo\": \"folder-mojo\",\n \".mojo\": \"folder-mojo\",\n \"_mojo\": \"folder-mojo\",\n \"__mojo__\": \"folder-mojo\",\n \"moon\": \"folder-moon\",\n \".moon\": \"folder-moon\",\n \"_moon\": \"folder-moon\",\n \"__moon__\": \"folder-moon\",\n \"debug\": \"folder-debug\",\n \".debug\": \"folder-debug\",\n \"_debug\": \"folder-debug\",\n \"__debug__\": \"folder-debug\",\n \"debugging\": \"folder-debug\",\n \".debugging\": \"folder-debug\",\n \"_debugging\": \"folder-debug\",\n \"__debugging__\": \"folder-debug\",\n \"fastlane\": \"folder-fastlane\",\n \".fastlane\": \"folder-fastlane\",\n \"_fastlane\": \"folder-fastlane\",\n \"__fastlane__\": \"folder-fastlane\",\n \"plugin\": \"folder-plugin\",\n \".plugin\": \"folder-plugin\",\n \"_plugin\": \"folder-plugin\",\n \"__plugin__\": \"folder-plugin\",\n \"plugins\": \"folder-plugin\",\n \".plugins\": \"folder-plugin\",\n \"_plugins\": \"folder-plugin\",\n \"__plugins__\": \"folder-plugin\",\n \"mod\": \"folder-plugin\",\n \".mod\": \"folder-plugin\",\n \"_mod\": \"folder-plugin\",\n \"__mod__\": \"folder-plugin\",\n \"mods\": \"folder-plugin\",\n \".mods\": \"folder-plugin\",\n \"_mods\": \"folder-plugin\",\n \"__mods__\": \"folder-plugin\",\n \"modding\": \"folder-plugin\",\n \".modding\": \"folder-plugin\",\n \"_modding\": \"folder-plugin\",\n \"__modding__\": \"folder-plugin\",\n \"extension\": \"folder-plugin\",\n \".extension\": \"folder-plugin\",\n \"_extension\": \"folder-plugin\",\n \"__extension__\": \"folder-plugin\",\n \"extensions\": \"folder-plugin\",\n \".extensions\": \"folder-plugin\",\n \"_extensions\": \"folder-plugin\",\n \"__extensions__\": \"folder-plugin\",\n \"addon\": \"folder-plugin\",\n \".addon\": \"folder-plugin\",\n \"_addon\": \"folder-plugin\",\n \"__addon__\": \"folder-plugin\",\n \"addons\": \"folder-plugin\",\n \".addons\": \"folder-plugin\",\n \"_addons\": \"folder-plugin\",\n \"__addons__\": \"folder-plugin\",\n \"module\": \"folder-plugin\",\n \".module\": \"folder-plugin\",\n \"_module\": \"folder-plugin\",\n \"__module__\": \"folder-plugin\",\n \"modules\": \"folder-plugin\",\n \".modules\": \"folder-plugin\",\n \"_modules\": \"folder-plugin\",\n \"__modules__\": \"folder-plugin\",\n \"middleware\": \"folder-middleware\",\n \".middleware\": \"folder-middleware\",\n \"_middleware\": \"folder-middleware\",\n \"__middleware__\": \"folder-middleware\",\n \"middlewares\": \"folder-middleware\",\n \".middlewares\": \"folder-middleware\",\n \"_middlewares\": \"folder-middleware\",\n \"__middlewares__\": \"folder-middleware\",\n \"controller\": \"folder-controller\",\n \".controller\": \"folder-controller\",\n \"_controller\": \"folder-controller\",\n \"__controller__\": \"folder-controller\",\n \"controllers\": \"folder-controller\",\n \".controllers\": \"folder-controller\",\n \"_controllers\": \"folder-controller\",\n \"__controllers__\": \"folder-controller\",\n \"service\": \"folder-controller\",\n \".service\": \"folder-controller\",\n \"_service\": \"folder-controller\",\n \"__service__\": \"folder-controller\",\n \"services\": \"folder-controller\",\n \".services\": \"folder-controller\",\n \"_services\": \"folder-controller\",\n \"__services__\": \"folder-controller\",\n \"provider\": \"folder-controller\",\n \".provider\": \"folder-controller\",\n \"_provider\": \"folder-controller\",\n \"__provider__\": \"folder-controller\",\n \"providers\": \"folder-controller\",\n \".providers\": \"folder-controller\",\n \"_providers\": \"folder-controller\",\n \"__providers__\": \"folder-controller\",\n \"handler\": \"folder-controller\",\n \".handler\": \"folder-controller\",\n \"_handler\": \"folder-controller\",\n \"__handler__\": \"folder-controller\",\n \"handlers\": \"folder-controller\",\n \".handlers\": \"folder-controller\",\n \"_handlers\": \"folder-controller\",\n \"__handlers__\": \"folder-controller\",\n \"ansible\": \"folder-ansible\",\n \".ansible\": \"folder-ansible\",\n \"_ansible\": \"folder-ansible\",\n \"__ansible__\": \"folder-ansible\",\n \"server\": \"folder-server\",\n \".server\": \"folder-server\",\n \"_server\": \"folder-server\",\n \"__server__\": \"folder-server\",\n \"servers\": \"folder-server\",\n \".servers\": \"folder-server\",\n \"_servers\": \"folder-server\",\n \"__servers__\": \"folder-server\",\n \"backend\": \"folder-server\",\n \".backend\": \"folder-server\",\n \"_backend\": \"folder-server\",\n \"__backend__\": \"folder-server\",\n \"backends\": \"folder-server\",\n \".backends\": \"folder-server\",\n \"_backends\": \"folder-server\",\n \"__backends__\": \"folder-server\",\n \"client\": \"folder-client\",\n \".client\": \"folder-client\",\n \"_client\": \"folder-client\",\n \"__client__\": \"folder-client\",\n \"clients\": \"folder-client\",\n \".clients\": \"folder-client\",\n \"_clients\": \"folder-client\",\n \"__clients__\": \"folder-client\",\n \"frontend\": \"folder-client\",\n \".frontend\": \"folder-client\",\n \"_frontend\": \"folder-client\",\n \"__frontend__\": \"folder-client\",\n \"frontends\": \"folder-client\",\n \".frontends\": \"folder-client\",\n \"_frontends\": \"folder-client\",\n \"__frontends__\": \"folder-client\",\n \"pwa\": \"folder-client\",\n \".pwa\": \"folder-client\",\n \"_pwa\": \"folder-client\",\n \"__pwa__\": \"folder-client\",\n \"tasks\": \"folder-tasks\",\n \".tasks\": \"folder-tasks\",\n \"_tasks\": \"folder-tasks\",\n \"__tasks__\": \"folder-tasks\",\n \"tickets\": \"folder-tasks\",\n \".tickets\": \"folder-tasks\",\n \"_tickets\": \"folder-tasks\",\n \"__tickets__\": \"folder-tasks\",\n \"android\": \"folder-android\",\n \".android\": \"folder-android\",\n \"_android\": \"folder-android\",\n \"__android__\": \"folder-android\",\n \"ios\": \"folder-ios\",\n \".ios\": \"folder-ios\",\n \"_ios\": \"folder-ios\",\n \"__ios__\": \"folder-ios\",\n \"uploads\": \"folder-upload\",\n \".uploads\": \"folder-upload\",\n \"_uploads\": \"folder-upload\",\n \"__uploads__\": \"folder-upload\",\n \"upload\": \"folder-upload\",\n \".upload\": \"folder-upload\",\n \"_upload\": \"folder-upload\",\n \"__upload__\": \"folder-upload\",\n \"downloads\": \"folder-download\",\n \".downloads\": \"folder-download\",\n \"_downloads\": \"folder-download\",\n \"__downloads__\": \"folder-download\",\n \"download\": \"folder-download\",\n \".download\": \"folder-download\",\n \"_download\": \"folder-download\",\n \"__download__\": \"folder-download\",\n \"tools\": \"folder-tools\",\n \".tools\": \"folder-tools\",\n \"_tools\": \"folder-tools\",\n \"__tools__\": \"folder-tools\",\n \"toolkit\": \"folder-tools\",\n \".toolkit\": \"folder-tools\",\n \"_toolkit\": \"folder-tools\",\n \"__toolkit__\": \"folder-tools\",\n \"toolkits\": \"folder-tools\",\n \".toolkits\": \"folder-tools\",\n \"_toolkits\": \"folder-tools\",\n \"__toolkits__\": \"folder-tools\",\n \"toolbox\": \"folder-tools\",\n \".toolbox\": \"folder-tools\",\n \"_toolbox\": \"folder-tools\",\n \"__toolbox__\": \"folder-tools\",\n \"toolboxes\": \"folder-tools\",\n \".toolboxes\": \"folder-tools\",\n \"_toolboxes\": \"folder-tools\",\n \"__toolboxes__\": \"folder-tools\",\n \"tooling\": \"folder-tools\",\n \".tooling\": \"folder-tools\",\n \"_tooling\": \"folder-tools\",\n \"__tooling__\": \"folder-tools\",\n \"helpers\": \"folder-helper\",\n \".helpers\": \"folder-helper\",\n \"_helpers\": \"folder-helper\",\n \"__helpers__\": \"folder-helper\",\n \"helper\": \"folder-helper\",\n \".helper\": \"folder-helper\",\n \"_helper\": \"folder-helper\",\n \"__helper__\": \"folder-helper\",\n \"serverless\": \"folder-serverless\",\n \".serverless\": \"folder-serverless\",\n \"_serverless\": \"folder-serverless\",\n \"__serverless__\": \"folder-serverless\",\n \"api\": \"folder-api\",\n \".api\": \"folder-api\",\n \"_api\": \"folder-api\",\n \"__api__\": \"folder-api\",\n \"apis\": \"folder-api\",\n \".apis\": \"folder-api\",\n \"_apis\": \"folder-api\",\n \"__apis__\": \"folder-api\",\n \"restapi\": \"folder-api\",\n \".restapi\": \"folder-api\",\n \"_restapi\": \"folder-api\",\n \"__restapi__\": \"folder-api\",\n \"app\": \"folder-app\",\n \".app\": \"folder-app\",\n \"_app\": \"folder-app\",\n \"__app__\": \"folder-app\",\n \"apps\": \"folder-app\",\n \".apps\": \"folder-app\",\n \"_apps\": \"folder-app\",\n \"__apps__\": \"folder-app\",\n \"apollo\": \"folder-apollo\",\n \".apollo\": \"folder-apollo\",\n \"_apollo\": \"folder-apollo\",\n \"__apollo__\": \"folder-apollo\",\n \"apollo-client\": \"folder-apollo\",\n \".apollo-client\": \"folder-apollo\",\n \"_apollo-client\": \"folder-apollo\",\n \"__apollo-client__\": \"folder-apollo\",\n \"apollo-cache\": \"folder-apollo\",\n \".apollo-cache\": \"folder-apollo\",\n \"_apollo-cache\": \"folder-apollo\",\n \"__apollo-cache__\": \"folder-apollo\",\n \"apollo-config\": \"folder-apollo\",\n \".apollo-config\": \"folder-apollo\",\n \"_apollo-config\": \"folder-apollo\",\n \"__apollo-config__\": \"folder-apollo\",\n \"arc\": \"folder-archive\",\n \".arc\": \"folder-archive\",\n \"_arc\": \"folder-archive\",\n \"__arc__\": \"folder-archive\",\n \"arcs\": \"folder-archive\",\n \".arcs\": \"folder-archive\",\n \"_arcs\": \"folder-archive\",\n \"__arcs__\": \"folder-archive\",\n \"archive\": \"folder-archive\",\n \".archive\": \"folder-archive\",\n \"_archive\": \"folder-archive\",\n \"__archive__\": \"folder-archive\",\n \"archives\": \"folder-archive\",\n \".archives\": \"folder-archive\",\n \"_archives\": \"folder-archive\",\n \"__archives__\": \"folder-archive\",\n \"archival\": \"folder-archive\",\n \".archival\": \"folder-archive\",\n \"_archival\": \"folder-archive\",\n \"__archival__\": \"folder-archive\",\n \"bkp\": \"folder-archive\",\n \".bkp\": \"folder-archive\",\n \"_bkp\": \"folder-archive\",\n \"__bkp__\": \"folder-archive\",\n \"bkps\": \"folder-archive\",\n \".bkps\": \"folder-archive\",\n \"_bkps\": \"folder-archive\",\n \"__bkps__\": \"folder-archive\",\n \"bak\": \"folder-archive\",\n \".bak\": \"folder-archive\",\n \"_bak\": \"folder-archive\",\n \"__bak__\": \"folder-archive\",\n \"baks\": \"folder-archive\",\n \".baks\": \"folder-archive\",\n \"_baks\": \"folder-archive\",\n \"__baks__\": \"folder-archive\",\n \"backup\": \"folder-archive\",\n \".backup\": \"folder-archive\",\n \"_backup\": \"folder-archive\",\n \"__backup__\": \"folder-archive\",\n \"backups\": \"folder-archive\",\n \".backups\": \"folder-archive\",\n \"_backups\": \"folder-archive\",\n \"__backups__\": \"folder-archive\",\n \"back-up\": \"folder-archive\",\n \".back-up\": \"folder-archive\",\n \"_back-up\": \"folder-archive\",\n \"__back-up__\": \"folder-archive\",\n \"back-ups\": \"folder-archive\",\n \".back-ups\": \"folder-archive\",\n \"_back-ups\": \"folder-archive\",\n \"__back-ups__\": \"folder-archive\",\n \"history\": \"folder-archive\",\n \".history\": \"folder-archive\",\n \"_history\": \"folder-archive\",\n \"__history__\": \"folder-archive\",\n \"histories\": \"folder-archive\",\n \".histories\": \"folder-archive\",\n \"_histories\": \"folder-archive\",\n \"__histories__\": \"folder-archive\",\n \"batch\": \"folder-batch\",\n \".batch\": \"folder-batch\",\n \"_batch\": \"folder-batch\",\n \"__batch__\": \"folder-batch\",\n \"batchs\": \"folder-batch\",\n \".batchs\": \"folder-batch\",\n \"_batchs\": \"folder-batch\",\n \"__batchs__\": \"folder-batch\",\n \"batches\": \"folder-batch\",\n \".batches\": \"folder-batch\",\n \"_batches\": \"folder-batch\",\n \"__batches__\": \"folder-batch\",\n \"buildkite\": \"folder-buildkite\",\n \".buildkite\": \"folder-buildkite\",\n \"_buildkite\": \"folder-buildkite\",\n \"__buildkite__\": \"folder-buildkite\",\n \"cluster\": \"folder-cluster\",\n \".cluster\": \"folder-cluster\",\n \"_cluster\": \"folder-cluster\",\n \"__cluster__\": \"folder-cluster\",\n \"clusters\": \"folder-cluster\",\n \".clusters\": \"folder-cluster\",\n \"_clusters\": \"folder-cluster\",\n \"__clusters__\": \"folder-cluster\",\n \"command\": \"folder-command\",\n \".command\": \"folder-command\",\n \"_command\": \"folder-command\",\n \"__command__\": \"folder-command\",\n \"commands\": \"folder-command\",\n \".commands\": \"folder-command\",\n \"_commands\": \"folder-command\",\n \"__commands__\": \"folder-command\",\n \"cmd\": \"folder-command\",\n \".cmd\": \"folder-command\",\n \"_cmd\": \"folder-command\",\n \"__cmd__\": \"folder-command\",\n \"cli\": \"folder-command\",\n \".cli\": \"folder-command\",\n \"_cli\": \"folder-command\",\n \"__cli__\": \"folder-command\",\n \"clis\": \"folder-command\",\n \".clis\": \"folder-command\",\n \"_clis\": \"folder-command\",\n \"__clis__\": \"folder-command\",\n \"constant\": \"folder-constant\",\n \".constant\": \"folder-constant\",\n \"_constant\": \"folder-constant\",\n \"__constant__\": \"folder-constant\",\n \"constants\": \"folder-constant\",\n \".constants\": \"folder-constant\",\n \"_constants\": \"folder-constant\",\n \"__constants__\": \"folder-constant\",\n \"container\": \"folder-container\",\n \".container\": \"folder-container\",\n \"_container\": \"folder-container\",\n \"__container__\": \"folder-container\",\n \"containers\": \"folder-container\",\n \".containers\": \"folder-container\",\n \"_containers\": \"folder-container\",\n \"__containers__\": \"folder-container\",\n \"devcontainer\": \"folder-container\",\n \".devcontainer\": \"folder-container\",\n \"_devcontainer\": \"folder-container\",\n \"__devcontainer__\": \"folder-container\",\n \"content\": \"folder-content\",\n \".content\": \"folder-content\",\n \"_content\": \"folder-content\",\n \"__content__\": \"folder-content\",\n \"contents\": \"folder-content\",\n \".contents\": \"folder-content\",\n \"_contents\": \"folder-content\",\n \"__contents__\": \"folder-content\",\n \"context\": \"folder-context\",\n \".context\": \"folder-context\",\n \"_context\": \"folder-context\",\n \"__context__\": \"folder-context\",\n \"contexts\": \"folder-context\",\n \".contexts\": \"folder-context\",\n \"_contexts\": \"folder-context\",\n \"__contexts__\": \"folder-context\",\n \"core\": \"folder-core\",\n \".core\": \"folder-core\",\n \"_core\": \"folder-core\",\n \"__core__\": \"folder-core\",\n \"delta\": \"folder-delta\",\n \".delta\": \"folder-delta\",\n \"_delta\": \"folder-delta\",\n \"__delta__\": \"folder-delta\",\n \"deltas\": \"folder-delta\",\n \".deltas\": \"folder-delta\",\n \"_deltas\": \"folder-delta\",\n \"__deltas__\": \"folder-delta\",\n \"changes\": \"folder-delta\",\n \".changes\": \"folder-delta\",\n \"_changes\": \"folder-delta\",\n \"__changes__\": \"folder-delta\",\n \"dump\": \"folder-dump\",\n \".dump\": \"folder-dump\",\n \"_dump\": \"folder-dump\",\n \"__dump__\": \"folder-dump\",\n \"dumps\": \"folder-dump\",\n \".dumps\": \"folder-dump\",\n \"_dumps\": \"folder-dump\",\n \"__dumps__\": \"folder-dump\",\n \"demo\": \"folder-examples\",\n \".demo\": \"folder-examples\",\n \"_demo\": \"folder-examples\",\n \"__demo__\": \"folder-examples\",\n \"demos\": \"folder-examples\",\n \".demos\": \"folder-examples\",\n \"_demos\": \"folder-examples\",\n \"__demos__\": \"folder-examples\",\n \"example\": \"folder-examples\",\n \".example\": \"folder-examples\",\n \"_example\": \"folder-examples\",\n \"__example__\": \"folder-examples\",\n \"examples\": \"folder-examples\",\n \".examples\": \"folder-examples\",\n \"_examples\": \"folder-examples\",\n \"__examples__\": \"folder-examples\",\n \"sample\": \"folder-examples\",\n \".sample\": \"folder-examples\",\n \"_sample\": \"folder-examples\",\n \"__sample__\": \"folder-examples\",\n \"samples\": \"folder-examples\",\n \".samples\": \"folder-examples\",\n \"_samples\": \"folder-examples\",\n \"__samples__\": \"folder-examples\",\n \"sample-data\": \"folder-examples\",\n \".sample-data\": \"folder-examples\",\n \"_sample-data\": \"folder-examples\",\n \"__sample-data__\": \"folder-examples\",\n \"env\": \"folder-environment\",\n \".env\": \"folder-environment\",\n \"_env\": \"folder-environment\",\n \"__env__\": \"folder-environment\",\n \"envs\": \"folder-environment\",\n \".envs\": \"folder-environment\",\n \"_envs\": \"folder-environment\",\n \"__envs__\": \"folder-environment\",\n \"environment\": \"folder-environment\",\n \".environment\": \"folder-environment\",\n \"_environment\": \"folder-environment\",\n \"__environment__\": \"folder-environment\",\n \"environments\": \"folder-environment\",\n \".environments\": \"folder-environment\",\n \"_environments\": \"folder-environment\",\n \"__environments__\": \"folder-environment\",\n \"venv\": \"folder-environment\",\n \".venv\": \"folder-environment\",\n \"_venv\": \"folder-environment\",\n \"__venv__\": \"folder-environment\",\n \"func\": \"folder-functions\",\n \".func\": \"folder-functions\",\n \"_func\": \"folder-functions\",\n \"__func__\": \"folder-functions\",\n \"funcs\": \"folder-functions\",\n \".funcs\": \"folder-functions\",\n \"_funcs\": \"folder-functions\",\n \"__funcs__\": \"folder-functions\",\n \"function\": \"folder-functions\",\n \".function\": \"folder-functions\",\n \"_function\": \"folder-functions\",\n \"__function__\": \"folder-functions\",\n \"functions\": \"folder-functions\",\n \".functions\": \"folder-functions\",\n \"_functions\": \"folder-functions\",\n \"__functions__\": \"folder-functions\",\n \"lambda\": \"folder-functions\",\n \".lambda\": \"folder-functions\",\n \"_lambda\": \"folder-functions\",\n \"__lambda__\": \"folder-functions\",\n \"lambdas\": \"folder-functions\",\n \".lambdas\": \"folder-functions\",\n \"_lambdas\": \"folder-functions\",\n \"__lambdas__\": \"folder-functions\",\n \"logic\": \"folder-functions\",\n \".logic\": \"folder-functions\",\n \"_logic\": \"folder-functions\",\n \"__logic__\": \"folder-functions\",\n \"math\": \"folder-functions\",\n \".math\": \"folder-functions\",\n \"_math\": \"folder-functions\",\n \"__math__\": \"folder-functions\",\n \"maths\": \"folder-functions\",\n \".maths\": \"folder-functions\",\n \"_maths\": \"folder-functions\",\n \"__maths__\": \"folder-functions\",\n \"calc\": \"folder-functions\",\n \".calc\": \"folder-functions\",\n \"_calc\": \"folder-functions\",\n \"__calc__\": \"folder-functions\",\n \"calcs\": \"folder-functions\",\n \".calcs\": \"folder-functions\",\n \"_calcs\": \"folder-functions\",\n \"__calcs__\": \"folder-functions\",\n \"calculation\": \"folder-functions\",\n \".calculation\": \"folder-functions\",\n \"_calculation\": \"folder-functions\",\n \"__calculation__\": \"folder-functions\",\n \"calculations\": \"folder-functions\",\n \".calculations\": \"folder-functions\",\n \"_calculations\": \"folder-functions\",\n \"__calculations__\": \"folder-functions\",\n \"generator\": \"folder-generator\",\n \".generator\": \"folder-generator\",\n \"_generator\": \"folder-generator\",\n \"__generator__\": \"folder-generator\",\n \"generators\": \"folder-generator\",\n \".generators\": \"folder-generator\",\n \"_generators\": \"folder-generator\",\n \"__generators__\": \"folder-generator\",\n \"generated\": \"folder-generator\",\n \".generated\": \"folder-generator\",\n \"_generated\": \"folder-generator\",\n \"__generated__\": \"folder-generator\",\n \"cfn-gen\": \"folder-generator\",\n \".cfn-gen\": \"folder-generator\",\n \"_cfn-gen\": \"folder-generator\",\n \"__cfn-gen__\": \"folder-generator\",\n \"gen\": \"folder-generator\",\n \".gen\": \"folder-generator\",\n \"_gen\": \"folder-generator\",\n \"__gen__\": \"folder-generator\",\n \"gens\": \"folder-generator\",\n \".gens\": \"folder-generator\",\n \"_gens\": \"folder-generator\",\n \"__gens__\": \"folder-generator\",\n \"auto\": \"folder-generator\",\n \".auto\": \"folder-generator\",\n \"_auto\": \"folder-generator\",\n \"__auto__\": \"folder-generator\",\n \"hook\": \"folder-hook\",\n \".hook\": \"folder-hook\",\n \"_hook\": \"folder-hook\",\n \"__hook__\": \"folder-hook\",\n \"hooks\": \"folder-hook\",\n \".hooks\": \"folder-hook\",\n \"_hooks\": \"folder-hook\",\n \"__hooks__\": \"folder-hook\",\n \"trigger\": \"folder-hook\",\n \".trigger\": \"folder-hook\",\n \"_trigger\": \"folder-hook\",\n \"__trigger__\": \"folder-hook\",\n \"triggers\": \"folder-hook\",\n \".triggers\": \"folder-hook\",\n \"_triggers\": \"folder-hook\",\n \"__triggers__\": \"folder-hook\",\n \"job\": \"folder-job\",\n \".job\": \"folder-job\",\n \"_job\": \"folder-job\",\n \"__job__\": \"folder-job\",\n \"jobs\": \"folder-job\",\n \".jobs\": \"folder-job\",\n \"_jobs\": \"folder-job\",\n \"__jobs__\": \"folder-job\",\n \"key\": \"folder-keys\",\n \".key\": \"folder-keys\",\n \"_key\": \"folder-keys\",\n \"__key__\": \"folder-keys\",\n \"keys\": \"folder-keys\",\n \".keys\": \"folder-keys\",\n \"_keys\": \"folder-keys\",\n \"__keys__\": \"folder-keys\",\n \"token\": \"folder-keys\",\n \".token\": \"folder-keys\",\n \"_token\": \"folder-keys\",\n \"__token__\": \"folder-keys\",\n \"tokens\": \"folder-keys\",\n \".tokens\": \"folder-keys\",\n \"_tokens\": \"folder-keys\",\n \"__tokens__\": \"folder-keys\",\n \"jwt\": \"folder-keys\",\n \".jwt\": \"folder-keys\",\n \"_jwt\": \"folder-keys\",\n \"__jwt__\": \"folder-keys\",\n \"secret\": \"folder-keys\",\n \".secret\": \"folder-keys\",\n \"_secret\": \"folder-keys\",\n \"__secret__\": \"folder-keys\",\n \"secrets\": \"folder-keys\",\n \".secrets\": \"folder-keys\",\n \"_secrets\": \"folder-keys\",\n \"__secrets__\": \"folder-keys\",\n \"layout\": \"folder-layout\",\n \".layout\": \"folder-layout\",\n \"_layout\": \"folder-layout\",\n \"__layout__\": \"folder-layout\",\n \"layouts\": \"folder-layout\",\n \".layouts\": \"folder-layout\",\n \"_layouts\": \"folder-layout\",\n \"__layouts__\": \"folder-layout\",\n \"mail\": \"folder-mail\",\n \".mail\": \"folder-mail\",\n \"_mail\": \"folder-mail\",\n \"__mail__\": \"folder-mail\",\n \"mails\": \"folder-mail\",\n \".mails\": \"folder-mail\",\n \"_mails\": \"folder-mail\",\n \"__mails__\": \"folder-mail\",\n \"email\": \"folder-mail\",\n \".email\": \"folder-mail\",\n \"_email\": \"folder-mail\",\n \"__email__\": \"folder-mail\",\n \"emails\": \"folder-mail\",\n \".emails\": \"folder-mail\",\n \"_emails\": \"folder-mail\",\n \"__emails__\": \"folder-mail\",\n \"smtp\": \"folder-mail\",\n \".smtp\": \"folder-mail\",\n \"_smtp\": \"folder-mail\",\n \"__smtp__\": \"folder-mail\",\n \"mailers\": \"folder-mail\",\n \".mailers\": \"folder-mail\",\n \"_mailers\": \"folder-mail\",\n \"__mailers__\": \"folder-mail\",\n \"mappings\": \"folder-mappings\",\n \".mappings\": \"folder-mappings\",\n \"_mappings\": \"folder-mappings\",\n \"__mappings__\": \"folder-mappings\",\n \"mapping\": \"folder-mappings\",\n \".mapping\": \"folder-mappings\",\n \"_mapping\": \"folder-mappings\",\n \"__mapping__\": \"folder-mappings\",\n \"meta\": \"folder-meta\",\n \".meta\": \"folder-meta\",\n \"_meta\": \"folder-meta\",\n \"__meta__\": \"folder-meta\",\n \"changesets\": \"folder-changesets\",\n \".changesets\": \"folder-changesets\",\n \"_changesets\": \"folder-changesets\",\n \"__changesets__\": \"folder-changesets\",\n \"changeset\": \"folder-changesets\",\n \".changeset\": \"folder-changesets\",\n \"_changeset\": \"folder-changesets\",\n \"__changeset__\": \"folder-changesets\",\n \"package\": \"folder-packages\",\n \".package\": \"folder-packages\",\n \"_package\": \"folder-packages\",\n \"__package__\": \"folder-packages\",\n \"packages\": \"folder-packages\",\n \".packages\": \"folder-packages\",\n \"_packages\": \"folder-packages\",\n \"__packages__\": \"folder-packages\",\n \"pkg\": \"folder-packages\",\n \".pkg\": \"folder-packages\",\n \"_pkg\": \"folder-packages\",\n \"__pkg__\": \"folder-packages\",\n \"pkgs\": \"folder-packages\",\n \".pkgs\": \"folder-packages\",\n \"_pkgs\": \"folder-packages\",\n \"__pkgs__\": \"folder-packages\",\n \"shared\": \"folder-shared\",\n \".shared\": \"folder-shared\",\n \"_shared\": \"folder-shared\",\n \"__shared__\": \"folder-shared\",\n \"common\": \"folder-shared\",\n \".common\": \"folder-shared\",\n \"_common\": \"folder-shared\",\n \"__common__\": \"folder-shared\",\n \"glsl\": \"folder-shader\",\n \".glsl\": \"folder-shader\",\n \"_glsl\": \"folder-shader\",\n \"__glsl__\": \"folder-shader\",\n \"hlsl\": \"folder-shader\",\n \".hlsl\": \"folder-shader\",\n \"_hlsl\": \"folder-shader\",\n \"__hlsl__\": \"folder-shader\",\n \"shader\": \"folder-shader\",\n \".shader\": \"folder-shader\",\n \"_shader\": \"folder-shader\",\n \"__shader__\": \"folder-shader\",\n \"shaders\": \"folder-shader\",\n \".shaders\": \"folder-shader\",\n \"_shaders\": \"folder-shader\",\n \"__shaders__\": \"folder-shader\",\n \"stack\": \"folder-stack\",\n \".stack\": \"folder-stack\",\n \"_stack\": \"folder-stack\",\n \"__stack__\": \"folder-stack\",\n \"stacks\": \"folder-stack\",\n \".stacks\": \"folder-stack\",\n \"_stacks\": \"folder-stack\",\n \"__stacks__\": \"folder-stack\",\n \"template\": \"folder-template\",\n \".template\": \"folder-template\",\n \"_template\": \"folder-template\",\n \"__template__\": \"folder-template\",\n \"templates\": \"folder-template\",\n \".templates\": \"folder-template\",\n \"_templates\": \"folder-template\",\n \"__templates__\": \"folder-template\",\n \"util\": \"folder-utils\",\n \".util\": \"folder-utils\",\n \"_util\": \"folder-utils\",\n \"__util__\": \"folder-utils\",\n \"utils\": \"folder-utils\",\n \".utils\": \"folder-utils\",\n \"_utils\": \"folder-utils\",\n \"__utils__\": \"folder-utils\",\n \"utility\": \"folder-utils\",\n \".utility\": \"folder-utils\",\n \"_utility\": \"folder-utils\",\n \"__utility__\": \"folder-utils\",\n \"utilities\": \"folder-utils\",\n \".utilities\": \"folder-utils\",\n \"_utilities\": \"folder-utils\",\n \"__utilities__\": \"folder-utils\",\n \"supabase\": \"folder-supabase\",\n \".supabase\": \"folder-supabase\",\n \"_supabase\": \"folder-supabase\",\n \"__supabase__\": \"folder-supabase\",\n \"private\": \"folder-private\",\n \".private\": \"folder-private\",\n \"_private\": \"folder-private\",\n \"__private__\": \"folder-private\",\n \"linux\": \"folder-linux\",\n \".linux\": \"folder-linux\",\n \"_linux\": \"folder-linux\",\n \"__linux__\": \"folder-linux\",\n \"linuxbsd\": \"folder-linux\",\n \".linuxbsd\": \"folder-linux\",\n \"_linuxbsd\": \"folder-linux\",\n \"__linuxbsd__\": \"folder-linux\",\n \"unix\": \"folder-linux\",\n \".unix\": \"folder-linux\",\n \"_unix\": \"folder-linux\",\n \"__unix__\": \"folder-linux\",\n \"windows\": \"folder-windows\",\n \".windows\": \"folder-windows\",\n \"_windows\": \"folder-windows\",\n \"__windows__\": \"folder-windows\",\n \"win\": \"folder-windows\",\n \".win\": \"folder-windows\",\n \"_win\": \"folder-windows\",\n \"__win__\": \"folder-windows\",\n \"macos\": \"folder-macos\",\n \".macos\": \"folder-macos\",\n \"_macos\": \"folder-macos\",\n \"__macos__\": \"folder-macos\",\n \"mac\": \"folder-macos\",\n \".mac\": \"folder-macos\",\n \"_mac\": \"folder-macos\",\n \"__mac__\": \"folder-macos\",\n \"DS_Store\": \"folder-macos\",\n \".DS_Store\": \"folder-macos\",\n \"_DS_Store\": \"folder-macos\",\n \"__DS_Store__\": \"folder-macos\",\n \"error\": \"folder-error\",\n \".error\": \"folder-error\",\n \"_error\": \"folder-error\",\n \"__error__\": \"folder-error\",\n \"errors\": \"folder-error\",\n \".errors\": \"folder-error\",\n \"_errors\": \"folder-error\",\n \"__errors__\": \"folder-error\",\n \"err\": \"folder-error\",\n \".err\": \"folder-error\",\n \"_err\": \"folder-error\",\n \"__err__\": \"folder-error\",\n \"errs\": \"folder-error\",\n \".errs\": \"folder-error\",\n \"_errs\": \"folder-error\",\n \"__errs__\": \"folder-error\",\n \"crash\": \"folder-error\",\n \".crash\": \"folder-error\",\n \"_crash\": \"folder-error\",\n \"__crash__\": \"folder-error\",\n \"crashes\": \"folder-error\",\n \".crashes\": \"folder-error\",\n \"_crashes\": \"folder-error\",\n \"__crashes__\": \"folder-error\",\n \"event\": \"folder-event\",\n \".event\": \"folder-event\",\n \"_event\": \"folder-event\",\n \"__event__\": \"folder-event\",\n \"events\": \"folder-event\",\n \".events\": \"folder-event\",\n \"_events\": \"folder-event\",\n \"__events__\": \"folder-event\",\n \"auth\": \"folder-secure\",\n \".auth\": \"folder-secure\",\n \"_auth\": \"folder-secure\",\n \"__auth__\": \"folder-secure\",\n \"authentication\": \"folder-secure\",\n \".authentication\": \"folder-secure\",\n \"_authentication\": \"folder-secure\",\n \"__authentication__\": \"folder-secure\",\n \"secure\": \"folder-secure\",\n \".secure\": \"folder-secure\",\n \"_secure\": \"folder-secure\",\n \"__secure__\": \"folder-secure\",\n \"security\": \"folder-secure\",\n \".security\": \"folder-secure\",\n \"_security\": \"folder-secure\",\n \"__security__\": \"folder-secure\",\n \"cert\": \"folder-secure\",\n \".cert\": \"folder-secure\",\n \"_cert\": \"folder-secure\",\n \"__cert__\": \"folder-secure\",\n \"certs\": \"folder-secure\",\n \".certs\": \"folder-secure\",\n \"_certs\": \"folder-secure\",\n \"__certs__\": \"folder-secure\",\n \"certificate\": \"folder-secure\",\n \".certificate\": \"folder-secure\",\n \"_certificate\": \"folder-secure\",\n \"__certificate__\": \"folder-secure\",\n \"certificates\": \"folder-secure\",\n \".certificates\": \"folder-secure\",\n \"_certificates\": \"folder-secure\",\n \"__certificates__\": \"folder-secure\",\n \"ssl\": \"folder-secure\",\n \".ssl\": \"folder-secure\",\n \"_ssl\": \"folder-secure\",\n \"__ssl__\": \"folder-secure\",\n \"custom\": \"folder-custom\",\n \".custom\": \"folder-custom\",\n \"_custom\": \"folder-custom\",\n \"__custom__\": \"folder-custom\",\n \"customs\": \"folder-custom\",\n \".customs\": \"folder-custom\",\n \"_customs\": \"folder-custom\",\n \"__customs__\": \"folder-custom\",\n \"draft\": \"folder-mock\",\n \".draft\": \"folder-mock\",\n \"_draft\": \"folder-mock\",\n \"__draft__\": \"folder-mock\",\n \"drafts\": \"folder-mock\",\n \".drafts\": \"folder-mock\",\n \"_drafts\": \"folder-mock\",\n \"__drafts__\": \"folder-mock\",\n \"mock\": \"folder-mock\",\n \".mock\": \"folder-mock\",\n \"_mock\": \"folder-mock\",\n \"__mock__\": \"folder-mock\",\n \"mocks\": \"folder-mock\",\n \".mocks\": \"folder-mock\",\n \"_mocks\": \"folder-mock\",\n \"__mocks__\": \"folder-mock\",\n \"fixture\": \"folder-mock\",\n \".fixture\": \"folder-mock\",\n \"_fixture\": \"folder-mock\",\n \"__fixture__\": \"folder-mock\",\n \"fixtures\": \"folder-mock\",\n \".fixtures\": \"folder-mock\",\n \"_fixtures\": \"folder-mock\",\n \"__fixtures__\": \"folder-mock\",\n \"concept\": \"folder-mock\",\n \".concept\": \"folder-mock\",\n \"_concept\": \"folder-mock\",\n \"__concept__\": \"folder-mock\",\n \"concepts\": \"folder-mock\",\n \".concepts\": \"folder-mock\",\n \"_concepts\": \"folder-mock\",\n \"__concepts__\": \"folder-mock\",\n \"sketch\": \"folder-mock\",\n \".sketch\": \"folder-mock\",\n \"_sketch\": \"folder-mock\",\n \"__sketch__\": \"folder-mock\",\n \"sketches\": \"folder-mock\",\n \".sketches\": \"folder-mock\",\n \"_sketches\": \"folder-mock\",\n \"__sketches__\": \"folder-mock\",\n \"syntax\": \"folder-syntax\",\n \".syntax\": \"folder-syntax\",\n \"_syntax\": \"folder-syntax\",\n \"__syntax__\": \"folder-syntax\",\n \"syntaxes\": \"folder-syntax\",\n \".syntaxes\": \"folder-syntax\",\n \"_syntaxes\": \"folder-syntax\",\n \"__syntaxes__\": \"folder-syntax\",\n \"spellcheck\": \"folder-syntax\",\n \".spellcheck\": \"folder-syntax\",\n \"_spellcheck\": \"folder-syntax\",\n \"__spellcheck__\": \"folder-syntax\",\n \"vm\": \"folder-vm\",\n \".vm\": \"folder-vm\",\n \"_vm\": \"folder-vm\",\n \"__vm__\": \"folder-vm\",\n \"vms\": \"folder-vm\",\n \".vms\": \"folder-vm\",\n \"_vms\": \"folder-vm\",\n \"__vms__\": \"folder-vm\",\n \"stylus\": \"folder-stylus\",\n \".stylus\": \"folder-stylus\",\n \"_stylus\": \"folder-stylus\",\n \"__stylus__\": \"folder-stylus\",\n \"flow-typed\": \"folder-flow\",\n \".flow-typed\": \"folder-flow\",\n \"_flow-typed\": \"folder-flow\",\n \"__flow-typed__\": \"folder-flow\",\n \"rule\": \"folder-rules\",\n \".rule\": \"folder-rules\",\n \"_rule\": \"folder-rules\",\n \"__rule__\": \"folder-rules\",\n \"rules\": \"folder-rules\",\n \".rules\": \"folder-rules\",\n \"_rules\": \"folder-rules\",\n \"__rules__\": \"folder-rules\",\n \"validation\": \"folder-rules\",\n \".validation\": \"folder-rules\",\n \"_validation\": \"folder-rules\",\n \"__validation__\": \"folder-rules\",\n \"validations\": \"folder-rules\",\n \".validations\": \"folder-rules\",\n \"_validations\": \"folder-rules\",\n \"__validations__\": \"folder-rules\",\n \"validator\": \"folder-rules\",\n \".validator\": \"folder-rules\",\n \"_validator\": \"folder-rules\",\n \"__validator__\": \"folder-rules\",\n \"validators\": \"folder-rules\",\n \".validators\": \"folder-rules\",\n \"_validators\": \"folder-rules\",\n \"__validators__\": \"folder-rules\",\n \"review\": \"folder-review\",\n \".review\": \"folder-review\",\n \"_review\": \"folder-review\",\n \"__review__\": \"folder-review\",\n \"reviews\": \"folder-review\",\n \".reviews\": \"folder-review\",\n \"_reviews\": \"folder-review\",\n \"__reviews__\": \"folder-review\",\n \"revisal\": \"folder-review\",\n \".revisal\": \"folder-review\",\n \"_revisal\": \"folder-review\",\n \"__revisal__\": \"folder-review\",\n \"revisals\": \"folder-review\",\n \".revisals\": \"folder-review\",\n \"_revisals\": \"folder-review\",\n \"__revisals__\": \"folder-review\",\n \"reviewed\": \"folder-review\",\n \".reviewed\": \"folder-review\",\n \"_reviewed\": \"folder-review\",\n \"__reviewed__\": \"folder-review\",\n \"anim\": \"folder-animation\",\n \".anim\": \"folder-animation\",\n \"_anim\": \"folder-animation\",\n \"__anim__\": \"folder-animation\",\n \"anims\": \"folder-animation\",\n \".anims\": \"folder-animation\",\n \"_anims\": \"folder-animation\",\n \"__anims__\": \"folder-animation\",\n \"animation\": \"folder-animation\",\n \".animation\": \"folder-animation\",\n \"_animation\": \"folder-animation\",\n \"__animation__\": \"folder-animation\",\n \"animations\": \"folder-animation\",\n \".animations\": \"folder-animation\",\n \"_animations\": \"folder-animation\",\n \"__animations__\": \"folder-animation\",\n \"animated\": \"folder-animation\",\n \".animated\": \"folder-animation\",\n \"_animated\": \"folder-animation\",\n \"__animated__\": \"folder-animation\",\n \"guard\": \"folder-guard\",\n \".guard\": \"folder-guard\",\n \"_guard\": \"folder-guard\",\n \"__guard__\": \"folder-guard\",\n \"guards\": \"folder-guard\",\n \".guards\": \"folder-guard\",\n \"_guards\": \"folder-guard\",\n \"__guards__\": \"folder-guard\",\n \"prisma\": \"folder-prisma\",\n \".prisma\": \"folder-prisma\",\n \"_prisma\": \"folder-prisma\",\n \"__prisma__\": \"folder-prisma\",\n \"pipe\": \"folder-pipe\",\n \".pipe\": \"folder-pipe\",\n \"_pipe\": \"folder-pipe\",\n \"__pipe__\": \"folder-pipe\",\n \"pipes\": \"folder-pipe\",\n \".pipes\": \"folder-pipe\",\n \"_pipes\": \"folder-pipe\",\n \"__pipes__\": \"folder-pipe\",\n \"svg\": \"folder-svg\",\n \".svg\": \"folder-svg\",\n \"_svg\": \"folder-svg\",\n \"__svg__\": \"folder-svg\",\n \"svgs\": \"folder-svg\",\n \".svgs\": \"folder-svg\",\n \"_svgs\": \"folder-svg\",\n \"__svgs__\": \"folder-svg\",\n \"terraform\": \"folder-terraform\",\n \".terraform\": \"folder-terraform\",\n \"_terraform\": \"folder-terraform\",\n \"__terraform__\": \"folder-terraform\",\n \"mobile\": \"folder-mobile\",\n \".mobile\": \"folder-mobile\",\n \"_mobile\": \"folder-mobile\",\n \"__mobile__\": \"folder-mobile\",\n \"mobiles\": \"folder-mobile\",\n \".mobiles\": \"folder-mobile\",\n \"_mobiles\": \"folder-mobile\",\n \"__mobiles__\": \"folder-mobile\",\n \"portable\": \"folder-mobile\",\n \".portable\": \"folder-mobile\",\n \"_portable\": \"folder-mobile\",\n \"__portable__\": \"folder-mobile\",\n \"portability\": \"folder-mobile\",\n \".portability\": \"folder-mobile\",\n \"_portability\": \"folder-mobile\",\n \"__portability__\": \"folder-mobile\",\n \"stencil\": \"folder-stencil\",\n \".stencil\": \"folder-stencil\",\n \"_stencil\": \"folder-stencil\",\n \"__stencil__\": \"folder-stencil\",\n \"firebase\": \"folder-firebase\",\n \".firebase\": \"folder-firebase\",\n \"_firebase\": \"folder-firebase\",\n \"__firebase__\": \"folder-firebase\",\n \"svelte\": \"folder-svelte\",\n \".svelte\": \"folder-svelte\",\n \"_svelte\": \"folder-svelte\",\n \"__svelte__\": \"folder-svelte\",\n \"svelte-kit\": \"folder-svelte\",\n \".svelte-kit\": \"folder-svelte\",\n \"_svelte-kit\": \"folder-svelte\",\n \"__svelte-kit__\": \"folder-svelte\",\n \"update\": \"folder-update\",\n \".update\": \"folder-update\",\n \"_update\": \"folder-update\",\n \"__update__\": \"folder-update\",\n \"updates\": \"folder-update\",\n \".updates\": \"folder-update\",\n \"_updates\": \"folder-update\",\n \"__updates__\": \"folder-update\",\n \"upgrade\": \"folder-update\",\n \".upgrade\": \"folder-update\",\n \"_upgrade\": \"folder-update\",\n \"__upgrade__\": \"folder-update\",\n \"upgrades\": \"folder-update\",\n \".upgrades\": \"folder-update\",\n \"_upgrades\": \"folder-update\",\n \"__upgrades__\": \"folder-update\",\n \"idea\": \"folder-intellij\",\n \".idea\": \"folder-intellij\",\n \"_idea\": \"folder-intellij\",\n \"__idea__\": \"folder-intellij\",\n \"azure-pipelines\": \"folder-azure-pipelines\",\n \".azure-pipelines\": \"folder-azure-pipelines\",\n \"_azure-pipelines\": \"folder-azure-pipelines\",\n \"__azure-pipelines__\": \"folder-azure-pipelines\",\n \"azure-pipelines-ci\": \"folder-azure-pipelines\",\n \".azure-pipelines-ci\": \"folder-azure-pipelines\",\n \"_azure-pipelines-ci\": \"folder-azure-pipelines\",\n \"__azure-pipelines-ci__\": \"folder-azure-pipelines\",\n \"mjml\": \"folder-mjml\",\n \".mjml\": \"folder-mjml\",\n \"_mjml\": \"folder-mjml\",\n \"__mjml__\": \"folder-mjml\",\n \"admin\": \"folder-admin\",\n \".admin\": \"folder-admin\",\n \"_admin\": \"folder-admin\",\n \"__admin__\": \"folder-admin\",\n \"admins\": \"folder-admin\",\n \".admins\": \"folder-admin\",\n \"_admins\": \"folder-admin\",\n \"__admins__\": \"folder-admin\",\n \"manager\": \"folder-admin\",\n \".manager\": \"folder-admin\",\n \"_manager\": \"folder-admin\",\n \"__manager__\": \"folder-admin\",\n \"managers\": \"folder-admin\",\n \".managers\": \"folder-admin\",\n \"_managers\": \"folder-admin\",\n \"__managers__\": \"folder-admin\",\n \"moderator\": \"folder-admin\",\n \".moderator\": \"folder-admin\",\n \"_moderator\": \"folder-admin\",\n \"__moderator__\": \"folder-admin\",\n \"moderators\": \"folder-admin\",\n \".moderators\": \"folder-admin\",\n \"_moderators\": \"folder-admin\",\n \"__moderators__\": \"folder-admin\",\n \"scala\": \"folder-scala\",\n \".scala\": \"folder-scala\",\n \"_scala\": \"folder-scala\",\n \"__scala__\": \"folder-scala\",\n \"connection\": \"folder-connection\",\n \".connection\": \"folder-connection\",\n \"_connection\": \"folder-connection\",\n \"__connection__\": \"folder-connection\",\n \"connections\": \"folder-connection\",\n \".connections\": \"folder-connection\",\n \"_connections\": \"folder-connection\",\n \"__connections__\": \"folder-connection\",\n \"integration\": \"folder-connection\",\n \".integration\": \"folder-connection\",\n \"_integration\": \"folder-connection\",\n \"__integration__\": \"folder-connection\",\n \"integrations\": \"folder-connection\",\n \".integrations\": \"folder-connection\",\n \"_integrations\": \"folder-connection\",\n \"__integrations__\": \"folder-connection\",\n \"quasar\": \"folder-quasar\",\n \".quasar\": \"folder-quasar\",\n \"_quasar\": \"folder-quasar\",\n \"__quasar__\": \"folder-quasar\",\n \"next\": \"folder-next\",\n \".next\": \"folder-next\",\n \"_next\": \"folder-next\",\n \"__next__\": \"folder-next\",\n \"cobol\": \"folder-cobol\",\n \".cobol\": \"folder-cobol\",\n \"_cobol\": \"folder-cobol\",\n \"__cobol__\": \"folder-cobol\",\n \"yarn\": \"folder-yarn\",\n \".yarn\": \"folder-yarn\",\n \"_yarn\": \"folder-yarn\",\n \"__yarn__\": \"folder-yarn\",\n \"husky\": \"folder-husky\",\n \".husky\": \"folder-husky\",\n \"_husky\": \"folder-husky\",\n \"__husky__\": \"folder-husky\",\n \"storybook\": \"folder-storybook\",\n \".storybook\": \"folder-storybook\",\n \"_storybook\": \"folder-storybook\",\n \"__storybook__\": \"folder-storybook\",\n \"stories\": \"folder-storybook\",\n \".stories\": \"folder-storybook\",\n \"_stories\": \"folder-storybook\",\n \"__stories__\": \"folder-storybook\",\n \"base\": \"folder-base\",\n \".base\": \"folder-base\",\n \"_base\": \"folder-base\",\n \"__base__\": \"folder-base\",\n \"bases\": \"folder-base\",\n \".bases\": \"folder-base\",\n \"_bases\": \"folder-base\",\n \"__bases__\": \"folder-base\",\n \"cart\": \"folder-cart\",\n \".cart\": \"folder-cart\",\n \"_cart\": \"folder-cart\",\n \"__cart__\": \"folder-cart\",\n \"shopping-cart\": \"folder-cart\",\n \".shopping-cart\": \"folder-cart\",\n \"_shopping-cart\": \"folder-cart\",\n \"__shopping-cart__\": \"folder-cart\",\n \"shopping\": \"folder-cart\",\n \".shopping\": \"folder-cart\",\n \"_shopping\": \"folder-cart\",\n \"__shopping__\": \"folder-cart\",\n \"shop\": \"folder-cart\",\n \".shop\": \"folder-cart\",\n \"_shop\": \"folder-cart\",\n \"__shop__\": \"folder-cart\",\n \"home\": \"folder-home\",\n \".home\": \"folder-home\",\n \"_home\": \"folder-home\",\n \"__home__\": \"folder-home\",\n \"start\": \"folder-home\",\n \".start\": \"folder-home\",\n \"_start\": \"folder-home\",\n \"__start__\": \"folder-home\",\n \"project\": \"folder-project\",\n \".project\": \"folder-project\",\n \"_project\": \"folder-project\",\n \"__project__\": \"folder-project\",\n \"projects\": \"folder-project\",\n \".projects\": \"folder-project\",\n \"_projects\": \"folder-project\",\n \"__projects__\": \"folder-project\",\n \"interface\": \"folder-interface\",\n \".interface\": \"folder-interface\",\n \"_interface\": \"folder-interface\",\n \"__interface__\": \"folder-interface\",\n \"interfaces\": \"folder-interface\",\n \".interfaces\": \"folder-interface\",\n \"_interfaces\": \"folder-interface\",\n \"__interfaces__\": \"folder-interface\",\n \"netlify\": \"folder-netlify\",\n \".netlify\": \"folder-netlify\",\n \"_netlify\": \"folder-netlify\",\n \"__netlify__\": \"folder-netlify\",\n \"enum\": \"folder-enum\",\n \".enum\": \"folder-enum\",\n \"_enum\": \"folder-enum\",\n \"__enum__\": \"folder-enum\",\n \"enums\": \"folder-enum\",\n \".enums\": \"folder-enum\",\n \"_enums\": \"folder-enum\",\n \"__enums__\": \"folder-enum\",\n \"pact\": \"folder-contract\",\n \".pact\": \"folder-contract\",\n \"_pact\": \"folder-contract\",\n \"__pact__\": \"folder-contract\",\n \"pacts\": \"folder-contract\",\n \".pacts\": \"folder-contract\",\n \"_pacts\": \"folder-contract\",\n \"__pacts__\": \"folder-contract\",\n \"contract\": \"folder-contract\",\n \".contract\": \"folder-contract\",\n \"_contract\": \"folder-contract\",\n \"__contract__\": \"folder-contract\",\n \"contracts\": \"folder-contract\",\n \".contracts\": \"folder-contract\",\n \"_contracts\": \"folder-contract\",\n \"__contracts__\": \"folder-contract\",\n \"contract-testing\": \"folder-contract\",\n \".contract-testing\": \"folder-contract\",\n \"_contract-testing\": \"folder-contract\",\n \"__contract-testing__\": \"folder-contract\",\n \"contract-test\": \"folder-contract\",\n \".contract-test\": \"folder-contract\",\n \"_contract-test\": \"folder-contract\",\n \"__contract-test__\": \"folder-contract\",\n \"contract-tests\": \"folder-contract\",\n \".contract-tests\": \"folder-contract\",\n \"_contract-tests\": \"folder-contract\",\n \"__contract-tests__\": \"folder-contract\",\n \"queue\": \"folder-queue\",\n \".queue\": \"folder-queue\",\n \"_queue\": \"folder-queue\",\n \"__queue__\": \"folder-queue\",\n \"queues\": \"folder-queue\",\n \".queues\": \"folder-queue\",\n \"_queues\": \"folder-queue\",\n \"__queues__\": \"folder-queue\",\n \"bull\": \"folder-queue\",\n \".bull\": \"folder-queue\",\n \"_bull\": \"folder-queue\",\n \"__bull__\": \"folder-queue\",\n \"mq\": \"folder-queue\",\n \".mq\": \"folder-queue\",\n \"_mq\": \"folder-queue\",\n \"__mq__\": \"folder-queue\",\n \"vercel\": \"folder-vercel\",\n \".vercel\": \"folder-vercel\",\n \"_vercel\": \"folder-vercel\",\n \"__vercel__\": \"folder-vercel\",\n \"now\": \"folder-vercel\",\n \".now\": \"folder-vercel\",\n \"_now\": \"folder-vercel\",\n \"__now__\": \"folder-vercel\",\n \"cypress\": \"folder-cypress\",\n \".cypress\": \"folder-cypress\",\n \"_cypress\": \"folder-cypress\",\n \"__cypress__\": \"folder-cypress\",\n \"decorator\": \"folder-decorators\",\n \".decorator\": \"folder-decorators\",\n \"_decorator\": \"folder-decorators\",\n \"__decorator__\": \"folder-decorators\",\n \"decorators\": \"folder-decorators\",\n \".decorators\": \"folder-decorators\",\n \"_decorators\": \"folder-decorators\",\n \"__decorators__\": \"folder-decorators\",\n \"java\": \"folder-java\",\n \".java\": \"folder-java\",\n \"_java\": \"folder-java\",\n \"__java__\": \"folder-java\",\n \"resolver\": \"folder-resolver\",\n \".resolver\": \"folder-resolver\",\n \"_resolver\": \"folder-resolver\",\n \"__resolver__\": \"folder-resolver\",\n \"resolvers\": \"folder-resolver\",\n \".resolvers\": \"folder-resolver\",\n \"_resolvers\": \"folder-resolver\",\n \"__resolvers__\": \"folder-resolver\",\n \"angular\": \"folder-angular\",\n \".angular\": \"folder-angular\",\n \"_angular\": \"folder-angular\",\n \"__angular__\": \"folder-angular\",\n \"unity\": \"folder-unity\",\n \".unity\": \"folder-unity\",\n \"_unity\": \"folder-unity\",\n \"__unity__\": \"folder-unity\",\n \"pdf\": \"folder-pdf\",\n \".pdf\": \"folder-pdf\",\n \"_pdf\": \"folder-pdf\",\n \"__pdf__\": \"folder-pdf\",\n \"pdfs\": \"folder-pdf\",\n \".pdfs\": \"folder-pdf\",\n \"_pdfs\": \"folder-pdf\",\n \"__pdfs__\": \"folder-pdf\",\n \"protobuf\": \"folder-proto\",\n \".protobuf\": \"folder-proto\",\n \"_protobuf\": \"folder-proto\",\n \"__protobuf__\": \"folder-proto\",\n \"protobufs\": \"folder-proto\",\n \".protobufs\": \"folder-proto\",\n \"_protobufs\": \"folder-proto\",\n \"__protobufs__\": \"folder-proto\",\n \"proto\": \"folder-proto\",\n \".proto\": \"folder-proto\",\n \"_proto\": \"folder-proto\",\n \"protos\": \"folder-proto\",\n \".protos\": \"folder-proto\",\n \"_protos\": \"folder-proto\",\n \"__protos__\": \"folder-proto\",\n \"plastic\": \"folder-plastic\",\n \".plastic\": \"folder-plastic\",\n \"_plastic\": \"folder-plastic\",\n \"__plastic__\": \"folder-plastic\",\n \"gamemaker\": \"folder-gamemaker\",\n \".gamemaker\": \"folder-gamemaker\",\n \"_gamemaker\": \"folder-gamemaker\",\n \"__gamemaker__\": \"folder-gamemaker\",\n \"gamemaker2\": \"folder-gamemaker\",\n \".gamemaker2\": \"folder-gamemaker\",\n \"_gamemaker2\": \"folder-gamemaker\",\n \"__gamemaker2__\": \"folder-gamemaker\",\n \"hg\": \"folder-mercurial\",\n \".hg\": \"folder-mercurial\",\n \"_hg\": \"folder-mercurial\",\n \"__hg__\": \"folder-mercurial\",\n \"hghooks\": \"folder-mercurial\",\n \".hghooks\": \"folder-mercurial\",\n \"_hghooks\": \"folder-mercurial\",\n \"__hghooks__\": \"folder-mercurial\",\n \"hgext\": \"folder-mercurial\",\n \".hgext\": \"folder-mercurial\",\n \"_hgext\": \"folder-mercurial\",\n \"__hgext__\": \"folder-mercurial\",\n \"godot\": \"folder-godot\",\n \".godot\": \"folder-godot\",\n \"_godot\": \"folder-godot\",\n \"__godot__\": \"folder-godot\",\n \"godot-cpp\": \"folder-godot\",\n \".godot-cpp\": \"folder-godot\",\n \"_godot-cpp\": \"folder-godot\",\n \"__godot-cpp__\": \"folder-godot\",\n \"lottie\": \"folder-lottie\",\n \".lottie\": \"folder-lottie\",\n \"_lottie\": \"folder-lottie\",\n \"__lottie__\": \"folder-lottie\",\n \"lotties\": \"folder-lottie\",\n \".lotties\": \"folder-lottie\",\n \"_lotties\": \"folder-lottie\",\n \"__lotties__\": \"folder-lottie\",\n \"lottiefiles\": \"folder-lottie\",\n \".lottiefiles\": \"folder-lottie\",\n \"_lottiefiles\": \"folder-lottie\",\n \"__lottiefiles__\": \"folder-lottie\",\n \"taskfile\": \"folder-taskfile\",\n \".taskfile\": \"folder-taskfile\",\n \"_taskfile\": \"folder-taskfile\",\n \"__taskfile__\": \"folder-taskfile\",\n \"taskfiles\": \"folder-taskfile\",\n \".taskfiles\": \"folder-taskfile\",\n \"_taskfiles\": \"folder-taskfile\",\n \"__taskfiles__\": \"folder-taskfile\",\n \"cloudflare\": \"folder-cloudflare\",\n \".cloudflare\": \"folder-cloudflare\",\n \"_cloudflare\": \"folder-cloudflare\",\n \"__cloudflare__\": \"folder-cloudflare\",\n \"seeds\": \"folder-seeders\",\n \".seeds\": \"folder-seeders\",\n \"_seeds\": \"folder-seeders\",\n \"__seeds__\": \"folder-seeders\",\n \"seeders\": \"folder-seeders\",\n \".seeders\": \"folder-seeders\",\n \"_seeders\": \"folder-seeders\",\n \"__seeders__\": \"folder-seeders\",\n \"seed\": \"folder-seeders\",\n \".seed\": \"folder-seeders\",\n \"_seed\": \"folder-seeders\",\n \"__seed__\": \"folder-seeders\",\n \"seeding\": \"folder-seeders\",\n \".seeding\": \"folder-seeders\",\n \"_seeding\": \"folder-seeders\",\n \"__seeding__\": \"folder-seeders\"\n }\n}\n","import iconMap from './icon-map.json';\nimport type { FileExtensionsKey, FileNamesKey, FolderNamesKey } from './type';\n\nfunction getFileExtension(fileName: string): string {\n return fileName.slice(Math.max(0, fileName.lastIndexOf('.') + 1));\n}\n\nfunction getFileSuffix(fileName: string): FileExtensionsKey {\n return fileName.slice(fileName.indexOf('.') + 1) as FileExtensionsKey;\n}\n\nexport function filenameFromPath(path: string): string {\n const segments = path.split('/');\n return segments.at(-1) ?? path;\n}\n\nexport function getIconNameForFileName(fileName: string) {\n return (\n iconMap.fileNames[fileName as FileNamesKey] ??\n iconMap.fileNames[fileName.toLowerCase() as FileNamesKey] ??\n iconMap.fileExtensions[getFileSuffix(fileName)] ??\n iconMap.fileExtensions[getFileExtension(fileName) as FileExtensionsKey] ??\n (fileName.endsWith('.html') ? 'html' : null) ??\n (fileName.endsWith('.ts') ? 'typescript' : null) ??\n (fileName.endsWith('.js') ? 'javascript' : null) ??\n 'file'\n );\n}\n\nexport function getIconNameForDirectoryName(dirName: string) {\n return (\n iconMap.folderNames[dirName as FolderNamesKey] ??\n iconMap.folderNames[dirName.toLowerCase() as FolderNamesKey] ??\n 'folder'\n );\n}\n\nexport function getIconForFilePath(path: string) {\n const fileName = filenameFromPath(path);\n return getIconNameForFileName(fileName);\n}\n\nexport function getIconForDirectoryPath(path: string) {\n const dirName = filenameFromPath(path);\n return getIconNameForDirectoryName(dirName);\n}\n\nexport function getIconUrlByName(iconName: string, iconsUrl: string, open?: boolean): string {\n return `${iconsUrl}/${iconName.toString()}${open ? '-open' : ''}.svg`;\n}\n\nexport function getIconUrlForFilePath({\n path,\n iconsUrl,\n fallbackUnknownType,\n}: {\n fallbackUnknownType: boolean;\n iconsUrl: string;\n path: string;\n}): string {\n const iconName = getIconForFilePath(path);\n if (fallbackUnknownType && iconName === 'file') return '';\n return getIconUrlByName(iconName, iconsUrl);\n}\n\nexport function getIconUrlForDirectoryPath({\n path,\n iconsUrl,\n open,\n fallbackUnknownType,\n}: {\n fallbackUnknownType: boolean;\n iconsUrl: string;\n open?: boolean;\n path: string;\n}): string {\n const iconName = getIconForDirectoryPath(path);\n if (fallbackUnknownType && iconName === 'folder') return '';\n return getIconUrlByName(iconName, iconsUrl, open);\n}\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const prefix = 'lobe-code-diff';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actions: css`\n position: absolute;\n z-index: 2;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n\n opacity: 0;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n `,\n additions: css`\n color: ${cssVar.colorSuccess};\n font-family: ${cssVar.fontFamilyCode};\n font-size: 12px;\n `,\n body: css`\n overflow: auto;\n\n width: 100%;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: 13px;\n line-height: 1.6;\n\n /* Override @pierre/diffs shadow DOM CSS variables */\n --pdiff-font-family: ${cssVar.fontFamilyCode};\n --pdiff-font-size: 13px;\n --pdiff-line-height: 1.6;\n --pdiff-bg-color: transparent;\n --pdiff-border-color: ${cssVar.colorBorderSecondary};\n --pdiff-gutter-bg: ${cssVar.colorFillQuaternary};\n --pdiff-gutter-color: ${cssVar.colorTextQuaternary};\n --pdiff-added-bg: ${cssVar.colorSuccessBgHover};\n --pdiff-added-highlight-bg: ${cssVar.colorSuccessBg};\n --pdiff-removed-bg: ${cssVar.colorErrorBgHover};\n --pdiff-removed-highlight-bg: ${cssVar.colorErrorBg};\n --pdiff-info-bg: ${cssVar.colorInfoBg};\n `,\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n deletions: css`\n color: ${cssVar.colorError};\n font-family: ${cssVar.fontFamilyCode};\n font-size: 12px;\n `,\n filled: cx(\n lobeStaticStylish.variantFilledWithoutHover,\n css`\n background: ${cssVar.colorFillQuaternary};\n `,\n ),\n header: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n padding: 8px 12px;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: 13px;\n color: ${cssVar.colorTextSecondary};\n\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n headerBorderless: css`\n padding-inline: 0;\n border-block-end: none;\n `,\n headerFilled: css`\n background: transparent;\n `,\n headerOutlined: css`\n background: ${cssVar.colorFillQuaternary};\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: cx(\n prefix,\n css`\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n border-radius: ${cssVar.borderRadius};\n\n transition: background-color 100ms ${cssVar.motionEaseOut};\n\n &:hover {\n .${prefix}-actions {\n opacity: 1;\n }\n }\n `,\n ),\n stats: css`\n display: flex;\n gap: 8px;\n align-items: center;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const headerVariants = cva(styles.header, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.headerFilled,\n outlined: styles.headerOutlined,\n borderless: styles.headerBorderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport type { FileDiffOptions } from '@pierre/diffs';\nimport { PatchDiff as PierrePatchDiff } from '@pierre/diffs/react';\nimport { cx } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\n\nimport { headerVariants, prefix, styles, variants } from './style';\nimport type { PatchDiffProps } from './type';\n\nconst countPatchChanges = (patch: string): { additions: number; deletions: number } => {\n const lines = patch.split('\\n');\n let additions = 0;\n let deletions = 0;\n\n for (const line of lines) {\n if (line.startsWith('+') && !line.startsWith('+++')) {\n additions++;\n } else if (line.startsWith('-') && !line.startsWith('---')) {\n deletions++;\n }\n }\n\n return { additions, deletions };\n};\n\nexport const PatchDiff = memo<PatchDiffProps>(\n ({\n patch,\n language,\n fileName,\n viewMode = 'split',\n showHeader = true,\n variant = 'filled',\n className,\n classNames,\n styles: customStyles,\n actionsRender,\n diffOptions,\n ...rest\n }) => {\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n // Try to extract filename from patch header\n const match = patch.match(/^(?:-{3}|\\+{3})\\s+(?:a\\/|b\\/)?(.+?)(?:\\t|$)/m);\n if (match?.[1]) return match[1];\n if (language) return language;\n return 'patch';\n }, [fileName, patch, language]);\n\n const { additions, deletions } = useMemo(() => countPatchChanges(patch), [patch]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return null;\n return actionsRender({\n originalNode: null,\n patch,\n });\n }, [actionsRender, patch]);\n\n const options = useMemo<FileDiffOptions<string>>(\n () => ({\n diffStyle: viewMode,\n disableFileHeader: true,\n ...diffOptions,\n }),\n [viewMode, diffOptions],\n );\n\n return (\n <Flexbox\n className={cx(variants({ variant }), className)}\n data-code-type=\"patch-diff\"\n {...rest}\n >\n {showHeader && (\n <div\n className={cx(headerVariants({ variant }), classNames?.header)}\n style={customStyles?.header}\n >\n <Flexbox align=\"center\" gap={8} horizontal>\n <MaterialFileTypeIcon filename={fileName || displayName} size={18} type=\"file\" />\n <span>{displayName}</span>\n </Flexbox>\n <Flexbox align=\"center\" gap={8} horizontal>\n {(deletions > 0 || additions > 0) && (\n <Flexbox className={styles.stats} gap={8} horizontal>\n {deletions > 0 && <span className={styles.deletions}>-{deletions}</span>}\n {additions > 0 && <span className={styles.additions}>+{additions}</span>}\n </Flexbox>\n )}\n {actions && (\n <Flexbox align=\"center\" className={cx(`${prefix}-actions`, styles.actions)} gap={4}>\n {actions}\n </Flexbox>\n )}\n </Flexbox>\n </div>\n )}\n <div className={cx(styles.body, classNames?.body)} style={customStyles?.body}>\n <PierrePatchDiff options={options} patch={patch} />\n </div>\n </Flexbox>\n );\n },\n);\n\nPatchDiff.displayName = 'PatchDiff';\n\nexport default PatchDiff;\n","'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { memo } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport { styles, variants } from '@/CodeEditor/style';\nimport { Flexbox } from '@/Flex';\nimport SyntaxHighlighter from '@/Highlighter/SyntaxHighlighter';\n\nimport { CodeEditorProps } from './type';\n\nconst CodeEditor = memo<CodeEditorProps>(\n ({\n autoFocus,\n classNames,\n styles: customStyles,\n defaultValue = '',\n onChange,\n placeholder = '',\n style,\n className,\n onValueChange,\n value,\n language = 'markdown',\n variant = 'borderless',\n width,\n height,\n flex,\n ref,\n ...rest\n }) => {\n const [code, setCode] = useMergeState(defaultValue, {\n defaultValue,\n onChange: onValueChange,\n value,\n });\n\n return (\n <Flexbox\n className={cx(variants({ variant }), className)}\n flex={flex}\n height={height}\n style={style}\n width={width}\n >\n {value ? (\n <SyntaxHighlighter\n className={cx(styles.highlight, classNames?.highlight)}\n language={language}\n style={customStyles?.highlight}\n variant={variant}\n >\n {value}\n </SyntaxHighlighter>\n ) : (\n <pre\n className={cx(styles.highlight, classNames?.highlight)}\n style={{\n color: cssVar.colorTextDescription,\n }}\n >\n {placeholder || ' '}\n </pre>\n )}\n\n <textarea\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoFocus={autoFocus}\n className={cx(styles.textarea, classNames?.textarea)}\n data-gramm={false}\n onChange={(e) => {\n onChange?.(e);\n setCode(e.target.value);\n }}\n ref={ref}\n style={customStyles?.textarea}\n value={code}\n {...rest}\n />\n </Flexbox>\n );\n },\n);\n\nCodeEditor.displayName = 'CodeEditor';\n\nexport default CodeEditor;\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: cx(\n lobeStaticStylish.variantBorderlessWithoutHover,\n css`\n border-radius: 0;\n\n pre,\n textarea {\n padding: 0;\n }\n `,\n ),\n filled: lobeStaticStylish.variantFilledWithoutHover,\n highlight: css`\n pointer-events: none;\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n\n overflow: hidden auto;\n\n width: 100%;\n height: fit-content;\n border-radius: ${cssVar.borderRadius};\n\n font-size: 12px;\n\n pre,\n textarea {\n margin: 0;\n padding: 16px;\n }\n\n textarea,\n pre,\n code {\n overflow: hidden;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: inherit;\n line-height: inherit;\n word-break: inherit;\n word-wrap: break-word;\n white-space: pre-wrap;\n }\n `,\n textarea: css`\n resize: none;\n\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n overflow: hidden;\n\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 0;\n border: none;\n\n color: transparent;\n text-align: start;\n\n background: transparent;\n outline: none;\n caret-color: ${cssVar.colorText};\n\n &::placeholder {\n color: ${cssVar.colorTextQuaternary};\n }\n\n &:focus {\n border: none;\n outline: none;\n box-shadow: none;\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport type { SyntaxHighlighterProps } from '../type';\nimport StaticRenderer from './StaticRenderer';\nimport StreamRenderer from './StreamRenderer';\nimport { variants } from './style';\n\nconst SyntaxHighlighter = memo<SyntaxHighlighterProps>(\n ({\n animated,\n children,\n className,\n enableTransformer,\n language,\n style,\n theme,\n variant = 'borderless',\n }) => {\n const isDefaultTheme = theme === 'lobe-theme' || !theme;\n const showBackground = !isDefaultTheme && variant === 'filled';\n const resolvedTheme = isDefaultTheme ? undefined : theme;\n\n const shikiClassName = cx(\n variants({ animated, shiki: true, showBackground, variant }),\n className,\n );\n const fallbackClassName = cx(\n variants({ animated, shiki: false, showBackground, variant }),\n className,\n );\n\n if (animated) {\n return (\n <StreamRenderer\n className={shikiClassName}\n enableTransformer={enableTransformer}\n fallbackClassName={fallbackClassName}\n language={language}\n style={style}\n theme={resolvedTheme}\n >\n {children}\n </StreamRenderer>\n );\n }\n\n return (\n <StaticRenderer\n className={shikiClassName}\n enableTransformer={enableTransformer}\n fallbackClassName={fallbackClassName}\n language={language}\n style={style}\n theme={resolvedTheme}\n >\n {children}\n </StaticRenderer>\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.language === nextProps.language,\n);\n\nSyntaxHighlighter.displayName = 'SyntaxHighlighter';\n\nexport default SyntaxHighlighter;\n","'use client';\n\nimport { CSSProperties, memo } from 'react';\nimport type { BuiltinTheme } from 'shiki';\n\nimport { useHighlight } from '@/hooks/useHighlight';\n\ninterface StaticRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\n// Escape HTML for fallback to prevent XSS\nconst escapeHtml = (str: string) =>\n str\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''');\n\n/**\n * Static renderer for syntax highlighting without animation\n * Uses useHighlight hook to generate HTML and renders it directly\n */\nconst StaticRenderer = memo<StaticRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const data = useHighlight(safeChildren, {\n enableTransformer,\n language,\n theme,\n });\n\n const hasData = typeof data === 'string' && data.length > 0;\n const containerClassName = hasData ? className : fallbackClassName;\n\n return (\n <div\n className={containerClassName}\n dangerouslySetInnerHTML={{\n __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>`,\n }}\n dir=\"ltr\"\n style={style}\n />\n );\n },\n);\n\nStaticRenderer.displayName = 'StaticRenderer';\n\nexport default StaticRenderer;\n","'use client';\n\nimport {\n transformerNotationDiff,\n transformerNotationErrorLevel,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport type { BuiltinTheme, CodeToHastOptions, ThemedToken } from 'shiki';\nimport { Md5 } from 'ts-md5';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\n// Application-level cache to avoid repeated calculations\nexport const MD5_LENGTH_THRESHOLD = 10_000; // Use async MD5 for text exceeding this length\n\nexport type StreamingHighlightResult = {\n lines: ThemedToken[][];\n preStyle?: CSSProperties;\n};\n\n// Application-level cache for highlighted HTML\n// Key: cacheKey string, Value: Promise<string>\nconst highlightCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 1000;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (highlightCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(highlightCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n highlightCache.delete(key);\n }\n }\n};\n\nexport type ICodeToHtml = (code: string, options: CodeToHastOptions) => Promise<string>;\nexport type ShikiModule = typeof import('shiki');\n\n// Use codeToHtml shorthand for better performance\n// It automatically manages highlighter instances and loads themes/languages on-demand\nlet codeToHtmlPromise: Promise<ICodeToHtml | null> | null = null;\n\nconst loadCodeToHtml = (): Promise<ICodeToHtml | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!codeToHtmlPromise) {\n codeToHtmlPromise = import('shiki').then((mod) => mod.codeToHtml ?? null);\n }\n\n return codeToHtmlPromise;\n};\n\n// Export shikiModulePromise for useStreamHighlight compatibility\nconst loadShikiModule = (): Promise<ShikiModule | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n return import('shiki');\n};\nexport const shikiModulePromise = loadShikiModule();\n\n// Helper function: Safe HTML escaping\nexport const escapeHtml = (str: string): string => {\n return str\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''');\n};\n\n// Main highlight component - optimized version without SWR\nconst customThemes = {\n 'lobe-theme': lobeTheme,\n};\n\nexport const useHighlight = (\n text: string,\n {\n language,\n enableTransformer,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n): string => {\n // Safely handle language and text with boundary checks\n const safeText = text ?? '';\n const lang = (language ?? 'plaintext').toLowerCase();\n\n // Match supported languages\n const matchedLanguage = useMemo(() => getCodeLanguageByInput(lang), [lang]);\n\n // Optimize transformer creation\n const transformers = useMemo(() => {\n if (!enableTransformer) return;\n return [\n transformerNotationDiff(),\n transformerNotationHighlight(),\n transformerNotationWordHighlight(),\n transformerNotationFocus(),\n transformerNotationErrorLevel(),\n ];\n }, [enableTransformer]);\n\n // Build cache key\n const cacheKey = useMemo((): string | null => {\n if (streaming) return null;\n // Use hash for long text\n const hash = safeText.length < MD5_LENGTH_THRESHOLD ? safeText : Md5.hashStr(safeText);\n return [matchedLanguage, builtinTheme, hash].filter(Boolean).join('-');\n }, [safeText, matchedLanguage, builtinTheme, streaming]);\n\n const [data, setData] = useState<string | undefined>();\n\n useEffect(() => {\n if (!cacheKey) {\n setData(undefined);\n return;\n }\n\n // Check cache first\n const cachedPromise = highlightCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((html) => {\n setData(html);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for highlighting\n // Using codeToHtml shorthand: automatically loads themes/languages on-demand\n const highlightPromise = (async (): Promise<string> => {\n try {\n // Try full rendering with transformers\n const shikiModule = await shikiModulePromise;\n if (!shikiModule) return safeText;\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n // Load custom theme if using slack-dark or slack-ochin\n if (!builtinTheme && effectiveTheme === 'lobe-theme') {\n const customTheme = customThemes[effectiveTheme];\n if (customTheme) {\n // Use getSingletonHighlighter to load custom theme\n const highlighter = await shikiModule.getSingletonHighlighter({\n langs: [matchedLanguage],\n themes: [customTheme as any],\n });\n\n const html = await highlighter.codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n }\n }\n\n // Fallback to codeToHtml for builtin themes\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n } catch (error_) {\n console.error('Advanced rendering failed:', error_);\n\n try {\n // Try simple rendering (without transformers)\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: 'lobe-theme',\n });\n return html;\n } catch {\n // Fallback to plain text\n const fallbackHtml = `<pre class=\"fallback\"><code>${escapeHtml(safeText)}</code></pre>`;\n return fallbackHtml;\n }\n }\n })();\n\n // Cache the promise\n highlightCache.set(cacheKey, highlightPromise);\n cleanupCache();\n\n // Handle promise result\n highlightPromise\n .then((html) => {\n // Only update if this is still the current cache key\n if (highlightCache.get(cacheKey) === highlightPromise) {\n setData(html);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (highlightCache.get(cacheKey) === highlightPromise) {\n highlightCache.delete(cacheKey);\n }\n });\n }, [cacheKey, safeText, matchedLanguage, builtinTheme, transformers, customThemes]);\n\n return data || '';\n};\n","import { bundledLanguagesInfo, bundledThemesInfo } from 'shiki';\n\ninterface HighlighterThemeItem {\n displayName: string;\n id: string;\n}\n\nexport const highlighterThemes: HighlighterThemeItem[] = [\n {\n displayName: 'Lobe Theme',\n id: 'lobe-theme',\n },\n ...bundledThemesInfo.map((item) => ({\n displayName: item.displayName,\n id: item.id,\n })),\n];\n\nexport const FALLBACK_LANG = 'plaintext';\n\nexport const getCodeLanguageByInput = (input: string): string => {\n if (!input) {\n return 'plaintext';\n }\n const inputLang = input.toLocaleLowerCase();\n\n const matchLang = bundledLanguagesInfo.find(\n (lang) => lang.id === inputLang || lang.aliases?.includes(inputLang),\n );\n return matchLang?.id || 'plaintext';\n};\n\nexport const getCodeLanguageFilename = (input: string): string => {\n if (!input) {\n return 'Plaintext';\n }\n const inputLang = input.toLocaleLowerCase();\n\n const matchLang = bundledLanguagesInfo.find(\n (lang) => lang.id === inputLang || lang.aliases?.includes(inputLang),\n );\n const type = matchLang?.aliases?.[0] || matchLang?.id || 'txt';\n return `*.${type}`;\n};\n\nexport const getCodeLanguageDisplayName = (input: string): string => {\n if (!input) {\n return 'Plaintext';\n }\n const inputLang = input.toLocaleLowerCase();\n\n const matchLang = bundledLanguagesInfo.find(\n (lang) => lang.id === inputLang || lang.aliases?.includes(inputLang),\n );\n return matchLang?.name || 'Plaintext';\n};\n","import { cssVar } from 'antd-style';\n\nexport default {\n displayName: 'Lobe Theme',\n name: 'lobe-theme',\n semanticHighlighting: true,\n tokenColors: [\n {\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'string',\n settings: {\n foreground: cssVar.colorSuccess,\n },\n },\n {\n scope: 'punctuation, constant.other.symbol',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'constant.character.escape, text.html constant.character.entity.named',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'constant.language.boolean',\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: 'constant.numeric',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope:\n 'variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'keyword.other',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'keyword, modifier, variable.language.this, support.type.object, constant.language',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'entity.name.function, support.function',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope: 'storage.type, storage.modifier, storage.control',\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: 'support.module, support.node',\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'support.type, constant.other.key',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'entity.name.type, entity.other.inherited-class, entity.other',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'comment',\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.colorTextQuaternary,\n },\n },\n {\n scope: 'comment punctuation.definition.comment, string.quoted.docstring',\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.colorTextQuaternary,\n },\n },\n {\n scope: 'punctuation',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'entity.name, entity.name.type.class, support.type, support.class, meta.use',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'variable.object.property, meta.field.declaration entity.name.function',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'meta.definition.method entity.name.function',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'meta.function entity.name.function',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope:\n 'template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'meta.embedded, source.groovy.embedded, meta.template.expression',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'entity.name.tag.yaml',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope:\n 'meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'constant.language.json',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'entity.other.attribute-name.class',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'entity.other.attribute-name.id',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'source.css entity.name.tag',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'support.type.property-name.css',\n settings: {\n foreground: cssVar.colorTextSecondary,\n },\n },\n {\n scope: 'meta.tag, punctuation.definition.tag',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'entity.name.tag',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'entity.other.attribute-name',\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: 'punctuation.definition.entity.html',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'markup.heading',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'text.html.markdown meta.link.inline, meta.link.reference',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'text.html.markdown beginning.punctuation.definition.list',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'markup.italic',\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'markup.bold',\n settings: {\n fontStyle: 'bold',\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'markup.bold markup.italic, markup.italic markup.bold',\n settings: {\n fontStyle: 'italic bold',\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'markup.fenced_code.block.markdown punctuation.definition.markdown',\n settings: {\n foreground: cssVar.colorSuccess,\n },\n },\n {\n scope: 'markup.inline.raw.string.markdown',\n settings: {\n foreground: cssVar.colorSuccess,\n },\n },\n {\n scope: 'keyword.other.definition.ini',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'entity.name.section.group-title.ini',\n settings: {\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'source.cs meta.class.identifier storage.type',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'source.cs meta.method.identifier entity.name.function',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'source.cs meta.method-call meta.method, source.cs entity.name.function',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope: 'source.cs storage.type',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'source.cs meta.method.return-type',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'source.cs meta.preprocessor',\n settings: {\n foreground: cssVar.colorTextQuaternary,\n },\n },\n {\n scope: 'source.cs entity.name.type.namespace',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'meta.jsx.children, SXNested',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'support.class.component',\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: 'source.cpp meta.block variable.other',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'source.python meta.member.access.python',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'source.python meta.function-call.python, meta.function-call.arguments',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope: 'meta.block',\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: 'entity.name.function.call',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope: 'source.php support.other.namespace, source.php meta.use support.class',\n settings: {\n foreground: cssVar.colorText,\n },\n },\n {\n scope: 'constant.keyword',\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: 'entity.name.function',\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n settings: {\n background: '#212121',\n foreground: cssVar.colorText,\n },\n },\n {\n scope: ['constant.other.placeholder'],\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: ['markup.deleted'],\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: ['markup.inserted'],\n settings: {\n foreground: cssVar.colorSuccess,\n },\n },\n {\n scope: ['markup.underline'],\n settings: {\n fontStyle: 'underline',\n },\n },\n {\n scope: ['keyword.control'],\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: ['variable.parameter'],\n settings: {\n fontStyle: 'italic',\n },\n },\n {\n scope: ['variable.parameter.function.language.special.self.python'],\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: ['constant.character.format.placeholder.other.python'],\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: ['markup.quote'],\n settings: {\n fontStyle: 'italic',\n foreground: cssVar.colorInfo,\n },\n },\n {\n scope: ['punctuation.definition.quote'],\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: ['meta.structure.dictionary.json support.type.property-name.json'],\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.volcano10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.colorWarning,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.geekblue10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.purple10,\n },\n },\n {\n scope: [\n 'meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json',\n ],\n settings: {\n foreground: cssVar.colorSuccess,\n },\n },\n ],\n type: 'dark',\n};\n","'use client';\n\nimport { getTokenStyleObject } from '@shikijs/core';\nimport { cx } from 'antd-style';\nimport type { CSSProperties } from 'react';\nimport { memo } from 'react';\nimport type { BuiltinTheme, ThemedToken } from 'shiki';\n\nimport { useStreamHighlight } from '@/hooks/useStreamHighlight';\n\ninterface StreamRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\nconst normalizeStyleKeys = (style: Record<string, string | number>): CSSProperties => {\n const normalized: CSSProperties = {};\n Object.entries(style).forEach(([key, value]) => {\n const normalizedKey = key.replaceAll(/-([a-z])/g, (_, char) => char.toUpperCase());\n (normalized as Record<string, string | number>)[normalizedKey] = value;\n });\n return normalized;\n};\n\nconst getTokenInlineStyle = (token: ThemedToken): CSSProperties => {\n const rawStyle = token.htmlStyle || getTokenStyleObject(token);\n const baseStyle = normalizeStyleKeys(rawStyle);\n return { ...baseStyle, whiteSpace: 'pre' };\n};\n\nconst TokenSpan = memo(\n ({ token }: { token: ThemedToken }) => {\n return (\n <span key={token.content} style={getTokenInlineStyle(token)}>\n {token.content}\n </span>\n );\n },\n (prev, next) => prev.token === next.token,\n);\n\nconst TokenLine = memo(\n ({ line }: { line: ThemedToken[] }) => {\n if (!line.length) {\n return (\n <span className=\"line\">\n <span style={{ whiteSpace: 'pre' }}>{'\\u00A0'}</span>\n </span>\n );\n }\n\n return (\n <span className=\"line\">\n {line.map((token, tokenIndex) => (\n <TokenSpan key={`token-${tokenIndex}`} token={token} />\n ))}\n </span>\n );\n },\n (prev, next) => prev.line === next.line,\n);\n\nconst StreamRenderer = memo<StreamRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const streaming = useStreamHighlight(safeChildren, {\n enableTransformer,\n language,\n streaming: true,\n theme,\n });\n\n const lines = streaming?.lines;\n const preStyle = streaming?.preStyle;\n\n if (!lines || lines.length === 0) {\n return (\n <div className={fallbackClassName} dir=\"ltr\" style={style}>\n <pre>\n <code>{safeChildren}</code>\n </pre>\n </div>\n );\n }\n\n return (\n <div className={className} dir=\"ltr\" style={style}>\n <pre className={cx('shiki', theme)} style={preStyle} tabIndex={0}>\n <code style={{ display: 'flex', flexDirection: 'column', whiteSpace: 'pre' }}>\n {lines.map((line, index) => (\n <TokenLine key={`line-${index}`} line={line} />\n ))}\n </code>\n </pre>\n </div>\n );\n },\n);\n\nStreamRenderer.displayName = 'StreamRenderer';\n\nexport default StreamRenderer;\n","'use client';\n\nimport { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { BuiltinTheme, ThemedToken } from 'shiki';\nimport { ShikiStreamTokenizer } from 'shiki-stream';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\nimport { StreamingHighlightResult, shikiModulePromise } from './useHighlight';\n\ntype StreamingOptions = {\n customThemes?: Record<string, any>;\n enabled?: boolean;\n language: string;\n theme: string;\n};\n\n// Optimized version: reduce array allocations and object spreading\nconst tokensToLineTokens = (tokens: ThemedToken[]): ThemedToken[][] => {\n if (!tokens.length) return [[]];\n\n const lines: ThemedToken[][] = [];\n let currentLine: ThemedToken[] = [];\n\n for (const token of tokens) {\n const content = token.content ?? '';\n\n if (content === '\\n') {\n lines.push(currentLine);\n currentLine = [];\n continue;\n }\n\n const newlineIndex = content.indexOf('\\n');\n if (newlineIndex === -1) {\n // No newline, add token directly\n currentLine.push(token);\n } else {\n // Split on newlines\n const segments = content.split('\\n');\n for (const [j, segment] of segments.entries()) {\n if (segment) {\n // Only create new object if we need to modify content\n currentLine.push(j === 0 && segment === content ? token : { ...token, content: segment });\n }\n if (j < segments.length - 1) {\n lines.push(currentLine);\n currentLine = [];\n }\n }\n }\n }\n\n // Don't forget the last line\n if (currentLine.length > 0 || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines.length > 0 ? lines : [[]];\n};\n\nconst createPreStyle = (bg?: string, fg?: string): CSSProperties | undefined => {\n if (!bg && !fg) return undefined;\n return {\n backgroundColor: bg,\n color: fg,\n };\n};\n\nconst useStreamingHighlighter = (\n text: string,\n options: StreamingOptions,\n): StreamingHighlightResult | undefined => {\n const { customThemes, enabled, language, theme } = options;\n const [result, setResult] = useState<StreamingHighlightResult>();\n const tokenizerRef = useRef<ShikiStreamTokenizer | null>(null);\n const previousTextRef = useRef('');\n const safeText = text ?? '';\n const latestTextRef = useRef(safeText);\n const preStyleRef = useRef<CSSProperties | undefined>(undefined);\n const linesRef = useRef<ThemedToken[][]>([[]]);\n\n useEffect(() => {\n latestTextRef.current = safeText;\n }, [safeText]);\n\n // Use ref to store callback to avoid recreating it\n const setStreamingResultRef = useRef((rawLines: ThemedToken[][]) => {\n const previousLines = linesRef.current;\n const newLinesLength = rawLines.length;\n const prevLinesLength = previousLines.length;\n\n // Fast path: if lengths differ or it's a complete reset, use new lines directly\n if (newLinesLength !== prevLinesLength || newLinesLength === 0) {\n linesRef.current = rawLines;\n setResult({\n lines: rawLines,\n preStyle: preStyleRef.current,\n });\n return;\n }\n\n // Optimized comparison: only check changed lines\n let hasChanges = false;\n const mergedLines: ThemedToken[][] = [];\n\n for (let i = 0; i < newLinesLength; i++) {\n const newLine = rawLines[i];\n const prevLine = previousLines[i];\n\n // Quick reference equality check first\n if (prevLine === newLine) {\n mergedLines[i] = prevLine;\n continue;\n }\n\n // Length check\n if (!prevLine || prevLine.length !== newLine.length) {\n mergedLines[i] = newLine;\n hasChanges = true;\n continue;\n }\n\n // Deep comparison only for lines that might have changed\n let lineChanged = false;\n for (const [j, newToken] of newLine.entries()) {\n if (prevLine[j] !== newToken) {\n lineChanged = true;\n break;\n }\n }\n\n if (lineChanged) {\n mergedLines[i] = newLine;\n hasChanges = true;\n } else {\n mergedLines[i] = prevLine;\n }\n }\n\n // Only update state if there are actual changes\n if (hasChanges) {\n linesRef.current = mergedLines;\n setResult({\n lines: mergedLines,\n preStyle: preStyleRef.current,\n });\n }\n });\n\n const updateTokens = useCallback(async (nextText: string, forceReset = false) => {\n const tokenizer = tokenizerRef.current;\n if (!tokenizer) return;\n\n if (forceReset) {\n tokenizer.clear();\n previousTextRef.current = '';\n }\n\n const previousText = previousTextRef.current;\n let chunk = nextText;\n const canAppend = !forceReset && nextText.startsWith(previousText);\n\n if (canAppend) {\n chunk = nextText.slice(previousText.length);\n } else if (!forceReset) {\n tokenizer.clear();\n }\n\n previousTextRef.current = nextText;\n\n if (!chunk) {\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const totalLength = stableTokens.length + unstableTokens.length;\n\n if (totalLength === 0) {\n setStreamingResultRef.current([[]]);\n return;\n }\n\n // Only create merged array if we have both stable and unstable tokens\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n return;\n }\n\n try {\n await tokenizer.enqueue(chunk);\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n } catch (error) {\n console.error('Streaming highlighting failed:', error);\n }\n }, []);\n\n // Cache highlighter key to avoid unnecessary recreations\n const highlighterKeyRef = useRef<string>('');\n\n useEffect(() => {\n if (!enabled) {\n tokenizerRef.current?.clear();\n tokenizerRef.current = null;\n previousTextRef.current = '';\n preStyleRef.current = undefined;\n linesRef.current = [[]];\n setResult(undefined);\n highlighterKeyRef.current = '';\n return;\n }\n\n // Skip if language/theme combination hasn't changed\n const currentKey = `${language}-${theme}`;\n if (highlighterKeyRef.current === currentKey && tokenizerRef.current) {\n return;\n }\n\n let cancelled = false;\n\n (async () => {\n const mod = await shikiModulePromise;\n if (!mod || cancelled) return;\n\n try {\n // Load custom theme if using slack-dark or slack-ochin\n let themesToLoad: any[] = [theme];\n if (customThemes && theme === 'lobe-theme') {\n const customTheme = customThemes[theme];\n if (customTheme) {\n themesToLoad = [customTheme as any];\n }\n }\n\n // Only load the specific language and theme needed\n // getSingletonHighlighter will cache the instance internally\n const highlighter = await mod.getSingletonHighlighter({\n langs: language ? [language] : ['plaintext'],\n themes: themesToLoad,\n });\n\n if (!highlighter || cancelled) return;\n\n // Only create new tokenizer if key changed\n if (highlighterKeyRef.current !== currentKey) {\n // Clear old tokenizer\n tokenizerRef.current?.clear();\n\n const tokenizer = new ShikiStreamTokenizer({\n highlighter,\n lang: language,\n theme,\n });\n\n tokenizerRef.current = tokenizer;\n highlighterKeyRef.current = currentKey;\n previousTextRef.current = '';\n linesRef.current = [[]];\n\n const themeInfo = highlighter.getTheme(theme);\n preStyleRef.current = createPreStyle(themeInfo?.bg, themeInfo?.fg);\n }\n\n const currentText = latestTextRef.current;\n if (currentText) {\n await updateTokens(currentText, true);\n } else {\n setStreamingResultRef.current([[]]);\n }\n } catch (error) {\n console.error('Streaming highlighter initialization failed:', error);\n // Reset on error\n highlighterKeyRef.current = '';\n }\n })();\n\n return () => {\n cancelled = true;\n // Cleanup only if this effect was cancelled before completion\n // The next effect will handle cleanup if key changed\n };\n }, [enabled, language, theme, updateTokens, customThemes]);\n\n // Separate effect for text updates to avoid unnecessary tokenizer recreation\n useEffect(() => {\n if (!enabled) return;\n if (!tokenizerRef.current) return;\n // Use ref to get latest text to avoid stale closures\n const currentText = latestTextRef.current;\n updateTokens(currentText);\n }, [enabled, safeText, updateTokens]);\n\n return result;\n};\n\nexport const useStreamHighlight = (\n text: string,\n {\n language,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n) => {\n // Safely handle language and text with boundary checks\n const safeText = text ?? '';\n const lang = (language ?? 'plaintext').toLowerCase();\n\n // Match supported languages\n const matchedLanguage = useMemo(() => getCodeLanguageByInput(lang), [lang]);\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n return useStreamingHighlighter(safeText, {\n customThemes: {\n 'lobe-theme': lobeTheme,\n },\n enabled: streaming,\n language: matchedLanguage,\n theme: effectiveTheme,\n });\n};\n","import { createStaticStyles, cx, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n `;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n .animate-fade-in,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n `,\n\n noBackground: css`\n pre {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n pre {\n padding: 0;\n }\n `,\n\n padding: css`\n pre {\n padding: 16px;\n }\n `,\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n\n pre {\n overflow-x: auto;\n margin: 0;\n }\n `,\n shiki: cx(\n 'ant-highlighter-highlighter-shiki',\n css`\n pre {\n user-select: none;\n\n code {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n .line {\n user-select: text;\n\n display: block;\n\n width: calc(100% + 32px);\n margin-block: 0;\n margin-inline: -16px;\n padding-block: 0;\n padding-inline: 16px;\n }\n }\n\n &.has-focused {\n .line:not(.focused) {\n opacity: 0.5;\n }\n }\n\n .highlighted {\n background: ${cssVar.colorFillTertiary};\n\n &.warning {\n background: ${cssVar.colorWarningBg};\n }\n\n &.error {\n background: ${cssVar.colorErrorBg};\n }\n }\n\n .highlighted-word {\n padding-block: 0.1em;\n padding-inline: 0.2em;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n }\n\n .diff {\n &.remove {\n background: ${cssVar.colorErrorBg};\n\n &::before {\n content: '-';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorErrorText};\n }\n }\n\n &.add {\n background: ${cssVar.colorSuccessBg};\n\n &::before {\n content: '+';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorSuccessText};\n }\n }\n }\n }\n `,\n ),\n unshiki: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n shiki: true,\n showBackground: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n shiki: {\n false: styles.unshiki,\n true: styles.shiki,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { Collapse as AntdCollapse, ConfigProvider } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDown } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { DEFAULT_PADDING, getPadding, styles, variants } from './style';\nimport type { CollapseProps } from './type';\n\nconst Collapse = memo<CollapseProps>(\n ({\n style,\n variant = 'filled',\n gap = 0,\n className,\n padding = DEFAULT_PADDING,\n size,\n collapsible = true,\n items,\n styles: customStyles,\n classNames,\n ref,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n\n const antdItems = useMemo(\n () =>\n items.map(({ icon, desc, label, ...itemRest }) => {\n let content = (\n <div\n className={cx(styles.title, !icon && !desc && classNames?.header, classNames?.title)}\n style={{\n ...(!icon && !desc ? customStyles?.header : {}),\n ...customStyles?.title,\n }}\n >\n {label}\n </div>\n );\n\n if (icon) {\n content = (\n <Flexbox\n className={cx(styles.title, !desc && classNames?.header)}\n gap={8}\n horizontal\n style={desc ? undefined : customStyles?.header}\n >\n {isValidElement(icon) ? icon : <Icon icon={icon} size={{ size: '1.1em' }} />}\n {content}\n </Flexbox>\n );\n }\n\n if (desc) {\n content = (\n <Flexbox className={classNames?.header} style={customStyles?.header}>\n {content}\n <div className={cx(styles.desc, classNames?.desc)} style={customStyles?.desc}>\n {desc}\n </div>\n </Flexbox>\n );\n }\n\n return {\n label: content,\n ...itemRest,\n };\n }),\n [items, classNames, customStyles, styles],\n );\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Collapse: {\n contentPadding: getPadding(typeof padding === 'object' ? padding?.body : padding),\n headerPadding: getPadding(typeof padding === 'object' ? padding?.header : padding),\n },\n },\n }}\n >\n <AntdCollapse\n className={cx(variants({ collapsible, gap: !!gap, isDarkMode, variant }), className)}\n collapsible={collapsible ? 'header' : 'icon'}\n expandIcon={({ isActive }) => (\n <Icon\n className={styles.icon}\n icon={ChevronDown}\n size={16}\n style={{ rotate: isActive ? undefined : '-90deg' }}\n />\n )}\n ghost\n items={antdItems}\n ref={ref}\n size={size}\n style={{\n gap,\n ...style,\n }}\n {...rest}\n />\n </ConfigProvider>\n );\n },\n);\n\nCollapse.displayName = 'Collapse';\n\nexport default Collapse;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const DEFAULT_PADDING = '12px 16px';\n\nexport const getPadding = (padding?: number | string) =>\n !padding && padding !== 0\n ? DEFAULT_PADDING\n : `${typeof padding === 'string' ? padding : `${padding}px`} !important`;\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n &.${prefixCls}-collapse {\n .${prefixCls}-collapse-header {\n padding-inline: 0;\n }\n .${prefixCls}-collapse-panel {\n padding-inline: 0;\n .${prefixCls}-collapse-body {\n padding-inline: 0;\n }\n }\n }\n `,\n desc: css`\n font-size: 12px;\n color: ${cssVar.colorTextDescription};\n `,\n filledDark: css`\n &.${prefixCls}-collapse {\n .${prefixCls}-collapse-item {\n background: ${cssVar.colorBgLayout};\n .${prefixCls}-collapse-panel {\n margin-inline: 3px;\n margin-block-end: 3px;\n border-radius: ${cssVar.borderRadius};\n ${lobeStaticStylish.variantOutlinedWithoutHover};\n }\n }\n }\n `,\n filledLight: css`\n &.${prefixCls}-collapse {\n .${prefixCls}-collapse-item {\n background: ${cssVar.colorFillQuaternary};\n .${prefixCls}-collapse-panel {\n margin-inline: 3px;\n margin-block-end: 3px;\n border-radius: ${cssVar.borderRadius};\n ${lobeStaticStylish.variantOutlinedWithoutHover};\n background: ${cssVar.colorBgContainer};\n ${lobeStaticStylish.shadow};\n }\n }\n }\n `,\n gapOutlined: css`\n &.${prefixCls}-collapse {\n border: none;\n background: transparent;\n .${prefixCls}-collapse-item {\n border: 1px solid ${cssVar.colorFillSecondary};\n background: ${cssVar.colorBgContainer};\n }\n\n .${prefixCls}-collapse-item:not(:first-child) {\n .${prefixCls}-collapse-header {\n border-block-start: none;\n }\n }\n }\n `,\n gapRoot: css`\n &.${prefixCls}-collapse {\n display: flex;\n flex-direction: column;\n border: none;\n box-shadow: none;\n .${prefixCls}-collapse-item {\n border: none;\n border-radius: ${cssVar.borderRadiusLG};\n }\n }\n `,\n hideCollapsibleIcon: css`\n .${prefixCls}-collapse-expand-icon {\n display: none !important;\n }\n `,\n icon: css`\n cursor: pointer;\n transition: all 100ms ${cssVar.motionEaseOut};\n `,\n outlined: css`\n &.${prefixCls}-collapse {\n border: 1px solid ${cssVar.colorFillSecondary};\n background: ${cssVar.colorBgContainer};\n .${prefixCls}-collapse-item .${prefixCls}-collapse-header {\n transition: none;\n }\n .${prefixCls}-collapse-item-active .${prefixCls}-collapse-header {\n border-block-end: 1px solid ${cssVar.colorFillTertiary};\n }\n .${prefixCls}-collapse-item:not(:first-child) {\n .${prefixCls}-collapse-header {\n border-block-start: 1px solid ${cssVar.colorFillTertiary};\n }\n }\n }\n `,\n root: css`\n &.${prefixCls}-collapse {\n display: flex;\n flex-direction: column;\n background: transparent;\n\n .${prefixCls}-collapse-header {\n overflow: hidden;\n display: flex;\n flex: none;\n gap: 0.75em;\n align-items: flex-start;\n\n border-radius: 0 !important;\n\n .${prefixCls}-collapse-header-text {\n flex: 1;\n }\n\n .${prefixCls}-collapse-expand-icon {\n align-items: center;\n min-height: 28px;\n margin: 0;\n padding: 0;\n }\n\n .${prefixCls}-collapse-extra {\n display: flex;\n align-items: center;\n min-height: 28px;\n }\n }\n\n .${prefixCls}-collapse-panel {\n background: transparent;\n }\n }\n `,\n title: css`\n font-size: 16px;\n font-weight: 500;\n line-height: 28px;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.gapOutlined,\n gap: true,\n variant: 'outlined',\n },\n {\n class: styles.filledDark,\n isDarkMode: true,\n variant: 'filled',\n },\n {\n class: styles.filledLight,\n isDarkMode: false,\n variant: 'filled',\n },\n ],\n defaultVariants: {\n collapsible: true,\n gap: false,\n isDarkMode: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n collapsible: {\n false: styles.hideCollapsibleIcon,\n true: null,\n },\n gap: {\n false: null,\n true: styles.gapRoot,\n },\n isDarkMode: {\n false: null,\n true: null,\n },\n variant: {\n borderless: styles.borderless,\n filled: null,\n outlined: styles.outlined,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { ColorPicker } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport chroma from 'chroma-js';\nimport { CheckIcon } from 'lucide-react';\nimport { rgba } from 'polished';\nimport { type FC, useMemo } from 'react';\nimport useMergeState from 'use-merge-value';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport Tooltip from '@/Tooltip';\nimport { safeReadableColor } from '@/utils/safeReadableColor';\n\nimport { styles } from './style';\nimport type { ColorSwatchesProps } from './type';\n\nconst ColorSwatches: FC<ColorSwatchesProps> = ({\n enableColorPicker,\n enableColorSwatches = true,\n defaultValue,\n value,\n style,\n colors,\n onChange,\n size = 24,\n shape = 'circle',\n texts,\n ref,\n ...rest\n}) => {\n const [active, setActive] = useMergeState(defaultValue, {\n defaultValue,\n onChange,\n value,\n });\n\n // Convert size prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--color-swatches-size': `${size}px`,\n }),\n [size],\n );\n\n const isCustomActive = useMemo(\n () => active && active !== cssVar.colorPrimary && !colors.some((c) => c.color === active),\n [active, colors],\n );\n\n return (\n <Flexbox\n gap={6}\n horizontal\n ref={ref}\n style={{\n ...cssVariables,\n flexWrap: 'wrap',\n ...style,\n }}\n {...rest}\n >\n {enableColorSwatches &&\n colors.map((c, i) => {\n const color = c.color || cssVar.colorPrimary;\n const isActive = (!active && !c.color) || color === active;\n // Check if color is transparent or CSS variable (which chroma can't parse)\n const isTransparent =\n c.color === 'transparent' ||\n (c.color &&\n !c.color.startsWith('var(') &&\n (() => {\n try {\n return chroma(c.color).alpha() === 0;\n } catch {\n return false;\n }\n })());\n // Get actual color value for readableColor (CSS variables can't be parsed)\n const actualColorForReadable = c.color?.startsWith('var(') ? cssVar.colorPrimary : color;\n return (\n <Tooltip key={c?.key || i} title={c.title}>\n <Center\n className={cx(\n styles.container,\n isTransparent && styles.transparent,\n isActive && styles.active,\n )}\n onClick={() => setActive(c.color || undefined)}\n style={{\n background: isTransparent ? undefined : color,\n borderRadius: shape === 'circle' ? '50%' : cssVar.borderRadius,\n }}\n >\n {isActive && (\n <Icon\n color={rgba(safeReadableColor(actualColorForReadable), 0.33)}\n icon={CheckIcon}\n size={{ size: 14, strokeWidth: 4 }}\n style={{\n pointerEvents: 'none',\n }}\n />\n )}\n </Center>\n </Tooltip>\n );\n })}\n {enableColorPicker && (\n <Tooltip title={texts?.custom || 'Custom'}>\n <ColorPicker\n arrow={false}\n className={cx(\n styles.picker,\n enableColorSwatches && styles.conic,\n isCustomActive && styles.active,\n )}\n defaultValue={cssVar.colorPrimary}\n disabledAlpha\n format={'hex'}\n onChangeComplete={(c) => {\n if (c.toHexString() === cssVar.colorPrimary) {\n setActive('');\n } else {\n setActive(c.toHexString());\n }\n }}\n presets={\n enableColorSwatches\n ? undefined\n : [\n {\n colors: colors.map((c) => c.color),\n label: texts?.presets || 'Presets',\n },\n ]\n }\n style={{\n borderRadius: shape === 'circle' ? '50%' : cssVar.borderRadius,\n }}\n value={enableColorSwatches ? undefined : active}\n />\n </Tooltip>\n )}\n </Flexbox>\n );\n};\n\nColorSwatches.displayName = 'ColorSwatches';\n\nexport default ColorSwatches;\n","import { createStaticStyles } from 'antd-style';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: css`\n box-shadow: inset 0 0 0 1px ${cssVar.colorFill};\n `,\n conic: css`\n background: conic-gradient(\n ${cssVar.red},\n ${cssVar.volcano},\n ${cssVar.orange},\n ${cssVar.gold},\n ${cssVar.yellow},\n ${cssVar.lime},\n ${cssVar.green},\n ${cssVar.cyan},\n ${cssVar.blue},\n ${cssVar.geekblue},\n ${cssVar.purple},\n ${cssVar.magenta},\n ${cssVar.red}\n );\n .${prefixCls}-color-picker-color-block {\n opacity: 0;\n }\n `,\n\n container: css`\n cursor: pointer;\n\n flex: none;\n\n width: var(--color-swatches-size, 24px);\n min-width: var(--color-swatches-size, 24px);\n height: var(--color-swatches-size, 24px);\n min-height: var(--color-swatches-size, 24px);\n\n background: ${cssVar.colorBgContainer};\n box-shadow: inset 0 0 0 1px ${cssVar.colorFillSecondary};\n\n &:hover {\n box-shadow:\n inset 0 0 0 1px rgba(0, 0, 0, 5%),\n 0 0 0 2px ${cssVar.colorText};\n }\n `,\n\n picker: css`\n overflow: hidden;\n flex: none;\n\n width: var(--color-swatches-size, 24px);\n min-width: var(--color-swatches-size, 24px);\n height: var(--color-swatches-size, 24px);\n min-height: var(--color-swatches-size, 24px);\n padding: 0;\n border: none;\n\n box-shadow: inset 0 0 0 1px ${cssVar.colorFillSecondary};\n\n &:hover {\n box-shadow:\n inset 0 0 0 1px ${cssVar.colorFillSecondary},\n 0 0 0 2px ${cssVar.colorText};\n }\n\n .${prefixCls}-color-picker-color-block {\n width: 100%;\n height: 100%;\n border: none;\n border-radius: inherit;\n }\n `,\n\n transparent: css`\n background-image: conic-gradient(\n ${cssVar.colorFillSecondary} 25%,\n transparent 25% 50%,\n ${cssVar.colorFillSecondary} 50% 75%,\n transparent 75% 100%\n );\n background-size: 50% 50%;\n `,\n };\n});\n","'use client';\n\nimport { ContextMenu } from '@base-ui/react/context-menu';\nimport { memo, useEffect, useMemo, useSyncExternalStore } from 'react';\n\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { usePortalContainer } from '@/hooks/usePortalContainer';\nimport { registerDevSingleton } from '@/utils/devSingleton';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { renderContextMenuItems } from './renderItems';\nimport {\n closeContextMenu,\n getServerSnapshot,\n getSnapshot,\n setContextMenuState,\n subscribe,\n updateLastPointer,\n} from './store';\nimport { styles } from './style';\n\nconst CONTEXT_MENU_CONTAINER_ATTR = 'data-lobe-ui-context-menu-container';\n\nexport const ContextMenuHost = memo(() => {\n const isClient = useIsClient();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n const DEV = process.env.NODE_ENV === 'development';\n if (!isClient || !DEV) return;\n // Enforce singleton per portal container (dev-only).\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n const contextMenuContainer = document.querySelector<HTMLElement>(\n `[${CONTEXT_MENU_CONTAINER_ATTR}=\"true\"]`,\n );\n const scope = themeApp ?? contextMenuContainer ?? document.body;\n return registerDevSingleton('ContextMenuHost', scope);\n }, [isClient]);\n\n useEffect(() => {\n const handler = (event: MouseEvent | PointerEvent) => updateLastPointer(event);\n window.addEventListener('pointerdown', handler, true);\n window.addEventListener('contextmenu', handler, true);\n return () => {\n window.removeEventListener('pointerdown', handler, true);\n window.removeEventListener('contextmenu', handler, true);\n };\n }, []);\n\n const menuItems = useMemo(\n () => renderContextMenuItems(state.items, [], { iconSpaceMode: state.iconSpaceMode }),\n [state.items, state.iconSpaceMode],\n );\n const portalContainer = usePortalContainer(CONTEXT_MENU_CONTAINER_ATTR);\n\n if (!isClient) return null;\n if (!state.open && state.items.length === 0) return null;\n if (!portalContainer) return null;\n\n return (\n <ContextMenu.Root\n onOpenChange={(open) => {\n if (open) {\n setContextMenuState({ open });\n return;\n }\n closeContextMenu();\n }}\n open={state.open}\n >\n <ContextMenu.Portal container={portalContainer}>\n <ContextMenu.Positioner\n anchor={state.anchor ?? undefined}\n className={styles.positioner}\n sideOffset={6}\n >\n <ContextMenu.Popup\n className={styles.popup}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n {menuItems}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n});\n\nContextMenuHost.displayName = 'ContextMenuHost';\n","const DEV = process.env.NODE_ENV === 'development';\n\ntype Registry = {\n global: Map<string, number>;\n scoped: Map<string, WeakMap<object, number>>;\n};\n\nconst GLOBAL_KEY = '__LOBE_UI_DEV_SINGLETON_REGISTRY__';\n\nconst getRegistry = (): Registry => {\n const g = globalThis as unknown as Record<string, unknown>;\n if (!g[GLOBAL_KEY]) {\n g[GLOBAL_KEY] = {\n global: new Map<string, number>(),\n scoped: new Map<string, WeakMap<object, number>>(),\n } satisfies Registry;\n }\n return g[GLOBAL_KEY] as Registry;\n};\n\nconst getScopedMap = (registry: Registry, name: string) => {\n const existing = registry.scoped.get(name);\n if (existing) return existing;\n const next = new WeakMap<object, number>();\n registry.scoped.set(name, next);\n return next;\n};\n\nconst singletonError = (name: string) =>\n new Error(\n `[lobe-ui] ${name} must be rendered only once in a single React tree. ` +\n `You probably mounted it multiple times (or in multiple roots).`,\n );\n\n/**\n * Dev-only singleton guard.\n * - If `scope` is provided, it's enforced per scope object (e.g. portal root).\n * - Otherwise it's enforced globally in the current JS runtime.\n */\nexport const registerDevSingleton = (name: string, scope?: object | null): (() => void) => {\n if (!DEV) return () => {};\n\n const registry = getRegistry();\n\n // Scoped singleton (preferred)\n if (scope) {\n const scoped = getScopedMap(registry, name);\n const prev = scoped.get(scope) ?? 0;\n const next = prev + 1;\n scoped.set(scope, next);\n\n if (next > 1) {\n // rollback to avoid poisoning the registry after throwing\n if (prev === 0) scoped.delete(scope);\n else scoped.set(scope, prev);\n throw singletonError(name);\n }\n\n return () => {\n const curr = scoped.get(scope) ?? 0;\n const after = curr - 1;\n if (after <= 0) scoped.delete(scope);\n else scoped.set(scope, after);\n };\n }\n\n // Global singleton (fallback)\n const prev = registry.global.get(name) ?? 0;\n const next = prev + 1;\n registry.global.set(name, next);\n\n if (next > 1) {\n // rollback to avoid poisoning the registry after throwing\n if (prev === 0) registry.global.delete(name);\n else registry.global.set(name, prev);\n throw singletonError(name);\n }\n\n return () => {\n const curr = registry.global.get(name) ?? 0;\n const after = curr - 1;\n if (after <= 0) registry.global.delete(name);\n else registry.global.set(name, after);\n };\n};\n","import { ContextMenu } from '@base-ui/react/context-menu';\nimport { Switch } from 'antd';\nimport { cx } from 'antd-style';\nimport { Check, ChevronRight } from 'lucide-react';\nimport type { MenuInfo } from 'rc-menu/es/interface';\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n} from 'react';\nimport { memo, useCallback, useState } from 'react';\n\nimport Icon from '@/Icon';\nimport {\n type MenuDividerType,\n type MenuItemGroupType,\n type MenuItemType,\n type RenderItemContentOptions,\n type RenderOptions,\n type SubMenuType,\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n} from '@/Menu';\nimport common from '@/i18n/resources/en/common';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { styles } from './style';\nimport type { ContextMenuCheckboxItem, ContextMenuItem, ContextMenuSwitchItem } from './type';\n\nexport type { IconSpaceMode } from '@/Menu';\n\nconst EmptyMenuItem = memo(() => {\n const { t } = useTranslation(common);\n return (\n <ContextMenu.Item className={cx(styles.item, styles.empty)} disabled>\n <div className={styles.itemContent}>\n <span className={styles.label}>{t('common.empty')}</span>\n </div>\n </ContextMenu.Item>\n );\n});\n\nEmptyMenuItem.displayName = 'EmptyMenuItem';\n\ninterface ContextMenuSwitchItemInternalProps {\n checked?: boolean;\n children: ReactNode;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst ContextMenuSwitchItemInternal = ({\n checked: checkedProp,\n children,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n label,\n onCheckedChange,\n}: ContextMenuSwitchItemInternalProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <ContextMenu.Item\n className={cx(styles.item, danger && styles.danger)}\n closeOnClick={closeOnClick}\n disabled={disabled}\n label={label}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <Switch\n checked={checked}\n disabled={disabled}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n size=\"small\"\n style={{ marginInlineStart: 16 }}\n />\n </ContextMenu.Item>\n );\n};\n\nconst renderItemContent = (\n item: MenuItemType | SubMenuType | ContextMenuCheckboxItem | ContextMenuSwitchItem,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n return (\n <div className={styles.itemContent}>\n {shouldRenderIcon ? (\n <span aria-hidden={!hasIcon} className={styles.icon}>\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, 'small') : null}\n </span>\n ) : null}\n <span className={styles.label}>{label}</span>\n {extra ? <span className={styles.extra}>{extra}</span> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <span className={styles.submenuArrow}>\n <ChevronRight size={16} />\n </span>\n ) : null}\n </div>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderContextMenuItems = (\n items: ContextMenuItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as ContextMenuCheckboxItem).type === 'checkbox') {\n const checkboxItem = item as ContextMenuCheckboxItem;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <ContextMenu.CheckboxItemIndicator>\n <Icon icon={Check} size={'small'} />\n </ContextMenu.CheckboxItemIndicator>\n );\n\n return (\n <ContextMenu.CheckboxItem\n checked={checkboxItem.checked}\n className={cx(styles.item, isDanger && styles.danger)}\n closeOnClick={checkboxItem.closeOnClick}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(checkboxItem, { indicatorOnRight, reserveIconSpace }, indicator)}\n </ContextMenu.CheckboxItem>\n );\n }\n\n if ((item as ContextMenuSwitchItem).type === 'switch') {\n const switchItem = item as ContextMenuSwitchItem;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <ContextMenuSwitchItemInternal\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={switchItem.onCheckedChange}\n >\n {renderItemContent(switchItem, { reserveIconSpace })}\n </ContextMenuSwitchItemInternal>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <ContextMenu.Separator className={styles.separator} key={itemKey} />;\n }\n\n if ((item as MenuItemGroupType).type === 'group') {\n const group = item as MenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <ContextMenu.Group key={itemKey}>\n {group.label ? (\n <ContextMenu.GroupLabel className={styles.groupLabel}>\n {group.label}\n </ContextMenu.GroupLabel>\n ) : null}\n {group.children\n ? renderContextMenuItems(group.children, nextKeyPath, {\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </ContextMenu.Group>\n );\n }\n\n if (\n (item as SubMenuType).type === 'submenu' ||\n ('children' in item && (item as SubMenuType).children)\n ) {\n const submenu = item as SubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n\n return (\n <ContextMenu.SubmenuRoot key={itemKey}>\n <ContextMenu.SubmenuTrigger\n className={cx(styles.item, isDanger && styles.danger)}\n disabled={submenu.disabled}\n label={labelText}\n >\n {renderItemContent(submenu, {\n reserveIconSpace,\n submenu: true,\n })}\n </ContextMenu.SubmenuTrigger>\n <ContextMenu.Portal>\n <ContextMenu.Positioner\n alignOffset={-4}\n className={styles.positioner}\n data-submenu=\"\"\n onContextMenu={preventDefaultAndStopPropagation}\n sideOffset={-1}\n >\n <ContextMenu.Popup className={styles.popup}>\n {submenu.children && submenu.children.length > 0 ? (\n renderContextMenuItems(submenu.children, nextKeyPath, { iconSpaceMode })\n ) : (\n <EmptyMenuItem />\n )}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.SubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <ContextMenu.Item\n className={cx(styles.item, isDanger && styles.danger)}\n closeOnClick={menuItem.closeOnClick}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { reserveIconSpace })}\n </ContextMenu.Item>\n );\n });\n};\n","export default {\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.empty': '(empty)',\n} as const;\n","import { useMemo } from 'react';\n\nimport { useI18n } from './context';\nimport type { TranslationKey, TranslationResources } from './types';\n\nexport const useTranslation = (fallbackResources?: TranslationResources) => {\n const { t, locale } = useI18n();\n\n const translate = useMemo((): ((key: TranslationKey) => string) => {\n if (!fallbackResources) return t;\n\n return (key: TranslationKey): string => {\n const value = t(key);\n const fallback = fallbackResources[key];\n return value === key && fallback ? fallback : value;\n };\n }, [t, fallbackResources]);\n\n return { locale, t: translate };\n};\n","import { type ReactNode, memo } from 'react';\n\nimport ConfigProvider from '@/ConfigProvider';\nimport { type MotionComponentType } from '@/MotionProvider';\n\nimport type { TranslationResourcesInput } from './types';\n\nexport interface I18nProviderProps {\n children: ReactNode;\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\n// Re-export for backward compatibility\nexport { I18nContext } from '@/ConfigProvider';\n\n// I18nProvider delegates to ConfigProvider with flattened i18n props\nexport const I18nProvider = memo<I18nProviderProps>(({ children, locale, resources, motion }) => {\n return (\n <ConfigProvider config={{}} locale={locale} motion={motion} resources={resources}>\n {children}\n </ConfigProvider>\n );\n});\n\n// Internal useI18n - for useTranslation only, not exported publicly\nexport { useI18n } from '@/ConfigProvider';\n\n// Re-export types\nexport type { I18nContextValue, TranslationKey, TranslationResources } from './types';\n","import type { VirtualElement } from '@floating-ui/react';\n\nimport type { IconSpaceMode } from './renderItems';\nimport type { ContextMenuItem } from './type';\n\nexport type ContextMenuState = {\n anchor: VirtualElement | null;\n iconSpaceMode: IconSpaceMode;\n items: ContextMenuItem[];\n open: boolean;\n triggerId: string | null;\n};\n\nconst emptyState: ContextMenuState = {\n anchor: null,\n iconSpaceMode: 'global',\n items: [],\n open: false,\n triggerId: null,\n};\n\nlet contextMenuState: ContextMenuState = emptyState;\nconst listeners = new Set<() => void>();\nconst lastPointer = { ready: false, triggerId: null as string | null, x: 0, y: 0 };\n\nconst notify = () => {\n listeners.forEach((listener) => listener());\n};\n\nexport const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n};\n\nexport const getSnapshot = () => contextMenuState;\nexport const getServerSnapshot = () => emptyState;\n\nexport const updateLastPointer = (event: MouseEvent | PointerEvent) => {\n lastPointer.x = event.clientX;\n lastPointer.y = event.clientY;\n lastPointer.ready = true;\n if (event.target instanceof Element) {\n const trigger = event.target.closest<HTMLElement>('[data-contextmenu-trigger]');\n lastPointer.triggerId = trigger?.dataset.contextmenuTrigger ?? null;\n } else {\n lastPointer.triggerId = null;\n }\n};\n\nconst createVirtualElement = (point: { x: number; y: number }): VirtualElement => ({\n contextElement: typeof document === 'undefined' ? undefined : document.body,\n getBoundingClientRect: () =>\n ({\n bottom: point.y,\n height: 0,\n left: point.x,\n right: point.x,\n toJSON: () => undefined,\n top: point.y,\n width: 0,\n x: point.x,\n y: point.y,\n }) as DOMRect,\n});\n\nexport const setContextMenuState = (next: Partial<ContextMenuState>) => {\n contextMenuState = { ...contextMenuState, ...next };\n notify();\n};\n\nexport interface ShowContextMenuOptions {\n iconSpaceMode?: IconSpaceMode;\n}\n\nexport const showContextMenu = (items: ContextMenuItem[], options?: ShowContextMenuOptions) => {\n if (typeof window === 'undefined') return;\n\n const fallbackPoint = { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n const point = lastPointer.ready ? { x: lastPointer.x, y: lastPointer.y } : fallbackPoint;\n\n setContextMenuState({\n anchor: createVirtualElement(point),\n iconSpaceMode: options?.iconSpaceMode ?? 'global',\n items,\n open: true,\n triggerId: lastPointer.triggerId ?? null,\n });\n};\n\n/**\n * Update menu items while keeping current anchor/position.\n * Useful for interactive menu items (e.g. checkbox) to avoid re-positioning.\n */\nexport const updateContextMenuItems = (items: ContextMenuItem[]) => {\n if (typeof window === 'undefined') return;\n setContextMenuState({ items });\n};\n\nexport const closeContextMenu = () => {\n setContextMenuState({\n anchor: null,\n iconSpaceMode: 'global',\n items: [],\n open: false,\n triggerId: null,\n });\n};\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport clsx from 'clsx';\nimport React, {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n cloneElement,\n isValidElement,\n memo,\n useCallback,\n useId,\n useSyncExternalStore,\n} from 'react';\n\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from './store';\nimport type { ContextMenuItem } from './type';\n\nexport type ContextMenuTriggerProps = {\n children: ReactNode;\n /**\n * Menu items to display. Supports lazy rendering via function.\n * When provided, context menu will be automatically shown on right-click.\n */\n items?: ContextMenuItem[] | (() => ContextMenuItem[]);\n /**\n * Custom context menu handler. If `items` is provided, this is optional.\n */\n onContextMenu?: (event: MouseEvent<HTMLElement>) => void;\n} & Omit<HTMLAttributes<HTMLElement>, 'onContextMenu' | 'children'>;\n\nconst styles = {\n trigger: {\n display: 'contents',\n },\n};\n\nexport const ContextMenuTrigger = memo<ContextMenuTriggerProps>(\n ({ children, items, onContextMenu, ...rest }) => {\n const triggerId = useId();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const open = state.open && state.triggerId === triggerId;\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (items) {\n event.preventDefault();\n const resolvedItems = typeof items === 'function' ? items() : items;\n showContextMenu(resolvedItems);\n }\n onContextMenu?.(event);\n },\n [items, onContextMenu],\n );\n\n const triggerProps = {\n ...rest,\n 'aria-expanded': open || undefined,\n 'className': clsx(CLASSNAMES.ContextTrigger, rest.className),\n 'data-contextmenu-trigger': triggerId,\n 'data-popup-open': open ? '' : undefined,\n 'data-state': open ? 'open' : undefined,\n 'onContextMenu': handleContextMenu,\n };\n\n if (isValidElement(children) && React.Children.only(children)) {\n return cloneElement(children, mergeProps(children.props as any, triggerProps));\n }\n\n return (\n <span style={styles.trigger} {...triggerProps}>\n {children}\n </span>\n );\n },\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\n","'use client';\n\nimport { Check, Copy } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { useCopied } from '@/hooks/useCopied';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\n\nimport type { CopyButtonProps } from './type';\n\nconst CopyButton = memo<CopyButtonProps>(\n ({ active, content, size, icon, glass = true, onClick, ...rest }) => {\n const { copied, setCopied } = useCopied();\n const Icon = icon || Copy;\n\n return (\n <ActionIcon\n glass={glass}\n size={size}\n title={'Copy'}\n {...rest}\n active={active || copied}\n icon={copied ? Check : Icon}\n onClick={async (e) => {\n const resolvedContent = typeof content === 'function' ? content() : content;\n await copyToClipboard(resolvedContent);\n setCopied();\n onClick?.(e);\n }}\n />\n );\n },\n);\n\nCopyButton.displayName = 'CopyButton';\n\nexport default CopyButton;\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport const useCopied = () => {\n const [copied, setCopy] = useState(false);\n\n useEffect(() => {\n if (!copied) return;\n\n const timer = setTimeout(() => {\n setCopy(false);\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [copied]);\n\n const setCopied = useCallback(() => setCopy(true), []);\n\n return useMemo(() => ({ copied, setCopied }), [copied]);\n};\n","export const copyToClipboard = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.append(textArea);\n textArea.focus();\n textArea.select();\n document.execCommand('copy');\n textArea.remove();\n }\n};\n","'use client';\n\nimport { DatePicker as AntDatePicker } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport { DatePickerProps } from './type';\n\nconst DatePicker = memo<DatePickerProps>(({ variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntDatePicker\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n borderless: lobeStaticStylish.variantBorderless,\n filled: lobeStaticStylish.variantFilled,\n outlined: lobeStaticStylish.variantOutlined,\n root: css``,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n underlined: null,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { Download } from 'lucide-react';\nimport React, { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { downloadBlob } from '@/utils/downloadBlob';\n\nimport type { DownloadButtonProps } from './type';\n\nconst DownloadButton = memo<DownloadButtonProps>(\n ({ fileName = 'download', fileType = 'svg', disabled = false, blobUrl, ...rest }) => {\n const handleDownload = async () => {\n if (!blobUrl || disabled) return;\n try {\n await downloadBlob(blobUrl, `${fileName.replace(/\\.[^./]+$/, '')}.${fileType}`);\n } catch (error) {\n console.error('Download failed:', error);\n }\n };\n return (\n <ActionIcon\n title={`Download ${fileType.toUpperCase()}`}\n {...rest}\n icon={Download}\n onClick={handleDownload}\n />\n );\n },\n);\n\nDownloadButton.displayName = 'DownloadButton';\n\nexport default DownloadButton;\n","export const downloadBlob = async (blobUrl: string, fileName: string): Promise<void> => {\n return new Promise((resolve, reject) => {\n try {\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName;\n link.style.display = 'none';\n\n document.body.append(link);\n link.click();\n link.remove();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n};\n","'use client';\n\nimport { useHover } from 'ahooks';\nimport { ConfigProvider } from 'antd';\nimport { cx } from 'antd-style';\nimport isEqual from 'fast-deep-equal';\nimport { ChevronDown, ChevronLeft, ChevronRight, ChevronUp } from 'lucide-react';\nimport type { Enable, NumberSize, Size } from 're-resizable';\nimport { Resizable } from 're-resizable';\nimport {\n memo,\n use,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useTransition,\n} from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport { Center } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { handleVariants, panelVariants, styles, toggleVariants } from './style';\nimport type { DraggablePanelProps } from './type';\nimport { reversePlacement } from './utils';\n\n// Constants\nconst DEFAULT_HEIGHT = 180;\nconst DEFAULT_WIDTH = 280;\nconst DEFAULT_HEADER_HEIGHT = 0;\nconst DEFAULT_PIN = true;\nconst DEFAULT_MODE = 'fixed';\nconst DEFAULT_EXPANDABLE = true;\nconst DEFAULT_EXPAND = true;\nconst DEFAULT_SHOW_HANDLE_WIDE_AREA = true;\n\n// State reducer for better state management\ninterface DraggablePanelState {\n isResizing: boolean;\n showExpand: boolean;\n}\n\ntype DraggablePanelAction =\n | { type: 'START_RESIZE' }\n | { type: 'STOP_RESIZE' }\n | { payload: boolean; type: 'SET_SHOW_EXPAND' };\n\nfunction draggablePanelReducer(\n state: DraggablePanelState,\n action: DraggablePanelAction,\n): DraggablePanelState {\n switch (action.type) {\n case 'START_RESIZE': {\n return { ...state, isResizing: true, showExpand: false };\n }\n case 'STOP_RESIZE': {\n return { ...state, isResizing: false, showExpand: true };\n }\n case 'SET_SHOW_EXPAND': {\n return { ...state, showExpand: action.payload };\n }\n default: {\n return state;\n }\n }\n}\n\nconst DraggablePanel = memo<DraggablePanelProps>(\n ({\n headerHeight = DEFAULT_HEADER_HEIGHT,\n fullscreen,\n maxHeight,\n pin = DEFAULT_PIN,\n mode = DEFAULT_MODE,\n children,\n placement = 'right',\n resize,\n style,\n showBorder = true,\n showHandleHighlight = false,\n showHandleWideArea = DEFAULT_SHOW_HANDLE_WIDE_AREA,\n backgroundColor,\n size,\n defaultSize: customizeDefaultSize,\n minWidth,\n minHeight,\n maxWidth,\n onSizeChange,\n onSizeDragging,\n expandable = DEFAULT_EXPANDABLE,\n expand,\n defaultExpand = DEFAULT_EXPAND,\n onExpandChange,\n className,\n showHandleWhenCollapsed,\n destroyOnClose,\n styles: customStyles,\n classNames,\n dir,\n }) => {\n const ref = useRef<HTMLDivElement>(null);\n const isHovering = useHover(ref);\n const isVertical = placement === 'top' || placement === 'bottom';\n const [isPending, startTransition] = useTransition();\n\n // Use ref for hover timeout to avoid memory leaks\n const hoverTimeoutRef = useRef<any>(undefined);\n\n // inherit direction from Ant Design ConfigProvider\n const { direction: antdDirection } = use(ConfigProvider.ConfigContext);\n const direction = dir ?? antdDirection;\n\n // Handle RTL direction\n const internalPlacement = useMemo(() => {\n return direction === 'rtl' && ['left', 'right'].includes(placement)\n ? placement === 'left'\n ? 'right'\n : 'left'\n : placement;\n }, [direction, placement]);\n\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--draggable-panel-bg': backgroundColor || '',\n '--draggable-panel-header-height': `${headerHeight}px`,\n }),\n [backgroundColor, headerHeight],\n );\n\n const [isExpand, setIsExpand] = useControlledState(defaultExpand, {\n onChange: onExpandChange,\n value: expand,\n });\n\n // Initialize state with useReducer for better performance\n const initialState: DraggablePanelState = {\n isResizing: false,\n showExpand: true,\n };\n\n const [state, dispatch] = useReducer(draggablePanelReducer, initialState);\n\n // Auto-expand on hover if not pinned with optimized transition\n useEffect(() => {\n if (pin) return;\n\n // Clear previous timeout\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n if (isHovering && !isExpand) {\n startTransition(() => {\n setIsExpand(true);\n });\n } else if (!isHovering && isExpand) {\n // Add a small delay before collapsing to prevent flickering\n hoverTimeoutRef.current = setTimeout(() => {\n startTransition(() => {\n setIsExpand(false);\n });\n }, 150);\n }\n }, [pin, isHovering, isExpand, setIsExpand]);\n\n // Cleanup timeout on unmount\n useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n };\n }, []);\n\n const canResizing = resize !== false && isExpand;\n\n // Configure resizing handles\n const resizing = useMemo(\n () => ({\n bottom: false,\n bottomLeft: false,\n bottomRight: false,\n left: false,\n right: false,\n top: false,\n topLeft: false,\n topRight: false,\n [reversePlacement(internalPlacement)]: true,\n ...(resize as Enable),\n }),\n [internalPlacement, resize],\n );\n\n // Calculate default size based on orientation\n const defaultSize: Size = useMemo(() => {\n if (isVertical)\n return {\n height: DEFAULT_HEIGHT,\n width: '100%',\n ...customizeDefaultSize,\n };\n\n return {\n height: '100%',\n width: DEFAULT_WIDTH,\n ...customizeDefaultSize,\n };\n }, [isVertical, customizeDefaultSize]);\n\n // Determine appropriate size props based on expand state\n const sizeProps = useMemo(() => {\n if (!isExpand) {\n return isVertical\n ? { minHeight: 0, size: { height: 0 } }\n : { minWidth: 0, size: { width: 0 } };\n }\n\n return {\n defaultSize,\n maxHeight: typeof maxHeight === 'number' ? Math.max(maxHeight, 0) : maxHeight,\n maxWidth: typeof maxWidth === 'number' ? Math.max(maxWidth, 0) : maxWidth,\n minHeight: typeof minHeight === 'number' ? Math.max(minHeight, 0) : minHeight,\n minWidth: typeof minWidth === 'number' ? Math.max(minWidth, 0) : minWidth,\n size: size as Size,\n };\n }, [isExpand, isVertical, defaultSize, maxHeight, maxWidth, minHeight, minWidth, size]);\n\n // Determine the appropriate arrow icon based on placement\n const Arrow = useMemo(() => {\n switch (internalPlacement) {\n case 'top': {\n return ChevronDown;\n }\n case 'bottom': {\n return ChevronUp;\n }\n case 'right': {\n return ChevronLeft;\n }\n case 'left': {\n return ChevronRight;\n }\n default: {\n return ChevronLeft;\n }\n }\n }, [internalPlacement]);\n\n // Toggle expand state with transition for better performance\n const toggleExpand = useCallback(() => {\n if (!expandable) return;\n\n startTransition(() => {\n setIsExpand(!isExpand);\n });\n }, [expandable, isExpand, setIsExpand]);\n\n // Toggle handle component\n const handle = useMemo(\n () => (\n <Center\n className={toggleVariants({ placement: internalPlacement, showHandleWideArea })}\n style={{ opacity: isExpand ? (pin ? undefined : 0) : showHandleWhenCollapsed ? 1 : 0 }}\n >\n <Center\n className={classNames?.handle}\n onClick={toggleExpand}\n style={customStyles?.handle}\n >\n <Icon\n className={styles.handlerIcon}\n icon={Arrow}\n size={16}\n style={{\n marginBottom: internalPlacement === 'top' ? 4 : 0,\n marginLeft: internalPlacement === 'right' ? 4 : 0,\n marginRight: internalPlacement === 'left' ? 4 : 0,\n marginTop: internalPlacement === 'bottom' ? 4 : 0,\n transform: `rotate(${isExpand ? 180 : 0}deg)`,\n transition: 'transform 0.3s ease',\n }}\n />\n </Center>\n </Center>\n ),\n [\n toggleVariants,\n internalPlacement,\n isExpand,\n pin,\n showHandleWhenCollapsed,\n classNames?.handle,\n toggleExpand,\n customStyles?.handle,\n styles.handlerIcon,\n Arrow,\n ],\n );\n\n // Handle resize events with memoization\n const handleResize = useCallback(\n (_: unknown, _direction: unknown, reference_: HTMLElement, delta: NumberSize) => {\n onSizeDragging?.(delta, {\n height: reference_.style.height,\n width: reference_.style.width,\n });\n },\n [onSizeDragging],\n );\n\n const handleResizeStart = useCallback(() => {\n dispatch({ type: 'START_RESIZE' });\n }, []);\n\n const handleResizeStop = useCallback(\n (e: unknown, direction: unknown, reference_: HTMLElement, delta: NumberSize) => {\n dispatch({ type: 'STOP_RESIZE' });\n onSizeChange?.(delta, {\n height: reference_.style.height,\n width: reference_.style.width,\n });\n },\n [onSizeChange],\n );\n\n // Main panel content\n const inner = useMemo(\n () => (\n <Resizable\n {...sizeProps}\n className={cx(styles.panel, classNames?.content)}\n enable={canResizing ? (resizing as Enable) : undefined}\n handleClasses={\n canResizing\n ? {\n [reversePlacement(internalPlacement)]: cx(\n handleVariants({\n placement: reversePlacement(internalPlacement),\n }),\n showHandleHighlight && styles.handleHighlight,\n ),\n }\n : {}\n }\n onResize={handleResize}\n onResizeStart={handleResizeStart}\n onResizeStop={handleResizeStop}\n style={{\n ...cssVariables,\n opacity: isPending ? 0.95 : 1,\n transition: state.isResizing ? 'unset' : undefined,\n ...style,\n }}\n >\n {children}\n </Resizable>\n ),\n [\n sizeProps,\n styles.panel,\n classNames?.content,\n canResizing,\n resizing,\n internalPlacement,\n handleVariants,\n showHandleHighlight,\n styles.handleHighlight,\n handleResize,\n handleResizeStart,\n handleResizeStop,\n state.isResizing,\n isPending,\n style,\n children,\n cx,\n ],\n );\n\n // For fullscreen mode, return a simpler layout\n if (fullscreen) {\n return (\n <div className={cx(styles.fullscreen, className)} style={cssVariables}>\n {children}\n </div>\n );\n }\n\n return (\n <aside\n className={cx(\n panelVariants({\n isExpand,\n mode,\n placement: internalPlacement,\n showBorder,\n }),\n className,\n )}\n dir={dir}\n ref={ref}\n style={cssVariables}\n >\n {expandable && state.showExpand && handle}\n {destroyOnClose ? isExpand && inner : inner}\n </aside>\n );\n },\n isEqual,\n);\n\nDraggablePanel.displayName = 'DraggablePanel';\n\nexport default DraggablePanel;\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\n// Layout constants\nconst LAYOUT = {\n offset: 16,\n toggleLength: 54,\n toggleShort: 16,\n};\n\nconst prefixCls = 'ant';\n\nconst prefix = `${prefixCls}-draggable-panel`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n // Base styles - border styles split by showBorder\n const borderStyles = {\n borderBottom: css`\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderBottomNone: css`\n border-block-end-width: 0;\n `,\n borderLeft: css`\n border-inline-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderLeftNone: css`\n border-inline-start-width: 0;\n `,\n borderRight: css`\n border-inline-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderRightNone: css`\n border-inline-end-width: 0;\n `,\n borderTop: css`\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderTopNone: css`\n border-block-start-width: 0;\n `,\n };\n\n // Position styles\n const float = css`\n position: absolute;\n z-index: 200;\n `;\n\n const floatPositions = {\n bottomFloat: cx(\n float,\n css`\n inset-block-end: 0;\n inset-inline: 0 0;\n width: 100%;\n `,\n ),\n leftFloat: cx(\n float,\n css`\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline-start: 0;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n `,\n ),\n rightFloat: cx(\n float,\n css`\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline-end: 0;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n `,\n ),\n topFloat: cx(\n float,\n css`\n inset-block-start: var(--draggable-panel-header-height, 0);\n inset-inline: 0 0;\n width: 100%;\n `,\n ),\n };\n\n // Handle styles\n const handleBaseStyle = css`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n transition: all 0.2s ${cssVar.motionEaseOut};\n }\n `;\n\n const handleHighlightStyle = css`\n &:hover {\n &::before {\n background: ${cssVar.colorPrimaryBorder};\n box-shadow: 0 0 8px color-mix(in srgb, ${cssVar.colorPrimary} 25%, transparent);\n }\n }\n\n &:active {\n &::before {\n background: ${cssVar.colorPrimary} !important;\n }\n }\n `;\n\n const handleStyles = {\n handleBottom: cx(\n `${prefix}-bottom-handle`,\n css`\n &::before {\n inset-block-end: 50%;\n width: 100%;\n height: 2px;\n }\n `,\n ),\n handleLeft: cx(\n `${prefix}-left-handle`,\n css`\n &::before {\n inset-inline-start: 50%;\n width: 2px;\n height: 100%;\n }\n `,\n ),\n handleRight: cx(\n `${prefix}-right-handle`,\n css`\n &::before {\n inset-inline-end: 50%;\n width: 2px;\n height: 100%;\n }\n `,\n ),\n handleRoot: handleBaseStyle,\n handleTop: cx(\n `${prefix}-top-handle`,\n css`\n &::before {\n inset-block-start: 50%;\n width: 100%;\n height: 2px;\n }\n `,\n ),\n };\n\n // Toggle styles - base class with variant for showHandleWideArea\n const toggleRoot = cx(\n `${prefix}-toggle`,\n css`\n position: absolute;\n z-index: 50;\n opacity: 0;\n transition: all 0.2s ${cssVar.motionEaseOut};\n\n &:hover,\n &:active {\n opacity: 1 !important;\n }\n\n > div {\n pointer-events: all;\n cursor: pointer;\n\n position: absolute;\n\n border: 1px solid ${cssVar.colorBorder};\n\n color: ${cssVar.colorTextTertiary};\n\n background: var(--draggable-panel-bg, ${cssVar.colorBgLayout});\n backdrop-filter: blur(8px);\n\n transition: all 0.2s ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n color: ${cssVar.colorText};\n }\n }\n `,\n );\n\n const toggleRootWithWideArea = css`\n pointer-events: all;\n `;\n\n const toggleRootWithoutWideArea = css`\n pointer-events: none;\n `;\n\n const toggleStyles = {\n toggleBottom: cx(\n `${prefix}-toggle-bottom`,\n css`\n inset-block-end: -${LAYOUT.offset}px;\n width: 100%;\n height: ${LAYOUT.toggleShort}px;\n\n > div {\n inset-inline-start: 50%;\n\n width: ${LAYOUT.toggleLength}px;\n height: ${LAYOUT.toggleShort}px;\n margin-inline-start: -27px;\n border-block-start-width: 0;\n border-radius: 0 0 ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG};\n }\n `,\n ),\n toggleLeft: cx(\n `${prefix}-toggle-left`,\n css`\n inset-inline-start: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -27px;\n border-inline-end-width: 0;\n border-radius: ${cssVar.borderRadiusLG} 0 0 ${cssVar.borderRadiusLG};\n }\n `,\n ),\n toggleRight: cx(\n `${prefix}-toggle-right`,\n css`\n inset-inline-end: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -27px;\n border-inline-start-width: 0;\n border-radius: 0 ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG} 0;\n }\n `,\n ),\n toggleRoot,\n toggleRootWithWideArea,\n toggleRootWithoutWideArea,\n toggleTop: cx(\n `${prefix}-toggle-top`,\n css`\n inset-block-start: -${LAYOUT.offset}px;\n width: 100%;\n height: ${LAYOUT.toggleShort}px;\n\n > div {\n inset-inline-start: 50%;\n\n width: ${LAYOUT.toggleLength}px;\n height: ${LAYOUT.toggleShort}px;\n margin-inline-start: -27px;\n border-block-end-width: 0;\n border-radius: ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG} 0 0;\n }\n `,\n ),\n };\n\n // Additional component styles\n const componentStyles = {\n fixed: css`\n position: relative;\n `,\n fullscreen: css`\n position: absolute;\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline: 0;\n\n width: 100%;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n\n background: ${cssVar.colorBgContainer};\n `,\n handlerIcon: css`\n transition: all 0.2s ${cssVar.motionEaseOut};\n `,\n panel: cx(\n `${prefix}-fixed`,\n css`\n overflow: hidden;\n background: var(--draggable-panel-bg, ${cssVar.colorBgLayout});\n transition: all 0.2s ${cssVar.motionEaseOut};\n `,\n ),\n root: cx(\n prefix,\n css`\n flex-shrink: 0;\n\n &:hover {\n > .${prefix}-toggle {\n opacity: 1;\n }\n }\n `,\n ),\n };\n\n return {\n ...borderStyles,\n ...floatPositions,\n ...handleStyles,\n handleHighlight: handleHighlightStyle,\n ...toggleStyles,\n ...componentStyles,\n };\n});\n\nexport const handleVariants = cva(styles.handleRoot, {\n variants: {\n placement: {\n bottom: styles.handleBottom,\n left: styles.handleLeft,\n right: styles.handleRight,\n top: styles.handleTop,\n },\n },\n});\n\nexport const panelVariants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.bottomFloat,\n mode: 'float',\n placement: 'bottom',\n },\n {\n class: styles.topFloat,\n mode: 'float',\n placement: 'top',\n },\n {\n class: styles.leftFloat,\n mode: 'float',\n placement: 'left',\n },\n {\n class: styles.rightFloat,\n mode: 'float',\n placement: 'right',\n },\n // Border styles based on placement, isExpand, and showBorder\n // Note: border is on the opposite side of placement\n // placement 'top' -> borderBottom, placement 'right' -> borderLeft, etc.\n {\n class: styles.borderBottom,\n isExpand: true,\n placement: 'top',\n showBorder: true,\n },\n {\n class: styles.borderBottomNone,\n isExpand: true,\n placement: 'top',\n showBorder: false,\n },\n {\n class: styles.borderLeft,\n isExpand: true,\n placement: 'right',\n showBorder: true,\n },\n {\n class: styles.borderLeftNone,\n isExpand: true,\n placement: 'right',\n showBorder: false,\n },\n {\n class: styles.borderTop,\n isExpand: true,\n placement: 'bottom',\n showBorder: true,\n },\n {\n class: styles.borderTopNone,\n isExpand: true,\n placement: 'bottom',\n showBorder: false,\n },\n {\n class: styles.borderRight,\n isExpand: true,\n placement: 'left',\n showBorder: true,\n },\n {\n class: styles.borderRightNone,\n isExpand: true,\n placement: 'left',\n showBorder: false,\n },\n ],\n defaultVariants: {\n isExpand: false,\n mode: 'fixed',\n placement: 'right',\n showBorder: true,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n isExpand: {\n false: null,\n true: null,\n },\n mode: {\n fixed: styles.fixed,\n float: null,\n },\n placement: {\n bottom: null,\n left: null,\n right: null,\n top: null,\n },\n showBorder: {\n false: null,\n true: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const toggleVariants = cva(styles.toggleRoot, {\n compoundVariants: [\n {\n class: styles.toggleRootWithWideArea,\n showHandleWideArea: true,\n },\n {\n class: styles.toggleRootWithoutWideArea,\n showHandleWideArea: false,\n },\n ],\n defaultVariants: {\n showHandleWideArea: false,\n },\n variants: {\n placement: {\n bottom: styles.toggleTop,\n left: styles.toggleRight,\n right: styles.toggleLeft,\n top: styles.toggleBottom,\n },\n showHandleWideArea: {\n false: null,\n true: null,\n },\n },\n});\n","import type { DraggablePanelProps } from './type';\n\nexport const reversePlacement = (placement: DraggablePanelProps['placement']) => {\n switch (placement) {\n case 'bottom': {\n return 'top';\n }\n case 'top': {\n return 'bottom';\n }\n case 'right': {\n return 'left';\n }\n case 'left': {\n return 'right';\n }\n }\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport type DraggablePanelBodyProps = DivProps;\n\nconst DraggablePanelBody = memo<DraggablePanelBodyProps>(({ className, ...rest }) => {\n return <Flexbox className={cx(styles.body, className)} flex={1} {...rest} />;\n});\n\nDraggablePanelBody.displayName = 'DraggablePanelBody';\n\nexport default DraggablePanelBody;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n body: css`\n overflow: hidden auto;\n padding: 16px;\n `,\n container: css`\n position: relative;\n overflow: hidden;\n `,\n footer: css`\n padding-block: 8px;\n padding-inline: 16px;\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n handlerIcon: css`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ${cssVar.motionEaseOut};\n `,\n header: css`\n padding-block: 8px;\n padding-inline: 16px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n font-weight: 500;\n `,\n };\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport type DraggablePanelContainerProps = DivProps;\n\nconst DraggablePanelContainer = memo<DraggablePanelContainerProps>(({ className, ...rest }) => {\n return <Flexbox className={cx(styles.container, className)} {...rest} />;\n});\n\nDraggablePanelContainer.displayName = 'DraggablePanelContainer';\n\nexport default DraggablePanelContainer;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport type DraggablePanelFooterProps = DivProps;\n\nconst DraggablePanelFooter = memo<DraggablePanelFooterProps>(({ className, ...rest }) => {\n return (\n <Flexbox\n align={'center'}\n className={cx(styles.footer, className)}\n flex={'none'}\n gap={8}\n horizontal\n justify={'flex-start'}\n {...rest}\n />\n );\n});\n\nDraggablePanelFooter.displayName = 'DraggablePanelFooter';\n\nexport default DraggablePanelFooter;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { PanelLeft, Pin, PinOff } from 'lucide-react';\nimport { memo } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport interface DraggablePanelHeaderProps extends Omit<DivProps, 'children'> {\n pin?: boolean;\n position?: 'left' | 'right';\n setExpand?: (expand: boolean) => void;\n setPin?: (pin: boolean) => void;\n title?: string;\n}\n\nconst DraggablePanelHeader = memo<DraggablePanelHeaderProps>((props) => {\n const { pin, setPin, className, setExpand, title, position = 'left', ...rest } = props;\n\n const [isPinned, setIsPinned] = useControlledState(false, {\n onChange: setPin,\n value: pin,\n });\n\n const panelIcon = (\n <ActionIcon icon={PanelLeft} onClick={() => setExpand?.(false)} size={'small'} />\n );\n const pinIcon = (\n <ActionIcon\n active={pin}\n icon={pin ? Pin : PinOff}\n onClick={() => setIsPinned(!isPinned)}\n size={'small'}\n />\n );\n return (\n <Flexbox\n align={'center'}\n className={cx(styles.header, className)}\n flex={'none'}\n gap={8}\n horizontal\n justify={'space-between'}\n {...rest}\n >\n {position === 'left' ? panelIcon : pinIcon}\n {title}\n {position === 'left' ? pinIcon : panelIcon}\n </Flexbox>\n );\n});\n\nDraggablePanelHeader.displayName = 'DraggablePanelHeader';\n\nexport default DraggablePanelHeader;\n","'use client';\n\nimport type { ReactNode, RefAttributes } from 'react';\n\nimport DraggablePanelParent from './DraggablePanel';\nimport DraggablePanelBody from './components/DraggablePanelBody';\nimport DraggablePanelContainer from './components/DraggablePanelContainer';\nimport DraggablePanelFooter from './components/DraggablePanelFooter';\nimport DraggablePanelHeader from './components/DraggablePanelHeader';\nimport type { DraggablePanelProps } from './type';\n\ninterface IDraggablePanel {\n (props: DraggablePanelProps & RefAttributes<HTMLDivElement>): ReactNode;\n Body: typeof DraggablePanelBody;\n Container: typeof DraggablePanelContainer;\n Footer: typeof DraggablePanelFooter;\n Header: typeof DraggablePanelHeader;\n}\n\nconst DraggablePanel = DraggablePanelParent as unknown as IDraggablePanel;\n\nDraggablePanel.Body = DraggablePanelBody;\nDraggablePanel.Container = DraggablePanelContainer;\nDraggablePanel.Footer = DraggablePanelFooter;\nDraggablePanel.Header = DraggablePanelHeader;\n\nexport default DraggablePanel;\nexport {\n default as DraggablePanelBody,\n type DraggablePanelBodyProps,\n} from './components/DraggablePanelBody';\nexport {\n default as DraggablePanelContainer,\n type DraggablePanelContainerProps,\n} from './components/DraggablePanelContainer';\nexport {\n default as DraggablePanelFooter,\n type DraggablePanelFooterProps,\n} from './components/DraggablePanelFooter';\nexport {\n default as DraggablePanelHeader,\n type DraggablePanelHeaderProps,\n} from './components/DraggablePanelHeader';\nexport type * from './type';\n","'use client';\n\nimport { useHover } from 'ahooks';\nimport { cx } from 'antd-style';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { Resizable, ResizeCallback } from 're-resizable';\nimport { CSSProperties, memo, useCallback, useEffect, useMemo, useReducer, useRef } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { DraggableSideNavProps } from './type';\n\nconst DEFAULT_MIN_WIDTH = 64; // 最小宽度即折叠宽度\nconst DEFAULT_EXPAND = true;\nconst DEFAULT_EXPANDED_WIDTH = 280;\nconst ANIMATION_DURATION = 300;\nconst COLLAPSE_ANIMATION_DELAY = 200;\n\n// Pre-define static objects to avoid recreating\nconst RESIZE_DISABLED = {\n bottom: false,\n bottomLeft: false,\n bottomRight: false,\n left: false,\n right: false,\n top: false,\n topLeft: false,\n topRight: false,\n};\n\n// State reducer for better state management\ninterface SideNavState {\n expandedWidth: number;\n internalWidth: number;\n isAnimating: boolean;\n isResizing: boolean;\n renderExpand: boolean;\n}\n\ntype SideNavAction =\n | { type: 'START_RESIZE' }\n | { type: 'STOP_RESIZE' }\n | { type: 'START_ANIMATION' }\n | { type: 'STOP_ANIMATION' }\n | { payload: number; type: 'SET_WIDTH' }\n | { payload: number; type: 'SET_EXPANDED_WIDTH' }\n | { payload: boolean; type: 'SET_RENDER_EXPAND' }\n | { payload: number; type: 'ANIMATE_EXPAND' }\n | { payload: number; type: 'ANIMATE_COLLAPSE' };\n\nfunction sideNavReducer(state: SideNavState, action: SideNavAction): SideNavState {\n switch (action.type) {\n case 'START_RESIZE': {\n return { ...state, isResizing: true };\n }\n case 'STOP_RESIZE': {\n return { ...state, isResizing: false };\n }\n case 'START_ANIMATION': {\n return { ...state, isAnimating: true };\n }\n case 'STOP_ANIMATION': {\n return { ...state, isAnimating: false };\n }\n case 'SET_WIDTH': {\n return { ...state, internalWidth: action.payload };\n }\n case 'SET_EXPANDED_WIDTH': {\n return { ...state, expandedWidth: action.payload };\n }\n case 'SET_RENDER_EXPAND': {\n return { ...state, renderExpand: action.payload };\n }\n case 'ANIMATE_EXPAND': {\n return { ...state, internalWidth: action.payload, renderExpand: true };\n }\n case 'ANIMATE_COLLAPSE': {\n return { ...state, internalWidth: action.payload };\n }\n default: {\n return state;\n }\n }\n}\n\nconst DraggableSideNav = memo<DraggableSideNavProps>(\n ({\n body,\n className,\n classNames,\n defaultExpand = DEFAULT_EXPAND,\n defaultWidth,\n expand,\n expandable = true,\n footer,\n header,\n maxWidth,\n minWidth = DEFAULT_MIN_WIDTH,\n onExpandChange,\n onWidthChange,\n onWidthDragging,\n placement = 'left',\n resizable = true,\n showBorder = true,\n showHandle = true,\n showHandleWhenCollapsed = false,\n showHandleHighlight = false,\n backgroundColor,\n styles: customStyles,\n width,\n ...rest\n }) => {\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--draggable-side-nav-bg': backgroundColor || '',\n }),\n [backgroundColor],\n );\n const ref = useRef<HTMLDivElement>(null);\n const isHovering = useHover(ref);\n\n // Expand state management\n const [isExpand, setIsExpand] = useControlledState(defaultExpand, {\n onChange: onExpandChange,\n value: expand,\n });\n\n // Use refs for animation timeouts to avoid memory leaks\n const animationTimeoutRef = useRef<any>(undefined);\n const collapseTimeoutRef = useRef<any>(undefined);\n\n // Compute default expanded width - memoize to avoid recalculation\n const computedDefaultExpandedWidth = useMemo(\n () => defaultWidth || DEFAULT_EXPANDED_WIDTH,\n [defaultWidth],\n );\n\n // Initialize state with useReducer for better performance\n const initialState: SideNavState = {\n expandedWidth: width ?? computedDefaultExpandedWidth,\n internalWidth: isExpand ? (width ?? computedDefaultExpandedWidth) : minWidth,\n isAnimating: false,\n isResizing: false,\n renderExpand: isExpand,\n };\n\n const [state, dispatch] = useReducer(sideNavReducer, initialState);\n\n // 计算折叠阈值:展开最小宽度和折叠宽度的中间值\n const collapseThreshold = useMemo(() => {\n return minWidth + (state.expandedWidth - minWidth) / 3;\n }, [minWidth, state.expandedWidth]);\n\n // Toggle expand state with smooth animation\n const toggleExpand = useCallback(() => {\n if (!expandable) return;\n\n // 在动画或拖拽期间阻止新的切换操作,避免状态混乱\n if (state.isAnimating || state.isResizing) return;\n\n // 清除之前的动画\n if (animationTimeoutRef.current) {\n clearTimeout(animationTimeoutRef.current);\n }\n\n // 立即设置动画状态,避免其他 useEffect 干扰\n dispatch({ type: 'START_ANIMATION' });\n setIsExpand(!isExpand);\n\n // 动画完成后重置状态 - 与宽度动画时长一致\n animationTimeoutRef.current = setTimeout(() => {\n dispatch({ type: 'STOP_ANIMATION' });\n }, ANIMATION_DURATION);\n }, [expandable, isExpand, setIsExpand, state.isAnimating, state.isResizing]);\n\n // 用于跟踪上一次的 expand 状态,以检测外部变化\n const prevExpandRef = useRef(isExpand);\n\n // 监听外部 expand prop 变化,触发动画\n useEffect(() => {\n // 检测到 expand 状态变化,且不在拖拽和动画中\n if (prevExpandRef.current !== isExpand && !state.isResizing && !state.isAnimating) {\n if (animationTimeoutRef.current) {\n clearTimeout(animationTimeoutRef.current);\n }\n\n // 立即设置动画状态,避免其他 useEffect 干扰\n dispatch({ type: 'START_ANIMATION' });\n\n animationTimeoutRef.current = setTimeout(() => {\n dispatch({ type: 'STOP_ANIMATION' });\n }, ANIMATION_DURATION);\n\n prevExpandRef.current = isExpand;\n }\n }, [isExpand, state.isResizing, state.isAnimating]);\n\n // 处理展开/折叠状态变化时的宽度动画和内容切换时机\n useEffect(() => {\n if (state.isAnimating) {\n // 使用 requestAnimationFrame 确保动画平滑\n const rafId = requestAnimationFrame(() => {\n if (isExpand) {\n // 展开动画:立即切换内容(先切换内容,再开始宽度动画)\n dispatch({ payload: state.expandedWidth, type: 'ANIMATE_EXPAND' });\n } else {\n // 折叠动画:延迟切换内容,在动画接近结束时才切换(300ms,略早于动画结束)\n dispatch({ payload: minWidth, type: 'ANIMATE_COLLAPSE' });\n\n if (collapseTimeoutRef.current) {\n clearTimeout(collapseTimeoutRef.current);\n }\n collapseTimeoutRef.current = setTimeout(() => {\n dispatch({ payload: false, type: 'SET_RENDER_EXPAND' });\n }, COLLAPSE_ANIMATION_DELAY);\n }\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }\n }, [isExpand, state.isAnimating, minWidth, state.expandedWidth]);\n\n // 同步非动画期间的 renderExpand 状态(如拖拽)\n // 使用 ref 追踪上一次的 isResizing 状态,只在拖拽结束时同步\n const prevIsResizingRef = useRef(state.isResizing);\n useEffect(() => {\n const wasResizing = prevIsResizingRef.current;\n prevIsResizingRef.current = state.isResizing;\n\n // 只在拖拽刚结束时同步 renderExpand,避免干扰正常的展开/折叠动画\n if (wasResizing && !state.isResizing && !state.isAnimating) {\n dispatch({ payload: isExpand, type: 'SET_RENDER_EXPAND' });\n }\n }, [isExpand, state.isAnimating, state.isResizing]);\n\n // 处理外部 width prop 变化\n // width 表示展开时的宽度,实际显示宽度根据 isExpand 状态决定\n useEffect(() => {\n if (width !== undefined && !state.isResizing && !state.isAnimating) {\n // 更新展开宽度记录\n dispatch({ payload: width, type: 'SET_EXPANDED_WIDTH' });\n // 根据当前状态设置实际宽度\n if (isExpand) {\n dispatch({ payload: width, type: 'SET_WIDTH' });\n }\n // 如果是折叠状态,保持 minWidth,不改变 internalWidth\n }\n }, [width, state.isResizing, state.isAnimating, isExpand]);\n\n // 计算当前的 body 内容 - 使用 renderExpand\n const currentBody = useMemo(() => {\n return body(state.renderExpand);\n }, [body, state.renderExpand]);\n\n // 计算当前的 header(支持函数和静态值)- 使用 renderExpand\n const currentHeader = useMemo(() => {\n return typeof header === 'function' ? header(state.renderExpand) : header;\n }, [header, state.renderExpand]);\n\n // 计算当前的 footer(支持函数和静态值)- 使用 renderExpand\n const currentFooter = useMemo(() => {\n return typeof footer === 'function' ? footer(state.renderExpand) : footer;\n }, [footer, state.renderExpand]);\n\n // Handle resize - memoize to prevent recreating on every render\n const handleResize: ResizeCallback = useCallback(\n (_, __, ref, delta) => {\n const currentWidth = ref.offsetWidth;\n dispatch({ payload: currentWidth, type: 'SET_WIDTH' });\n\n onWidthDragging?.(delta, currentWidth);\n },\n [onWidthDragging],\n );\n\n const handleResizeStart = useCallback(() => {\n dispatch({ type: 'START_RESIZE' });\n }, []);\n\n const handleResizeStop: ResizeCallback = useCallback(\n (_, __, ref, delta) => {\n dispatch({ type: 'STOP_RESIZE' });\n\n const currentWidth = ref.offsetWidth;\n\n // 清除之前的动画\n if (animationTimeoutRef.current) {\n clearTimeout(animationTimeoutRef.current);\n }\n\n // 根据拖拽后的宽度决定是折叠还是展开\n if (expandable) {\n const shouldCollapse = currentWidth <= minWidth || currentWidth < collapseThreshold;\n const shouldExpand =\n !isExpand && currentWidth > minWidth && currentWidth >= collapseThreshold;\n\n if (shouldCollapse || shouldExpand) {\n // 立即设置动画状态\n dispatch({ type: 'START_ANIMATION' });\n\n if (shouldCollapse) {\n setIsExpand(false);\n dispatch({ payload: minWidth, type: 'SET_WIDTH' });\n } else {\n setIsExpand(true);\n dispatch({ payload: currentWidth, type: 'SET_EXPANDED_WIDTH' });\n dispatch({ payload: currentWidth, type: 'SET_WIDTH' });\n }\n\n animationTimeoutRef.current = setTimeout(() => {\n dispatch({ type: 'STOP_ANIMATION' });\n }, ANIMATION_DURATION);\n } else if (isExpand) {\n // 展开状态下正常拖拽,记住宽度\n dispatch({ payload: currentWidth, type: 'SET_EXPANDED_WIDTH' });\n dispatch({ payload: currentWidth, type: 'SET_WIDTH' });\n }\n } else {\n // 如果不可折叠,仅更新宽度\n dispatch({ payload: currentWidth, type: 'SET_EXPANDED_WIDTH' });\n dispatch({ payload: currentWidth, type: 'SET_WIDTH' });\n }\n\n onWidthChange?.(delta, currentWidth);\n },\n [expandable, minWidth, collapseThreshold, isExpand, onWidthChange, setIsExpand],\n );\n\n // Arrow icon based on placement and expand state\n const ArrowIcon = useMemo(() => {\n if (placement === 'left') {\n // 左侧:展开时箭头向左(折叠方向),折叠时箭头向右(展开方向)\n return ChevronLeft;\n }\n // 右侧:展开时箭头向右(折叠方向),折叠时箭头向左(展开方向)\n return ChevronRight;\n }, [placement]);\n\n // Memoize handle styles to prevent recreation\n const handleRootStyle = useMemo<CSSProperties>(\n () => ({\n display: 'flex',\n opacity: !isExpand && showHandleWhenCollapsed ? 1 : isHovering ? 1 : 0,\n transition: 'opacity 0.25s ease',\n }),\n [isExpand, showHandleWhenCollapsed, isHovering],\n );\n\n const handleCenterStyle = useMemo<CSSProperties>(\n () => ({\n ...customStyles?.handle,\n cursor: 'pointer',\n }),\n [customStyles?.handle],\n );\n\n const handleIconWrapperStyle = useMemo<CSSProperties>(\n () => ({\n marginLeft: placement === 'right' ? 4 : 0,\n marginRight: placement === 'left' ? 4 : 0,\n transform: isExpand ? 'rotate(0deg)' : 'rotate(180deg)',\n transition: `transform ${COLLAPSE_ANIMATION_DELAY} ease`,\n }),\n [placement, isExpand],\n );\n\n // Toggle handle with smooth transitions\n const handle = useMemo(\n () =>\n showHandle &&\n expandable && (\n <div\n className={cx(\n styles.toggleRoot,\n placement === 'left' ? styles.toggleLeft : styles.toggleRight,\n )}\n style={handleRootStyle}\n >\n <Center className={classNames?.handle} onClick={toggleExpand} style={handleCenterStyle}>\n <div style={handleIconWrapperStyle}>\n <Icon className={styles.handlerIcon} icon={ArrowIcon} size={16} />\n </div>\n </Center>\n </div>\n ),\n [\n showHandle,\n expandable,\n styles.toggleRoot,\n styles.toggleLeft,\n styles.toggleRight,\n styles.handlerIcon,\n placement,\n handleRootStyle,\n classNames?.handle,\n toggleExpand,\n handleCenterStyle,\n handleIconWrapperStyle,\n ArrowIcon,\n cx,\n ],\n );\n\n // Size configuration - 使用内部宽度状态\n const sizeConfig = useMemo(() => {\n return {\n maxWidth: maxWidth,\n minWidth: minWidth,\n size: { height: '100%', width: state.internalWidth },\n };\n }, [state.internalWidth, minWidth, maxWidth]);\n\n // Resize enable configuration - 始终允许拖拽\n const resizeEnable = useMemo(() => {\n if (!resizable) {\n return RESIZE_DISABLED;\n }\n return {\n bottom: false,\n bottomLeft: false,\n bottomRight: false,\n left: placement === 'right',\n right: placement === 'left',\n top: false,\n topLeft: false,\n topRight: false,\n };\n }, [resizable, placement]);\n\n // Memoize handle classes to prevent recreation\n const handleClasses = useMemo(\n () => ({\n [placement === 'left' ? 'right' : 'left']: cx(\n styles.resizeHandle,\n showHandleHighlight && styles.resizeHandleHighlight,\n placement === 'left' ? styles.resizeHandleLeft : styles.resizeHandleRight,\n ),\n }),\n [placement, styles, showHandleHighlight, cx],\n );\n\n // Memoize container style to prevent recreation\n const containerStyle = useMemo<CSSProperties>(\n () => ({\n ...customStyles?.container,\n ...rest.style,\n // 拖拽时不要动画,点击 handle 时有流畅的弹性动画\n transition: state.isResizing\n ? 'none'\n : state.isAnimating\n ? `width ${ANIMATION_DURATION}ms cubic-bezier(0.22, 1, 0.36, 1)`\n : 'none',\n }),\n [customStyles?.container, rest.style, state.isResizing, state.isAnimating],\n );\n\n // Memoize class names\n const containerClassName = useMemo(\n () => cx(styles.container, classNames?.container, className),\n [cx, styles.container, classNames?.container, className],\n );\n\n const contentClassName = useMemo(\n () =>\n cx(\n showBorder ? styles.contentContainer : styles.contentContainerNoBorder,\n styles.menuOverride,\n classNames?.content,\n ),\n [\n cx,\n styles.contentContainer,\n styles.contentContainerNoBorder,\n styles.menuOverride,\n classNames?.content,\n showBorder,\n ],\n );\n\n const headerClassName = useMemo(\n () => cx(styles.header, classNames?.header),\n [cx, styles.header, classNames?.header],\n );\n\n const bodyClassName = useMemo(\n () => cx(styles.body, classNames?.body),\n [cx, styles.body, classNames?.body],\n );\n\n const footerClassName = useMemo(\n () => cx(styles.footer, classNames?.footer),\n [cx, styles.footer, classNames?.footer],\n );\n\n // Cleanup timeouts on unmount\n useEffect(() => {\n return () => {\n if (animationTimeoutRef.current) {\n clearTimeout(animationTimeoutRef.current);\n }\n if (collapseTimeoutRef.current) {\n clearTimeout(collapseTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <aside ref={ref}>\n <Resizable\n {...sizeConfig}\n className={containerClassName}\n enable={resizeEnable}\n handleClasses={handleClasses}\n onResize={handleResize}\n onResizeStart={handleResizeStart}\n onResizeStop={handleResizeStop}\n style={containerStyle}\n >\n {handle}\n <Flexbox\n className={contentClassName}\n style={{\n ...cssVariables,\n ...customStyles?.content,\n }}\n >\n {currentHeader && (\n <div className={headerClassName} style={customStyles?.header}>\n {currentHeader}\n </div>\n )}\n <div className={bodyClassName} style={customStyles?.body}>\n {currentBody}\n </div>\n {currentFooter && (\n <div className={footerClassName} style={customStyles?.footer}>\n {currentFooter}\n </div>\n )}\n </Flexbox>\n </Resizable>\n </aside>\n );\n },\n);\n\nDraggableSideNav.displayName = 'DraggableSideNav';\n\nexport default DraggableSideNav;\n","import { createStaticStyles } from 'antd-style';\n\n// Layout constants (aligned with DraggablePanel)\nconst LAYOUT = {\n offset: 16,\n toggleLength: 54,\n toggleShort: 16,\n};\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n body: css`\n /* Smooth scroll behavior */\n scroll-behavior: smooth;\n overflow: hidden auto;\n flex: 1;\n\n /* Better scrollbar styling */\n &::-webkit-scrollbar {\n width: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 3px;\n background: ${cssVar.colorBorderSecondary};\n\n &:hover {\n background: ${cssVar.colorBorder};\n }\n }\n `,\n container: css`\n /* Width transition controlled by inline style */\n\n /* Ensure smooth animations */\n will-change: width;\n\n position: relative;\n\n display: flex;\n flex-direction: column;\n\n height: 100%;\n `,\n contentContainer: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n height: 100%;\n border-inline-end: 1px solid ${cssVar.colorBorderSecondary};\n\n background: var(--draggable-side-nav-bg, ${cssVar.colorBgLayout});\n `,\n contentContainerNoBorder: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n height: 100%;\n border-inline-end: 0 solid ${cssVar.colorBorderSecondary};\n\n background: var(--draggable-side-nav-bg, ${cssVar.colorBgLayout});\n `,\n footer: css`\n flex-shrink: 0;\n `,\n handlerIcon: css`\n /* Icon transitions are now handled by motion */\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n header: css`\n flex-shrink: 0;\n `,\n menuOverride: css`\n .${prefixCls}-menu {\n .${prefixCls}-menu-item {\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: center;\n\n height: unset;\n min-height: 36px;\n padding-block: 4px;\n padding-inline: 8px !important;\n }\n\n .${prefixCls}-menu-item-group-title {\n overflow: hidden;\n padding-inline: 8px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .${prefixCls}-menu-item-icon {\n position: absolute;\n inset-inline-start: 0;\n\n display: flex !important;\n flex: none;\n align-items: center;\n justify-content: center;\n\n width: 36px;\n height: 36px;\n }\n\n .${prefixCls}-menu-title-content {\n overflow: hidden;\n flex: 1;\n\n margin: 0 !important;\n padding-inline-start: 36px;\n\n line-height: 1.5;\n }\n\n &.${prefixCls}-menu-inline-collapsed {\n .ant-menu-title-content {\n display: none;\n width: 0;\n opacity: 0;\n }\n\n .${prefixCls}-menu-item {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 36px !important;\n height: 36px !important;\n }\n }\n }\n `,\n resizeHandle: css`\n cursor: col-resize;\n\n position: absolute;\n inset-block: 0 0;\n\n width: 8px;\n\n transition: background-color 0.2s ease;\n\n &::after {\n content: '';\n\n position: absolute;\n inset-block: 0;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n\n width: 2px;\n\n background: transparent;\n\n transition: all 0.25s cubic-bezier(0.22, 1, 0.36, 1);\n }\n `,\n resizeHandleHighlight: css`\n &:hover {\n &::after {\n width: 3px;\n background: ${cssVar.colorPrimary};\n box-shadow: 0 0 8px color-mix(in srgb, ${cssVar.colorPrimary} 25%, transparent);\n }\n }\n\n &:active {\n &::after {\n background: ${cssVar.colorPrimaryActive};\n }\n }\n `,\n resizeHandleLeft: css`\n inset-inline-end: -4px;\n `,\n resizeHandleRight: css`\n inset-inline-start: -4px;\n `,\n toggleLeft: css`\n inset-inline-end: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -${LAYOUT.toggleLength / 2}px;\n margin-inline-start: -1px;\n border-inline-start-width: 0;\n border-radius: 0 ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG} 0;\n }\n `,\n toggleRight: css`\n inset-inline-start: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -${LAYOUT.toggleLength / 2}px;\n margin-inline-end: -1px;\n border-inline-end-width: 0;\n border-radius: ${cssVar.borderRadiusLG} 0 0 ${cssVar.borderRadiusLG}; /* 右侧面板,handle 在左边,左侧圆角 */\n }\n `,\n toggleRoot: css`\n pointer-events: none;\n position: absolute;\n z-index: 50;\n\n /* Smooth transitions for all states */\n transition: opacity 0.25s cubic-bezier(0.22, 1, 0.36, 1);\n\n &:has(> div) {\n pointer-events: all;\n }\n\n > div {\n pointer-events: all;\n cursor: pointer;\n\n position: absolute;\n\n border: 1px solid ${cssVar.colorBorder};\n\n color: ${cssVar.colorTextTertiary};\n\n background: var(--draggable-side-nav-bg, ${cssVar.colorBgLayout});\n backdrop-filter: blur(8px);\n\n /* Enhanced transitions with backdrop blur */\n transition:\n color 0.2s ${cssVar.motionEaseOut},\n transform 0.2s ${cssVar.motionEaseOut},\n box-shadow 0.2s ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n transform: scale(0.95);\n color: ${cssVar.colorText};\n }\n }\n `,\n}));\n","'use client';\n\nimport { Drawer as AntdDrawer } from 'antd';\nimport { cssVar } from 'antd-style';\nimport { XIcon } from 'lucide-react';\nimport { CSSProperties, memo, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport type { DrawerProps } from './type';\n\nconst Drawer = memo<DrawerProps>(\n ({\n onClose,\n containerMaxWidth = 1024,\n classNames,\n title,\n placement,\n styles,\n children,\n height,\n width,\n extra,\n closeIconProps,\n noHeader,\n sidebarWidth = 280,\n sidebar,\n closeIcon,\n ref,\n ...rest\n }) => {\n const headerBorder: CSSProperties = useMemo(() => {\n if (height === '100%' || width === '100%' || height === '100vh' || width === '100vw')\n return {};\n\n switch (placement) {\n case 'top': {\n return {\n borderBottom: `1px solid ${cssVar.colorBorder}`,\n };\n }\n case 'bottom': {\n return {\n borderTop: `1px solid ${cssVar.colorBorder}`,\n };\n }\n case 'left': {\n return {\n borderRight: `1px solid ${cssVar.colorBorder}`,\n };\n }\n case 'right': {\n return {\n borderLeft: `1px solid ${cssVar.colorBorder}`,\n };\n }\n default: {\n return {};\n }\n }\n }, [placement, height, width]);\n\n const extraNode = (\n <Flexbox\n align={'center'}\n className={classNames?.extra}\n gap={4}\n horizontal\n justify={'flex-end'}\n style={{\n position: 'absolute',\n right: 4,\n top: 4,\n ...styles?.extra,\n }}\n >\n {extra}\n {closeIcon || <ActionIcon icon={XIcon} onClick={onClose} {...closeIconProps} />}\n </Flexbox>\n );\n\n const sidebarContent = (\n <>\n <Flexbox\n className={classNames?.sidebar}\n paddingBlock={12}\n paddingInline={16}\n style={{\n background: cssVar.colorBgLayout,\n borderRight: `1px solid ${cssVar.colorBorderSecondary}`,\n height: '100vh',\n overflowX: 'hidden',\n overflowY: 'auto',\n position: 'sticky',\n top: 0,\n ...styles?.sidebar,\n }}\n width={sidebarWidth}\n >\n {sidebar}\n </Flexbox>\n <Flexbox\n className={classNames?.sidebarContent}\n flex={1}\n paddingBlock={12}\n paddingInline={16}\n style={{\n background: cssVar.colorBgContainer,\n overflowX: 'hidden',\n overflowY: 'auto',\n ...styles?.sidebarContent,\n }}\n >\n {children}\n </Flexbox>\n </>\n );\n\n return (\n <AntdDrawer\n classNames={classNames}\n closable={false}\n extra={noHeader ? undefined : extraNode}\n height={height}\n keyboard={true}\n onClose={onClose}\n panelRef={ref}\n placement={placement}\n styles={\n typeof styles === 'function'\n ? styles\n : {\n ...styles,\n body: {\n background: 'transparent',\n paddingBlock: sidebar ? 0 : 12,\n paddingInline: sidebar ? 0 : 16,\n ...styles?.body,\n },\n header: {\n background: 'transparent',\n display: noHeader ? 'none' : undefined,\n padding: 4,\n ...styles?.header,\n },\n section: {\n background: sidebar\n ? `linear-gradient(to right, ${cssVar.colorBgLayout} 49.9%, ${cssVar.colorBgContainer} 50%)`\n : cssVar.colorBgContainer,\n ...styles?.section,\n },\n wrapper: {\n background: cssVar.colorBgContainer,\n ...headerBorder,\n ...styles?.wrapper,\n },\n }\n }\n title={\n <Flexbox\n align={'center'}\n className={classNames?.title}\n horizontal\n justify={'flex-start'}\n paddingBlock={8}\n paddingInline={16}\n style={{\n justifySelf: 'center',\n maxWidth: containerMaxWidth,\n width: '100%',\n ...styles?.title,\n }}\n >\n {title}\n </Flexbox>\n }\n width={width}\n {...rest}\n >\n <Flexbox\n className={classNames?.bodyContent}\n horizontal={!!sidebar}\n style={{\n justifySelf: 'center',\n maxWidth: containerMaxWidth,\n minHeight: '100%',\n overflow: sidebar ? 'visible' : undefined,\n width: '100%',\n ...styles?.bodyContent,\n }}\n >\n {noHeader && extraNode}\n {sidebar ? sidebarContent : children}\n </Flexbox>\n </AntdDrawer>\n );\n },\n);\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n","'use client';\n\nimport { Dropdown as AntdDropdown } from 'antd';\nimport { memo, useMemo } from 'react';\n\nimport { IconProvider } from '@/Icon';\nimport { mapItems } from '@/Menu';\n\nimport type { DropdownProps } from './type';\n\n/**\n * @deprecated\n * Use `DropdownMenu` or `ContextMenu` instead\n * @see https://ui.lobehub.com/components/context-menu\n * @see https://ui.lobehub.com/components/dropdown-menu\n */\nconst Dropdown = memo<DropdownProps>(({ children, iconProps, menu, ...rest }) => {\n const { items, ...menuProps } = menu;\n\n const antdItems = useMemo(() => items.map((item) => mapItems(item)), [items]);\n\n return (\n <IconProvider\n config={{\n size: 'small',\n ...iconProps,\n }}\n >\n <AntdDropdown\n menu={{\n ...menuProps,\n items: antdItems,\n }}\n {...rest}\n >\n {children}\n </AntdDropdown>\n </IconProvider>\n );\n});\n\nDropdown.displayName = 'Dropdown';\n\nexport default Dropdown;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { Edit3 } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport ControlInput from './ControlInput';\nimport type { EditableTextProps } from './type';\n\nconst EditableText = memo<EditableTextProps>(\n ({\n value,\n showEditIcon = true,\n onChange,\n editing,\n onEditingChange,\n onChangeEnd,\n onFocus,\n onBlur,\n className,\n inputProps,\n onValueChanging,\n gap = 8,\n style,\n size = 'small',\n styles,\n classNames,\n variant = 'borderless',\n ...rest\n }) => {\n const [edited, setEdited] = useControlledState(false, {\n onChange: onEditingChange,\n value: editing,\n });\n\n useHotkeys(\n 'esc',\n () => {\n setEdited(false);\n },\n {\n enableOnFormTags: true,\n enabled: edited,\n preventDefault: true,\n },\n );\n\n const height = useMemo(() => {\n if (!size) return 32;\n switch (size) {\n case 'large': {\n return 40;\n }\n case 'middle': {\n return 32;\n }\n case 'small': {\n return 24;\n }\n }\n }, [size]);\n\n const input = (\n <ControlInput\n className={cx(className, classNames?.input)}\n onBlur={onBlur}\n onChange={onChange}\n onChangeEnd={(v) => {\n onChangeEnd?.(v);\n setEdited(false);\n }}\n onFocus={onFocus}\n onValueChanging={onValueChanging}\n size={size}\n style={{\n height,\n ...style,\n ...styles?.input,\n }}\n value={value as string}\n variant={variant}\n {...inputProps}\n />\n );\n\n const content = (\n <>\n <span>{value}</span>\n {showEditIcon && (\n <ActionIcon\n icon={Edit3}\n onClick={() => {\n setEdited(!edited);\n }}\n size=\"small\"\n title={'Edit'}\n />\n )}\n </>\n );\n\n return (\n <Flexbox\n align={'center'}\n className={cx(className, classNames?.container)}\n gap={gap}\n horizontal\n style={{\n height,\n width: '100%',\n ...style,\n ...styles?.container,\n }}\n {...rest}\n >\n {edited ? input : content}\n </Flexbox>\n );\n },\n);\n\nEditableText.displayName = 'EditableText';\n\nexport default EditableText;\n","'use client';\n\nimport type { InputRef } from 'antd';\nimport { RotateCcw, Save } from 'lucide-react';\nimport { memo, useEffect, useRef, useState } from 'react';\n\nimport ActionIcon, { type ActionIconProps } from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Input, { type InputProps } from '@/Input';\n\nexport interface ControlInputProps extends Omit<InputProps, 'onChange' | 'value' | 'onAbort'> {\n onChange?: (value: string) => void;\n onChangeEnd?: (value: string) => void;\n onValueChanging?: (value: string) => void;\n submitIcon?: ActionIconProps['icon'];\n texts?: {\n reset?: string;\n submit?: string;\n };\n value?: string;\n}\n\nconst ControlInput = memo<ControlInputProps>(\n ({\n value,\n onChange,\n onValueChanging,\n onChangeEnd,\n onCompositionEnd,\n onCompositionStart,\n onPressEnter,\n onFocus,\n submitIcon,\n style,\n texts,\n ...rest\n }) => {\n const ref = useRef<InputRef>(null);\n const [input, setInput] = useState<string>(value || '');\n\n const isChineseInput = useRef(false);\n\n useEffect(() => {\n if (value !== undefined) setInput(value);\n }, [value]);\n\n const handleUpload = () => {\n onChange?.(input);\n ref?.current?.blur();\n onChangeEnd?.(input);\n };\n\n return (\n <Input\n autoFocus\n onChange={(e) => {\n setInput(e.target.value);\n onValueChanging?.(e.target.value);\n }}\n onCompositionEnd={(e) => {\n isChineseInput.current = false;\n onCompositionEnd?.(e);\n }}\n onCompositionStart={(e) => {\n isChineseInput.current = true;\n onCompositionStart?.(e);\n }}\n onFocus={onFocus}\n onPressEnter={(e) => {\n if (!e.shiftKey && !isChineseInput.current) {\n e.preventDefault();\n handleUpload();\n onPressEnter?.(e);\n }\n }}\n ref={ref}\n style={{\n width: '100%',\n ...style,\n }}\n suffix={\n value === input ? (\n <span />\n ) : (\n <Flexbox\n gap={2}\n horizontal\n style={{\n marginRight: -4,\n zIndex: 1,\n }}\n >\n <ActionIcon\n icon={RotateCcw}\n onClick={(e) => {\n e.preventDefault();\n setInput(value || '');\n }}\n size=\"small\"\n title={texts?.reset || 'Reset'}\n />\n <ActionIcon\n icon={submitIcon || Save}\n onClick={(e) => {\n e.preventDefault();\n handleUpload();\n }}\n size=\"small\"\n title={texts?.submit || 'Submit'}\n variant={'filled'}\n />\n </Flexbox>\n )\n }\n value={input}\n {...rest}\n />\n );\n },\n);\n\nControlInput.displayName = 'ControlInput';\n\nexport default ControlInput;\n","'use client';\n\nimport { Input as AntInput } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport type { InputProps } from './type';\n\nconst Input = memo<InputProps>(({ ref, variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntInput\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nInput.displayName = 'Input';\n\nexport default Input;\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n &[class*='ant-input'] {\n ${lobeStaticStylish.variantBorderless}\n &:hover {\n ${lobeStaticStylish.variantBorderlessWithoutHover}\n }\n }\n `,\n borderlessOPT: css`\n &[class*='ant-otp'] {\n [class*='ant-otp-input'] {\n ${lobeStaticStylish.variantBorderless};\n }\n }\n `,\n filled: cx(\n lobeStaticStylish.variantFilled,\n css`\n &:focus-within {\n ${lobeStaticStylish.variantFilledWithoutHover}\n }\n `,\n ),\n\n filledOPT: css`\n &[class*='ant-otp'] {\n [class*='ant-otp-input'] {\n ${lobeStaticStylish.variantFilled};\n }\n }\n `,\n outlined: lobeStaticStylish.variantOutlined,\n outlinedOPT: css`\n &[class*='ant-otp'] {\n [class*='ant-otp-input'] {\n ${lobeStaticStylish.variantOutlined};\n }\n }\n `,\n root: css``,\n rootOPT: css`\n &[class*='ant-otp'] {\n [class*='ant-otp-input'] {\n &:focus-within {\n border-color: ${cssVar.colorBorder};\n }\n }\n }\n `,\n shadow: lobeStaticStylish.shadow,\n shadowOPT: css`\n &[class*='ant-otp'] {\n [class*='ant-otp-input'] {\n ${lobeStaticStylish.shadow};\n }\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n underlined: null,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const variantsOPT = cva(styles.rootOPT, {\n defaultVariants: {\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filledOPT,\n outlined: styles.outlinedOPT,\n borderless: styles.borderlessOPT,\n underlined: null,\n },\n shadow: {\n false: null,\n true: styles.shadowOPT,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { InputNumber as AntInputNumber } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport type { InputNumberProps } from './type';\n\nconst InputNumber = memo<InputNumberProps>(({ ref, variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntInputNumber\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nInputNumber.displayName = 'InputNumber';\n\nexport default InputNumber;\n","'use client';\n\nimport { Input as AntInput } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variantsOPT } from './style';\nimport type { InputOPTProps } from './type';\n\nconst InputOPT = memo<InputOPTProps>(({ ref, variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntInput.OTP\n className={cx(\n variantsOPT({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nInputOPT.displayName = 'InputOPT';\n\nexport default InputOPT;\n","'use client';\n\nimport { Input as AntInput } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport type { InputPasswordProps } from './type';\n\nconst InputPassword = memo<InputPasswordProps>(({ ref, variant, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntInput.Password\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n});\n\nInputPassword.displayName = 'InputPassword';\n\nexport default InputPassword;\n","'use client';\n\nimport { Input as AntInput } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport type { TextAreaProps } from './type';\n\nconst TextArea = memo<TextAreaProps>(\n ({ ref, variant, shadow, className, resize = false, style, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntInput.TextArea\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n style={{\n resize: resize ? undefined : 'none',\n ...style,\n }}\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n","'use client';\n\nimport { Autocomplete } from '@base-ui/react/autocomplete';\nimport { cx } from 'antd-style';\nimport type React from 'react';\nimport { forwardRef } from 'react';\n\nimport { styles as menuStyles } from '@/Menu/sharedStyle';\nimport { usePortalContainer } from '@/hooks/usePortalContainer';\n\nimport { styles } from './style';\n\nexport const EDITOR_SLASH_MENU_CONTAINER_ATTR = 'data-lobe-ui-editor-slash-menu-container';\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => cx(base, className(state));\n return cx(base, className);\n};\n\nexport const EditorSlashMenuRoot = Autocomplete.Root;\nexport const EditorSlashMenuList = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof Autocomplete.List>\n>(({ className, ...rest }, ref) => {\n return (\n <Autocomplete.List\n {...rest}\n className={mergeStateClassName(cx(styles.list), className as any) as any}\n ref={ref}\n />\n );\n});\nEditorSlashMenuList.displayName = 'EditorSlashMenuList';\n\nexport type EditorSlashMenuPortalProps = React.ComponentProps<typeof Autocomplete.Portal> & {\n /**\n * When `container` is not provided, it uses a shared container created by `usePortalContainer`.\n */\n container?: HTMLElement | null;\n};\n\nexport const EditorSlashMenuPortal = ({ container, ...rest }: EditorSlashMenuPortalProps) => {\n const defaultContainer = usePortalContainer(EDITOR_SLASH_MENU_CONTAINER_ATTR);\n return <Autocomplete.Portal container={container ?? defaultContainer} {...rest} />;\n};\nEditorSlashMenuPortal.displayName = 'EditorSlashMenuPortal';\n\nexport type EditorSlashMenuPositionerProps = React.ComponentProps<typeof Autocomplete.Positioner>;\n\nexport const EditorSlashMenuPositioner = ({\n className,\n align,\n positionMethod,\n side,\n sideOffset,\n ...rest\n}: EditorSlashMenuPositionerProps) => {\n return (\n <Autocomplete.Positioner\n {...rest}\n align={align ?? 'start'}\n className={mergeStateClassName(menuStyles.positioner, className as any) as any}\n positionMethod={positionMethod ?? 'fixed'}\n side={side ?? 'bottom'}\n sideOffset={sideOffset ?? 6}\n />\n );\n};\nEditorSlashMenuPositioner.displayName = 'EditorSlashMenuPositioner';\n\nexport type EditorSlashMenuPopupProps = React.ComponentProps<typeof Autocomplete.Popup>;\n\nexport const EditorSlashMenuPopup = ({\n className,\n initialFocus = false,\n ...rest\n}: EditorSlashMenuPopupProps) => {\n return (\n <Autocomplete.Popup\n {...rest}\n className={mergeStateClassName(menuStyles.popup, className as any) as any}\n initialFocus={initialFocus}\n />\n );\n};\nEditorSlashMenuPopup.displayName = 'EditorSlashMenuPopup';\n\nexport type EditorSlashMenuItemProps = React.ComponentProps<typeof Autocomplete.Item> & {\n danger?: boolean;\n};\n\nexport const EditorSlashMenuItem = ({ className, danger, ...rest }: EditorSlashMenuItemProps) => {\n return (\n <Autocomplete.Item\n {...rest}\n className={(state) =>\n cx(\n menuStyles.item,\n danger && menuStyles.danger,\n typeof className === 'function' ? className(state) : className,\n )\n }\n />\n );\n};\nEditorSlashMenuItem.displayName = 'EditorSlashMenuItem';\n\nexport type EditorSlashMenuGroupProps = React.ComponentProps<typeof Autocomplete.Group>;\nexport const EditorSlashMenuGroup = Autocomplete.Group;\n\nexport type EditorSlashMenuGroupLabelProps = React.ComponentProps<typeof Autocomplete.GroupLabel>;\n\nexport const EditorSlashMenuGroupLabel = ({\n className,\n ...rest\n}: EditorSlashMenuGroupLabelProps) => {\n return (\n <Autocomplete.GroupLabel\n {...rest}\n className={(state) =>\n cx(menuStyles.groupLabel, typeof className === 'function' ? className(state) : className)\n }\n />\n );\n};\nEditorSlashMenuGroupLabel.displayName = 'EditorSlashMenuGroupLabel';\n\nexport type EditorSlashMenuEmptyProps = React.ComponentProps<typeof Autocomplete.Empty>;\n\nexport const EditorSlashMenuEmpty = ({ className, ...rest }: EditorSlashMenuEmptyProps) => {\n return (\n <Autocomplete.Empty\n {...rest}\n className={(state) =>\n cx(\n menuStyles.item,\n menuStyles.empty,\n typeof className === 'function' ? className(state) : className,\n )\n }\n />\n );\n};\nEditorSlashMenuEmpty.displayName = 'EditorSlashMenuEmpty';\n\nexport type EditorSlashMenuItemContentProps = React.HTMLAttributes<HTMLDivElement>;\nexport const EditorSlashMenuItemContent = ({\n className,\n ...rest\n}: EditorSlashMenuItemContentProps) => {\n return <div {...rest} className={cx(menuStyles.itemContent, className)} />;\n};\nEditorSlashMenuItemContent.displayName = 'EditorSlashMenuItemContent';\n\nexport type EditorSlashMenuItemIconProps = React.HTMLAttributes<HTMLSpanElement>;\nexport const EditorSlashMenuItemIcon = ({ className, ...rest }: EditorSlashMenuItemIconProps) => {\n return <span {...rest} className={cx(menuStyles.icon, className)} />;\n};\nEditorSlashMenuItemIcon.displayName = 'EditorSlashMenuItemIcon';\n\nexport type EditorSlashMenuItemLabelProps = React.HTMLAttributes<HTMLSpanElement>;\nexport const EditorSlashMenuItemLabel = ({ className, ...rest }: EditorSlashMenuItemLabelProps) => {\n return <span {...rest} className={cx(menuStyles.label, className)} />;\n};\nEditorSlashMenuItemLabel.displayName = 'EditorSlashMenuItemLabel';\n\nexport type EditorSlashMenuItemExtraProps = React.HTMLAttributes<HTMLSpanElement>;\nexport const EditorSlashMenuItemExtra = ({ className, ...rest }: EditorSlashMenuItemExtraProps) => {\n return <span {...rest} className={cx(menuStyles.extra, className)} />;\n};\nEditorSlashMenuItemExtra.displayName = 'EditorSlashMenuItemExtra';\n\nexport type EditorSlashMenuHiddenInputProps = React.ComponentProps<typeof Autocomplete.Input>;\nexport const EditorSlashMenuHiddenInput = ({\n className,\n ...rest\n}: EditorSlashMenuHiddenInputProps) => {\n return (\n <Autocomplete.Input\n {...rest}\n className={mergeStateClassName(cx(styles.hiddenInput), className as any) as any}\n />\n );\n};\nEditorSlashMenuHiddenInput.displayName = 'EditorSlashMenuHiddenInput';\n","'use client';\n\nimport { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => ({\n // Optional hidden input for keyboard navigation (opt-in).\n hiddenInput: css`\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip: rect(0, 0, 0, 0);\n `,\n list: css`\n overflow: auto;\n max-height: 320px;\n `,\n}));\n","'use client';\n\nimport type {\n AutocompleteRootChangeEventDetails,\n AutocompleteRootProps,\n} from '@base-ui/react/autocomplete';\nimport type React from 'react';\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuItemRenderer } from './MenuItemRenderer';\nimport {\n EditorSlashMenuEmpty,\n EditorSlashMenuGroup,\n EditorSlashMenuGroupLabel,\n EditorSlashMenuHiddenInput,\n EditorSlashMenuList,\n EditorSlashMenuPopup,\n EditorSlashMenuPortal,\n EditorSlashMenuPositioner,\n EditorSlashMenuRoot,\n} from './atoms';\nimport type { EditorSlashMenuItems, EditorSlashMenuOption as ItemType } from './type';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\nimport { useNormalizedItems } from './useNormalizedItems';\nimport { isGroup } from './utils';\n\ntype Props = {\n /** Anchor for positioning (caret virtual element, dom element, ref, etc.) */\n anchor?: React.ComponentProps<typeof EditorSlashMenuPositioner>['anchor'];\n defaultOpen?: boolean;\n\n /** Initial query string (uncontrolled) */\n defaultValue?: string;\n /** Optional custom empty state */\n empty?: React.ReactNode;\n hiddenInputProps?: React.ComponentProps<typeof EditorSlashMenuHiddenInput>;\n items: EditorSlashMenuItems;\n\n listProps?: React.ComponentProps<typeof EditorSlashMenuList>;\n onOpenChange?: (open: boolean, details: AutocompleteRootChangeEventDetails) => void;\n onOpenChangeComplete?: (open: boolean) => void;\n /** Called when a command is selected. */\n onSelect?: (item: ItemType, details: AutocompleteRootChangeEventDetails) => void;\n\n /** Called when query changes. By default, changes caused by item selection are ignored. */\n onValueChange?: (value: string, details: AutocompleteRootChangeEventDetails) => void;\n\n open?: boolean;\n popupProps?: React.ComponentProps<typeof EditorSlashMenuPopup>;\n portalProps?: Omit<React.ComponentProps<typeof EditorSlashMenuPortal>, 'container'> & {\n container?: HTMLElement | null;\n };\n positionerProps?: Omit<React.ComponentProps<typeof EditorSlashMenuPositioner>, 'anchor'>;\n\n /** Optional custom group label renderer */\n renderGroupLabel?: (label: string) => React.ReactNode;\n /** Optional custom item renderer */\n renderItem?: (item: ItemType) => React.ReactNode;\n /** Reserve icon space even when icon is missing */\n reserveIconSpace?: boolean;\n /** Pass-through props */\n rootProps?: Omit<\n AutocompleteRootProps<ItemType>,\n | 'items'\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'open'\n | 'defaultOpen'\n | 'onOpenChange'\n | 'onOpenChangeComplete'\n | 'itemToStringValue'\n >;\n /** Whether selecting an item should propagate its filled value via `onValueChange`. */\n updateValueOnSelect?: boolean;\n\n /** Current query string (controlled) */\n value?: string;\n /**\n * Render a visually-hidden input element for keyboard navigation / screen readers.\n * Default is `false` because slash menus usually live inside an editor input.\n */\n withHiddenInput?: boolean;\n};\n\nconst EditorSlashMenu = memo<Props>(\n ({\n items,\n anchor,\n\n open,\n defaultOpen,\n onOpenChange,\n onOpenChangeComplete,\n\n value,\n defaultValue,\n onValueChange,\n updateValueOnSelect = false,\n\n onSelect,\n\n empty = 'No results',\n renderGroupLabel,\n renderItem,\n reserveIconSpace = true,\n\n rootProps,\n portalProps,\n positionerProps,\n popupProps,\n listProps,\n\n withHiddenInput = false,\n hiddenInputProps,\n }) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n\n useEffect(() => {\n if (open === undefined) return;\n setUncontrolledOpen(open);\n }, [open]);\n\n const resolvedOpen = open ?? uncontrolledOpen;\n\n const { resolvedItems, hasAnyIcon } = useNormalizedItems(items);\n const { listRef } = useKeyboardNavigation({ isOpen: resolvedOpen });\n\n const itemToStringValue = useCallback((item: ItemType) => {\n const kws = item.keywords?.length ? ` ${item.keywords.join(' ')}` : '';\n return `${item.label}${kws}`;\n }, []);\n\n const handleValueChange = useCallback(\n (nextValue: string, details: AutocompleteRootChangeEventDetails) => {\n if (!updateValueOnSelect && details.reason === 'item-press') return;\n onValueChange?.(nextValue, details);\n },\n [onValueChange, updateValueOnSelect],\n );\n\n const handleSelect = useCallback(\n (item: ItemType, details: AutocompleteRootChangeEventDetails) => {\n onSelect?.(item, details);\n },\n [onSelect],\n );\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, details: AutocompleteRootChangeEventDetails) => {\n setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen, details);\n },\n [onOpenChange],\n );\n\n // Stable ref callback that doesn't depend on listProps object\n const setListRef = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node;\n const externalRef = (listProps as any)?.ref;\n if (!externalRef) return;\n if (typeof externalRef === 'function') {\n externalRef(node);\n } else {\n (externalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [listRef, listProps],\n );\n\n // Memoize render props to prevent recreating on every render\n const menuItemProps = useMemo(\n () => ({\n hasAnyIcon,\n onSelect: handleSelect,\n renderItem,\n reserveIconSpace,\n }),\n [hasAnyIcon, handleSelect, renderItem, reserveIconSpace],\n );\n\n return (\n <EditorSlashMenuRoot<ItemType>\n {...(rootProps as any)}\n defaultOpen={defaultOpen}\n defaultValue={defaultValue}\n itemToStringValue={itemToStringValue as any}\n items={resolvedItems as any}\n onOpenChange={handleOpenChange}\n onOpenChangeComplete={onOpenChangeComplete}\n onValueChange={handleValueChange}\n open={open}\n value={value}\n >\n {withHiddenInput ? <EditorSlashMenuHiddenInput {...(hiddenInputProps as any)} /> : null}\n\n <EditorSlashMenuPortal {...(portalProps as any)}>\n <EditorSlashMenuPositioner {...(positionerProps as any)} anchor={anchor}>\n <EditorSlashMenuPopup {...(popupProps as any)}>\n <EditorSlashMenuList {...(listProps as any)} ref={setListRef as any}>\n {(entry: any) => {\n if (isGroup(entry)) {\n return (\n <EditorSlashMenuGroup\n key={entry.label ?? entry.items.map((i: any) => i.value).join('|')}\n >\n {entry.label\n ? (renderGroupLabel?.(entry.label) ?? (\n <EditorSlashMenuGroupLabel>{entry.label}</EditorSlashMenuGroupLabel>\n ))\n : null}\n {entry.items.map((item: ItemType) => (\n <MenuItemRenderer {...menuItemProps} item={item} key={item.value} />\n ))}\n </EditorSlashMenuGroup>\n );\n }\n\n const item = entry as ItemType;\n return <MenuItemRenderer {...menuItemProps} item={item} key={item.value} />;\n }}\n </EditorSlashMenuList>\n\n <EditorSlashMenuEmpty>{empty}</EditorSlashMenuEmpty>\n </EditorSlashMenuPopup>\n </EditorSlashMenuPositioner>\n </EditorSlashMenuPortal>\n </EditorSlashMenuRoot>\n );\n },\n);\n\nEditorSlashMenu.displayName = 'EditorSlashMenu';\n\nexport default EditorSlashMenu;\n","import type { AutocompleteRootChangeEventDetails } from '@base-ui/react/autocomplete';\nimport { memo } from 'react';\n\nimport {\n EditorSlashMenuItem,\n EditorSlashMenuItemContent,\n EditorSlashMenuItemExtra,\n EditorSlashMenuItemIcon,\n EditorSlashMenuItemLabel,\n} from './atoms';\nimport type { EditorSlashMenuOption } from './type';\n\ninterface MenuItemRendererProps {\n hasAnyIcon: boolean;\n item: EditorSlashMenuOption;\n onSelect: (item: EditorSlashMenuOption, details: AutocompleteRootChangeEventDetails) => void;\n renderItem?: (item: EditorSlashMenuOption) => React.ReactNode;\n reserveIconSpace: boolean;\n}\n\nconst DefaultItemContent = memo<{\n hasAnyIcon: boolean;\n item: EditorSlashMenuOption;\n reserveIconSpace: boolean;\n}>(({ item, hasAnyIcon, reserveIconSpace }) => (\n <EditorSlashMenuItemContent>\n <EditorSlashMenuItemIcon aria-hidden={!hasAnyIcon && !reserveIconSpace}>\n {item.icon ?? (reserveIconSpace && hasAnyIcon ? <span /> : null)}\n </EditorSlashMenuItemIcon>\n <EditorSlashMenuItemLabel>{item.label}</EditorSlashMenuItemLabel>\n {item.extra ? <EditorSlashMenuItemExtra>{item.extra}</EditorSlashMenuItemExtra> : null}\n </EditorSlashMenuItemContent>\n));\n\nDefaultItemContent.displayName = 'DefaultItemContent';\n\nexport const MenuItemRenderer = memo<MenuItemRendererProps>(\n ({ hasAnyIcon, item, onSelect, renderItem, reserveIconSpace }) => {\n const content = renderItem?.(item) ?? (\n <DefaultItemContent hasAnyIcon={hasAnyIcon} item={item} reserveIconSpace={reserveIconSpace} />\n );\n\n return (\n <EditorSlashMenuItem\n danger={item.danger}\n disabled={item.disabled}\n key={item.value}\n onClick={(e) => {\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n onSelect(item, { event: e as any, reason: 'item-press' } as any);\n }}\n value={item as any}\n >\n {content}\n </EditorSlashMenuItem>\n );\n },\n);\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n","import { useCallback, useEffect, useRef } from 'react';\n\nimport { isEditableTarget } from './utils';\n\ninterface UseKeyboardNavigationProps {\n isOpen: boolean;\n}\n\nexport const useKeyboardNavigation = ({ isOpen }: UseKeyboardNavigationProps) => {\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const dispatchListKey = useCallback((key: string) => {\n const list = listRef.current;\n if (!list) return;\n const event = new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key });\n list.dispatchEvent(event);\n }, []);\n\n // Auto-highlight first item when menu opens\n useEffect(() => {\n if (!isOpen) return;\n const raf = requestAnimationFrame(() => {\n const list = listRef.current;\n if (!list) return;\n if (list.querySelector('[data-highlighted]')) return;\n if (!list.querySelector('[role=\"option\"]')) return;\n dispatchListKey('ArrowDown');\n });\n return () => cancelAnimationFrame(raf);\n }, [dispatchListKey, isOpen]);\n\n // Global keyboard navigation when menu is open\n useEffect(() => {\n if (!isOpen) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!event.isTrusted) return;\n const list = listRef.current;\n if (!list) return;\n if (event.metaKey || event.ctrlKey || event.altKey) return;\n const target = event.target as HTMLElement | null;\n if (!isEditableTarget(target) || list.contains(target)) return;\n if (!list.querySelector('[role=\"option\"]')) return;\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp' && event.key !== 'Enter') return;\n if (event.key === 'Enter' && !list.querySelector('[data-highlighted]')) return;\n event.preventDefault();\n dispatchListKey(event.key);\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [dispatchListKey, isOpen]);\n\n return { listRef };\n};\n","import type { EditorSlashMenuGroup, EditorSlashMenuOption } from './type';\n\nexport const isGroup = (\n entry: EditorSlashMenuOption | EditorSlashMenuGroup,\n): entry is EditorSlashMenuGroup =>\n Boolean(\n (entry as EditorSlashMenuGroup).items && Array.isArray((entry as EditorSlashMenuGroup).items),\n );\n\nexport const isEditableTarget = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA') {\n return (\n !(target as HTMLInputElement | HTMLTextAreaElement).readOnly &&\n !(target as HTMLInputElement | HTMLTextAreaElement).disabled\n );\n }\n return target.getAttribute('role') === 'textbox';\n};\n","import { useMemo } from 'react';\n\nimport type { EditorSlashMenuGroup, EditorSlashMenuItems, EditorSlashMenuOption } from './type';\nimport { isGroup } from './utils';\n\nexport const useNormalizedItems = (items: EditorSlashMenuItems) => {\n const resolvedItems = useMemo(() => {\n const hasAnyGroup = items.some(isGroup);\n if (!hasAnyGroup) return items as EditorSlashMenuOption[];\n\n // Normalize: keep order, but ensure all entries are groups.\n const groups: EditorSlashMenuGroup[] = [];\n let buffer: EditorSlashMenuOption[] = [];\n\n const flush = () => {\n if (buffer.length) {\n groups.push({ items: buffer });\n buffer = [];\n }\n };\n\n for (const entry of items) {\n if (isGroup(entry)) {\n flush();\n groups.push(entry);\n } else {\n buffer.push(entry);\n }\n }\n flush();\n\n return groups;\n }, [items]);\n\n const hasAnyIcon = useMemo(() => {\n const walk = (entry: EditorSlashMenuOption | EditorSlashMenuGroup): boolean => {\n if (isGroup(entry)) return entry.items.some(walk as any);\n return Boolean(entry.icon);\n };\n return items.some(walk as any);\n }, [items]);\n\n return { hasAnyIcon, resolvedItems };\n};\n","'use client';\n\nimport data from '@emoji-mart/data';\nimport Picker from '@emoji-mart/react';\nimport { cx, useTheme } from 'antd-style';\nimport chroma from 'chroma-js';\nimport { SmileIcon, TrashIcon, UploadIcon } from 'lucide-react';\nimport { memo, useMemo, useRef, useState } from 'react';\nimport useSWR from 'swr';\nimport useMergeState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport Avatar from '@/Avatar';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport Popover from '@/Popover';\nimport Tabs, { TabsProps } from '@/Tabs';\nimport Tooltip from '@/Tooltip';\nimport emojiPickerMessages from '@/i18n/resources/en/emojiPicker';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport AvatarUploader from './AvatarUploader';\nimport { styles } from './style';\nimport type { EmojiPickerProps } from './type';\n\nconst DEFAULT_AVATAR = '🤖';\n\nconst EmojiPicker = memo<EmojiPickerProps>(\n ({\n value,\n defaultAvatar = DEFAULT_AVATAR,\n onChange,\n locale = 'en-US',\n allowUpload,\n allowDelete,\n texts,\n onDelete,\n compressSize = 256,\n customEmojis,\n className,\n loading,\n onUpload,\n customTabs = [],\n popupClassName,\n popupStyle,\n customRender,\n open,\n defaultOpen = false,\n onOpenChange,\n popupProps,\n shape,\n contentProps,\n ...rest\n }) => {\n const ref = useRef<HTMLDivElement>(null);\n const { t } = useTranslation(emojiPickerMessages);\n const [visible, setVisible] = useMergeState(defaultOpen, {\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n value: open,\n });\n const [tab, setTab] = useState<'emoji' | 'upload'>('emoji');\n\n const theme = useTheme();\n const pickerCssVariables = useMemo<Record<string, string>>(\n () => ({\n '--emoji-picker-rgb-accent': chroma(theme.colorPrimary).rgb().join(', '),\n '--emoji-picker-rgb-background': chroma(theme.colorBgElevated).rgb().join(', '),\n }),\n [theme.colorPrimary, theme.colorBgElevated],\n );\n\n const { data: i18n } = useSWR(\n locale,\n async () => await import(`@emoji-mart/data/i18n/${locale.split('-')[0]}.json`),\n { revalidateOnFocus: false, revalidateOnMount: false },\n );\n\n const [ava, setAva] = useMergeState(defaultAvatar, {\n defaultValue: defaultAvatar,\n onChange,\n value,\n });\n\n const handleAvatarChange = (emoji: string) => {\n setAva(emoji);\n setVisible(false);\n };\n\n const emojiText = texts?.emoji ?? t('emojiPicker.emoji');\n const uploadText = texts?.upload ?? t('emojiPicker.upload');\n const deleteText = texts?.delete ?? t('emojiPicker.delete');\n\n const hideEmojiTab = typeof allowUpload === 'object' && allowUpload?.enableEmoji === false;\n\n const items: TabsProps['items'] = [\n !hideEmojiTab && {\n key: 'emoji',\n label: (\n <Tooltip title={emojiText}>\n <Icon icon={SmileIcon} size={{ size: 20, strokeWidth: 2.5 }} />\n </Tooltip>\n ),\n },\n allowUpload && {\n key: 'upload',\n label: (\n <Tooltip title={uploadText}>\n <Icon icon={UploadIcon} size={{ size: 20, strokeWidth: 2.5 }} />\n </Tooltip>\n ),\n },\n ...customTabs.map((tab) => ({ key: tab.value, label: tab.label })),\n ].filter(Boolean) as TabsProps['items'];\n\n const showTabs = allowDelete || (items && items.length > 1);\n\n const content = (\n <Flexbox\n className={cx(styles.picker, popupClassName)}\n ref={ref}\n style={{\n minWidth: 310,\n paddingTop: showTabs ? 4 : 0,\n ...pickerCssVariables,\n ...popupStyle,\n }}\n {...contentProps}\n >\n {showTabs && (\n <Flexbox\n align={'center'}\n className={styles.tabs}\n horizontal\n justify={'space-between'}\n paddingInline={10}\n >\n <Tabs\n activeKey={tab}\n compact\n items={items}\n onChange={(key) => setTab(key as any)}\n size={'small'}\n />\n {allowDelete && (\n <ActionIcon\n icon={TrashIcon}\n onClick={() => {\n handleAvatarChange(defaultAvatar);\n onDelete?.();\n }}\n size={{\n blockSize: 32,\n size: 18,\n }}\n title={deleteText}\n />\n )}\n </Flexbox>\n )}\n {tab === 'emoji' && (\n <Picker\n custom={customEmojis}\n data={data}\n i18n={i18n}\n icons={'outline'}\n locale={locale.split('-')[0]}\n navPosition={showTabs ? 'bottom' : 'top'}\n onEmojiSelect={(e: any) => handleAvatarChange(e.src || e.native)}\n previewPosition={'none'}\n skinTonePosition={'none'}\n theme={theme.isDarkMode ? 'dark' : 'light'}\n />\n )}\n {tab === 'upload' && (\n <AvatarUploader\n compressSize={compressSize}\n onChange={handleAvatarChange}\n onUpload={onUpload}\n shape={shape}\n texts={texts}\n />\n )}\n {customTabs.map(\n (item) =>\n tab === item.value && (\n <Flexbox key={item.value} padding={10}>\n {item.render(handleAvatarChange)}\n </Flexbox>\n ),\n )}\n </Flexbox>\n );\n\n return (\n <Popover\n className={cx(styles.popover)}\n classNames={{\n content: styles.popover,\n root: styles.positioner,\n }}\n content={content}\n defaultOpen={defaultOpen}\n onOpenChange={(v) => {\n if (loading) return;\n setVisible(v);\n }}\n open={visible}\n placement={'bottom'}\n trigger={'click'}\n {...popupProps}\n >\n {customRender ? (\n customRender(ava)\n ) : (\n <Avatar\n avatar={ava}\n className={cx(styles.root, className)}\n loading={loading}\n shape={shape}\n {...rest}\n />\n )}\n </Popover>\n );\n },\n);\n\nEmojiPicker.displayName = 'EmojiPicker';\n\nexport default EmojiPicker;\n","'use client';\n\nexport const PopoverArrowIcon = (\n <svg aria-hidden=\"true\" height=\"6\" viewBox=\"0 0 12 6\" width=\"12\">\n <path d=\"M0 6L6 0L12 6Z\" data-role=\"fill\" />\n <path d=\"M0 6L6 0L12 6\" data-role=\"stroke\" />\n </svg>\n);\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from 'antd-style';\nimport {\n type ComponentProps,\n type ComponentPropsWithRef,\n cloneElement,\n isValidElement,\n useState,\n} from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { FloatingLayerProvider } from '@/hooks/useFloatingLayer';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { placementMap } from '@/utils/placement';\n\nimport { PopoverArrowIcon } from './ArrowIcon';\nimport { usePopoverPortalContainer } from './PopoverPortal';\nimport { styles } from './style';\nimport type { PopoverPlacement } from './type';\n\nexport const PopoverRoot = BasePopover.Root;\nexport const PopoverBackdrop = BasePopover.Backdrop;\n\nexport type PopoverTriggerElementProps = Omit<\n ComponentPropsWithRef<typeof BasePopover.Trigger>,\n 'children' | 'render'\n> & {\n children: ComponentProps<typeof BasePopover.Trigger>['children'];\n};\n\nexport const PopoverTriggerElement = ({\n children,\n className,\n nativeButton,\n ref: refProp,\n ...rest\n}: PopoverTriggerElementProps) => {\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n if (isValidElement(children)) {\n return (\n <BasePopover.Trigger\n {...rest}\n nativeButton={resolvedNativeButton}\n render={(props, state) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n const baseClassName =\n typeof (mergedProps as any).className === 'function'\n ? (mergedProps as any).className(state)\n : (mergedProps as any).className;\n const extraClassName =\n typeof (className as any) === 'function' ? (className as any)(state) : className;\n\n return cloneElement(children as any, {\n ...mergedProps,\n className: cx(baseClassName, extraClassName),\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BasePopover.Trigger\n {...rest}\n className={className}\n nativeButton={resolvedNativeButton}\n ref={refProp}\n >\n {children}\n </BasePopover.Trigger>\n );\n};\n\nPopoverTriggerElement.displayName = 'PopoverTriggerElement';\n\nexport type PopoverPortalAtomProps = Omit<\n ComponentProps<typeof BasePopover.Portal>,\n 'container'\n> & {\n /**\n * Portal container. When not provided, it uses the shared container created by `usePopoverPortalContainer`.\n */\n container?: HTMLElement | null;\n /**\n * Root element used by `usePopoverPortalContainer` to create the default container.\n */\n root?: HTMLElement | ShadowRoot | null;\n};\n\nexport const PopoverPortal = ({ container, root, children, ...rest }: PopoverPortalAtomProps) => {\n const defaultContainer = usePopoverPortalContainer(root);\n const resolvedContainer = container ?? defaultContainer;\n\n if (!resolvedContainer) return null;\n\n return (\n <BasePopover.Portal container={resolvedContainer} {...rest}>\n {children}\n </BasePopover.Portal>\n );\n};\n\nPopoverPortal.displayName = 'PopoverPortal';\n\nexport type PopoverPositionerAtomProps = ComponentProps<typeof BasePopover.Positioner> & {\n hoverTrigger?: boolean;\n placement?: PopoverPlacement;\n};\n\nexport const PopoverPositioner = ({\n children,\n className,\n hoverTrigger,\n placement,\n align,\n side,\n sideOffset,\n ...rest\n}: PopoverPositionerAtomProps) => {\n const placementConfig = placement ? placementMap[placement] : undefined;\n const [positionerNode, setPositionerNode] = useState<HTMLDivElement | null>(null);\n\n return (\n <BasePopover.Positioner\n align={align ?? placementConfig?.align ?? 'center'}\n className={(state) =>\n cx(styles.positioner, typeof className === 'function' ? className(state) : className)\n }\n data-hover-trigger={hoverTrigger || undefined}\n data-placement={placement}\n ref={setPositionerNode}\n side={side ?? placementConfig?.side ?? 'bottom'}\n sideOffset={sideOffset ?? 6}\n {...rest}\n >\n <FloatingLayerProvider value={positionerNode}>{children}</FloatingLayerProvider>\n </BasePopover.Positioner>\n );\n};\n\nPopoverPositioner.displayName = 'PopoverPositioner';\n\nexport type PopoverPopupAtomProps = ComponentProps<typeof BasePopover.Popup>;\n\nexport const PopoverPopup = ({ className, ...rest }: PopoverPopupAtomProps) => {\n return (\n <BasePopover.Popup\n className={(state) =>\n cx(styles.popup, typeof className === 'function' ? className(state) : className)\n }\n {...rest}\n />\n );\n};\n\nPopoverPopup.displayName = 'PopoverPopup';\n\nexport type PopoverArrowAtomProps = ComponentProps<typeof BasePopover.Arrow>;\n\nexport const PopoverArrow = ({ className, children, ...rest }: PopoverArrowAtomProps) => {\n return (\n <BasePopover.Arrow\n className={(state) =>\n cx(styles.arrow, typeof className === 'function' ? className(state) : className)\n }\n {...rest}\n >\n {children ?? PopoverArrowIcon}\n </BasePopover.Arrow>\n );\n};\n\nPopoverArrow.displayName = 'PopoverArrow';\n\nexport type PopoverViewportAtomProps = ComponentProps<typeof BasePopover.Viewport>;\n\nexport const PopoverViewport = ({ className, ...rest }: PopoverViewportAtomProps) => {\n return (\n <BasePopover.Viewport\n className={(state) =>\n cx(styles.viewport, typeof className === 'function' ? className(state) : className)\n }\n {...rest}\n />\n );\n};\n\nPopoverViewport.displayName = 'PopoverViewport';\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\n\nconst PORTAL_ATTR = 'data-lobe-ui-popover-portal';\nexport const POPOVER_CONTAINER_ATTR = 'data-lobe-ui-popover-container';\n\n// Reuse one portal container per root (document.body by default).\nconst containerMap = new WeakMap<object, HTMLElement>();\n\nconst getOrCreateContainer = (root: HTMLElement | ShadowRoot): HTMLElement => {\n const resolvedRoot = (() => {\n if (typeof document === 'undefined') return root;\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) return root;\n\n const isBody = root === document.body;\n if (!isBody) return root;\n\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n if (themeApp) return themeApp;\n\n const popoverContainer = document.querySelector<HTMLElement>(\n `[${POPOVER_CONTAINER_ATTR}=\"true\"]`,\n );\n if (popoverContainer) return popoverContainer;\n\n return root;\n })();\n\n const cached = containerMap.get(resolvedRoot);\n if (cached && cached.isConnected) return cached;\n\n const el = document.createElement('div');\n el.setAttribute(PORTAL_ATTR, 'true');\n resolvedRoot.append(el);\n containerMap.set(resolvedRoot, el);\n return el;\n};\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nexport const usePopoverPortalContainer = (\n root?: HTMLElement | ShadowRoot | null,\n): HTMLElement | null => {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n // Never mutate DOM / create portal container during render.\n // Create it after mount to avoid SSR/hydration side effects.\n useEffect(() => {\n const resolved = resolveRoot(root);\n if (!resolved) return;\n setContainer(getOrCreateContainer(resolved));\n }, [root, container?.isConnected]);\n\n return container;\n};\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n arrow: css`\n --lobe-popover-arrow-offset-block: 5px;\n --lobe-popover-arrow-offset-inline: 8px;\n\n pointer-events: none;\n\n position: absolute;\n transform-origin: center;\n\n display: flex;\n\n width: 12px;\n height: 6px;\n\n transition: inset-inline-start var(--lobe-popover-animation-duration)\n var(--lobe-popover-animation-ease-out);\n\n & > svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n & [data-role='fill'] {\n fill: ${cssVar.colorBgElevated};\n }\n\n & [data-role='stroke'] {\n fill: none;\n stroke: ${cssVar.colorBorder};\n stroke-width: 1px;\n }\n\n &[data-side='top'] {\n inset-block-end: calc(var(--lobe-popover-arrow-offset-block) * -1);\n transform: rotate(180deg);\n }\n\n &[data-side='left'] {\n inset-inline-end: calc(var(--lobe-popover-arrow-offset-inline) * -1);\n transform: rotate(90deg);\n }\n\n &[data-side='right'] {\n inset-inline-start: calc(var(--lobe-popover-arrow-offset-inline) * -1);\n transform: rotate(-90deg);\n }\n\n &[data-side='bottom'] {\n inset-block-start: calc(var(--lobe-popover-arrow-offset-block) * -1);\n }\n `,\n\n popup: css`\n position: relative;\n transform-origin: var(--transform-origin);\n\n min-width: 120px;\n max-width: var(--available-width);\n border-radius: ${cssVar.borderRadius};\n\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorBgElevated};\n outline: none;\n box-shadow:\n 0 0 15px 0 #00000008,\n 0 2px 30px 0 #00000014,\n 0 0 0 1px ${cssVar.colorBorder} inset;\n\n transition-timing-function: var(--lobe-popover-animation-ease-out);\n transition-duration: var(--lobe-popover-animation-duration);\n transition-property: opacity, transform;\n\n &[data-layout-animation] {\n transition-property: opacity, transform, width, height;\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translate3d(var(--lobe-popover-translate-x), var(--lobe-popover-translate-y), 0)\n scale(var(--lobe-popover-animation-scale));\n opacity: 0;\n }\n\n &[data-ending-style] {\n transition-timing-function: var(--lobe-popover-animation-ease-in);\n transition-duration: var(--lobe-popover-animation-duration-exit);\n }\n\n &[data-instant] {\n transition: none;\n }\n `,\n\n positioner: css`\n --lobe-popover-animation-duration: 150ms;\n --lobe-popover-animation-translate: 6px;\n --lobe-popover-animation-scale: 0.96;\n --lobe-popover-animation-ease-in: ease-in;\n --lobe-popover-animation-duration-exit: 75ms;\n --lobe-popover-animation-ease-out: ${cssVar.motionEaseOut};\n --lobe-popover-translate-x: 0;\n --lobe-popover-translate-y: calc(var(--lobe-popover-animation-translate) * -1);\n\n z-index: 1100;\n\n width: min(var(--positioner-width), var(--available-width));\n height: var(--positioner-height);\n\n transition-timing-function: var(--lobe-popover-animation-ease-out);\n transition-duration: var(--lobe-popover-animation-duration);\n transition-property: none;\n\n &[data-layout-animation] {\n transition-property:\n inset-block-start, inset-inline-start, inset-inline-end, inset-block-end, transform;\n }\n\n &[data-instant] {\n transition: none;\n }\n\n /* Fallback: never show a popover when the anchor is hidden or the positioner falls back to (0,0). */\n &[data-anchor-hidden],\n &[data-zero-origin='true'] {\n pointer-events: none;\n visibility: hidden;\n }\n\n &[data-placement='top'],\n &[data-placement='topLeft'],\n &[data-placement='topRight'] {\n --lobe-popover-translate-x: 0;\n --lobe-popover-translate-y: var(--lobe-popover-animation-translate);\n }\n\n &[data-placement='bottom'],\n &[data-placement='bottomLeft'],\n &[data-placement='bottomRight'] {\n --lobe-popover-translate-x: 0;\n --lobe-popover-translate-y: calc(var(--lobe-popover-animation-translate) * -1);\n }\n\n &[data-placement='left'],\n &[data-placement='leftTop'],\n &[data-placement='leftBottom'] {\n --lobe-popover-translate-x: var(--lobe-popover-animation-translate);\n --lobe-popover-translate-y: 0;\n }\n\n &[data-placement='right'],\n &[data-placement='rightTop'],\n &[data-placement='rightBottom'] {\n --lobe-popover-translate-x: calc(var(--lobe-popover-animation-translate) * -1);\n --lobe-popover-translate-y: 0;\n }\n `,\n\n root: css`\n user-select: none;\n position: relative;\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 12%));\n `,\n\n viewport: css`\n --lobe-popover-viewport-inline-padding: 12px;\n\n position: relative;\n\n overflow: clip;\n\n max-width: var(--available-width);\n padding-block: 12px;\n padding-inline: var(--lobe-popover-viewport-inline-padding);\n\n [data-previous],\n [data-current] {\n transform: translateX(0);\n opacity: 1;\n transition:\n transform var(--lobe-popover-animation-duration) var(--lobe-popover-animation-ease-out),\n opacity calc(var(--lobe-popover-animation-duration) / 2)\n var(--lobe-popover-animation-ease-out);\n }\n\n [data-previous] {\n position: absolute;\n inset-block-start: 12px;\n inset-inline-start: var(--lobe-popover-viewport-inline-padding);\n }\n\n &[data-activation-direction~='right'] [data-previous][data-ending-style] {\n transform: translateX(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='right'] [data-current][data-starting-style] {\n transform: translateX(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='left'] [data-previous][data-ending-style] {\n transform: translateX(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='left'] [data-current][data-starting-style] {\n transform: translateX(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='down'] [data-previous][data-ending-style] {\n transform: translateY(-50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='down'] [data-current][data-starting-style] {\n transform: translateY(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='up'] [data-previous][data-ending-style] {\n transform: translateY(50%);\n opacity: 0;\n }\n\n &[data-activation-direction~='up'] [data-current][data-starting-style] {\n transform: translateY(-50%);\n opacity: 0;\n }\n `,\n}));\n","'use client';\n\nimport { type ReactNode, createContext, memo, use } from 'react';\n\nexport type PopoverContextValue = {\n close: () => void;\n};\n\nconst noop =\n process.env.NODE_ENV === 'production'\n ? () => void 0\n : () => {\n throw new Error('usePopoverContext must be used within a PopoverProvider');\n };\n\nexport const PopoverContext = createContext<PopoverContextValue>({\n close: noop,\n});\n\nexport const PopoverProvider = memo<{ children: ReactNode; value: PopoverContextValue }>(\n ({ children, value }) => {\n return <PopoverContext value={value}>{children}</PopoverContext>;\n },\n);\n\nexport const usePopoverContext = () => {\n return use(PopoverContext);\n};\n","'use client';\n\nimport { type FC, useContext } from 'react';\n\nimport { PopoverInGroup } from './PopoverInGroup';\nimport { PopoverStandalone } from './PopoverStandalone';\nimport { PopoverGroupHandleContext } from './groupContext';\nimport type { PopoverProps } from './type';\n\nexport { parseTrigger } from '@/utils/parseTrigger';\n\nconst Popover: FC<PopoverProps> = (props) => {\n const group = useContext(PopoverGroupHandleContext);\n\n // Group mode is driven by trigger interactions; keep standalone behavior for controlled cases.\n const canUseGroup =\n Boolean(group) &&\n props.open === undefined &&\n props.defaultOpen === undefined &&\n !props.standalone;\n\n return canUseGroup ? <PopoverInGroup {...props} /> : <PopoverStandalone {...props} />;\n};\n\nPopover.displayName = 'Popover';\n\nexport default Popover;\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from 'antd-style';\nimport { type FC, cloneElement, isValidElement, useContext, useMemo } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { parseTrigger } from '@/utils/parseTrigger';\n\nimport { PopoverGroupHandleContext } from './groupContext';\nimport type { PopoverProps } from './type';\nimport { useMergedPopoverProps } from './useMergedPopoverProps';\n\nexport const PopoverInGroup: FC<PopoverProps> = ({ children, ref: refProp, ...props }) => {\n const group = useContext(PopoverGroupHandleContext);\n const item = useMergedPopoverProps(props);\n\n const { openOnHover } = useMemo(() => parseTrigger(item.trigger ?? 'hover'), [item.trigger]);\n\n const resolvedOpenDelay = item.openDelay ?? (item.mouseEnterDelay ?? 0.1) * 1000;\n const resolvedCloseDelay = item.closeDelay ?? (item.mouseLeaveDelay ?? 0.1) * 1000;\n const disabled = Boolean(item.disabled);\n\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton: item.nativeButton,\n });\n\n // Don't render trigger behavior if no content\n if (!item.content) {\n return children as any;\n }\n\n const triggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n openOnHover: openOnHover && !disabled,\n payload: item,\n };\n\n const triggerClassName = item.classNames?.trigger;\n\n if (isValidElement(children)) {\n return (\n <BasePopover.Trigger\n handle={group ?? undefined}\n {...triggerProps}\n nativeButton={resolvedNativeButton}\n render={(renderProps) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return renderProps as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = renderProps as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n className: cx(mergedProps.className, triggerClassName),\n ref: mergeRefs([(children as any).ref, (renderProps as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BasePopover.Trigger\n handle={group ?? undefined}\n {...triggerProps}\n className={triggerClassName}\n nativeButton={resolvedNativeButton}\n ref={refProp}\n >\n {children}\n </BasePopover.Trigger>\n );\n};\n\nPopoverInGroup.displayName = 'PopoverInGroup';\n","'use client';\n\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { createContext } from 'react';\n\nimport type { PopoverProps } from './type';\n\nexport type PopoverGroupItem = Omit<PopoverProps, 'children' | 'open' | 'defaultOpen' | 'ref'>;\n\nexport type PopoverGroupSharedProps = Omit<\n PopoverProps,\n 'children' | 'content' | 'defaultOpen' | 'open' | 'ref'\n> & {\n /**\n * @description Whether to enable content layout animation when switching triggers\n * @default false\n */\n contentLayoutAnimation?: boolean;\n /**\n * Disable the \"destroy on invalid trigger (display:none / disconnected)\" guard for performance.\n * @default false\n */\n disableDestroyOnInvalidTrigger?: boolean;\n /**\n * Disable the \"hide when positioner falls back to (0,0)\" visual guard for performance.\n * @default false\n */\n disableZeroOriginGuard?: boolean;\n};\n\nexport type PopoverGroupHandle = ReturnType<typeof BasePopover.createHandle<PopoverGroupItem>>;\n\nexport const PopoverGroupHandleContext = createContext<PopoverGroupHandle | null>(null);\nexport const PopoverGroupPropsContext = createContext<PopoverGroupSharedProps | null>(null);\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { type PopoverGroupItem, PopoverGroupPropsContext } from './groupContext';\nimport type { PopoverProps } from './type';\n\nexport const useMergedPopoverProps = (props: Partial<PopoverProps>): PopoverGroupItem => {\n const sharedProps = useContext(PopoverGroupPropsContext);\n\n const {\n arrow,\n inset,\n trigger,\n placement,\n className,\n classNames,\n styles: styleProps,\n onOpenChange,\n content,\n closeDelay,\n disabled,\n getPopupContainer,\n mouseEnterDelay,\n mouseLeaveDelay,\n nativeButton,\n openDelay,\n zIndex,\n positionerProps,\n triggerProps,\n popupProps,\n backdropProps,\n } = props;\n\n const mergedClassName = useMemo(() => {\n if (!sharedProps?.className && !className) return undefined;\n return [sharedProps?.className, className].filter(Boolean).join(' ');\n }, [className, sharedProps?.className]);\n\n const mergedClassNames = useMemo(() => {\n if (!sharedProps?.classNames && !classNames) return undefined;\n return { ...sharedProps?.classNames, ...classNames };\n }, [classNames, sharedProps?.classNames]);\n\n const mergedStyles = useMemo(() => {\n if (!sharedProps?.styles && !styleProps) return undefined;\n return { ...sharedProps?.styles, ...styleProps };\n }, [sharedProps?.styles, styleProps]);\n\n const mergedOnOpenChange = useMemo(() => {\n if (!sharedProps?.onOpenChange && !onOpenChange) return undefined;\n return (open: boolean) => {\n sharedProps?.onOpenChange?.(open);\n onOpenChange?.(open);\n };\n }, [onOpenChange, sharedProps?.onOpenChange]);\n\n const item: PopoverGroupItem = useMemo(\n () => ({\n arrow: arrow ?? sharedProps?.arrow ?? false,\n backdropProps: backdropProps ?? sharedProps?.backdropProps,\n className: mergedClassName,\n classNames: mergedClassNames,\n closeDelay: closeDelay ?? sharedProps?.closeDelay,\n content,\n disabled: disabled ?? sharedProps?.disabled,\n getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,\n inset: inset ?? sharedProps?.inset ?? false,\n mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,\n nativeButton: nativeButton ?? sharedProps?.nativeButton,\n onOpenChange: mergedOnOpenChange,\n openDelay: openDelay ?? sharedProps?.openDelay,\n placement: placement ?? sharedProps?.placement ?? 'top',\n popupProps: popupProps ?? sharedProps?.popupProps,\n positionerProps: positionerProps ?? sharedProps?.positionerProps,\n styles: mergedStyles,\n trigger: trigger ?? sharedProps?.trigger ?? 'hover',\n triggerProps: triggerProps ?? sharedProps?.triggerProps,\n zIndex: zIndex ?? sharedProps?.zIndex,\n }),\n [\n arrow,\n backdropProps,\n closeDelay,\n content,\n disabled,\n getPopupContainer,\n inset,\n mergedClassName,\n mergedClassNames,\n mergedOnOpenChange,\n mergedStyles,\n mouseEnterDelay,\n mouseLeaveDelay,\n nativeButton,\n openDelay,\n placement,\n popupProps,\n positionerProps,\n sharedProps?.arrow,\n sharedProps?.backdropProps,\n sharedProps?.closeDelay,\n sharedProps?.disabled,\n sharedProps?.getPopupContainer,\n sharedProps?.inset,\n sharedProps?.mouseEnterDelay,\n sharedProps?.mouseLeaveDelay,\n sharedProps?.nativeButton,\n sharedProps?.openDelay,\n sharedProps?.placement,\n sharedProps?.popupProps,\n sharedProps?.positionerProps,\n sharedProps?.trigger,\n sharedProps?.triggerProps,\n sharedProps?.zIndex,\n trigger,\n triggerProps,\n zIndex,\n ],\n );\n\n return item;\n};\n","'use client';\n\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { memo, useCallback, useMemo, useState } from 'react';\n\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { parseTrigger } from '@/utils/parseTrigger';\nimport { type Side, placementMap } from '@/utils/placement';\n\nimport { PopoverArrowIcon } from './ArrowIcon';\nimport { usePopoverPortalContainer } from './PopoverPortal';\nimport {\n PopoverArrow,\n PopoverPopup,\n PopoverPortal,\n PopoverPositioner,\n PopoverRoot,\n PopoverTriggerElement,\n PopoverViewport,\n} from './atoms';\nimport { PopoverProvider } from './context';\nimport type { PopoverProps } from './type';\n\n/**\n * Popover component - displays floating content relative to a trigger element\n * Compatible with Ant Design Popover API\n */\nexport const PopoverStandalone = memo<PopoverProps>(\n ({\n children,\n content,\n arrow: originArrow = false,\n inset = false,\n trigger = 'hover',\n placement = 'top',\n styles: styleProps,\n classNames,\n className,\n open,\n onOpenChange,\n defaultOpen = false,\n mouseEnterDelay = 0.1,\n mouseLeaveDelay = 0.1,\n openDelay,\n closeDelay,\n getPopupContainer,\n disabled = false,\n zIndex,\n nativeButton,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n backdropProps,\n portalProps,\n }) => {\n const arrow = inset ? false : originArrow;\n const isClient = useIsClient();\n const popoverHandle = useMemo(() => BasePopover.createHandle(), []);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n const close = useCallback(() => {\n popoverHandle.close();\n }, [popoverHandle]);\n const contextValue = useMemo(() => ({ close }), [close]);\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n // Don't open if disabled\n if (disabled && nextOpen) return;\n\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [onOpenChange, open, disabled],\n );\n\n // Parse trigger mode\n const { openOnHover } = useMemo(() => parseTrigger(trigger), [trigger]);\n\n // Calculate delays (milliseconds take precedence over seconds)\n const resolvedOpenDelay = openDelay ?? mouseEnterDelay * 1000;\n const resolvedCloseDelay = closeDelay ?? mouseLeaveDelay * 1000;\n\n // Get placement configuration\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 10 : 6;\n const resolvedSideOffset = useMemo(() => {\n if (!inset) return baseSideOffset;\n return ({\n side,\n positioner,\n }: {\n positioner: { height: number; width: number };\n side: Side;\n }) => {\n if (\n side === 'left' ||\n side === 'right' ||\n side === 'inline-start' ||\n side === 'inline-end'\n ) {\n return -positioner.width;\n }\n return -positioner.height;\n };\n }, [baseSideOffset, inset]);\n\n // Determine portal container\n const portalContainer = usePopoverPortalContainer();\n\n const { resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: classNames?.arrow,\n popup: className,\n positioner: classNames?.root,\n trigger: classNames?.trigger,\n viewport: classNames?.content,\n }),\n [className, classNames?.arrow, classNames?.content, classNames?.root, classNames?.trigger],\n );\n\n // Render trigger element\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n openOnHover: openOnHover && !disabled,\n ...triggerProps,\n };\n\n return (\n <PopoverTriggerElement\n handle={popoverHandle}\n {...baseTriggerProps}\n className={resolvedClassNames.trigger}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </PopoverTriggerElement>\n );\n }, [\n children,\n disabled,\n openOnHover,\n popoverHandle,\n refProp,\n resolvedClassNames.trigger,\n resolvedNativeButton,\n resolvedOpenDelay,\n resolvedCloseDelay,\n triggerProps,\n ]);\n\n // Custom container from getPopupContainer\n const customContainer = useMemo(() => {\n if (!getPopupContainer || !isClient) return undefined;\n // We need a reference element, but we don't have it until render\n // This will be handled by the portal container logic\n return undefined;\n }, [getPopupContainer, isClient]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: styleProps?.arrow,\n positioner: {\n ...styleProps?.root,\n zIndex: zIndex ?? 1100,\n },\n viewport: styleProps?.content,\n }),\n [styleProps?.arrow, styleProps?.content, styleProps?.root, zIndex],\n );\n\n const popup = useMemo(\n () => (\n <PopoverPositioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n hoverTrigger={openOnHover}\n placement={placement}\n side={placementConfig.side}\n sideOffset={resolvedSideOffset as any}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <PopoverPopup className={resolvedClassNames.popup} {...popupProps}>\n {arrow && (\n <PopoverArrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {PopoverArrowIcon}\n </PopoverArrow>\n )}\n <PopoverViewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <PopoverProvider value={contextValue}>{content}</PopoverProvider>\n </PopoverViewport>\n </PopoverPopup>\n </PopoverPositioner>\n ),\n [\n arrow,\n content,\n contextValue,\n openOnHover,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedSideOffset,\n resolvedStyles,\n ],\n );\n\n // Don't render popup if no content\n if (!content) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <PopoverRoot\n defaultOpen={defaultOpen}\n handle={popoverHandle}\n onOpenChange={handleOpenChange}\n open={resolvedOpen}\n >\n {triggerElement}\n {backdropProps && <BasePopover.Backdrop {...backdropProps} />}\n {resolvedPortalContainer ? (\n <PopoverPortal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </PopoverPortal>\n ) : null}\n </PopoverRoot>\n );\n },\n);\n\nPopoverStandalone.displayName = 'PopoverStandalone';\n","'use client';\n\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { type FC, type ReactNode, useCallback, useMemo, useRef, useState } from 'react';\n\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { parseTrigger } from '@/utils/parseTrigger';\nimport { type Side, placementMap } from '@/utils/placement';\n\nimport { PopoverArrowIcon } from './ArrowIcon';\nimport { usePopoverPortalContainer } from './PopoverPortal';\nimport {\n PopoverArrow,\n PopoverPopup,\n PopoverPortal,\n PopoverPositioner,\n PopoverViewport,\n} from './atoms';\nimport { PopoverProvider } from './context';\nimport {\n PopoverGroupHandleContext,\n type PopoverGroupItem,\n PopoverGroupPropsContext,\n type PopoverGroupSharedProps,\n} from './groupContext';\n\ntype PopoverGroupProps = PopoverGroupSharedProps & {\n children: ReactNode;\n};\n\nconst PopoverGroup: FC<PopoverGroupProps> = ({\n children,\n contentLayoutAnimation = false,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BasePopover.createHandle<PopoverGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<PopoverGroupItem | null>(null);\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BasePopover.createHandle<PopoverGroupItem>(),\n key: key + 1,\n }));\n }, []);\n const close = useCallback(() => {\n handle.close();\n }, [handle]);\n const contextValue = useMemo(() => ({ close }), [close]);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n const portalContainer = usePopoverPortalContainer();\n\n return (\n <PopoverGroupHandleContext.Provider value={handle}>\n <PopoverGroupPropsContext.Provider value={sharedProps}>\n {children}\n <BasePopover.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as PopoverGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n if (!item?.content) return null;\n\n const arrow = item.inset ? false : (item.arrow ?? false);\n const placement = item.placement ?? 'top';\n const { openOnHover } = parseTrigger(item.trigger ?? 'hover');\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 10 : 6;\n const resolvedSideOffset = item.inset\n ? ({\n side,\n positioner,\n }: {\n positioner: { height: number; width: number };\n side: Side;\n }) => {\n if (\n side === 'left' ||\n side === 'right' ||\n side === 'inline-start' ||\n side === 'inline-end'\n ) {\n return -positioner.width;\n }\n return -positioner.height;\n }\n : baseSideOffset;\n\n const resolvedClassNames = {\n arrow: item.classNames?.arrow,\n popup: item.className,\n positioner: item.classNames?.root,\n viewport: item.classNames?.content,\n };\n\n const resolvedStyles = {\n arrow: item.styles?.arrow,\n positioner: {\n ...item.styles?.root,\n zIndex: item.zIndex ?? 1100,\n },\n viewport: item.styles?.content,\n };\n\n const contentNode = (\n <PopoverProvider value={contextValue}>{item.content}</PopoverProvider>\n );\n\n const popup = (\n <PopoverPositioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={contentLayoutAnimation || undefined}\n hoverTrigger={openOnHover}\n placement={placement}\n side={placementConfig.side}\n sideOffset={resolvedSideOffset as any}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <PopoverPopup\n className={resolvedClassNames.popup}\n data-layout-animation={contentLayoutAnimation || undefined}\n {...item.popupProps}\n >\n {arrow && (\n <PopoverArrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {PopoverArrowIcon}\n </PopoverArrow>\n )}\n {contentLayoutAnimation ? (\n <PopoverViewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n {contentNode}\n </PopoverViewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n {contentNode}\n </div>\n )}\n </PopoverPopup>\n </PopoverPositioner>\n );\n\n return portalContainer ? (\n <PopoverPortal container={portalContainer}>{popup}</PopoverPortal>\n ) : null;\n }}\n </BasePopover.Root>\n </PopoverGroupPropsContext.Provider>\n </PopoverGroupHandleContext.Provider>\n );\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n\nexport default PopoverGroup;\n","'use client';\n\nimport { Tabs as AntdTabs } from 'antd';\nimport { cx } from 'antd-style';\nimport { MoreHorizontalIcon } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\n\nimport { styles, variants } from './style';\nimport type { TabsProps } from './type';\n\nconst Tabs: FC<TabsProps> = ({ className, compact, variant = 'rounded', items, ...rest }) => {\n const hasContent = items?.some((item) => !!item.children);\n\n return (\n <AntdTabs\n className={cx(variants({ compact, underlined: hasContent, variant }), className)}\n items={items}\n {...rest}\n classNames={{\n ...rest?.classNames,\n popup: {\n root: styles.dropdown,\n ...rest?.classNames?.popup,\n },\n }}\n more={{\n icon: <ActionIcon icon={MoreHorizontalIcon} />,\n ...rest?.more,\n }}\n />\n );\n};\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n compact: css`\n &.${prefixCls}-tabs {\n .${prefixCls}-tabs-tab {\n margin: 4px;\n\n + [class*='ant-tabs-tab'] {\n margin: 4px;\n }\n }\n }\n `,\n dropdown: css`\n .${prefixCls}-tabs-dropdown-menu {\n padding: 4px;\n border: 1px solid ${cssVar.colorBorderSecondary};\n\n .${prefixCls}-tabs-dropdown-menu-item {\n border-radius: ${cssVar.borderRadius};\n }\n }\n `,\n hideHolder: css`\n &.${prefixCls}-tabs {\n .${prefixCls}-tabs-content-holder {\n display: none;\n }\n\n .${prefixCls}-tabs-nav {\n margin: 0;\n\n &::before {\n display: none;\n }\n }\n }\n `,\n\n margin: css`\n &.${prefixCls}-tabs {\n .${prefixCls}-tabs-tab {\n margin: 8px;\n\n + .${prefixCls}-tabs-tab {\n margin: 8px;\n }\n }\n }\n `,\n point: css`\n &.${prefixCls}-tabs {\n &.${prefixCls}-tabs-top {\n .${prefixCls}-tabs-ink-bar {\n width: 8px !important;\n height: 4px;\n border-start-start-radius: 4px;\n border-start-end-radius: 4px;\n }\n }\n\n &.${prefixCls}-tabs-bottom {\n .${prefixCls}-tabs-ink-bar {\n width: 8px !important;\n height: 4px;\n border-end-start-radius: 4px;\n border-end-end-radius: 4px;\n }\n }\n\n &.${prefixCls}-tabs-left {\n .${prefixCls}-tabs-ink-bar {\n width: 4px;\n height: 8px !important;\n border-start-start-radius: 4px;\n border-end-start-radius: 4px;\n }\n }\n\n &.${prefixCls}-tabs-right {\n .${prefixCls}-tabs-ink-bar {\n width: 4px;\n height: 8px !important;\n border-start-end-radius: 4px;\n border-end-end-radius: 4px;\n }\n }\n }\n `,\n root: css`\n &.${prefixCls}-tabs {\n .${prefixCls}-tabs-tab {\n padding-block: 8px;\n padding-inline: 12px;\n color: ${cssVar.colorTextSecondary};\n transition: background-color 100ms ease-out;\n\n &:hover {\n border-radius: ${cssVar.borderRadius};\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillTertiary};\n }\n }\n }\n `,\n rounded: css`\n &.${prefixCls}-tabs {\n &.${prefixCls}-tabs-top {\n .${prefixCls}-tabs-ink-bar {\n height: 3px;\n border-start-start-radius: 3px;\n border-start-end-radius: 3px;\n }\n }\n\n &.${prefixCls}-tabs-bottom {\n .${prefixCls}-tabs-ink-bar {\n height: 3px;\n border-end-start-radius: 3px;\n border-end-end-radius: 3px;\n }\n }\n\n &.${prefixCls}-tabs-left {\n .${prefixCls}-tabs-ink-bar {\n width: 3px;\n border-start-start-radius: 3px;\n border-end-start-radius: 3px;\n }\n }\n\n &.${prefixCls}-tabs-right {\n .${prefixCls}-tabs-ink-bar {\n width: 3px;\n border-start-end-radius: 3px;\n border-end-end-radius: 3px;\n }\n }\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n compact: false,\n underlined: false,\n variant: 'rounded',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n square: null,\n rounded: styles.rounded,\n point: styles.point,\n },\n compact: {\n false: styles.margin,\n true: styles.compact,\n },\n underlined: {\n false: styles.hideHolder,\n true: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","export default {\n 'emojiPicker.delete': 'Delete',\n 'emojiPicker.draggerDesc': 'Click or Drag image to this area to upload',\n 'emojiPicker.emoji': 'Emoji',\n 'emojiPicker.fileTypeError': 'You can only upload image file!',\n 'emojiPicker.upload': 'Upload',\n 'emojiPicker.uploadBtn': 'Crop and Upload',\n} as const;\n","'use client';\n\nimport { type GetProp, Upload, type UploadProps, message } from 'antd';\nimport { cssVar } from 'antd-style';\nimport { ChevronLeftIcon, ImageUpIcon } from 'lucide-react';\nimport { memo, useCallback, useRef, useState } from 'react';\nimport AvatarEditor from 'react-avatar-editor';\n\nimport Button from '@/Button';\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport Tag from '@/Tag';\nimport Text from '@/Text';\nimport emojiPickerMessages from '@/i18n/resources/en/emojiPicker';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { AvatarUploaderProps } from './type';\n\ntype FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];\n\nconst { Dragger } = Upload;\n\nconst createUploadImageHandler = (onUploadImage: (base64: string) => void) => (file: any) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.addEventListener('load', () => {\n onUploadImage(String(reader.result));\n });\n};\n\nconst AvatarUploader = memo<AvatarUploaderProps>(\n ({ shape, onChange, texts, compressSize = 256, onUpload }) => {\n const editor = useRef<any>(null);\n const [previewImage, setPreviewImage] = useState('');\n const { t } = useTranslation(emojiPickerMessages);\n\n const fileTypeErrorText = texts?.fileTypeError ?? t('emojiPicker.fileTypeError');\n const draggerDescText = texts?.draggerDesc ?? t('emojiPicker.draggerDesc');\n const uploadBtnText = texts?.uploadBtn ?? t('emojiPicker.uploadBtn');\n\n const beforeUpload = useCallback(\n (file: FileType) => {\n const isJpgOrPng =\n file.type === 'image/jpeg' ||\n file.type === 'image/png' ||\n file.type === 'image/gif' ||\n file.type === 'image/webp';\n if (!isJpgOrPng) {\n message.error(fileTypeErrorText);\n return;\n }\n return createUploadImageHandler((avatar) => {\n setPreviewImage(avatar);\n })(file);\n },\n [fileTypeErrorText],\n );\n\n const handleUpload = () => {\n if (!editor.current) return;\n const canvasScaled = editor.current.getImageScaledToCanvas() as HTMLCanvasElement;\n const dataUrl = canvasScaled.toDataURL();\n onChange(dataUrl);\n\n if (!onUpload) return;\n\n // 使用 toBlob 直接获取 Blob,然后创建 File 对象\n canvasScaled.toBlob(\n (blob) => {\n if (blob) {\n const file = new File([blob], 'avatar.webp', { type: 'image/webp' });\n onUpload(file);\n }\n },\n 'image/webp',\n 0.95,\n ); // 0.95 是图片质量\n };\n\n return (\n <Flexbox padding={10} style={{ position: 'relative' }} width={'100%'}>\n {!previewImage && (\n <Dragger\n accept={'image'}\n beforeUpload={beforeUpload}\n itemRender={() => void 0}\n maxCount={1}\n multiple={false}\n >\n <Center gap={16} height={compressSize} width={compressSize}>\n <Icon color={cssVar.colorTextDescription} icon={ImageUpIcon} size={48} />\n <Text color={cssVar.colorTextSecondary}>{draggerDescText}</Text>\n <Center gap={4} horizontal>\n <Tag>JPG</Tag>\n <Tag>PNG</Tag>\n <Tag>GIF</Tag>\n <Tag>WEBP</Tag>\n </Center>\n </Center>\n </Dragger>\n )}\n {previewImage && (\n <Center gap={8} style={{ position: 'relative' }} width={'100%'}>\n <AvatarEditor\n border={0}\n borderRadius={shape === 'square' ? undefined : compressSize / 2}\n height={compressSize}\n image={previewImage}\n ref={editor}\n width={compressSize}\n />\n\n <Flexbox gap={8} horizontal style={{ position: 'relative' }} width={'100%'}>\n <Button\n icon={ChevronLeftIcon}\n onClick={() => setPreviewImage('')}\n style={{ flex: 'none' }}\n />\n <Button onClick={handleUpload} style={{ flex: 1, fontWeight: 500 }} type={'primary'}>\n {uploadBtnText}\n </Button>\n </Flexbox>\n </Center>\n )}\n </Flexbox>\n );\n },\n);\n\nAvatarUploader.displayName = 'AvatarUploader';\n\nexport default AvatarUploader;\n","'use client';\n\nimport { Tag as AntTag } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { colorsPreset, colorsPresetSystem, presetColors, presetSystemColors } from '@/Tag/utils';\n\nimport { variants } from './styles';\nimport type { TagProps } from './type';\n\nconst Tag: FC<TagProps> = ({\n className,\n ref,\n size = 'middle',\n color,\n variant = 'filled',\n children,\n onClick,\n style,\n ...rest\n}) => {\n const colors = useMemo(() => {\n let textColor = cssVar.colorTextSecondary;\n let backgroundColor;\n let borderColor;\n const isBorderless = variant === 'borderless';\n const isFilled = variant === 'filled';\n const isPresetColor = color && presetColors.includes(color);\n const isPresetSystemColors = color && presetSystemColors.has(color);\n const isHexColor = color && color.startsWith('#');\n\n if (isPresetColor) {\n textColor = colorsPreset(color);\n backgroundColor = isBorderless ? 'transparent' : colorsPreset(color, 'fillTertiary');\n borderColor = colorsPreset(color, isFilled ? 'fillQuaternary' : 'fillTertiary');\n }\n if (isPresetSystemColors) {\n textColor = colorsPresetSystem(color);\n backgroundColor = isBorderless ? 'transparent' : colorsPresetSystem(color, 'fillTertiary');\n borderColor = colorsPresetSystem(color, isFilled ? 'fillQuaternary' : 'fillTertiary');\n }\n if (isHexColor) {\n textColor = cssVar.colorBgLayout;\n backgroundColor = isBorderless ? 'transparent' : color;\n }\n\n return {\n backgroundColor,\n borderColor,\n textColor,\n };\n }, [color, variant]);\n\n return (\n <AntTag\n className={cx(variants({ size, variant: variant as any }), className)}\n color={color}\n onClick={onClick}\n ref={ref}\n style={{\n background: colors?.backgroundColor,\n borderColor: colors?.borderColor,\n color: colors?.textColor,\n cursor: onClick ? 'pointer' : undefined,\n ...style,\n }}\n variant={variant === 'borderless' ? 'outlined' : variant}\n {...rest}\n >\n {children}\n </AntTag>\n );\n};\n\nTag.displayName = 'Tag';\n\nexport default Tag;\n","import { cssVar } from 'antd-style';\nimport { camelCase } from 'es-toolkit/compat';\n\nexport const presetColors = [\n 'red',\n 'volcano',\n 'orange',\n 'gold',\n 'yellow',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekblue',\n 'purple',\n 'magenta',\n 'gray',\n];\n\nexport const presetSystemColors = new Set(['error', 'warning', 'success', 'info', 'processing']);\n\nconst toKebabCase = (value: string) =>\n value\n .replaceAll(/([a-z])([A-Z])/g, '$1-$2')\n .replaceAll(/([a-z])(\\d)/g, '$1-$2')\n .replaceAll(/(\\d)([A-Z])/g, '$1-$2')\n .replaceAll(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n .toLowerCase();\n\nconst getCssVar = (tokenKey: string) => {\n const mapped = (cssVar as Record<string, string>)[tokenKey];\n return mapped || `var(--ant-${toKebabCase(tokenKey)})`;\n};\n\nexport const colorsPreset = (type: string, ...keys: string[]) =>\n getCssVar(camelCase([type, ...keys].join('-')));\n\nexport const colorsPresetSystem = (type: string, ...keys: string[]) => {\n const t = type === 'processing' ? 'info' : type;\n return getCssVar(camelCase(['color', t, ...keys].join('-')));\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n large: css`\n &.${prefixCls}-tag {\n height: 28px;\n padding-inline: 12px;\n border-radius: 6px !important;\n }\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n color: ${cssVar.colorTextSecondary};\n\n &.${prefixCls}-tag {\n user-select: none;\n\n display: flex;\n gap: 0.4em;\n align-items: center;\n justify-content: center;\n\n width: fit-content;\n height: 22px;\n margin: 0;\n border-radius: 3px;\n\n line-height: 1.2;\n\n span {\n margin: 0;\n }\n\n span:not(.anticon) {\n line-height: inherit;\n }\n }\n `,\n small: css`\n &.${prefixCls}-tag {\n height: 20px;\n padding-inline: 4px;\n border-radius: 3px;\n }\n `,\n}));\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n size: 'middle',\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n size: {\n small: styles.small,\n middle: null,\n large: styles.large,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n picker: css`\n position: relative;\n\n em-emoji-picker {\n --rgb-accent: var(--emoji-picker-rgb-accent, 0, 0, 0);\n --shadow: none;\n --rgb-background: var(--emoji-picker-rgb-background, 255, 255, 255);\n --border-radius: 0;\n }\n `,\n popover: css`\n overflow: hidden;\n padding: 0;\n `,\n positioner: css`\n width: fit-content !important;\n `,\n root: css`\n position: relative;\n transition: background 150ms ${cssVar.motionEaseOut};\n\n &:hover {\n background: ${cssVar.colorFillSecondary};\n }\n `,\n tabs: css`\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n\n .ant-tabs-tab {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0 !important;\n }\n `,\n}));\n","'use client';\n\nimport { Empty as AntEmpty } from 'antd';\nimport { cssVar, useThemeMode } from 'antd-style';\nimport { type FC } from 'react';\n\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport FluentEmoji from '@/FluentEmoji';\nimport Icon from '@/Icon';\nimport Text from '@/Text';\n\nimport type { EmptyProps } from './type';\n\nconst Empty: FC<EmptyProps> = ({\n title,\n description,\n icon,\n image,\n emoji,\n imageSize = 48,\n iconColor,\n action,\n children,\n imageProps,\n align,\n actionProps,\n type = 'default',\n titleProps,\n descriptionProps,\n ...rest\n}) => {\n const { isDarkMode } = useThemeMode();\n const isPage = type === 'page';\n const alignValue = align || (isPage ? 'flex-start' : 'center');\n const isCenter = alignValue === 'center';\n\n const fallbackImage = AntEmpty.PRESENTED_IMAGE_SIMPLE;\n const hasImage = image || emoji || icon;\n const cover = hasImage ? (\n image ? (\n image\n ) : (\n <Block\n align={'center'}\n flex={'none'}\n height={imageSize}\n justify=\"center\"\n variant={'outlined'}\n width={imageSize}\n {...imageProps}\n style={{\n marginBottom: 4,\n ...imageProps?.style,\n }}\n >\n {icon && (\n <Icon\n color={\n iconColor || (isDarkMode ? cssVar.colorTextQuaternary : cssVar.colorTextSecondary)\n }\n icon={icon}\n size={imageSize * 0.66}\n />\n )}\n {emoji && <FluentEmoji emoji={emoji} size={imageSize * 0.75} type={'anim'} />}\n </Block>\n )\n ) : (\n fallbackImage\n );\n\n return (\n <Flexbox align={alignValue} gap={8} padding={16} {...rest}>\n {cover}\n <Flexbox align={alignValue} gap={isPage ? 4 : 1}>\n {title && (\n <Text\n align={isCenter ? 'center' : undefined}\n fontSize={isPage ? 24 : 16}\n weight={'bold'}\n {...titleProps}\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n align={isCenter ? 'center' : undefined}\n color={isPage ? cssVar.colorTextSecondary : cssVar.colorTextDescription}\n fontSize={isPage ? 16 : 14}\n {...descriptionProps}\n >\n {description}\n </Text>\n )}\n </Flexbox>\n {children}\n {action && (\n <Flexbox gap={4} {...actionProps}>\n {action}\n </Flexbox>\n )}\n </Flexbox>\n );\n};\n\nEmpty.displayName = 'Empty';\n\nexport default Empty;\n","'use client';\n\nimport RcFooter from 'rc-footer';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { FooterProps } from './type';\n\nconst Footer = memo<FooterProps>(\n ({ columns, bottom, theme, contentMaxWidth = 960, children, style, ...rest }) => {\n const isEmpty = !columns || columns?.length === 0;\n\n // Convert contentMaxWidth prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--footer-content-max-width': `${contentMaxWidth}px`,\n }),\n [contentMaxWidth],\n );\n\n return (\n <Flexbox\n as={'section'}\n className={styles.root}\n style={{\n ...cssVariables,\n ...style,\n }}\n width={'100%'}\n {...rest}\n >\n <RcFooter\n bottom={bottom}\n className={isEmpty ? styles.footerEmpty : styles.footer}\n columns={columns}\n theme={theme}\n />\n {children}\n </Flexbox>\n );\n },\n);\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n","import { createStaticStyles, responsive } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n const prefix = `rc-footer`;\n\n const baseFooterStyles = css`\n font-size: 14px;\n line-height: 1.5;\n color: ${cssVar.colorTextSecondary};\n background-color: ${cssVar.colorBgLayout};\n\n &.${prefix} {\n a {\n color: ${cssVar.colorTextTertiary};\n text-decoration: none;\n transition: all 0.3s;\n\n &:hover {\n color: ${cssVar.colorLinkHover};\n }\n }\n }\n\n .${prefix} {\n &-columns {\n display: flex;\n justify-content: space-around;\n }\n\n &-column {\n text-align: start;\n\n h2 {\n position: relative;\n\n margin-block: 0;\n margin-inline: auto;\n\n font-size: 16px;\n font-weight: 500;\n color: ${cssVar.colorText};\n }\n\n &-icon {\n position: relative;\n inset-block-start: -1px;\n\n display: inline-block;\n\n width: 22px;\n margin-inline-end: 0.5em;\n\n text-align: center;\n vertical-align: middle;\n\n > span,\n > svg,\n img {\n display: block;\n width: 100%;\n }\n }\n }\n\n &-item {\n margin-block: 12px;\n margin-inline: 0;\n\n &-icon {\n position: relative;\n inset-block-start: -1px;\n\n display: inline-block;\n\n width: 16px;\n margin-inline-end: 0.4em;\n\n text-align: center;\n vertical-align: middle;\n\n > span,\n > svg,\n img {\n display: block;\n width: 100%;\n }\n }\n\n &-separator {\n margin-block: 0;\n margin-inline: 0.3em;\n }\n }\n\n &-bottom {\n color: ${cssVar.colorTextDescription};\n\n &-container {\n width: 100%;\n max-width: var(--footer-content-max-width, 960px);\n margin-block: 0;\n margin-inline: auto;\n padding-block: 16px;\n padding-inline: 0;\n\n line-height: 32px;\n text-align: center;\n }\n }\n\n &-light {\n color: rgba(0, 0, 0, 85%);\n background-color: transparent;\n\n h2,\n a {\n color: rgba(0, 0, 0, 85%);\n }\n }\n\n &-light &-bottom-container {\n border-block-start-color: #e8e8e8;\n }\n\n &-light &-item-separator,\n &-light &-item-description {\n color: rgba(0, 0, 0, 45%);\n }\n }\n `;\n\n return {\n footer: css`\n ${baseFooterStyles};\n\n .${prefix}-container {\n width: 100%;\n max-width: var(--footer-content-max-width, 960px);\n margin: auto;\n padding-block: 60px 20px;\n padding-inline: 0;\n }\n\n ${responsive.sm} {\n .${prefix} {\n &-container {\n padding-block: 40px;\n padding-inline: 0;\n }\n\n &-columns {\n display: block;\n }\n\n &-column {\n display: block;\n margin-block-end: 40px;\n text-align: center;\n\n &:last-child {\n margin-block-end: 0;\n }\n }\n }\n }\n `,\n footerEmpty: css`\n ${baseFooterStyles};\n\n .${prefix}-container {\n width: 100%;\n max-width: var(--footer-content-max-width, 960px);\n margin: auto;\n padding: 0;\n }\n\n ${responsive.sm} {\n .${prefix} {\n &-container {\n padding: 0;\n }\n\n &-columns {\n display: block;\n }\n\n &-column {\n display: block;\n margin-block-end: 40px;\n text-align: center;\n\n &:last-child {\n margin-block-end: 0;\n }\n }\n }\n }\n `,\n root: css`\n grid-area: footer;\n align-self: stretch;\n border-block-start: 1px solid ${cssVar.colorSplit};\n color: ${cssVar.colorTextDescription};\n\n ${responsive.sm} {\n flex-direction: column;\n border: none;\n }\n `,\n };\n});\n","'use client';\n\nimport { Form as AntForm, type FormInstance } from 'antd';\nimport { type ReactNode, RefAttributes } from 'react';\n\nimport FormParent from './Form';\nimport FormGroup from './components/FormGroup';\nimport FormItem from './components/FormItem';\nimport FormSubmitFooter from './components/FormSubmitFooter';\nimport FormTitle from './components/FormTitle';\nimport type { FormProps } from './type';\n\ninterface IForm {\n (props: FormProps & RefAttributes<FormInstance>): ReactNode;\n Group: typeof FormGroup;\n Item: typeof FormItem;\n Provider: typeof AntForm.Provider;\n SubmitFooter: typeof FormSubmitFooter;\n Title: typeof FormTitle;\n useForm: typeof AntForm.useForm;\n}\n\nconst Form = FormParent as unknown as IForm;\n\nForm.Item = FormItem;\nForm.Group = FormGroup;\nForm.Title = FormTitle;\nForm.useForm = AntForm.useForm;\nForm.Provider = AntForm.Provider;\nForm.SubmitFooter = FormSubmitFooter;\n\nexport default Form;\nexport { default as FormGroup } from './components/FormGroup';\nexport { default as FormItem } from './components/FormItem';\nexport { default as FormSubmitFooter } from './components/FormSubmitFooter';\nexport { default as FormTitle } from './components/FormTitle';\nexport type * from './type';\n","'use client';\n\nimport { Form as AntForm } from 'antd';\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo, useCallback, useState } from 'react';\n\nimport FormFlatGroup from './components/FormFlatGroup';\nimport FormGroup from './components/FormGroup';\nimport FormItem from './components/FormItem';\nimport { FormProvider } from './components/FormProvider';\nimport { variants } from './style';\nimport type { FormGroupItemType, FormItemProps, FormProps } from './type';\n\nconst Form = memo<FormProps>(\n ({\n className,\n itemMinWidth,\n footer,\n form,\n items = [],\n children,\n itemsType = 'group',\n itemVariant,\n variant = 'borderless',\n classNames,\n styles: customStyles,\n gap,\n style,\n collapsible,\n defaultActiveKey,\n initialValues,\n activeKey,\n onCollapse,\n onFinish,\n ref,\n layout,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const [submitLoading, setSubmitLoading] = useState(false);\n\n const mapFlat = useCallback(\n (item: FormItemProps, itemIndex: number) => (\n <FormItem\n className={classNames?.item}\n divider={itemIndex !== 0}\n key={itemIndex}\n minWidth={itemMinWidth}\n style={customStyles?.item}\n variant={variant}\n {...item}\n />\n ),\n [itemMinWidth, variant, classNames, customStyles],\n );\n\n const mapTree = useCallback(\n (group: FormGroupItemType, groupIndex: number) => {\n const key = group?.key || groupIndex;\n return (\n <FormGroup\n active={activeKey && group?.key ? activeKey.includes(key) : undefined}\n className={classNames?.group}\n classNames={classNames}\n collapsible={isUndefined(group.collapsible) ? collapsible : group.collapsible}\n defaultActive={\n defaultActiveKey && group?.key ? defaultActiveKey.includes(key) : group?.defaultActive\n }\n extra={group?.extra}\n icon={group?.icon}\n key={key}\n keyValue={key}\n onCollapse={(active) => {\n let keys: (string | number)[] = activeKey || defaultActiveKey || [];\n keys = keys.filter((k) => k !== key);\n onCollapse?.(active ? [...keys, key] : keys);\n }}\n style={customStyles?.group}\n styles={customStyles}\n title={group.title}\n variant={group?.variant || variant}\n >\n {Array.isArray(group.children)\n ? group.children.filter((item) => !item.hidden).map((item, i) => mapFlat(item, i))\n : group.children}\n </FormGroup>\n );\n },\n [activeKey, collapsible, defaultActiveKey, onCollapse, variant, classNames, customStyles],\n );\n\n return (\n <FormProvider\n config={{\n form,\n initialValues,\n submitLoading,\n }}\n >\n <AntForm\n className={cx(variants({ variant }), className)}\n colon={false}\n form={form}\n initialValues={initialValues}\n layout={layout || (mobile ? 'vertical' : 'horizontal')}\n onFinish={async (...finishProps) => {\n if (!onFinish) return;\n setSubmitLoading(true);\n await onFinish(...finishProps);\n setSubmitLoading(false);\n }}\n ref={ref}\n style={{\n gap,\n ...style,\n }}\n variant={itemVariant}\n {...rest}\n >\n {items && items?.length > 0 ? (\n itemsType === 'group' ? (\n (items as FormGroupItemType[])?.map((item, i) => mapTree(item, i))\n ) : (\n <FormFlatGroup\n className={classNames?.group}\n style={customStyles?.group}\n variant={variant}\n >\n {(items as FormItemProps[])\n ?.filter((item) => !item.hidden)\n .map((item, i) => mapFlat(item, i))}\n </FormFlatGroup>\n )\n ) : undefined}\n {children}\n {footer}\n </AntForm>\n </FormProvider>\n );\n },\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n","'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { flatGroupStyles, flatGroupVariants } from '../style';\nimport type { FormFlatGroupProps } from '../type';\n\nconst FormFlatGroup = memo<FormFlatGroupProps>(\n ({ className, children, variant = 'borderless', ...rest }) => {\n const { mobile } = useResponsive();\n const styles = flatGroupStyles;\n\n return (\n <Flexbox\n className={cx(mobile ? styles.mobile : flatGroupVariants({ variant }), className)}\n {...rest}\n >\n {children}\n </Flexbox>\n );\n },\n);\n\nFormFlatGroup.displayName = 'FormFlatGroup';\n\nexport default FormFlatGroup;\n","import { createStaticStyles, responsive } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n borderless: css`\n gap: 48px;\n .${prefixCls}-collapse .${prefixCls}-collapse-header {\n padding-block-end: 16px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n }\n\n .${prefixCls}-collapse-body {\n padding-inline: 0 !important;\n }\n `,\n filled: css`\n .${prefixCls}-collapse-body {\n padding-block: 0 !important;\n }\n `,\n outlined: css`\n .${prefixCls}-collapse-body {\n padding-block: 0 !important;\n }\n `,\n root: css`\n position: relative;\n\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n width: 100%;\n\n .${prefixCls}-form-item {\n margin: 0 !important;\n }\n\n .${prefixCls}-form-item .${prefixCls}-form-item-label > label {\n height: unset;\n }\n\n .${prefixCls}-row {\n position: relative;\n flex-wrap: nowrap;\n }\n\n .${prefixCls}-form-item-label {\n position: relative;\n flex: 1;\n max-width: 100%;\n }\n\n .${prefixCls}-form-item-row {\n align-items: center;\n }\n\n .${prefixCls}-form-item-control {\n position: relative;\n flex: 0;\n min-width: unset !important;\n }\n\n .${prefixCls}-collapse-item {\n border-radius: ${cssVar.borderRadius} !important;\n }\n\n ${responsive.sm} {\n gap: 0 !important;\n }\n `,\n}));\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const flatGroupStyles = createStaticStyles(({ cx, css, cssVar }) => {\n return {\n borderless: cx(\n lobeStaticStylish.variantBorderlessWithoutHover,\n css`\n padding-inline: 0;\n `,\n ),\n filled: cx(\n lobeStaticStylish.variantFilledWithoutHover,\n css`\n background: ${cssVar.colorFillQuaternary};\n `,\n ),\n mobile: css`\n padding-block: 0;\n padding-inline: 16px;\n border-radius: 0;\n background: ${cssVar.colorBgContainer};\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n padding-inline: 16px;\n border-radius: ${cssVar.borderRadiusLG};\n `,\n };\n});\n\nexport const flatGroupVariants = cva(flatGroupStyles.root, {\n defaultVariants: {\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: flatGroupStyles.filled,\n outlined: flatGroupStyles.outlined,\n borderless: flatGroupStyles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const footerStyles = createStaticStyles(({ css, cssVar }) => {\n return {\n root: css`\n ${responsive.sm} {\n padding: 16px;\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n background: ${cssVar.colorBgContainer};\n }\n `,\n };\n});\n\nexport const groupStyles = createStaticStyles(({ css, cssVar }) => {\n return {\n mobileGroupBody: css`\n padding-block: 0;\n padding-inline: 16px;\n background: ${cssVar.colorBgContainer};\n `,\n mobileGroupHeader: css`\n padding: 16px;\n background: ${cssVar.colorBgLayout};\n `,\n title: css`\n align-items: center;\n font-size: 16px;\n font-weight: bold;\n `,\n titleBorderless: css`\n font-size: 18px;\n font-weight: bold;\n `,\n titleMobile: css`\n ${responsive.sm} {\n font-size: 14px;\n font-weight: 400;\n opacity: 0.5;\n }\n `,\n };\n});\n\nexport const titleVariants = cva(groupStyles.title, {\n defaultVariants: {\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: null,\n outlined: null,\n borderless: groupStyles.titleBorderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const itemStyles = createStaticStyles(({ css }) => ({\n itemMinWidth: css`\n &.${prefixCls}-form-item .${prefixCls}-form-item-control {\n width: var(--form-item-min-width) !important;\n }\n `,\n itemNoDivider: css`\n &:not(:first-child) {\n padding-block-start: 0;\n }\n `,\n root: css`\n &.${prefixCls}-form-item {\n padding-block: 16px;\n padding-inline: 0;\n\n .${prefixCls}-form-item-label {\n text-align: start;\n }\n\n .${prefixCls}-row {\n gap: 12px;\n justify-content: space-between;\n\n > div {\n flex: unset;\n flex-grow: unset;\n }\n }\n\n .${prefixCls}-form-item-required::before {\n align-self: flex-start;\n }\n\n ${responsive.sm} {\n &.${prefixCls}-form-item-horizontal {\n .${prefixCls}-form-item-label {\n flex: 1 !important;\n }\n .${prefixCls}-form-item-control {\n flex: none !important;\n }\n }\n }\n }\n `,\n verticalLayout: css`\n &.${prefixCls}-form-item {\n .${prefixCls}-row {\n align-items: stretch;\n }\n }\n `,\n}));\n\nexport const itemVariants = cva(itemStyles.root, {\n defaultVariants: {\n divider: false,\n itemMinWidth: false,\n layout: 'vertical',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n itemMinWidth: {\n true: itemStyles.itemMinWidth,\n false: null,\n },\n divider: {\n true: null,\n false: itemStyles.itemNoDivider,\n },\n layout: {\n vertical: itemStyles.verticalLayout,\n horizontal: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const submitFooterStyles = createStaticStyles(({ css, cssVar }) => ({\n floatFooter: css`\n position: fixed;\n z-index: 1000;\n inset-block-end: 24px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n\n width: max-content;\n padding: 8px;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 48px;\n\n background: ${cssVar.colorBgContainer};\n box-shadow: ${cssVar.boxShadowSecondary};\n `,\n footer: css`\n ${responsive.sm} {\n margin-block-start: calc(-1 * ${cssVar.borderRadius});\n padding: 16px;\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n background: ${cssVar.colorBgContainer};\n }\n `,\n}));\n\nexport const titleStyles = createStaticStyles(({ css, cssVar }) => ({\n content: css`\n position: relative;\n text-align: start;\n `,\n\n desc: css`\n display: block;\n\n line-height: 1.44;\n color: ${cssVar.colorTextDescription};\n word-wrap: break-word;\n white-space: pre-wrap;\n `,\n title: css`\n font-weight: 500;\n line-height: 1;\n `,\n}));\n","'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo } from 'react';\n\nimport Collapse from '@/Collapse';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { groupStyles, titleVariants } from '../style';\nimport type { FormGroupProps } from '../type';\n\nconst FormGroup = memo<FormGroupProps>(\n ({\n className,\n icon,\n title,\n children,\n extra,\n variant = 'borderless',\n defaultActive = true,\n collapsible,\n active,\n keyValue = 'group',\n onCollapse,\n desc,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const styles = groupStyles;\n const isBorderless = variant === 'borderless';\n\n const defaultCollapsible = isUndefined(collapsible) ? !isBorderless : collapsible;\n\n const titleContent = (\n <Flexbox className={cx(titleVariants({ variant }), styles.titleMobile)} gap={8} horizontal>\n {icon && <Icon icon={icon} />}\n {title}\n </Flexbox>\n );\n\n if (mobile)\n return (\n <Flexbox className={className}>\n <Flexbox className={styles.mobileGroupHeader} horizontal justify={'space-between'}>\n {titleContent}\n {extra}\n </Flexbox>\n <div className={styles.mobileGroupBody}>{children}</div>\n </Flexbox>\n );\n\n return (\n <Collapse\n activeKey={isUndefined(active) ? undefined : active ? [keyValue] : []}\n className={className}\n classNames={{\n header: isBorderless ? styles.titleBorderless : undefined,\n title: isBorderless ? styles.titleBorderless : undefined,\n }}\n collapsible={defaultCollapsible}\n defaultActiveKey={defaultActive ? [keyValue] : undefined}\n items={[\n {\n children,\n desc,\n extra,\n icon,\n key: keyValue,\n label: title,\n },\n ]}\n onChange={(v) => onCollapse?.(v.length > 0)}\n variant={variant}\n {...rest}\n />\n );\n },\n);\n\nFormGroup.displayName = 'FormGroup';\n\nexport default FormGroup;\n","'use client';\n\nimport { Form } from 'antd';\nimport { cx } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { itemVariants } from '../style';\nimport type { FormItemProps } from '../type';\nimport FormDivider from './FormDivider';\nimport FormTitle from './FormTitle';\n\nconst { Item } = Form;\n\nconst FormItem = memo<FormItemProps>(\n ({\n desc,\n tag,\n minWidth,\n avatar,\n className,\n label,\n children,\n divider,\n layout,\n variant,\n ...rest\n }) => {\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--form-item-min-width':\n minWidth !== undefined && minWidth !== null && minWidth !== ''\n ? typeof minWidth === 'number'\n ? `${minWidth}px`\n : minWidth\n : '',\n }),\n [minWidth],\n );\n\n const hasMinWidth = minWidth !== undefined && minWidth !== null && minWidth !== '';\n const { style: restStyle, ...restProps } = rest;\n\n return (\n <>\n {divider && <FormDivider visible={variant !== 'borderless'} />}\n <Item\n className={cx(itemVariants({ divider, itemMinWidth: hasMinWidth, layout }), className)}\n label={<FormTitle avatar={avatar} desc={desc} tag={tag} title={label} />}\n layout={layout}\n style={{\n ...cssVariables,\n ...restStyle,\n }}\n {...restProps}\n >\n {children}\n </Item>\n </>\n );\n },\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n","'use client';\n\nimport { Divider as AntDivider } from 'antd';\nimport { createStaticStyles, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport type { FormDividerProps } from '../type';\n\nconst styles = createStaticStyles(({ css }) => {\n return {\n root: css`\n margin: 0;\n opacity: 0.66;\n `,\n };\n});\n\nconst FormDivider: FC<FormDividerProps> = ({ visible = true, style, className, ...rest }) => {\n return (\n <AntDivider\n className={cx(styles.root, className)}\n style={{\n opacity: visible ? 1 : 0,\n ...style,\n }}\n {...rest}\n />\n );\n};\n\nFormDivider.displayName = 'FormDivider';\n\nexport default FormDivider;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Tag from '@/Tag';\n\nimport { titleStyles as styles } from '../style';\nimport type { FormTitleProps } from '../type';\n\nconst FormTitle: FC<FormTitleProps> = ({\n tag,\n title,\n desc,\n avatar,\n classNames,\n styles: customStyles,\n ...rest\n}) => {\n return (\n <Flexbox align={`center`} gap={8} horizontal {...rest}>\n {avatar}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n <Flexbox\n align={'center'}\n className={cx(styles.title, classNames?.title)}\n direction={'horizontal'}\n gap={8}\n style={customStyles?.title}\n >\n {title}\n {tag && (\n <Tag className={classNames?.tag} style={customStyles?.tag}>\n {tag}\n </Tag>\n )}\n </Flexbox>\n {desc && (\n <small className={cx(styles.desc, classNames?.desc)} style={customStyles?.desc}>\n {desc}\n </small>\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nFormTitle.displayName = 'FormTitle';\n\nexport default FormTitle;\n","'use client';\n\nimport type { FormProps } from 'antd';\nimport { ReactNode, createContext, memo, use } from 'react';\n\ninterface FormContentConfig {\n form?: FormProps['form'];\n initialValues?: FormProps['initialValues'];\n submitLoading?: boolean;\n}\n\nexport const FormContext = createContext<FormContentConfig>({});\n\nexport const FormProvider = memo<{ children: ReactNode; config: FormContentConfig }>(\n ({ children, config }) => {\n return <FormContext value={config}>{children}</FormContext>;\n },\n);\n\nexport const useFormContext = () => {\n return use(FormContext);\n};\n","'use client';\n\nimport { Form } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport isEqual from 'fast-deep-equal';\nimport { InfoIcon } from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport { useMotionComponent } from '@/MotionProvider';\nimport formMessages from '@/i18n/resources/en/form';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { submitFooterStyles } from '../style';\nimport type { FormSubmitFooterProps } from '../type';\nimport { useFormContext } from './FormProvider';\nimport { merge, removeUndefined } from './merge';\n\nconst FormSubmitFooter = memo<FormSubmitFooterProps>(\n ({\n enableReset = true,\n buttonProps,\n float,\n onReset,\n saveButtonProps,\n resetButtonProps,\n enableUnsavedWarning,\n children,\n texts,\n className,\n ...rest\n }) => {\n const Motion = useMotionComponent();\n const { form, initialValues, submitLoading } = useFormContext();\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const values = Form.useWatch([], form) || {};\n const { t } = useTranslation(formMessages);\n\n const styles = submitFooterStyles;\n\n const v = useMemo(() => removeUndefined(values), [values]);\n\n const initialV = useMemo(() => removeUndefined(initialValues), [initialValues]);\n\n const mergedV = useMemo(() => merge(initialV, v), [v, initialV]);\n\n useEffect(() => {\n setHasUnsavedChanges(!isEqual(mergedV, initialV));\n }, [mergedV, initialV, submitLoading]);\n\n const unsavedWarningText = texts?.unSavedWarning ?? t('form.unsavedWarning');\n const unsavedText = texts?.unSaved ?? t('form.unsavedChanges');\n const resetText = texts?.reset ?? t('form.reset');\n const submitText = texts?.submit ?? t('form.submit');\n\n const fn = (e: BeforeUnloadEvent) => {\n if (hasUnsavedChanges) {\n e.returnValue = unsavedWarningText;\n } else {\n delete e.returnValue;\n }\n };\n\n useEffect(() => {\n if (!enableUnsavedWarning) return;\n if (typeof window === 'undefined' || !hasUnsavedChanges) return;\n // 添加离开页面的提示\n window.addEventListener('beforeunload', fn);\n return () => window.removeEventListener('beforeunload', fn);\n }, [enableUnsavedWarning, hasUnsavedChanges, unsavedWarningText]);\n\n const content = (\n <>\n {(float || hasUnsavedChanges) && (\n <>\n <Icon\n color={cssVar.colorTextDescription}\n icon={InfoIcon}\n size={12}\n style={{ marginLeft: 8 }}\n />\n <span\n style={{\n color: cssVar.colorTextDescription,\n flex: 'none',\n fontSize: 12,\n marginRight: float ? 16 : 4,\n }}\n >\n {unsavedText}\n </span>\n </>\n )}\n {children}\n {enableReset && (float || hasUnsavedChanges) && (\n <Button\n htmlType=\"button\"\n onClick={() => {\n onReset?.(v, initialV);\n form?.resetFields();\n }}\n shape={float ? 'round' : undefined}\n variant={'filled'}\n {...buttonProps}\n {...resetButtonProps}\n >\n {resetText}\n </Button>\n )}\n <Button\n htmlType=\"submit\"\n loading={submitLoading}\n shape={float ? 'round' : undefined}\n type=\"primary\"\n {...buttonProps}\n {...saveButtonProps}\n >\n {submitText}\n </Button>\n </>\n );\n\n if (!float)\n return (\n <Flexbox\n align={'center'}\n className={cx(styles.footer, className)}\n gap={8}\n horizontal\n justify={'flex-end'}\n {...rest}\n >\n {content}\n </Flexbox>\n );\n\n return (\n <Motion.div\n animate={hasUnsavedChanges ? 'visible' : 'hidden'}\n className={styles.floatFooter}\n initial={'hidden'}\n transition={{ duration: 0.1, ease: 'easeOut' }}\n variants={{\n hidden: {\n opacity: 0,\n x: '-50%',\n y: 20,\n },\n visible: {\n opacity: 1,\n x: '-50%',\n y: 0,\n },\n }}\n >\n <Flexbox\n align={'center'}\n className={className}\n gap={8}\n horizontal\n justify={'center'}\n {...rest}\n >\n {content}\n </Flexbox>\n </Motion.div>\n );\n },\n);\n\nFormSubmitFooter.displayName = 'FormSubmitFooter';\n\nexport default FormSubmitFooter;\n","export default {\n 'form.reset': 'Reset',\n 'form.submit': 'Submit',\n 'form.unsavedChanges': 'Unsaved changes',\n 'form.unsavedWarning': 'You have unsaved changes. Are you sure you want to leave?',\n} as const;\n","import { merge as _merge, isEmpty, isObject, mergeWith, pickBy } from 'es-toolkit/compat';\n\nexport const removeUndefined = (obj: any): any => {\n if (!isObject(obj)) return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => removeUndefined(item)).filter((item) => item !== undefined);\n }\n\n return pickBy(\n Object.entries(obj).reduce((acc: any, [key, value]) => {\n acc[key] = removeUndefined(value);\n return acc;\n }, {}),\n (value) => value !== undefined,\n );\n};\n\n/**\n * 用于合并对象,如果是数组则直接替换\n * @param target\n * @param source\n */\nexport const merge: typeof _merge = <T = object>(target: T, source: T) =>\n mergeWith({}, target, source, (obj, src) => {\n if (Array.isArray(obj)) return src;\n });\n\ntype MergeableItem = {\n [key: string]: any;\n id: string;\n};\n\n/**\n * Merge two arrays based on id, preserving metadata from default items\n * @param defaultItems Items with default configuration and metadata\n * @param userItems User-defined items with higher priority\n */\nexport const mergeArrayById = <T extends MergeableItem>(defaultItems: T[], userItems: T[]): T[] => {\n // Create a map of default items for faster lookup\n const defaultItemsMap = new Map(defaultItems.map((item) => [item.id, item]));\n\n // 使用 Map 存储合并结果,这样重复 ID 的后项会自然覆盖前项\n const mergedItemsMap = new Map<string, T>();\n\n // Process user items with default metadata\n for (const userItem of userItems) {\n const defaultItem = defaultItemsMap.get(userItem.id);\n if (!defaultItem) {\n mergedItemsMap.set(userItem.id, userItem);\n continue;\n }\n\n const mergedItem: T = { ...defaultItem };\n for (const [key, value] of Object.entries(userItem)) {\n if (value !== null && value !== undefined && !(typeof value === 'object' && isEmpty(value))) {\n // @ts-expect-error\n mergedItem[key] = value;\n }\n\n if (typeof value === 'object' && !isEmpty(value)) {\n // @ts-expect-error\n mergedItem[key] = merge(defaultItem[key], value);\n }\n }\n\n mergedItemsMap.set(userItem.id, mergedItem);\n }\n\n // 添加只在默认配置中存在的项\n for (const item of defaultItems) {\n if (!mergedItemsMap.has(item.id)) {\n mergedItemsMap.set(item.id, item);\n }\n }\n\n return [...mergedItemsMap.values()];\n};\n","'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Form from '@/Form';\nimport Modal from '@/Modal';\n\nimport { styles as staticStyles } from './style';\nimport type { FormModalProps } from './type';\n\nconst FormModal = memo<FormModalProps>(\n ({\n classNames = {},\n className,\n style,\n closable,\n styles = {},\n allowFullscreen,\n title,\n\n afterOpenChange,\n width,\n onCancel,\n centered,\n open,\n afterClose,\n destroyOnHidden,\n closeIcon,\n paddings,\n height,\n enableResponsive,\n zIndex,\n mask,\n getContainer,\n keyboard,\n focusTriggerAfterClose,\n forceRender,\n loading,\n footer,\n submitButtonProps,\n submitLoading,\n onFinish,\n submitText,\n variant = 'borderless',\n gap,\n onSubmit,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const { form: formClassName, ...modalClassNames } = classNames;\n const { form: formStyle, ...modalStyles } =\n typeof styles === 'function' ? { form: undefined } : styles;\n\n return (\n <Modal\n afterClose={afterClose}\n afterOpenChange={afterOpenChange}\n allowFullscreen={allowFullscreen}\n centered={centered}\n className={className}\n classNames={modalClassNames}\n closable={closable}\n closeIcon={closeIcon}\n confirmLoading={submitLoading}\n destroyOnHidden={destroyOnHidden}\n enableResponsive={enableResponsive}\n focusTriggerAfterClose={focusTriggerAfterClose}\n footer={null}\n forceRender={forceRender}\n getContainer={getContainer}\n height={height}\n keyboard={keyboard}\n loading={loading}\n mask={mask}\n onCancel={onCancel}\n open={open}\n paddings={paddings}\n style={style}\n styles={\n typeof styles === 'function'\n ? styles\n : {\n ...modalStyles,\n body: {\n paddingTop: mobile ? 0 : undefined,\n ...modalStyles?.body,\n },\n }\n }\n title={title}\n width={width}\n zIndex={zIndex}\n >\n <Form\n className={cx(staticStyles.form, formClassName || '')}\n clearOnDestroy={destroyOnHidden}\n footer={\n <Flexbox align={'center'} className={staticStyles.footer} gap={8} horizontal>\n {footer || (\n <Button\n block\n htmlType=\"submit\"\n loading={submitLoading}\n onClick={onSubmit}\n type={'primary'}\n {...submitButtonProps}\n style={{\n flex: 1,\n ...submitButtonProps?.style,\n }}\n >\n {submitText || 'Submit'}\n </Button>\n )}\n </Flexbox>\n }\n gap={gap || (variant === 'borderless' ? 24 : gap)}\n onFinish={onFinish}\n ref={ref}\n style={{\n paddingBottom: 56,\n ...formStyle,\n }}\n styles={{\n title: { fontSize: 14 },\n }}\n variant={variant}\n {...rest}\n >\n {children}\n </Form>\n </Modal>\n );\n },\n);\n\nFormModal.displayName = 'FormModal';\n\nexport default FormModal;\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { memo, useEffect, useState, useSyncExternalStore } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { registerDevSingleton } from '@/utils/devSingleton';\n\nimport { ModalStackItem } from './ModalStackItem';\nimport { RawModalStackItem } from './RawModalStackItem';\nimport type {\n ImperativeModalProps,\n ModalInstance,\n RawModalComponent,\n RawModalComponentProps,\n RawModalInstance,\n RawModalKeyOptions,\n RawModalOptions,\n} from './type';\n\ntype ModalStackItemBase = {\n id: string;\n};\n\ntype ModalStackItemModal = ModalStackItemBase & {\n kind: 'modal';\n props: ImperativeModalProps;\n};\n\ntype ModalStackItemRaw = ModalStackItemBase & {\n component: RawModalComponent;\n kind: 'raw';\n open: boolean;\n options?: RawModalOptions<PropertyKey, PropertyKey>;\n props: Record<string, unknown>;\n};\n\ntype TModalStackItem = ModalStackItemModal | ModalStackItemRaw;\n\ntype ModalStackProps = {\n stack: TModalStackItem[];\n};\n\nexport type ModalHostProps = {\n root?: HTMLElement | ShadowRoot | null;\n};\n\nconst MODAL_PORTAL_ATTR = 'data-lobe-ui-modal-portal';\n\n// Reuse one portal container per root (document.body by default).\nconst containerMap = new WeakMap<object, HTMLElement>();\n\nlet modalStack: TModalStackItem[] = [];\nlet modalSeed = 0;\nconst listeners = new Set<() => void>();\nconst rawDestroyTimers = new Map<string, number>();\n\nconst notify = () => {\n listeners.forEach((listener) => listener());\n};\n\nconst subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n};\n\nconst EMPTY_STACK: TModalStackItem[] = [];\nconst getSnapshot = () => modalStack;\nconst getServerSnapshot = () => EMPTY_STACK;\n\nconst getOrCreateContainer = (root: HTMLElement | ShadowRoot): HTMLElement => {\n const cached = containerMap.get(root);\n if (cached && cached.isConnected) return cached;\n\n const el = document.createElement('div');\n el.setAttribute(MODAL_PORTAL_ATTR, 'true');\n root.append(el);\n containerMap.set(root, el);\n return el;\n};\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nconst ModalPortal = ({\n children,\n root,\n}: {\n children: ReactNode;\n root?: HTMLElement | ShadowRoot | null;\n}) => {\n const [container, setContainer] = useState<HTMLElement | null>(() => {\n const resolved = resolveRoot(root);\n if (!resolved) return null;\n return getOrCreateContainer(resolved);\n });\n\n if (!container) {\n setContainer(getOrCreateContainer(document.body));\n }\n\n if (!container) return null;\n return createPortal(children, container);\n};\n\nconst updateModal = (id: string, nextProps: Partial<ImperativeModalProps>) => {\n let changed = false;\n modalStack = modalStack.map((item) => {\n if (item.id !== id) return item;\n if (item.kind !== 'modal') return item;\n changed = true;\n return {\n ...item,\n props: { ...item.props, ...nextProps },\n };\n });\n\n if (changed) notify();\n};\n\nconst updateRawProps = (id: string, nextProps: Record<string, unknown>) => {\n let changed = false;\n modalStack = modalStack.map((item) => {\n if (item.id !== id) return item;\n if (item.kind !== 'raw') return item;\n changed = true;\n return {\n ...item,\n props: { ...item.props, ...nextProps },\n };\n });\n\n if (changed) notify();\n};\n\nconst setRawOpen = (id: string, open: boolean) => {\n let changed = false;\n modalStack = modalStack.map((item) => {\n if (item.id !== id) return item;\n if (item.kind !== 'raw') return item;\n if (item.open === open) return item;\n changed = true;\n return { ...item, open };\n });\n\n if (open) {\n const timer = rawDestroyTimers.get(id);\n if (timer) {\n clearTimeout(timer);\n rawDestroyTimers.delete(id);\n }\n }\n\n if (changed) notify();\n};\n\nconst closeModal = (id: string) => {\n const target = modalStack.find((item) => item.id === id);\n if (!target) return;\n\n if (target.kind === 'modal') {\n updateModal(id, { open: false });\n return;\n }\n\n setRawOpen(id, false);\n\n const shouldDestroy = target.options?.destroyOnClose ?? true;\n if (!shouldDestroy) return;\n\n const delay = target.options?.destroyDelay ?? 200;\n const existing = rawDestroyTimers.get(id);\n if (existing) clearTimeout(existing);\n const timer = window.setTimeout(() => {\n rawDestroyTimers.delete(id);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n destroyModal(id);\n }, delay);\n rawDestroyTimers.set(id, timer);\n};\n\nconst destroyModal = (id: string) => {\n const timer = rawDestroyTimers.get(id);\n if (timer) {\n clearTimeout(timer);\n rawDestroyTimers.delete(id);\n }\n const nextStack = modalStack.filter((item) => item.id !== id);\n if (nextStack.length === modalStack.length) return;\n modalStack = nextStack;\n notify();\n};\n\nconst ModalStack = memo(({ stack }: ModalStackProps) => {\n const isClient = useIsClient();\n if (!isClient) return null;\n return stack.map((item) => {\n if (item.kind === 'modal') {\n return (\n <ModalStackItem\n id={item.id}\n key={item.id}\n onClose={closeModal}\n onDestroy={destroyModal}\n onUpdate={updateModal}\n props={item.props}\n />\n );\n }\n\n return (\n <RawModalStackItem\n component={item.component}\n id={item.id}\n key={item.id}\n onClose={closeModal}\n onUpdate={updateRawProps}\n open={item.open}\n options={item.options}\n props={item.props}\n />\n );\n });\n});\n\nModalStack.displayName = 'ModalStack';\n\nexport const ModalHost = ({ root }: ModalHostProps) => {\n const stack = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const isClient = useIsClient();\n\n useEffect(() => {\n if (!isClient) return;\n // Enforce singleton per portal root (dev-only).\n const scope = root ?? document.body;\n return registerDevSingleton('ModalHost', scope);\n }, [isClient, root]);\n\n if (!isClient) return null;\n if (stack.length === 0) return null;\n\n return (\n <ModalPortal root={root}>\n <ModalStack stack={stack} />\n </ModalPortal>\n );\n};\n\nexport const createModal = (props: ImperativeModalProps): ModalInstance => {\n const id = `modal-${Date.now()}-${modalSeed++}`;\n modalStack = [\n ...modalStack,\n { id, kind: 'modal', props: { ...props, open: props.open ?? true } },\n ];\n notify();\n\n return {\n close: () => closeModal(id),\n destroy: () => destroyModal(id),\n setCanDismissByClickOutside: (value) => updateModal(id, { maskClosable: value }),\n update: (nextProps) => updateModal(id, nextProps),\n };\n};\n\nexport function createRawModal<P extends RawModalComponentProps>(\n component: RawModalComponent<P>,\n props: Omit<P, 'open' | 'onClose'>,\n options?: RawModalOptions,\n): RawModalInstance<P>;\n// eslint-disable-next-line no-redeclare\nexport function createRawModal<P, OpenKey extends keyof P, CloseKey extends keyof P>(\n component: RawModalComponent<P>,\n props: Omit<P, OpenKey | CloseKey>,\n options: RawModalKeyOptions<OpenKey, CloseKey>,\n): RawModalInstance<P, OpenKey, CloseKey>;\n// eslint-disable-next-line no-redeclare\nexport function createRawModal<P, OpenKey extends keyof P, CloseKey extends keyof P>(\n component: RawModalComponent<P>,\n props: Omit<P, OpenKey | CloseKey>,\n options?: RawModalOptions<OpenKey, CloseKey>,\n): RawModalInstance<P, OpenKey, CloseKey> {\n const id = `modal-${Date.now()}-${modalSeed++}`;\n modalStack = [\n ...modalStack,\n {\n component,\n id,\n kind: 'raw',\n open: true,\n options,\n props: props as Record<string, unknown>,\n },\n ];\n notify();\n\n return {\n close: () => closeModal(id),\n destroy: () => destroyModal(id),\n setCanDismissByClickOutside: (value) => updateRawProps(id, { maskClosable: value }),\n update: (nextProps) => updateRawProps(id, nextProps as Record<string, unknown>),\n };\n}\n","'use client';\n\nimport { memo, useCallback, useMemo } from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport Modal from './Modal';\nimport { ModalProvider } from './ModalProvider';\nimport type { ImperativeModalProps } from './type';\n\nexport type ModalStackItemProps = {\n id: string;\n onClose: (id: string) => void;\n onDestroy: (id: string) => void;\n onUpdate: (id: string, nextProps: Partial<ImperativeModalProps>) => void;\n props: ImperativeModalProps;\n};\n\nconst noop = () => {};\nexport const ModalStackItem = memo(\n ({ id, props, onClose, onUpdate, onDestroy }: ModalStackItemProps) => {\n const { afterClose, afterOpenChange, children, onCancel, open, ...rest } = props;\n const stableAfterClose = useEventCallback(afterClose ?? noop);\n const stableAfterOpenChange = useEventCallback(afterOpenChange ?? noop);\n const stableOnCancel = useEventCallback(onCancel ?? noop);\n const close = useEventCallback(() => onClose(id));\n const setCanDismissByClickOutside = useEventCallback((value: boolean) =>\n onUpdate(id, { maskClosable: value }),\n );\n const stableContextValue = useMemo(\n () => ({ close, setCanDismissByClickOutside }),\n [close, setCanDismissByClickOutside],\n );\n\n return (\n <Modal\n {...rest}\n afterClose={useCallback(() => {\n stableAfterClose?.();\n onDestroy(id);\n }, [stableAfterClose, onDestroy, id])}\n afterOpenChange={useCallback(\n (nextOpen: boolean) => {\n stableAfterOpenChange?.(nextOpen);\n if (!nextOpen) onDestroy(id);\n },\n [stableAfterOpenChange, onDestroy, id],\n )}\n onCancel={useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n stableOnCancel?.(event);\n close();\n },\n [stableOnCancel, close],\n )}\n open={open ?? true}\n >\n <ModalProvider value={stableContextValue}>{children}</ModalProvider>\n </Modal>\n );\n },\n);\n\nModalStackItem.displayName = 'ModalStackItem';\n","import { useCallback, useLayoutEffect, useRef } from 'react';\n\nexport function useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref = useRef(fn);\n\n useLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: Parameters<T>) => {\n return ref.current(...args);\n }, []) as T;\n}\n","'use client';\n\nimport { Modal as AntModal, Button, ConfigProvider, Drawer } from 'antd';\nimport { cssVar, cx, useResponsive } from 'antd-style';\nimport { Maximize2, Minimize2, X } from 'lucide-react';\nimport { ReactNode, memo, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { ModalProps } from './type';\n\nconst Modal = memo<ModalProps>(\n ({\n panelRef,\n allowFullscreen,\n children,\n title = ' ',\n className,\n classNames,\n width = 700,\n onCancel,\n open,\n destroyOnHidden,\n paddings,\n height = '75dvh',\n enableResponsive = true,\n footer,\n styles: customStyles,\n okText,\n onOk,\n cancelText,\n okButtonProps,\n cancelButtonProps,\n confirmLoading,\n ...rest\n }) => {\n const [fullscreen, setFullscreen] = useState(false);\n const { mobile } = useResponsive();\n const hideFooter = footer === false || footer === null;\n if (enableResponsive && mobile)\n return (\n <ConfigProvider\n theme={{\n token: {\n colorBgElevated: cssVar.colorBgContainer,\n },\n }}\n >\n <Drawer\n className={cx(styles.drawerContent, className)}\n classNames={\n typeof classNames === 'function'\n ? classNames\n : {\n ...classNames,\n wrapper: cx(styles.wrap, classNames?.wrapper),\n }\n }\n closeIcon={<ActionIcon icon={X} />}\n destroyOnHidden={destroyOnHidden}\n extra={\n allowFullscreen && (\n <ActionIcon\n icon={fullscreen ? Minimize2 : Maximize2}\n onClick={() => setFullscreen(!fullscreen)}\n />\n )\n }\n footer={\n hideFooter\n ? null\n : (footer as ReactNode) || (\n <>\n <Button\n color={'default'}\n onClick={onCancel as any}\n variant={'filled'}\n {...cancelButtonProps}\n >\n {cancelText || 'Cancel'}\n </Button>\n <Button\n loading={confirmLoading}\n onClick={onOk as any}\n type=\"primary\"\n {...okButtonProps}\n style={{\n marginInlineStart: 8,\n ...okButtonProps?.style,\n }}\n >\n {okText || 'OK'}\n </Button>\n </>\n )\n }\n height={fullscreen ? 'calc(100% - env(safe-area-inset-top))' : height}\n onClose={onCancel as any}\n open={open}\n panelRef={panelRef}\n placement={'bottom'}\n styles={\n typeof customStyles === 'function'\n ? customStyles\n : {\n ...customStyles,\n body: {\n paddingBlock: `16px ${footer ? 0 : '16px'}`,\n paddingInline: paddings?.desktop ?? 16,\n ...customStyles?.body,\n },\n }\n }\n title={title}\n {...rest}\n >\n {children}\n </Drawer>\n </ConfigProvider>\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorBgElevated: cssVar.colorBgContainer,\n },\n }}\n >\n <AntModal\n cancelButtonProps={{\n color: 'default',\n variant: 'filled',\n ...cancelButtonProps,\n }}\n cancelText={cancelText}\n className={cx(styles.content, className)}\n classNames={\n typeof classNames === 'function'\n ? classNames\n : {\n ...classNames,\n wrapper: cx(styles.wrap, classNames?.wrapper),\n }\n }\n closable\n closeIcon={<Icon icon={X} size={20} />}\n confirmLoading={confirmLoading}\n destroyOnHidden={destroyOnHidden}\n footer={hideFooter ? null : footer}\n maskClosable\n okButtonProps={okButtonProps}\n okText={okText}\n onCancel={onCancel}\n onOk={onOk}\n open={open}\n panelRef={panelRef}\n styles={\n typeof customStyles === 'function'\n ? customStyles\n : {\n ...customStyles,\n body: {\n maxHeight: height,\n overflow: 'hidden auto',\n paddingBlock: `0 ${footer === null ? '16px' : 0}`,\n paddingInline: paddings?.desktop ?? 16,\n ...customStyles?.body,\n },\n }\n }\n title={title}\n width={width}\n {...rest}\n >\n {children}\n </AntModal>\n </ConfigProvider>\n );\n },\n);\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n","import { createStaticStyles } from 'antd-style';\n\nexport const HEADER_HEIGHT = 56;\nexport const FOOTER_HEIGHT = 68;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n content: css`\n [class*='ant-modal-footer'] {\n margin: 0;\n padding: 16px;\n }\n\n [class*='ant-modal-header'] {\n display: flex;\n gap: 4px;\n align-items: center;\n justify-content: center;\n\n height: 56px;\n margin-block-end: 0;\n padding: 16px;\n }\n\n [class*='ant-modal-container'] {\n overflow: hidden;\n padding: 0;\n border: 1px solid ${cssVar.colorSplit};\n border-radius: ${cssVar.borderRadiusLG};\n }\n `,\n drawerContent: css`\n [class*='ant-drawer-close'] {\n padding: 0;\n }\n\n [class*='ant-drawer-header'] {\n flex: none;\n height: ${HEADER_HEIGHT}px !important;\n padding-block: 0;\n padding-inline: 16px;\n }\n\n [class*='ant-drawer-footer'] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n\n padding: 16px;\n border: none;\n }\n `,\n wrap: css`\n overflow: hidden auto;\n `,\n };\n});\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, memo, use } from 'react';\n\nimport type { ModalContextValue } from './type';\n\nexport const ModalContext = createContext<ModalContextValue>({\n close: () => undefined,\n setCanDismissByClickOutside: () => undefined,\n});\n\nexport const ModalProvider = memo<{ children: ReactNode; value: ModalContextValue }>(\n ({ children, value }) => {\n return <ModalContext value={value}>{children}</ModalContext>;\n },\n);\n\nexport const useModalContext = () => {\n return use(ModalContext);\n};\n","'use client';\n\nimport type { ComponentType } from 'react';\nimport { memo, useMemo } from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport { ModalProvider } from './ModalProvider';\nimport type { ModalContextValue, RawModalOptions } from './type';\n\nexport type RawModalStackItemProps = {\n component: ComponentType<any>;\n id: string;\n onClose: (id: string) => void;\n onUpdate: (id: string, nextProps: Record<string, unknown>) => void;\n open: boolean;\n options?: RawModalOptions<PropertyKey, PropertyKey>;\n props: Record<string, unknown>;\n};\n\nexport const RawModalStackItem = memo(\n ({\n component: Component,\n id,\n onClose,\n onUpdate,\n open,\n options,\n props,\n }: RawModalStackItemProps) => {\n const stableOnClose = useEventCallback(onClose);\n const close = useEventCallback(() => stableOnClose(id));\n\n const setCanDismissByClickOutside = useEventCallback((value: boolean) => {\n onUpdate(id, { maskClosable: value });\n });\n const contextValue: ModalContextValue = useMemo(\n () => ({ close, setCanDismissByClickOutside }),\n [close, setCanDismissByClickOutside],\n );\n const openKey = options?.openKey ?? 'open';\n const onCloseKey = options?.onCloseKey ?? 'onClose';\n const injectedProps = {\n ...props,\n [onCloseKey]: close,\n [openKey]: open,\n };\n\n return (\n <ModalProvider value={contextValue}>\n <Component {...injectedProps} />\n </ModalProvider>\n );\n },\n);\n\nRawModalStackItem.displayName = 'RawModalStackItem';\n","import { createStaticStyles } from 'antd-style';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n footer: css`\n position: absolute;\n z-index: 10;\n inset-block-end: 0;\n inset-inline: 0;\n\n width: 100%;\n margin: 0;\n padding: 16px;\n\n background: linear-gradient(\n to bottom,\n color-mix(in srgb, ${cssVar.colorBgContainer} 0%, transparent) 0%,\n ${cssVar.colorBgContainer} 10%\n );\n `,\n form: css`\n position: static;\n .${prefixCls}-form-group-title {\n font-size: 15px;\n font-weight: 500;\n }\n\n ${responsive.sm} {\n .${prefixCls}-form-group-title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .${prefixCls}-form-group {\n width: calc(100% + 32px);\n margin-inline: -16px;\n background: transparent;\n }\n }\n `,\n}));\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { isString } from 'es-toolkit/compat';\nimport { type FC } from 'react';\nimport { useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { GridProps } from './type';\n\nconst Grid: FC<GridProps> = ({\n className,\n gap = '1em',\n rows = 3,\n children,\n maxItemWidth = 240,\n ref,\n style,\n ...rest\n}) => {\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {\n '--grid-gap': isString(gap) ? gap : `${gap}px`,\n '--grid-max-item-width': isString(maxItemWidth) ? maxItemWidth : `${maxItemWidth}px`,\n '--grid-rows': `${rows}`,\n };\n return vars;\n }, [gap, maxItemWidth, rows]);\n\n return (\n <Flexbox\n className={cx(styles, className)}\n gap={gap as any}\n ref={ref}\n style={{\n ...cssVariables,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Flexbox>\n );\n};\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => {\n return css`\n --rows: var(--grid-rows, 3);\n --max-item-width: var(--grid-max-item-width, 240px);\n --gap: var(--grid-gap, 1em);\n\n display: grid !important;\n grid-template-columns: repeat(\n auto-fill,\n minmax(\n max(var(--max-item-width), calc((100% - var(--gap) * (var(--rows) - 1)) / var(--rows))),\n 1fr\n )\n );\n `;\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport Avatar from '@/Avatar';\nimport Block from '@/Block';\nimport Grid from '@/Grid';\n\nimport { variants } from './style';\nimport type { GroupAvatarProps } from './type';\n\nconst GroupAvatar: FC<GroupAvatarProps> = ({\n className,\n style,\n avatars = [],\n size = 32,\n grid = 2,\n cornerShape = 'square',\n avatarShape = 'square',\n ...rest\n}) => {\n const calcSize = useMemo(() => {\n const length = avatars.length;\n const isAutoGrid = grid === 'auto';\n const gridSize = isAutoGrid ? (length > 4 ? 3 : 2) : grid;\n const isCircle = cornerShape === 'circle';\n const avatarSize = Math.floor((size / gridSize) * (isCircle ? 0.65 : 0.75));\n const gapSize = Math.floor((size - avatarSize * gridSize) / (isCircle ? 6 : 4));\n\n return {\n avatarSize,\n gapSize,\n gridSize,\n gridWidth: avatarSize * gridSize + gapSize,\n maxItemWidth: avatarSize - 1,\n };\n }, [avatars, grid, size, cornerShape]);\n\n const calcAvatars = useMemo(\n () => avatars?.slice(0, calcSize.gridSize * calcSize.gridSize),\n [avatars, calcSize.gridSize],\n );\n\n const isSingle = calcAvatars?.length === 1;\n\n return (\n <Block\n align={'center'}\n className={cx(variants({ cornerShape }), className)}\n height={size}\n justify={'center'}\n style={style}\n width={size}\n {...rest}\n >\n <Grid\n gap={calcSize.gapSize}\n maxItemWidth={0}\n rows={calcSize.gridSize}\n width={calcSize.gridWidth}\n >\n {calcAvatars.map((item, index) => {\n if (typeof item === 'string')\n return (\n <Avatar\n avatar={item}\n key={index}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n return (\n <Avatar\n key={index}\n {...item}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n })}\n </Grid>\n </Block>\n );\n};\n\nexport default GroupAvatar;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { SMOOTH_CORNER_MASKS } from '@/utils/smoothCorners';\n\nexport const styles = createStaticStyles(({ css }) => {\n const createCornerVariant = (cornerType: keyof typeof SMOOTH_CORNER_MASKS) => css`\n mask-image: url('${SMOOTH_CORNER_MASKS[cornerType]}');\n mask-position: center;\n mask-repeat: no-repeat;\n mask-size: 100% 100%;\n `;\n\n return {\n circle: createCornerVariant('circle'),\n ios: createCornerVariant('ios'),\n root: css`\n overflow: hidden;\n flex: none;\n\n /* Fallback for browsers without mask support */\n border-radius: 15%;\n\n /* Apply smooth corners mask with fallback */\n @supports (mask-image: url('data:image/svg+xml;base64,')) {\n border-radius: 0;\n }\n `,\n sharp: createCornerVariant('sharp'),\n smooth: createCornerVariant('smooth'),\n square: createCornerVariant('square'),\n squircle: createCornerVariant('squircle'),\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n cornerShape: 'squircle',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n cornerShape: {\n circle: styles.circle,\n ios: styles.ios,\n sharp: styles.sharp,\n smooth: styles.smooth,\n square: styles.square,\n squircle: styles.squircle,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import type { CSSProperties } from 'react';\n\n/**\n * Smooth Corners utility using Base64 SVG mask\n * A simpler alternative to CSS Houdini Paint API\n */\n\n/**\n * Generate a smooth corners SVG path using superellipse formula\n * @param size - The size of the shape\n * @param n - The superellipse exponent (4 = squircle, 5 = iOS style)\n */\nconst generateSuperellipsePath = (size: number, n: number = 4): string => {\n const r = size / 2;\n const points: string[] = [];\n\n // Generate points for the superellipse\n for (let i = 0; i <= 360; i += 2) {\n const angle = (i * Math.PI) / 180;\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n\n // Superellipse formula\n const x = r * Math.sign(cosAngle) * Math.pow(Math.abs(cosAngle), 2 / n);\n const y = r * Math.sign(sinAngle) * Math.pow(Math.abs(sinAngle), 2 / n);\n\n points.push(`${r + x},${r + y}`);\n }\n\n return `M${points[0]}L${points.slice(1).join('L')}Z`;\n};\n\n/**\n * Create a Base64 encoded SVG mask for smooth corners\n * @param options - Configuration options\n */\nexport const createSmoothCornersMask = (\n options: {\n cornerValue?: number;\n size?: number;\n } = {},\n): string => {\n const { size = 100, cornerValue = 4 } = options;\n\n const path = generateSuperellipsePath(size, cornerValue);\n\n const svg = `\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"${path}\" fill=\"white\"/>\n </svg>\n `\n .trim()\n .replaceAll(/\\s+/g, ' ');\n\n return `data:image/svg+xml;base64,${btoa(svg)}`;\n};\n\n/**\n * Create a Base64 encoded SVG mask for circle shape\n * @param options - Configuration options\n */\nexport const createCircleMask = (\n options: {\n size?: number;\n } = {},\n): string => {\n const { size = 100 } = options;\n const r = size / 2;\n\n const svg = `\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"${r}\" cy=\"${r}\" r=\"${r}\" fill=\"white\"/>\n </svg>\n `\n .trim()\n .replaceAll(/\\s+/g, ' ');\n\n return `data:image/svg+xml;base64,${btoa(svg)}`;\n};\n\n/**\n * Create a Base64 encoded SVG mask for rounded rectangle\n * @param options - Configuration options\n */\nexport const createRoundedRectMask = (\n options: {\n borderRadius?: number;\n size?: number;\n } = {},\n): string => {\n const { size = 100, borderRadius = 15 } = options;\n\n const svg = `\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0\" y=\"0\" width=\"${size}\" height=\"${size}\" rx=\"${borderRadius}\" ry=\"${borderRadius}\" fill=\"white\"/>\n </svg>\n `\n .trim()\n .replaceAll(/\\s+/g, ' ');\n\n return `data:image/svg+xml;base64,${btoa(svg)}`;\n};\n\n/**\n * Predefined smooth corners masks for common corner values\n */\nexport const SMOOTH_CORNER_MASKS = {\n // Basic shapes\n circle: createCircleMask(),\n // Superellipse shapes\n ios: createSmoothCornersMask({ cornerValue: 5 }),\n\n sharp: createSmoothCornersMask({ cornerValue: 6 }),\n smooth: createSmoothCornersMask({ cornerValue: 3 }),\n square: createRoundedRectMask({ borderRadius: 15 }),\n squircle: createSmoothCornersMask({ cornerValue: 4 }),\n} as const;\n\n/**\n * CSS helper to apply smooth corners mask\n */\nexport const getSmoothCornersMaskStyle = (\n cornerType: keyof typeof SMOOTH_CORNER_MASKS = 'squircle',\n): CSSProperties => {\n return {\n // WebKit prefix for better browser support\n WebkitMaskImage: `url(\"${SMOOTH_CORNER_MASKS[cornerType]}\")`,\n\n WebkitMaskPosition: 'center',\n\n WebkitMaskRepeat: 'no-repeat',\n\n WebkitMaskSize: '100% 100%',\n\n maskImage: `url(\"${SMOOTH_CORNER_MASKS[cornerType]}\")`,\n maskPosition: 'center',\n maskRepeat: 'no-repeat',\n maskSize: '100% 100%',\n } as CSSProperties;\n};\n","'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { memo, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles, variants } from './style';\nimport type { GuideCardProps } from './type';\n\nconst GuideCard = memo<GuideCardProps>(\n ({\n cover,\n onClose,\n shadow,\n closable = true,\n afterClose,\n alt,\n className,\n title,\n desc,\n width,\n styles: customStyles,\n height,\n coverProps,\n variant = 'filled',\n closeIconProps,\n classNames,\n ref,\n ...rest\n }) => {\n const [show, setShow] = useState(true);\n const { isDarkMode } = useThemeMode();\n\n if (!show) return null;\n\n return (\n <Flexbox\n className={cx(variants({ isDarkMode, shadow, variant }), className)}\n ref={ref}\n {...rest}\n >\n {closable && (\n <ActionIcon\n size={'small'}\n {...closeIconProps}\n className={cx(styles.close, closeIconProps?.className)}\n icon={X}\n onClick={(e) => {\n setShow(false);\n onClose?.(e);\n afterClose?.();\n }}\n />\n )}\n {cover && (\n <Img\n alt={alt}\n className={cx(styles.cover, classNames?.cover)}\n height={height}\n src={cover}\n style={customStyles?.cover}\n width={width}\n {...coverProps}\n />\n )}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n {title && <div className={styles.title}>{title}</div>}\n {desc && <div className={styles.desc}>{desc}</div>}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nGuideCard.displayName = 'GuideCard';\n\nexport default GuideCard;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n close: css`\n position: absolute;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n `,\n content: css`\n padding: 16px;\n `,\n cover: css`\n align-self: center;\n `,\n desc: css`\n color: ${cssVar.colorTextDescription};\n `,\n filledDark: css`\n ${lobeStaticStylish.variantFilledWithoutHover};\n background: linear-gradient(\n to bottom,\n ${cssVar.colorFillTertiary},\n ${cssVar.colorFillQuaternary}\n );\n `,\n filledLight: css`\n ${lobeStaticStylish.variantFilledWithoutHover};\n background: linear-gradient(\n to bottom,\n ${cssVar.colorFillQuaternary},\n ${cssVar.colorFillTertiary}\n );\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n overflow: hidden;\n border-radius: ${cssVar.borderRadiusLG};\n `,\n shadow: lobeStaticStylish.shadow,\n title: css`\n font-size: 16px;\n font-weight: bold;\n `,\n}));\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.filledDark,\n isDarkMode: true,\n variant: 'filled',\n },\n {\n class: styles.filledLight,\n isDarkMode: false,\n variant: 'filled',\n },\n ],\n defaultVariants: {\n isDarkMode: false,\n shadow: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n isDarkMode: {\n false: null,\n true: null,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n variant: {\n borderless: styles.borderless,\n filled: null,\n outlined: styles.outlined,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { HeaderProps } from './type';\n\nconst Header = memo<HeaderProps>(\n ({\n actionsClassName,\n navClassName,\n logoClassName,\n nav,\n logo,\n actions,\n actionsStyle,\n logoStyle,\n navStyle,\n className,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n\n return (\n <Flexbox\n align={'center'}\n as={'section'}\n className={cx(styles.root, className)}\n distribution={'space-between'}\n horizontal\n ref={ref}\n width={'auto'}\n {...rest}\n >\n {mobile ? (\n <>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...navStyle }}>\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n className={cx(styles.left, logoClassName)}\n horizontal\n style={{ flex: 1, overflow: 'hidden', ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...actionsStyle }}>\n {actions}\n </Flexbox>\n </>\n ) : (\n <>\n <Flexbox\n className={cx(styles.left, logoClassName)}\n horizontal\n style={{ flex: 0, ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox\n className={navClassName}\n style={{ flex: 1, marginLeft: 48, overflow: 'hidden', ...navStyle }}\n >\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n className={cx(styles.right, actionsClassName)}\n flex={1}\n horizontal\n justify={'space-between'}\n style={actionsStyle}\n >\n <div />\n <Flexbox align={'center'} gap={8} horizontal>\n {actions}\n </Flexbox>\n </Flexbox>\n </>\n )}\n </Flexbox>\n );\n },\n);\n\nHeader.displayName = 'Header';\n\nexport default Header;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n left: css`\n z-index: 10;\n `,\n right: css`\n z-index: 10;\n\n &-aside {\n display: flex;\n align-items: center;\n\n ${responsive.sm} {\n justify-content: center;\n\n margin-block: 8px;\n margin-inline: 16px;\n padding-block-start: 24px;\n border-block-start: 1px solid ${cssVar.colorBorder};\n }\n }\n `,\n root: css`\n grid-area: head;\n align-self: stretch;\n\n width: 100%;\n height: 64px;\n padding-block: 0;\n padding-inline: 24px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n\n background-color: color-mix(in srgb, ${cssVar.colorBgLayout} 40%, transparent);\n\n ${responsive.sm} {\n padding-block: 0;\n padding-inline: 12px;\n }\n `,\n}));\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName } from '@/Highlighter/const';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport SyntaxHighlighter from './SyntaxHighlighter';\nimport { styles, variants } from './style';\nimport type { HighlighterProps } from './type';\n\nexport const Highlighter = memo<HighlighterProps>(\n ({\n animated,\n fullFeatured,\n actionIconSize,\n children,\n language = 'markdown',\n className,\n classNames,\n styles: customStyles,\n copyable = true,\n showLanguage = true,\n variant = 'filled',\n shadow,\n wrap,\n bodyRender,\n actionsRender,\n enableTransformer,\n theme,\n icon,\n fileName,\n allowChangeLanguage,\n defaultExpand = true,\n ...rest\n }) => {\n const [lang, setLang] = useState(language);\n\n // Safely handle children with boundary check\n const tirmedChildren = useMemo(() => {\n if (children === null || children === undefined) return '';\n if (typeof children !== 'string') {\n console.warn('Highlighter: children should be a string, received:', typeof children);\n return String(children);\n }\n return children.trim();\n }, [children]);\n\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton\n content={getCopyContent}\n glass\n size={actionIconSize || { blockSize: 28, size: 16 }}\n />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n language: lang,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, lang, originalActions, tirmedChildren]);\n\n const originalBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n enableTransformer={enableTransformer}\n language={lang?.toLowerCase()}\n style={{\n height: '100%',\n ...customStyles?.content,\n }}\n theme={theme}\n variant={variant}\n >\n {tirmedChildren}\n </SyntaxHighlighter>\n ),\n [\n animated,\n enableTransformer,\n lang,\n theme,\n tirmedChildren,\n variant,\n customStyles?.content,\n customStyles?.content,\n ],\n );\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const body = useMemo(() => {\n if (!bodyRender) return originalBody;\n return bodyRender({ content: tirmedChildren, language: lang, originalNode: originalBody });\n }, [bodyRender, lang, originalBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n allowChangeLanguage={allowChangeLanguage}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n icon={icon}\n language={language}\n setLanguage={setLang}\n shadow={shadow}\n showLanguage={showLanguage}\n styles={customStyles}\n variant={variant}\n wrap={wrap}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n {...rest}\n >\n <Flexbox align={'center'} className={styles.actions} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n {showLanguage && language && <Tag className={styles.lang}>{displayName}</Tag>}\n {body}\n </Flexbox>\n );\n },\n);\n\nHighlighter.displayName = 'Highlighter';\n\nexport default Highlighter;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName, getCodeLanguageFilename } from '@/Highlighter/const';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport LangSelect from './LangSelect';\nimport { bodyVariants, headerVariants, variants } from './style';\nimport { HighlighterProps } from './type';\n\ninterface HeaderLanguageProps {\n allowChangeLanguage: boolean;\n displayName: string;\n fileName?: string;\n filetype: string;\n icon?: ReactNode;\n language: string;\n setLanguage?: (language: string) => void;\n showLanguage?: boolean;\n}\n\nconst HeaderLanguage = memo<HeaderLanguageProps>(\n ({\n allowChangeLanguage,\n displayName,\n fileName,\n filetype,\n icon,\n language,\n setLanguage,\n showLanguage,\n }) => {\n if (!showLanguage) return null;\n\n if (allowChangeLanguage && !fileName)\n return <LangSelect onSelect={setLanguage} value={language.toLowerCase()} />;\n\n return (\n <Flexbox\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n horizontal\n justify={'flex-start'}\n paddingInline={8}\n >\n {icon || (\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={filetype}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n )}\n <Text ellipsis fontSize={13}>\n {displayName}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.allowChangeLanguage === next.allowChangeLanguage &&\n prev.displayName === next.displayName &&\n prev.fileName === next.fileName &&\n prev.filetype === next.filetype &&\n prev.icon === next.icon &&\n prev.language === next.language &&\n prev.setLanguage === next.setLanguage &&\n prev.showLanguage === next.showLanguage,\n);\n\ninterface HighlighterFullFeaturedProps extends Omit<\n HighlighterProps,\n 'children' | 'bodyRender' | 'enableTransformer'\n> {\n content: string;\n setLanguage?: (language: string) => void;\n}\n\nexport const HighlighterFullFeatured = memo<HighlighterFullFeaturedProps & { children: ReactNode }>(\n ({\n content,\n language,\n setLanguage,\n showLanguage,\n className,\n classNames,\n styles: customStyles,\n style,\n allowChangeLanguage = false,\n fileName,\n icon,\n actionsRender,\n copyable,\n variant,\n shadow,\n wrap,\n defaultExpand = true,\n children,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n language,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, language, originalActions]);\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const filetype = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageFilename(language);\n }, [fileName, language]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n style={style}\n {...rest}\n >\n <Flexbox\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n horizontal\n justify={'space-between'}\n onClick={handleToggleExpand}\n style={customStyles?.header}\n >\n <HeaderLanguage\n allowChangeLanguage={allowChangeLanguage}\n displayName={displayName}\n fileName={fileName}\n filetype={filetype}\n icon={icon}\n language={language}\n setLanguage={setLanguage}\n showLanguage={showLanguage}\n />\n <Flexbox align={'center'} flex={'none'} gap={4} horizontal onClick={stopPropagation}>\n <Flexbox align={'center'} className={'panel-actions'} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n onClick={handleToggleExpand}\n size={'small'}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default HighlighterFullFeatured;\n","'use client';\n\nimport { Select, type SelectProps } from 'antd';\nimport { memo, useMemo } from 'react';\nimport { bundledLanguagesInfo } from 'shiki';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nexport const LangSelect = memo<Omit<SelectProps, 'options'>>(({ ...rest }) => {\n const options = useMemo(\n () => [\n {\n aliases: ['text', 'txt'],\n label: (\n <Flexbox align={'center'} gap={4} horizontal>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.txt`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n Plaintext\n </Text>\n </Flexbox>\n ),\n value: 'plaintext',\n },\n ...bundledLanguagesInfo.map((item) => ({\n aliases: item.aliases,\n label: (\n <Flexbox align={'center'} gap={4} horizontal>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.${item?.aliases?.[0] || item.id}`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n {item.name}\n </Text>\n </Flexbox>\n ),\n title: (item.aliases || [item.id])\n .filter(Boolean)\n .map((item) => `*.${item}`)\n .join(','),\n value: item.id,\n })),\n ],\n [],\n );\n\n return (\n <Select\n className={'languageTitle'}\n onClick={stopPropagation}\n options={options}\n showSearch\n size={'small'}\n style={{\n maxWidth: 240,\n width: '100%',\n }}\n suffixIcon={false}\n variant={'borderless'}\n {...rest}\n />\n );\n});\n\nexport default LangSelect;\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\n// 动态类名常量(用于 className)\nexport const actionsHoverCls = 'ant-highlighter-highlighter-hover-actions';\nexport const langHoverCls = 'ant-highlighter-highlighter-hover-lang';\nexport const expandCls = 'ant-highlighter-highlighter-body-expand';\nexport const prefix = 'ant-highlighter';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actions: cx(\n actionsHoverCls,\n css`\n position: absolute;\n z-index: 2;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n\n opacity: 0;\n `,\n ),\n bodyCollapsed: css`\n height: 0;\n opacity: 0;\n `,\n bodyExpand: cx(expandCls),\n bodyRoot: css`\n overflow: hidden;\n transition: opacity 0.25s ${cssVar.motionEaseOut};\n `,\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: cx(\n lobeStaticStylish.variantFilledWithoutHover,\n css`\n background: ${cssVar.colorFillQuaternary};\n `,\n ),\n headerBorderless: css`\n padding-inline: 0;\n `,\n\n headerFilled: css`\n background: transparent;\n `,\n\n headerOutlined: css`\n & + .${expandCls} {\n border-block-start: 1px solid ${cssVar.colorFillQuaternary};\n }\n `,\n\n headerRoot: css`\n cursor: pointer;\n position: relative;\n padding: 4px;\n `,\n\n lang: cx(\n langHoverCls,\n lobeStaticStylish.blur,\n css`\n position: absolute;\n z-index: 2;\n inset-block-end: 8px;\n inset-inline-end: 8px;\n\n font-family: ${cssVar.fontFamilyCode};\n color: ${cssVar.colorTextSecondary};\n\n opacity: 0;\n background: ${cssVar.colorFillQuaternary};\n\n transition: opacity 0.1s;\n `,\n ),\n nowrap: css`\n pre,\n code {\n text-wrap: nowrap;\n }\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: cx(\n prefix,\n css`\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n border-radius: ${cssVar.borderRadius};\n\n transition: background-color 100ms ${cssVar.motionEaseOut};\n\n .languageTitle {\n opacity: 0.5;\n filter: grayscale(100%);\n transition:\n opacity,\n grayscale 0.2s ${cssVar.motionEaseInOut};\n }\n\n .panel-actions {\n opacity: 0;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n }\n\n &:hover {\n .languageTitle {\n opacity: 1;\n filter: grayscale(0%);\n }\n\n .panel-actions {\n opacity: 1;\n }\n\n .${actionsHoverCls} {\n opacity: 1;\n }\n\n .${langHoverCls} {\n opacity: 1;\n }\n }\n\n pre {\n height: 100%;\n font-size: 12px;\n }\n\n code {\n background: transparent !important;\n }\n `,\n ),\n shadow: lobeStaticStylish.shadow,\n wrap: css`\n pre,\n code {\n text-wrap: wrap;\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n variant: 'filled',\n wrap: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n wrap: {\n false: styles.nowrap,\n true: styles.wrap,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const headerVariants = cva(styles.headerRoot, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: cx(styles.headerFilled, styles.headerOutlined),\n outlined: styles.headerOutlined,\n borderless: styles.headerBorderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const bodyVariants = cva(styles.bodyRoot, {\n defaultVariants: {\n expand: true,\n },\n variants: {\n expand: {\n false: styles.bodyCollapsed,\n true: styles.bodyExpand,\n },\n },\n});\n","import { renderToString } from 'katex';\n\n// ============================================================================\n// Utility Classes\n// ============================================================================\n\n/**\n * PlaceholderManager - Manages temporary replacement and restoration of protected content\n * Used to protect code blocks and LaTeX expressions during preprocessing\n */\nclass PlaceholderManager {\n private placeholders: string[] = [];\n private prefix: string;\n\n constructor(prefix = 'PROTECTED') {\n this.prefix = prefix;\n }\n\n add(content: string): string {\n const index = this.placeholders.length;\n this.placeholders.push(content);\n return `<<${this.prefix}_${index}>>`;\n }\n\n restore(text: string): string {\n return text.replaceAll(new RegExp(`<<${this.prefix}_(\\\\d+)>>`, 'g'), (_, index) => {\n return this.placeholders[Number.parseInt(index)] || '';\n });\n }\n\n clear(): void {\n this.placeholders = [];\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n// Helper: replace unescaped pipes with \\vert within a LaTeX math fragment\nconst replaceUnescapedPipes = (formula: string): string =>\n // Use \\vert{} so the control sequence terminates before the next token\n formula.replaceAll(/(?<!\\\\)\\|/g, '\\\\vert{}');\n\n/**\n * Converts LaTeX bracket delimiters to dollar sign delimiters.\n * Converts \\[...\\] to $$...$$ and \\(...\\) to $...$\n * Preserves code blocks during the conversion.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with LaTeX bracket delimiters converted to dollar sign delimiters\n */\nexport function convertLatexDelimiters(text: string): string {\n const pattern = /(```[\\S\\s]*?```|`.*?`)|\\\\\\[([\\S\\s]*?[^\\\\])\\\\]|\\\\\\((.*?)\\\\\\)/g;\n return text.replaceAll(\n pattern,\n (\n match: string,\n codeBlock: string | undefined,\n squareBracket: string | undefined,\n roundBracket: string | undefined,\n ): string => {\n if (codeBlock !== undefined) {\n return codeBlock;\n } else if (squareBracket !== undefined) {\n return `$$${squareBracket}$$`;\n } else if (roundBracket !== undefined) {\n return `$${roundBracket}$`;\n }\n return match;\n },\n );\n}\n\n/**\n * Escapes mhchem commands in LaTeX expressions to ensure proper rendering.\n *\n * @param text The input string containing LaTeX expressions with mhchem commands\n * @returns The string with escaped mhchem commands\n */\nexport function escapeMhchemCommands(text: string) {\n return text.replaceAll('$\\\\ce{', '$\\\\\\\\ce{').replaceAll('$\\\\pu{', '$\\\\\\\\pu{');\n}\n\n/**\n * Escapes pipe characters within LaTeX expressions to prevent them from being interpreted\n * as table column separators in markdown tables.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with pipe characters escaped in LaTeX expressions\n */\nexport function escapeLatexPipes(text: string): string {\n // Replace unescaped '|' inside LaTeX math spans with '\\vert' so that\n // remark-gfm table parsing won't treat them as column separators.\n // Leave code blocks/inline code untouched.\n // Also ignore escaped dollars (\\$) which are currency symbols\n\n // Process code blocks first to protect them\n const codeBlocks: string[] = [];\n let content = text.replaceAll(/(```[\\S\\s]*?```|`[^\\n`]*`)/g, (match) => {\n codeBlocks.push(match);\n return `<<CODE_${codeBlocks.length - 1}>>`;\n });\n\n // For display math, allow multiline\n content = content.replaceAll(/\\$\\$([\\S\\s]*?)\\$\\$/g, (match, display) => {\n return `$$${replaceUnescapedPipes(display)}$$`;\n });\n\n // For inline math, use non-greedy match that DOES NOT cross newlines\n // This prevents issues in tables where $ might appear in different cells\n content = content.replaceAll(/(?<!\\\\)\\$(?!\\$)([^\\n$]*?)(?<!\\\\)\\$(?!\\$)/g, (match, inline) => {\n return `$${replaceUnescapedPipes(inline)}$`;\n });\n\n // Restore code blocks\n content = content.replaceAll(/<<CODE_(\\d+)>>/g, (_, index) => {\n return codeBlocks[Number.parseInt(index)];\n });\n\n return content;\n}\n\n/**\n * Escapes underscores within \\text{...} commands in LaTeX expressions\n * that are not already escaped.\n * For example, \\text{node_domain} becomes \\text{node\\_domain},\n * but \\text{node\\_domain} remains \\text{node\\_domain}.\n *\n * @param text The input string potentially containing LaTeX expressions\n * @returns The string with unescaped underscores escaped within \\text{...} commands\n */\nexport function escapeTextUnderscores(text: string): string {\n return text.replaceAll(/\\\\text{([^}]*)}/g, (match, textContent: string) => {\n // textContent is the content within the braces, e.g., \"node_domain\" or \"already\\_escaped\"\n // Replace underscores '_' with '\\_' only if they are NOT preceded by a backslash '\\'.\n // The (?<!\\\\) is a negative lookbehind assertion that ensures the character before '_' is not a '\\'.\n const escapedTextContent = textContent.replaceAll(/(?<!\\\\)_/g, '\\\\_');\n return `\\\\text{${escapedTextContent}}`;\n });\n}\n\n/**\n * Escapes dollar signs that appear to be currency symbols to prevent them from being\n * interpreted as LaTeX math delimiters.\n *\n * This function identifies currency patterns such as:\n * - $20, $100, $1,000\n * - $20-50, $100+\n * - Patterns within markdown tables\n *\n * @param text The input string containing potential currency symbols\n * @returns The string with currency dollar signs escaped\n */\nexport function escapeCurrencyDollars(text: string): string {\n // Protect code blocks and existing LaTeX expressions from processing\n const manager = new PlaceholderManager('PROTECTED');\n\n let content = text.replaceAll(\n // Match patterns to protect (in order):\n // 1. Code blocks: ```...```\n // 2. Inline code: `...`\n // 3. Display math: $$...$$\n // 4. Inline math with LaTeX commands: $...\\...$ (must contain backslash to distinguish from currency)\n // 5. Simple number formulas: $1$, $10$, $100$ (pure digits in math mode)\n // 6. Number lists in math mode: $1,-1,0$ or $1,2,3$ (comma-separated numbers, possibly negative)\n // 7. LaTeX bracket notation: \\[...\\]\n // 8. LaTeX parenthesis notation: \\(...\\)\n /(```[\\S\\s]*?```|`[^\\n`]*`|\\$\\$[\\S\\s]*?\\$\\$|(?<!\\\\)\\$(?!\\$)(?=[\\S\\s]*?\\\\)[\\S\\s]*?(?<!\\\\)\\$(?!\\$)|\\$\\d+\\$|\\$-?\\d+(?:,-?\\d+)+\\$|\\\\\\[[\\S\\s]*?\\\\]|\\\\\\(.*?\\\\\\))/g,\n (match) => manager.add(match),\n );\n\n // Escape dollar signs that are clearly currency:\n // - $ followed by a digit\n // - Not preceded by another $ (to avoid breaking $$)\n // - Not followed immediately by another $ (to avoid breaking $1$ LaTeX)\n // - Followed by number patterns with optional commas, decimals, ranges, or plus signs\n // Match patterns like: $20, $1,000, $19.99, $20-50, $300+, $1,000-2,000+\n // But NOT: $1$, $2$ (these are LaTeX formulas)\n // In the replacement: \\\\ = backslash, $$ = literal $, $1 = capture group 1\n content = content.replaceAll(\n /(?<!\\$)\\$(\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?(?:-\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?)?\\+?)(?!\\$)/g,\n '\\\\$$$1',\n );\n\n // Restore protected content\n content = manager.restore(content);\n\n return content;\n}\n\n// Old simple preprocessLaTeX has been replaced by the comprehensive version below\n// The new preprocessLaTeX provides the same default behavior with optional advanced featuresgit\n\n/**\n * Extracts the LaTeX formula after the last $$ delimiter if there's an odd number of $$ delimiters.\n *\n * @param text The input string containing LaTeX formulas\n * @returns The content after the last $$ if there's an odd number of $$, otherwise an empty string\n */\nconst extractIncompleteFormula = (text: string) => {\n // Count the number of $$ delimiters\n const dollarsCount = (text.match(/\\$\\$/g) || []).length;\n\n // If odd number of $$ delimiters, extract content after the last $$\n if (dollarsCount % 2 === 1) {\n const match = text.match(/\\$\\$([^]*)$/);\n return match ? match[1] : '';\n }\n\n // If even number of $$ delimiters, return empty string\n return '';\n};\n\n/**\n * Checks if the last LaTeX formula in the text is renderable.\n * Only validates the formula after the last $$ if there's an odd number of $$.\n *\n * @param text The input string containing LaTeX formulas\n * @returns True if the last formula is renderable or if there's no incomplete formula\n */\nexport const isLastFormulaRenderable = (text: string) => {\n const formula = extractIncompleteFormula(text);\n\n // If no incomplete formula, return true\n if (!formula) return true;\n\n // Try to render the last formula\n try {\n renderToString(formula, {\n displayMode: true,\n throwOnError: true,\n });\n return true;\n } catch (error) {\n console.error(`LaTeX formula rendering error: ${error}`);\n return false;\n }\n};\n\n// ============================================================================\n// Advanced Preprocessing Functions\n// ============================================================================\n\n/**\n * Fixes common LaTeX syntax errors automatically\n * - Balances unmatched braces\n * - Balances \\left and \\right delimiters\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with fixed LaTeX expressions\n */\nexport function fixCommonLaTeXErrors(text: string): string {\n return text.replaceAll(/(\\$\\$[\\S\\s]*?\\$\\$|\\$[\\S\\s]*?\\$)/g, (match) => {\n let fixed = match;\n\n // Fix unbalanced braces\n const openBraces = (fixed.match(/(?<!\\\\){/g) || []).length;\n const closeBraces = (fixed.match(/(?<!\\\\)}/g) || []).length;\n if (openBraces > closeBraces) {\n const diff = openBraces - closeBraces;\n const closingBraces = '}'.repeat(diff);\n // Insert before the closing delimiter\n fixed = fixed.replace(/(\\$\\$?)$/, closingBraces + '$1');\n }\n\n // Fix unbalanced \\left and \\right\n const leftDelims = (fixed.match(/\\\\left[(.<[{|]/g) || []).length;\n const rightDelims = (fixed.match(/\\\\right[).>\\]|}]/g) || []).length;\n if (leftDelims > rightDelims) {\n const diff = leftDelims - rightDelims;\n const rightDots = '\\\\right.'.repeat(diff);\n fixed = fixed.replace(/(\\$\\$?)$/, rightDots + '$1');\n }\n\n return fixed;\n });\n}\n\n/**\n * Normalizes whitespace in LaTeX expressions\n * - Removes extra spaces around $ delimiters\n * - Normalizes multiple spaces to single space inside formulas\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with normalized whitespace\n */\nexport function normalizeLatexSpacing(text: string): string {\n let result = text;\n\n // Remove spaces inside $ delimiters (at the edges)\n result = result.replaceAll(/\\$\\s+/g, '$');\n result = result.replaceAll(/\\s+\\$/g, '$');\n result = result.replaceAll(/\\$\\$\\s+/g, '$$');\n result = result.replaceAll(/\\s+\\$\\$/g, '$$');\n\n // Normalize multiple spaces inside formulas to single space\n result = result.replaceAll(/(\\$\\$[\\S\\s]*?\\$\\$|\\$[\\S\\s]*?\\$)/g, (match) => {\n return match.replaceAll(/\\s{2,}/g, ' ');\n });\n\n return result;\n}\n\n/**\n * Validates all LaTeX expressions in the text\n * Returns detailed information about validation results\n *\n * @param text The input string containing LaTeX expressions\n * @returns Validation results with errors if any\n */\nexport function validateLatexExpressions(text: string): {\n errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }>;\n totalExpressions: number;\n valid: boolean;\n} {\n const errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }> = [];\n\n let totalExpressions = 0;\n const pattern = /\\$\\$([\\S\\s]*?)\\$\\$|(?<!\\\\)\\$(?!\\$)([\\S\\s]*?)(?<!\\\\)\\$(?!\\$)/g;\n let match;\n\n while ((match = pattern.exec(text)) !== null) {\n totalExpressions++;\n const formula = match[1] || match[2];\n const isDisplay = match[0].startsWith('$$');\n\n try {\n renderToString(formula, {\n displayMode: isDisplay,\n strict: 'warn',\n throwOnError: true,\n trust: false,\n });\n } catch (error) {\n errors.push({\n formula: formula.slice(0, 50) + (formula.length > 50 ? '...' : ''),\n message: error instanceof Error ? error.message : String(error),\n position: match.index,\n type: isDisplay ? 'display' : 'inline',\n });\n }\n }\n\n return {\n errors,\n totalExpressions,\n valid: errors.length === 0,\n };\n}\n\n/**\n * Handles CJK (Chinese, Japanese, Korean) characters mixed with LaTeX\n * Optionally adds spaces between CJK characters and LaTeX expressions for better rendering\n *\n * @param text The input string\n * @param addSpaces Whether to add spaces between CJK and LaTeX (default: false)\n * @returns The processed string\n */\nexport function handleCJKWithLatex(text: string, addSpaces = false): string {\n if (!addSpaces) return text;\n\n let result = text;\n\n // Add space between CJK character and opening $\n result = result.replaceAll(/([\\u3040-\\u30FF\\u4E00-\\u9FA5])(\\$)/g, '$1 $2');\n\n // Add space between closing $ and CJK character\n result = result.replaceAll(/(\\$)([\\u3040-\\u30FF\\u4E00-\\u9FA5])/g, '$1 $2');\n\n return result;\n}\n\n// ============================================================================\n// Advanced Preprocessing Options\n// ============================================================================\n\nexport interface AdvancedPreprocessOptions {\n /** Add spaces between CJK and LaTeX (default: false, requires handleCJK: true) */\n addCJKSpaces?: boolean;\n /** Convert bracket notation \\[...\\] to $$...$$ (default: true) */\n convertBrackets?: boolean;\n /** Enable currency escaping (default: true) */\n escapeCurrency?: boolean;\n /** Escape mhchem commands (default: true) */\n escapeMhchem?: boolean;\n /** Escape pipe symbols in LaTeX (default: true) */\n escapePipes?: boolean;\n /** Escape underscores in \\text{} (default: true) */\n escapeUnderscores?: boolean;\n /** Automatically fix common LaTeX errors (default: false) */\n fixErrors?: boolean;\n /** Handle CJK characters (default: false) */\n handleCJK?: boolean;\n /** Normalize whitespace (default: false) */\n normalizeSpacing?: boolean;\n /** Throw error on validation failure (default: false, requires validate: true) */\n throwOnValidationError?: boolean;\n /** Validate LaTeX syntax (default: false) */\n validate?: boolean;\n}\n\n/**\n * Comprehensive LaTeX preprocessing with configurable options\n *\n * This is the main preprocessing function that handles:\n * - Currency symbol escaping (e.g., $20 → \\$20)\n * - LaTeX delimiter conversion (\\[...\\] → $$...$$)\n * - Special character escaping (pipes, underscores, mhchem)\n * - Optional error fixing and validation\n * - Optional CJK character handling\n *\n * @param text The input string containing LaTeX and Markdown\n * @param options Configuration options for fine-grained control\n * @returns The preprocessed string\n *\n * @example\n * ```ts\n * // Default behavior (same as old preprocessLaTeX)\n * preprocessLaTeX('向量$90^\\\\circ$,非 $0^\\\\circ$ 和 $180^\\\\circ$')\n *\n * // With custom options\n * preprocessLaTeX(text, {\n * fixErrors: true,\n * validate: true,\n * handleCJK: true\n * })\n * ```\n */\nexport function preprocessLaTeX(text: string, options: AdvancedPreprocessOptions = {}): string {\n const {\n addCJKSpaces = false,\n convertBrackets = true,\n escapeCurrency = true,\n escapeMhchem = true,\n escapePipes = true,\n escapeUnderscores = true,\n fixErrors = false,\n handleCJK = false,\n normalizeSpacing = false,\n throwOnValidationError = false,\n validate = false,\n } = options;\n\n let content = text;\n\n // Phase 1: Currency escaping (if enabled)\n if (escapeCurrency) {\n content = escapeCurrencyDollars(content);\n }\n\n // Phase 2: Bracket conversion (if enabled)\n if (convertBrackets) {\n content = convertLatexDelimiters(content);\n }\n\n // Phase 3: LaTeX-specific escaping\n if (escapeMhchem) {\n content = escapeMhchemCommands(content);\n }\n\n if (escapePipes) {\n content = escapeLatexPipes(content);\n }\n\n if (escapeUnderscores) {\n content = escapeTextUnderscores(content);\n }\n\n // Phase 4: Error fixing (if enabled)\n if (fixErrors) {\n content = fixCommonLaTeXErrors(content);\n }\n\n // Phase 5: Whitespace normalization (if enabled)\n if (normalizeSpacing) {\n content = normalizeLatexSpacing(content);\n }\n\n // Phase 6: CJK handling (if enabled)\n if (handleCJK) {\n content = handleCJKWithLatex(content, addCJKSpaces);\n }\n\n // Phase 7: Validation (if enabled)\n if (validate) {\n const validation = validateLatexExpressions(content);\n if (!validation.valid) {\n const errorMessage = `LaTeX validation failed (${validation.errors.length}/${validation.totalExpressions} expressions have errors):\\n${validation.errors.map((e) => ` - [${e.type}] at position ${e.position}: ${e.message}\\n Formula: ${e.formula}`).join('\\n')}`;\n\n if (throwOnValidationError) {\n throw new Error(errorMessage);\n } else {\n console.warn(errorMessage);\n }\n }\n }\n\n return content;\n}\n\n/**\n * Strict preprocessing mode - enables all safety features and validations\n * Use this when you want maximum correctness and are willing to accept the performance cost\n *\n * @param text The input string\n * @returns The preprocessed string with all features enabled\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXStrict(userInput)\n * // Enables: error fixing, validation, CJK handling, space normalization\n * ```\n */\nexport function preprocessLaTeXStrict(text: string): string {\n return preprocessLaTeX(text, {\n addCJKSpaces: false, // Usually don't want extra spaces\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: true,\n escapePipes: true,\n escapeUnderscores: true,\n fixErrors: true,\n handleCJK: true,\n normalizeSpacing: true,\n throwOnValidationError: false, // Warn but don't throw\n validate: true,\n });\n}\n\n/**\n * Minimal preprocessing mode - only essential operations\n * Use this for better performance when you control the input\n *\n * @param text The input string\n * @returns The preprocessed string with minimal processing\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXMinimal(trustedInput)\n * // Only escapes currency and converts brackets\n * ```\n */\nexport function preprocessLaTeXMinimal(text: string): string {\n return preprocessLaTeX(text, {\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: false,\n escapePipes: false,\n escapeUnderscores: false,\n fixErrors: false,\n handleCJK: false,\n normalizeSpacing: false,\n validate: false,\n });\n}\n","import { preprocessLaTeX } from './latex';\n\n// Cache configuration\nconst CACHE_SIZE = 50;\n\n/**\n * Cache for storing processed content to avoid redundant processing\n */\nexport const contentCache = new Map<string, string>();\n\n/**\n * Adds content to the cache with size limitation\n * Removes oldest entry if cache size limit is reached\n *\n * @param key The cache key\n * @param value The processed content to store\n */\nexport const addToCache = (key: string, value: string) => {\n if (contentCache.size >= CACHE_SIZE) {\n // Remove the oldest cache entry\n const firstKey = contentCache.keys().next().value;\n if (firstKey) contentCache.delete(firstKey);\n }\n contentCache.set(key, value);\n};\n\n/**\n * Transforms citation references in the format [n] to markdown links\n *\n * @param rawContent The markdown content with citation references\n * @param length The number of citations\n * @returns The content with citations transformed to markdown links\n */\nexport const transformCitations = (rawContent: string, length: number = 0) => {\n if (length === 0) return rawContent;\n\n // 生成引用索引\n const citationIndices = Array.from({ length })\n .fill('')\n .map((_, index) => index + 1);\n\n // 匹配所有潜在的引用\n const pattern = new RegExp(`\\\\[(${citationIndices.join('|')})\\\\]`, 'g');\n const matches: { id: string; index: number; length: number }[] = [];\n\n let match;\n while ((match = pattern.exec(rawContent)) !== null) {\n matches.push({\n id: match[1],\n index: match.index,\n length: match[0].length,\n });\n }\n\n // 识别所有需要排除的区域\n const excludedRanges: { end: number; start: number }[] = [];\n\n // 查找LaTeX块 $$...$$\n let latexBlockRegex = /\\$\\$([\\S\\s]*?)\\$\\$/g;\n while ((match = latexBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内LaTeX $...$\n let inlineLatexRegex = /\\$([^$]*?)\\$/g;\n while ((match = inlineLatexRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找代码块 ```...```\n let codeBlockRegex = /```([\\S\\s]*?)```/g;\n while ((match = codeBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内代码 `...`\n let inlineCodeRegex = /`([^`]*?)`/g;\n while ((match = inlineCodeRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 过滤掉在排除区域内的引用\n const validMatches = matches.filter((citation) => {\n return !excludedRanges.some(\n (range) => citation.index >= range.start && citation.index <= range.end,\n );\n });\n\n // 从后向前替换,避免索引变化问题\n let result = rawContent;\n for (let i = validMatches.length - 1; i >= 0; i--) {\n const citation = validMatches[i];\n const before = result.slice(0, Math.max(0, citation.index));\n const after = result.slice(Math.max(0, citation.index + citation.length));\n result = before + `[#citation-${citation.id}](citation-${citation.id})` + after;\n }\n\n // 处理连续引用\n return result.replaceAll('][', '] [');\n};\n\n/**\n * Preprocessing options for markdown content\n */\ninterface PreprocessOptions {\n citationsLength?: number;\n enableCustomFootnotes?: boolean;\n enableLatex?: boolean;\n}\n\nexport const preprocessMarkdownContent = (\n str: string,\n { enableCustomFootnotes, enableLatex, citationsLength }: PreprocessOptions = {},\n) => {\n let content = str;\n\n // Process LaTeX expressions\n if (enableLatex) {\n content = preprocessLaTeX(content);\n }\n\n // Process custom footnotes/citations\n if (enableCustomFootnotes) {\n content = transformCitations(content, citationsLength);\n }\n\n return content;\n};\n","'use client';\n\nimport type { InputRef } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { isEqual } from 'es-toolkit/compat';\nimport { Undo2Icon } from 'lucide-react';\nimport {\n type FocusEvent,\n type MouseEvent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useHotkeys, useRecordHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Hotkey from '@/Hotkey';\nimport { NORMATIVE_MODIFIER, checkIsAppleDevice, splitKeysByPlus } from '@/Hotkey/utils';\nimport hotkeyMessages from '@/i18n/resources/en/hotkey';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { styles, variants } from './style';\nimport type { HotkeyInputProps } from './type';\n\nconst HotkeyInput = memo<HotkeyInputProps>(\n ({\n value = '',\n defaultValue = '',\n resetValue = '',\n onChange,\n onConflict,\n placeholder,\n disabled,\n shadow,\n allowReset = true,\n style,\n className,\n hotkeyConflicts = [],\n variant,\n texts,\n isApple,\n onBlur,\n onReset,\n onFocus,\n }) => {\n const [isFocused, setIsFocused] = useState(false);\n const [hasConflict, setHasConflict] = useState(false);\n const [hasInvalidCombination, setHasInvalidCombination] = useState(false);\n const inputRef = useRef<InputRef>(null);\n const { isDarkMode } = useThemeMode();\n const { t } = useTranslation(hotkeyMessages);\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n const [hotkeyValue, setHotkeyValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange,\n value,\n });\n\n // 使用 useRecordHotkeys 处理快捷键录入\n const [recordedKeys, { start, stop, isRecording, resetKeys }] = useRecordHotkeys();\n\n useHotkeys(\n '*',\n () => {\n inputRef.current?.blur();\n },\n {\n enableOnContentEditable: true,\n enableOnFormTags: true,\n enabled: isRecording && !disabled,\n keydown: false,\n keyup: true,\n preventDefault: true,\n },\n );\n\n // 处理按键,保证格式正确:修饰键在前,最多一个非修饰键在后\n const formatKeys = useCallback((keysSet: Set<string>) => {\n const modifiers: string[] = [];\n const normalKeys: string[] = [];\n\n for (const key of keysSet) {\n // 处理不同表示的修饰键\n const normalizedKey: any = key.toLowerCase();\n if (NORMATIVE_MODIFIER.includes(normalizedKey)) {\n // 统一修饰键表示\n if (\n (!isAppleDevice && normalizedKey === 'ctrl') ||\n (isAppleDevice && normalizedKey === 'meta')\n ) {\n if (!modifiers.includes('mod')) modifiers.push('mod');\n } else if (!modifiers.includes(normalizedKey)) {\n modifiers.push(normalizedKey);\n }\n } else {\n normalKeys.push(key);\n }\n }\n\n // 至少需要一个修饰键\n if (modifiers.length === 0 && normalKeys.length > 0) {\n return { isValid: false, keys: [] };\n }\n\n // 只允许一个非修饰键,如果有多个,只保留最后一个\n const finalKey = normalKeys.length > 0 ? [normalKeys.at(-1)] : [];\n const shortcuts = [modifiers, finalKey];\n\n return {\n // 组合必须包含至少一个按键\n isValid: shortcuts.every((k) => k.length > 0),\n keys: shortcuts.flat(),\n };\n }, []);\n\n // 获取格式化后的按键字符串\n const { isValid, keys } = formatKeys(recordedKeys);\n const keysString = keys.join('+');\n\n // 检查快捷键冲突\n const checkHotkeyConflict = useCallback(\n (newHotkey: string): boolean => {\n return hotkeyConflicts\n .filter((conflictKey) => conflictKey !== resetValue)\n .some((conflictKey) => {\n const newKeys = splitKeysByPlus(newHotkey);\n const conflictKeys = splitKeysByPlus(conflictKey);\n return isEqual(newKeys, conflictKeys);\n });\n },\n [hotkeyConflicts],\n );\n\n // 当按键组合完成时处理结果\n useEffect(() => {\n if (recordedKeys.size > 0 && !isRecording) {\n if (!isValid) {\n setHasInvalidCombination(true);\n setHasConflict(false);\n return;\n }\n\n setHasInvalidCombination(false);\n const newKeysString = keysString;\n\n // 检查冲突\n const conflict = checkHotkeyConflict(newKeysString);\n if (conflict) {\n setHasConflict(true);\n onConflict?.(newKeysString);\n } else {\n setHasConflict(false);\n setHotkeyValue?.(newKeysString);\n }\n }\n }, [\n recordedKeys,\n isRecording,\n isValid,\n keysString,\n checkHotkeyConflict,\n setHotkeyValue,\n onConflict,\n ]);\n\n // 处理输入框焦点\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n if (disabled) return;\n setIsFocused(true);\n setHasConflict(false);\n setHasInvalidCombination(false);\n start(); // 开始记录\n onFocus?.(e);\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n stop(); // 停止记录\n onBlur?.(e);\n };\n\n // 重置功能\n const handleReset = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setHotkeyValue?.(resetValue);\n resetKeys();\n setHasConflict(false);\n setHasInvalidCombination(false);\n setIsFocused(false);\n stop(); // 停止记录\n onReset?.(hotkeyValue, resetValue);\n };\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled || isFocused) return;\n inputRef.current?.focus();\n };\n\n const placeholderText = placeholder ?? t('hotkey.placeholder');\n const resetTitle = texts?.reset ?? t('hotkey.reset');\n const conflictText = texts?.conflicts ?? t('hotkey.conflict');\n const invalidText = texts?.invalidCombination ?? t('hotkey.invalidCombination');\n\n return (\n <Flexbox\n className={className}\n gap={8}\n style={{\n position: 'relative',\n ...style,\n }}\n >\n <Flexbox\n align={'center'}\n className={cx(\n variants({\n disabled,\n error: hasConflict || hasInvalidCombination,\n focused: isFocused,\n shadow,\n variant: variant || (isDarkMode ? 'filled' : 'outlined'),\n }),\n )}\n horizontal\n justify={'space-between'}\n onClick={handleClick}\n >\n <div style={{ pointerEvents: 'none' }}>\n {isRecording ? (\n <span className={styles.placeholder}>\n {keys.length > 0 ? <Hotkey keys={keysString} /> : placeholderText}\n </span>\n ) : hotkeyValue ? (\n <Hotkey keys={hotkeyValue} />\n ) : (\n <span className={styles.placeholder}>{placeholderText}</span>\n )}\n </div>\n\n {/* 隐藏的输入框,用于接收焦点 */}\n <input\n className={styles.hiddenInput}\n disabled={disabled}\n onBlur={handleBlur}\n onFocus={handleFocus}\n readOnly\n ref={inputRef as any}\n style={{ pointerEvents: 'none' }}\n />\n\n {!isFocused && allowReset && hotkeyValue && hotkeyValue !== resetValue && !disabled && (\n <ActionIcon\n icon={Undo2Icon}\n onClick={handleReset}\n size={'small'}\n title={resetTitle}\n variant={'filled'}\n />\n )}\n </Flexbox>\n {hasConflict && <div className={styles.errorText}>{conflictText}</div>}\n {hasInvalidCombination && <div className={styles.errorText}>{invalidText}</div>}\n </Flexbox>\n );\n },\n);\n\nHotkeyInput.displayName = 'HotkeyInput';\n\nexport default HotkeyInput;\n","export default {\n 'hotkey.conflict': 'This shortcut conflicts with an existing one.',\n 'hotkey.invalidCombination':\n 'Shortcut must include a modifier key (Ctrl, Alt, Shift) and only one regular key.',\n 'hotkey.placeholder': 'Press keys to record shortcut',\n 'hotkey.reset': 'Reset to default',\n} as const;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderless,\n disabled: lobeStaticStylish.disabled,\n error: css`\n border: 1px solid ${cssVar.colorError};\n `,\n errorText: css`\n font-size: 12px;\n color: ${cssVar.colorError};\n `,\n filled: lobeStaticStylish.variantFilled,\n focused: css`\n background: ${cssVar.colorFillSecondary} !important;\n `,\n hiddenInput: css`\n cursor: text;\n\n position: absolute;\n z-index: -1;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n width: 100%;\n height: 100%;\n\n opacity: 0;\n `,\n outlined: lobeStaticStylish.variantOutlined,\n placeholder: css`\n color: ${cssVar.colorTextDescription};\n `,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n max-width: 100%;\n height: 36px;\n padding-block: 0;\n padding-inline: 12px;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n disabled: false,\n error: false,\n shadow: false,\n variant: 'outlined',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n focused: {\n false: null,\n true: styles.focused,\n },\n error: {\n fales: null,\n true: styles.error,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { Image as AntImage, Skeleton } from 'antd';\nimport { cssVar, cx, useThemeMode } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport usePreview from './components/usePreview';\nimport { FALLBACK_DARK, FALLBACK_LIGHT, styles, variants } from './style';\nimport type { ImageProps } from './type';\n\nconst Image = memo<ImageProps>(\n ({\n ref,\n style,\n preview,\n isLoading,\n maxHeight = '100%',\n maxWidth = '100%',\n minHeight,\n minWidth,\n actions,\n className,\n alwaysShowActions,\n variant = 'filled',\n objectFit = 'cover',\n classNames,\n styles: customStyles,\n onClick,\n width,\n height,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const actionsClassName = alwaysShowActions ? styles.actionsVisible : styles.actionsHidden;\n const mergePreivew = usePreview(preview);\n\n if (isLoading)\n return (\n <div onClick={onClick}>\n <Skeleton.Avatar\n active\n style={{\n borderRadius: cssVar.borderRadius,\n height,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n width,\n }}\n />\n </div>\n );\n\n return (\n <Flexbox className={cx(variants({ variant }), className)} ref={ref} style={style}>\n {actions && (\n <div className={cx(actionsClassName, alwaysShowActions ? '' : 'actions-hidden')}>\n {actions}\n </div>\n )}\n <AntImage\n className={cx(styles.image, classNames?.image)}\n classNames={{\n root: cx(styles.wrapper, classNames?.wrapper),\n }}\n fallback={isDarkMode ? FALLBACK_DARK : FALLBACK_LIGHT}\n height={height}\n loading={'lazy'}\n onClick={onClick}\n preview={preview === false ? false : (mergePreivew as any)}\n style={{\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n objectFit: objectFit || 'cover',\n ...customStyles?.image,\n }}\n styles={{\n root: customStyles?.wrapper,\n }}\n width={width}\n {...rest}\n />\n </Flexbox>\n );\n },\n);\n\nImage.displayName = 'Image';\n\nexport default Image;\n","import type { ImageProps as AntdImageProps } from 'antd';\nimport { cx } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles } from '../style';\nimport type { ImagePreviewOptions } from '../type';\nimport Preview from './Preview';\nimport Toolbar from './Toolbar';\n\nexport const usePreview = (\n props: ImagePreviewOptions | boolean | undefined,\n): AntdImageProps['preview'] => {\n const [visible, setVisible] = useState(false);\n\n return useMemo(() => {\n if (props === false) return props;\n\n const {\n onVisibleChange,\n onOpenChange,\n minScale = 0.32,\n maxScale = 32,\n toolbarAddon,\n rootClassName,\n imageRender,\n toolbarRender,\n actionsRender,\n ...rest\n }: ImagePreviewOptions = (props === true ? {} : props || {}) as ImagePreviewOptions;\n\n return {\n actionsRender:\n actionsRender ||\n ((_, info) => {\n const originalNode = (\n <Toolbar info={info} maxScale={maxScale} minScale={minScale}>\n {toolbarAddon}\n </Toolbar>\n );\n // 向后兼容 toolbarRender\n if (toolbarRender) return toolbarRender(originalNode, info);\n return originalNode;\n }),\n closeIcon: <Icon color={'#fff'} icon={X} />,\n imageRender: (originalNode, info) => {\n const node = <Preview visible={visible}>{originalNode}</Preview>;\n if (imageRender) return imageRender(node, info);\n return node;\n },\n maxScale,\n minScale,\n onOpenChange: (open: boolean) => {\n setVisible(open);\n // 支持新的 onOpenChange\n onOpenChange?.(open);\n // 向后兼容旧的 onVisibleChange\n onVisibleChange?.(open, !open);\n },\n rootClassName: cx(styles.preview, rootClassName),\n styles: { mask: { backdropFilter: 'blur(8px)' } },\n ...rest,\n };\n }, [props, visible, styles]);\n};\n\nexport default usePreview;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actionsHidden: css`\n cursor: pointer;\n\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n inset-inline-end: 0;\n\n opacity: 0;\n `,\n actionsVisible: css`\n cursor: pointer;\n\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n inset-inline-end: 0;\n\n opacity: 1;\n `,\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: css`\n ${lobeStaticStylish.variantOutlinedWithoutHover};\n ${lobeStaticStylish.variantFilledWithoutHover};\n `,\n image: css`\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: auto;\n height: auto;\n `,\n mask: css`\n ${lobeStaticStylish.blur};\n backdrop-filter: blur(8px);\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n preview: css`\n .${prefixCls}-image-preview-mask {\n background: color-mix(in srgb, ${cssVar.colorBgLayout} 90%, transparent);\n }\n\n .${prefixCls}-image-preview-close {\n color: ${cssVar.colorTextDescription};\n background: ${cssVar.colorBgContainer};\n box-shadow: ${cssVar.boxShadowTertiary};\n\n svg {\n stroke: ${cssVar.colorTextDescription};\n }\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorBgContainer};\n\n svg {\n stroke: ${cssVar.colorText};\n }\n }\n }\n\n .${prefixCls}-image-preview-img {\n width: 100%;\n }\n\n .${prefixCls}-image-preview-switch {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0;\n\n color: ${cssVar.colorTextDescription};\n\n background: ${cssVar.colorBgContainer};\n box-shadow: ${cssVar.boxShadowTertiary};\n\n svg {\n transform: scale(0.75);\n }\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorBgContainer};\n }\n }\n\n .${prefixCls}-image-preview-switch-disabled {\n display: none;\n }\n\n .ant-image-preview-progress {\n color: ${cssVar.colorTextDescription};\n }\n\n img {\n min-width: 100%;\n }\n `,\n root: css`\n cursor: pointer;\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n\n width: fit-content;\n border-radius: ${cssVar.borderRadius};\n\n line-height: 1;\n\n .${prefixCls}-image-cover {\n display: none !important;\n }\n\n &:hover {\n .actions-hidden {\n opacity: 1;\n }\n }\n `,\n toolbar: css`\n ${lobeStaticStylish.variantOutlinedWithoutHover};\n padding: 4px;\n border-color: ${cssVar.colorFillTertiary};\n border-radius: ${cssVar.borderRadiusLG};\n `,\n\n wrapper: css`\n position: relative;\n overflow: hidden;\n max-width: 100%;\n height: auto;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const FALLBACK_DARK =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjM0IzQjNCIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K';\nexport const FALLBACK_LIGHT =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjRUNFQ0VDIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K';\n","'use client';\n\nimport { type PropsWithChildren, memo, useEffect, useRef } from 'react';\n\ninterface PreviewProps extends PropsWithChildren {\n visible?: boolean;\n}\n\nconst Preview = memo<PreviewProps>(({ children, visible }) => {\n const ref = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (!ref.current) return;\n\n const handleDisableZoom = (event: any) => {\n event.preventDefault();\n };\n\n if (visible) {\n ref.current.addEventListener('wheel', handleDisableZoom, { passive: false });\n } else {\n ref.current.removeEventListener('wheel', handleDisableZoom);\n }\n }, [visible]);\n\n return <div ref={ref}>{children}</div>;\n});\n\nexport default Preview;\n","import { FlipHorizontal, FlipVertical, RotateCcw, RotateCw, ZoomIn, ZoomOut } from 'lucide-react';\nimport type { ToolbarRenderInfoType } from 'rc-image/lib/Preview';\nimport { type ReactNode, memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from '../style';\n\nexport interface ToolbarProps {\n children?: ReactNode;\n info: Omit<ToolbarRenderInfoType, 'current' | 'total'>;\n maxScale: number;\n minScale: number;\n}\n\nconst Toolbar = memo<ToolbarProps>(({ children, info, minScale, maxScale }) => {\n const {\n transform: { scale },\n actions: { onFlipY, onFlipX, onRotateLeft, onRotateRight, onZoomOut, onZoomIn },\n } = info;\n\n return (\n <Flexbox className={styles.toolbar} gap={4} horizontal>\n <ActionIcon icon={FlipHorizontal} onClick={onFlipX} />\n <ActionIcon icon={FlipVertical} onClick={onFlipY} />\n <ActionIcon icon={RotateCcw} onClick={onRotateLeft} />\n <ActionIcon icon={RotateCw} onClick={onRotateRight} />\n <ActionIcon disabled={scale === minScale} icon={ZoomOut} onClick={onZoomOut} />\n <ActionIcon disabled={scale === maxScale} icon={ZoomIn} onClick={onZoomIn} />\n {children}\n </Flexbox>\n );\n});\n\nexport default Toolbar;\n","'use client';\n\nimport { Image } from 'antd';\nimport { memo } from 'react';\n\nimport usePreviewGroup from './components/usePreviewGroup';\nimport { PreviewGroupProps } from './type';\n\nconst { PreviewGroup: AntdPreviewGroup } = Image;\n\nconst PreviewGroup = memo<PreviewGroupProps>(({ items, children, enable = true, preview }) => {\n const mergePreview = usePreviewGroup(preview);\n\n if (!enable) return children;\n\n return (\n <AntdPreviewGroup items={items} preview={mergePreview}>\n {children}\n </AntdPreviewGroup>\n );\n});\n\nPreviewGroup.displayName = 'PreviewGroup';\n\nexport default PreviewGroup;\n","import { cx } from 'antd-style';\r\nimport type { GroupPreviewConfig } from 'antd/es/image/PreviewGroup';\r\nimport { X } from 'lucide-react';\r\nimport { useMemo, useState } from 'react';\r\n\r\nimport Icon from '@/Icon';\r\n\r\nimport { styles as componentStyles, styles } from '../style';\r\nimport type { PreviewGroupPreviewOptions } from '../type';\r\nimport Preview from './Preview';\r\nimport Toolbar from './Toolbar';\r\n\r\nexport const usePreview = (\r\n props: PreviewGroupPreviewOptions | boolean | undefined,\r\n): GroupPreviewConfig | boolean => {\r\n const [visible, setVisible] = useState(false);\r\n\r\n return useMemo(() => {\r\n if (props === false) return props;\r\n\r\n const {\r\n onVisibleChange,\r\n onOpenChange,\r\n minScale = 0.32,\r\n maxScale = 32,\r\n toolbarAddon,\r\n rootClassName,\r\n classNames,\r\n imageRender,\r\n toolbarRender,\r\n ...rest\r\n }: PreviewGroupPreviewOptions = (\r\n props === true ? {} : props || {}\r\n ) as PreviewGroupPreviewOptions;\r\n\r\n return {\r\n actionsRender: (_, info) => {\r\n const originalNode = (\r\n <Toolbar info={info} maxScale={maxScale} minScale={minScale}>\r\n {toolbarAddon}\r\n </Toolbar>\r\n );\r\n if (toolbarRender) return toolbarRender(originalNode, info);\r\n return originalNode;\r\n },\r\n closeIcon: <Icon color={'#fff'} icon={X} />,\r\n\r\n imageRender: (originalNode, info) => {\r\n const node = <Preview visible={visible}>{originalNode}</Preview>;\r\n if (imageRender) return imageRender(node, info);\r\n return node;\r\n },\r\n maxScale,\r\n minScale,\r\n onOpenChange: (open: boolean, info: { current: number }) => {\r\n setVisible(open);\r\n // 支持新的 onOpenChange\r\n onOpenChange?.(open, info);\r\n // 向后兼容旧的 onVisibleChange (注意参数差异)\r\n onVisibleChange?.(open, !open, info.current);\r\n },\r\n rootClassName: cx(styles.preview, classNames?.root, rootClassName),\r\n ...rest,\r\n } satisfies GroupPreviewConfig;\r\n }, [props, visible, componentStyles]);\r\n};\r\n\r\nexport default usePreview;\r\n","import type { ReactNode } from 'react';\n\nimport ImageParent from './Image';\nimport PreviewGroup from './PreviewGroup';\nimport type { ImageProps } from './type';\n\nexport interface IImage {\n (props: ImageProps): ReactNode;\n PreviewGroup: typeof PreviewGroup;\n}\n\nconst Image = ImageParent as unknown as IImage;\nImage.PreviewGroup = PreviewGroup;\n\nexport default Image;\nexport { default as PreviewGroup } from './PreviewGroup';\nexport type * from './type';\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport Img from '@/Img';\n\nimport { styles } from './styles';\nimport type { ImageSelectProps } from './type';\n\nconst ImageSelect = memo<ImageSelectProps>(\n ({\n ref,\n className,\n style,\n value,\n defaultValue,\n onChange,\n options,\n width = 144,\n height = 86,\n styles: customStyles,\n classNames,\n unoptimized,\n ...rest\n }) => {\n const [currentValue, setCurrentValue] = useControlledState<string>(defaultValue, {\n defaultValue,\n onChange,\n value,\n });\n\n return (\n <Flexbox className={className} gap={16} horizontal ref={ref} style={style} {...rest}>\n {options?.map((item) => {\n const isActive = item.value === currentValue;\n return (\n <Flexbox\n align={'center'}\n className={cx(styles.container, isActive && styles.active)}\n gap={4}\n key={item.value}\n onClick={() => setCurrentValue(item.value)}\n >\n <Img\n alt={item.alt || item.value}\n className={cx(styles.img, isActive && styles.imgActive, classNames?.img)}\n height={height}\n src={item.img}\n style={{\n ...customStyles?.img,\n height,\n width,\n }}\n unoptimized={unoptimized}\n width={width}\n />\n\n <Flexbox align={'center'} gap={4} horizontal>\n {item.icon && <Icon icon={item.icon} />}\n {item.label}\n </Flexbox>\n </Flexbox>\n );\n })}\n </Flexbox>\n );\n },\n);\n\nImageSelect.displayName = 'ImageSelect';\n\nexport default ImageSelect;\n","import { createStaticStyles, cx } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: css`\n color: ${cssVar.colorText};\n `,\n container: css`\n cursor: pointer;\n color: ${cssVar.colorTextDescription};\n `,\n\n img: cx(\n lobeStaticStylish.variantFilled,\n css`\n border-radius: ${cssVar.borderRadius};\n\n &:hover {\n box-shadow: 0 0 0 2px ${cssVar.colorText};\n }\n `,\n ),\n imgActive: cx(\n lobeStaticStylish.active,\n css`\n box-shadow: 0 0 0 2px ${cssVar.colorTextTertiary};\n `,\n ),\n };\n});\n","'use client';\n\nimport { useResponsive } from 'antd-style';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport DraggablePanel from '@/DraggablePanel';\n\nimport LayoutFooter from './components/LayoutFooter';\nimport LayoutHeader from './components/LayoutHeader';\nimport LayoutMain from './components/LayoutMain';\nimport LayoutSidebar from './components/LayoutSidebar';\nimport LayoutSidebarInner from './components/LayoutSidebarInner';\nimport LayoutToc from './components/LayoutToc';\nimport { styles } from './style';\nimport type { LayoutProps } from './type';\n\nconst Layout = memo<LayoutProps>(\n ({ helmet, headerHeight = 64, header, footer, sidebar, asideWidth, toc, children, tocWidth }) => {\n // Convert headerHeight prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--layout-header-height': `${headerHeight}px`,\n }),\n [headerHeight],\n );\n const { mobile, laptop } = useResponsive();\n const [expand, setExpand] = useState(true);\n useEffect(() => {\n setExpand(Boolean(laptop));\n }, [laptop]);\n\n return (\n <div style={cssVariables}>\n {helmet}\n {header && (\n <LayoutHeader headerHeight={headerHeight}>\n {header}\n {mobile && toc && <LayoutToc>{toc}</LayoutToc>}\n </LayoutHeader>\n )}\n <LayoutMain>\n {!mobile && !sidebar && <nav style={{ width: tocWidth }} />}\n {!mobile && sidebar && (\n <LayoutSidebar headerHeight={headerHeight}>\n <DraggablePanel\n expand={expand}\n maxWidth={asideWidth}\n onExpandChange={setExpand}\n placement=\"left\"\n >\n <LayoutSidebarInner headerHeight={headerHeight}>{sidebar}</LayoutSidebarInner>\n </DraggablePanel>\n </LayoutSidebar>\n )}\n <section className={styles.content}>{children}</section>\n {!mobile && toc && <LayoutToc tocWidth={tocWidth}>{toc}</LayoutToc>}\n </LayoutMain>\n {footer && <LayoutFooter>{footer}</LayoutFooter>}\n </div>\n );\n },\n);\n\nexport default Layout;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutFooterProps } from '../type';\n\nexport const LayoutFooter = memo<LayoutFooterProps>(({ children, className, ...rest }) => {\n return (\n <footer className={cx(styles.footer, className)} {...rest}>\n {children}\n </footer>\n );\n});\n\nLayoutFooter.displayName = 'LayoutFooter';\n\nexport default LayoutFooter;\n","import { createStaticStyles, cx } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n app: css`\n overflow: hidden auto;\n height: 100dvh;\n `,\n aside: css`\n position: sticky;\n z-index: 2;\n height: 100%;\n `,\n asideInner: css`\n overflow: hidden auto;\n width: 100%;\n height: calc(100dvh - var(--layout-header-height, 64px));\n `,\n content: css`\n position: relative;\n flex: 1;\n max-width: 100%;\n `,\n\n footer: css`\n position: relative;\n max-width: 100%;\n `,\n header: cx(\n lobeStaticStylish.blur,\n css`\n position: sticky;\n z-index: 999;\n inset-block-start: 0;\n max-width: 100%;\n `,\n ),\n main: css`\n position: relative;\n display: flex;\n align-items: stretch;\n max-width: 100vw;\n `,\n toc: css``,\n };\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutHeaderProps } from '../type';\n\nexport const LayoutHeader = memo<LayoutHeaderProps>(\n ({ headerHeight, children, className, style, ...rest }) => {\n return (\n <header\n className={cx(styles.header, className)}\n style={{\n height: headerHeight,\n ...style,\n }}\n {...rest}\n >\n {children}\n </header>\n );\n },\n);\n\nLayoutHeader.displayName = 'LayoutHeader';\n\nexport default LayoutHeader;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutMainProps } from '../type';\n\nexport const LayoutMain = memo<LayoutMainProps>(({ children, className, ...rest }) => {\n return (\n <main className={cx(styles.main, className)} {...rest}>\n {children}\n </main>\n );\n});\n\nLayoutMain.displayName = 'LayoutMain';\n\nexport default LayoutMain;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutSidebarProps } from '../type';\n\nexport const LayoutSidebar = memo<LayoutSidebarProps>(\n ({ headerHeight, children, className, style, ...rest }) => {\n return (\n <aside\n className={cx(styles.aside, className)}\n style={{\n top: `var(--layout-header-height, ${headerHeight}px)`,\n ...style,\n }}\n {...rest}\n >\n {children}\n </aside>\n );\n },\n);\n\nLayoutSidebar.displayName = 'LayoutSidebar';\n\nexport default LayoutSidebar;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutSidebarInnerProps } from '../type';\n\nexport const LayoutSidebarInner = memo<LayoutSidebarInnerProps>(\n ({ headerHeight, children, className, ...rest }) => {\n // headerHeight is part of the interface but not used in this component\n void headerHeight;\n return (\n <div className={cx(styles.asideInner, className)} {...rest}>\n {children}\n </div>\n );\n },\n);\n\nLayoutSidebarInner.displayName = 'LayoutSidebarInner';\n\nexport default LayoutSidebarInner;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from '../style';\nimport type { LayoutTocProps } from '../type';\n\nexport const LayoutToc = memo<LayoutTocProps>(\n ({ tocWidth, style, className, children, ...rest }) => {\n return (\n <nav\n className={cx(styles.toc, className)}\n style={tocWidth ? { width: tocWidth, ...style } : style}\n {...rest}\n >\n {children}\n </nav>\n );\n },\n);\n\nLayoutToc.displayName = 'LayoutToc';\n\nexport default LayoutToc;\n","import type { ReactNode } from 'react';\n\nimport LayoutParent from './Layout';\nimport LayoutFooter from './components/LayoutFooter';\nimport LayoutHeader from './components/LayoutHeader';\nimport LayoutMain from './components/LayoutMain';\nimport LayoutSidebar from './components/LayoutSidebar';\nimport LayoutSidebarInner from './components/LayoutSidebarInner';\nimport LayoutToc from './components/LayoutToc';\nimport type { LayoutProps } from './type';\n\nexport interface ILayout {\n (props: LayoutProps): ReactNode;\n Footer: typeof LayoutFooter;\n Header: typeof LayoutHeader;\n Main: typeof LayoutMain;\n Sidebar: typeof LayoutSidebar;\n SidebarInner: typeof LayoutSidebarInner;\n Toc: typeof LayoutToc;\n}\n\nconst Layout = LayoutParent as unknown as ILayout;\n\nLayout.Footer = LayoutFooter;\nLayout.Header = LayoutHeader;\nLayout.Toc = LayoutToc;\nLayout.Sidebar = LayoutSidebar;\nLayout.SidebarInner = LayoutSidebarInner;\nLayout.Main = LayoutMain;\n\nexport default Layout;\nexport { default as LayoutFooter } from './components/LayoutFooter';\nexport { default as LayoutHeader } from './components/LayoutHeader';\nexport { default as LayoutMain } from './components/LayoutMain';\nexport { default as LayoutSidebar } from './components/LayoutSidebar';\nexport { default as LayoutSidebarInner } from './components/LayoutSidebarInner';\nexport { default as LayoutToc } from './components/LayoutToc';\nexport type * from './type';\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport ListItem from './ListItem';\nimport type { ListProps } from './type';\n\nconst List = memo<ListProps>(({ ref, activeKey, classNames, styles, onClick, items, ...rest }) => {\n return (\n <Flexbox gap={4} padding={4} {...rest}>\n {items.map((item) => {\n const {\n key,\n onClick: itemOnClick,\n className: itemClassName,\n style: itemStyle,\n ...itemRest\n } = item;\n const { item: customItemClassName, ...restClassName } = classNames || {};\n const { item: customItemStyle, ...restStyles } = styles || {};\n return (\n <ListItem\n active={item.key === activeKey}\n className={cx(customItemClassName, itemClassName)}\n classNames={restClassName}\n key={key}\n onClick={(e) => {\n onClick?.({\n item,\n key,\n });\n itemOnClick?.(e);\n }}\n ref={ref}\n style={{ ...customItemStyle, ...itemStyle }}\n styles={restStyles}\n {...itemRest}\n />\n );\n })}\n </Flexbox>\n );\n});\n\nList.displayName = 'List';\n\nexport default List;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { Loader2, MessageSquare } from 'lucide-react';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport Text from '@/Text';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport type { ListItemProps } from '../type';\nimport { styles } from './style';\nimport { getChatItemTime } from './time';\n\nconst ListItem = memo<ListItemProps>(\n ({\n ref,\n active,\n avatar,\n loading,\n description,\n date,\n title,\n onHoverChange,\n actions,\n className,\n style,\n showAction,\n children,\n classNames,\n addon,\n pin,\n styles: customStyles,\n ...rest\n }) => {\n const loadingNode = <Icon icon={Loader2} spin />;\n\n const pinNode = pin && (\n <div className={cx(styles.pin, classNames?.pin)} style={customStyles?.pin}>\n <div className={styles.triangle} />\n </div>\n );\n\n const actionsNode = actions && (\n <Flexbox\n className={cx(styles.actions, classNames?.actions)}\n gap={4}\n horizontal\n onClick={preventDefaultAndStopPropagation}\n style={{ display: showAction ? undefined : 'none', ...customStyles?.actions }}\n >\n {actions}\n </Flexbox>\n );\n\n const timeNode = date && (\n <div\n className={cx(styles.date, classNames?.date)}\n style={{ opacity: showAction ? 0 : undefined, ...customStyles?.date }}\n >\n {getChatItemTime(date)}\n </div>\n );\n\n return (\n <Flexbox\n align={'flex-start'}\n className={cx(styles.root, active && styles.active, className)}\n distribution={'space-between'}\n gap={8}\n horizontal\n onMouseEnter={() => {\n onHoverChange?.(true);\n }}\n onMouseLeave={() => {\n onHoverChange?.(false);\n }}\n padding={12}\n ref={ref}\n style={style}\n {...rest}\n >\n {pinNode}\n <Flexbox\n align={'flex-start'}\n className={classNames?.container}\n flex={1}\n gap={8}\n horizontal\n style={{ overflow: 'hidden', ...customStyles?.container }}\n >\n {avatar ?? <Icon icon={MessageSquare} style={{ marginTop: 4 }} />}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={4}\n style={customStyles?.content}\n >\n <Text\n as={'h3'}\n className={cx(styles.title, classNames?.title)}\n ellipsis\n style={customStyles?.title}\n >\n {title}\n </Text>\n {description && (\n <Text\n className={cx(styles.desc, classNames?.desc)}\n ellipsis\n style={customStyles?.desc}\n >\n {description}\n </Text>\n )}\n {addon}\n </Flexbox>\n </Flexbox>\n {loading ? (\n loadingNode\n ) : (\n <>\n {actionsNode}\n {timeNode}\n </>\n )}\n {children}\n </Flexbox>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n","import { createStaticStyles, cx } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actions: css`\n position: absolute;\n inset-block-start: 50%;\n inset-inline-end: 16px;\n transform: translateY(-50%);\n `,\n active: lobeStaticStylish.active,\n content: css`\n position: relative;\n overflow: hidden;\n flex: 1;\n align-self: center;\n `,\n date: css`\n font-size: 12px;\n color: ${cssVar.colorTextPlaceholder};\n `,\n desc: css`\n width: 100%;\n margin: 0;\n\n font-size: 12px;\n line-height: 1.2;\n color: ${cssVar.colorTextDescription};\n `,\n\n pin: css`\n position: absolute;\n inset-block-start: 6px;\n inset-inline-end: 6px;\n `,\n root: cx(\n lobeStaticStylish.variantBorderless,\n css`\n cursor: pointer;\n position: relative;\n border-radius: ${cssVar.borderRadius};\n color: ${cssVar.colorTextTertiary};\n `,\n ),\n\n title: css`\n width: 100%;\n margin: 0;\n\n font-size: 14px;\n font-weight: 500;\n line-height: 1.2;\n color: ${cssVar.colorText};\n `,\n triangle: css`\n width: 10px;\n height: 10px;\n border-radius: 2px;\n\n opacity: 0.5;\n background: ${cssVar.colorPrimaryBorder};\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%);\n `,\n };\n});\n","import dayjs from 'dayjs';\n\nexport const getChatItemTime = (updateAt: number) => {\n const time = dayjs(updateAt);\n\n if (time.isSame(dayjs(), 'day')) return time.format('HH:mm');\n\n return time.format('MM-DD');\n};\n","import type { ReactNode, RefAttributes } from 'react';\n\nimport ListParent from './List';\nimport ListItem from './ListItem';\nimport type { ListProps } from './type';\n\ninterface IList {\n (props: ListProps & RefAttributes<HTMLDivElement>): ReactNode;\n Item: typeof ListItem;\n}\n\nconst List = ListParent as unknown as IList;\n\nList.Item = ListItem;\n\nexport default List;\nexport { default as ListItem } from './ListItem';\nexport type * from './type';\n","'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Select } from '@base-ui/react/select';\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n type ComponentProps,\n type ComponentPropsWithRef,\n cloneElement,\n isValidElement,\n} from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { styles as menuStyles } from '@/Menu/sharedStyle';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { usePortalContainer } from '@/hooks/usePortalContainer';\n\nimport { LOBE_SELECT_CONTAINER_ATTR } from './constants';\nimport { styles, triggerVariants } from './style';\nimport type { LobeSelectSize, LobeSelectVariant } from './type';\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => cx(base, className(state));\n return cx(base, className);\n};\n\nexport const LobeSelectRoot = Select.Root;\nexport const LobeSelectBackdrop = Select.Backdrop;\nexport const LobeSelectSeparator = Select.Separator;\n\nexport type LobeSelectTriggerProps = Omit<\n ComponentPropsWithRef<typeof Select.Trigger>,\n 'children' | 'render'\n> & {\n children: ComponentProps<typeof Select.Trigger>['children'];\n shadow?: boolean;\n size?: LobeSelectSize;\n variant?: LobeSelectVariant;\n};\n\nexport const LobeSelectTrigger = ({\n children,\n className,\n nativeButton,\n shadow,\n size = 'middle',\n variant,\n ref: refProp,\n ...rest\n}: LobeSelectTriggerProps) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const baseClassName = triggerVariants({ shadow, size, variant: resolvedVariant });\n\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n if (isValidElement(children)) {\n return (\n <Select.Trigger\n {...rest}\n nativeButton={resolvedNativeButton}\n render={(props, state) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n const childClassName =\n typeof (mergedProps as any).className === 'function'\n ? (mergedProps as any).className(state)\n : (mergedProps as any).className;\n const extraClassName = typeof className === 'function' ? className(state) : className;\n\n return cloneElement(children as any, {\n ...mergedProps,\n className: cx(baseClassName, childClassName, extraClassName),\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <Select.Trigger\n {...rest}\n className={mergeStateClassName(baseClassName, className) as any}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Select.Trigger>\n );\n};\n\nLobeSelectTrigger.displayName = 'LobeSelectTrigger';\n\nexport type LobeSelectIconProps = ComponentProps<typeof Select.Icon>;\n\nexport const LobeSelectIcon = ({ className, ...rest }: LobeSelectIconProps) => {\n return <Select.Icon className={mergeStateClassName(styles.icon, className) as any} {...rest} />;\n};\n\nLobeSelectIcon.displayName = 'LobeSelectIcon';\n\nexport type LobeSelectValueProps = ComponentProps<typeof Select.Value>;\n\nexport const LobeSelectValue = ({ className, ...rest }: LobeSelectValueProps) => {\n return <Select.Value className={mergeStateClassName(styles.value, className) as any} {...rest} />;\n};\n\nLobeSelectValue.displayName = 'LobeSelectValue';\n\nexport type LobeSelectPortalProps = ComponentProps<typeof Select.Portal> & {\n /**\n * When `container` is not provided, it uses a shared container created by `usePortalContainer`.\n */\n container?: HTMLElement | null;\n};\n\nexport const LobeSelectPortal = ({ container, ...rest }: LobeSelectPortalProps) => {\n const defaultContainer = usePortalContainer(LOBE_SELECT_CONTAINER_ATTR);\n return <Select.Portal container={container ?? defaultContainer} {...rest} />;\n};\n\nLobeSelectPortal.displayName = 'LobeSelectPortal';\n\nexport type LobeSelectPositionerProps = ComponentProps<typeof Select.Positioner>;\n\nexport const LobeSelectPositioner = ({\n align,\n alignItemWithTrigger,\n className,\n side,\n sideOffset,\n ...rest\n}: LobeSelectPositionerProps) => {\n return (\n <Select.Positioner\n align={align ?? 'start'}\n alignItemWithTrigger={alignItemWithTrigger ?? false}\n className={mergeStateClassName(styles.positioner, className) as any}\n side={side ?? 'bottom'}\n sideOffset={sideOffset ?? 6}\n {...rest}\n />\n );\n};\n\nLobeSelectPositioner.displayName = 'LobeSelectPositioner';\n\nexport type LobeSelectPopupProps = ComponentProps<typeof Select.Popup>;\n\nexport const LobeSelectPopup = ({ className, ...rest }: LobeSelectPopupProps) => {\n return (\n <Select.Popup\n className={mergeStateClassName(cx(menuStyles.popup, styles.popup), className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectPopup.displayName = 'LobeSelectPopup';\n\nexport type LobeSelectListProps = ComponentProps<typeof Select.List>;\n\nexport const LobeSelectList = ({ className, ...rest }: LobeSelectListProps) => {\n return <Select.List className={mergeStateClassName(styles.list, className) as any} {...rest} />;\n};\n\nLobeSelectList.displayName = 'LobeSelectList';\n\nexport type LobeSelectItemProps = ComponentProps<typeof Select.Item>;\n\nexport const LobeSelectItem = ({ className, ...rest }: LobeSelectItemProps) => {\n return (\n <Select.Item\n className={mergeStateClassName(cx(menuStyles.item, styles.item), className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectItem.displayName = 'LobeSelectItem';\n\nexport type LobeSelectItemTextProps = ComponentProps<typeof Select.ItemText>;\n\nexport const LobeSelectItemText = ({ className, ...rest }: LobeSelectItemTextProps) => {\n return (\n <Select.ItemText\n className={mergeStateClassName(cx(menuStyles.label, styles.itemText), className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectItemText.displayName = 'LobeSelectItemText';\n\nexport type LobeSelectItemIndicatorProps = ComponentProps<typeof Select.ItemIndicator>;\n\nexport const LobeSelectItemIndicator = ({ className, ...rest }: LobeSelectItemIndicatorProps) => {\n return (\n <Select.ItemIndicator\n className={mergeStateClassName(styles.itemIndicator, className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectItemIndicator.displayName = 'LobeSelectItemIndicator';\n\nexport type LobeSelectGroupProps = ComponentProps<typeof Select.Group>;\n\nexport const LobeSelectGroup = ({ className, ...rest }: LobeSelectGroupProps) => {\n return <Select.Group className={mergeStateClassName(styles.group, className) as any} {...rest} />;\n};\n\nLobeSelectGroup.displayName = 'LobeSelectGroup';\n\nexport type LobeSelectGroupLabelProps = ComponentProps<typeof Select.GroupLabel>;\n\nexport const LobeSelectGroupLabel = ({ className, ...rest }: LobeSelectGroupLabelProps) => {\n return (\n <Select.GroupLabel\n className={\n mergeStateClassName(cx(menuStyles.groupLabel, styles.groupLabel), className) as any\n }\n {...rest}\n />\n );\n};\n\nLobeSelectGroupLabel.displayName = 'LobeSelectGroupLabel';\n\nexport type LobeSelectScrollUpArrowProps = ComponentProps<typeof Select.ScrollUpArrow>;\n\nexport const LobeSelectScrollUpArrow = ({ className, ...rest }: LobeSelectScrollUpArrowProps) => {\n return (\n <Select.ScrollUpArrow\n className={mergeStateClassName(styles.scrollArrow, className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectScrollUpArrow.displayName = 'LobeSelectScrollUpArrow';\n\nexport type LobeSelectScrollDownArrowProps = ComponentProps<typeof Select.ScrollDownArrow>;\n\nexport const LobeSelectScrollDownArrow = ({\n className,\n ...rest\n}: LobeSelectScrollDownArrowProps) => {\n return (\n <Select.ScrollDownArrow\n className={mergeStateClassName(styles.scrollArrow, className) as any}\n {...rest}\n />\n );\n};\n\nLobeSelectScrollDownArrow.displayName = 'LobeSelectScrollDownArrow';\n\nexport type LobeSelectArrowProps = ComponentProps<typeof Select.Arrow>;\n\nexport const LobeSelectArrow = ({ className, ...rest }: LobeSelectArrowProps) => {\n return <Select.Arrow className={mergeStateClassName(styles.arrow, className) as any} {...rest} />;\n};\n\nLobeSelectArrow.displayName = 'LobeSelectArrow';\n\nexport { LOBE_SELECT_CONTAINER_ATTR } from './constants';\n","export const LOBE_SELECT_CONTAINER_ATTR = 'data-lobe-ui-select-container';\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n arrow: css`\n display: flex;\n width: 12px;\n height: 6px;\n\n & > svg {\n width: 100%;\n height: 100%;\n }\n `,\n borderless: cx(\n lobeStaticStylish.variantBorderless,\n css`\n --lobe-select-open-bg: ${cssVar.colorFillTertiary};\n --lobe-select-readonly-bg: color-mix(in srgb, ${cssVar.colorFillTertiary} 70%, transparent);\n --lobe-select-disabled-bg: color-mix(in srgb, ${cssVar.colorFillTertiary} 55%, transparent);\n `,\n ),\n clear: css`\n display: inline-flex;\n align-items: center;\n\n color: ${cssVar.colorTextTertiary};\n\n opacity: 0;\n\n transition: opacity 150ms ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n `,\n empty: css``,\n filled: cx(\n lobeStaticStylish.variantFilled,\n css`\n --lobe-select-open-bg: ${cssVar.colorFillSecondary};\n --lobe-select-readonly-bg: color-mix(in srgb, ${cssVar.colorFillTertiary} 70%, transparent);\n --lobe-select-disabled-bg: color-mix(in srgb, ${cssVar.colorFillTertiary} 55%, transparent);\n `,\n ),\n group: css``,\n groupLabel: css``,\n icon: css`\n display: inline-flex;\n align-items: center;\n transition: transform 150ms ${cssVar.motionEaseOut};\n\n &[data-popup-open] {\n transform: rotate(180deg);\n }\n `,\n item: css``,\n itemBoldSelected: css`\n &[data-selected] {\n font-weight: 600;\n }\n `,\n itemIndicator: css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n margin-inline-start: auto;\n padding-inline-start: 8px;\n\n color: ${cssVar.colorPrimary};\n `,\n itemText: css``,\n list: css`\n overflow-y: auto;\n max-height: var(--lobe-select-available-height, var(--available-height));\n padding-block: 0;\n `,\n outlined: cx(\n lobeStaticStylish.variantOutlined,\n css`\n --lobe-select-open-bg: ${cssVar.colorFillTertiary};\n --lobe-select-readonly-bg: color-mix(in srgb, ${cssVar.colorBgContainer} 75%, transparent);\n --lobe-select-disabled-bg: color-mix(in srgb, ${cssVar.colorBgContainer} 60%, transparent);\n `,\n ),\n popup: css`\n --lobe-select-available-height: min(\n var(--available-height),\n var(--lobe-select-popup-max-height, var(--available-height))\n );\n\n transform-origin: var(--transform-origin);\n box-sizing: border-box;\n transition:\n opacity 150ms ${cssVar.motionEaseOut},\n transform 150ms ${cssVar.motionEaseOut};\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: scaleY(0.92);\n opacity: 0;\n }\n `,\n positioner: css`\n z-index: 1100;\n outline: none;\n `,\n prefix: css`\n display: inline-flex;\n align-items: center;\n color: ${cssVar.colorTextSecondary};\n `,\n scrollArrow: css`\n cursor: default;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 16px;\n\n color: ${cssVar.colorTextSecondary};\n\n background: ${cssVar.colorBgElevated};\n `,\n search: css`\n cursor: text;\n\n display: flex;\n align-items: center;\n\n min-height: 36px;\n margin-inline: -4px;\n padding-block: 8px;\n padding-inline: 12px;\n border-block-end: 1px solid ${cssVar.colorFillSecondary};\n `,\n searchInput: css`\n flex: 1;\n\n min-width: 0;\n padding-block: 0;\n padding-inline: 4px;\n border: 0;\n\n font-size: 14px;\n line-height: 20px;\n color: ${cssVar.colorText};\n\n background: transparent;\n outline: none;\n\n &::placeholder {\n color: ${cssVar.colorTextPlaceholder};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n suffix: css`\n display: inline-flex;\n gap: 6px;\n align-items: center;\n color: ${cssVar.colorTextSecondary};\n `,\n tag: css`\n display: inline-flex;\n align-items: center;\n\n max-width: 100%;\n padding-block: 0;\n padding-inline: 6px;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 12px;\n line-height: 20px;\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorFillTertiary};\n `,\n tags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n `,\n trigger: css`\n cursor: pointer;\n user-select: none;\n\n display: inline-flex;\n gap: 8px;\n align-items: center;\n\n box-sizing: border-box;\n width: 100%;\n border: 1px solid transparent;\n border-radius: ${cssVar.borderRadius};\n\n font-family: inherit;\n color: ${cssVar.colorText};\n\n background: transparent;\n outline: none;\n\n transition: all 150ms ${cssVar.motionEaseOut};\n\n &:not([data-disabled]):not([data-readonly])[data-popup-open],\n &:not([data-disabled]):not([data-readonly])[data-open],\n &:not([data-disabled]):not([data-readonly])[data-state='open'],\n &:not([data-disabled]):not([data-readonly])[aria-expanded='true'] {\n background: var(--lobe-select-open-bg, ${cssVar.colorFillTertiary});\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n\n &:hover [data-role='lobe-select-clear'] {\n opacity: 1;\n }\n\n &[data-placeholder] [data-role='lobe-select-clear'] {\n pointer-events: none;\n opacity: 0;\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: ${cssVar.colorTextDisabled};\n background: var(--lobe-select-disabled-bg, transparent);\n\n &:hover {\n background: var(--lobe-select-disabled-bg, transparent);\n }\n }\n\n &[data-readonly] {\n cursor: default;\n color: ${cssVar.colorTextSecondary};\n background: var(--lobe-select-readonly-bg, transparent);\n\n &:hover {\n background: var(--lobe-select-readonly-bg, transparent);\n }\n }\n\n &[data-disabled] [data-role='lobe-select-clear'] {\n pointer-events: none;\n opacity: 0;\n }\n `,\n triggerLarge: css`\n min-height: 40px;\n padding-block: 6px;\n padding-inline: 12px;\n\n font-size: 16px;\n line-height: 24px;\n `,\n triggerMiddle: css`\n min-height: 32px;\n padding-block: 4px;\n padding-inline: 11px;\n\n font-size: 14px;\n line-height: 20px;\n `,\n triggerSmall: css`\n min-height: 24px;\n padding-block: 0;\n padding-inline: 8px;\n\n font-size: 12px;\n line-height: 18px;\n `,\n value: css`\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n\n min-width: 0;\n\n color: inherit;\n\n &[data-placeholder] {\n color: ${cssVar.colorTextPlaceholder};\n }\n `,\n valueText: css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n}));\n\nexport const triggerVariants = cva(styles.trigger, {\n defaultVariants: {\n shadow: false,\n size: 'middle',\n variant: 'outlined',\n },\n variants: {\n shadow: {\n false: null,\n true: styles.shadow,\n },\n size: {\n large: styles.triggerLarge,\n middle: styles.triggerMiddle,\n small: styles.triggerSmall,\n },\n variant: {\n borderless: styles.borderless,\n filled: styles.filled,\n outlined: styles.outlined,\n },\n },\n});\n","'use client';\n\nimport { Select } from '@base-ui/react/select';\nimport { cx, useThemeMode } from 'antd-style';\nimport { Check, ChevronDown, Loader2, X } from 'lucide-react';\nimport type {\n ChangeEvent,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n MutableRefObject,\n Ref,\n} from 'react';\nimport { isValidElement, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Virtualizer } from 'virtua';\n\nimport Icon from '@/Icon';\nimport { styles as menuStyles } from '@/Menu/sharedStyle';\nimport { usePortalContainer } from '@/hooks/usePortalContainer';\n\nimport { LOBE_SELECT_CONTAINER_ATTR } from './constants';\nimport { styles, triggerVariants } from './style';\nimport type {\n LobeSelectOption,\n LobeSelectOptionGroup,\n LobeSelectOptions,\n LobeSelectProps,\n} from './type';\n\nconst isGroupOption = <Value,>(\n option: LobeSelectOption<Value> | LobeSelectOptionGroup<Value>,\n): option is LobeSelectOptionGroup<Value> =>\n Boolean((option as LobeSelectOptionGroup<Value>).options);\n\nconst getOptionSearchText = <Value,>(option: LobeSelectOption<Value>) => {\n if (typeof option.label === 'string' || typeof option.label === 'number') {\n return String(option.label);\n }\n if (typeof option.value === 'string' || typeof option.value === 'number') {\n return String(option.value);\n }\n if (option.title) return option.title;\n return '';\n};\n\nconst escapeRegExp = (value: string) => value.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&');\n\nconst splitBySeparators = (value: string, separators?: string[]) => {\n if (!separators || separators.length === 0) return [value];\n const pattern = separators.map(escapeRegExp).join('|');\n return value.split(new RegExp(pattern, 'g'));\n};\n\nconst countVirtualItems = (items: LobeSelectOptions) =>\n items.reduce((count, item) => {\n if (isGroupOption(item)) {\n return count + item.options.length + 1;\n }\n return count + 1;\n }, 0);\n\nconst isValueEmpty = (value: unknown) => value === null || value === undefined || value === '';\n\nconst LobeSelect = memo<LobeSelectProps<any>>(\n ({\n allowClear,\n autoFocus,\n className,\n classNames,\n defaultOpen,\n defaultValue,\n disabled,\n id,\n labelRender,\n listHeight = 512,\n listItemHeight,\n loading,\n mode,\n name,\n onChange,\n onOpenChange,\n onSelect,\n open,\n optionRender,\n options,\n placeholder,\n popupClassName,\n popupMatchSelectWidth,\n prefix,\n readOnly,\n required,\n behaviorVariant = 'default',\n selectedIndicatorVariant = 'check',\n shadow,\n showSearch,\n size = 'middle',\n style,\n suffixIcon,\n suffixIconProps,\n tokenSeparators,\n value,\n variant,\n virtual,\n }) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const isMultiple = mode === 'multiple' || mode === 'tags';\n const isItemAligned = behaviorVariant === 'item-aligned';\n\n const [uncontrolledValue, setUncontrolledValue] = useState<any>(() => {\n if (defaultValue !== undefined) return defaultValue;\n return isMultiple ? [] : null;\n });\n\n const normalizeValue = useCallback(\n (nextValue: any) => {\n if (isMultiple) {\n if (Array.isArray(nextValue)) return nextValue;\n if (nextValue === null || nextValue === undefined) return [];\n return [nextValue];\n }\n if (Array.isArray(nextValue)) return nextValue[0] ?? null;\n return nextValue === undefined ? null : nextValue;\n },\n [isMultiple],\n );\n\n const mergedValue = value !== undefined ? value : uncontrolledValue;\n const normalizedValue = useMemo(\n () => normalizeValue(mergedValue),\n [mergedValue, normalizeValue],\n );\n const valueArray = useMemo(\n () =>\n isMultiple\n ? (normalizedValue as any[])\n : isValueEmpty(normalizedValue)\n ? []\n : [normalizedValue],\n [isMultiple, normalizedValue],\n );\n\n const [extraOptions, setExtraOptions] = useState<LobeSelectOption<any>[]>([]);\n\n useEffect(() => {\n if (mode !== 'tags' && extraOptions.length > 0) {\n setExtraOptions([]);\n }\n }, [mode, extraOptions.length]);\n\n const { resolvedOptions, optionMap } = useMemo(() => {\n const baseOptions = options ?? [];\n const optionValueMap = new Map<any, LobeSelectOption<any>>();\n\n const addOption = (item: LobeSelectOption<any>) => {\n if (!optionValueMap.has(item.value)) {\n optionValueMap.set(item.value, item);\n }\n };\n\n const walkOptions = (items: LobeSelectOptions) => {\n items.forEach((item) => {\n if (isGroupOption(item)) {\n item.options.forEach(addOption);\n } else {\n addOption(item);\n }\n });\n };\n\n walkOptions(baseOptions);\n\n const filteredExtraOptions = extraOptions.filter((item) => !optionValueMap.has(item.value));\n filteredExtraOptions.forEach(addOption);\n\n const mergedOptions: LobeSelectOptions = [...baseOptions, ...filteredExtraOptions];\n\n const missingValueOptions: LobeSelectOption<any>[] = valueArray\n .filter((val) => !optionValueMap.has(val))\n .map((val) => ({\n label: String(val),\n value: val,\n }));\n missingValueOptions.forEach(addOption);\n\n return {\n optionMap: optionValueMap,\n resolvedOptions: missingValueOptions.length\n ? [...mergedOptions, ...missingValueOptions]\n : mergedOptions,\n };\n }, [extraOptions, options, valueArray]);\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n useEffect(() => {\n if (open !== undefined) {\n setUncontrolledOpen(open);\n }\n }, [open]);\n\n const mergedOpen = open ?? uncontrolledOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [onOpenChange, open],\n );\n\n const [searchValue, setSearchValue] = useState('');\n const shouldShowSearch = Boolean(showSearch || mode === 'tags');\n\n useEffect(() => {\n if (!mergedOpen) setSearchValue('');\n }, [mergedOpen]);\n\n const getOption = useCallback(\n (optionValue: any): LobeSelectOption<any> => {\n const matched = optionMap.get(optionValue);\n if (matched) return matched;\n if (optionValue && typeof optionValue === 'object' && 'label' in optionValue) {\n return {\n label: (optionValue as any).label,\n value: optionValue,\n };\n }\n return {\n label: String(optionValue),\n value: optionValue,\n };\n },\n [optionMap],\n );\n\n const previousValueRef = useRef<any>(normalizedValue);\n\n useEffect(() => {\n previousValueRef.current = normalizedValue;\n }, [normalizedValue]);\n\n const handleValueChange = useCallback(\n (nextValue: any) => {\n const normalizedNextValue = normalizeValue(nextValue);\n const previousValue = previousValueRef.current;\n\n if (isMultiple) {\n const prevValues = Array.isArray(previousValue) ? previousValue : [];\n const nextValues = Array.isArray(normalizedNextValue) ? normalizedNextValue : [];\n const addedValues = nextValues.filter(\n (val) => !prevValues.some((prev) => Object.is(prev, val)),\n );\n\n addedValues.forEach((val) => {\n onSelect?.(val, getOption(val));\n });\n\n if (value === undefined) {\n setUncontrolledValue(nextValues);\n }\n onChange?.(\n nextValues,\n nextValues.map((val) => getOption(val)),\n );\n } else {\n if (\n !isValueEmpty(normalizedNextValue) &&\n !Object.is(previousValue, normalizedNextValue)\n ) {\n onSelect?.(normalizedNextValue, getOption(normalizedNextValue));\n }\n if (value === undefined) {\n setUncontrolledValue(normalizedNextValue);\n }\n onChange?.(\n normalizedNextValue,\n isValueEmpty(normalizedNextValue) ? undefined : getOption(normalizedNextValue),\n );\n }\n\n previousValueRef.current = normalizedNextValue;\n },\n [getOption, isMultiple, normalizeValue, onChange, onSelect, value],\n );\n\n const appendTagValues = useCallback(\n (rawValues: string[]) => {\n const valuesToAdd = rawValues.map((val) => val.trim()).filter(Boolean);\n if (!valuesToAdd.length) return;\n\n const nextValues = [...valueArray];\n const newOptionValues = valuesToAdd.filter((val) => !optionMap.has(val));\n\n if (newOptionValues.length > 0) {\n setExtraOptions((prev) => {\n const existingValues = new Set(prev.map((item) => item.value));\n const merged = [...prev];\n newOptionValues.forEach((val) => {\n if (!existingValues.has(val)) {\n merged.push({ label: val, value: val });\n }\n });\n return merged;\n });\n }\n\n valuesToAdd.forEach((val) => {\n if (!nextValues.some((item) => Object.is(item, val))) {\n nextValues.push(val);\n }\n });\n\n if (nextValues.length !== valueArray.length) {\n handleValueChange(nextValues);\n }\n },\n [handleValueChange, optionMap, valueArray],\n );\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = event.target.value;\n if (mode === 'tags') {\n const parts = splitBySeparators(nextValue, tokenSeparators);\n if (parts.length > 1) {\n const pending = parts.pop() ?? '';\n appendTagValues(parts.filter(Boolean));\n setSearchValue(pending);\n return;\n }\n }\n setSearchValue(nextValue);\n },\n [appendTagValues, mode, tokenSeparators],\n );\n\n const handleSearchKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n handleOpenChange(false);\n return;\n }\n\n if (mode !== 'tags') return;\n\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n appendTagValues([searchValue]);\n setSearchValue('');\n return;\n }\n\n if (tokenSeparators?.includes(event.key)) {\n event.preventDefault();\n event.stopPropagation();\n appendTagValues([searchValue]);\n setSearchValue('');\n }\n },\n [appendTagValues, handleOpenChange, mode, searchValue, tokenSeparators],\n );\n\n const filteredOptions = useMemo(() => {\n if (!shouldShowSearch || !searchValue.trim()) return resolvedOptions;\n const query = searchValue.trim().toLowerCase();\n\n const filterItems = (items: LobeSelectOptions): LobeSelectOptions => {\n const filtered = items\n .map((item) => {\n if (isGroupOption(item)) {\n const groupItems = item.options.filter((option) =>\n getOptionSearchText(option).toLowerCase().includes(query),\n );\n if (!groupItems.length) return null;\n return { ...item, options: groupItems };\n }\n return getOptionSearchText(item).toLowerCase().includes(query) ? item : null;\n })\n .filter(Boolean) as LobeSelectOptions;\n\n return filtered;\n };\n\n return filterItems(resolvedOptions);\n }, [resolvedOptions, searchValue, shouldShowSearch]);\n\n const renderValue = useCallback(\n (currentValue: any) => {\n const resolved = normalizeValue(currentValue);\n const placeholderNode =\n placeholder === undefined ? null : (\n <span className={styles.valueText}>{placeholder}</span>\n );\n\n if (isMultiple) {\n const values = Array.isArray(resolved) ? resolved : [];\n if (values.length === 0) return placeholderNode;\n return (\n <span className={styles.tags}>\n {values.map((val, index) => {\n const option = getOption(val);\n const content = labelRender ? labelRender(option) : (option.label ?? String(val));\n return (\n <span className={styles.tag} key={`${String(val)}-${index}`}>\n {content}\n </span>\n );\n })}\n </span>\n );\n }\n\n if (isValueEmpty(resolved)) return placeholderNode;\n const option = getOption(resolved);\n const content = labelRender ? labelRender(option) : (option.label ?? String(resolved));\n return <span className={styles.valueText}>{content}</span>;\n },\n [getOption, isMultiple, labelRender, normalizeValue, placeholder],\n );\n\n const hasValue = isMultiple ? valueArray.length > 0 : !isValueEmpty(normalizedValue);\n const showClear = Boolean(allowClear && hasValue && !disabled && !readOnly);\n\n const handleClear = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n handleValueChange(isMultiple ? [] : null);\n },\n [handleValueChange, isMultiple],\n );\n\n const prefixNode = useMemo(() => {\n if (prefix === undefined || prefix === null) return null;\n if (isValidElement(prefix) || typeof prefix === 'string' || typeof prefix === 'number') {\n return prefix;\n }\n return <Icon icon={prefix as any} size={'small'} />;\n }, [prefix]);\n\n const suffixIconNode = useMemo(() => {\n if (loading) {\n return <Icon icon={Loader2} size={'small'} spin />;\n }\n if (suffixIcon === null) return null;\n if (\n isValidElement(suffixIcon) ||\n typeof suffixIcon === 'string' ||\n typeof suffixIcon === 'number'\n ) {\n return suffixIcon;\n }\n return (\n <Icon\n icon={(suffixIcon as any) || ChevronDown}\n size={'small'}\n {...suffixIconProps}\n style={{\n pointerEvents: 'none',\n ...suffixIconProps?.style,\n }}\n />\n );\n }, [loading, suffixIcon, suffixIconProps]);\n\n const popupStyle = useMemo(() => {\n const maxHeight = isItemAligned ? '80vh' : `${listHeight}px`;\n const baseStyle: React.CSSProperties = {\n maxHeight,\n maxWidth: 'var(--available-width)',\n minWidth: 'var(--anchor-width)',\n ['--lobe-select-popup-max-height' as any]: maxHeight,\n };\n\n if (popupMatchSelectWidth === undefined || popupMatchSelectWidth === true) {\n return baseStyle;\n }\n if (typeof popupMatchSelectWidth === 'number') {\n return {\n ...baseStyle,\n minWidth: popupMatchSelectWidth,\n width: popupMatchSelectWidth,\n };\n }\n return {\n ...baseStyle,\n minWidth: 'max-content',\n };\n }, [isItemAligned, listHeight, popupMatchSelectWidth]);\n\n const triggerClassName = cx(\n triggerVariants({ shadow, size, variant: resolvedVariant }),\n className,\n classNames?.root,\n classNames?.trigger,\n );\n\n const portalContainer = usePortalContainer(LOBE_SELECT_CONTAINER_ATTR);\n const listRef = useRef<HTMLDivElement | null>(null);\n const pointerScrollRef = useRef(false);\n const pointerScrollTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const renderVirtualItem = useCallback((props: HTMLAttributes<HTMLDivElement>) => {\n const { ref, ...rest } = props as HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>;\n };\n\n return (\n <div\n {...rest}\n ref={(node) => {\n if (node) {\n node.scrollIntoView = (...args) => {\n if (!pointerScrollRef.current) {\n HTMLElement.prototype.scrollIntoView.call(node, ...args);\n }\n };\n }\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref && 'current' in ref) {\n (ref as MutableRefObject<HTMLDivElement | null>).current = node;\n }\n }}\n />\n );\n }, []);\n\n const markPointerScroll = useCallback(() => {\n pointerScrollRef.current = true;\n if (pointerScrollTimeoutRef.current) {\n clearTimeout(pointerScrollTimeoutRef.current);\n }\n pointerScrollTimeoutRef.current = setTimeout(() => {\n pointerScrollRef.current = false;\n }, 120);\n }, []);\n\n const handleListScroll = useCallback(() => {\n if (!virtual || !pointerScrollRef.current) return;\n const listElement = listRef.current;\n const activeElement = document.activeElement;\n if (listElement && activeElement && listElement.contains(activeElement)) {\n listElement.focus({ preventScroll: true });\n }\n }, [virtual]);\n\n useEffect(() => {\n return () => {\n if (pointerScrollTimeoutRef.current) {\n clearTimeout(pointerScrollTimeoutRef.current);\n }\n };\n }, []);\n const virtualListStyle = useMemo(() => {\n if (!virtual) return undefined;\n const rowCount = countVirtualItems(filteredOptions);\n const maxVisibleRows = 6;\n const estimatedRowHeight =\n listItemHeight ?? (size === 'large' ? 40 : size === 'small' ? 28 : 32);\n const visibleRows = Math.min(Math.max(rowCount, 1), maxVisibleRows);\n const estimatedHeight = visibleRows * estimatedRowHeight + 8;\n\n return {\n height: `min(${estimatedHeight}px, var(--lobe-select-available-height, var(--available-height)))`,\n };\n }, [filteredOptions, listItemHeight, size, virtual]);\n\n const keepMountedIndices = useMemo(() => {\n if (!virtual || valueArray.length === 0) return undefined;\n const selectedSet = new Set(valueArray);\n const indices: number[] = [];\n let index = 0;\n\n filteredOptions.forEach((item) => {\n if (isGroupOption(item)) {\n if (item.options.some((option) => selectedSet.has(option.value))) {\n indices.push(index);\n }\n index += 1;\n return;\n }\n\n if (selectedSet.has(item.value)) {\n indices.push(index);\n }\n index += 1;\n });\n\n return indices.length ? indices : undefined;\n }, [filteredOptions, valueArray, virtual]);\n\n const itemTextClassName = cx(\n optionRender ? menuStyles.itemContent : menuStyles.label,\n styles.itemText,\n classNames?.itemText,\n );\n\n const isBoldIndicator = selectedIndicatorVariant === 'bold';\n let optionIndex = 0;\n const renderOptions = (items: LobeSelectOptions) =>\n items.map((item, index) => {\n if (isGroupOption(item)) {\n return (\n <Select.Group className={cx(styles.group, classNames?.group)} key={`group-${index}`}>\n <Select.GroupLabel\n className={cx(menuStyles.groupLabel, styles.groupLabel, classNames?.groupLabel)}\n >\n {item.label}\n </Select.GroupLabel>\n {item.options.map((option) => {\n const currentIndex = optionIndex++;\n return (\n <Select.Item\n className={cx(\n menuStyles.item,\n styles.item,\n isBoldIndicator && styles.itemBoldSelected,\n classNames?.item,\n classNames?.option,\n option.className,\n )}\n disabled={option.disabled}\n key={`${String(option.value)}-${currentIndex}`}\n label={getOptionSearchText(option)}\n render={virtual ? renderVirtualItem : undefined}\n style={{\n minHeight: listItemHeight,\n ...option.style,\n }}\n value={option.value}\n >\n <Select.ItemText className={itemTextClassName}>\n {optionRender ? optionRender(option, { index: currentIndex }) : option.label}\n </Select.ItemText>\n {!isBoldIndicator && (\n <Select.ItemIndicator\n className={cx(styles.itemIndicator, classNames?.itemIndicator)}\n >\n <Icon icon={Check} size={'small'} />\n </Select.ItemIndicator>\n )}\n </Select.Item>\n );\n })}\n </Select.Group>\n );\n }\n\n const currentIndex = optionIndex++;\n return (\n <Select.Item\n className={cx(\n menuStyles.item,\n styles.item,\n isBoldIndicator && styles.itemBoldSelected,\n classNames?.item,\n classNames?.option,\n item.className,\n )}\n disabled={item.disabled}\n key={`${String(item.value)}-${currentIndex}`}\n label={getOptionSearchText(item)}\n render={virtual ? renderVirtualItem : undefined}\n style={{\n minHeight: listItemHeight,\n ...item.style,\n }}\n value={item.value}\n >\n <Select.ItemText className={itemTextClassName}>\n {optionRender ? optionRender(item, { index: currentIndex }) : item.label}\n </Select.ItemText>\n {!isBoldIndicator && (\n <Select.ItemIndicator className={cx(styles.itemIndicator, classNames?.itemIndicator)}>\n <Icon icon={Check} size={'small'} />\n </Select.ItemIndicator>\n )}\n </Select.Item>\n );\n });\n\n return (\n <Select.Root\n disabled={disabled}\n id={id}\n modal={isItemAligned}\n multiple={isMultiple}\n name={name}\n onOpenChange={handleOpenChange}\n onValueChange={handleValueChange}\n open={mergedOpen}\n readOnly={readOnly}\n required={required}\n value={normalizedValue}\n >\n <Select.Trigger\n autoFocus={autoFocus}\n className={triggerClassName}\n disabled={disabled}\n style={style}\n >\n {prefixNode !== null && prefixNode !== undefined && (\n <span className={cx(styles.prefix, classNames?.prefix)}>{prefixNode}</span>\n )}\n <Select.Value className={cx(styles.value, classNames?.value)}>{renderValue}</Select.Value>\n <span className={cx(styles.suffix, classNames?.suffix)}>\n {showClear && (\n <span\n className={cx(styles.clear, classNames?.clear)}\n data-role=\"lobe-select-clear\"\n onClick={handleClear}\n >\n <Icon icon={X} size={'small'} />\n </span>\n )}\n {suffixIconNode !== null && suffixIconNode !== undefined && (\n <Select.Icon className={cx(styles.icon, classNames?.icon)}>\n {suffixIconNode}\n </Select.Icon>\n )}\n </span>\n </Select.Trigger>\n\n <Select.Portal container={portalContainer}>\n <Select.Positioner\n align=\"start\"\n alignItemWithTrigger={isItemAligned}\n className={styles.positioner}\n side=\"bottom\"\n sideOffset={6}\n >\n <Select.Popup\n className={cx(\n menuStyles.popup,\n styles.popup,\n popupClassName,\n classNames?.popup,\n classNames?.dropdown,\n )}\n style={popupStyle}\n >\n {shouldShowSearch && (\n <div className={cx(styles.search, classNames?.search)}>\n <input\n className={styles.searchInput}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n placeholder={typeof placeholder === 'string' ? placeholder : undefined}\n value={searchValue}\n />\n </div>\n )}\n {(() => {\n const content =\n filteredOptions.length > 0 ? (\n renderOptions(filteredOptions)\n ) : (\n <div\n className={cx(\n menuStyles.item,\n menuStyles.empty,\n styles.empty,\n classNames?.empty,\n )}\n >\n No data\n </div>\n );\n\n if (!virtual || filteredOptions.length === 0) {\n return (\n <Select.List\n className={cx(styles.list, classNames?.list)}\n data-virtual={virtual || undefined}\n >\n {content}\n </Select.List>\n );\n }\n\n return (\n <Select.List\n className={cx(styles.list, classNames?.list)}\n data-virtual={virtual || undefined}\n onPointerDown={virtual ? markPointerScroll : undefined}\n onScroll={virtual ? handleListScroll : undefined}\n onTouchMove={virtual ? markPointerScroll : undefined}\n onWheel={virtual ? markPointerScroll : undefined}\n ref={listRef}\n style={virtualListStyle}\n tabIndex={virtual ? -1 : undefined}\n >\n <Virtualizer itemSize={listItemHeight} keepMounted={keepMountedIndices}>\n {content}\n </Virtualizer>\n </Select.List>\n );\n })()}\n </Select.Popup>\n </Select.Positioner>\n </Select.Portal>\n </Select.Root>\n );\n },\n);\n\nLobeSelect.displayName = 'LobeSelect';\n\nexport default LobeSelect;\n","'use client';\n\nimport { Switch } from '@base-ui/react/switch';\nimport { cx } from 'antd-style';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport { createContext, useContext, useMemo, useRef, useState } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport { useMotionComponent } from '@/MotionProvider';\n\nimport { rootVariants, styles, thumbVariants } from './style';\nimport type {\n LobeSwitchChangeEventHandler,\n LobeSwitchContextType,\n LobeSwitchIconPosition,\n LobeSwitchIconProps,\n LobeSwitchRootProps,\n LobeSwitchThumbProps,\n} from './type';\n\nconst LobeSwitchContext = createContext<LobeSwitchContextType | null>(null);\n\nexport const useLobeSwitchContext = () => {\n const context = useContext(LobeSwitchContext);\n if (!context) {\n throw new Error('useLobeSwitchContext must be used within a LobeSwitchRoot');\n }\n return context;\n};\n\ntype LobeSwitchRootInternalProps = Omit<LobeSwitchRootProps, 'onCheckedChange' | 'onClick'> & {\n onCheckedChange?: LobeSwitchChangeEventHandler;\n onClick?: LobeSwitchChangeEventHandler;\n};\n\nexport const LobeSwitchRoot = ({\n checked,\n className,\n defaultChecked,\n onCheckedChange,\n onClick,\n size = 'default',\n children,\n disabled,\n readOnly,\n required,\n inputRef,\n id,\n name,\n ...rest\n}: LobeSwitchRootInternalProps) => {\n const Motion = useMotionComponent();\n const [isPressed, setIsPressed] = useState(false);\n const lastEventRef = useRef<MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>>(\n null,\n );\n\n const [isChecked, setIsChecked] = useControlledState(defaultChecked ?? false, {\n defaultValue: defaultChecked,\n onChange: (value: boolean) => {\n if (lastEventRef.current) {\n onCheckedChange?.(value, lastEventRef.current);\n }\n },\n value: checked,\n });\n\n const baseClassName = rootVariants({ size });\n\n const contextValue = useMemo(\n () => ({\n isChecked: Boolean(isChecked),\n isPressed,\n setIsChecked: (value: boolean) => setIsChecked(value),\n setIsPressed,\n }),\n [isChecked, isPressed, setIsChecked],\n );\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n lastEventRef.current = event;\n onClick?.(!isChecked, event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n lastEventRef.current = event;\n }\n (rest as any).onKeyDown?.(event);\n };\n\n return (\n <LobeSwitchContext.Provider value={contextValue}>\n <Switch.Root\n checked={isChecked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n id={id}\n inputRef={inputRef}\n name={name}\n onCheckedChange={setIsChecked}\n readOnly={readOnly}\n render={\n <Motion.button\n {...rest}\n className={cx(baseClassName, className)}\n initial={false}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onTap={() => setIsPressed(false)}\n onTapCancel={() => setIsPressed(false)}\n onTapStart={() => setIsPressed(true)}\n whileTap=\"tap\"\n />\n }\n required={required}\n >\n {children}\n </Switch.Root>\n </LobeSwitchContext.Provider>\n );\n};\n\nLobeSwitchRoot.displayName = 'LobeSwitchRoot';\n\nexport const LobeSwitchThumb = ({\n className,\n pressedAnimation,\n size = 'default',\n transition = { damping: 25, stiffness: 300, type: 'spring' },\n children,\n ...rest\n}: LobeSwitchThumbProps) => {\n const Motion = useMotionComponent();\n const { isPressed } = useLobeSwitchContext();\n const baseClassName = thumbVariants({ size });\n\n const defaultPressedAnimation = {\n width: size === 'small' ? 16 : 22,\n };\n\n return (\n <Switch.Thumb\n render={\n <Motion.span\n animate={isPressed ? pressedAnimation || defaultPressedAnimation : undefined}\n className={cx(baseClassName, className)}\n layout\n transition={transition}\n {...rest}\n >\n {children}\n </Motion.span>\n }\n />\n );\n};\n\nLobeSwitchThumb.displayName = 'LobeSwitchThumb';\n\nconst getIconPositionClass = (position: LobeSwitchIconPosition, size: 'default' | 'small') => {\n if (position === 'thumb') return styles.iconThumb;\n if (position === 'left') return size === 'small' ? styles.iconLeftSmall : styles.iconLeft;\n return size === 'small' ? styles.iconRightSmall : styles.iconRight;\n};\n\nexport const LobeSwitchIcon = ({\n children,\n className,\n position,\n transition = { bounce: 0, type: 'spring' },\n ...rest\n}: LobeSwitchIconProps & { children?: React.ReactNode; size?: 'default' | 'small' }) => {\n const Motion = useMotionComponent();\n const { isChecked } = useLobeSwitchContext();\n const size = (rest as any).size || 'default';\n\n const isAnimated = useMemo(() => {\n if (position === 'right') return !isChecked;\n if (position === 'left') return isChecked;\n if (position === 'thumb') return true;\n return false;\n }, [position, isChecked]);\n\n const positionClass = getIconPositionClass(position, size);\n\n return (\n <Motion.span\n animate={isAnimated ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0 }}\n className={cx(styles.icon, positionClass, className)}\n transition={transition}\n {...rest}\n >\n {children}\n </Motion.span>\n );\n};\n\nLobeSwitchIcon.displayName = 'LobeSwitchIcon';\n\nexport { styles as lobeSwitchStyles } from './style';\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n icon: css`\n pointer-events: none;\n\n position: absolute;\n inset-block: 0 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n color: ${cssVar.colorTextLightSolid};\n `,\n iconLeft: css`\n inset-inline-start: 5px;\n `,\n iconLeftSmall: css`\n inset-inline-start: 4px;\n `,\n iconRight: css`\n inset-inline-end: 5px;\n `,\n iconRightSmall: css`\n inset-inline-end: 4px;\n `,\n iconThumb: css`\n position: relative;\n inset: unset;\n transform: none;\n color: ${cssVar.colorPrimary};\n `,\n loading: css`\n @keyframes lobe-switch-loading {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n\n animation: lobe-switch-loading 1s linear infinite;\n `,\n root: css`\n cursor: pointer;\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n\n box-sizing: border-box;\n padding: 2px;\n border: 0;\n border-radius: 100px;\n\n background: ${cssVar.colorTextQuaternary};\n outline: none;\n\n transition: background 150ms ${cssVar.motionEaseOut};\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n\n &:hover:not([data-disabled]) {\n background: ${cssVar.colorTextTertiary};\n }\n\n &[data-checked] {\n justify-content: flex-end;\n background: ${cssVar.colorPrimary};\n\n &:hover:not([data-disabled]) {\n background: ${cssVar.colorPrimaryHover};\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n rootDefault: css`\n width: 44px;\n min-width: 44px;\n height: 22px;\n `,\n rootSmall: css`\n width: 28px;\n min-width: 28px;\n height: 16px;\n `,\n thumb: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n border-radius: 50%;\n\n background: ${cssVar.colorBgContainer};\n box-shadow:\n 0 2px 4px 0 rgba(0, 35, 11, 20%),\n 0 1px 2px 0 rgba(0, 0, 0, 8%);\n\n [data-disabled] > & {\n box-shadow: none;\n }\n `,\n thumbDefault: css`\n width: 18px;\n height: 18px;\n `,\n thumbSmall: css`\n width: 12px;\n height: 12px;\n `,\n}));\n\nexport const rootVariants = cva(styles.root, {\n defaultVariants: {\n size: 'default',\n },\n variants: {\n size: {\n default: styles.rootDefault,\n small: styles.rootSmall,\n },\n },\n});\n\nexport const thumbVariants = cva(styles.thumb, {\n defaultVariants: {\n size: 'default',\n },\n variants: {\n size: {\n default: styles.thumbDefault,\n small: styles.thumbSmall,\n },\n },\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { Loader2 } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { LobeSwitchIcon, LobeSwitchRoot, LobeSwitchThumb } from './atoms';\nimport { styles } from './style';\nimport type { LobeSwitchProps } from './type';\n\nconst LobeSwitch = memo<LobeSwitchProps>(\n ({\n autoFocus,\n checked,\n checkedChildren,\n className,\n classNames,\n defaultChecked,\n defaultValue,\n disabled,\n id,\n loading,\n name,\n onChange,\n onClick,\n ref,\n rootClassName,\n size = 'default',\n style,\n styles: customStyles,\n tabIndex,\n title,\n unCheckedChildren,\n value,\n }) => {\n const isDisabled = disabled || loading;\n const resolvedChecked = value ?? checked;\n const resolvedDefaultChecked = defaultValue ?? defaultChecked;\n\n return (\n <LobeSwitchRoot\n autoFocus={autoFocus}\n checked={resolvedChecked}\n className={cx(className, rootClassName, classNames?.root)}\n defaultChecked={resolvedDefaultChecked}\n disabled={isDisabled}\n id={id}\n name={name}\n onCheckedChange={onChange}\n onClick={onClick}\n ref={ref}\n size={size}\n style={{ ...style, ...customStyles?.root }}\n tabIndex={tabIndex}\n title={title}\n >\n {checkedChildren && (\n <LobeSwitchIcon\n className={classNames?.content}\n position=\"left\"\n size={size}\n style={customStyles?.content}\n >\n {checkedChildren}\n </LobeSwitchIcon>\n )}\n {unCheckedChildren && (\n <LobeSwitchIcon\n className={classNames?.content}\n position=\"right\"\n size={size}\n style={customStyles?.content}\n >\n {unCheckedChildren}\n </LobeSwitchIcon>\n )}\n <LobeSwitchThumb className={classNames?.thumb} size={size} style={customStyles?.thumb}>\n {loading && (\n <Icon\n className={styles.loading}\n icon={Loader2}\n size={size === 'small' ? 8 : 12}\n style={{ color: 'var(--lobe-color-primary)' }}\n />\n )}\n </LobeSwitchThumb>\n </LobeSwitchRoot>\n );\n },\n);\n\nLobeSwitch.displayName = 'LobeSwitch';\n\nexport default LobeSwitch;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback } from 'react';\n\nimport { PreviewGroup } from '@/Image';\n\nimport { MarkdownRender, StreamdownRender } from './SyntaxMarkdown';\nimport Typography from './Typography';\nimport { MarkdownProvider } from './components/MarkdownProvider';\nimport { useDelayedAnimated } from './components/useDelayedAnimated';\nimport { variants } from './style';\nimport type { MarkdownProps } from './type';\n\nconst Markdown = memo<MarkdownProps>((props) => {\n const {\n ref,\n children = '',\n className,\n style,\n fullFeaturedCodeBlock,\n onDoubleClick,\n animated,\n enableLatex = true,\n enableMermaid = true,\n enableImageGallery,\n enableCustomFootnotes,\n enableGithubAlert,\n enableStream = true,\n componentProps,\n rehypePluginsAhead,\n allowHtml,\n borderRadius,\n fontSize = props.variant === 'chat' ? 14 : undefined,\n headerMultiple = props.variant === 'chat' ? 0.25 : undefined,\n marginMultiple = props.variant === 'chat' ? 1 : undefined,\n variant = 'default',\n reactMarkdownProps,\n lineHeight = props.variant === 'chat' ? 1.6 : undefined,\n rehypePlugins,\n remarkPlugins,\n remarkPluginsAhead,\n components = {},\n customRender,\n showFootnotes = true,\n citations,\n ...rest\n } = props;\n\n const delayedAnimated = useDelayedAnimated(animated);\n\n const Render = useCallback(\n ({\n enableStream,\n children,\n reactMarkdownProps,\n }: Pick<MarkdownProps, 'children' | 'enableStream' | 'reactMarkdownProps'>) => {\n const DefaultRender = enableStream ? StreamdownRender : MarkdownRender;\n const defaultDOM = <DefaultRender {...reactMarkdownProps}>{children}</DefaultRender>;\n return customRender ? customRender(defaultDOM, { text: children }) : defaultDOM;\n },\n [customRender],\n );\n\n return (\n <PreviewGroup enable={enableImageGallery}>\n <Typography\n borderRadius={borderRadius}\n className={cx(variants({ enableLatex, variant }), className)}\n data-code-type=\"markdown\"\n fontSize={fontSize}\n headerMultiple={headerMultiple}\n lineHeight={lineHeight}\n marginMultiple={marginMultiple}\n onDoubleClick={onDoubleClick}\n ref={ref}\n style={style}\n {...rest}\n >\n <MarkdownProvider\n allowHtml={allowHtml}\n animated={delayedAnimated}\n citations={citations}\n componentProps={componentProps}\n components={components}\n enableCustomFootnotes={enableCustomFootnotes}\n enableGithubAlert={enableGithubAlert}\n enableLatex={enableLatex}\n enableMermaid={enableMermaid}\n fullFeaturedCodeBlock={fullFeaturedCodeBlock}\n rehypePlugins={rehypePlugins}\n rehypePluginsAhead={rehypePluginsAhead}\n remarkPlugins={remarkPlugins}\n remarkPluginsAhead={remarkPluginsAhead}\n showFootnotes={showFootnotes}\n variant={variant}\n >\n <Render\n enableStream={enableStream && delayedAnimated}\n reactMarkdownProps={reactMarkdownProps}\n >\n {children}\n </Render>\n </MarkdownProvider>\n </Typography>\n </PreviewGroup>\n );\n});\n\nMarkdown.displayName = 'Markdown';\n\nexport default Markdown;\n","'use client';\n\nimport { memo } from 'react';\nimport Markdown, { type Options } from 'react-markdown';\n\nimport {\n useMarkdownComponents,\n useMarkdownContent,\n useMarkdownRehypePlugins,\n useMarkdownRemarkPlugins,\n} from '@/hooks/useMarkdown';\n\nconst MarkdownRenderer = memo<Options>(\n ({ children, ...rest }) => {\n const escapedContent = useMarkdownContent(children || '');\n const components = useMarkdownComponents();\n const rehypePluginsList = useMarkdownRehypePlugins();\n const remarkPluginsList = useMarkdownRemarkPlugins();\n\n return (\n <Markdown\n {...rest}\n components={components}\n rehypePlugins={rehypePluginsList}\n remarkPlugins={remarkPluginsList}\n >\n {escapedContent}\n </Markdown>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nexport default MarkdownRenderer;\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\nimport type { Components } from 'react-markdown';\n\nimport Hotkey from '@/Hotkey';\nimport { CodeBlock } from '@/Markdown/components/CodeBlock';\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport Image from '@/mdx/mdxComponents/Image';\nimport Link from '@/mdx/mdxComponents/Link';\nimport Section from '@/mdx/mdxComponents/Section';\nimport Video from '@/mdx/mdxComponents/Video';\n\nexport const useMarkdownComponents = (): Components => {\n const {\n components,\n animated,\n citations,\n componentProps,\n enableMermaid,\n fullFeaturedCodeBlock,\n showFootnotes,\n } = useMarkdownContext();\n\n const memoA = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Link citations={citations} {...props} {...componentProps?.a} />,\n [citations, componentProps?.a],\n );\n\n const memoImg = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Image {...props} {...componentProps?.img} />,\n [componentProps?.img],\n );\n\n const memoVideo = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Video {...props} {...componentProps?.video} />,\n [componentProps?.video],\n );\n\n const memoSection = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Section showFootnotes={showFootnotes} {...props} />,\n [showFootnotes],\n );\n\n const memoKbd = useCallback(\n ({ children }: any) => <Hotkey keys={children} style={{ display: 'inline-flex' }} />,\n [],\n );\n\n const memoBr = useCallback(() => <br />, []);\n\n const memeP = useCallback(({ style, children, className }: any) => {\n const skipWrapperTags = ['img', 'video'];\n if (typeof children === 'object' && skipWrapperTags.includes(children?.props?.node?.tagName)) {\n return children;\n }\n return (\n <p className={className} style={style}>\n {children}\n </p>\n );\n }, []);\n\n // Stable references for theme objects to prevent unnecessary re-renders\n const highlightTheme = useMemo(\n () => componentProps?.highlight?.theme,\n [JSON.stringify(componentProps?.highlight?.theme)],\n );\n\n const mermaidTheme = useMemo(\n () => componentProps?.mermaid?.theme,\n [JSON.stringify(componentProps?.mermaid?.theme)],\n );\n\n // Create stable component props reference\n const stableComponentProps = useMemo(() => {\n if (!componentProps) return;\n\n return {\n highlight: componentProps.highlight\n ? { ...componentProps.highlight, theme: highlightTheme }\n : undefined,\n mermaid: componentProps.mermaid\n ? { ...componentProps.mermaid, theme: mermaidTheme }\n : undefined,\n };\n }, [highlightTheme, mermaidTheme]);\n\n const memoPre = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => (\n <CodeBlock\n animated={animated}\n enableMermaid={enableMermaid}\n fullFeatured={fullFeaturedCodeBlock}\n {...stableComponentProps}\n {...componentProps?.pre}\n {...props}\n />\n ),\n [animated, enableMermaid, fullFeaturedCodeBlock, stableComponentProps, componentProps?.pre],\n );\n\n const memoColorPreview = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <code {...props} />,\n [],\n );\n\n const memoComponents = useMemo(\n () => ({\n a: memoA,\n br: memoBr,\n colorPreview: memoColorPreview,\n img: memoImg,\n kbd: memoKbd,\n p: memeP,\n pre: memoPre,\n section: memoSection,\n video: memoVideo,\n }),\n [memoA, memoBr, memoImg, memoVideo, memoPre, memoSection, memeP, memoColorPreview, memoKbd],\n );\n\n return useMemo(\n () => ({\n ...memoComponents,\n ...components,\n }),\n [memoComponents, components],\n );\n};\n","import { memo } from 'react';\n\nimport { type HighlighterProps } from '@/Highlighter';\nimport { FALLBACK_LANG } from '@/Highlighter/const';\nimport { type MermaidProps } from '@/Mermaid';\nimport Pre, { PreMermaid, PreSingleLine } from '@/mdx/mdxComponents/Pre';\n\nconst countLines = (str: string): number => {\n const regex = /\\n/g;\n const matches = str.match(regex);\n return matches ? matches.length : 1;\n};\n\nexport const useCode = (raw: any) => {\n if (!raw) return;\n\n const { children = '', className } = raw?.props || { children: '' };\n\n if (!children) return;\n\n const content = Array.isArray(children) ? (children[0] as string) : children;\n\n const lang = className?.replace('language-', '') || FALLBACK_LANG;\n\n const isSingleLine = countLines(content) <= 1 && content.length <= 32;\n\n return {\n content,\n isSingleLine,\n lang,\n };\n};\n\ninterface CodeBlockProps {\n animated?: boolean;\n children: any;\n enableMermaid?: boolean;\n fullFeatured?: boolean;\n highlight?: HighlighterProps;\n mermaid?: MermaidProps;\n}\n\nexport const CodeBlock = memo<CodeBlockProps>(\n ({ fullFeatured, enableMermaid, highlight, mermaid, children, animated, ...rest }) => {\n const code = useCode(children);\n\n if (!code) return;\n\n if (enableMermaid && code.lang === 'mermaid')\n return (\n <PreMermaid animated={animated} fullFeatured={fullFeatured} {...mermaid} {...rest}>\n {code.content}\n </PreMermaid>\n );\n\n if (!highlight && code.isSingleLine)\n return <PreSingleLine language={code.lang}>{code.content}</PreSingleLine>;\n\n return (\n <Pre\n animated={animated}\n fullFeatured={fullFeatured}\n language={code.lang}\n {...highlight}\n {...rest}\n >\n {code.content}\n </Pre>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n","'use client';\n\nimport { createStaticStyles, cx } from 'antd-style';\nimport type { FC } from 'react';\n\nimport Highlighter, { type HighlighterProps } from '@/Highlighter';\nimport { FALLBACK_LANG } from '@/Highlighter/const';\nimport Mermaid, { type MermaidProps } from '@/Mermaid';\nimport Snippet, { type SnippetProps } from '@/Snippet';\n\nconst styles = createStaticStyles(({ css }) => ({\n container: css`\n overflow: hidden;\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n border-radius: calc(var(--lobe-markdown-border-radius) * 1px);\n box-shadow: 0 0 0 1px var(--lobe-markdown-border-color) inset;\n `,\n}));\n\nexport type PreProps = HighlighterProps;\n\nexport const Pre: FC<PreProps> = ({\n fullFeatured,\n fileName,\n allowChangeLanguage,\n language = FALLBACK_LANG,\n children,\n className,\n style,\n variant = 'filled',\n icon,\n theme,\n ...rest\n}) => {\n return (\n <Highlighter\n allowChangeLanguage={allowChangeLanguage}\n className={cx(styles.container, className)}\n fileName={fileName}\n fullFeatured={fullFeatured}\n icon={icon}\n language={language}\n style={style}\n theme={theme}\n variant={variant}\n {...rest}\n >\n {children}\n </Highlighter>\n );\n};\n\nexport const PreSingleLine: FC<SnippetProps> = ({\n language = FALLBACK_LANG,\n children,\n className,\n style,\n variant = 'filled',\n ...rest\n}) => {\n return (\n <Snippet\n className={cx(styles.container, className)}\n data-code-type=\"highlighter\"\n language={language}\n style={style}\n variant={variant}\n {...rest}\n >\n {children}\n </Snippet>\n );\n};\n\nexport const PreMermaid: FC<MermaidProps> = ({\n animated,\n fullFeatured,\n children,\n className,\n style,\n variant = 'filled',\n theme,\n ...rest\n}) => {\n return (\n <Mermaid\n animated={animated}\n className={cx(styles.container, className)}\n fullFeatured={fullFeatured}\n style={style}\n theme={theme}\n variant={variant}\n {...rest}\n >\n {children}\n </Mermaid>\n );\n};\n\nPre.displayName = 'MdxPre';\n\nexport default Pre;\n","interface MermaidThemeItem {\n background?: string;\n displayName: string;\n id: string;\n}\n\nexport const mermaidThemes: MermaidThemeItem[] = [\n {\n displayName: 'Lobe Theme',\n id: 'lobe-theme',\n },\n {\n background: '#fbf9ff',\n displayName: 'Mermaid Default',\n id: 'default',\n },\n {\n background: '#fffcf8',\n displayName: 'Mermaid Base',\n id: 'base',\n },\n {\n background: '#000',\n displayName: 'Mermaid Dark',\n id: 'dark',\n },\n {\n background: '#f9ffeb',\n displayName: 'Mermaid Forest',\n id: 'forest',\n },\n {\n background: '#fff',\n displayName: 'Mermaid Neutral',\n id: 'neutral',\n },\n];\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { styles, variants } from '@/Highlighter/style';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport SyntaxMermaid from './SyntaxMermaid';\nimport { MermaidProps } from './type';\n\nconst Mermaid = memo<MermaidProps>(\n ({\n actionIconSize,\n animated,\n bodyRender,\n children,\n classNames,\n className,\n copyable = true,\n defaultExpand = true,\n fileName,\n fullFeatured,\n language = 'mermaid',\n actionsRender,\n shadow,\n showLanguage = true,\n style,\n styles: customStyles,\n theme,\n variant = 'filled',\n ...rest\n }) => {\n const tirmedChildren = children.trim();\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton content={getCopyContent} size={actionIconSize || { blockSize: 28, size: 16 }} />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, originalActions, tirmedChildren]);\n\n const defaultBody = useMemo(\n () => (\n <SyntaxMermaid\n animated={animated}\n className={classNames?.content}\n style={customStyles?.content}\n theme={theme}\n variant={variant}\n >\n {tirmedChildren}\n </SyntaxMermaid>\n ),\n [animated, theme, tirmedChildren, variant, classNames?.content, customStyles?.content],\n );\n\n const body = useMemo(() => {\n if (!bodyRender) return defaultBody;\n return bodyRender({ content: tirmedChildren, originalNode: defaultBody });\n }, [bodyRender, defaultBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n language={language}\n shadow={shadow}\n showLanguage={showLanguage}\n style={style}\n styles={customStyles}\n variant={variant}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <div\n className={cx(variants({ shadow, variant }), className)}\n data-code-type=\"mermaid\"\n style={style}\n {...rest}\n >\n <Flexbox align={'center'} className={styles.actions} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n {showLanguage && <Tag className={styles.lang}>{language.toLowerCase()}</Tag>}\n {body}\n </div>\n );\n },\n);\n\nMermaid.displayName = 'Mermaid';\n\nexport default Mermaid;\n\nexport { type MermaidProps } from './type';\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { bodyVariants, headerVariants, variants } from '@/Highlighter/style';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport { MermaidProps } from './type';\n\nconst MermaidHeaderLanguage = memo(\n ({\n fileName,\n language,\n showLanguage,\n }: {\n fileName?: string;\n language: string;\n showLanguage?: boolean;\n }) => {\n if (!showLanguage) return null;\n\n return (\n <Flexbox\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n horizontal\n justify={'flex-start'}\n paddingInline={8}\n >\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={fileName || language}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n\n <Text ellipsis fontSize={13}>\n {fileName || 'Mermaid'}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.fileName === next.fileName &&\n prev.language === next.language &&\n prev.showLanguage === next.showLanguage,\n);\n\nexport interface MermaidFullFeaturedProps extends Omit<MermaidProps, 'children'> {\n children: ReactNode;\n content: string;\n}\n\nexport const MermaidFullFeatured = memo<MermaidFullFeaturedProps>(\n ({\n showLanguage,\n styles: customStyles,\n classNames,\n content,\n children,\n className,\n copyable,\n actionsRender,\n style,\n variant,\n shadow,\n language = 'mermaid',\n fileName,\n defaultExpand = true,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, originalActions]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant }), className)}\n data-code-type=\"mermaid\"\n style={style}\n {...rest}\n >\n <Flexbox\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n horizontal\n justify={'space-between'}\n onClick={handleToggleExpand}\n style={customStyles?.header}\n >\n <MermaidHeaderLanguage\n fileName={fileName}\n language={language}\n showLanguage={showLanguage}\n />\n <Flexbox align={'center'} flex={'none'} gap={4} horizontal onClick={stopPropagation}>\n <Flexbox align={'center'} className={'panel-actions'} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n onClick={handleToggleExpand}\n size={'small'}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default MermaidFullFeatured;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport type { SyntaxMermaidProps } from '../type';\nimport StaticMermaid from './StaticMermaid';\nimport StreamMermaid from './StreamMermaid';\nimport { variants } from './style';\n\nconst SyntaxMermaid = memo<SyntaxMermaidProps>(\n ({\n animated,\n children,\n className,\n fallbackClassName,\n ref,\n style,\n theme: customTheme,\n variant = 'borderless',\n }) => {\n const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n const showBackground = !isDefaultTheme && variant === 'filled';\n const resolvedTheme = isDefaultTheme ? undefined : customTheme;\n\n const mermaidClassName = cx(\n variants({ animated, mermaid: true, showBackground, variant }),\n className,\n );\n const fallback = cx(\n variants({ animated, mermaid: false, showBackground, variant }),\n fallbackClassName,\n );\n\n if (animated) {\n return (\n <StreamMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StreamMermaid>\n );\n }\n\n return (\n <StaticMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StaticMermaid>\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.animated === nextProps.animated,\n);\n\nSyntaxMermaid.displayName = 'SyntaxMermaid';\n\nexport default SyntaxMermaid;\n","'use client';\n\nimport { kebabCase } from 'es-toolkit/compat';\nimport { memo, useEffect, useId, useMemo, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport Image from '@/Image';\nimport { useMermaid } from '@/hooks/useMermaid';\n\nimport { mermaidThemes } from '../const';\nimport type { SyntaxMermaidProps } from '../type';\n\ninterface StaticMermaidProps {\n children: string;\n className?: string;\n fallbackClassName?: string;\n ref?: Ref<HTMLDivElement>;\n style?: SyntaxMermaidProps['style'];\n theme?: SyntaxMermaidProps['theme'];\n variant?: SyntaxMermaidProps['variant'];\n}\n\nconst StaticMermaid = memo<StaticMermaidProps>(\n ({ children, className, fallbackClassName, ref, style, theme: customTheme, variant }) => {\n const safeChildren = children ?? '';\n const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n\n const background = useMemo(() => {\n if (isDefaultTheme) return;\n return mermaidThemes.find((item) => item.id === customTheme)?.background;\n }, [isDefaultTheme, customTheme]);\n\n const id = useId();\n const mermaidId = kebabCase(`mermaid-${id}`);\n const data = useMermaid(safeChildren, {\n id: mermaidId,\n theme: isDefaultTheme ? undefined : customTheme,\n });\n const isLoading = !data;\n const [blobUrl, setBlobUrl] = useState<string>();\n\n // 组件卸载时清理 Blob URL,避免内存泄漏\n useEffect(() => {\n return () => {\n if (blobUrl) URL.revokeObjectURL(blobUrl);\n };\n }, [blobUrl]);\n\n useEffect(() => {\n if (isLoading || !data) return;\n let finalSvgString = data;\n\n // 修复Firefox点击预览mermaid图时宽高为0导致不显示的异常\n if (\n typeof window !== 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.userAgent.includes('Firefox')\n ) {\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(data, 'image/svg+xml');\n const svgElement = svgDoc.documentElement;\n if (svgElement && svgElement.hasAttribute('viewBox')) {\n const viewBox = svgElement.getAttribute('viewBox')!;\n const viewBoxParts = viewBox.split(' ');\n if (Array.isArray(viewBoxParts) && viewBoxParts.length === 4) {\n svgElement.setAttribute('width', viewBoxParts[2]);\n svgElement.setAttribute('height', viewBoxParts[3]);\n }\n finalSvgString = new XMLSerializer().serializeToString(svgDoc);\n }\n }\n\n // 创建Blob对象\n const svgBlob = new Blob([finalSvgString], { type: 'image/svg+xml' });\n // 创建并保存Blob URL\n const url = URL.createObjectURL(svgBlob);\n setBlobUrl(url);\n }, [isLoading, data]);\n\n if (!blobUrl) {\n return (\n <div className={fallbackClassName} style={style}>\n <div style={{ padding: 16 }}>Loading...</div>\n </div>\n );\n }\n\n return (\n <Image\n alt={'mermaid'}\n className={className}\n maxHeight={480}\n minWidth={300}\n objectFit={'contain'}\n ref={ref}\n src={blobUrl}\n style={{\n background: variant === 'filled' ? background : undefined,\n borderRadius: 0,\n margin: 0,\n minWidth: 300,\n padding: variant === 'borderless' ? 0 : 16,\n position: 'relative',\n width: '100%',\n ...style,\n }}\n variant={'borderless'}\n width={'100%'}\n />\n );\n },\n);\n\nStaticMermaid.displayName = 'StaticMermaid';\n\nexport default StaticMermaid;\n","'use client';\n\nimport { useTheme } from 'antd-style';\nimport type { MermaidConfig } from 'mermaid';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Md5 } from 'ts-md5';\n\n// 缓存已验证的图表内容\nexport const MD5_LENGTH_THRESHOLD = 10_000;\n\n// Application-level cache for rendered Mermaid SVG\n// Key: cacheKey string, Value: Promise<string>\nconst mermaidCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 500;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (mermaidCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(mermaidCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n mermaidCache.delete(key);\n }\n }\n};\n\n// 懒加载 mermaid 实例\nlet mermaidPromise: Promise<typeof import('mermaid').default | null> | null = null;\n\nexport const loadMermaid = (): Promise<typeof import('mermaid').default | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid').then((mod) => mod.default);\n }\n\n return mermaidPromise;\n};\n\n// Helper to create mermaid config\nexport const createMermaidConfig = (\n theme: ReturnType<typeof useTheme>,\n customTheme?: MermaidConfig['theme'],\n): MermaidConfig => ({\n fontFamily: theme.fontFamilyCode,\n gantt: {\n useWidth: 1920,\n },\n securityLevel: 'loose',\n startOnLoad: false,\n theme: customTheme || (theme.isDarkMode ? 'dark' : 'neutral'),\n themeVariables: customTheme\n ? undefined\n : {\n errorBkgColor: theme.colorTextDescription,\n errorTextColor: theme.colorTextDescription,\n fontFamily: theme.fontFamily,\n lineColor: theme.colorTextSecondary,\n mainBkg: theme.colorBgContainer,\n noteBkgColor: theme.colorInfoBg,\n noteTextColor: theme.colorInfoText,\n pie1: theme.geekblue,\n pie2: theme.colorWarning,\n pie3: theme.colorSuccess,\n pie4: theme.colorError,\n primaryBorderColor: theme.colorBorder,\n primaryColor: theme.colorBgContainer,\n primaryTextColor: theme.colorText,\n secondaryBorderColor: theme.colorInfoBorder,\n secondaryColor: theme.colorInfoBg,\n secondaryTextColor: theme.colorInfoText,\n tertiaryBorderColor: theme.colorSuccessBorder,\n tertiaryColor: theme.colorSuccessBg,\n tertiaryTextColor: theme.colorSuccessText,\n textColor: theme.colorText,\n },\n});\n\n/**\n * 验证并处理 Mermaid 图表内容 - 优化版本(移除 SWR)\n */\nexport const useMermaid = (\n content: string,\n {\n id,\n theme: customTheme,\n }: {\n id: string;\n theme?: MermaidConfig['theme'];\n },\n): string => {\n const theme = useTheme();\n const [data, setData] = useState<string>('');\n\n // 提取主题相关配置到 useMemo 中 - 只依赖实际使用的 theme 属性\n const mermaidConfig = useMemo(\n () => createMermaidConfig(theme, customTheme),\n [\n theme.fontFamilyCode,\n theme.isDarkMode,\n theme.colorTextDescription,\n theme.fontFamily,\n theme.colorTextSecondary,\n theme.colorBgContainer,\n theme.colorInfoBg,\n theme.colorInfoText,\n theme.geekblue,\n theme.colorWarning,\n theme.colorSuccess,\n theme.colorError,\n theme.colorBorder,\n theme.colorInfoBorder,\n theme.colorSuccessBorder,\n theme.colorSuccessBg,\n theme.colorSuccessText,\n theme.colorText,\n customTheme,\n ],\n );\n\n // 为长内容生成哈希键\n const cacheKey = useMemo((): string => {\n const hash = content.length < MD5_LENGTH_THRESHOLD ? content : Md5.hashStr(content);\n return [id, customTheme || (theme.isDarkMode ? 'd' : 'l'), hash].filter(Boolean).join('-');\n }, [content, id, theme.isDarkMode, customTheme]);\n\n useEffect(() => {\n // Check cache first\n const cachedPromise = mermaidCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((svg) => {\n setData(svg);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for rendering\n const renderPromise = (async (): Promise<string> => {\n try {\n const mermaidInstance = await loadMermaid();\n if (!mermaidInstance) return '';\n\n // 验证语法\n const isValid = await mermaidInstance.parse(content);\n\n if (isValid) {\n // 初始化并渲染\n mermaidInstance.initialize(mermaidConfig);\n const { svg } = await mermaidInstance.render(id, content);\n return svg;\n } else {\n throw new Error('Mermaid 语法无效');\n }\n } catch (error_) {\n console.error('Mermaid 解析错误:', error_);\n return '';\n }\n })();\n\n // Cache the promise\n mermaidCache.set(cacheKey, renderPromise);\n cleanupCache();\n\n // Handle promise result\n renderPromise\n .then((svg) => {\n // Only update if this is still the current cache key\n if (mermaidCache.get(cacheKey) === renderPromise) {\n setData(svg);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (mermaidCache.get(cacheKey) === renderPromise) {\n mermaidCache.delete(cacheKey);\n }\n });\n }, [cacheKey, content, id, mermaidConfig]);\n\n return data;\n};\n","'use client';\n\nimport { kebabCase } from 'es-toolkit/compat';\nimport { memo, useEffect, useId, useMemo, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport Image from '@/Image';\nimport { useStreamMermaid } from '@/hooks/useStreamMermaid';\n\nimport { mermaidThemes } from '../const';\nimport type { SyntaxMermaidProps } from '../type';\n\ninterface StreamMermaidProps {\n children: string;\n className?: string;\n fallbackClassName?: string;\n ref?: Ref<HTMLDivElement>;\n style?: SyntaxMermaidProps['style'];\n theme?: SyntaxMermaidProps['theme'];\n variant?: SyntaxMermaidProps['variant'];\n}\n\nconst StreamMermaid = memo<StreamMermaidProps>(\n ({ children, className, fallbackClassName, ref, style, theme: customTheme, variant }) => {\n const safeChildren = children ?? '';\n const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n\n const background = useMemo(() => {\n if (isDefaultTheme) return;\n return mermaidThemes.find((item) => item.id === customTheme)?.background;\n }, [isDefaultTheme, customTheme]);\n\n const id = useId();\n const mermaidId = kebabCase(`mermaid-${id}`);\n const data = useStreamMermaid(safeChildren, {\n enabled: true,\n id: mermaidId,\n theme: isDefaultTheme ? undefined : customTheme,\n });\n const isLoading = !data;\n const [blobUrl, setBlobUrl] = useState<string>();\n\n // 组件卸载时清理 Blob URL,避免内存泄漏\n useEffect(() => {\n return () => {\n if (blobUrl) URL.revokeObjectURL(blobUrl);\n };\n }, [blobUrl]);\n\n useEffect(() => {\n if (isLoading || !data) {\n // Clear blob URL when loading or no data\n setBlobUrl(undefined);\n return;\n }\n\n let finalSvgString = data;\n\n // 修复Firefox点击预览mermaid图时宽高为0导致不显示的异常\n if (\n typeof window !== 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.userAgent.includes('Firefox')\n ) {\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(data, 'image/svg+xml');\n const svgElement = svgDoc.documentElement;\n if (svgElement && svgElement.hasAttribute('viewBox')) {\n const viewBox = svgElement.getAttribute('viewBox')!;\n const viewBoxParts = viewBox.split(' ');\n if (Array.isArray(viewBoxParts) && viewBoxParts.length === 4) {\n svgElement.setAttribute('width', viewBoxParts[2]);\n svgElement.setAttribute('height', viewBoxParts[3]);\n }\n finalSvgString = new XMLSerializer().serializeToString(svgDoc);\n }\n }\n\n // 创建Blob对象\n const svgBlob = new Blob([finalSvgString], { type: 'image/svg+xml' });\n // 创建并保存Blob URL\n const url = URL.createObjectURL(svgBlob);\n setBlobUrl(url);\n }, [isLoading, data]);\n\n if (!blobUrl) {\n return (\n <div className={fallbackClassName} style={style}>\n <div style={{ padding: 16 }}>Rendering...</div>\n </div>\n );\n }\n\n return (\n <Image\n alt={'mermaid'}\n className={className}\n maxHeight={480}\n minWidth={300}\n objectFit={'contain'}\n ref={ref}\n src={blobUrl}\n style={{\n background: variant === 'filled' ? background : undefined,\n borderRadius: 0,\n margin: 0,\n minWidth: 300,\n padding: variant === 'borderless' ? 0 : 16,\n position: 'relative',\n width: '100%',\n ...style,\n }}\n variant={'borderless'}\n width={'100%'}\n />\n );\n },\n);\n\nStreamMermaid.displayName = 'StreamMermaid';\n\nexport default StreamMermaid;\n","'use client';\n\nimport { useTheme } from 'antd-style';\nimport type { MermaidConfig } from 'mermaid';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { createMermaidConfig, loadMermaid } from './useMermaid';\n\n/**\n * 流式 Mermaid 渲染 - 支持内容逐步更新\n */\nexport const useStreamMermaid = (\n content: string,\n {\n enabled = true,\n id,\n theme: customTheme,\n }: {\n enabled?: boolean;\n id: string;\n theme?: MermaidConfig['theme'];\n },\n): string => {\n const theme = useTheme();\n const [data, setData] = useState<string>('');\n const previousContentRef = useRef<string>('');\n const latestContentRef = useRef(content);\n const renderTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // 提取主题相关配置到 useMemo 中\n const mermaidConfig = useMemo(\n () => createMermaidConfig(theme, customTheme),\n [\n theme.fontFamilyCode,\n theme.isDarkMode,\n theme.colorTextDescription,\n theme.fontFamily,\n theme.colorTextSecondary,\n theme.colorBgContainer,\n theme.colorInfoBg,\n theme.colorInfoText,\n theme.geekblue,\n theme.colorWarning,\n theme.colorSuccess,\n theme.colorError,\n theme.colorBorder,\n theme.colorInfoBorder,\n theme.colorSuccessBorder,\n theme.colorSuccessBg,\n theme.colorSuccessText,\n theme.colorText,\n customTheme,\n ],\n );\n\n // Update latest content ref\n useEffect(() => {\n latestContentRef.current = content;\n }, [content]);\n\n // Debounced rendering for streaming content\n useEffect(() => {\n if (!enabled) {\n setData('');\n previousContentRef.current = '';\n const timeoutId = renderTimeoutRef.current;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n return;\n }\n\n const currentContent = latestContentRef.current;\n\n // Skip if content hasn't changed\n if (currentContent === previousContentRef.current && data) {\n return;\n }\n\n // Clear previous timeout\n const timeoutId = renderTimeoutRef.current;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n // Debounce rendering for streaming content (wait 300ms after last change)\n renderTimeoutRef.current = setTimeout(async () => {\n const contentToRender = latestContentRef.current;\n\n // Skip if content changed during debounce\n if (contentToRender !== currentContent) {\n return;\n }\n\n try {\n const mermaidInstance = await loadMermaid();\n if (!mermaidInstance) return;\n\n // 验证语法\n const isValid = await mermaidInstance.parse(contentToRender);\n\n if (isValid) {\n // 初始化并渲染\n mermaidInstance.initialize(mermaidConfig);\n const { svg } = await mermaidInstance.render(id, contentToRender);\n\n // Only update if content hasn't changed during rendering\n if (latestContentRef.current === contentToRender) {\n setData(svg);\n previousContentRef.current = contentToRender;\n }\n }\n } catch (error_) {\n // Silently handle errors during streaming\n // Only log if this is the final content\n if (contentToRender === latestContentRef.current) {\n console.error('Mermaid 解析错误:', error_);\n }\n }\n }, 300);\n\n return () => {\n const timeoutId = renderTimeoutRef.current;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [enabled, content, id, mermaidConfig, data]);\n\n return data;\n};\n","import { createStaticStyles, cx, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n img {\n opacity: 1;\n animation: ${fadeIn} 0.5s ease-in-out;\n }\n `,\n\n mermaid: cx(\n 'ant-mermaid-mermaid',\n css`\n img {\n display: block;\n width: 100%;\n height: auto;\n }\n `,\n ),\n\n noBackground: css`\n img {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n padding: 0;\n `,\n\n padding: css`\n padding: 16px;\n `,\n\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n `,\n\n unmermaid: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n mermaid: true,\n showBackground: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n mermaid: {\n false: styles.unmermaid,\n true: styles.mermaid,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport SyntaxHighlighter from '@/Highlighter/SyntaxHighlighter';\nimport Spotlight from '@/awesome/Spotlight';\n\nimport { styles, variants } from './style';\nimport type { SnippetProps } from './type';\n\nconst Snippet: FC<SnippetProps> = ({\n ref,\n prefix,\n language = 'tsx',\n children,\n copyable = true,\n variant = 'filled',\n spotlight,\n shadow,\n className,\n ...rest\n}) => {\n const tirmedChildren = children.trim();\n\n return (\n <Flexbox\n align={'center'}\n className={cx(variants({ shadow, variant }), className)}\n data-code-type=\"highlighter\"\n gap={8}\n horizontal\n ref={ref}\n {...rest}\n >\n {spotlight && <Spotlight />}\n <SyntaxHighlighter className={styles.hightlight} language={language}>\n {[prefix, tirmedChildren].filter(Boolean).join(' ')}\n </SyntaxHighlighter>\n {copyable && <CopyButton content={tirmedChildren} size={'small'} />}\n </Flexbox>\n );\n};\n\nSnippet.displayName = 'Snippet';\n\nexport default Snippet;\n","'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { styles } from './style';\nimport type { SpotlightProps } from './type';\nimport { useMouseOffset } from './useMouseOffset';\n\nconst Spotlight = memo<SpotlightProps>(({ className, size = 64, ...properties }) => {\n const [offset, outside, reference] = useMouseOffset();\n const { isDarkMode } = useThemeMode();\n\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--spotlight-opacity': outside ? '0' : '0.1',\n '--spotlight-size': `${size}px`,\n '--spotlight-x': `${offset?.x ?? 0}px`,\n '--spotlight-y': `${offset?.y ?? 0}px`,\n }),\n [offset, size, outside],\n );\n\n const spotlightStyle = isDarkMode\n ? outside\n ? styles.spotlightDarkOutside\n : styles.spotlightDark\n : outside\n ? styles.spotlightLightOutside\n : styles.spotlightLight;\n\n return (\n <div\n className={cx(spotlightStyle, className)}\n ref={reference}\n style={cssVariables}\n {...properties}\n />\n );\n});\n\nSpotlight.displayName = 'Spotlight';\n\nexport default Spotlight;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n spotlightDark: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset: 0;\n\n border-radius: inherit;\n\n opacity: var(--spotlight-opacity, 0.1);\n background: radial-gradient(\n var(--spotlight-size, 64px) circle at var(--spotlight-x, 0) var(--spotlight-y, 0),\n ${cssVar.colorText},\n transparent\n );\n\n transition: all 0.2s;\n `,\n\n spotlightDarkOutside: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset: 0;\n\n border-radius: inherit;\n\n opacity: 0;\n background: radial-gradient(\n var(--spotlight-size, 64px) circle at var(--spotlight-x, 0) var(--spotlight-y, 0),\n ${cssVar.colorText},\n transparent\n );\n\n transition: all 0.2s;\n `,\n\n spotlightLight: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset: 0;\n\n border-radius: inherit;\n\n opacity: var(--spotlight-opacity, 0.1);\n background: radial-gradient(\n var(--spotlight-size, 64px) circle at var(--spotlight-x, 0) var(--spotlight-y, 0),\n #fff,\n ${cssVar.colorTextQuaternary}\n );\n\n transition: all 0.2s;\n `,\n\n spotlightLightOutside: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset: 0;\n\n border-radius: inherit;\n\n opacity: 0;\n background: radial-gradient(\n var(--spotlight-size, 64px) circle at var(--spotlight-x, 0) var(--spotlight-y, 0),\n #fff,\n ${cssVar.colorTextQuaternary}\n );\n\n transition: all 0.2s;\n `,\n}));\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useMouseOffset = (): any => {\n const [offset, setOffset] = useState<{ x: number; y: number }>();\n const [outside, setOutside] = useState(true);\n const reference = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (reference.current && reference.current.parentElement) {\n const element = reference.current.parentElement;\n\n // debounce?\n const onMouseMove = (e: MouseEvent) => {\n const bound = element.getBoundingClientRect();\n setOffset({ x: e.clientX - bound.x, y: e.clientY - bound.y });\n setOutside(false);\n };\n\n const onMouseLeave = () => {\n setOutside(true);\n };\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseleave', onMouseLeave);\n return () => {\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, []);\n\n return [offset, outside, reference] as const;\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n hightlight: css`\n overflow: auto hidden;\n flex: 1;\n height: 100%;\n padding: 0;\n\n pre {\n display: flex;\n align-items: center;\n height: 100%;\n }\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n\n overflow: hidden;\n\n max-width: 100%;\n height: 38px;\n padding-block: 0;\n padding-inline: 12px 8px;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { PropsWithChildren, createContext, memo, use } from 'react';\n\nimport type { SyntaxMarkdownProps } from '../type';\n\nexport type MarkdownContentConfig = Omit<SyntaxMarkdownProps, 'children' | 'reactMarkdownProps'>;\n\nexport const MarkdownContext = createContext<MarkdownContentConfig>({});\n\nexport const MarkdownProvider = memo<PropsWithChildren<MarkdownContentConfig>>(\n ({ children, ...config }) => {\n return <MarkdownContext value={config}>{children}</MarkdownContext>;\n },\n);\n\nexport const useMarkdownContext = () => {\n return use(MarkdownContext);\n};\n","'use client';\n\nimport type { FC } from 'react';\n\nimport LobeImage, { type ImageProps as LobeImageProps } from '@/Image';\n\nexport type ImageProps = LobeImageProps;\nconst Image: FC<ImageProps> = ({ style, alt = 'img', ...rest }) => {\n return (\n <LobeImage\n alt={alt}\n style={{\n borderRadius: 'calc(var(--lobe-markdown-border-radius) * 1px)',\n marginBlock: 'calc(var(--lobe-markdown-margin-multiple) * 1em)',\n ...style,\n }}\n {...rest}\n />\n );\n};\n\nImage.displayName = 'MdxImage';\n\nexport default Image;\n","export const safeParseJSON = <T = Record<string, any>>(text?: string) => {\n if (typeof text !== 'string') return;\n\n let json: T;\n try {\n json = JSON.parse(text);\n } catch {\n return;\n }\n\n return json;\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { isEmpty } from 'es-toolkit/compat';\nimport type { FC, ReactNode } from 'react';\n\nimport PopoverPanel from '@/mdx/mdxComponents/Citation/PopoverPanel';\nimport { CitationItem } from '@/types/citation';\n\nimport { styles } from './style';\n\ninterface CitationProps {\n children?: ReactNode;\n citationDetail?: CitationItem;\n citations?: string[];\n href?: string;\n id: string;\n inSup?: boolean;\n}\n\nconst Citation: FC<CitationProps> = ({ children, href, inSup, id, citationDetail }) => {\n const usePopover = !isEmpty(citationDetail);\n const url = citationDetail?.url || href;\n\n // [^1] 格式类型\n if (inSup) {\n return (\n <PopoverPanel {...citationDetail} usePopover={usePopover}>\n <span className={styles.container}>\n <a\n aria-describedby=\"footnote-label\"\n data-footnote-ref=\"true\"\n href={url}\n id={id}\n rel=\"noreferrer\"\n target={citationDetail?.url ? '_blank' : undefined}\n >\n {children}\n </a>\n </span>\n </PopoverPanel>\n );\n }\n\n return (\n <PopoverPanel {...citationDetail} usePopover={usePopover}>\n <sup className={cx(styles.container, styles.supContainer)}>\n {url ? (\n <a\n aria-describedby=\"footnote-label\"\n data-footnote-ref={true}\n href={url}\n rel=\"noreferrer\"\n target={'_blank'}\n >\n {children}\n </a>\n ) : (\n <span aria-describedby=\"footnote-label\" data-footnote-ref={true}>\n {children}\n </span>\n )}\n </sup>\n </PopoverPanel>\n );\n};\n\nCitation.displayName = 'MdxCitation';\n\nexport default Citation;\n","'use client';\n\nimport { Popover } from 'antd';\nimport { ArrowRightIcon } from 'lucide-react';\nimport { type FC, type ReactNode, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\n\ninterface PopoverPanelProps {\n alt?: string;\n children?: ReactNode;\n title?: string;\n url?: string;\n usePopover?: boolean;\n}\n\nconst PopoverPanel: FC<PopoverPanelProps> = ({ children, usePopover, title, alt, url }) => {\n const [displayTitle, domain, host] = useMemo(() => {\n try {\n const urlObj = new URL(url!);\n const hostForUrl = urlObj.host;\n\n let displayTitle = title;\n\n if (title === url) {\n displayTitle = '';\n }\n\n let domain = urlObj.hostname.replace('www.', '');\n if (!displayTitle) domain = url!;\n\n return [displayTitle, domain, hostForUrl];\n } catch {\n return [title, url, url];\n }\n }, [url, title]);\n\n return usePopover && url ? (\n <Popover\n arrow={false}\n content={\n <Flexbox gap={8}>\n <Flexbox\n className={styles.link}\n gap={12}\n horizontal\n justify={'space-between'}\n onClick={() => {\n window.open(url, '_blank');\n }}\n >\n <Flexbox align={'center'} gap={4} horizontal>\n <img\n alt={alt || title || url}\n height={14}\n src={`https://icons.duckduckgo.com/ip3/${host}.ico`}\n style={{ borderRadius: 4 }}\n width={14}\n />\n <span className={styles.url}>{domain}</span>\n </Flexbox>\n <Icon icon={ArrowRightIcon} />\n </Flexbox>\n {displayTitle}\n </Flexbox>\n }\n trigger={'hover'}\n >\n {children}\n </Popover>\n ) : (\n children\n );\n};\n\nPopoverPanel.displayName = 'MdxPopoverPanel';\n\nexport default PopoverPanel;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n container: css`\n display: inline-flex;\n line-height: var(--lobe-markdown-line-height);\n vertical-align: baseline;\n\n a {\n color: inherit;\n }\n `,\n link: css`\n cursor: pointer;\n color: ${cssVar.colorTextSecondary};\n\n :hover {\n color: ${cssVar.colorText};\n }\n `,\n supContainer: css`\n vertical-align: super;\n `,\n url: css`\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n\n max-width: 400px;\n\n text-overflow: ellipsis;\n `,\n}));\n","'use client';\n\nimport type { FC } from 'react';\n\nimport A from '@/A';\nimport type { AProps } from '@/types';\nimport type { CitationItem } from '@/types/citation';\nimport { safeParseJSON } from '@/utils/safeParseJSON';\n\nimport Citation from './Citation';\n\nexport interface LinkProps extends AProps {\n 'aria-describedby'?: string;\n 'citations'?: CitationItem[];\n 'data-footnote-ref'?: boolean;\n 'data-link'?: string;\n 'id'?: string;\n 'node'?: any;\n}\n\nconst Link: FC<LinkProps> = ({ href, target, citations, ...rest }) => {\n // [^1] 格式类型\n if (rest['data-footnote-ref']) {\n return (\n <Citation citationDetail={safeParseJSON(rest['data-link'])} href={href} id={rest.id!} inSup>\n {rest.children}\n </Citation>\n );\n }\n\n // [1] 格式类型,搭配 citations 注入\n const match = href?.match(/citation-(\\d+)/);\n\n if (match) {\n const index = Number.parseInt(match[1]) - 1;\n\n const detail = citations?.[index];\n\n return (\n <Citation citationDetail={detail} id={match[1]}>\n {match[1]}\n </Citation>\n );\n }\n\n const isNewWindow = href?.startsWith('http');\n\n return <A href={href} target={target || isNewWindow ? '_blank' : undefined} {...rest} />;\n};\n\nLink.displayName = 'MdxLink';\n\nexport default Link;\n","'use client';\n\nimport { type ReactNode, memo, useMemo } from 'react';\n\nimport A from '@/A';\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Text from '@/Text';\n\nimport SearchResultCards from './SearchResultCards';\n\ninterface FootnotesProps {\n 'children': ReactNode;\n 'data-footnote-links'?: string;\n 'data-footnotes'?: boolean;\n}\n\nconst DefaultFootnotes = memo<{ dataSource: any[] }>(({ dataSource }) => {\n const items = useMemo(\n () =>\n dataSource\n .find((child) => child?.type === 'ol')\n ?.props?.children?.map((item: any) => {\n if (typeof item === 'string' || item?.type !== 'li') return false;\n const data = item?.props?.children?.find((note: any) => note?.props?.children)?.props\n ?.children;\n if (!data || !Array.isArray(data)) return false;\n return {\n children: data[0],\n props: data[1]?.props || {},\n };\n })\n .filter(Boolean),\n [dataSource],\n );\n\n if (!Array.isArray(items)) return null;\n\n return (\n <Flexbox\n align={'flex-start'}\n as={'section'}\n className={'footnotes'}\n data-footnotes=\"true\"\n gap={'0.5em'}\n horizontal\n justify={'flex-start'}\n wrap={'wrap'}\n >\n {items.map(({ children, props }, index) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { node, href, ...rest } = props;\n const Container = href ? A : 'div';\n return (\n <Container {...(href ? { href, ...rest } : rest)} key={index}>\n <Block\n align={'stretch'}\n horizontal\n style={{ overflow: 'hidden', position: 'relative' }}\n variant={'outlined'}\n >\n <Block paddingInline={'0.66em'} style={{ borderRadius: 0 }} variant={'filled'}>\n <Text as=\"span\" code type={'secondary'}>\n {index + 1}\n </Text>\n </Block>\n <Text as=\"span\" style={{ paddingInline: '0.66em' }} type={'secondary'}>\n {children}\n </Text>\n </Block>\n </Container>\n );\n })}\n </Flexbox>\n );\n});\n\nconst Footnotes = memo<FootnotesProps>(({ children, ...rest }) => {\n const links = useMemo(() => {\n try {\n return JSON.parse(rest['data-footnote-links'] || '[]');\n } catch (error) {\n console.error('Failed to parse footnote links:', error);\n return [];\n }\n }, [rest['data-footnote-links']]);\n\n const isError = links.length === 0;\n\n if (!children) return;\n\n if (isError) {\n if (!Array.isArray(children)) return children;\n return <DefaultFootnotes dataSource={children} />;\n }\n\n return (\n <section className={'footnotes'} data-footnotes=\"true\">\n <SearchResultCards dataSource={links} />\n </section>\n );\n});\n\nFootnotes.displayName = 'Footnotes';\n\nexport default Footnotes;\n","'use client';\n\nimport { Ref, memo } from 'react';\n\nimport { FlexboxProps } from '@/Flex';\nimport ScrollShadow from '@/ScrollShadow';\n\nimport SearchResultCard from './SearchResultCard';\n\nexport interface SearchResultItem {\n alt?: string;\n summary?: string;\n title?: string;\n url: string;\n}\n\nexport interface SearchResultCardsProps extends FlexboxProps {\n dataSource: string[] | SearchResultItem[];\n ref?: Ref<HTMLDivElement>;\n}\n\nconst SearchResultCards = memo<SearchResultCardsProps>(({ ref, dataSource, style, ...rest }) => {\n return (\n <ScrollShadow\n gap={12}\n hideScrollBar\n horizontal\n orientation={'horizontal'}\n ref={ref}\n size={10}\n style={{ minHeight: 80, overflowX: 'scroll', paddingInlineEnd: 24, width: '100%', ...style }}\n {...rest}\n >\n {dataSource.map((link) =>\n typeof link === 'string' ? (\n <SearchResultCard key={link} url={link} />\n ) : (\n <SearchResultCard key={link.url} {...link} />\n ),\n )}\n </ScrollShadow>\n );\n});\n\nSearchResultCards.displayName = 'SearchResultCards';\n\nexport default SearchResultCards;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo, useRef } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { Flexbox } from '@/Flex';\n\nimport { variants } from './style';\nimport type { ScrollShadowProps } from './type';\nimport { useScrollOverflow } from './useScrollOverflow';\n\nconst ScrollShadow: FC<ScrollShadowProps> = ({\n className,\n children,\n orientation = 'vertical',\n hideScrollBar = false,\n size = 16,\n offset = 8,\n visibility = 'auto',\n isEnabled = true,\n onVisibilityChange,\n style,\n ref,\n ...rest\n}) => {\n // Convert size prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--scroll-shadow-size': `${size}%`,\n }),\n [size],\n );\n const domRef = useRef<HTMLDivElement>(null);\n\n // 使用滚动检测钩子\n const scrollState = useScrollOverflow({\n domRef,\n isEnabled: isEnabled && visibility === 'auto',\n offset,\n onVisibilityChange,\n orientation,\n updateDeps: [children],\n });\n\n // 决定最终的滚动状态\n const finalScrollState = useMemo(() => {\n if (visibility === 'always') {\n return {\n bottom: true,\n left: true,\n right: true,\n top: true,\n };\n }\n\n if (visibility === 'never') {\n return {\n bottom: false,\n left: false,\n right: false,\n top: false,\n };\n }\n\n return scrollState;\n }, [visibility, scrollState]);\n\n // 计算数据属性\n const dataAttributes = useMemo(() => {\n const attributes: Record<string, boolean | string> = {\n 'data-orientation': orientation,\n };\n\n if (orientation === 'vertical') {\n if (finalScrollState.top && finalScrollState.bottom) {\n attributes['data-top-bottom-scroll'] = true;\n } else if (finalScrollState.top) {\n attributes['data-top-scroll'] = true;\n } else if (finalScrollState.bottom) {\n attributes['data-bottom-scroll'] = true;\n }\n } else {\n if (finalScrollState.left && finalScrollState.right) {\n attributes['data-left-right-scroll'] = true;\n } else if (finalScrollState.left) {\n attributes['data-left-scroll'] = true;\n } else if (finalScrollState.right) {\n attributes['data-right-scroll'] = true;\n }\n }\n\n return attributes;\n }, [orientation, finalScrollState]);\n\n // 计算滚动位置变体\n const scrollPosition = useMemo(() => {\n if (orientation === 'vertical') {\n if (finalScrollState.top && finalScrollState.bottom) return 'top-bottom';\n if (finalScrollState.top) return 'top';\n if (finalScrollState.bottom) return 'bottom';\n } else {\n if (finalScrollState.left && finalScrollState.right) return 'left-right';\n if (finalScrollState.left) return 'left';\n if (finalScrollState.right) return 'right';\n }\n return 'none';\n }, [orientation, finalScrollState]);\n\n return (\n <Flexbox\n className={cx(variants({ hideScrollBar, orientation, scrollPosition }), className)}\n ref={mergeRefs<HTMLDivElement>([domRef, ref])}\n style={{\n ...cssVariables,\n ...style,\n }}\n {...dataAttributes}\n {...rest}\n >\n {children}\n </Flexbox>\n );\n};\n\nScrollShadow.displayName = 'ScrollShadow';\n\nexport default ScrollShadow;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n bottomShadow: css`\n mask-image: linear-gradient(\n 180deg,\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n hideScrollBar: css`\n scrollbar-width: none;\n\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n `,\n horizontal: css`\n overflow-x: auto;\n `,\n\n leftRightShadow: css`\n mask-image: linear-gradient(\n to right,\n #000,\n #000,\n transparent 0,\n #000 var(--scroll-shadow-size, 40%),\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n\n // 水平滚动阴影\n leftShadow: css`\n mask-image: linear-gradient(\n 270deg,\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n\n rightShadow: css`\n mask-image: linear-gradient(\n 90deg,\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n\n root: css`\n position: relative;\n overflow: hidden;\n `,\n\n topBottomShadow: css`\n mask-image: linear-gradient(\n #000,\n #000,\n transparent 0,\n #000 var(--scroll-shadow-size, 40%),\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n\n // 垂直滚动阴影\n topShadow: css`\n mask-image: linear-gradient(\n 0deg,\n #000 calc(100% - var(--scroll-shadow-size, 40%)),\n transparent\n );\n `,\n\n vertical: css`\n overflow-y: auto;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n hideScrollBar: false,\n orientation: 'vertical',\n scrollPosition: 'none',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n orientation: {\n horizontal: styles.horizontal,\n vertical: styles.vertical,\n },\n hideScrollBar: {\n true: styles.hideScrollBar,\n false: null,\n },\n scrollPosition: {\n 'none': null,\n 'top': styles.topShadow,\n 'bottom': styles.bottomShadow,\n 'top-bottom': styles.topBottomShadow,\n 'left': styles.leftShadow,\n 'right': styles.rightShadow,\n 'left-right': styles.leftRightShadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { RefObject, useEffect, useState } from 'react';\n\ninterface UseScrollOverflowProps {\n domRef: RefObject<HTMLElement | null>;\n isEnabled?: boolean;\n offset?: number;\n onVisibilityChange?: (visibility: {\n bottom?: boolean;\n left?: boolean;\n right?: boolean;\n top?: boolean;\n }) => void;\n orientation?: 'vertical' | 'horizontal';\n updateDeps?: any[];\n}\n\nexport const useScrollOverflow = ({\n domRef,\n offset = 0,\n orientation = 'vertical',\n isEnabled = true,\n onVisibilityChange,\n updateDeps = [],\n}: UseScrollOverflowProps) => {\n const [scrollState, setScrollState] = useState({\n bottom: false,\n left: false,\n right: false,\n top: false,\n });\n\n useEffect(() => {\n const element = domRef.current;\n if (!element || !isEnabled) return;\n\n const checkScroll = () => {\n const newState = { ...scrollState };\n\n if (orientation === 'vertical') {\n const hasVerticalScroll = element.scrollHeight > element.clientHeight;\n\n if (hasVerticalScroll) {\n newState.top = element.scrollTop > offset;\n newState.bottom =\n element.scrollTop + element.clientHeight < element.scrollHeight - offset;\n } else {\n newState.top = false;\n newState.bottom = false;\n }\n } else {\n const hasHorizontalScroll = element.scrollWidth > element.clientWidth;\n\n if (hasHorizontalScroll) {\n newState.left = element.scrollLeft > offset;\n newState.right = element.scrollLeft + element.clientWidth < element.scrollWidth - offset;\n } else {\n newState.left = false;\n newState.right = false;\n }\n }\n\n setScrollState(newState);\n onVisibilityChange?.(newState);\n };\n\n // 初始检查\n checkScroll();\n\n // 监听滚动事件\n element.addEventListener('scroll', checkScroll);\n window.addEventListener('resize', checkScroll);\n\n // 观察内容变化\n const resizeObserver = new ResizeObserver(checkScroll);\n resizeObserver.observe(element);\n\n return () => {\n element.removeEventListener('scroll', checkScroll);\n window.removeEventListener('resize', checkScroll);\n resizeObserver.disconnect();\n };\n }, [domRef, offset, orientation, isEnabled, onVisibilityChange, ...updateDeps]);\n\n return scrollState;\n};\n","'use client';\n\nimport { Ref, memo, useMemo } from 'react';\n\nimport A from '@/A';\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\nimport Text from '@/Text';\nimport { AProps } from '@/types';\n\nimport { styles } from './style';\n\nexport interface SearchResultCardProps extends AProps {\n alt?: string;\n ref?: Ref<HTMLAnchorElement>;\n title?: string;\n url: string;\n}\n\nconst SearchResultCard = memo<SearchResultCardProps>(({ ref, url, title, alt, ...rest }) => {\n const [displayTitle, domain, host] = useMemo(() => {\n try {\n const urlObj = new URL(url);\n const domain = urlObj.hostname.replace('www.', '');\n const hostForUrl = urlObj.host;\n\n let displayTitle = title;\n if (title === url) {\n displayTitle = hostForUrl + urlObj.pathname;\n }\n\n return [displayTitle, domain, hostForUrl];\n } catch {\n return [title, url, url];\n }\n }, [url, title]);\n\n return (\n <A href={url} ref={ref} rel=\"noreferrer\" target={'_blank'} {...rest}>\n <Block\n className={styles.container}\n clickable\n gap={2}\n justify={'space-between'}\n key={url}\n paddingBlock={6}\n paddingInline={8}\n variant={'outlined'}\n >\n <Text ellipsis={{ rows: 2 }}>{displayTitle}</Text>\n <Flexbox align={'center'} gap={4} horizontal>\n <Img\n alt={alt || title || url}\n height={14}\n src={`https://icons.duckduckgo.com/ip3/${host}.ico`}\n width={14}\n />\n <Text className={styles.url} ellipsis type={'secondary'}>\n {domain}\n </Text>\n </Flexbox>\n </Block>\n </A>\n );\n});\n\nSearchResultCard.displayName = 'SearchResultCard';\n\nexport default SearchResultCard;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => ({\n container: css`\n min-width: 160px;\n max-width: 160px;\n height: 100%;\n\n font-size: 12px;\n color: initial;\n `,\n url: css`\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n\n text-overflow: ellipsis;\n `,\n}));\n","'use client';\n\nimport type { FC, ReactNode } from 'react';\n\nimport Footnotes from '@/Markdown/components/Footnotes';\n\ninterface SectionProps {\n 'children': ReactNode;\n 'data-footnotes'?: boolean;\n 'showFootnotes'?: boolean;\n}\n\nconst Section: FC<SectionProps> = ({ children, showFootnotes, ...rest }) => {\n // 说明是脚注\n if (rest['data-footnotes']) {\n if (!showFootnotes) return null;\n return <Footnotes {...rest}>{children}</Footnotes>;\n }\n\n return <section {...rest}>{children}</section>;\n};\n\nSection.displayName = 'MdxSection';\n\nexport default Section;\n","'use client';\n\nimport { Skeleton } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport { PlayIcon } from 'lucide-react';\nimport { type CSSProperties, type Ref, memo, useMemo, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox, FlexboxProps } from '@/Flex';\nimport type { VideoProps as VProps } from '@/types';\n\nimport { styles, variants } from './style';\n\nexport interface VideoProps extends VProps, Pick<FlexboxProps, 'width' | 'height'> {\n autoPlay?: boolean;\n classNames?: {\n mask?: string;\n video?: string;\n wrapper?: string;\n };\n isLoading?: boolean;\n loop?: boolean;\n maxHeight?: number | string;\n maxWidth?: number | string;\n minHeight?: number | string;\n minWidth?: number | string;\n muted?: HTMLVideoElement['muted'];\n onEnded?: VProps['onEnded'];\n onMouseEnter?: VProps['onMouseEnter'];\n onMouseLeave?: VProps['onMouseLeave'];\n onPause?: VProps['onPause'];\n onPlay?: VProps['onPlay'];\n onPlaying?: VProps['onPlaying'];\n onProgress?: VProps['onProgress'];\n poster?: string;\n preload?: HTMLVideoElement['preload'];\n preview?: boolean;\n ref?: Ref<HTMLDivElement>;\n size?: number | string;\n src: string;\n styles?: {\n mask?: CSSProperties;\n video?: CSSProperties;\n wrapper?: CSSProperties;\n };\n variant?: 'borderless' | 'filled' | 'outlined';\n}\n\nconst Video = memo<VideoProps>(\n ({\n ref,\n preload = 'auto',\n src,\n style,\n classNames,\n className,\n maxHeight = '100%',\n maxWidth = '100%',\n minHeight,\n minWidth,\n onEnded,\n onPause,\n onPlay,\n onPlaying,\n width,\n height,\n onMouseEnter,\n styles: customStyles,\n onMouseLeave,\n preview = true,\n isLoading,\n variant = 'filled',\n autoPlay,\n ...rest\n }) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const [showControls, setShowControls] = useState(false);\n\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {};\n if (maxHeight !== undefined) {\n vars['--video-max-height'] = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n }\n if (maxWidth !== undefined) {\n vars['--video-max-width'] = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\n }\n if (minHeight !== undefined) {\n vars['--video-min-height'] = typeof minHeight === 'number' ? `${minHeight}px` : minHeight;\n }\n if (minWidth !== undefined) {\n vars['--video-min-width'] = typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\n }\n return vars;\n }, [maxHeight, maxWidth, minHeight, minWidth]);\n\n if (isLoading)\n return (\n <Skeleton.Avatar\n active\n style={{\n borderRadius: cssVar.borderRadiusLG,\n height,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n width,\n }}\n />\n );\n\n return (\n <Flexbox\n className={cx(variants({ variant }), className, classNames?.wrapper)}\n height={height}\n ref={ref}\n style={{\n ...cssVariables,\n ...style,\n ...customStyles?.wrapper,\n }}\n width={width}\n >\n {preview && !isPlaying && (\n <Flexbox\n align={'center'}\n className={cx(styles.mask, classNames?.mask)}\n justify={'center'}\n style={customStyles?.mask}\n >\n <ActionIcon color={'#fff'} icon={PlayIcon} variant={'filled'} />\n </Flexbox>\n )}\n <video\n autoPlay={autoPlay}\n className={cx(styles.video, classNames?.video)}\n controls={showControls}\n height={height}\n onEnded={(e) => {\n setIsPlaying(false);\n onEnded?.(e);\n }}\n onMouseEnter={(e) => {\n setShowControls(true);\n onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n setShowControls(false);\n onMouseLeave?.(e);\n }}\n onPause={(e) => {\n setIsPlaying(false);\n onPause?.(e);\n }}\n onPlay={(e) => {\n setIsPlaying(true);\n onPlay?.(e);\n }}\n onPlaying={(e) => {\n setIsPlaying(true);\n onPlaying?.(e);\n }}\n preload={preload}\n style={{\n height: 'auto',\n maxWidth: '100%',\n ...customStyles?.video,\n }}\n width={width}\n {...rest}\n >\n <source src={src} />\n </video>\n </Flexbox>\n );\n },\n);\n\nVideo.displayName = 'Video';\n\nexport default Video;\n","import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\n// 用于 hover 选择器的类名标识\nexport const maskHoverCls = 'lobe-video-mask';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n const mask = css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset: 0;\n\n width: 100%;\n height: 100%;\n\n opacity: 0;\n background: ${cssVar.colorBgMask};\n\n transition: opacity 0.2s ease;\n `;\n\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: cx(\n lobeStaticStylish.variantOutlinedWithoutHover,\n lobeStaticStylish.variantFilledWithoutHover,\n ),\n mask: cx(maskHoverCls, mask),\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n min-width: var(--video-min-width, unset);\n max-width: var(--video-max-width, 100%);\n height: auto;\n min-height: var(--video-min-height, unset);\n max-height: var(--video-max-height, 100%);\n margin-block: 0 1em;\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n\n &:hover {\n [class*='${maskHoverCls}'] {\n opacity: 1;\n }\n }\n `,\n video: css`\n cursor: pointer;\n width: 100%;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport type { FC } from 'react';\n\nimport LobeVideo, { type VideoProps as LobeVideoProps } from '@/Video';\n\nexport type VideoProps = LobeVideoProps;\n\nconst Video: FC<VideoProps> = ({ style, ...rest }) => {\n return (\n <LobeVideo\n preview={false}\n style={{\n borderRadius: 'calc(var(--lobe-markdown-border-radius) * 1px)',\n marginBlock: 'calc(var(--lobe-markdown-margin-multiple) * 1em)',\n ...style,\n }}\n {...rest}\n />\n );\n};\n\nVideo.displayName = 'MdxVdieo';\n\nexport default Video;\n","'use client';\n\nimport { useMemo, useRef, useState } from 'react';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\n\nimport { isLastFormulaRenderable } from './latex';\nimport { addToCache, contentCache, preprocessMarkdownContent } from './utils';\n\nexport const useMarkdownContent = (children: string): string | undefined => {\n const { animated, enableLatex = true, enableCustomFootnotes, citations } = useMarkdownContext();\n const [validContent, setValidContent] = useState<string>('');\n const prevProcessedContent = useRef<string>('');\n\n const citationsLength = citations?.length || 0;\n\n // Calculate cache key with fewer string concatenations and better performance\n const cacheKey = useMemo(\n () => `${children}|${enableLatex ? 1 : 0}|${enableCustomFootnotes ? 1 : 0}|${citationsLength}`,\n [children, enableLatex, enableCustomFootnotes, citationsLength],\n );\n\n // Process content and use cache to avoid repeated calculations\n return useMemo(() => {\n // Try to get from cache first for best performance\n if (contentCache.has(cacheKey)) {\n return contentCache.get(cacheKey);\n }\n\n // Process new content only if needed\n let processedContent = preprocessMarkdownContent(children, {\n citationsLength,\n enableCustomFootnotes,\n enableLatex,\n });\n\n // Special handling for LaTeX content when animated\n if (animated && enableLatex) {\n const isRenderable = isLastFormulaRenderable(processedContent);\n if (!isRenderable && validContent) {\n processedContent = validContent;\n }\n }\n\n // Only update state if content changed (prevents unnecessary re-renders)\n if (processedContent !== prevProcessedContent.current) {\n setValidContent(processedContent);\n prevProcessedContent.current = processedContent;\n }\n\n // Cache the processed result\n addToCache(cacheKey, processedContent);\n return processedContent;\n }, [\n cacheKey,\n children,\n enableLatex,\n enableCustomFootnotes,\n citationsLength,\n animated,\n validContent,\n ]);\n};\n","'use client';\n\nimport { useMemo } from 'react';\nimport { rehypeGithubAlerts } from 'rehype-github-alerts';\nimport rehypeKatex from 'rehype-katex';\nimport rehypeRaw from 'rehype-raw';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { rehypeCustomFootnotes } from '@/Markdown/plugins/rehypeCustomFootnotes';\nimport { rehypeKatexDir } from '@/Markdown/plugins/rehypeKatexDir';\nimport { rehypeStreamAnimated } from '@/Markdown/plugins/rehypeStreamAnimated';\n\nexport const useMarkdownRehypePlugins = (): Pluggable[] => {\n const {\n animated,\n enableLatex,\n enableCustomFootnotes,\n enableGithubAlert,\n allowHtml,\n rehypePlugins = [],\n rehypePluginsAhead = [],\n } = useMarkdownContext();\n\n const memoPlugins = useMemo(\n () =>\n [\n allowHtml && rehypeRaw,\n enableGithubAlert && rehypeGithubAlerts,\n enableLatex && rehypeKatex,\n enableLatex && rehypeKatexDir,\n enableCustomFootnotes && rehypeCustomFootnotes,\n animated && rehypeStreamAnimated,\n ].filter(Boolean) as Pluggable[],\n [animated, enableLatex, enableGithubAlert, enableCustomFootnotes, allowHtml],\n );\n\n return useMemo(\n () => [...rehypePluginsAhead, ...memoPlugins, ...rehypePlugins],\n [rehypePlugins, memoPlugins, rehypePluginsAhead],\n );\n};\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","import { visit } from 'unist-util-visit';\n\nimport type { FootnoteLink } from './remarkCustomFootnotes';\n\n// eslint-disable-next-line unicorn/consistent-function-scoping\nexport const rehypeCustomFootnotes = () => (tree: any, file: any) => {\n const linksData: Record<string, FootnoteLink> = file.data.footnoteLinks || {};\n\n visit(tree, 'element', (node) => {\n if (node.tagName === 'section' && node.properties.className?.includes('footnotes')) {\n // 转换数据格式为数组(按identifier排序)\n const sortedLinks = Object.entries(linksData)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([id, data]) => ({ id, ...data }));\n // 注入数据属性\n node.properties['data-footnote-links'] = JSON.stringify(sortedLinks);\n }\n\n if (node.tagName === 'sup') {\n const link = node.children.find((n: any) => n.tagName === 'a');\n\n if (link) {\n // a node example\n // {\n // \"href\": \"#user-content-fn-3\",\n // \"id\": \"user-content-fnref-3-2\",\n // \"dataFootnoteRef\": true,\n // }\n const linkRefIndex = link.properties?.id?.replace(/^user-content-fnref-/, '')[0];\n\n if (linkRefIndex !== undefined)\n link.properties['data-link'] = JSON.stringify(linksData[linkRefIndex]);\n }\n }\n });\n};\n","import type { Node } from 'unist';\nimport { visit } from 'unist-util-visit';\n\n// katex-directive\n// 给 class=\"katex\" 的节点加上 dir=\"ltr\" 属性\n// eslint-disable-next-line unicorn/consistent-function-scoping\nexport const rehypeKatexDir = () => (tree: Node) => {\n visit(tree, 'element', (node: any) => {\n if (node.properties?.className?.includes('katex')) {\n node.properties.dir = 'ltr';\n }\n });\n};\n","// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n// SPDX-License-Identifier: MIT\nimport type { Element, ElementContent, Root } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport type { BuildVisitor } from 'unist-util-visit';\n\nexport const rehypeStreamAnimated = () => {\n return (tree: Root) => {\n visit(tree, 'element', ((node: Element) => {\n if (\n ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'strong'].includes(node.tagName) &&\n node.children\n ) {\n const newChildren: Array<ElementContent> = [];\n for (const child of node.children) {\n if (child.type === 'text') {\n const segmenter = new Intl.Segmenter('zh', { granularity: 'word' });\n const segments = segmenter.segment(child.value);\n const words = [...segments].map((segment) => segment.segment).filter(Boolean);\n words.forEach((word: string) => {\n newChildren.push({\n children: [{ type: 'text', value: word }],\n properties: {\n className: 'animate-fade-in',\n },\n tagName: 'span',\n type: 'element',\n });\n });\n } else {\n newChildren.push(child);\n }\n }\n node.children = newChildren;\n }\n }) as BuildVisitor<Root, 'element'>);\n };\n};\n","'use client';\n\nimport { useMemo } from 'react';\nimport remarkBreaks from 'remark-breaks';\nimport remarkCjkFriendly from 'remark-cjk-friendly';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { remarkBr } from '@/Markdown/plugins/remarkBr';\nimport { remarkCustomFootnotes } from '@/Markdown/plugins/remarkCustomFootnotes';\nimport { remarkGfmPlus } from '@/Markdown/plugins/remarkGfmPlus';\nimport { remarkVideo } from '@/Markdown/plugins/remarkVideo';\n\nexport const useMarkdownRemarkPlugins = (): Pluggable[] => {\n const {\n enableLatex,\n enableCustomFootnotes,\n remarkPlugins = [],\n remarkPluginsAhead = [],\n variant,\n allowHtml,\n } = useMarkdownContext();\n\n const isChatMode = variant === 'chat';\n\n const memoPlugins = useMemo(\n () =>\n [\n remarkCjkFriendly,\n // Parse math before GFM so that '|' inside $...$ isn't treated as a table separator\n enableLatex && remarkMath,\n [remarkGfm, { singleTilde: false }],\n !allowHtml && remarkBr,\n !allowHtml && remarkGfmPlus,\n !allowHtml && remarkVideo,\n enableCustomFootnotes && remarkCustomFootnotes,\n isChatMode && remarkBreaks,\n ].filter(Boolean) as Pluggable[],\n [allowHtml, isChatMode, enableLatex, enableCustomFootnotes],\n );\n\n return useMemo(\n () => [...remarkPluginsAhead, ...memoPlugins, ...remarkPlugins],\n [remarkPlugins, memoPlugins, remarkPluginsAhead],\n );\n};\n","import { visit } from 'unist-util-visit';\n\n/**\n * Remark plugin to handle <br> and <br/> tags in markdown text\n * This plugin converts <br> and <br/> tags to proper HTML elements\n * without requiring allowHtml to be enabled\n */\nexport const remarkBr = () => {\n return (tree: any) => {\n // First try to process html nodes that might contain ONLY br tags\n visit(tree, 'html', (node, index, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n // Only handle standalone br tags, not complex HTML containing br tags\n const brRegex = /^\\s*<\\s*br\\s*\\/?>\\s*$/gi;\n if (brRegex.test(node.value)) {\n // Replace the html node with a break node\n parent.children.splice(index, 1, { type: 'break' });\n return index;\n }\n });\n\n // Also process text nodes\n visit(tree, 'text', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n // Check if the text contains <br> or <br/> tags\n const brRegex = /<\\s*br\\s*\\/?>/gi;\n\n if (!brRegex.test(node.value)) return;\n\n // Reset regex lastIndex for split operation\n brRegex.lastIndex = 0;\n\n // Split the text by br tags, but keep the matched tags\n const parts: string[] = [];\n const matches: string[] = [];\n let lastIndex = 0;\n let match;\n\n while ((match = brRegex.exec(node.value)) !== null) {\n // Add text before the match\n if (match.index > lastIndex) {\n parts.push(node.value.slice(lastIndex, match.index));\n }\n\n // Store the matched br tag\n matches.push(match[0]);\n lastIndex = match.index + match[0].length;\n }\n\n // Add remaining text after the last match\n if (lastIndex < node.value.length) {\n parts.push(node.value.slice(lastIndex));\n }\n\n // Create new nodes\n const newNodes: any[] = [];\n\n for (const [i, part] of parts.entries()) {\n // Add text node if not empty\n if (part) {\n newNodes.push({\n type: 'text',\n value: part,\n });\n }\n\n // Add br element if we have a corresponding match\n if (i < matches.length) {\n newNodes.push({\n type: 'break',\n });\n }\n }\n\n // Replace the original text node with the new nodes\n if (newNodes.length > 0) {\n parent.children.splice(index, 1, ...newNodes);\n return index + newNodes.length - 1; // Skip the newly added nodes\n }\n });\n };\n};\n","import { Node } from 'unist';\nimport { SKIP, visit } from 'unist-util-visit';\n\nexport interface FootnoteLink {\n alt?: string;\n title?: string;\n url: string;\n}\n\n// eslint-disable-next-line unicorn/consistent-function-scoping\nexport const remarkCustomFootnotes = () => (tree: any, file: any) => {\n const footnoteLinks = new Map();\n\n visit(tree, 'footnoteDefinition', (node) => {\n let linkData: FootnoteLink | null = null;\n\n // 查找第一个link类型的子节点\n visit(node, 'link', (linkNode) => {\n if (linkData) return SKIP; // 只取第一个链接\n\n // 提取链接文本\n const textNode = linkNode.children.find((n: Node) => n.type === 'text');\n\n linkData = {\n alt: textNode?.value || '',\n title: textNode?.value || '',\n url: linkNode.url, // 或者根据需求处理\n };\n\n return SKIP; // 找到后停止遍历\n });\n\n if (linkData) {\n footnoteLinks.set(node.identifier, linkData);\n }\n });\n\n // 将数据存入文件上下文\n file.data.footnoteLinks = Object.fromEntries(footnoteLinks);\n};\n","import { visit } from 'unist-util-visit';\n\ninterface RemarkGfmPlusOptions {\n allowHtmlTags?: string[];\n}\n\nconst DEFAULT_ALLOW_HTML_TAGS = [\n 'sub',\n 'sup',\n 'ins',\n 'kbd',\n 'b',\n 'strong',\n 'i',\n 'em',\n 'mark',\n 'del',\n 'u',\n];\n\nexport const remarkGfmPlus = (options: RemarkGfmPlusOptions = {}) => {\n const { allowHtmlTags = DEFAULT_ALLOW_HTML_TAGS } = options;\n\n return (tree: any) => {\n // 遍历所有父节点,查找分离的HTML标签模式\n visit(tree, (node: any) => {\n if (!node.children || !Array.isArray(node.children)) return;\n\n const children = node.children;\n let i = 0;\n\n while (i < children.length) {\n const currentNode = children[i];\n\n // 查找开始标签\n if (currentNode.type === 'html' && currentNode.value) {\n const tagPattern = `^<(${allowHtmlTags.join('|')})>$`;\n const startTagMatch = currentNode.value.match(new RegExp(tagPattern));\n\n if (startTagMatch) {\n const tagName = startTagMatch[1];\n\n // 查找对应的结束标签\n let endIndex = -1;\n const textNodes: any[] = [];\n\n for (let j = i + 1; j < children.length; j++) {\n const nextNode = children[j];\n\n if (nextNode.type === 'html' && nextNode.value === `</${tagName}>`) {\n endIndex = j;\n break;\n } else if (nextNode.type === 'text') {\n textNodes.push(nextNode);\n } else {\n // 如果遇到其他类型的节点,停止查找\n break;\n }\n }\n\n if (endIndex !== -1) {\n // 收集所有文本内容\n const textContent = textNodes.map((node) => node.value).join('');\n\n // 创建新的自定义节点\n const newNode = {\n children: [{ type: 'text', value: textContent }],\n data: {\n hName: tagName,\n hProperties: {},\n },\n type: tagName,\n };\n\n // 替换从开始标签到结束标签的所有节点\n const removeCount = endIndex - i + 1;\n children.splice(i, removeCount, newNode);\n\n // 继续处理下一个节点\n i++;\n continue;\n }\n }\n }\n\n i++;\n }\n });\n\n // 保留对文本节点中完整HTML标签的处理(作为备用)\n visit(tree, 'text', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n // 处理HTML实体编码的标签\n const encodedTagPattern = `<(${allowHtmlTags.join('|')})>(.*?)<\\\\/\\\\1>`;\n const encodedTagRegex = new RegExp(encodedTagPattern, 'gi');\n const text = node.value;\n\n if (!encodedTagRegex.test(text)) return;\n\n // 重置正则表达式的 lastIndex\n encodedTagRegex.lastIndex = 0;\n\n const newNodes = [];\n let lastIndex = 0;\n let match;\n\n while ((match = encodedTagRegex.exec(text)) !== null) {\n const [fullMatch, tagName, content] = match;\n const startIndex = match.index;\n\n // 添加匹配前的文本\n if (startIndex > lastIndex) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex, startIndex),\n });\n }\n\n // 添加特殊标签节点\n newNodes.push({\n children: [{ type: 'text', value: content }],\n data: {\n hName: tagName,\n hProperties: {},\n },\n type: tagName,\n });\n\n lastIndex = startIndex + fullMatch.length;\n }\n\n // 添加剩余文本\n if (lastIndex < text.length) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex),\n });\n }\n\n // 替换当前节点\n if (newNodes.length > 0 && parent) {\n parent.children.splice(index, 1, ...newNodes);\n return index + newNodes.length - 1;\n }\n });\n };\n};\n","import { visit } from 'unist-util-visit';\n\ninterface RemarkVideoOptions {\n /**\n * 支持的视频标签名,默认为 ['video']\n */\n videoTags?: string[];\n}\n\n/**\n * Remark plugin to handle <video> tags in markdown text\n * This plugin converts <video> tags to proper video elements\n * without requiring allowHtml to be enabled\n *\n * @example\n * <video src=\"https://example.com/video.mp4\" />\n * <video src=\"https://example.com/video.mp4\" controls width=\"400\" height=\"300\" />\n */\nexport const remarkVideo = (options: RemarkVideoOptions = {}) => {\n const { videoTags = ['video'] } = options;\n\n return (tree: any) => {\n // 处理HTML节点中的video标签\n visit(tree, 'html', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n for (const tagName of videoTags) {\n // 匹配自闭合的video标签,支持属性\n const selfClosingPattern = `^<${tagName}([^>]*?)\\\\s*\\\\/?\\\\s*>$`;\n const selfClosingMatch = node.value.trim().match(new RegExp(selfClosingPattern, 'i'));\n\n if (selfClosingMatch) {\n const attributesStr = selfClosingMatch[1]?.trim() || '';\n\n // 解析属性\n const properties: Record<string, string> = {};\n const attrRegex = /(\\w+)=[\"']([^\"']*?)[\"']/g;\n let attrMatch;\n\n while ((attrMatch = attrRegex.exec(attributesStr)) !== null) {\n properties[attrMatch[1]] = attrMatch[2];\n }\n\n // 创建video节点\n const newNode = {\n children: [],\n data: {\n hName: tagName,\n hProperties: properties,\n },\n type: tagName,\n };\n\n // 替换html节点为video节点\n parent.children.splice(index, 1, newNode);\n return index;\n }\n\n // 匹配成对的video标签(虽然不太常见,但也支持)\n const pairedPattern = `^<${tagName}([^>]*?)>(.*?)<\\\\/${tagName}>$`;\n const pairedMatch = node.value.trim().match(new RegExp(pairedPattern, 'is'));\n\n if (pairedMatch) {\n const attributesStr = pairedMatch[1]?.trim() || '';\n const content = pairedMatch[2] || '';\n\n // 解析属性\n const properties: Record<string, string> = {};\n const attrRegex = /(\\w+)=[\"']([^\"']*?)[\"']/g;\n let attrMatch;\n\n while ((attrMatch = attrRegex.exec(attributesStr)) !== null) {\n properties[attrMatch[1]] = attrMatch[2];\n }\n\n // 创建video节点\n const newNode = {\n children: content ? [{ type: 'text', value: content }] : [],\n data: {\n hName: tagName,\n hProperties: properties,\n },\n type: tagName,\n };\n\n // 替换html节点为video节点\n parent.children.splice(index, 1, newNode);\n return index;\n }\n }\n });\n\n // 处理文本节点中的video标签(HTML实体编码形式)\n visit(tree, 'text', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n for (const tagName of videoTags) {\n // 处理HTML实体编码的自闭合video标签\n const encodedSelfClosingPattern = `<${tagName}([^&]*?)\\\\s*\\\\/?\\\\s*>`;\n const encodedSelfClosingRegex = new RegExp(encodedSelfClosingPattern, 'gi');\n\n if (!encodedSelfClosingRegex.test(node.value)) continue;\n\n // 重置正则表达式的 lastIndex\n encodedSelfClosingRegex.lastIndex = 0;\n\n const text = node.value;\n const newNodes = [];\n let lastIndex = 0;\n let match;\n\n while ((match = encodedSelfClosingRegex.exec(text)) !== null) {\n const [fullMatch, attributesStr] = match;\n const startIndex = match.index;\n\n // 添加匹配前的文本\n if (startIndex > lastIndex) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex, startIndex),\n });\n }\n\n // 解析属性(需要解码HTML实体)\n const decodedAttrs = attributesStr\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>');\n\n const properties: Record<string, string> = {};\n const attrRegex = /(\\w+)=[\"']([^\"']*?)[\"']/g;\n let attrMatch;\n\n while ((attrMatch = attrRegex.exec(decodedAttrs)) !== null) {\n properties[attrMatch[1]] = attrMatch[2];\n }\n\n // 添加video节点\n newNodes.push({\n children: [],\n data: {\n hName: tagName,\n hProperties: properties,\n },\n type: tagName,\n });\n\n lastIndex = startIndex + fullMatch.length;\n }\n\n // 添加剩余文本\n if (lastIndex < text.length) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex),\n });\n }\n\n // 替换当前节点\n if (newNodes.length > 0 && parent) {\n parent.children.splice(index, 1, ...newNodes);\n return index + newNodes.length - 1;\n }\n }\n });\n };\n};\n","'use client';\n\nimport { marked } from 'marked';\nimport { memo, useId, useMemo } from 'react';\nimport Markdown, { Options } from 'react-markdown';\n\nimport {\n useMarkdownComponents,\n useMarkdownContent,\n useMarkdownRehypePlugins,\n useMarkdownRemarkPlugins,\n} from '@/hooks/useMarkdown';\n\nimport { styles } from './style';\n\nconst parseMarkdownIntoBlocks = (markdown: string): string[] => {\n const tokens = marked.lexer(markdown);\n return tokens.map((token) => token.raw);\n};\n\nconst StreamdownBlock = memo<Options>(\n ({ children, ...rest }) => {\n return <Markdown {...rest}>{children}</Markdown>;\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nStreamdownBlock.displayName = 'StreamdownBlock';\n\nexport const StreamdownRender = memo<Options>(\n ({ children, ...rest }) => {\n const escapedContent = useMarkdownContent(children || '');\n const components = useMarkdownComponents();\n const rehypePluginsList = useMarkdownRehypePlugins();\n const remarkPluginsList = useMarkdownRemarkPlugins();\n const generatedId = useId();\n const blocks = useMemo(\n () => parseMarkdownIntoBlocks(typeof escapedContent === 'string' ? escapedContent : ''),\n [escapedContent],\n );\n\n return (\n <div className={styles.animated}>\n {blocks.map((block, index) => (\n <StreamdownBlock\n {...rest}\n components={components}\n key={`${generatedId}-block_${index}`}\n rehypePlugins={rehypePluginsList}\n remarkPlugins={remarkPluginsList}\n >\n {block}\n </StreamdownBlock>\n ))}\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\nStreamdownRender.displayName = 'StreamdownRender';\n\nexport default StreamdownRender;\n","import { createStaticStyles, keyframes } from 'antd-style';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n `;\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n animated: css`\n .animate-fade-in,\n .katex-html span,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n `,\n };\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { styles } from './markdown.style';\nimport type { TypographyProps } from './type';\n\nconst Typography = memo<TypographyProps>(\n ({\n ref,\n children,\n className,\n fontSize = 16,\n headerMultiple = 1,\n marginMultiple = 2,\n lineHeight = 1.8,\n borderRadius = 8,\n style,\n ...rest\n }) => {\n return (\n <article\n className={cx(styles.root, className)}\n ref={ref}\n style={{\n // @ts-ignore\n '--lobe-markdown-border-radius': borderRadius,\n '--lobe-markdown-font-size': `${fontSize}px`,\n '--lobe-markdown-header-multiple': headerMultiple,\n '--lobe-markdown-line-height': lineHeight,\n '--lobe-markdown-margin-multiple': marginMultiple,\n ...style,\n }}\n {...rest}\n >\n {children}\n </article>\n );\n },\n);\n\nTypography.displayName = 'Typography';\n\nexport default Typography;\n","import { createStaticStyles } from 'antd-style';\n\nconst IGNORE_CLASSNAME = '.ignore-markdown-style';\n\nexport const styles = createStaticStyles(({ cssVar, css }) => {\n const __root = css`\n --lobe-markdown-font-size: 16px;\n --lobe-markdown-header-multiple: 1;\n --lobe-markdown-margin-multiple: 2;\n --lobe-markdown-line-height: 1.8;\n --lobe-markdown-border-radius: ${cssVar.borderRadiusLG};\n --lobe-markdown-border-color: ${cssVar.colorFillQuaternary};\n\n position: relative;\n\n width: 100%;\n max-width: 100%;\n padding-inline: 1px;\n\n font-size: var(--lobe-markdown-font-size);\n line-height: var(--lobe-markdown-line-height);\n word-break: break-word;\n `;\n const a = css`\n a {\n color: ${cssVar.colorInfoText};\n\n &:hover {\n color: ${cssVar.colorInfoHover};\n }\n }\n `;\n\n const blockquote = css`\n blockquote {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n margin-inline: 0;\n padding-block: 0;\n padding-inline: 1em;\n border-inline-start: solid 4px ${cssVar.colorBorder};\n\n color: ${cssVar.colorTextSecondary};\n }\n `;\n\n const code = css`\n code {\n &:not(:has(span)) {\n display: inline;\n\n margin-inline: 0.25em;\n padding-block: 0.2em;\n padding-inline: 0.4em;\n border: 1px solid var(--lobe-markdown-border-color);\n border-radius: 0.25em;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: 0.875em;\n line-height: 1;\n word-break: break-word;\n white-space: break-spaces;\n\n background: ${cssVar.colorFillSecondary};\n }\n }\n `;\n\n const del = css`\n del {\n color: ${cssVar.colorTextDescription};\n text-decoration: line-through;\n }\n `;\n\n const details = css`\n details {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n padding-block: 0.75em;\n padding-inline: 1em;\n border-radius: calc(var(--lobe-markdown-border-radius) * 1px);\n\n background: ${cssVar.colorFillTertiary};\n box-shadow: 0 0 0 1px var(--lobe-markdown-border-color);\n\n summary {\n cursor: pointer;\n display: flex;\n align-items: center;\n list-style: none;\n\n &::before {\n content: '';\n\n position: absolute;\n inset-inline-end: 1.25em;\n transform: rotateZ(-45deg);\n\n display: block;\n\n width: 0.4em;\n height: 0.4em;\n border-block-end: 1.5px solid ${cssVar.colorTextSecondary};\n border-inline-end: 1.5px solid ${cssVar.colorTextSecondary};\n\n font-family: ${cssVar.fontFamily};\n\n transition: transform 200ms ${cssVar.motionEaseOut};\n }\n }\n\n &[open] {\n summary {\n padding-block-end: 0.75em;\n border-block-end: 1px dashed ${cssVar.colorBorder};\n\n &::before {\n transform: rotateZ(45deg);\n }\n }\n }\n }\n `;\n const header = css`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-block: max(\n calc(var(--lobe-markdown-header-multiple) * var(--lobe-markdown-margin-multiple) * 0.4em),\n var(--lobe-markdown-font-size)\n );\n font-weight: bold;\n line-height: 1.25;\n }\n\n h1 {\n font-size: calc(\n var(--lobe-markdown-font-size) * (1 + 1.5 * var(--lobe-markdown-header-multiple))\n );\n }\n\n h2 {\n font-size: calc(var(--lobe-markdown-font-size) * (1 + var(--lobe-markdown-header-multiple)));\n }\n\n h3 {\n font-size: calc(\n var(--lobe-markdown-font-size) * (1 + 0.5 * var(--lobe-markdown-header-multiple))\n );\n }\n\n h4 {\n font-size: calc(\n var(--lobe-markdown-font-size) * (1 + 0.25 * var(--lobe-markdown-header-multiple))\n );\n }\n\n h5,\n h6 {\n font-size: calc(var(--lobe-markdown-font-size) * 1);\n }\n `;\n const hr = css`\n hr {\n width: 100%;\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 1.5em);\n border-color: ${cssVar.colorBorder};\n border-style: dashed;\n border-width: 1px;\n border-block-start: none;\n border-inline-start: none;\n border-inline-end: none;\n }\n `;\n const img = css`\n img {\n max-width: 100%;\n }\n\n > img,\n > p > img {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n border-radius: calc(var(--lobe-markdown-border-radius) * 1px);\n box-shadow: 0 0 0 1px var(--lobe-markdown-border-color);\n }\n `;\n\n const list = css`\n li {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.33em);\n\n p:first-child {\n display: inline;\n }\n }\n\n ul,\n ol {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n margin-inline-start: 1em;\n padding-inline-start: 0;\n list-style-position: outside;\n\n > ul,\n > ol {\n margin-block: 0;\n }\n\n > li {\n margin-inline-start: 1em;\n }\n }\n\n ol {\n list-style: auto;\n }\n\n ul {\n list-style-type: none;\n\n > li {\n &::before {\n content: '-';\n\n position: absolute;\n\n display: inline-block;\n\n margin-inline: -1em 0.5em;\n\n opacity: 0.5;\n }\n }\n }\n\n .task-list-item {\n &::before {\n display: none !important;\n }\n\n input[type='checkbox'] {\n margin-block: 0 0.25em;\n margin-inline: -1.6em 0.2em;\n vertical-align: middle;\n }\n\n input[type='checkbox']:dir(rtl) {\n margin: 0 -1.6em 0.25em 0.2em;\n }\n }\n `;\n const p = css`\n p {\n margin-block: 4px;\n line-height: var(--lobe-markdown-line-height);\n letter-spacing: 0.02em;\n\n &:not(:first-child) {\n margin-block-start: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n }\n\n &:not(:last-child) {\n margin-block-end: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n }\n }\n `;\n const pre = css`\n pre {\n font-size: calc(var(--lobe-markdown-font-size) * 0.85);\n }\n `;\n const strong = css`\n strong {\n font-weight: 600;\n }\n `;\n const svg = css`\n svg {\n line-height: 1;\n }\n `;\n const table = css`\n table {\n unicode-bidi: isolate;\n overflow: auto hidden;\n display: block;\n border-spacing: 0;\n border-collapse: collapse;\n\n box-sizing: border-box;\n width: max-content;\n max-width: 100%;\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n border-radius: calc(var(--lobe-markdown-border-radius) * 1px);\n\n text-align: start;\n text-indent: initial;\n text-wrap: pretty;\n word-break: auto-phrase;\n overflow-wrap: break-word;\n\n background: ${cssVar.colorFillQuaternary};\n box-shadow: 0 0 0 1px ${cssVar.colorBorderSecondary};\n\n code {\n word-break: break-word;\n }\n\n thead {\n background: ${cssVar.colorFillQuaternary};\n }\n\n tr {\n box-shadow: 0 1px 0 ${cssVar.colorBorderSecondary};\n }\n\n th,\n td {\n min-width: 120px;\n padding-block: 0.75em;\n padding-inline: 1em;\n text-align: start;\n }\n }\n `;\n const video = css`\n > video,\n > p > video {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n border-radius: calc(var(--lobe-markdown-border-radius) * 1px);\n box-shadow: 0 0 0 1px var(--lobe-markdown-border-color);\n }\n\n video {\n max-width: 100%;\n }\n `;\n\n const footnote = css`\n .footnotes {\n margin-block-start: calc(var(--lobe-markdown-margin-multiple) * 1em);\n font-size: smaller;\n color: #8b949e;\n\n #footnote-label {\n display: none;\n }\n\n > ol {\n margin: 0 !important;\n }\n }\n `;\n\n const sup = css`\n sup {\n position: relative;\n inset-block-start: -0.25em;\n\n font-size: 0.75em;\n line-height: var(--lobe-markdown-line-height);\n vertical-align: baseline;\n }\n `;\n\n const sub = css`\n sub {\n position: relative;\n inset-block-end: -0.25em;\n\n font-size: 0.75em;\n line-height: var(--lobe-markdown-line-height);\n vertical-align: baseline;\n }\n `;\n\n return {\n root: css`\n :not(:has(${IGNORE_CLASSNAME})),\n .markdown {\n ${[\n __root,\n a,\n blockquote,\n code,\n del,\n details,\n header,\n hr,\n img,\n list,\n p,\n pre,\n strong,\n svg,\n table,\n video,\n footnote,\n sub,\n sup,\n ]}\n }\n `,\n };\n});\n","import { useEffect, useState } from 'react';\n\nexport const useDelayedAnimated = (animated?: boolean) => {\n const [delayedAnimated, setDelayedAnimated] = useState(animated);\n\n // Watch for changes in animated prop\n useEffect(() => {\n if (animated === undefined) return;\n // If animated changes from true to false, delay the update by 1 second\n if (animated === false && delayedAnimated === true) {\n const timer = setTimeout(() => {\n setDelayedAnimated(false);\n }, 1000);\n\n return () => clearTimeout(timer);\n } else {\n // For any other changes, update immediately\n setDelayedAnimated(animated);\n }\n }, [animated, delayedAnimated]);\n\n return delayedAnimated;\n};\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n chat: css`\n ol,\n ul {\n > li {\n &::marker {\n color: ${cssVar.colorTextSecondary} !important;\n }\n\n > li {\n &::marker {\n color: ${cssVar.colorTextSecondary} !important;\n }\n }\n }\n }\n\n ul {\n list-style: unset;\n\n > li {\n &::before {\n content: unset;\n display: unset;\n }\n }\n }\n `,\n\n gfm: css`\n .markdown-alert {\n margin-block: calc(var(--lobe-markdown-margin-multiple) * 0.5em);\n padding-inline-start: 1em;\n border-inline-start: solid 4px ${cssVar.colorBorder};\n\n > p {\n margin-block-start: 0 !important;\n }\n }\n\n .markdown-alert > :first-child {\n margin-block-start: 0;\n }\n\n .markdown-alert > :last-child {\n margin-block-end: 0;\n }\n\n .markdown-alert-note {\n border-inline-start-color: ${cssVar.colorInfo};\n }\n\n .markdown-alert-tip {\n border-inline-start-color: ${cssVar.colorSuccess};\n }\n\n .markdown-alert-important {\n border-inline-start-color: ${cssVar.purple};\n }\n\n .markdown-alert-warning {\n border-inline-start-color: ${cssVar.colorWarning};\n }\n\n .markdown-alert-caution {\n border-inline-start-color: ${cssVar.colorError};\n }\n\n .markdown-alert-title {\n display: flex;\n align-items: center;\n margin-block-end: 0.5em !important;\n font-weight: 500;\n }\n\n .markdown-alert-note .markdown-alert-title {\n color: ${cssVar.colorInfo};\n fill: ${cssVar.colorInfo};\n }\n\n .markdown-alert-tip .markdown-alert-title {\n color: ${cssVar.colorSuccess};\n fill: ${cssVar.colorSuccess};\n }\n\n .markdown-alert-important .markdown-alert-title {\n color: ${cssVar.purple};\n fill: ${cssVar.purple};\n }\n\n .markdown-alert-warning .markdown-alert-title {\n color: ${cssVar.colorWarning};\n fill: ${cssVar.colorWarning};\n }\n\n .markdown-alert-caution .markdown-alert-title {\n color: ${cssVar.colorError};\n fill: ${cssVar.colorError};\n }\n\n /* Style the footnotes section. */\n\n .octicon {\n overflow: visible !important;\n display: inline-block;\n margin-inline-end: 0.5em;\n vertical-align: text-bottom;\n }\n\n .sr-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n padding: 0;\n border: 0;\n\n word-wrap: normal;\n\n clip: rect(0, 0, 0, 0);\n }\n\n sup:has(*[aria-describedby='footnote-label']) {\n margin-inline: 2px;\n vertical-align: super !important;\n\n [data-footnote-ref] {\n display: inline-block;\n\n width: 16px;\n height: 16px;\n border-radius: 4px;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: 10px;\n color: ${cssVar.colorTextSecondary} !important;\n text-align: center;\n\n background: ${cssVar.colorFillSecondary};\n }\n }\n\n code.color-preview {\n position: relative;\n display: inline-flex !important;\n gap: 0.4em;\n\n &::after {\n content: '';\n\n width: 0.66em;\n height: 0.66em;\n border: 1px solid ${cssVar.colorFill};\n border-radius: 50%;\n\n background-color: attr(data-color);\n\n /* Fallback for browsers that don't support attr() in background */\n background-color: var(--color-preview-color, #000);\n }\n }\n `,\n\n latex: css`\n .katex-error {\n color: ${cssVar.colorTextDescription} !important;\n }\n\n .katex-html {\n overflow: auto hidden;\n padding: 3px;\n\n .base {\n margin-block: 0;\n margin-inline: auto;\n }\n\n .tag {\n position: relative !important;\n display: inline-block;\n padding-inline-start: 0.5rem;\n }\n }\n `,\n root: css`\n position: relative;\n overflow: hidden;\n max-width: 100%;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n enableGfm: true,\n enableLatex: true,\n variant: 'default',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n default: null,\n chat: styles.chat,\n },\n enableLatex: {\n true: styles.latex,\n false: null,\n },\n enableGfm: {\n true: styles.gfm,\n false: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","import { visit } from 'unist-util-visit';\n\ninterface RemarkColorOptions {\n /**\n * 自定义颜色验证函数\n */\n colorValidator?: (colorString: string) => boolean;\n}\n\n/**\n * Remark plugin to handle color syntax in markdown code spans\n * Supports GitHub-style color visualization for HEX, RGB, and HSL colors\n *\n * @example\n * `#FF0000` -> renders with red color preview\n * `rgb(255, 0, 0)` -> renders with red color preview\n * `hsl(0, 100%, 50%)` -> renders with red color preview\n */\nexport const remarkColor = (options: RemarkColorOptions = {}) => {\n const { colorValidator } = options;\n\n /**\n * 验证并标准化颜色值\n */\n const validateAndNormalizeColor = (colorString: string): string | null => {\n const trimmed = colorString.trim();\n\n // 如果有自定义验证函数,使用它\n if (colorValidator && !colorValidator(trimmed)) {\n return null;\n }\n\n // HEX 颜色: #RRGGBB 或 #RGB\n const hexPattern = /^#([\\dA-Fa-f]{6}|[\\dA-Fa-f]{3})$/;\n if (hexPattern.test(trimmed)) {\n // 标准化为 6 位 HEX\n if (trimmed.length === 4) {\n const [, r, g, b] = trimmed;\n return `#${r}${r}${g}${g}${b}${b}`;\n }\n return trimmed.toUpperCase();\n }\n\n // RGB 颜色: rgb(r, g, b)\n const rgbPattern = /^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i;\n const rgbMatch = trimmed.match(rgbPattern);\n if (rgbMatch) {\n const [, r, g, b] = rgbMatch;\n const rNum = parseInt(r, 10);\n const gNum = parseInt(g, 10);\n const bNum = parseInt(b, 10);\n\n // 验证 RGB 值范围\n if (rNum >= 0 && rNum <= 255 && gNum >= 0 && gNum <= 255 && bNum >= 0 && bNum <= 255) {\n return `rgb(${rNum}, ${gNum}, ${bNum})`;\n }\n }\n\n // HSL 颜色: hsl(h, s%, l%)\n const hslPattern = /^hsl\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)$/i;\n const hslMatch = trimmed.match(hslPattern);\n if (hslMatch) {\n const [, h, s, l] = hslMatch;\n const hNum = parseInt(h, 10);\n const sNum = parseInt(s, 10);\n const lNum = parseInt(l, 10);\n\n // 验证 HSL 值范围\n if (hNum >= 0 && hNum <= 360 && sNum >= 0 && sNum <= 100 && lNum >= 0 && lNum <= 100) {\n return `hsl(${hNum}, ${sNum}%, ${lNum}%)`;\n }\n }\n\n return null;\n };\n\n return (tree: any) => {\n // 处理 inlineCode 节点(反引号包围的代码)\n visit(tree, 'inlineCode', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n const colorValue = validateAndNormalizeColor(node.value);\n\n if (colorValue) {\n // 创建自定义颜色节点\n const colorNode = {\n children: [{ type: 'text', value: node.value }],\n color: colorValue,\n data: {\n hName: 'code',\n hProperties: {\n 'className': 'color-preview',\n 'data-color': colorValue,\n 'data-original': node.value,\n 'style': `--color-preview-color: ${colorValue}`,\n },\n },\n type: 'colorPreview',\n value: node.value,\n };\n\n // 替换 inlineCode 节点\n parent.children.splice(index, 1, colorNode);\n return index;\n }\n });\n\n // 处理文本节点中的颜色语法(作为备用,处理可能的边缘情况)\n visit(tree, 'text', (node, index = 0, parent) => {\n if (!node.value || typeof node.value !== 'string') return;\n\n // 查找反引号包围的颜色值\n const colorPattern = /`([^`]+)`/g;\n const text = node.value;\n\n let hasColorMatch = false;\n const newNodes = [];\n let lastIndex = 0;\n let match;\n\n while ((match = colorPattern.exec(text)) !== null) {\n const [fullMatch, colorCandidate] = match;\n const colorValue = validateAndNormalizeColor(colorCandidate);\n\n if (colorValue) {\n hasColorMatch = true;\n const startIndex = match.index;\n\n // 添加匹配前的文本\n if (startIndex > lastIndex) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex, startIndex),\n });\n }\n\n // 添加颜色节点\n newNodes.push({\n children: [{ type: 'text', value: colorCandidate }],\n color: colorValue,\n data: {\n hName: 'code',\n hProperties: {\n 'className': 'color-preview',\n 'data-color': colorValue,\n 'data-original': colorCandidate,\n 'style': `--color-preview-color: ${colorValue}`,\n },\n },\n type: 'colorPreview',\n value: colorCandidate,\n });\n\n lastIndex = startIndex + fullMatch.length;\n }\n }\n\n if (hasColorMatch) {\n // 添加剩余文本\n if (lastIndex < text.length) {\n newNodes.push({\n type: 'text',\n value: text.slice(lastIndex),\n });\n }\n\n // 替换当前节点\n if (newNodes.length > 0 && parent) {\n parent.children.splice(index, 1, ...newNodes);\n return index + newNodes.length - 1;\n }\n }\n });\n };\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { variants } from './style';\nimport type { MaskShadowProps } from './type';\n\nconst MaskShadow = memo<MaskShadowProps>(\n ({ className, children, position = 'bottom', size = 40, ...rest }) => {\n // Convert size prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--mask-shadow-size': `${size}%`,\n }),\n [size],\n );\n\n return (\n <Flexbox\n className={cx(variants({ position }), className)}\n style={{\n ...cssVariables,\n ...rest.style,\n }}\n {...rest}\n >\n {children}\n </Flexbox>\n );\n },\n);\n\nMaskShadow.displayName = 'MaskShadow';\n\nexport default MaskShadow;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n bottomShadow: css`\n mask-image: linear-gradient(\n 180deg,\n #000 calc(100% - var(--mask-shadow-size, 40%)),\n transparent\n );\n `,\n\n leftShadow: css`\n mask-image: linear-gradient(\n 270deg,\n #000 calc(100% - var(--mask-shadow-size, 40%)),\n transparent\n );\n `,\n\n rightShadow: css`\n mask-image: linear-gradient(\n 90deg,\n #000 calc(100% - var(--mask-shadow-size, 40%)),\n transparent\n );\n `,\n\n root: css`\n scrollbar-width: none;\n position: relative;\n overflow: hidden;\n\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n `,\n\n topShadow: css`\n mask-image: linear-gradient(\n 0deg,\n #000 calc(100% - var(--mask-shadow-size, 40%)),\n transparent\n );\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n position: 'bottom',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n position: {\n top: styles.topShadow,\n bottom: styles.bottomShadow,\n left: styles.leftShadow,\n right: styles.rightShadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { cx } from 'antd-style';\nimport type React from 'react';\n\nimport ScrollAreaGlobalStyle from './globalStyle';\nimport { styles } from './style';\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => cx(base, className(state));\n return cx(base, className);\n};\n\nexport type ScrollAreaRootProps = React.ComponentProps<typeof BaseScrollArea.Root>;\nexport type ScrollAreaViewportProps = React.ComponentProps<typeof BaseScrollArea.Viewport> & {\n /**\n * Enable gradient scroll fade on the viewport edges.\n * @default false\n */\n scrollFade?: boolean;\n};\nexport type ScrollAreaContentProps = React.ComponentProps<typeof BaseScrollArea.Content>;\nexport type ScrollAreaScrollbarProps = React.ComponentProps<typeof BaseScrollArea.Scrollbar>;\nexport type ScrollAreaThumbProps = React.ComponentProps<typeof BaseScrollArea.Thumb>;\nexport type ScrollAreaCornerProps = React.ComponentProps<typeof BaseScrollArea.Corner>;\n\nexport const ScrollAreaRoot = ({ className, ...rest }: ScrollAreaRootProps) => {\n return (\n <BaseScrollArea.Root {...rest} className={mergeStateClassName(styles.root, className) as any} />\n );\n};\n\nScrollAreaRoot.displayName = 'ScrollAreaRoot';\n\nexport const ScrollAreaViewport = ({\n className,\n scrollFade = false,\n ...rest\n}: ScrollAreaViewportProps) => {\n return (\n <>\n <ScrollAreaGlobalStyle />\n <BaseScrollArea.Viewport\n {...rest}\n className={\n mergeStateClassName(\n cx(styles.viewport, scrollFade && styles.viewportFade),\n className,\n ) as any\n }\n />\n </>\n );\n};\n\nScrollAreaViewport.displayName = 'ScrollAreaViewport';\n\nexport const ScrollAreaContent = ({ className, ...rest }: ScrollAreaContentProps) => {\n return (\n <BaseScrollArea.Content\n {...rest}\n className={mergeStateClassName(styles.content, className) as any}\n />\n );\n};\n\nScrollAreaContent.displayName = 'ScrollAreaContent';\n\nexport const ScrollAreaScrollbar = ({ className, ...rest }: ScrollAreaScrollbarProps) => {\n return (\n <BaseScrollArea.Scrollbar\n {...rest}\n className={mergeStateClassName(styles.scrollbar, className) as any}\n />\n );\n};\n\nScrollAreaScrollbar.displayName = 'ScrollAreaScrollbar';\n\nexport const ScrollAreaThumb = ({ className, ...rest }: ScrollAreaThumbProps) => {\n return (\n <BaseScrollArea.Thumb\n {...rest}\n className={mergeStateClassName(styles.thumb, className) as any}\n />\n );\n};\n\nScrollAreaThumb.displayName = 'ScrollAreaThumb';\n\nexport const ScrollAreaCorner = ({ className, ...rest }: ScrollAreaCornerProps) => {\n return (\n <BaseScrollArea.Corner\n {...rest}\n className={mergeStateClassName(styles.corner, className) as any}\n />\n );\n};\n\nScrollAreaCorner.displayName = 'ScrollAreaCorner';\n","'use client';\n\nimport { createGlobalStyle, css } from 'antd-style';\n\n/**\n * Register animatable custom properties used by scroll-driven animations.\n *\n * Without @property registration, custom properties interpolate discretely,\n * which can cause visible snapping at scroll boundaries.\n */\nconst ScrollAreaGlobalStyle = createGlobalStyle(\n () => css`\n @property --lobe-scroll-area-fade-top {\n inherits: true;\n initial-value: 0;\n syntax: '<length>';\n }\n\n @property --lobe-scroll-area-fade-bottom {\n inherits: true;\n initial-value: 0;\n syntax: '<length>';\n }\n `,\n);\n\nexport default ScrollAreaGlobalStyle;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n content: css`\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n font-size: ${cssVar.fontSizeSM};\n line-height: 1.375rem;\n color: ${cssVar.colorText};\n `,\n\n corner: css`\n background: ${cssVar.colorFillSecondary};\n `,\n\n root: css`\n position: relative;\n box-sizing: border-box;\n border-radius: ${cssVar.borderRadiusLG};\n background: ${cssVar.colorBgLayout};\n `,\n\n scrollbar: css`\n pointer-events: none;\n\n position: relative;\n\n display: flex;\n justify-content: center;\n\n margin: 8px;\n border-radius: ${cssVar.borderRadiusSM};\n\n opacity: 0;\n background: transparent;\n\n transition: opacity 150ms;\n\n &::before {\n content: '';\n position: absolute;\n }\n\n &[data-scrolling] {\n transition-duration: 0ms;\n }\n\n &[data-hovering],\n &[data-scrolling] {\n pointer-events: auto;\n opacity: 1;\n }\n\n &[data-orientation='vertical'] {\n width: 4px;\n\n &::before {\n inset-inline-start: 50%;\n transform: translateX(-50%);\n width: 20px;\n height: 100%;\n }\n }\n\n &[data-orientation='horizontal'] {\n height: 4px;\n\n &::before {\n inset-block-end: -8px;\n inset-inline: 0;\n width: 100%;\n height: 20px;\n }\n }\n `,\n\n thumb: css`\n width: 100%;\n border-radius: inherit;\n background: ${cssVar.colorTextQuaternary};\n `,\n\n viewport: css`\n position: relative;\n height: 100%;\n outline: none;\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimary};\n outline-offset: 2px;\n }\n `,\n\n viewportFade: css`\n --scroll-area-overflow-y-start: inherit;\n --scroll-area-overflow-y-end: inherit;\n --lobe-scroll-area-fade-size: 40px;\n --lobe-scroll-area-fade-top: min(\n var(--lobe-scroll-area-fade-size),\n var(--scroll-area-overflow-y-start, 0px)\n );\n --lobe-scroll-area-fade-bottom: min(\n var(--lobe-scroll-area-fade-size),\n var(--scroll-area-overflow-y-end, 0px)\n );\n\n /* Fade the CONTENT via mask, so it works on background images too. */\n mask-image: linear-gradient(\n to bottom,\n transparent 0,\n #000 var(--lobe-scroll-area-fade-top),\n #000 calc(100% - var(--lobe-scroll-area-fade-bottom)),\n transparent 100%\n );\n mask-repeat: no-repeat;\n mask-size: 100% 100%;\n\n /* Scroll-driven animation: use scroll position to drive the mask. */\n @supports (animation-timeline: scroll()) {\n /*\n * Important: drive fade by *distance to edges* (first/last 40px),\n * so reaching top/bottom doesn't cause a sudden snap.\n */\n @keyframes lobe-scroll-area-fade-top-in {\n from {\n --lobe-scroll-area-fade-top: 0;\n }\n\n to {\n --lobe-scroll-area-fade-top: var(--lobe-scroll-area-fade-size);\n }\n }\n\n @keyframes lobe-scroll-area-fade-bottom-out {\n from {\n --lobe-scroll-area-fade-bottom: var(--lobe-scroll-area-fade-size);\n }\n\n to {\n --lobe-scroll-area-fade-bottom: 0;\n }\n }\n\n animation-name: lobe-scroll-area-fade-top-in, lobe-scroll-area-fade-bottom-out;\n animation-duration: 1ms, 1ms;\n animation-timing-function: linear, linear;\n animation-fill-mode: both, both;\n animation-timeline: scroll(self y), scroll(self y);\n\n animation-range:\n 0 var(--lobe-scroll-area-fade-size),\n calc(100% - var(--lobe-scroll-area-fade-size)) 100%;\n }\n `,\n}));\n","'use client';\n\nimport { type FC } from 'react';\n\nimport {\n ScrollAreaContent,\n ScrollAreaCorner,\n ScrollAreaRoot,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n} from './atoms';\nimport type { ScrollAreaProps } from './type';\n\nexport const ScrollArea: FC<ScrollAreaProps> = ({\n children,\n contentProps,\n corner = false,\n cornerProps,\n scrollFade = false,\n scrollbarProps,\n thumbProps,\n viewportProps,\n ...rest\n}) => {\n return (\n <ScrollAreaRoot {...rest}>\n <ScrollAreaViewport scrollFade={scrollFade} {...viewportProps}>\n <ScrollAreaContent {...contentProps}>{children}</ScrollAreaContent>\n </ScrollAreaViewport>\n <ScrollAreaScrollbar {...scrollbarProps}>\n <ScrollAreaThumb {...thumbProps} />\n </ScrollAreaScrollbar>\n {corner && <ScrollAreaCorner {...cornerProps} />}\n </ScrollAreaRoot>\n );\n};\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { LucideLoader2, Search } from 'lucide-react';\nimport { memo, useMemo, useRef, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport Hotkey from '@/Hotkey';\nimport Icon from '@/Icon';\nimport Input from '@/Input';\nimport Spotlight from '@/awesome/Spotlight';\n\nimport { styles } from './style';\nimport type { SearchBarProps } from './type';\n\nconst SearchBar = memo<SearchBarProps>(\n ({\n defaultValue = '',\n spotlight,\n className,\n value,\n onInputChange,\n placeholder,\n enableShortKey,\n shortKey = 'mod+k',\n onSearch,\n loading,\n style,\n onChange,\n onBlur,\n onPressEnter,\n onFocus,\n styles: { input: inputStyle, shortKey: shortKeyStyle } = {},\n classNames: { input: inputClassName, shortKey: shortKeyClassName } = {},\n ...rest\n }) => {\n const [inputValue, setInputValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange: onInputChange,\n value,\n });\n\n const [showTag, setShowTag] = useState<boolean>(true);\n const inputReference: any = useRef<HTMLInputElement>(null);\n const hotkey = useMemo(\n () => (shortKey.includes('+') ? shortKey : `mod+${shortKey}`),\n [shortKey],\n );\n\n useHotkeys(\n hotkey,\n () => {\n if (!enableShortKey) return;\n inputReference.current?.focus();\n },\n {\n enableOnFormTags: true,\n enabled: !!enableShortKey && !!shortKey,\n preventDefault: true,\n },\n );\n\n return (\n <div className={cx(styles.search, className)} style={style}>\n {spotlight && <Spotlight />}\n <Input\n allowClear\n className={inputClassName}\n onBlur={(e) => {\n onBlur?.(e);\n setInputValue(e.target.value);\n setShowTag(true);\n }}\n onChange={(e) => {\n setInputValue(e.target.value);\n onChange?.(e);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n setShowTag(false);\n }}\n onPressEnter={(e) => {\n onPressEnter?.(e);\n onSearch?.(inputValue);\n }}\n placeholder={placeholder ?? 'Type keywords...'}\n prefix={\n <Icon\n className={styles.icon}\n icon={loading ? LucideLoader2 : Search}\n size=\"small\"\n spin={loading}\n style={{ marginRight: 4 }}\n />\n }\n ref={inputReference}\n style={inputStyle}\n value={inputValue}\n {...rest}\n />\n {enableShortKey && showTag && !inputValue && (\n <Hotkey\n className={cx(styles.tag, shortKeyClassName)}\n compact\n keys={hotkey}\n style={shortKeyStyle}\n />\n )}\n </div>\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\nexport default SearchBar;\n","import { createStaticStyles, cx } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n icon: css`\n color: ${cssVar.colorTextPlaceholder};\n `,\n search: css`\n position: relative;\n max-width: 100%;\n `,\n tag: cx(\n lobeStaticStylish.blur,\n css`\n position: absolute;\n inset-block-start: 50%;\n inset-inline-end: 6px;\n transform: translateY(-50%);\n\n color: ${cssVar.colorTextDescription};\n\n kbd {\n color: inherit;\n }\n `,\n ),\n}));\n","'use client';\n\nimport { Segmented as AntdSegmented } from 'antd';\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { variants } from './style';\nimport type { SegmentedProps } from './type';\n\nconst Segmented = memo<SegmentedProps>(\n ({ ref, padding, style, className, variant = 'filled', shadow, glass, ...rest }) => {\n return (\n <AntdSegmented\n className={cx(variants({ glass, shadow, variant }), className)}\n ref={ref}\n style={{\n padding,\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nSegmented.displayName = 'Segmented';\n\nexport default Segmented;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: css`\n border: 1px solid ${cssVar.colorFillQuaternary};\n background: ${cssVar.colorBgLayout};\n `,\n glass: lobeStaticStylish.blur,\n outlined: css`\n border: 1px solid ${cssVar.colorBorderSecondary};\n background: transparent;\n `,\n root: css``,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n glass: false,\n shadow: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { Select as AntSelect } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDownIcon } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { variants } from './style';\nimport type { SelectProps } from './type';\n\n/**\n * @deprecated Use `LobeSelect` instead.\n */\nconst Select = memo<SelectProps>(\n ({ ref, variant, suffixIconProps, suffixIcon, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntSelect\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n suffixIcon={\n <Icon\n icon={suffixIcon || ChevronDownIcon}\n size={'small'}\n {...suffixIconProps}\n style={{\n pointerEvents: 'none',\n ...suffixIconProps?.style,\n }}\n />\n }\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n },\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantBorderless}\n }\n }\n `,\n filled: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantFilled}\n }\n }\n `,\n outlined: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.variantOutlined}\n }\n }\n `,\n root: css`\n &[class*='ant-select'] {\n &[class*='ant-select-focused'] {\n > [class*='ant-select-selector'] {\n background: ${cssVar.colorFillTertiary} !important;\n }\n }\n }\n `,\n shadow: css`\n &[class*='ant-select'] {\n > [class*='ant-select-selector'] {\n ${lobeStaticStylish.shadow}\n }\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n underlined: null,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { SideNavProps } from './type';\n\nconst SideNav = memo<SideNavProps>(({ className, avatar, topActions, bottomActions, ...rest }) => {\n return (\n <Flexbox\n align={'center'}\n className={cx(styles, className)}\n flex={'none'}\n justify={'space-between'}\n {...rest}\n >\n <Flexbox align=\"center\" direction=\"vertical\" gap={12}>\n {avatar}\n <Flexbox align=\"center\" direction=\"vertical\" gap={8}>\n {topActions}\n </Flexbox>\n </Flexbox>\n <Flexbox align=\"center\" direction=\"vertical\" gap={4}>\n {bottomActions}\n </Flexbox>\n </Flexbox>\n );\n});\n\nSideNav.displayName = 'SideNav';\n\nexport default SideNav;\n","import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(\n ({ css, cssVar }) => css`\n width: 58px;\n height: 100%;\n min-height: 640px;\n padding-block: 12px;\n padding-inline: 0;\n border-inline-end: 1px solid ${cssVar.colorBorderSecondary};\n\n background: ${cssVar.colorBgContainer};\n `,\n);\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport SkeletonAvatar from './SkeletonAvatar';\nimport SkeletonParagraph from './SkeletonParagraph';\nimport SkeletonTitle from './SkeletonTitle';\nimport { styles } from './style';\nimport type { SkeletonProps } from './type';\n\nconst Skeleton: FC<SkeletonProps> = ({\n active,\n avatar = false,\n title = true,\n paragraph = true,\n className,\n classNames,\n styles: customStyles,\n style,\n width,\n height,\n gap = 16,\n ...rest\n}) => {\n const showAvatar = Boolean(avatar);\n const showTitle = Boolean(title);\n const showParagraph = Boolean(paragraph);\n const avatarProps = typeof avatar === 'object' ? avatar : undefined;\n const titleProps = typeof title === 'object' ? title : undefined;\n const paragraphProps = typeof paragraph === 'object' ? paragraph : undefined;\n const rootStyle = {\n ...style,\n ...customStyles?.root,\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n };\n\n const avatarActive = avatarProps?.active ?? active;\n const titleActive = titleProps?.active ?? active;\n const paragraphActive = paragraphProps?.active ?? active;\n\n return (\n <Flexbox\n align={showParagraph ? 'flex-start' : 'center'}\n className={cx(className, classNames?.root)}\n gap={gap}\n horizontal\n style={rootStyle}\n width={'100%'}\n {...rest}\n >\n {showAvatar && (\n <SkeletonAvatar\n {...avatarProps}\n active={avatarActive}\n className={cx(styles.avatar, classNames?.avatar, avatarProps?.className)}\n style={{\n ...avatarProps?.style,\n ...customStyles?.avatar,\n }}\n />\n )}\n <Flexbox gap={gap} width={'100%'}>\n {showTitle && (\n <SkeletonTitle\n {...titleProps}\n active={titleActive}\n className={cx(classNames?.title, titleProps?.className)}\n style={{\n ...titleProps?.style,\n ...customStyles?.title,\n }}\n />\n )}\n {showParagraph && (\n <SkeletonParagraph\n {...paragraphProps}\n active={paragraphActive}\n className={cx(classNames?.paragraph, paragraphProps?.className)}\n style={{\n ...paragraphProps?.style,\n ...customStyles?.paragraph,\n }}\n />\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n","'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport SkeletonBlock from './SkeletonBlock';\nimport { styles } from './style';\nimport type { SkeletonAvatarProps } from './type';\n\nconst DEFAULT_SIZE = 40;\n\nconst SkeletonAvatar: FC<SkeletonAvatarProps> = ({\n active,\n shape = 'square',\n size,\n width,\n height,\n style,\n className,\n ...rest\n}) => {\n const defaultSize = size ?? DEFAULT_SIZE;\n const finalWidth = width ?? defaultSize;\n const finalHeight = height ?? defaultSize;\n const borderRadius = shape === 'circle' ? '50%' : cssVar.borderRadius;\n\n return (\n <SkeletonBlock\n active={active}\n className={cx(styles.avatar, className)}\n height={finalHeight}\n style={{ borderRadius, ...style }}\n width={finalWidth}\n {...rest}\n />\n );\n};\n\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nexport default SkeletonAvatar;\n","'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport Block from '@/Block';\nimport { SkeletonBlockProps } from '@/Skeleton/type';\n\nimport { styles } from './style';\n\nconst SkeletonBlock: FC<SkeletonBlockProps> = ({\n width = '100%',\n height = '1em',\n active,\n style,\n className,\n}) => {\n return (\n <Block\n className={cx(styles.base, active && styles.active, className)}\n height={height}\n style={style}\n variant={'filled'}\n width={width}\n />\n );\n};\n\nSkeletonBlock.displayName = 'SkeletonBlock';\n\nexport default SkeletonBlock;\n","import { createStaticStyles, keyframes } from 'antd-style';\n\nconst shimmer = keyframes`\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: .5;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: css`\n background: ${cssVar.colorFillSecondary};\n animation: ${shimmer} 2s linear infinite;\n `,\n\n avatar: css`\n flex-shrink: 0;\n `,\n\n base: css`\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n `,\n\n text: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: ${cssVar.paddingXS};\n\n width: 100%;\n `,\n };\n});\n","'use client';\n\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport SkeletonBlock from './SkeletonBlock';\nimport type { SkeletonParagraphProps } from './type';\n\nconst DEFAULT_ROWS = 3;\n\nconst SkeletonParagraph: FC<SkeletonParagraphProps> = ({\n active,\n rows = DEFAULT_ROWS,\n gap,\n width,\n height,\n fontSize,\n lineHeight,\n style,\n className,\n ...rest\n}) => {\n const rowGap = gap;\n const rowCount = Math.max(rows, 1);\n const baseFontSize = fontSize ?? 14;\n const resolvedLineHeight = lineHeight ?? 1.6;\n const computedHeight = height ? height : Math.round(baseFontSize * resolvedLineHeight);\n const marginBlock = computedHeight - baseFontSize;\n const widthList = Array.isArray(width) ? width : null;\n\n const getRowWidth = (index: number): string | number => {\n if (widthList) return widthList[index] ?? widthList.at(-1) ?? '100%';\n if (width !== undefined) return width as string | number;\n if (index === rowCount - 1) return '66%';\n return '100%';\n };\n\n const containerStyle = { gap: rowGap, ...style };\n\n return (\n <Flexbox\n className={className}\n gap={gap || marginBlock}\n style={containerStyle}\n width={'100%'}\n {...rest}\n >\n {Array.from({ length: rowCount }).map((_, index) => (\n <SkeletonBlock\n active={active}\n height={baseFontSize}\n key={index}\n width={getRowWidth(index)}\n />\n ))}\n </Flexbox>\n );\n};\n\nSkeletonParagraph.displayName = 'SkeletonParagraph';\n\nexport default SkeletonParagraph;\n","'use client';\n\nimport { cssVar } from 'antd-style';\nimport { type FC } from 'react';\n\nimport SkeletonBlock from './SkeletonBlock';\nimport type { SkeletonTitleProps } from './type';\n\nconst SkeletonTitle: FC<SkeletonTitleProps> = ({\n active,\n fontSize,\n lineHeight,\n height,\n width = '60%',\n style,\n className,\n ...rest\n}) => {\n const resolvedLineHeight = lineHeight ?? 1.6;\n const baseFontSize = fontSize !== undefined ? `${fontSize}px` : cssVar.fontSize;\n\n // height = baseFontSize * (1 + (lineHeight - 1) * 0.5)\n const heightMultiplier = 1 + (resolvedLineHeight - 1) * 0.5;\n // marginBlock = baseFontSize * (lineHeight - 1) * 0.25\n const marginMultiplier = (resolvedLineHeight - 1) * 0.25;\n\n return (\n <SkeletonBlock\n active={active}\n className={className}\n height={height ?? `round(calc(${baseFontSize} * ${heightMultiplier}), 1px)`}\n style={{\n marginBlock: `round(calc(${baseFontSize} * ${marginMultiplier}), 1px)`,\n ...style,\n }}\n width={width}\n {...rest}\n />\n );\n};\n\nSkeletonTitle.displayName = 'SkeletonTitle';\n\nexport default SkeletonTitle;\n","'use client';\n\nimport { cssVar } from 'antd-style';\nimport { type FC } from 'react';\n\nimport SkeletonBlock from './SkeletonBlock';\nimport type { SkeletonButtonProps } from './type';\n\nconst HEIGHT_MAP: Record<'large' | 'small' | 'default', number> = {\n default: 36,\n large: 46,\n small: 28,\n};\n\nconst SkeletonButton: FC<SkeletonButtonProps> = ({\n active,\n block = false,\n shape = 'default',\n size = 'default',\n width,\n height,\n style,\n className,\n ...rest\n}) => {\n const resolvedSize = size ?? 'default';\n const baseHeight = height ?? HEIGHT_MAP[resolvedSize];\n const defaultWidth = block ? '100%' : shape === 'circle' ? baseHeight : 80;\n const finalWidth = width ?? defaultWidth;\n\n const RADIUS_MAP: Record<'large' | 'small' | 'default', string> = {\n default: cssVar.borderRadius,\n large: cssVar.borderRadiusLG,\n small: cssVar.borderRadiusSM,\n };\n\n const borderRadius =\n shape === 'circle'\n ? '50%'\n : shape === 'round'\n ? `calc(${cssVar.borderRadius} * 2)`\n : RADIUS_MAP[resolvedSize];\n\n return (\n <SkeletonBlock\n active={active}\n className={className}\n height={baseHeight}\n style={{ borderRadius, ...style }}\n width={finalWidth}\n {...rest}\n />\n );\n};\n\nSkeletonButton.displayName = 'SkeletonButton';\n\nexport default SkeletonButton;\n","'use client';\n\nimport { cssVar } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport SkeletonBlock from './SkeletonBlock';\nimport type { SkeletonTagsProps } from './type';\n\nconst DEFAULT_COUNT = 1;\n\nconst HEIGHT_MAP: Record<'small' | 'middle' | 'large', number> = {\n large: 28,\n middle: 22,\n small: 20,\n};\n\nconst DEFAULT_WIDTH_MAP: Record<'small' | 'middle' | 'large', number> = {\n large: 64,\n middle: 48,\n small: 36,\n};\n\nconst SkeletonTags: FC<SkeletonTagsProps> = ({\n active,\n className,\n count = DEFAULT_COUNT,\n gap,\n height,\n size = 'middle',\n style,\n width,\n ...rest\n}) => {\n const resolvedGap = gap !== undefined ? `${gap}px` : cssVar.paddingXS;\n const resolvedCount = Math.max(count, 1);\n const resolvedHeight = height ?? HEIGHT_MAP[size];\n const widthList = Array.isArray(width) ? width : null;\n const defaultWidth = DEFAULT_WIDTH_MAP[size];\n\n const RADIUS_MAP: Record<'large' | 'small' | 'middle', string> = {\n large: cssVar.borderRadius,\n middle: cssVar.borderRadiusSM,\n small: cssVar.borderRadiusXS,\n };\n\n const getWidth = (index: number) => {\n if (widthList) return widthList[index] ?? widthList.at(-1) ?? defaultWidth;\n if (width !== undefined) return width as string | number;\n return defaultWidth;\n };\n\n return (\n <Flexbox className={className} horizontal style={{ gap: resolvedGap, ...style }} {...rest}>\n {Array.from({ length: resolvedCount }).map((_, index) => (\n <SkeletonBlock\n active={active}\n height={resolvedHeight}\n key={index}\n style={{\n borderRadius: RADIUS_MAP[size],\n }}\n width={getWidth(index)}\n />\n ))}\n </Flexbox>\n );\n};\n\nSkeletonTags.displayName = 'SkeletonTags';\n\nexport default SkeletonTags;\n","import type { ReactNode } from 'react';\n\nimport type { SkeletonProps } from '@/Skeleton/type';\n\nimport SkeletonParent from './Skeleton';\nimport SkeletonAvatar from './SkeletonAvatar';\nimport SkeletonBlock from './SkeletonBlock';\nimport SkeletonButton from './SkeletonButton';\nimport SkeletonParagraph from './SkeletonParagraph';\nimport SkeletonTags from './SkeletonTags';\nimport SkeletonTitle from './SkeletonTitle';\n\ninterface ISkeleton {\n (props: SkeletonProps): ReactNode;\n Avatar: typeof SkeletonAvatar;\n Block: typeof SkeletonBlock;\n Button: typeof SkeletonButton;\n Paragraph: typeof SkeletonParagraph;\n Tags: typeof SkeletonTags;\n Title: typeof SkeletonTitle;\n}\n\nconst Skeleton = SkeletonParent as unknown as ISkeleton;\nSkeleton.Block = SkeletonBlock;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Title = SkeletonTitle;\nSkeleton.Paragraph = SkeletonParagraph;\nSkeleton.Button = SkeletonButton;\nSkeleton.Tags = SkeletonTags;\n\nexport default Skeleton;\n\nexport { default as SkeletonAvatar } from './SkeletonAvatar';\nexport { default as SkeletonBlock } from './SkeletonBlock';\nexport { default as SkeletonButton } from './SkeletonButton';\nexport { default as SkeletonParagraph } from './SkeletonParagraph';\nexport { default as SkeletonTags } from './SkeletonTags';\nexport { default as SkeletonTitle } from './SkeletonTitle';\nexport type * from './type';\n","'use client';\n\nimport { Slider } from 'antd';\nimport { isNull } from 'es-toolkit/compat';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport InputNumber from '@/Input/InputNumber';\n\nimport type { SliderWithInputProps } from './type';\n\nconst SliderWithInput = memo<SliderWithInputProps>(\n ({\n step,\n value,\n onChange,\n max,\n min,\n defaultValue,\n size,\n controls,\n gap = 16,\n style,\n className,\n classNames,\n styles,\n disabled,\n unlimitedInput = false,\n changeOnWheel,\n ...rest\n }) => {\n const handleOnchange = (value: number | null) => {\n if (Number.isNaN(value) || isNull(value)) return;\n onChange?.(value);\n };\n\n const { slider: sliderClassName, input: inputClassName, ...restClassNames } = classNames || {};\n const { slider: sliderStyle, input: inputStyle, ...restStyles } = styles || {};\n\n return (\n <Flexbox\n align={'center'}\n className={className}\n direction={'horizontal'}\n gap={gap}\n style={style}\n >\n <Slider\n className={sliderClassName}\n classNames={restClassNames}\n defaultValue={defaultValue}\n disabled={disabled}\n max={max}\n min={min}\n onChange={handleOnchange}\n step={step}\n style={{ flex: 1, margin: size === 'small' ? 0 : undefined, ...sliderStyle }}\n styles={restStyles}\n tooltip={{ open: false }}\n value={typeof value === 'number' ? value : 0}\n {...rest}\n />\n <InputNumber\n changeOnWheel={changeOnWheel}\n className={inputClassName}\n controls={size !== 'small' || controls}\n defaultValue={defaultValue}\n disabled={disabled}\n max={unlimitedInput ? undefined : max}\n min={min}\n onChange={(v) => handleOnchange(Number(v))}\n size={size}\n step={Number.isNaN(step) || isNull(step) ? undefined : step}\n style={{ flex: 1, maxWidth: size === 'small' ? 40 : 64, ...inputStyle }}\n value={typeof value === 'number' ? value : 0}\n />\n </Flexbox>\n );\n },\n);\n\nSliderWithInput.displayName = 'SliderWithInput';\n\nexport default SliderWithInput;\n","'use client';\n\nimport {\n type Active,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis, restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n arrayMove,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { Fragment, type ReactNode, memo, useMemo, useState } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport DragHandle from './components/DragHandle';\nimport SortableItem from './components/SortableItem';\nimport SortableOverlay from './components/SortableOverlay';\nimport { styles } from './style';\nimport type { SortableListProps } from './type';\n\nconst SortableListParent = memo<SortableListProps>(\n ({ ref, items, onChange, renderItem, gap = 8, ...rest }) => {\n const [active, setActive] = useState<Active | null>(null);\n const activeItem = useMemo(() => items.find((item) => item.id === active?.id), [active, items]);\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n return (\n <DndContext\n modifiers={[restrictToVerticalAxis, restrictToWindowEdges]}\n onDragCancel={() => {\n setActive(null);\n }}\n onDragEnd={({ active, over }) => {\n if (over && active.id !== over?.id) {\n const activeIndex = items.findIndex(({ id }) => id === active.id);\n const overIndex = items.findIndex(({ id }) => id === over.id);\n\n onChange(arrayMove(items, activeIndex, overIndex));\n }\n setActive(null);\n }}\n onDragStart={({ active }) => {\n setActive(active);\n }}\n sensors={sensors}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n <Flexbox as={'ul'} className={styles.container} gap={gap} ref={ref} {...rest}>\n {items.map((item) => (\n <Fragment key={item.id}>{renderItem(item)}</Fragment>\n ))}\n </Flexbox>\n </SortableContext>\n <SortableOverlay>{activeItem ? renderItem(activeItem) : null}</SortableOverlay>\n </DndContext>\n );\n },\n);\n\nSortableListParent.displayName = 'SortableList';\n\nexport interface ISortableList {\n (props: SortableListProps): ReactNode;\n DragHandle: typeof DragHandle;\n Item: typeof SortableItem;\n}\n\nconst SortableList = SortableListParent as unknown as ISortableList;\n\nSortableList.Item = SortableItem;\nSortableList.DragHandle = DragHandle;\n\nexport default SortableList;\n","'use client';\n\nimport { GripVertical } from 'lucide-react';\nimport { memo, use, useState } from 'react';\n\nimport ActionIcon, { type ActionIconProps } from '@/ActionIcon';\n\nimport { SortableItemContext } from './SortableItem';\n\nconst DragHandle = memo<ActionIconProps>(({ style, ...rest }) => {\n const [grab, setGrab] = useState(false);\n const { attributes, listeners, ref } = use(SortableItemContext);\n return (\n <ActionIcon\n data-cypress=\"draggable-handle\"\n glass\n icon={GripVertical}\n onMouseDown={() => setGrab(true)}\n onMouseUp={() => setGrab(false)}\n size={'small'}\n style={{ cursor: grab ? 'grab' : 'grabbing', ...style }}\n {...rest}\n {...attributes}\n {...listeners}\n ref={ref}\n />\n );\n});\n\nDragHandle.displayName = 'DragHandle';\n\nexport default DragHandle;\n","'use client';\n\nimport type { DraggableSyntheticListeners } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { cx } from 'antd-style';\nimport { createContext, memo, useMemo } from 'react';\n\nimport { type FlexboxProps } from '@/Flex';\nimport { Flexbox } from '@/Flex';\n\nimport { variants } from '../style';\n\ninterface Context {\n attributes: Record<string, any>;\n listeners: DraggableSyntheticListeners;\n ref(node: HTMLElement | null): void;\n}\n\nexport const SortableItemContext = createContext<Context>({\n attributes: {},\n listeners: undefined,\n ref() {},\n});\n\nexport interface SortableItemProps extends Omit<FlexboxProps, 'id'> {\n id: string | number;\n variant?: 'borderless' | 'filled' | 'outlined';\n}\n\nconst SortableItem = memo<SortableItemProps>(\n ({ variant = 'borderless', className, children, id, style, ...rest }) => {\n const {\n attributes,\n isDragging,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n } = useSortable({ id });\n const context = useMemo(\n () => ({\n attributes,\n listeners,\n ref: setActivatorNodeRef,\n }),\n [attributes, listeners, setActivatorNodeRef],\n );\n\n return (\n <SortableItemContext value={context}>\n <Flexbox\n align={'center'}\n as={'li'}\n className={cx(variants({ variant }), className)}\n gap={4}\n horizontal\n ref={setNodeRef}\n style={{\n opacity: isDragging ? 0.4 : undefined,\n transform: CSS.Translate.toString(transform),\n transition,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Flexbox>\n </SortableItemContext>\n );\n },\n);\n\nSortableItem.displayName = 'SortableItem';\n\nexport default SortableItem;\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n container: css`\n padding: 0;\n list-style: none;\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n item: css`\n overflow: hidden;\n box-sizing: border-box;\n border-radius: ${cssVar.borderRadius};\n list-style: none;\n `,\n itemVariant: css`\n padding-block: 4px;\n padding-inline: 4px 16px;\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n };\n});\n\nexport const variants = cva(styles.item, {\n compoundVariants: [\n {\n className: styles.itemVariant,\n variant: 'outlined',\n },\n {\n className: styles.itemVariant,\n variant: 'filled',\n },\n ],\n defaultVariants: {\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n","'use client';\n\nimport { DragOverlay, defaultDropAnimationSideEffects } from '@dnd-kit/core';\nimport type { DropAnimation } from '@dnd-kit/core';\nimport type { PropsWithChildren } from 'react';\nimport { memo } from 'react';\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.4',\n },\n },\n }),\n};\n\nconst SortableOverlay = memo<PropsWithChildren>(({ children }) => {\n return <DragOverlay dropAnimation={dropAnimationConfig}>{children}</DragOverlay>;\n});\n\nSortableOverlay.displayName = 'SortableOverlay';\n\nexport default SortableOverlay;\n","'use client';\n\nimport { Select } from 'antd';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport DropdownMenu from '@/DropdownMenu';\nimport type { DropdownItem } from '@/DropdownMenu';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport type { ThemeSwitchProps } from './type';\n\nconst DEFAULT_ICON_SET = {\n auto: Monitor,\n dark: Moon,\n light: Sun,\n};\n\nconst ThemeSwitch: FC<ThemeSwitchProps> = ({\n size = 'middle',\n themeMode,\n onThemeSwitch,\n type = 'icon',\n labels = {\n auto: 'System',\n dark: 'Dark',\n light: 'Light',\n },\n className,\n variant,\n style,\n}) => {\n const items: DropdownItem[] = useMemo(\n () => [\n {\n icon: DEFAULT_ICON_SET.auto,\n key: 'auto',\n label: labels.auto,\n onClick: () => onThemeSwitch('auto'),\n },\n {\n icon: DEFAULT_ICON_SET.light,\n key: 'light',\n label: labels.light,\n onClick: () => onThemeSwitch('light'),\n },\n {\n icon: DEFAULT_ICON_SET.dark,\n key: 'dark',\n label: labels.dark,\n onClick: () => onThemeSwitch('dark'),\n },\n ],\n [labels, onThemeSwitch],\n );\n\n return type === 'select' ? (\n <Select\n className={className}\n defaultValue={themeMode}\n onChange={onThemeSwitch}\n options={items.map((item: any) => ({\n label: (\n <Flexbox align={'center'} gap={8} horizontal>\n <Icon icon={item.icon} />\n {item.label}\n </Flexbox>\n ),\n value: item.key,\n }))}\n style={style}\n variant={variant}\n />\n ) : (\n <DropdownMenu items={items} nativeButton={false}>\n <ActionIcon\n className={className}\n icon={DEFAULT_ICON_SET[themeMode]}\n size={size}\n style={style}\n variant={variant}\n />\n </DropdownMenu>\n );\n};\n\nThemeSwitch.displayName = 'ThemeSwitch';\n\nexport default ThemeSwitch;\n","'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cx } from 'antd-style';\nimport { memo, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { registerDevSingleton } from '@/utils/devSingleton';\n\nimport ToastItem from './Toast';\nimport { ToastContext } from './context';\nimport { viewportVariants } from './style';\nimport type {\n ToastAPI,\n ToastInstance,\n ToastOptions,\n ToastPosition,\n ToastPromiseOptions,\n ToastType,\n} from './type';\n\n// All possible positions\nconst ALL_POSITIONS: ToastPosition[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n];\n\n// Global state management\ninterface ToastState {\n duration: number;\n limit: number;\n position: ToastPosition;\n swipeDirection: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nlet globalState: ToastState = {\n duration: 5000,\n limit: 5,\n position: 'bottom-right',\n swipeDirection: ['down', 'right'],\n};\n\n// Toast managers for each position\nconst toastManagers: Record<ToastPosition, ReturnType<typeof BaseToast.createToastManager>> = {\n 'bottom': BaseToast.createToastManager(),\n 'bottom-left': BaseToast.createToastManager(),\n 'bottom-right': BaseToast.createToastManager(),\n 'top': BaseToast.createToastManager(),\n 'top-left': BaseToast.createToastManager(),\n 'top-right': BaseToast.createToastManager(),\n};\n\nconst activeToastIds: Record<ToastPosition, Set<string>> = {\n 'bottom': new Set(),\n 'bottom-left': new Set(),\n 'bottom-right': new Set(),\n 'top': new Set(),\n 'top-left': new Set(),\n 'top-right': new Set(),\n};\n\nconst getManager = (position: ToastPosition) => toastManagers[position];\n\nconst normalizeOptions = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n type: ToastType,\n): ToastOptions => {\n if (typeof optionsOrMessage === 'string') {\n return {\n description: optionsOrMessage,\n type,\n };\n }\n return {\n ...optionsOrMessage,\n type,\n };\n};\n\nconst createToastInstance = (id: string, position: ToastPosition): ToastInstance => ({\n close: () => getManager(position).close(id),\n id,\n update: (options) => {\n getManager(position).update(id, {\n data: options,\n description: options.description,\n title: options.title,\n });\n },\n});\n\nconst addToast = (options: ToastOptions): ToastInstance => {\n const position = options.placement ?? globalState.position;\n const manager = getManager(position);\n const onRemove = options.onRemove;\n const id = manager.add({\n data: options,\n description: options.description,\n onClose: options.onClose,\n onRemove: () => {\n activeToastIds[position].delete(id);\n onRemove?.();\n },\n timeout: options.duration ?? globalState.duration,\n title: options.title,\n });\n activeToastIds[position].add(id);\n return createToastInstance(id, position);\n};\n\nconst dismissToast = (id?: string) => {\n if (id) {\n // Try to close from all managers since we don't know which position the toast is in\n for (const [position, manager] of Object.entries(toastManagers)) {\n activeToastIds[position as ToastPosition].delete(id);\n manager.close(id);\n }\n } else {\n // Clear all toasts\n for (const [position, manager] of Object.entries(toastManagers)) {\n const ids = Array.from(activeToastIds[position as ToastPosition]);\n for (const toastId of ids) {\n manager.close(toastId);\n }\n activeToastIds[position as ToastPosition].clear();\n }\n }\n};\n\nconst createSuccessToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'success'));\n};\n\nconst createErrorToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'error'));\n};\n\nconst createInfoToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'info'));\n};\n\nconst createWarningToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'warning'));\n};\n\nconst createLoadingToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n const options = normalizeOptions(optionsOrMessage, 'loading');\n // Loading toasts don't auto-dismiss by default\n return addToast({ duration: 0, ...options });\n};\n\nasync function promiseToast<T>(promise: Promise<T>, options: ToastPromiseOptions<T>): Promise<T> {\n const loadingOptions =\n typeof options.loading === 'string'\n ? { description: options.loading }\n : (options.loading as ToastOptions);\n\n const loadingToast = addToast({\n closable: false,\n duration: 0,\n type: 'loading',\n ...loadingOptions,\n });\n\n try {\n const result = await promise;\n\n loadingToast.close();\n\n const successOptions = (() => {\n if (typeof options.success === 'string') {\n return { description: options.success };\n }\n if (typeof options.success === 'function') {\n return { description: options.success(result) };\n }\n return options.success as ToastOptions;\n })();\n\n addToast({ type: 'success', ...successOptions });\n\n return result;\n } catch (error) {\n loadingToast.close();\n\n const errorOptions = (() => {\n if (typeof options.error === 'string') {\n return { description: options.error };\n }\n if (typeof options.error === 'function') {\n return { description: options.error(error as Error) };\n }\n return options.error as ToastOptions;\n })();\n\n addToast({ type: 'error', ...errorOptions });\n\n throw error;\n }\n}\n\n// Base toast function\nconst baseToast = (options: ToastOptions): ToastInstance => {\n return addToast({ type: 'default', ...options });\n};\n\n// Toast API\nexport const toast: ToastAPI = Object.assign(baseToast, {\n dismiss: dismissToast,\n error: createErrorToast,\n info: createInfoToast,\n loading: createLoadingToast,\n promise: promiseToast,\n success: createSuccessToast,\n warning: createWarningToast,\n});\n\n// Toast List Component\nconst ToastList = memo(() => {\n const { toasts } = BaseToast.useToastManager();\n return toasts.map((t) => <ToastItem key={t.id} toast={t} />);\n});\n\nToastList.displayName = 'ToastList';\n\n// Toast Host Component\nconst TOAST_PORTAL_ATTR = 'data-lobe-ui-toast-portal';\nexport const TOAST_CONTAINER_ATTR = 'data-lobe-ui-toast-container';\n\nconst containerMap = new WeakMap<object, HTMLElement>();\n\nconst getOrCreateContainer = (root: HTMLElement | ShadowRoot): HTMLElement => {\n const resolvedRoot = (() => {\n if (typeof document === 'undefined') return root;\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) return root;\n\n const isBody = root === document.body;\n if (!isBody) return root;\n\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n if (themeApp) return themeApp;\n\n const toastContainer = document.querySelector<HTMLElement>(`[${TOAST_CONTAINER_ATTR}=\"true\"]`);\n if (toastContainer) return toastContainer;\n\n return root;\n })();\n\n const cached = containerMap.get(resolvedRoot);\n if (cached && cached.isConnected) return cached;\n\n const el = document.createElement('div');\n el.setAttribute(TOAST_PORTAL_ATTR, 'true');\n resolvedRoot.append(el);\n containerMap.set(resolvedRoot, el);\n return el;\n};\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nexport interface ToastHostProps {\n className?: string;\n /**\n * Default duration for toasts\n * @default 5000\n */\n duration?: number;\n /**\n * Maximum number of toasts\n * @default 5\n */\n limit?: number;\n /**\n * Toast position\n * @default 'bottom-right'\n */\n position?: ToastPosition;\n /**\n * Root element for portal\n */\n root?: HTMLElement | ShadowRoot | null;\n /**\n * Swipe direction to dismiss\n * @default ['down', 'right']\n */\n swipeDirection?: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nexport const ToastHost = memo(\n ({\n root,\n className,\n duration = 5000,\n limit = 5,\n position = 'bottom-right',\n swipeDirection = ['down', 'right'],\n }: ToastHostProps) => {\n const isClient = useIsClient();\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n globalState = {\n duration,\n limit,\n position,\n swipeDirection,\n };\n }, [duration, limit, position, swipeDirection]);\n\n useEffect(() => {\n if (!isClient) return;\n\n const resolved = resolveRoot(root);\n if (resolved) {\n setContainer(getOrCreateContainer(resolved));\n }\n\n const scope = root ?? document.body;\n return registerDevSingleton('ToastHost', scope);\n }, [isClient, root]);\n\n if (!isClient || !container) return null;\n\n return createPortal(\n <>\n {ALL_POSITIONS.map((pos) => (\n <ToastContext.Provider key={pos} value={{ position: pos, swipeDirection }}>\n <BaseToast.Provider limit={limit} timeout={duration} toastManager={getManager(pos)}>\n <BaseToast.Portal container={container}>\n <BaseToast.Viewport className={cx(viewportVariants({ position: pos }), className)}>\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n </BaseToast.Provider>\n </ToastContext.Provider>\n ))}\n </>,\n container,\n );\n },\n);\n\nToastHost.displayName = 'ToastHost';\n\n// Hook to use toast manager\nexport const useToast = () => toast;\n","'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cssVar, cx } from 'antd-style';\nimport { AlertTriangle, CheckCircle, Info, Loader2, X, XCircle } from 'lucide-react';\nimport { type ReactNode, memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { useToastContext } from './context';\nimport { actionVariants, rootVariants, styles } from './style';\nimport type { ToastOptions, ToastProps, ToastType } from './type';\n\nconst typeIcons: Record<ToastType, typeof Info> = {\n default: Info,\n error: XCircle,\n info: Info,\n loading: Loader2,\n success: CheckCircle,\n warning: AlertTriangle,\n};\n\nconst typeColors: Record<ToastType, string> = {\n default: cssVar.colorText,\n error: cssVar.colorError,\n info: cssVar.colorInfo,\n loading: cssVar.colorPrimary,\n success: cssVar.colorSuccess,\n warning: cssVar.colorWarning,\n};\n\nconst ToastItem = memo<ToastProps>(({ toast, classNames, styles: customStyles }) => {\n const { position, swipeDirection } = useToastContext();\n const toastData = toast.data as ToastOptions | undefined;\n const type = toastData?.type ?? 'default';\n const closable = toastData?.closable ?? true;\n const hideCloseButton = toastData?.hideCloseButton ?? false;\n const showCloseButton = closable && !hideCloseButton;\n const icon = toastData?.icon;\n const title = toast.title ?? toastData?.title;\n const description = toast.description ?? toastData?.description;\n const actionProps = toast.actionProps ?? toastData?.actionProps;\n const actions = toastData?.actions;\n\n const iconColor = typeColors[type];\n const IconComponent = icon ?? typeIcons[type];\n const isLoading = type === 'loading';\n\n const renderIcon = (): ReactNode => {\n if (!IconComponent) return null;\n return (\n <div className={cx(styles.icon, classNames?.icon)} style={customStyles?.icon}>\n <Icon color={iconColor} icon={IconComponent} size={18} spin={isLoading} />\n </div>\n );\n };\n\n const renderActions = (): ReactNode => {\n if (actions && actions.length > 0) {\n return (\n <div className={cx(styles.actions, classNames?.actions)} style={customStyles?.actions}>\n {actions.map((action, index) => (\n <BaseToast.Action\n className={cx(\n actionVariants({ variant: action.variant ?? 'primary' }),\n classNames?.action,\n )}\n key={index}\n onClick={action.onClick}\n style={customStyles?.action}\n {...action.props}\n >\n {action.label}\n </BaseToast.Action>\n ))}\n </div>\n );\n }\n if (actionProps) {\n return (\n <BaseToast.Action\n className={cx(actionVariants({ variant: 'primary' }), classNames?.action)}\n style={customStyles?.action}\n {...actionProps}\n />\n );\n }\n return null;\n };\n\n return (\n <BaseToast.Root\n className={cx(rootVariants({ position }), classNames?.root)}\n style={{\n ...customStyles?.root,\n ...toastData?.style,\n }}\n swipeDirection={swipeDirection}\n toast={toast}\n >\n <BaseToast.Content\n className={cx(styles.content, classNames?.content)}\n style={customStyles?.content}\n >\n <div className={styles.toastBody}>\n {renderIcon()}\n <div className={styles.contentArea}>\n <div className={styles.titleRow}>\n {title && (\n <BaseToast.Title\n className={cx(styles.title, classNames?.title)}\n style={customStyles?.title}\n >\n {title}\n </BaseToast.Title>\n )}\n {showCloseButton && (\n <BaseToast.Close\n aria-label=\"Close\"\n className={cx(styles.close, classNames?.close)}\n style={customStyles?.close}\n >\n <X size={14} />\n </BaseToast.Close>\n )}\n </div>\n {description && (\n <BaseToast.Description\n className={cx(styles.description, classNames?.description)}\n style={{\n marginBlockStart: title ? 4 : 0,\n ...customStyles?.description,\n }}\n >\n {description}\n </BaseToast.Description>\n )}\n {renderActions()}\n </div>\n </div>\n </BaseToast.Content>\n </BaseToast.Root>\n );\n});\n\nToastItem.displayName = 'ToastItem';\n\nexport default ToastItem;\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\nimport type { ToastPosition } from './type';\n\nexport interface ToastContextValue {\n position: ToastPosition;\n swipeDirection: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nexport const ToastContext = createContext<ToastContextValue>({\n position: 'bottom-right',\n swipeDirection: ['down', 'right'],\n});\n\nexport const useToastContext = () => useContext(ToastContext);\n","import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n action: css`\n cursor: pointer;\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n height: 28px;\n padding-inline: 12px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n\n transition:\n background 0.2s,\n color 0.2s;\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n actionDanger: css`\n color: ${cssVar.colorTextLightSolid};\n background: ${cssVar.colorError};\n\n &:hover {\n background: ${cssVar.colorErrorHover};\n }\n\n &:active {\n background: ${cssVar.colorErrorActive};\n }\n\n &:focus-visible {\n outline-color: ${cssVar.colorErrorBorder};\n }\n `,\n\n actionGhost: css`\n border: 1px solid ${cssVar.colorBorder};\n color: ${cssVar.colorText};\n background: transparent;\n\n &:hover {\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorPrimary};\n }\n\n &:active {\n border-color: ${cssVar.colorPrimaryActive};\n color: ${cssVar.colorPrimaryActive};\n }\n `,\n\n actionPrimary: css`\n color: ${cssVar.colorTextLightSolid};\n background: ${cssVar.colorPrimary};\n\n &:hover {\n background: ${cssVar.colorPrimaryHover};\n }\n\n &:active {\n background: ${cssVar.colorPrimaryActive};\n }\n `,\n\n actionSecondary: css`\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active {\n background: ${cssVar.colorFill};\n }\n `,\n\n actionText: css`\n color: ${cssVar.colorPrimary};\n background: transparent;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active {\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n actions: css`\n display: flex;\n flex-grow: 1;\n flex-shrink: 0;\n gap: 8px;\n align-items: center;\n align-self: flex-end;\n justify-content: flex-end;\n\n margin-block-start: 8px;\n `,\n\n close: css`\n cursor: pointer;\n\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n margin-inline-start: auto;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 0.2s;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n content: css`\n overflow: hidden;\n transition: opacity 0.2s;\n\n &[data-behind] {\n pointer-events: none;\n opacity: 0;\n }\n\n &[data-expanded] {\n pointer-events: auto;\n opacity: 1;\n }\n `,\n\n contentArea: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n `,\n\n description: css`\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n color: ${cssVar.colorTextSecondary};\n `,\n\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n `,\n\n root: css`\n --toast-gap: 12px;\n --toast-peek: 12px;\n --toast-scale: calc(1 - var(--toast-index) * 0.05);\n --toast-shrink: calc(1 - var(--toast-scale));\n --toast-collapsed-height: var(--toast-frontmost-height, var(--toast-height));\n\n cursor: default;\n user-select: none;\n\n position: absolute;\n z-index: calc(1000 - var(--toast-index));\n inset-inline: 0;\n\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-collapsed-height);\n padding-block: 12px;\n padding-inline: 16px;\n border-radius: ${cssVar.borderRadiusLG};\n\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorBgElevated};\n background-clip: padding-box;\n box-shadow:\n 0 0 0 1px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 1px 1px -0.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 3px 3px -1.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 6px 6px -3px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 12px 12px -6px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 24px 24px -12px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent);\n\n transition:\n transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n opacity 0.4s,\n height 0.15s;\n\n /* Fill gap between stacked toasts to prevent hover flicker */\n &::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n height: calc(var(--toast-gap) + var(--toast-peek) + 8px);\n }\n\n &[data-limited] {\n opacity: 0;\n }\n\n &[data-swiping] {\n transition: none;\n }\n `,\n\n // Bottom positions - stack upward\n rootBottom: css`\n inset-block: auto 0;\n transform-origin: bottom center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) - (var(--toast-index) * var(--toast-peek)) -\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-start: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) * -1 + var(--toast-index) *\n var(--toast-gap) * -1\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(150%);\n opacity: 0;\n }\n `,\n\n // Top positions - stack downward\n rootTop: css`\n inset-block: 0 auto;\n transform-origin: top center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + (var(--toast-index) * var(--toast-peek)) +\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-end: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) + var(--toast-index) *\n var(--toast-gap)\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(-150%);\n opacity: 0;\n }\n `,\n\n title: css`\n margin: 0;\n\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: ${cssVar.colorText};\n `,\n\n titleRow: css`\n display: flex;\n gap: 8px;\n align-items: center;\n `,\n\n toastBody: css`\n display: flex;\n gap: 12px;\n align-items: flex-start;\n `,\n\n viewport: css`\n position: fixed;\n z-index: 1100;\n\n width: 360px;\n max-width: calc(100vw - 32px);\n\n outline: 0;\n\n @media (width <= 480px) {\n width: calc(100vw - 32px);\n }\n `,\n\n viewportBottom: css`\n inset-block-end: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportBottomLeft: css`\n inset-block-end: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportBottomRight: css`\n inset-block-end: 16px;\n inset-inline-end: 16px;\n `,\n\n viewportTop: css`\n inset-block-start: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportTopLeft: css`\n inset-block-start: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportTopRight: css`\n inset-block-start: 16px;\n inset-inline-end: 16px;\n `,\n}));\n\nexport const viewportVariants = cva(styles.viewport, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.viewportBottom,\n 'bottom-left': styles.viewportBottomLeft,\n 'bottom-right': styles.viewportBottomRight,\n 'top': styles.viewportTop,\n 'top-left': styles.viewportTopLeft,\n 'top-right': styles.viewportTopRight,\n },\n },\n});\n\nexport const rootVariants = cva(styles.root, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.rootBottom,\n 'bottom-left': styles.rootBottom,\n 'bottom-right': styles.rootBottom,\n 'top': styles.rootTop,\n 'top-left': styles.rootTop,\n 'top-right': styles.rootTop,\n },\n },\n});\n\nexport const actionVariants = cva(styles.action, {\n defaultVariants: {\n variant: 'primary',\n },\n variants: {\n variant: {\n danger: styles.actionDanger,\n ghost: styles.actionGhost,\n primary: styles.actionPrimary,\n secondary: styles.actionSecondary,\n text: styles.actionText,\n },\n },\n});\n","'use client';\n\nimport { Anchor } from 'antd';\nimport { cx } from 'antd-style';\nimport { memo, useMemo } from 'react';\n\nimport { default as TocMobile } from './TocMobile';\nimport { styles } from './style';\nimport type { TocProps } from './type';\nimport { mapItems } from './utils';\n\nconst Toc = memo<TocProps>(\n ({ activeKey, items, getContainer, isMobile, headerHeight = 64, tocWidth = 176 }) => {\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--toc-header-height': `${headerHeight}px`,\n '--toc-width': `${tocWidth}px`,\n }),\n [headerHeight, tocWidth],\n );\n\n if (isMobile)\n return (\n <TocMobile\n activeKey={activeKey}\n getContainer={getContainer}\n headerHeight={headerHeight}\n items={items}\n />\n );\n\n return (\n <section className={cx(styles.container, styles.anchor)} style={cssVariables}>\n <h4>Table of Contents</h4>\n <Anchor\n getContainer={getContainer}\n items={mapItems(items)}\n targetOffset={headerHeight + 12}\n />\n </section>\n );\n },\n);\n\nToc.displayName = 'Toc';\n\nexport default Toc;\n","'use client';\n\nimport { Anchor, Collapse, ConfigProvider } from 'antd';\nimport { PanelTopClose, PanelTopOpen } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\n\nimport { styles } from './style';\nimport type { TocMobileProps } from './type';\nimport { mapItems } from './utils';\n\nconst TocMobile = memo<TocMobileProps>(\n ({ items, activeKey, onChange, getContainer, headerHeight = 64, tocWidth = 176 }) => {\n // tocWidth is part of the interface but not used in this component\n void tocWidth;\n const [activeLink, setActiveLink] = useControlledState<string>('', {\n onChange,\n value: activeKey,\n });\n\n const activeAnchor = items.find((item) => item.id === activeLink);\n\n const tocItems = useMemo(() => mapItems(items), [items]);\n\n return (\n <ConfigProvider theme={{ token: { fontSize: 12, sizeStep: 3 } }}>\n <section className={styles.mobileCtn}>\n <Collapse\n className={styles.expand}\n expandIcon={({ isActive }) => (\n <ActionIcon icon={isActive ? PanelTopClose : PanelTopOpen} size={'small'} />\n )}\n expandIconPlacement={'end'}\n ghost\n >\n <Collapse.Panel\n forceRender\n header={activeAnchor ? activeAnchor.title : 'TOC'}\n key={'toc'}\n >\n <ConfigProvider theme={{ token: { fontSize: 14, sizeStep: 4 } }}>\n <Anchor\n getContainer={getContainer}\n items={tocItems}\n onChange={(currentLink) => {\n setActiveLink(currentLink.replace('#', ''));\n }}\n targetOffset={headerHeight + 48}\n />\n </ConfigProvider>\n </Collapse.Panel>\n </Collapse>\n </section>\n </ConfigProvider>\n );\n },\n);\n\nTocMobile.displayName = 'TocMobile';\n\nexport default TocMobile;\n","import { createStaticStyles, cx, responsive } from 'antd-style';\n\nimport { lobeStaticStylish } from '@/styles';\n\nconst prefixCls = 'ant';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n const fixHeight = 36;\n\n return {\n anchor: cx(\n lobeStaticStylish.blur,\n css`\n overflow: hidden auto;\n max-height: 60dvh !important;\n `,\n ),\n container: css`\n position: sticky;\n inset-block-start: calc(var(--toc-header-height, 64px) + 64px);\n\n overscroll-behavior: contain;\n grid-area: toc;\n\n width: var(--toc-width, 176px);\n margin-inline-end: 24px;\n border-radius: 3px;\n\n -webkit-overflow-scrolling: touch;\n\n ${responsive.sm} {\n position: relative;\n inset-inline-start: 0;\n width: 100%;\n margin-block-start: 0;\n }\n\n > h4 {\n margin-block: 0 8px;\n margin-inline: 0;\n\n font-size: 12px;\n line-height: 1;\n color: ${cssVar.colorTextDescription};\n }\n `,\n expand: cx(\n lobeStaticStylish.blur,\n css`\n width: 100%;\n border-block-end: 1px solid ${cssVar.colorSplit};\n border-radius: 0;\n\n background-color: color-mix(in srgb, ${cssVar.colorBgLayout} 50%, transparent);\n box-shadow: ${cssVar.boxShadowSecondary};\n\n .${prefixCls}-collapse-content {\n overflow: auto;\n }\n\n .${prefixCls}-collapse-header {\n z-index: 10;\n padding-block: 8px !important;\n padding-inline: 16px 8px !important;\n }\n `,\n ),\n mobileCtn: css`\n width: 100%;\n height: ${fixHeight}px;\n\n .${prefixCls}-collapse-expand-icon {\n color: ${cssVar.colorTextQuaternary};\n }\n `,\n };\n});\n","import { TocItemType } from '@/Toc/type';\n\nexport const mapItems = (items: TocItemType[]) =>\n items.map((item) => ({\n children: item.children?.map((child) => ({\n href: `#${child.id}`,\n key: child.id,\n title: child?.title,\n })),\n href: `#${item.id}`,\n key: item.id,\n title: item.title,\n }));\n"],"mappings":"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ACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,2BACA,2BACA,0BACA,2BACA,0BACA,yBACA,0BACA,0BACA,0BACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,2BACA,0BACA,2BACA,yBACA,0BACA,yBACA,0BACA,0BACA,0BACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAA2B,CAC/B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,yBACA,wBACA,yBACA,yBACA,yBACA,wBACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,0BACA,0BACA,yBACA,yBACA,wBACA,yBACA,yBACA,UACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,wBACA,wBACA,0BACA,0BACA,0BACA,0BACA,0BACA,yBACA,0BACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBACA,sBACA,qBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAwB,CAC5B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,yBACA,0BACA,2BACA,2BACA,4BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,0BACA,0BACA,0BACA,yBACA,yBACA,wBACA,wBACA,yBACA,yBACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,2BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,0BACA,2BACA,0BACA,0BACA,yBACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAA0B,CAC9B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,yBACA,yBACA,yBACA,0BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,2BACA,0BACA,0BACA,0BACA,yBACA,yBACA,yBACA,0BACA,yBACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAyB,CAC7B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,4BACA,0BACA,yBACA,0BACA,yBACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAA0B,CAC9B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAyB,CAC7B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAsB,CAC1B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,yBACA,yBACA,0BACA,0BACA,0BACA,0BACA,2BACA,0BACA,2BACA,2BACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,2BACA,0BACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAA0B,CAC9B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,yBACA,yBACA,yBACA,yBACA,yBACA,0BACA,0BACA,0BACA,0BACA,2BACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,0BACA,0BACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,UACA,SACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAyB,CAC7B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,4BACA,4BACA,4BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,UACA,UACA,SACF,CACF,EAEOC,GAAQD,GChCR,IAAME,GAA2B,CACtC,KAAAC,GACA,KAAAC,GACA,SAAAC,GACA,KAAAC,GACA,KAAAC,GACA,MAAAC,GACA,KAAAC,GACA,QAAAC,GACA,OAAAC,GACA,QAAAC,GACA,OAAAC,GACA,IAAAC,GACA,QAAAC,GACA,OAAAC,EACF,EC9CA,IAAMC,GAAwB,CAC5B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACF,EACA,OAAQ,CACN,uBACA,2BACA,yBACA,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,sBACA,oBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAwB,CAC5B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACF,EACA,OAAQ,CACN,uBACA,2BACA,uBACA,wBACA,yBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,sBACA,oBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,4BACA,wBACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAQ,CACN,uBACA,0BACA,uBACA,uBACA,yBACA,uBACA,uBACA,wBACA,wBACA,uBACA,uBACA,sBACA,oBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAuB,CAC3B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,4BACA,2BACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACF,EACA,OAAQ,CACN,uBACA,2BACA,yBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,qBACF,CACF,EAEOC,GAAQD,GC/Df,IAAME,GAAwB,CAC5B,KAAM,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,MAAO,CACL,4BACA,4BACA,4BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,SACF,EACA,MAAO,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACF,EACA,OAAQ,CACN,uBACA,yBACA,uBACA,wBACA,wBACA,wBACA,wBACA,uBACA,wBACA,uBACA,uBACA,sBACA,oBACF,CACF,EAEOC,GAAQD,GCjDR,IAAME,GAAyC,CACpD,MAAAC,GACA,MAAAC,GACA,KAAAC,GACA,KAAAC,GACA,MAAAC,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SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,uEACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,4BACP,SAAU,CACR,WAAY,SAAO,QACrB,CACF,EACA,CACE,MAAO,mBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MACE,mKACF,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,gBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,oFACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,yCACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,MAAO,kDACP,SAAU,CACR,WAAY,SAAO,QACrB,CACF,EACA,CACE,MAAO,+BACP,SAAU,CACR,UAAW,SACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,mCACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,+DACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,UACP,SAAU,CACR,UAAW,SACX,WAAY,SAAO,mBACrB,CACF,EACA,CACE,MAAO,kEACP,SAAU,CACR,UAAW,SACX,WAAY,SAAO,mBACrB,CACF,EACA,CACE,MAAO,cACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,6EACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,wEACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,8CACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,qCACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,MACE,uJACF,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,kEACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,uBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MACE,2FACF,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,yBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,oCACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,iCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,6BACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,iCACP,SAAU,CACR,WAAY,SAAO,kBACrB,CACF,EACA,CACE,MAAO,uCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,kBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,8BACP,SAAU,CACR,WAAY,SAAO,QACrB,CACF,EACA,CACE,MAAO,qCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,iBACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,2DACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,2DACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,gBACP,SAAU,CACR,UAAW,SACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,cACP,SAAU,CACR,UAAW,OACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,uDACP,SAAU,CACR,UAAW,cACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,oEACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,oCACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,+BACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,sCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,+CACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,wDACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,yEACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,MAAO,yBACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,oCACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,8BACP,SAAU,CACR,WAAY,SAAO,mBACrB,CACF,EACA,CACE,MAAO,uCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,8BACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,0BACP,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,uCACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,0CACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,wEACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,MAAO,aACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,4BACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,MAAO,wEACP,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,mBACP,SAAU,CACR,UAAW,SACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,uBACP,SAAU,CACR,WAAY,SAAO,UACrB,CACF,EACA,CACE,SAAU,CACR,WAAY,UACZ,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,CAAC,4BAA4B,EACpC,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,CAAC,gBAAgB,EACxB,SAAU,CACR,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,CAAC,iBAAiB,EACzB,SAAU,CACR,WAAY,SAAO,YACrB,CACF,EACA,CACE,MAAO,CAAC,kBAAkB,EAC1B,SAAU,CACR,UAAW,WACb,CACF,EACA,CACE,MAAO,CAAC,iBAAiB,EACzB,SAAU,CACR,UAAW,SACX,WAAY,SAAO,SACrB,CACF,EACA,CACE,MAAO,CAAC,oBAAoB,EAC5B,SAAU,CACR,UAAW,QACb,CACF,EACA,CACE,MAAO,CAAC,0DAA0D,EAClE,SAAU,CACR,UAAW,SA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","names":["index_exports","__export","A_default","Accordion_default","AccordionItem_default","ActionIcon_default","ActionIconGroup_default","Alert_default","Select_default","Avatar_default","AvatarGroup_default","Block_default","Burger_default","Button_default","CLASSNAMES","Center_default","Checkbox_default","CheckboxGroup_default","CodeDiff_default","CodeEditor_default","Collapse_default","ColorSwatches_default","ConfigProvider_default","ContextMenuHost","ContextMenuTrigger","CopyButton_default","DROPDOWN_MENU_CONTAINER_ATTR","DatePicker_default","DownloadButton_default","DraggablePanel_default","DraggablePanelBody_default","DraggablePanelContainer_default","DraggablePanelFooter_default","DraggablePanelHeader_default","DraggableSideNav_default","Drawer_default","Dropdown_default","DropdownMenu_default","DropdownMenuCheckboxItemIndicator","DropdownMenuCheckboxItemPrimitive","DropdownMenuGroup","DropdownMenuGroupLabel","DropdownMenuItem","DropdownMenuItemContent","DropdownMenuItemExtra","DropdownMenuItemIcon","DropdownMenuItemLabel","DropdownMenuPopup","DropdownMenuPortal","DropdownMenuPositioner","DropdownMenuRoot","DropdownMenuSeparator","DropdownMenuSubmenuArrow","DropdownMenuSubmenuRoot","DropdownMenuSubmenuTrigger","DropdownMenuTrigger","EditableText_default","EditorSlashMenu_default","EmojiPicker_default","Empty_default","FileTypeIcon_default","FlexBasic_default","FluentEmoji_default","FontLoader_default","Footer_default","Form_default","FormGroup_default","FormItem_default","FormModal_default","FormSubmitFooter_default","FormTitle_default","Grid_default","GroupAvatar_default","GuideCard_default","Header_default","Highlighter_default","Hotkey_default","HotkeyInput_default","I18nProvider","Icon_default","IconProvider","Image_default","ImageSelect_default","Input_default","InputNumber_default","InputOPT_default","InputPassword_default","KeyMapEnum","LOBE_SELECT_CONTAINER_ATTR","LOBE_THEME_APP_ID","Layout_default","LayoutFooter_default","LayoutHeader_default","LayoutMain_default","LayoutSidebar_default","LayoutSidebarInner_default","LayoutToc_default","List_default","ListItem_default","LobeSelect_default","LobeSelectArrow","LobeSelectBackdrop","LobeSelectGroup","LobeSelectGroupLabel","LobeSelectIcon","LobeSelectItem","LobeSelectItemIndicator","LobeSelectItemText","LobeSelectList","LobeSelectPopup","LobeSelectPortal","LobeSelectPositioner","LobeSelectRoot","LobeSelectScrollDownArrow","LobeSelectScrollUpArrow","LobeSelectSeparator","LobeSelectTrigger","LobeSelectValue","LobeSwitch_default","LobeSwitchIcon","LobeSwitchRoot","LobeSwitchThumb","Markdown_default","MaskShadow_default","MaterialFileTypeIcon_default","Menu_default","Mermaid_default","Meta_default","Modal_default","ModalHost","ModalProvider","MotionComponent","MotionProvider","POPOVER_CONTAINER_ATTR","PatchDiff_default","Popover_default","PopoverArrow","PopoverArrowIcon","PopoverBackdrop","PopoverGroup_default","PopoverPopup","PopoverPortal","PopoverPositioner","PopoverProvider","PopoverRoot","PopoverTriggerElement","PopoverViewport","PreviewGroup_default","ScrollArea","ScrollAreaContent","ScrollAreaCorner","ScrollAreaRoot","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaViewport","ScrollShadow_default","SearchBar_default","SearchResultCards_default","Segmented_default","lobe_theme_default","SideNav_default","Skeleton_default","SkeletonAvatar_default","SkeletonBlock_default","SkeletonButton_default","SkeletonParagraph_default","SkeletonTags_default","SkeletonTitle_default","SliderWithInput_default","Snippet_default","SortableList_default","SyntaxHighlighter_default","SyntaxMermaid_default","Tabs_default","Tag_default","Text_default","TextArea_default","ThemeProvider_default","ThemeSwitch_default","ToastHost","Toc_default","Tooltip_default","TooltipGroup_default","Typography_default","Video_default","closeContextMenu","combineKeys","copyToClipboard","createModal","createRawModal","findCustomThemeName","genCdnUrl","generateColorNeutralPalette","generateColorPalette","highlighterThemes","generateCustomStylish","generateCustomToken","staticStylish","styles","mermaidThemes","neutralColors","neutralColorsSwatches","placementMap","preprocessMarkdownContent","preventDefault","preventDefaultAndStopPropagation","primaryColors","primaryColorsSwatches","rehypeCustomFootnotes","rehypeKatexDir","rehypeStreamAnimated","remarkBr","remarkColor","remarkCustomFootnotes","remarkGfmPlus","remarkVideo","renderDropdownMenuItems","showContextMenu","stopPropagation","toFloatingUIPlacement","toast","updateContextMenuItems","useCdnFn","useLobeSwitchContext","useModalContext","useMotionComponent","usePopoverContext","usePopoverPortalContainer","useToast","useTranslation","__toCommonJS","import_react","import_react","import_react","import_jsx_runtime","MotionComponent","MotionProvider","children","motion","useMotionComponent","context","import_url_join","UNPKG_API","ALIYUN_API","genCdnUrl","pkg","version","path","proxy","urlJoin","import_jsx_runtime","ConfigContext","I18nContextInternal","key","isThenable","value","ConfigProvider","children","config","locale","resources","motion","fallbackLocale","resolvedResources","setResolvedResources","resolvedLocale","setResolvedLocale","latestRequestId","requestId","targetLocale","nextResources","currentResources","currentLocale","i18nValue","resourceList","mergedResources","MotionComponent","cdnFallback","pkg","version","path","genCdnUrl","useCdnFn","useI18n","ConfigProvider_default","ConfigProvider","import_jsx_runtime","createContainer","as","props","A","render","ConfigContext","AContainer","A_default","import_antd","import_antd_style","import_react","import_use_merge_value","import_react","AccordionContext","useAccordionContext","import_antd_style","styles","css","cssVar","import_jsx_runtime","Accordion","children","userClassName","userStyle","accordion","defaultExpandedKeys","expandedKeysProp","onExpandedChange","variant","gap","showDivider","disableAnimation","hideIndicator","indicatorPlacement","keepContentMounted","classNames","customStyles","motionProps","ref","rest","validChildren","allItemKeys","child","index","initialExpandedKeys","expandedKeys","setExpandedKeys","useMergeState","toggleExpand","key","prev","newKeys","k","isExpanded","contextValue","content","childKey","styles","AccordionContext","Accordion_default","import_antd_style","import_react","import_use_merge_value","import_antd_style","import_react","getFlexDirection","direction","isHorizontal","isSpaceDistribution","distribution","getCssValue","value","import_jsx_runtime","FlexBasic","visible","flex","gap","direction","horizontal","align","justify","distribution","height","width","allowShrink","padding","paddingInline","paddingBlock","prefixCls","Container","className","style","children","wrap","ref","props","justifyContent","finalWidth","isHorizontal","isSpaceDistribution","getCssValue","mergedStyle","getFlexDirection","baseClassName","mergedClassName","FlexBasic_default","import_jsx_runtime","Center","children","ref","props","FlexBasic_default","Center_default","import_antd_style","import_class_variance_authority","blue","blue_default","cyan","cyan_default","geekblue","geekblue_default","gold","gold_default","gray","gray_default","green","green_default","lime","lime_default","magenta","magenta_default","orange","orange_default","primary","primary_default","purple","purple_default","red","red_default","volcano","volcano_default","yellow","yellow_default","colorScales","blue_default","cyan_default","geekblue_default","gold_default","gray_default","green_default","lime_default","magenta_default","orange_default","primary_default","purple_default","red_default","volcano_default","yellow_default","mauve","mauve_default","olive","olive_default","sage","sage_default","sand","sand_default","slate","slate_default","neutralColorScales","mauve_default","olive_default","sage_default","sand_default","slate_default","primaryColors","blue_default","cyan_default","geekblue_default","gold_default","green_default","lime_default","magenta_default","orange_default","purple_default","red_default","volcano_default","yellow_default","primaryColorsSwatches","neutralColors","mauve_default","olive_default","sage_default","sand_default","slate_default","neutralColorsSwatches","findCustomThemeName","type","value","item","import_antd_style","generateCustomStylish","css","token","isDarkMode","gradient","import_antd_style","gradient","staticStylish","css","cssVar","import_compat","import_polished","generateColorPalette","name","scale","appearance","isDarkMode","generateCustomColorPalette","colorStepPalette","index","color","generateCustomColorToken","colorCustomToken","type","colorScales","generateCustomToken","token","import_compat","generateColorPalette","type","scale","appearance","name","isDarkMode","generateColorNeutralPalette","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Block","className","variant","shadow","glass","children","clickable","ref","rest","FlexBasic_default","variants","Block_default","import_antd_style","import_react","import_react","import_merge_props","import_tooltip","import_react","import_react_merge_refs","import_react","NATIVE_BUTTON_MAP","getComponentDisplayName","element","type","useNativeButton","children","nativeButton","triggerNativeButton","isNativeButtonTriggerElement","resolvedNativeButton","displayName","import_react","TooltipGroupHandleContext","TooltipGroupPropsContext","import_react","useMergedTooltipProps","props","sharedProps","TooltipGroupPropsContext","arrow","className","classNames","closeDelay","disabled","getPopupContainer","hotkey","hotkeyProps","mouseEnterDelay","mouseLeaveDelay","onOpenChange","openDelay","placement","styleProps","title","zIndex","positionerProps","triggerProps","popupProps","mergedClassName","mergedClassNames","resolvedSharedStyles","resolvedLocalStyles","mergedStyles","mergedHotkeyProps","mergedOnOpenChange","open","import_jsx_runtime","DEFAULT_OPEN_DELAY","DEFAULT_CLOSE_DELAY","TooltipInGroup","children","refProp","props","group","TooltipGroupHandleContext","item","useMergedTooltipProps","resolvedOpenDelay","resolvedCloseDelay","disabled","isNativeButtonTriggerElement","useNativeButton","childElement","renderTrigger","renderProps","resolvedProps","type","triggerRef","restProps","mergedProps","triggerProps","BaseTooltip","import_merge_props","import_tooltip","import_antd_style","import_react","import_react_merge_refs","import_react","FloatingLayerContext","useFloatingLayer","FloatingLayerProvider","import_react","useIsClient","isClient","setIsClient","top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom","placementMap","toFloatingUIPlacement","placement","import_jsx_runtime","TooltipArrowIcon","import_react","KeyMapEnum","import_antd_style","import_lucide_react","import_react","import_react","import_jsx_runtime","IconContext","IconProvider","children","config","useIconContext","import_antd_style","import_react","import_compat","calcSize","iconSize","size","strokeWidth","import_antd_style","import_class_variance_authority","spin","styles","css","variants","import_jsx_runtime","Icon","icon","iconSize","color","fill","className","focusable","spin","fillRule","fillOpacity","ref","rest","colorConfig","fillConfig","fillOpacityConfig","fillRuleConfig","focusableConfig","classNameConfig","sizeConfig","restConfig","useIconContext","size","strokeWidth","calcSize","SvgIcon","variants","Icon_default","import_lucide_react","LeftClickIcon","LeftClickIcon_default","import_lucide_react","LeftDoubleClickIcon","LeftDoubleClickIcon_default","import_lucide_react","RightClickIcon","RightClickIcon_default","import_lucide_react","RightDoubleClickIcon","RightDoubleClickIcon_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","NORMATIVE_MODIFIER","KeyMapEnum","orderMap","key","index","splitKeysByPlus","keys","x","y","idxX","idxY","startCase","str","s","checkIsAppleDevice","isApple","userAgent","combineKeys","import_jsx_runtime","mappingKey","isAppleDevice","KeyMapEnum","Icon_default","LeftClickIcon_default","RightClickIcon_default","RightDoubleClickIcon_default","LeftDoubleClickIcon_default","Hotkey","variant","classNames","customStyles","keys","inverseTheme","isApple","compact","className","style","rest","isDarkMode","isBorderless","keysGroup","setKeysGroup","splitKeysByPlus","checkIsAppleDevice","newValue","mapping","FlexBasic_default","Center_default","variants","key","index","startCase","Hotkey_default","import_jsx_runtime","TooltipContent","title","hotkey","hotkeyProps","resolvedHotkeyProps","Hotkey_default","TooltipContent_default","import_react","LOBE_THEME_APP_ID","import_react","import_jsx_runtime","Meta","title","description","withManifest","genCdnUrl","useCdnFn","genAssets","path","Meta_default","import_antd","import_antd_style","import_compat","import_react","import_react","createElement","url","element","FontLoader","elementRef","handleError","FontLoader_default","primaryToken","generateColorPalette","primary_default","neutralToken","generateColorNeutralPalette","gray_default","successToken","lime_default","warningToken","gold_default","errorToken","red_default","infoToken","blue_default","darkBaseToken","dark_default","darkAlgorithm","seedToken","mapToken","primaryColor","neutralColor","primaryTokens","neutralTokens","primaryScale","colorScales","generateColorPalette","neutralScale","neutralColorScales","generateColorNeutralPalette","dark_default","generateCustomColorToken","primaryToken","generateColorPalette","primary_default","neutralToken","generateColorNeutralPalette","gray_default","successToken","green_default","warningToken","gold_default","errorToken","volcano_default","infoToken","geekblue_default","lightBaseToken","light_default","lightAlgorithm","seedToken","mapToken","primaryColor","neutralColor","primaryTokens","neutralTokens","primaryScale","colorScales","generateColorPalette","neutralScale","neutralColorScales","generateColorNeutralPalette","light_default","generateCustomColorToken","FONT_EMOJI","FONT_EN","FONT_CN","FONT_CODE","baseToken","createLobeAntdTheme","neutralColor","appearance","primaryColor","darkAlgorithm","lightAlgorithm","baseToken","import_antd","import_antd_style","import_react","import_jsx_runtime","ConfigProvider","children","AntdConfigProvider","ConfigProvider_default","import_antd_style","import_antd_style","import_polished","import_antd_style","import_polished","safeReadableColor","bgColor","fallbackColor","antdOverride_default","token","readColor","safeReadableColor","import_antd_style","CLASSNAMES","global_default","token","LOBE_THEME_APP_ID","CLASSNAMES","GlobalStyle","theme","global_default","antdOverride_default","GlobalStyle_default","import_jsx_runtime","ThemeProvider","children","customStylish","customToken","enableCustomFonts","enableGlobalStyle","customFonts","customTheme","className","style","antdTheme","rest","genCdnUrl","useCdnFn","webfontUrls","stylish","theme","generateCustomStylish","token","generateCustomToken","appearance","lobeTheme","createLobeAntdTheme","webfont","FontLoader_default","AntdThemeProvider","ConfigProvider_default","GlobalStyle_default","LOBE_THEME_APP_ID","ThemeProvider_default","PORTAL_ATTR","TOOLTIP_CONTAINER_ATTR","containerMap","getOrCreateContainer","root","resolvedRoot","themeApp","LOBE_THEME_APP_ID","tooltipContainer","cached","el","resolveRoot","useTooltipPortalContainer","container","setContainer","resolved","import_antd_style","styles","css","cssVar","import_jsx_runtime","DEFAULT_OPEN_DELAY","DEFAULT_CLOSE_DELAY","TooltipStandalone","children","title","arrow","className","classNames","closeDelay","defaultOpen","disabled","getPopupContainer","hotkey","hotkeyProps","mouseEnterDelay","mouseLeaveDelay","onOpenChange","open","openDelay","placement","styleProps","zIndex","refProp","positionerProps","triggerProps","popupProps","portalProps","isClient","useIsClient","uncontrolledOpen","setUncontrolledOpen","resolvedOpen","handleOpenChange","nextOpen","resolvedOpenDelay","resolvedCloseDelay","placementConfig","placementMap","baseSideOffset","defaultPortalContainer","useTooltipPortalContainer","portalContainer","useFloatingLayer","isNativeButtonTriggerElement","useNativeButton","resolvedClassNames","styles","resolvedStyleProps","resolvedStyles","triggerElement","baseTriggerProps","BaseTooltip","props","resolvedProps","type","triggerRef","restProps","mergedProps","customContainer","popup","TooltipArrowIcon","TooltipContent_default","resolvedPortalContainer","import_jsx_runtime","Tooltip","props","TooltipGroupHandleContext","TooltipInGroup","TooltipStandalone","Tooltip_default","import_tooltip","import_antd_style","import_react","import_react","isInvalidTriggerElement","el","current","useDestroyOnInvalidActiveTriggerElement","store","destroy","options","enabled","openReactive","shouldWatch","raf","loop","useHidePopupWhenPositionerAtOrigin","threshold","positionerElementReactive","positionerEl","rect","import_jsx_runtime","TooltipGroup","children","disableDestroyOnInvalidTrigger","disableZeroOriginGuard","layoutAnimation","sharedProps","handle","key","setHandleState","BaseTooltip","activeItemRef","destroy","handleOpenChange","open","defaultPortalContainer","useTooltipPortalContainer","portalContainer","useFloatingLayer","useDestroyOnInvalidActiveTriggerElement","useHidePopupWhenPositionerAtOrigin","TooltipGroupHandleContext","TooltipGroupPropsContext","payload","item","arrow","placement","placementConfig","placementMap","baseSideOffset","resolvedClassNames","styles","resolvedStyleProps","resolvedStyles","body","TooltipContent_default","popup","TooltipArrowIcon","TooltipGroup_default","import_react","useTextOverflow","textRef","ellipsis","children","isOverflow","setIsOverflow","tooltipWhenOverflow","checkOverflow","element","rows","resizeObserver","import_antd_style","import_class_variance_authority","styles","css","cssVar","variants","import_jsx_runtime","Text","Container","align","className","children","style","type","disabled","strong","italic","underline","deleteStyle","fontSize","lineClamp","lineHeight","mark","code","color","weight","ellipsis","noWrap","textDecoration","textTransform","whiteSpace","wordBreak","rest","textRef","isOverflow","useTextOverflow","isMultiEllipsis","tooltipWhenOverflow","textStyle","content","variants","title","Tooltip_default","Text_default","preventDefault","event","stopPropagation","preventDefaultAndStopPropagation","import_react","import_jsx_runtime","ArrowIcon","size","style","rest","ArrowIcon_default","import_jsx_runtime","motionContainerStyle","AccordionStaticContent","className","style","children","contentInnerClassName","isOpen","keepContentMounted","AccordionMotionContent","contextMotionProps","skipInitialAnimation","Motion","useMotionComponent","motionProps","AccordionItemContent","disableAnimation","AccordionItem","itemKey","title","action","disabled","allowExpand","itemHideIndicator","itemIndicatorPlacement","customIndicator","classNames","paddingInline","paddingBlock","padding","ref","customVariant","customStyles","headerWrapper","defaultExpand","expand","onExpandChange","context","useAccordionContext","isStandalone","isExpandedStandalone","setIsExpandedStandalone","useMergeState","contextIsExpanded","contextOnToggle","contextHideIndicator","contextIndicatorPlacement","contextKeepContentMounted","contextDisableAnimation","contextVariant","isInitialRenderRef","hideIndicatorFinal","indicatorPlacementFinal","variant","handleToggle","handleKeyDown","e","preventTitleTextSelection","indicator","styles","ArrowIcon_default","contentClassName","titleNode","Text_default","actionNode","FlexBasic_default","stopPropagation","headerElement","header","Block_default","AccordionItem_default","import_antd_style","import_lucide_react","import_react","import_compat","calcSize","iconSize","blockSize","borderRadius","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","ActionIcon","color","fill","className","active","icon","size","variant","style","glass","title","onClick","loading","fillOpacity","fillRule","focusable","shadow","disabled","iconSpinning","tooltipProps","danger","ref","rest","blockSize","borderRadius","calcSize","handleClick","event","node","Center_default","variants","Icon_default","Tooltip_default","ActionIcon_default","import_antd_style","import_lucide_react","import_react","import_menu","import_merge_props","import_antd","import_antd_style","import_clsx","import_react","import_react_merge_refs","import_antd_style","styles","css","cssVar","import_react","usePortalContainer","containerAttr","isClient","useIsClient","themeApp","LOBE_THEME_APP_ID","container","import_jsx_runtime","DROPDOWN_MENU_CONTAINER_ATTR","DropdownMenuRoot","props","DropdownMenuSubmenuRoot","DropdownMenuCheckboxItemIndicator","mergeStateClassName","base","className","state","DropdownMenuTrigger","children","nativeButton","refProp","rest","isNativeButtonTriggerElement","resolvedNativeButton","useNativeButton","renderer","resolvedProps","type","restProps","mergedProps","clsx","CLASSNAMES","DropdownMenuPortal","container","defaultContainer","usePortalContainer","DropdownMenuPositioner","placement","hoverTrigger","align","side","sideOffset","placementConfig","placementMap","positionerNode","setPositionerNode","styles","FloatingLayerProvider","DropdownMenuPopup","DropdownMenuItem","danger","DropdownMenuCheckboxItemPrimitive","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuGroupLabel","DropdownMenuSubmenuTrigger","DropdownMenuItemContent","DropdownMenuItemIcon","DropdownMenuItemLabel","DropdownMenuItemExtra","DropdownMenuSubmenuArrow","DropdownMenuSwitchItem","checkedProp","closeOnClick","defaultChecked","disabled","onCheckedChange","internalChecked","setInternalChecked","isControlled","checked","handleCheckedChange","newChecked","e","_","import_menu","import_react","parseTrigger","trigger","triggers","normalizedTriggers","item","import_lucide_react","import_antd","import_antd_style","import_react","import_react","import_jsx_runtime","mapItems","item","children","rest","i","icon","Icon_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Menu","compact","shadow","variant","className","selectable","iconProps","items","ref","rest","theme","antdItems","item","mapItems","IconProvider","AntdMenu","variants","Menu_default","import_react","import_jsx_runtime","getItemKey","item","fallback","getItemLabel","renderIcon","icon","size","Icon_default","hasAnyIcon","items","recursive","hasCheckboxAndIcon","hasCheckbox","hasIcon","import_jsx_runtime","renderItemContent","item","options","iconNode","label","getItemLabel","extra","indicatorOnRight","hasCustomIcon","hasIcon","shouldRenderIcon","DropdownMenuItemContent","DropdownMenuItemIcon","renderIcon","DropdownMenuItemLabel","DropdownMenuItemExtra","DropdownMenuSubmenuArrow","invokeItemClick","keyPath","event","key","info","renderDropdownMenuItems","items","iconSpaceMode","reserveIconSpace","hasAnyIcon","hasCheckboxAndIcon","index","fallbackKey","itemKey","getItemKey","nextKeyPath","checkboxItem","labelText","isDanger","indicator","DropdownMenuCheckboxItemIndicator","DropdownMenuCheckboxItemPrimitive","checked","switchItem","DropdownMenuSwitchItem","DropdownMenuSeparator","group","groupReserveIconSpace","groupIndicatorOnRight","DropdownMenuGroup","DropdownMenuGroupLabel","submenu","DropdownMenuSubmenuRoot","DropdownMenuSubmenuTrigger","DropdownMenuPortal","DropdownMenuPositioner","DropdownMenuPopup","menuItem","DropdownMenuItem","import_jsx_runtime","DropdownMenu","children","defaultOpen","iconSpaceMode","items","nativeButton","onOpenChange","onOpenChangeComplete","open","placement","popupProps","portalProps","positionerProps","trigger","triggerProps","rest","uncontrolledOpen","setUncontrolledOpen","openOnHover","parseTrigger","handleOpenChange","nextOpen","details","menuItemsRef","isOpen","menuItems","resolvedItems","renderedItems","renderDropdownMenuItems","handleOpenChangeComplete","portalContainer","restPortalProps","resolvedNativeButton","useNativeButton","triggerElement","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuPositioner","DropdownMenuPopup","DropdownMenu_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","ActionIconGroup","variant","disabled","shadow","glass","actionIconProps","items","horizontal","menu","onActionClick","className","size","ref","rest","tooltipPlacement","menuItems","rawItems","item","info","TooltipGroup_default","Center_default","variants","icon","key","label","onClick","danger","loading","itemRest","ActionIcon_default","e","DropdownMenu_default","ActionIconGroup_default","import_antd","import_antd_style","import_compat","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","prefixCls","styles","css","cssVar","staticStylish","extraVariants","rootVariants","extraHeaderVariants","import_jsx_runtime","typeIcons","colors","theme","type","keys","Alert","closable","description","showIcon","glass","icon","colorfulText","iconProps","style","extra","classNames","customStyles","text","extraDefaultExpand","extraIsolate","banner","variant","ref","rest","hasTitle","alert","AntdAlert","rootVariants","ActionIcon_default","Icon_default","FlexBasic_default","extraVariants","Accordion_default","AccordionItem_default","extraHeaderVariants","Alert_default","import_antd","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","staticStylish","variants","import_jsx_runtime","AutoComplete","variant","shadow","className","rest","isDarkMode","AntAutoComplete","variants","Select_default","import_fluent_emoji","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","import_react","import_react","import_jsx_runtime","createContainer","as","props","Img","unoptimized","rest","config","ConfigContext","render","ImgContainer","Img_default","import_antd_style","styles","css","emojiToUnicode","emoji","char","emojiAnimPkg","mainPart","genEmojiUrl","type","ext","import_jsx_runtime","FluentEmoji","emoji","className","style","type","size","unoptimized","ref","rest","loadingFail","setLoadingFail","genCdnUrl","useCdnFn","emojiUrl","genEmojiUrl","Center_default","styles","Img_default","FluentEmoji_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_react","isDefaultAntAvatar","avatar","prefix","hasValidBackground","background","getActualColorForReadable","fallbackColor","bgColor","formatAvatarText","text","sliceText","upperText","calculateEmojiSize","size","hasBackground","emojiScaleWithBackground","import_jsx_runtime","Avatar","bordered","className","avatar","title","animation","borderedColor","size","shape","background","style","unoptimized","alt","variant","shadow","loading","sliceText","emojiScaleWithBackground","ref","rest","isStringAvatar","isDefaultAntAvatar","isImgError","setIsImgError","emoji","text","imgAlt","defaultAvatar","Img_default","hasBackground","hasValidBackground","customAvatar","FluentEmoji_default","calculateEmojiSize","formatAvatarText","actualColorForReadable","getActualColorForReadable","avatarStyle","safeReadableColor","showFallback","AntAvatar","variants","Center_default","styles","Icon_default","Avatar_default","import_antd_style","import_react","import_antd_style","styles","css","cssVar","import_jsx_runtime","AvatarGroup","items","max","gap","variant","bordered","shadow","size","background","animation","draggable","classNames","shape","customStyles","onClick","ref","zIndexReverse","rest","avatars","restAvatars","gapValue","avatarProps","FlexBasic_default","avatar","index","key","avatarStyle","avatarClassName","restAvatarProps","Avatar_default","styles","AvatarGroup_default","Avatar","Avatar_default","AvatarGroup_default","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","prefixCls","styles","css","cssVar","staticStylish","import_jsx_runtime","Burger","items","openKeys","selectedKeys","opened","setOpened","className","headerHeight","onClick","iconProps","size","variant","rootClassName","fullscreen","drawerProps","rest","cssVariables","vars","Center_default","styles","ActionIcon_default","Burger_default","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Button","icon","variant","glass","shadow","loading","className","type","color","danger","children","iconProps","ref","rest","isDarkMode","defaultVariant","AntdButton","variants","Icon_default","Button_default","import_antd_style","import_lucide_react","import_use_merge_value","import_antd_style","styles","css","cssVar","import_jsx_runtime","Checkbox","checked","defaultChecked","onChange","size","className","style","children","textProps","backgroundColor","classNames","customStyles","shape","disabled","indeterminate","rest","value","setValue","useMergeState","checkboxStyles","handleClick","e","isIndeterminate","isChecked","checkIcon","Block_default","styles","FlexBasic_default","Text_default","Checkbox_default","import_use_merge_value","import_jsx_runtime","CheckboxGroup","defaultValue","disabled","onChange","options","textProps","value","shape","size","rest","selectedValues","setSelectedValues","useMergeState","handleChange","optionValue","checked","newValues","v","normalizedOptions","option","FlexBasic_default","isChecked","isDisabled","Checkbox_default","CheckboxGroup_default","Checkbox","Checkbox_default","CheckboxGroup_default","import_react","import_antd_style","import_react","import_antd_style","import_react","import_antd_style","import_antd_style","styles","css","import_jsx_runtime","FileIcon","size","isMono","hasIcon","iconColor","filetypeShort","className","fontSize","style","rest","styles","FileIcon_default","import_antd_style","import_jsx_runtime","FolderIcon","size","isMono","hasIcon","iconColor","filetype","className","fontSize","style","rest","styles","FolderIcon_default","import_jsx_runtime","FileTypeIcon","icon","color","filetype","type","size","style","variant","className","ref","rest","isDarkMode","isMono","filetypeShort","fontSize","iconColor","content","FileIcon_default","FolderIcon_default","Center_default","styles","FileTypeIcon_default","icon_map_default","getFileExtension","fileName","getFileSuffix","filenameFromPath","path","getIconNameForFileName","icon_map_default","getIconNameForDirectoryName","dirName","getIconForFilePath","getIconForDirectoryPath","getIconUrlByName","iconName","iconsUrl","open","getIconUrlForFilePath","fallbackUnknownType","getIconUrlForDirectoryPath","import_jsx_runtime","MaterialFileTypeIcon","fallbackUnknownType","filename","size","variant","type","style","open","rest","ICONS_URL","useCdnFn","iconUrl","getIconUrlForFilePath","getIconUrlForDirectoryPath","Img_default","Center_default","FileTypeIcon_default","MaterialFileTypeIcon_default","import_antd_style","import_class_variance_authority","prefix","styles","css","cssVar","staticStylish","variants","headerVariants","import_jsx_runtime","countContentChanges","oldContent","newContent","oldLines","newLines","oldSet","newSet","deletions","additions","line","CodeDiff","language","fileName","viewMode","showHeader","variant","className","classNames","customStyles","actionsRender","diffOptions","rest","displayName","actions","oldFile","newFile","options","FlexBasic_default","variants","headerVariants","MaterialFileTypeIcon_default","styles","prefix","CodeDiff_default","import_react","import_antd_style","import_jsx_runtime","countPatchChanges","patch","lines","additions","deletions","line","PatchDiff","language","fileName","viewMode","showHeader","variant","className","classNames","customStyles","actionsRender","diffOptions","rest","displayName","match","actions","options","FlexBasic_default","variants","headerVariants","MaterialFileTypeIcon_default","styles","prefix","PierrePatchDiff","PatchDiff_default","import_antd_style","import_react","import_use_merge_value","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_antd_style","import_react","import_react","import_transformers","import_react","import_ts_md5","import_shiki","highlighterThemes","item","FALLBACK_LANG","getCodeLanguageByInput","input","inputLang","lang","getCodeLanguageFilename","matchLang","getCodeLanguageDisplayName","import_antd_style","lobe_theme_default","MD5_LENGTH_THRESHOLD","highlightCache","MAX_CACHE_SIZE","cleanupCache","entriesToRemove","keysToRemove","key","codeToHtmlPromise","loadCodeToHtml","mod","loadShikiModule","shikiModulePromise","escapeHtml","str","customThemes","lobe_theme_default","useHighlight","text","language","enableTransformer","builtinTheme","streaming","safeText","lang","matchedLanguage","getCodeLanguageByInput","transformers","cacheKey","hash","data","setData","cachedPromise","html","highlightPromise","shikiModule","effectiveTheme","customTheme","codeToHtml","error_","import_jsx_runtime","escapeHtml","str","StaticRenderer","children","className","enableTransformer","fallbackClassName","language","style","theme","safeChildren","data","useHighlight","containerClassName","StaticRenderer_default","import_core","import_antd_style","import_react","import_react","import_shiki_stream","tokensToLineTokens","tokens","lines","currentLine","token","content","segments","j","segment","createPreStyle","bg","fg","useStreamingHighlighter","text","options","customThemes","enabled","language","theme","result","setResult","tokenizerRef","previousTextRef","safeText","latestTextRef","preStyleRef","linesRef","setStreamingResultRef","rawLines","previousLines","newLinesLength","prevLinesLength","hasChanges","mergedLines","i","newLine","prevLine","lineChanged","newToken","updateTokens","nextText","forceReset","tokenizer","previousText","chunk","stableTokens","unstableTokens","mergedTokens","error","highlighterKeyRef","currentKey","cancelled","mod","shikiModulePromise","themesToLoad","customTheme","highlighter","themeInfo","currentText","useStreamHighlight","builtinTheme","streaming","lang","matchedLanguage","getCodeLanguageByInput","lobe_theme_default","import_jsx_runtime","normalizeStyleKeys","style","normalized","key","value","normalizedKey","_","char","getTokenInlineStyle","token","rawStyle","TokenSpan","prev","next","TokenLine","line","tokenIndex","StreamRenderer","children","className","enableTransformer","fallbackClassName","language","theme","safeChildren","streaming","useStreamHighlight","lines","preStyle","index","StreamRenderer_default","import_antd_style","import_class_variance_authority","fadeIn","styles","css","cssVar","variants","import_jsx_runtime","SyntaxHighlighter","animated","children","className","enableTransformer","language","style","theme","variant","isDefaultTheme","showBackground","resolvedTheme","shikiClassName","variants","fallbackClassName","StreamRenderer_default","StaticRenderer_default","prevProps","nextProps","SyntaxHighlighter_default","import_jsx_runtime","CodeEditor","autoFocus","classNames","customStyles","defaultValue","onChange","placeholder","style","className","onValueChange","value","language","variant","width","height","flex","ref","rest","code","setCode","useMergeState","FlexBasic_default","variants","SyntaxHighlighter_default","styles","e","CodeEditor_default","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","DEFAULT_PADDING","getPadding","padding","prefixCls","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Collapse","style","variant","gap","className","padding","DEFAULT_PADDING","size","collapsible","items","customStyles","classNames","ref","rest","isDarkMode","antdItems","icon","desc","label","itemRest","content","styles","FlexBasic_default","Icon_default","getPadding","AntdCollapse","variants","isActive","Collapse_default","import_antd","import_antd_style","import_chroma_js","import_lucide_react","import_polished","import_react","import_use_merge_value","import_antd_style","prefixCls","styles","css","cssVar","import_jsx_runtime","ColorSwatches","enableColorPicker","enableColorSwatches","defaultValue","value","style","colors","onChange","size","shape","texts","ref","rest","active","setActive","useMergeState","cssVariables","isCustomActive","c","FlexBasic_default","i","color","isActive","isTransparent","chroma","actualColorForReadable","Tooltip_default","Center_default","styles","Icon_default","safeReadableColor","ColorSwatches_default","import_context_menu","import_react","DEV","GLOBAL_KEY","getRegistry","g","getScopedMap","registry","name","existing","next","singletonError","registerDevSingleton","scope","scoped","prev","after","import_context_menu","import_antd","import_antd_style","import_lucide_react","import_react","common_default","import_react","import_react","import_jsx_runtime","I18nProvider","children","locale","resources","motion","ConfigProvider_default","useTranslation","fallbackResources","t","locale","useI18n","translate","key","value","fallback","import_jsx_runtime","EmptyMenuItem","t","useTranslation","common_default","styles","ContextMenuSwitchItemInternal","checkedProp","children","closeOnClick","danger","defaultChecked","disabled","label","onCheckedChange","internalChecked","setInternalChecked","isControlled","checked","handleCheckedChange","newChecked","e","_","renderItemContent","item","options","iconNode","getItemLabel","extra","indicatorOnRight","hasCustomIcon","hasIcon","shouldRenderIcon","renderIcon","invokeItemClick","keyPath","event","key","info","renderContextMenuItems","items","iconSpaceMode","reserveIconSpace","hasAnyIcon","hasCheckboxAndIcon","index","fallbackKey","itemKey","getItemKey","nextKeyPath","checkboxItem","labelText","isDanger","indicator","Icon_default","switchItem","group","groupReserveIconSpace","groupIndicatorOnRight","submenu","preventDefaultAndStopPropagation","menuItem","emptyState","contextMenuState","listeners","lastPointer","notify","listener","subscribe","getSnapshot","getServerSnapshot","updateLastPointer","event","trigger","createVirtualElement","point","setContextMenuState","next","showContextMenu","items","options","fallbackPoint","updateContextMenuItems","closeContextMenu","import_jsx_runtime","CONTEXT_MENU_CONTAINER_ATTR","ContextMenuHost","isClient","useIsClient","state","subscribe","getSnapshot","getServerSnapshot","DEV","themeApp","LOBE_THEME_APP_ID","contextMenuContainer","scope","registerDevSingleton","handler","event","updateLastPointer","menuItems","renderContextMenuItems","portalContainer","usePortalContainer","open","setContextMenuState","closeContextMenu","styles","preventDefaultAndStopPropagation","import_merge_props","import_clsx","import_react","import_jsx_runtime","styles","ContextMenuTrigger","children","items","onContextMenu","rest","triggerId","state","subscribe","getSnapshot","getServerSnapshot","open","handleContextMenu","event","resolvedItems","showContextMenu","triggerProps","clsx","CLASSNAMES","React","import_lucide_react","import_react","import_react","useCopied","copied","setCopy","timer","setCopied","copyToClipboard","text","textArea","import_jsx_runtime","CopyButton","active","content","size","icon","glass","onClick","rest","copied","setCopied","useCopied","ActionIcon_default","e","resolvedContent","copyToClipboard","CopyButton_default","import_antd","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","staticStylish","variants","import_jsx_runtime","DatePicker","variant","shadow","className","rest","isDarkMode","AntDatePicker","variants","DatePicker_default","import_lucide_react","import_react","downloadBlob","blobUrl","fileName","resolve","reject","link","error","import_jsx_runtime","DownloadButton","fileName","fileType","disabled","blobUrl","rest","handleDownload","downloadBlob","error","ActionIcon_default","DownloadButton_default","import_ahooks","import_antd","import_antd_style","import_fast_deep_equal","import_lucide_react","import_re_resizable","import_react","import_use_merge_value","import_antd_style","import_class_variance_authority","LAYOUT","prefixCls","prefix","styles","css","cssVar","borderStyles","float","floatPositions","handleBaseStyle","handleHighlightStyle","handleStyles","toggleRoot","toggleRootWithWideArea","toggleRootWithoutWideArea","toggleStyles","componentStyles","handleVariants","panelVariants","toggleVariants","reversePlacement","placement","import_jsx_runtime","DEFAULT_HEIGHT","DEFAULT_WIDTH","DEFAULT_HEADER_HEIGHT","DEFAULT_PIN","DEFAULT_MODE","DEFAULT_EXPANDABLE","DEFAULT_EXPAND","DEFAULT_SHOW_HANDLE_WIDE_AREA","draggablePanelReducer","state","action","DraggablePanel","headerHeight","fullscreen","maxHeight","pin","mode","children","placement","resize","style","showBorder","showHandleHighlight","showHandleWideArea","backgroundColor","size","customizeDefaultSize","minWidth","minHeight","maxWidth","onSizeChange","onSizeDragging","expandable","expand","defaultExpand","onExpandChange","className","showHandleWhenCollapsed","destroyOnClose","customStyles","classNames","dir","ref","isHovering","isVertical","isPending","startTransition","hoverTimeoutRef","antdDirection","direction","internalPlacement","cssVariables","isExpand","setIsExpand","useControlledState","initialState","dispatch","canResizing","resizing","reversePlacement","defaultSize","sizeProps","Arrow","toggleExpand","handle","Center_default","toggleVariants","Icon_default","styles","handleResize","_","_direction","reference_","delta","handleResizeStart","handleResizeStop","e","inner","handleVariants","panelVariants","isEqual","DraggablePanel_default","import_antd_style","import_react","import_antd_style","styles","css","cssVar","import_jsx_runtime","DraggablePanelBody","className","rest","FlexBasic_default","styles","DraggablePanelBody_default","import_antd_style","import_react","import_jsx_runtime","DraggablePanelContainer","className","rest","FlexBasic_default","styles","DraggablePanelContainer_default","import_antd_style","import_react","import_jsx_runtime","DraggablePanelFooter","className","rest","FlexBasic_default","styles","DraggablePanelFooter_default","import_antd_style","import_lucide_react","import_react","import_use_merge_value","import_jsx_runtime","DraggablePanelHeader","props","pin","setPin","className","setExpand","title","position","rest","isPinned","setIsPinned","useControlledState","panelIcon","ActionIcon_default","pinIcon","FlexBasic_default","styles","DraggablePanelHeader_default","DraggablePanel","DraggablePanel_default","DraggablePanelBody_default","DraggablePanelContainer_default","DraggablePanelFooter_default","DraggablePanelHeader_default","import_ahooks","import_antd_style","import_lucide_react","import_re_resizable","import_react","import_use_merge_value","import_antd_style","LAYOUT","prefixCls","styles","css","cssVar","import_jsx_runtime","DEFAULT_MIN_WIDTH","DEFAULT_EXPAND","DEFAULT_EXPANDED_WIDTH","ANIMATION_DURATION","COLLAPSE_ANIMATION_DELAY","RESIZE_DISABLED","sideNavReducer","state","action","DraggableSideNav","body","className","classNames","defaultExpand","defaultWidth","expand","expandable","footer","header","maxWidth","minWidth","onExpandChange","onWidthChange","onWidthDragging","placement","resizable","showBorder","showHandle","showHandleWhenCollapsed","showHandleHighlight","backgroundColor","customStyles","width","rest","cssVariables","ref","isHovering","isExpand","setIsExpand","useControlledState","animationTimeoutRef","collapseTimeoutRef","computedDefaultExpandedWidth","initialState","dispatch","collapseThreshold","toggleExpand","prevExpandRef","rafId","prevIsResizingRef","wasResizing","currentBody","currentHeader","currentFooter","handleResize","_","__","delta","currentWidth","handleResizeStart","handleResizeStop","shouldCollapse","shouldExpand","ArrowIcon","handleRootStyle","handleCenterStyle","handleIconWrapperStyle","handle","styles","Center_default","Icon_default","sizeConfig","resizeEnable","handleClasses","containerStyle","containerClassName","contentClassName","headerClassName","bodyClassName","footerClassName","FlexBasic_default","DraggableSideNav_default","import_antd","import_antd_style","import_lucide_react","import_react","import_jsx_runtime","Drawer","onClose","containerMaxWidth","classNames","title","placement","styles","children","height","width","extra","closeIconProps","noHeader","sidebarWidth","sidebar","closeIcon","ref","rest","headerBorder","extraNode","FlexBasic_default","ActionIcon_default","sidebarContent","AntdDrawer","Drawer_default","import_antd","import_react","import_jsx_runtime","Dropdown","children","iconProps","menu","rest","items","menuProps","antdItems","item","mapItems","IconProvider","AntdDropdown","Dropdown_default","import_antd_style","import_lucide_react","import_react","import_react_hotkeys_hook","import_use_merge_value","import_lucide_react","import_react","import_antd","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","variantsOPT","import_jsx_runtime","Input","ref","variant","shadow","className","rest","isDarkMode","AntInput","variants","Input_default","import_antd","import_antd_style","import_react","import_jsx_runtime","InputNumber","ref","variant","shadow","className","rest","isDarkMode","AntInputNumber","variants","InputNumber_default","import_antd","import_antd_style","import_react","import_jsx_runtime","InputOPT","ref","variant","shadow","className","rest","isDarkMode","AntInput","variantsOPT","InputOPT_default","import_antd","import_antd_style","import_react","import_jsx_runtime","InputPassword","ref","variant","shadow","className","rest","isDarkMode","AntInput","variants","InputPassword_default","import_antd","import_antd_style","import_react","import_jsx_runtime","TextArea","ref","variant","shadow","className","resize","style","rest","isDarkMode","AntInput","variants","TextArea_default","import_jsx_runtime","ControlInput","value","onChange","onValueChanging","onChangeEnd","onCompositionEnd","onCompositionStart","onPressEnter","onFocus","submitIcon","style","texts","rest","ref","input","setInput","isChineseInput","handleUpload","Input_default","e","FlexBasic_default","ActionIcon_default","ControlInput_default","import_jsx_runtime","EditableText","value","showEditIcon","onChange","editing","onEditingChange","onChangeEnd","onFocus","onBlur","className","inputProps","onValueChanging","gap","style","size","styles","classNames","variant","rest","edited","setEdited","useControlledState","height","input","ControlInput_default","v","content","ActionIcon_default","FlexBasic_default","EditableText_default","import_autocomplete","import_antd_style","import_react","import_antd_style","styles","css","import_jsx_runtime","EDITOR_SLASH_MENU_CONTAINER_ATTR","mergeStateClassName","base","className","state","EditorSlashMenuRoot","EditorSlashMenuList","rest","ref","styles","EditorSlashMenuPortal","container","defaultContainer","usePortalContainer","EditorSlashMenuPositioner","align","positionMethod","side","sideOffset","EditorSlashMenuPopup","initialFocus","EditorSlashMenuItem","danger","EditorSlashMenuGroup","EditorSlashMenuGroupLabel","EditorSlashMenuEmpty","EditorSlashMenuItemContent","EditorSlashMenuItemIcon","EditorSlashMenuItemLabel","EditorSlashMenuItemExtra","EditorSlashMenuHiddenInput","import_react","import_react","import_jsx_runtime","DefaultItemContent","item","hasAnyIcon","reserveIconSpace","EditorSlashMenuItemContent","EditorSlashMenuItemIcon","EditorSlashMenuItemLabel","EditorSlashMenuItemExtra","MenuItemRenderer","onSelect","renderItem","content","EditorSlashMenuItem","e","import_react","isGroup","entry","isEditableTarget","target","tag","useKeyboardNavigation","isOpen","listRef","dispatchListKey","key","list","event","raf","handleKeyDown","target","isEditableTarget","import_react","useNormalizedItems","items","resolvedItems","isGroup","groups","buffer","flush","entry","walk","import_jsx_runtime","import_react","EditorSlashMenu","items","anchor","open","defaultOpen","onOpenChange","onOpenChangeComplete","value","defaultValue","onValueChange","updateValueOnSelect","onSelect","empty","renderGroupLabel","renderItem","reserveIconSpace","rootProps","portalProps","positionerProps","popupProps","listProps","withHiddenInput","hiddenInputProps","uncontrolledOpen","setUncontrolledOpen","resolvedOpen","resolvedItems","hasAnyIcon","useNormalizedItems","listRef","useKeyboardNavigation","itemToStringValue","item","kws","handleValueChange","nextValue","details","handleSelect","handleOpenChange","nextOpen","setListRef","node","externalRef","menuItemProps","EditorSlashMenuRoot","EditorSlashMenuHiddenInput","EditorSlashMenuPortal","EditorSlashMenuPositioner","EditorSlashMenuPopup","EditorSlashMenuList","entry","isGroup","EditorSlashMenuGroup","EditorSlashMenuGroupLabel","MenuItemRenderer","i","EditorSlashMenuEmpty","EditorSlashMenu_default","import_data","import_react","import_antd_style","import_chroma_js","import_lucide_react","import_swr","import_use_merge_value","import_jsx_runtime","PopoverArrowIcon","import_merge_props","import_popover","import_antd_style","import_react","import_react_merge_refs","import_react","PORTAL_ATTR","POPOVER_CONTAINER_ATTR","containerMap","getOrCreateContainer","root","resolvedRoot","themeApp","LOBE_THEME_APP_ID","popoverContainer","cached","el","resolveRoot","usePopoverPortalContainer","container","setContainer","resolved","import_antd_style","styles","css","cssVar","import_jsx_runtime","PopoverRoot","BasePopover","PopoverBackdrop","PopoverTriggerElement","children","className","nativeButton","refProp","rest","isNativeButtonTriggerElement","resolvedNativeButton","useNativeButton","props","state","resolvedProps","type","triggerRef","restProps","mergedProps","baseClassName","extraClassName","PopoverPortal","container","root","defaultContainer","usePopoverPortalContainer","resolvedContainer","PopoverPositioner","hoverTrigger","placement","align","side","sideOffset","placementConfig","placementMap","positionerNode","setPositionerNode","styles","FloatingLayerProvider","PopoverPopup","PopoverArrow","PopoverArrowIcon","PopoverViewport","import_react","import_jsx_runtime","noop","PopoverContext","PopoverProvider","children","value","usePopoverContext","import_react","import_merge_props","import_popover","import_antd_style","import_react","import_react_merge_refs","import_react","PopoverGroupHandleContext","PopoverGroupPropsContext","import_react","useMergedPopoverProps","props","sharedProps","PopoverGroupPropsContext","arrow","inset","trigger","placement","className","classNames","styleProps","onOpenChange","content","closeDelay","disabled","getPopupContainer","mouseEnterDelay","mouseLeaveDelay","nativeButton","openDelay","zIndex","positionerProps","triggerProps","popupProps","backdropProps","mergedClassName","mergedClassNames","mergedStyles","mergedOnOpenChange","open","import_jsx_runtime","PopoverInGroup","children","refProp","props","group","PopoverGroupHandleContext","item","useMergedPopoverProps","openOnHover","parseTrigger","resolvedOpenDelay","resolvedCloseDelay","disabled","isNativeButtonTriggerElement","resolvedNativeButton","useNativeButton","triggerProps","triggerClassName","BasePopover","renderProps","resolvedProps","type","triggerRef","restProps","mergedProps","import_popover","import_react","import_jsx_runtime","PopoverStandalone","children","content","originArrow","inset","trigger","placement","styleProps","classNames","className","open","onOpenChange","defaultOpen","mouseEnterDelay","mouseLeaveDelay","openDelay","closeDelay","getPopupContainer","disabled","zIndex","nativeButton","refProp","positionerProps","triggerProps","popupProps","backdropProps","portalProps","arrow","isClient","useIsClient","popoverHandle","BasePopover","uncontrolledOpen","setUncontrolledOpen","close","contextValue","resolvedOpen","handleOpenChange","nextOpen","openOnHover","parseTrigger","resolvedOpenDelay","resolvedCloseDelay","placementConfig","placementMap","baseSideOffset","resolvedSideOffset","side","positioner","portalContainer","usePopoverPortalContainer","resolvedNativeButton","useNativeButton","resolvedClassNames","triggerElement","baseTriggerProps","PopoverTriggerElement","customContainer","resolvedStyles","popup","PopoverPositioner","PopoverPopup","PopoverArrow","PopoverArrowIcon","PopoverViewport","PopoverProvider","resolvedPortalContainer","PopoverRoot","PopoverPortal","import_jsx_runtime","Popover","props","PopoverGroupHandleContext","PopoverInGroup","PopoverStandalone","Popover_default","import_popover","import_react","import_jsx_runtime","PopoverGroup","children","contentLayoutAnimation","disableDestroyOnInvalidTrigger","disableZeroOriginGuard","sharedProps","handle","key","setHandleState","BasePopover","activeItemRef","destroy","close","contextValue","handleOpenChange","open","useDestroyOnInvalidActiveTriggerElement","useHidePopupWhenPositionerAtOrigin","portalContainer","usePopoverPortalContainer","PopoverGroupHandleContext","PopoverGroupPropsContext","payload","item","arrow","placement","openOnHover","parseTrigger","placementConfig","placementMap","baseSideOffset","resolvedSideOffset","side","positioner","resolvedClassNames","resolvedStyles","contentNode","PopoverProvider","popup","PopoverPositioner","PopoverPopup","PopoverArrow","PopoverArrowIcon","PopoverViewport","PopoverPortal","PopoverGroup_default","import_antd","import_antd_style","import_lucide_react","import_antd_style","import_class_variance_authority","prefixCls","styles","css","cssVar","variants","import_jsx_runtime","Tabs","className","compact","variant","items","rest","hasContent","item","AntdTabs","variants","styles","ActionIcon_default","Tabs_default","emojiPicker_default","import_antd","import_antd_style","import_lucide_react","import_react","import_react_avatar_editor","import_antd","import_antd_style","import_react","import_antd_style","import_compat","presetColors","presetSystemColors","toKebabCase","value","getCssVar","tokenKey","colorsPreset","type","keys","colorsPresetSystem","import_antd_style","import_class_variance_authority","prefixCls","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Tag","className","ref","size","color","variant","children","onClick","style","rest","colors","textColor","backgroundColor","borderColor","isBorderless","isFilled","isPresetColor","presetColors","isPresetSystemColors","presetSystemColors","isHexColor","colorsPreset","colorsPresetSystem","AntTag","variants","Tag_default","import_jsx_runtime","Dragger","createUploadImageHandler","onUploadImage","file","reader","AvatarUploader","shape","onChange","texts","compressSize","onUpload","editor","previewImage","setPreviewImage","t","useTranslation","emojiPicker_default","fileTypeErrorText","draggerDescText","uploadBtnText","beforeUpload","avatar","handleUpload","canvasScaled","dataUrl","blob","FlexBasic_default","Center_default","Icon_default","Text_default","Tag_default","AvatarEditor","Button_default","AvatarUploader_default","import_antd_style","styles","css","cssVar","import_jsx_runtime","DEFAULT_AVATAR","EmojiPicker","value","defaultAvatar","onChange","locale","allowUpload","allowDelete","texts","onDelete","compressSize","customEmojis","className","loading","onUpload","customTabs","popupClassName","popupStyle","customRender","open","defaultOpen","onOpenChange","popupProps","shape","contentProps","rest","ref","t","useTranslation","emojiPicker_default","visible","setVisible","useMergeState","tab","setTab","theme","pickerCssVariables","chroma","i18n","useSWR","ava","setAva","handleAvatarChange","emoji","emojiText","uploadText","deleteText","items","Tooltip_default","Icon_default","showTabs","content","FlexBasic_default","styles","Tabs_default","key","ActionIcon_default","Picker","data","e","AvatarUploader_default","item","Popover_default","v","Avatar_default","EmojiPicker_default","import_antd","import_antd_style","import_jsx_runtime","Empty","title","description","icon","image","emoji","imageSize","iconColor","action","children","imageProps","align","actionProps","type","titleProps","descriptionProps","rest","isDarkMode","isPage","alignValue","isCenter","fallbackImage","AntEmpty","cover","Block_default","Icon_default","FluentEmoji_default","FlexBasic_default","Text_default","Empty_default","import_rc_footer","import_react","import_antd_style","styles","css","cssVar","prefix","baseFooterStyles","import_jsx_runtime","Footer","columns","bottom","theme","contentMaxWidth","children","style","rest","isEmpty","cssVariables","FlexBasic_default","styles","RcFooter","Footer_default","import_antd","import_antd","import_antd_style","import_compat","import_react","import_antd_style","import_react","import_antd_style","import_class_variance_authority","prefixCls","styles","css","cssVar","variants","flatGroupStyles","cx","staticStylish","flatGroupVariants","footerStyles","groupStyles","titleVariants","itemStyles","itemVariants","submitFooterStyles","titleStyles","import_jsx_runtime","FormFlatGroup","className","children","variant","rest","mobile","FlexBasic_default","flatGroupStyles","flatGroupVariants","FormFlatGroup_default","import_antd_style","import_compat","import_react","import_jsx_runtime","FormGroup","className","icon","title","children","extra","variant","defaultActive","collapsible","active","keyValue","onCollapse","desc","rest","mobile","styles","groupStyles","isBorderless","defaultCollapsible","titleContent","FlexBasic_default","titleVariants","Icon_default","Collapse_default","v","FormGroup_default","import_antd","import_antd_style","import_react","import_antd","import_antd_style","import_jsx_runtime","styles","css","FormDivider","visible","style","className","rest","AntDivider","FormDivider_default","import_antd_style","import_jsx_runtime","FormTitle","tag","title","desc","avatar","classNames","customStyles","rest","FlexBasic_default","titleStyles","Tag_default","FormTitle_default","import_jsx_runtime","Item","FormItem","desc","tag","minWidth","avatar","className","label","children","divider","layout","variant","rest","cssVariables","hasMinWidth","restStyle","restProps","FormDivider_default","itemVariants","FormTitle_default","FormItem_default","import_react","import_jsx_runtime","FormContext","FormProvider","children","config","useFormContext","import_jsx_runtime","Form","className","itemMinWidth","footer","form","items","children","itemsType","itemVariant","variant","classNames","customStyles","gap","style","collapsible","defaultActiveKey","initialValues","activeKey","onCollapse","onFinish","ref","layout","rest","mobile","submitLoading","setSubmitLoading","mapFlat","item","itemIndex","FormItem_default","mapTree","group","groupIndex","key","FormGroup_default","active","keys","k","i","FormProvider","AntForm","variants","finishProps","FormFlatGroup_default","Form_default","import_antd","import_antd_style","import_fast_deep_equal","import_lucide_react","import_react","form_default","import_compat","removeUndefined","obj","item","acc","key","value","merge","target","source","src","import_jsx_runtime","FormSubmitFooter","enableReset","buttonProps","float","onReset","saveButtonProps","resetButtonProps","enableUnsavedWarning","children","texts","className","rest","Motion","useMotionComponent","form","initialValues","submitLoading","useFormContext","hasUnsavedChanges","setHasUnsavedChanges","values","t","useTranslation","form_default","styles","submitFooterStyles","v","removeUndefined","initialV","mergedV","merge","isEqual","unsavedWarningText","unsavedText","resetText","submitText","fn","e","content","Icon_default","Button_default","FlexBasic_default","FormSubmitFooter_default","Form","Form_default","FormItem_default","FormGroup_default","FormTitle_default","AntForm","FormSubmitFooter_default","import_antd_style","import_react","import_react","import_react_dom","import_react","import_react","useEventCallback","fn","ref","args","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","HEADER_HEIGHT","styles","css","cssVar","HEADER_HEIGHT","import_jsx_runtime","Modal","panelRef","allowFullscreen","children","title","className","classNames","width","onCancel","open","destroyOnHidden","paddings","height","enableResponsive","footer","customStyles","okText","onOk","cancelText","okButtonProps","cancelButtonProps","confirmLoading","rest","fullscreen","setFullscreen","mobile","hideFooter","styles","ActionIcon_default","AntModal","Icon_default","Modal_default","import_react","import_jsx_runtime","ModalContext","ModalProvider","children","value","useModalContext","import_jsx_runtime","noop","ModalStackItem","id","props","onClose","onUpdate","onDestroy","afterClose","afterOpenChange","children","onCancel","open","rest","stableAfterClose","useEventCallback","stableAfterOpenChange","stableOnCancel","close","setCanDismissByClickOutside","value","stableContextValue","Modal_default","nextOpen","event","ModalProvider","import_react","import_jsx_runtime","RawModalStackItem","Component","id","onClose","onUpdate","open","options","props","stableOnClose","useEventCallback","close","setCanDismissByClickOutside","value","contextValue","openKey","onCloseKey","injectedProps","ModalProvider","import_jsx_runtime","MODAL_PORTAL_ATTR","containerMap","modalStack","modalSeed","listeners","rawDestroyTimers","notify","listener","subscribe","EMPTY_STACK","getSnapshot","getServerSnapshot","getOrCreateContainer","root","cached","el","resolveRoot","ModalPortal","children","container","setContainer","resolved","updateModal","id","nextProps","changed","item","updateRawProps","setRawOpen","open","timer","closeModal","target","delay","existing","destroyModal","nextStack","ModalStack","stack","useIsClient","ModalStackItem","RawModalStackItem","ModalHost","isClient","scope","registerDevSingleton","createModal","props","value","createRawModal","component","options","import_antd_style","prefixCls","styles","css","cssVar","responsive","import_jsx_runtime","FormModal","classNames","className","style","closable","styles","allowFullscreen","title","afterOpenChange","width","onCancel","centered","open","afterClose","destroyOnHidden","closeIcon","paddings","height","enableResponsive","zIndex","mask","getContainer","keyboard","focusTriggerAfterClose","forceRender","loading","footer","submitButtonProps","submitLoading","onFinish","submitText","variant","gap","onSubmit","children","ref","rest","mobile","formClassName","modalClassNames","formStyle","modalStyles","Modal_default","Form_default","FlexBasic_default","Button_default","FormModal_default","import_antd_style","import_compat","import_react","import_antd_style","styles","css","import_jsx_runtime","Grid","className","gap","rows","children","maxItemWidth","ref","style","rest","cssVariables","FlexBasic_default","styles","Grid_default","import_antd_style","import_react","import_antd_style","import_class_variance_authority","generateSuperellipsePath","size","n","r","points","i","angle","cosAngle","sinAngle","x","y","createSmoothCornersMask","options","cornerValue","path","svg","createCircleMask","createRoundedRectMask","borderRadius","SMOOTH_CORNER_MASKS","styles","css","createCornerVariant","cornerType","SMOOTH_CORNER_MASKS","variants","import_jsx_runtime","GroupAvatar","className","style","avatars","size","grid","cornerShape","avatarShape","rest","calcSize","length","gridSize","isCircle","avatarSize","gapSize","calcAvatars","isSingle","Block_default","variants","Grid_default","item","index","Avatar_default","GroupAvatar_default","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","GuideCard","cover","onClose","shadow","closable","afterClose","alt","className","title","desc","width","customStyles","height","coverProps","variant","closeIconProps","classNames","ref","rest","show","setShow","isDarkMode","FlexBasic_default","variants","ActionIcon_default","styles","e","Img_default","GuideCard_default","import_antd_style","import_react","import_antd_style","styles","css","cssVar","responsive","import_jsx_runtime","Header","actionsClassName","navClassName","logoClassName","nav","logo","actions","actionsStyle","logoStyle","navStyle","className","children","ref","rest","mobile","FlexBasic_default","styles","Header_default","import_antd_style","import_react","import_antd_style","import_lucide_react","import_react","import_antd","import_react","import_shiki","import_jsx_runtime","LangSelect","rest","options","FlexBasic_default","MaterialFileTypeIcon_default","Text_default","item","stopPropagation","LangSelect_default","import_antd_style","import_class_variance_authority","actionsHoverCls","langHoverCls","expandCls","prefix","styles","css","cssVar","staticStylish","variants","headerVariants","bodyVariants","import_jsx_runtime","HeaderLanguage","allowChangeLanguage","displayName","fileName","filetype","icon","language","setLanguage","showLanguage","LangSelect_default","FlexBasic_default","MaterialFileTypeIcon_default","Text_default","prev","next","HighlighterFullFeatured","content","className","classNames","customStyles","style","actionsRender","copyable","variant","shadow","wrap","defaultExpand","children","rest","expand","setExpand","contentRef","getContent","originalActions","CopyButton_default","actions","getCodeLanguageDisplayName","getCodeLanguageFilename","handleToggleExpand","variants","headerVariants","stopPropagation","ActionIcon_default","bodyVariants","FullFeatured_default","import_jsx_runtime","Highlighter","animated","fullFeatured","actionIconSize","children","language","className","classNames","customStyles","copyable","showLanguage","variant","shadow","wrap","bodyRender","actionsRender","enableTransformer","theme","icon","fileName","allowChangeLanguage","defaultExpand","rest","lang","setLang","tirmedChildren","copyContentRef","getCopyContent","originalActions","CopyButton_default","actions","originalBody","SyntaxHighlighter_default","displayName","getCodeLanguageDisplayName","body","FullFeatured_default","FlexBasic_default","variants","styles","Tag_default","Highlighter_default","import_katex","PlaceholderManager","prefix","content","index","text","_","replaceUnescapedPipes","formula","convertLatexDelimiters","pattern","match","codeBlock","squareBracket","roundBracket","escapeMhchemCommands","escapeLatexPipes","codeBlocks","display","inline","escapeTextUnderscores","textContent","escapeCurrencyDollars","manager","extractIncompleteFormula","isLastFormulaRenderable","error","fixCommonLaTeXErrors","fixed","openBraces","closeBraces","diff","closingBraces","leftDelims","rightDelims","rightDots","normalizeLatexSpacing","result","validateLatexExpressions","errors","totalExpressions","isDisplay","handleCJKWithLatex","addSpaces","preprocessLaTeX","options","addCJKSpaces","convertBrackets","escapeCurrency","escapeMhchem","escapePipes","escapeUnderscores","fixErrors","handleCJK","normalizeSpacing","throwOnValidationError","validate","validation","errorMessage","e","CACHE_SIZE","contentCache","addToCache","key","value","firstKey","transformCitations","rawContent","length","citationIndices","_","index","pattern","matches","match","excludedRanges","latexBlockRegex","inlineLatexRegex","codeBlockRegex","inlineCodeRegex","validMatches","citation","range","result","i","before","after","preprocessMarkdownContent","str","enableCustomFootnotes","enableLatex","citationsLength","content","preprocessLaTeX","import_antd_style","import_compat","import_lucide_react","import_react","import_react_hotkeys_hook","import_use_merge_value","hotkey_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","HotkeyInput","value","defaultValue","resetValue","onChange","onConflict","placeholder","disabled","shadow","allowReset","style","className","hotkeyConflicts","variant","texts","isApple","onBlur","onReset","onFocus","isFocused","setIsFocused","hasConflict","setHasConflict","hasInvalidCombination","setHasInvalidCombination","inputRef","isDarkMode","t","useTranslation","hotkey_default","isAppleDevice","checkIsAppleDevice","hotkeyValue","setHotkeyValue","useControlledState","recordedKeys","start","stop","isRecording","resetKeys","formatKeys","keysSet","modifiers","normalKeys","key","normalizedKey","NORMATIVE_MODIFIER","finalKey","shortcuts","k","isValid","keys","keysString","checkHotkeyConflict","newHotkey","conflictKey","newKeys","splitKeysByPlus","conflictKeys","newKeysString","handleFocus","e","handleBlur","handleReset","handleClick","placeholderText","resetTitle","conflictText","invalidText","FlexBasic_default","variants","styles","Hotkey_default","ActionIcon_default","HotkeyInput_default","import_antd","import_antd_style","import_react","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","prefixCls","styles","css","cssVar","staticStylish","variants","FALLBACK_DARK","FALLBACK_LIGHT","import_react","import_jsx_runtime","Preview","children","visible","ref","handleDisableZoom","event","Preview_default","import_lucide_react","import_react","import_jsx_runtime","Toolbar","children","info","minScale","maxScale","scale","onFlipY","onFlipX","onRotateLeft","onRotateRight","onZoomOut","onZoomIn","FlexBasic_default","styles","ActionIcon_default","Toolbar_default","import_jsx_runtime","usePreview","props","visible","setVisible","onVisibleChange","onOpenChange","minScale","maxScale","toolbarAddon","rootClassName","imageRender","toolbarRender","actionsRender","rest","_","info","originalNode","Toolbar_default","Icon_default","node","Preview_default","open","styles","usePreview_default","import_jsx_runtime","Image","ref","style","preview","isLoading","maxHeight","maxWidth","minHeight","minWidth","actions","className","alwaysShowActions","variant","objectFit","classNames","customStyles","onClick","width","height","rest","isDarkMode","actionsClassName","styles","mergePreivew","usePreview_default","FlexBasic_default","variants","AntImage","FALLBACK_DARK","FALLBACK_LIGHT","Image_default","import_antd","import_react","import_antd_style","import_lucide_react","import_react","import_jsx_runtime","usePreview","props","visible","setVisible","onVisibleChange","onOpenChange","minScale","maxScale","toolbarAddon","rootClassName","classNames","imageRender","toolbarRender","rest","_","info","originalNode","Toolbar_default","Icon_default","node","Preview_default","open","styles","usePreviewGroup_default","import_jsx_runtime","AntdPreviewGroup","PreviewGroup","items","children","enable","preview","mergePreview","usePreviewGroup_default","PreviewGroup_default","Image","Image_default","PreviewGroup_default","import_antd_style","import_react","import_use_merge_value","import_antd_style","styles","css","cssVar","staticStylish","import_jsx_runtime","ImageSelect","ref","className","style","value","defaultValue","onChange","options","width","height","customStyles","classNames","unoptimized","rest","currentValue","setCurrentValue","useControlledState","FlexBasic_default","item","isActive","styles","Img_default","Icon_default","ImageSelect_default","import_antd_style","import_react","import_antd_style","import_react","import_antd_style","styles","css","staticStylish","import_jsx_runtime","LayoutFooter","children","className","rest","styles","LayoutFooter_default","import_antd_style","import_react","import_jsx_runtime","LayoutHeader","headerHeight","children","className","style","rest","styles","LayoutHeader_default","import_antd_style","import_react","import_jsx_runtime","LayoutMain","children","className","rest","styles","LayoutMain_default","import_antd_style","import_react","import_jsx_runtime","LayoutSidebar","headerHeight","children","className","style","rest","styles","LayoutSidebar_default","import_antd_style","import_react","import_jsx_runtime","LayoutSidebarInner","headerHeight","children","className","rest","styles","LayoutSidebarInner_default","import_antd_style","import_react","import_jsx_runtime","LayoutToc","tocWidth","style","className","children","rest","styles","LayoutToc_default","import_jsx_runtime","Layout","helmet","headerHeight","header","footer","sidebar","asideWidth","toc","children","tocWidth","cssVariables","mobile","laptop","expand","setExpand","LayoutHeader_default","LayoutToc_default","LayoutMain_default","LayoutSidebar_default","DraggablePanel_default","LayoutSidebarInner_default","styles","LayoutFooter_default","Layout_default","Layout","Layout_default","LayoutFooter_default","LayoutHeader_default","LayoutToc_default","LayoutSidebar_default","LayoutSidebarInner_default","LayoutMain_default","import_antd_style","import_react","import_antd_style","import_lucide_react","import_react","import_antd_style","styles","css","cssVar","staticStylish","import_dayjs","getChatItemTime","updateAt","time","dayjs","import_jsx_runtime","ListItem","ref","active","avatar","loading","description","date","title","onHoverChange","actions","className","style","showAction","children","classNames","addon","pin","customStyles","rest","loadingNode","Icon_default","pinNode","styles","actionsNode","FlexBasic_default","preventDefaultAndStopPropagation","timeNode","getChatItemTime","Text_default","ListItem_default","import_jsx_runtime","List","ref","activeKey","classNames","styles","onClick","items","rest","FlexBasic_default","item","key","itemOnClick","itemClassName","itemStyle","itemRest","customItemClassName","restClassName","customItemStyle","restStyles","ListItem_default","e","List_default","List","List_default","ListItem_default","import_merge_props","import_select","import_antd_style","import_react","import_react_merge_refs","LOBE_SELECT_CONTAINER_ATTR","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","triggerVariants","import_jsx_runtime","mergeStateClassName","base","className","state","LobeSelectRoot","LobeSelectBackdrop","LobeSelectSeparator","LobeSelectTrigger","children","nativeButton","shadow","size","variant","refProp","rest","isDarkMode","baseClassName","triggerVariants","isNativeButtonTriggerElement","resolvedNativeButton","useNativeButton","props","resolvedProps","type","triggerRef","restProps","mergedProps","childClassName","extraClassName","LobeSelectIcon","styles","LobeSelectValue","LobeSelectPortal","container","defaultContainer","usePortalContainer","LOBE_SELECT_CONTAINER_ATTR","LobeSelectPositioner","align","alignItemWithTrigger","side","sideOffset","LobeSelectPopup","LobeSelectList","LobeSelectItem","LobeSelectItemText","LobeSelectItemIndicator","LobeSelectGroup","LobeSelectGroupLabel","LobeSelectScrollUpArrow","LobeSelectScrollDownArrow","LobeSelectArrow","import_select","import_antd_style","import_lucide_react","import_react","import_virtua","import_jsx_runtime","isGroupOption","option","getOptionSearchText","escapeRegExp","value","splitBySeparators","separators","pattern","countVirtualItems","items","count","item","isValueEmpty","LobeSelect","allowClear","autoFocus","className","classNames","defaultOpen","defaultValue","disabled","id","labelRender","listHeight","listItemHeight","loading","mode","name","onChange","onOpenChange","onSelect","open","optionRender","options","placeholder","popupClassName","popupMatchSelectWidth","prefix","readOnly","required","behaviorVariant","selectedIndicatorVariant","shadow","showSearch","size","style","suffixIcon","suffixIconProps","tokenSeparators","variant","virtual","isDarkMode","resolvedVariant","isMultiple","isItemAligned","uncontrolledValue","setUncontrolledValue","normalizeValue","nextValue","mergedValue","normalizedValue","valueArray","extraOptions","setExtraOptions","resolvedOptions","optionMap","baseOptions","optionValueMap","addOption","filteredExtraOptions","mergedOptions","missingValueOptions","val","uncontrolledOpen","setUncontrolledOpen","mergedOpen","handleOpenChange","nextOpen","searchValue","setSearchValue","shouldShowSearch","getOption","optionValue","matched","previousValueRef","handleValueChange","normalizedNextValue","previousValue","prevValues","nextValues","prev","appendTagValues","rawValues","valuesToAdd","newOptionValues","existingValues","merged","handleSearchChange","event","parts","pending","handleSearchKeyDown","filteredOptions","query","groupItems","renderValue","currentValue","resolved","placeholderNode","styles","values","index","content","hasValue","showClear","handleClear","prefixNode","Icon_default","suffixIconNode","popupStyle","maxHeight","baseStyle","triggerClassName","triggerVariants","portalContainer","usePortalContainer","LOBE_SELECT_CONTAINER_ATTR","listRef","pointerScrollRef","pointerScrollTimeoutRef","renderVirtualItem","props","ref","rest","node","args","markPointerScroll","handleListScroll","listElement","activeElement","virtualListStyle","rowCount","maxVisibleRows","estimatedRowHeight","keepMountedIndices","selectedSet","indices","itemTextClassName","isBoldIndicator","optionIndex","renderOptions","currentIndex","LobeSelect_default","import_switch","import_antd_style","import_react","import_use_merge_value","import_antd_style","import_class_variance_authority","styles","css","cssVar","rootVariants","thumbVariants","import_jsx_runtime","LobeSwitchContext","useLobeSwitchContext","context","LobeSwitchRoot","checked","className","defaultChecked","onCheckedChange","onClick","size","children","disabled","readOnly","required","inputRef","id","name","rest","Motion","useMotionComponent","isPressed","setIsPressed","lastEventRef","isChecked","setIsChecked","useControlledState","value","baseClassName","rootVariants","contextValue","handleClick","event","handleKeyDown","LobeSwitchThumb","pressedAnimation","transition","thumbVariants","defaultPressedAnimation","getIconPositionClass","position","styles","LobeSwitchIcon","isAnimated","positionClass","import_antd_style","import_lucide_react","import_react","import_jsx_runtime","LobeSwitch","autoFocus","checked","checkedChildren","className","classNames","defaultChecked","defaultValue","disabled","id","loading","name","onChange","onClick","ref","rootClassName","size","style","customStyles","tabIndex","title","unCheckedChildren","value","isDisabled","resolvedChecked","resolvedDefaultChecked","LobeSwitchRoot","LobeSwitchIcon","LobeSwitchThumb","Icon_default","styles","LobeSwitch_default","import_antd_style","import_react","import_react","import_react_markdown","import_react","import_react","import_antd_style","mermaidThemes","import_antd_style","import_react","import_antd_style","import_lucide_react","import_react","import_jsx_runtime","MermaidHeaderLanguage","fileName","language","showLanguage","FlexBasic_default","MaterialFileTypeIcon_default","Text_default","prev","next","MermaidFullFeatured","customStyles","classNames","content","children","className","copyable","actionsRender","style","variant","shadow","defaultExpand","rest","expand","setExpand","contentRef","getContent","originalActions","CopyButton_default","actions","handleToggleExpand","variants","headerVariants","stopPropagation","ActionIcon_default","bodyVariants","FullFeatured_default","import_antd_style","import_react","import_compat","import_react","import_antd_style","import_react","import_ts_md5","MD5_LENGTH_THRESHOLD","mermaidCache","MAX_CACHE_SIZE","cleanupCache","entriesToRemove","keysToRemove","key","mermaidPromise","loadMermaid","mod","createMermaidConfig","theme","customTheme","useMermaid","content","id","data","setData","mermaidConfig","cacheKey","hash","cachedPromise","svg","renderPromise","mermaidInstance","error_","import_jsx_runtime","StaticMermaid","children","className","fallbackClassName","ref","style","customTheme","variant","safeChildren","isDefaultTheme","background","mermaidThemes","item","id","mermaidId","data","useMermaid","isLoading","blobUrl","setBlobUrl","finalSvgString","svgDoc","svgElement","viewBoxParts","svgBlob","url","Image_default","StaticMermaid_default","import_compat","import_react","import_antd_style","import_react","useStreamMermaid","content","enabled","id","customTheme","theme","data","setData","previousContentRef","latestContentRef","renderTimeoutRef","mermaidConfig","createMermaidConfig","timeoutId","currentContent","contentToRender","mermaidInstance","loadMermaid","svg","error_","import_jsx_runtime","StreamMermaid","children","className","fallbackClassName","ref","style","customTheme","variant","safeChildren","isDefaultTheme","background","mermaidThemes","item","id","mermaidId","data","useStreamMermaid","isLoading","blobUrl","setBlobUrl","finalSvgString","svgDoc","svgElement","viewBoxParts","svgBlob","url","Image_default","StreamMermaid_default","import_antd_style","import_class_variance_authority","fadeIn","styles","css","cssVar","variants","import_jsx_runtime","SyntaxMermaid","animated","children","className","fallbackClassName","ref","style","customTheme","variant","isDefaultTheme","showBackground","resolvedTheme","mermaidClassName","variants","fallback","StreamMermaid_default","StaticMermaid_default","prevProps","nextProps","SyntaxMermaid_default","import_jsx_runtime","Mermaid","actionIconSize","animated","bodyRender","children","classNames","className","copyable","defaultExpand","fileName","fullFeatured","language","actionsRender","shadow","showLanguage","style","customStyles","theme","variant","rest","tirmedChildren","copyContentRef","getCopyContent","originalActions","CopyButton_default","actions","defaultBody","SyntaxMermaid_default","body","FullFeatured_default","variants","FlexBasic_default","styles","Tag_default","Mermaid_default","import_antd_style","import_antd_style","import_react","import_antd_style","styles","css","cssVar","import_react","useMouseOffset","offset","setOffset","outside","setOutside","reference","element","onMouseMove","e","bound","onMouseLeave","import_jsx_runtime","Spotlight","className","size","properties","offset","outside","reference","useMouseOffset","isDarkMode","cssVariables","spotlightStyle","styles","Spotlight_default","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Snippet","ref","prefix","language","children","copyable","variant","spotlight","shadow","className","rest","tirmedChildren","FlexBasic_default","variants","Spotlight_default","SyntaxHighlighter_default","styles","CopyButton_default","Snippet_default","import_jsx_runtime","styles","css","Pre","fullFeatured","fileName","allowChangeLanguage","language","FALLBACK_LANG","children","className","style","variant","icon","theme","rest","Highlighter_default","PreSingleLine","Snippet_default","PreMermaid","animated","Mermaid_default","Pre_default","import_jsx_runtime","countLines","str","regex","matches","useCode","raw","children","className","content","lang","FALLBACK_LANG","isSingleLine","CodeBlock","fullFeatured","enableMermaid","highlight","mermaid","animated","rest","code","PreMermaid","PreSingleLine","Pre_default","prevProps","nextProps","import_react","import_jsx_runtime","MarkdownContext","MarkdownProvider","children","config","useMarkdownContext","import_jsx_runtime","Image","style","alt","rest","Image_default","safeParseJSON","text","json","import_antd_style","import_compat","import_antd","import_lucide_react","import_react","import_antd_style","styles","css","cssVar","import_jsx_runtime","PopoverPanel","children","usePopover","title","alt","url","displayTitle","domain","host","urlObj","hostForUrl","FlexBasic_default","styles","Icon_default","PopoverPanel_default","import_jsx_runtime","Citation","children","href","inSup","id","citationDetail","usePopover","url","PopoverPanel_default","styles","Citation_default","import_jsx_runtime","Link","href","target","citations","rest","Citation_default","safeParseJSON","match","index","detail","isNewWindow","A_default","Link_default","import_react","import_react","import_antd_style","import_react","import_react_merge_refs","import_antd_style","import_class_variance_authority","styles","css","variants","import_react","useScrollOverflow","domRef","offset","orientation","isEnabled","onVisibilityChange","updateDeps","scrollState","setScrollState","element","checkScroll","newState","resizeObserver","import_jsx_runtime","ScrollShadow","className","children","orientation","hideScrollBar","size","offset","visibility","isEnabled","onVisibilityChange","style","ref","rest","cssVariables","domRef","scrollState","useScrollOverflow","finalScrollState","dataAttributes","attributes","scrollPosition","FlexBasic_default","variants","ScrollShadow_default","import_react","import_antd_style","styles","css","import_jsx_runtime","SearchResultCard","ref","url","title","alt","rest","displayTitle","domain","host","urlObj","hostForUrl","A_default","Block_default","styles","Text_default","FlexBasic_default","Img_default","SearchResultCard_default","import_jsx_runtime","SearchResultCards","ref","dataSource","style","rest","ScrollShadow_default","link","SearchResultCard_default","SearchResultCards_default","import_jsx_runtime","import_react","DefaultFootnotes","dataSource","items","child","item","data","note","FlexBasic_default","children","props","index","node","href","rest","A_default","Block_default","Text_default","Footnotes","links","error","isError","SearchResultCards_default","Footnotes_default","import_jsx_runtime","Section","children","showFootnotes","rest","Footnotes_default","Section_default","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","maskHoverCls","styles","css","cssVar","mask","staticStylish","variants","import_jsx_runtime","Video","ref","preload","src","style","classNames","className","maxHeight","maxWidth","minHeight","minWidth","onEnded","onPause","onPlay","onPlaying","width","height","onMouseEnter","customStyles","onMouseLeave","preview","isLoading","variant","autoPlay","rest","isPlaying","setIsPlaying","showControls","setShowControls","cssVariables","vars","FlexBasic_default","variants","styles","ActionIcon_default","e","Video_default","import_jsx_runtime","Video","style","rest","Video_default","import_jsx_runtime","useMarkdownComponents","components","animated","citations","componentProps","enableMermaid","fullFeaturedCodeBlock","showFootnotes","useMarkdownContext","memoA","node","props","Link_default","memoImg","Image_default","memoVideo","Video_default","memoSection","Section_default","memoKbd","children","Hotkey_default","memoBr","memeP","style","className","highlightTheme","mermaidTheme","stableComponentProps","memoPre","CodeBlock","memoColorPreview","memoComponents","import_react","useMarkdownContent","children","animated","enableLatex","enableCustomFootnotes","citations","useMarkdownContext","validContent","setValidContent","prevProcessedContent","citationsLength","cacheKey","contentCache","processedContent","preprocessMarkdownContent","isLastFormulaRenderable","addToCache","import_react","import_rehype_github_alerts","import_rehype_katex","import_rehype_raw","convert","test","ok","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checks","index","any","parameters","check","checkAsRecord","all","node","nodeAsRecord","key","type","testFunction","value","parent","looksLikeANode","color","d","empty","CONTINUE","EXIT","SKIP","visitParents","tree","test","visitor","reverse","check","is","convert","step","factory","node","index","parents","value","name","visit","color","result","subresult","offset","grandparents","toResult","nodeAsParent","child","visit","tree","testOrVisitor","visitorOrReverse","maybeReverse","reverse","test","visitor","visitParents","overload","node","parents","parent","index","rehypeCustomFootnotes","tree","file","linksData","visit","node","sortedLinks","b","id","data","link","n","linkRefIndex","rehypeKatexDir","tree","visit","node","rehypeStreamAnimated","tree","visit","node","newChildren","child","segment","word","useMarkdownRehypePlugins","animated","enableLatex","enableCustomFootnotes","enableGithubAlert","allowHtml","rehypePlugins","rehypePluginsAhead","useMarkdownContext","memoPlugins","rehypeRaw","rehypeKatex","rehypeKatexDir","rehypeCustomFootnotes","rehypeStreamAnimated","import_react","import_remark_breaks","import_remark_cjk_friendly","import_remark_gfm","import_remark_math","remarkBr","tree","visit","node","index","parent","brRegex","parts","matches","lastIndex","match","newNodes","i","part","remarkCustomFootnotes","tree","file","footnoteLinks","visit","node","linkData","linkNode","SKIP","textNode","n","DEFAULT_ALLOW_HTML_TAGS","remarkGfmPlus","options","allowHtmlTags","tree","visit","node","children","i","currentNode","tagPattern","startTagMatch","tagName","endIndex","textNodes","j","nextNode","newNode","removeCount","index","parent","encodedTagPattern","encodedTagRegex","text","newNodes","lastIndex","match","fullMatch","content","startIndex","remarkVideo","options","videoTags","tree","visit","node","index","parent","tagName","selfClosingPattern","selfClosingMatch","attributesStr","properties","attrRegex","attrMatch","newNode","pairedPattern","pairedMatch","content","encodedSelfClosingPattern","encodedSelfClosingRegex","text","newNodes","lastIndex","match","fullMatch","startIndex","decodedAttrs","useMarkdownRemarkPlugins","enableLatex","enableCustomFootnotes","remarkPlugins","remarkPluginsAhead","variant","allowHtml","useMarkdownContext","isChatMode","memoPlugins","remarkCjkFriendly","remarkMath","remarkGfm","remarkBr","remarkGfmPlus","remarkVideo","remarkCustomFootnotes","remarkBreaks","import_jsx_runtime","MarkdownRenderer","children","rest","escapedContent","useMarkdownContent","components","useMarkdownComponents","rehypePluginsList","useMarkdownRehypePlugins","remarkPluginsList","useMarkdownRemarkPlugins","Markdown","prevProps","nextProps","MarkdownRender_default","import_marked","import_react","import_react_markdown","import_antd_style","fadeIn","styles","css","import_jsx_runtime","import_react","parseMarkdownIntoBlocks","markdown","token","StreamdownBlock","children","rest","Markdown","prevProps","nextProps","StreamdownRender","escapedContent","useMarkdownContent","components","useMarkdownComponents","rehypePluginsList","useMarkdownRehypePlugins","remarkPluginsList","useMarkdownRemarkPlugins","generatedId","blocks","styles","block","index","StreamdownRender_default","import_antd_style","import_react","import_antd_style","IGNORE_CLASSNAME","styles","cssVar","css","__root","a","blockquote","code","del","details","header","hr","img","list","p","pre","strong","svg","table","video","footnote","sup","sub","import_jsx_runtime","Typography","ref","children","className","fontSize","headerMultiple","marginMultiple","lineHeight","borderRadius","style","rest","styles","Typography_default","import_react","useDelayedAnimated","animated","delayedAnimated","setDelayedAnimated","timer","import_antd_style","import_class_variance_authority","styles","css","cssVar","variants","import_jsx_runtime","Markdown","props","ref","children","className","style","fullFeaturedCodeBlock","onDoubleClick","animated","enableLatex","enableMermaid","enableImageGallery","enableCustomFootnotes","enableGithubAlert","enableStream","componentProps","rehypePluginsAhead","allowHtml","borderRadius","fontSize","headerMultiple","marginMultiple","variant","reactMarkdownProps","lineHeight","rehypePlugins","remarkPlugins","remarkPluginsAhead","components","customRender","showFootnotes","citations","rest","delayedAnimated","useDelayedAnimated","Render","defaultDOM","StreamdownRender_default","MarkdownRender_default","PreviewGroup_default","Typography_default","variants","MarkdownProvider","Markdown_default","remarkColor","options","colorValidator","validateAndNormalizeColor","colorString","trimmed","r","g","b","rgbPattern","rgbMatch","rNum","gNum","bNum","hslPattern","hslMatch","h","s","l","hNum","sNum","lNum","tree","visit","node","index","parent","colorValue","colorNode","colorPattern","text","hasColorMatch","newNodes","lastIndex","match","fullMatch","colorCandidate","startIndex","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","variants","import_jsx_runtime","MaskShadow","className","children","position","size","rest","cssVariables","FlexBasic_default","variants","MaskShadow_default","import_scroll_area","import_antd_style","import_antd_style","ScrollAreaGlobalStyle","globalStyle_default","import_antd_style","styles","css","cssVar","import_jsx_runtime","mergeStateClassName","base","className","state","ScrollAreaRoot","rest","BaseScrollArea","styles","ScrollAreaViewport","scrollFade","globalStyle_default","ScrollAreaContent","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","import_jsx_runtime","ScrollArea","children","contentProps","corner","cornerProps","scrollFade","scrollbarProps","thumbProps","viewportProps","rest","ScrollAreaRoot","ScrollAreaViewport","ScrollAreaContent","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","import_antd_style","import_lucide_react","import_react","import_react_hotkeys_hook","import_use_merge_value","import_antd_style","styles","css","cssVar","staticStylish","import_jsx_runtime","SearchBar","defaultValue","spotlight","className","value","onInputChange","placeholder","enableShortKey","shortKey","onSearch","loading","style","onChange","onBlur","onPressEnter","onFocus","inputStyle","shortKeyStyle","inputClassName","shortKeyClassName","rest","inputValue","setInputValue","useControlledState","showTag","setShowTag","inputReference","hotkey","styles","Spotlight_default","Input_default","e","Icon_default","Hotkey_default","SearchBar_default","import_antd","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Segmented","ref","padding","style","className","variant","shadow","glass","rest","AntdSegmented","variants","Segmented_default","import_antd","import_antd_style","import_lucide_react","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","Select","ref","variant","suffixIconProps","suffixIcon","shadow","className","rest","isDarkMode","AntSelect","variants","Icon_default","Select_default","import_antd_style","import_react","import_antd_style","styles","css","cssVar","import_jsx_runtime","SideNav","className","avatar","topActions","bottomActions","rest","FlexBasic_default","styles","SideNav_default","import_antd_style","import_antd_style","import_antd_style","import_antd_style","shimmer","styles","css","cssVar","import_jsx_runtime","SkeletonBlock","width","height","active","style","className","Block_default","styles","SkeletonBlock_default","import_jsx_runtime","DEFAULT_SIZE","SkeletonAvatar","active","shape","size","width","height","style","className","rest","defaultSize","finalWidth","finalHeight","borderRadius","SkeletonBlock_default","styles","SkeletonAvatar_default","import_jsx_runtime","DEFAULT_ROWS","SkeletonParagraph","active","rows","gap","width","height","fontSize","lineHeight","style","className","rest","rowGap","rowCount","baseFontSize","marginBlock","widthList","getRowWidth","index","containerStyle","FlexBasic_default","_","SkeletonBlock_default","SkeletonParagraph_default","import_antd_style","import_jsx_runtime","SkeletonTitle","active","fontSize","lineHeight","height","width","style","className","rest","resolvedLineHeight","baseFontSize","heightMultiplier","marginMultiplier","SkeletonBlock_default","SkeletonTitle_default","import_jsx_runtime","Skeleton","active","avatar","title","paragraph","className","classNames","customStyles","style","width","height","gap","rest","showAvatar","showTitle","showParagraph","avatarProps","titleProps","paragraphProps","rootStyle","avatarActive","titleActive","paragraphActive","FlexBasic_default","SkeletonAvatar_default","styles","SkeletonTitle_default","SkeletonParagraph_default","Skeleton_default","import_antd_style","import_jsx_runtime","HEIGHT_MAP","SkeletonButton","active","block","shape","size","width","height","style","className","rest","resolvedSize","baseHeight","finalWidth","RADIUS_MAP","borderRadius","SkeletonBlock_default","SkeletonButton_default","import_antd_style","import_jsx_runtime","DEFAULT_COUNT","HEIGHT_MAP","DEFAULT_WIDTH_MAP","SkeletonTags","active","className","count","gap","height","size","style","width","rest","resolvedGap","resolvedCount","resolvedHeight","widthList","defaultWidth","RADIUS_MAP","getWidth","index","FlexBasic_default","_","SkeletonBlock_default","SkeletonTags_default","Skeleton","Skeleton_default","SkeletonBlock_default","SkeletonAvatar_default","SkeletonTitle_default","SkeletonParagraph_default","SkeletonButton_default","SkeletonTags_default","import_antd","import_compat","import_react","import_jsx_runtime","SliderWithInput","step","value","onChange","max","min","defaultValue","size","controls","gap","style","className","classNames","styles","disabled","unlimitedInput","changeOnWheel","rest","handleOnchange","sliderClassName","inputClassName","restClassNames","sliderStyle","inputStyle","restStyles","FlexBasic_default","InputNumber_default","v","SliderWithInput_default","import_core","import_modifiers","import_sortable","import_react","import_lucide_react","import_react","import_sortable","import_utilities","import_antd_style","import_react","import_antd_style","import_class_variance_authority","styles","css","cssVar","staticStylish","variants","import_jsx_runtime","SortableItemContext","SortableItem","variant","className","children","id","style","rest","attributes","isDragging","listeners","setNodeRef","setActivatorNodeRef","transform","transition","context","FlexBasic_default","variants","SortableItem_default","import_jsx_runtime","DragHandle","style","rest","grab","setGrab","attributes","listeners","ref","SortableItemContext","ActionIcon_default","DragHandle_default","import_core","import_react","import_jsx_runtime","dropAnimationConfig","SortableOverlay","children","SortableOverlay_default","import_jsx_runtime","SortableListParent","ref","items","onChange","renderItem","gap","rest","active","setActive","activeItem","item","sensors","over","activeIndex","id","overIndex","FlexBasic_default","styles","SortableOverlay_default","SortableList","SortableItem_default","DragHandle_default","SortableList_default","import_antd","import_lucide_react","import_react","import_jsx_runtime","DEFAULT_ICON_SET","ThemeSwitch","size","themeMode","onThemeSwitch","type","labels","className","variant","style","items","item","FlexBasic_default","Icon_default","DropdownMenu_default","ActionIcon_default","ThemeSwitch_default","import_toast","import_antd_style","import_react","import_react_dom","import_toast","import_antd_style","import_lucide_react","import_react","import_react","ToastContext","useToastContext","import_antd_style","import_class_variance_authority","styles","css","cssVar","viewportVariants","rootVariants","actionVariants","import_jsx_runtime","typeIcons","typeColors","ToastItem","toast","classNames","customStyles","position","swipeDirection","useToastContext","toastData","type","closable","hideCloseButton","showCloseButton","icon","title","description","actionProps","actions","iconColor","IconComponent","isLoading","renderIcon","styles","Icon_default","renderActions","action","index","BaseToast","actionVariants","rootVariants","Toast_default","import_jsx_runtime","ALL_POSITIONS","globalState","toastManagers","BaseToast","activeToastIds","getManager","position","normalizeOptions","optionsOrMessage","type","createToastInstance","id","options","addToast","manager","onRemove","dismissToast","ids","toastId","createSuccessToast","createErrorToast","createInfoToast","createWarningToast","createLoadingToast","promiseToast","promise","loadingOptions","loadingToast","result","successOptions","error","errorOptions","baseToast","toast","ToastList","toasts","t","Toast_default","TOAST_PORTAL_ATTR","TOAST_CONTAINER_ATTR","containerMap","getOrCreateContainer","root","resolvedRoot","themeApp","LOBE_THEME_APP_ID","toastContainer","cached","el","resolveRoot","ToastHost","className","duration","limit","swipeDirection","isClient","useIsClient","container","setContainer","resolved","scope","registerDevSingleton","pos","ToastContext","viewportVariants","useToast","import_antd","import_antd_style","import_react","import_antd","import_lucide_react","import_react","import_use_merge_value","import_antd_style","prefixCls","styles","css","cssVar","staticStylish","mapItems","items","item","child","import_jsx_runtime","TocMobile","items","activeKey","onChange","getContainer","headerHeight","tocWidth","activeLink","setActiveLink","useControlledState","activeAnchor","item","tocItems","mapItems","styles","isActive","ActionIcon_default","currentLink","TocMobile_default","import_jsx_runtime","Toc","activeKey","items","getContainer","isMobile","headerHeight","tocWidth","cssVariables","TocMobile_default","styles","mapItems","Toc_default","import_react_error_boundary"]}
|