@officesdk/design 0.1.22 → 0.1.24
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/components/cjs/index.d.ts +5 -1
- package/dist/components/cjs/index.js +2 -2
- package/dist/components/cjs/index.js.map +1 -1
- package/dist/components/esm/index.d.ts +5 -1
- package/dist/components/esm/index.js +2 -2
- package/dist/components/esm/index.js.map +1 -1
- package/dist/theme/cjs/index.js +37 -37
- package/dist/theme/cjs/index.js.map +1 -1
- package/dist/theme/esm/index.js +37 -37
- package/dist/theme/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/UIConfigProvider/configManager.ts","../../src/Icon/IconProvider.tsx","../../src/Icon/Icon.tsx","../../src/Icon/index.ts","../../src/Toast/Toast.tsx","../../src/Toast/toastManager.tsx","../../src/utils/context.ts","../../src/utils/styled.ts","../../src/Button/Button.tsx","../../src/Slider/Slider.tsx","../../src/Slider/index.ts","../../src/NumberInput/NumberInput.tsx","../../src/NumberInput/index.ts","../../src/Button/SpinButton.tsx","../../src/Button/index.ts","../../src/index.ts","../../src/Switch/Switch.tsx","../../src/Radio/Radio.tsx","../../src/Checkbox/Checkbox.tsx","../../src/Input/Input.tsx","../../src/Input/SearchInput.tsx","../../src/Input/UnderlinedInput.tsx","../../src/Toast/index.ts","../../src/Toast/ToastContainer.tsx","../../src/Tabs/Tabs.tsx","../../src/Tooltip/globalStyle.ts","../../src/utils/styleManager.ts","../../src/Tooltip/Tooltip.tsx","../../src/ToolbarButton/ToolbarButton.tsx","../../src/dropdown/DropdownButton.tsx","../../src/dropdown/Menu.tsx","../../src/dropdown/globalStyle.ts","../../src/dropdown/Dropdown.tsx","../../src/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts","../../src/UIConfigProvider/index.ts"],"names":["initUIConfig","getUIConfig","getGlobalIconRegistry","getGlobalToastConfig","ReactDOM","IconProvider","useIconRegistry","createContext","useContext","Icon","styled","React","init_Icon","Toast","init_Button","theme","useState","useEffect","getGlobalTheme","Button","toast","getGlobalRenderFunction","lightTheme","toastManager","baseStyled","IconWrapper","sizeConfig","styles","Slider","useRef","useCallback","init_Slider","NumberInput","init_NumberInput","SpinButton","HiddenInput","InputWrapper","StyledInput","forwardRef","ToastWrapper","ToastContainer","createGlobalStyle","RcTooltip","DropdownButton","IconContainer","ContentBlock","LabelText","ArrowIcon","useMemo","RcDivider","RcItemGroup","RcSubMenu","RcMenuItem","VirtualList","RcMenu","RcDropdown"],"mappings":"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","file":"index.js","sourcesContent":["import type React from 'react';\nimport type { UIConfig } from './types';\nimport { registerGlobalContext } from '../utils/context';\nimport ReactDOM from 'react-dom';\n\nlet globalConfig: UIConfig | null = null;\nlet globalIconRegistry: Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>> | null = null;\nlet globalToastConfig: { maxCount?: number; defaultDuration?: number } | null = null;\n\n/**\n * Create default render function\n * This will be registered via registerGlobalContext and can be retrieved via getGlobalRenderFunction\n */\nexport const createDefaultRenderFunction = (): (element: React.ReactElement, container: HTMLElement) => void => {\n return (element: React.ReactElement, container: HTMLElement) => {\n // Try React 18 createRoot first\n if ('createRoot' in ReactDOM) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { createRoot } = ReactDOM as any;\n const root = createRoot(container);\n root.render(element);\n } else {\n // Fallback to React 17 and below\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(element, container);\n }\n };\n};\n\n/**\n * Initialize UI configuration globally (non-React)\n *\n * This function allows you to configure the UI library without using React Provider components.\n * It's useful for:\n * - Non-React environments\n * - Avoiding Provider nesting (e.g., in Modal components)\n * - Setting up configuration before React app starts\n *\n * After calling this function, all components will automatically use the global configuration.\n * Global styles (Tooltip, Menu, Dropdown) will be injected on-demand when components are first used.\n *\n * @param config - UI configuration object\n * @param config.theme - Theme configuration (required)\n * @param config.icons - Icon registry mapping icon names to React components\n * @param config.toast - Toast configuration (maxCount, defaultDuration, etc.)\n * @param config.locale - Locale code (e.g., 'zh-CN', 'en-US')\n * @param config.i18n - Internationalization configuration\n * @param config.zIndex - Z-index layer management\n * @param config.animation - Animation configuration\n * @param config.a11y - Accessibility configuration\n *\n * @example\n * import { initUIConfig } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * // Initialize before React app starts\n * initUIConfig({\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * maxCount: 5,\n * defaultDuration: 3000,\n * },\n * });\n *\n * // Now you can use components without UIConfigProvider\n * function App() {\n * return <Button>Click me</Button>;\n * }\n *\n * @example\n * // Useful for Modal scenarios - no need to nest Provider\n * function Modal({ children }) {\n * return (\n * <Portal>\n * {children}\n * </Portal>\n * );\n * }\n *\n * @example\n * // Can be called multiple times to update config\n * initUIConfig({ theme: lightTheme });\n * // Later update icons\n * initUIConfig({ theme: lightTheme, icons: newIconRegistry });\n */\nexport const initUIConfig = (config: UIConfig) => {\n globalConfig = config;\n\n // Create and register render function\n const renderFunction = createDefaultRenderFunction();\n\n // Register theme and render function via existing mechanism\n registerGlobalContext({\n theme: config.theme,\n render: renderFunction,\n });\n\n globalIconRegistry = config.icons || null;\n globalToastConfig = {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n };\n};\n\n/**\n * Get global UI configuration\n */\nexport const getUIConfig = (): UIConfig | null => {\n return globalConfig;\n};\n\n/**\n * Get global icon registry\n */\nexport const getGlobalIconRegistry = () => {\n return globalIconRegistry;\n};\n\n/**\n * Get global toast config\n */\nexport const getGlobalToastConfig = () => {\n return globalToastConfig;\n};\n","import React, { createContext, useContext } from 'react';\n\nexport type IconComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>;\nexport type IconRegistry = Record<string, IconComponent>;\n\nconst IconContext = createContext<IconRegistry | null>(null);\n\nexport interface IconProviderProps {\n /**\n * Icon registry mapping icon names to React components\n * Import from @officesdk/design/icons\n */\n icons: IconRegistry;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * IconProvider Component\n *\n * Provides icon registry to child components via Context\n *\n * @example\n * import { IconProvider } from '@officesdk/design';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <IconProvider icons={iconRegistry}>\n * <App />\n * </IconProvider>\n */\nexport const IconProvider: React.FC<IconProviderProps> = ({\n icons,\n children,\n}) => {\n return (\n <IconContext.Provider value={icons}>\n {children}\n </IconContext.Provider>\n );\n};\n\n/**\n * Hook to access icon registry from context\n */\nexport const useIconRegistry = () => {\n return useContext(IconContext);\n};\n\nIconProvider.displayName = 'IconProvider';\n\n\n","import React from 'react';\nimport { styled } from '../utils/styled';\nimport { useIconRegistry } from './IconProvider';\nimport { getGlobalIconRegistry } from '../UIConfigProvider/configManager';\n\nexport interface IconProps {\n /**\n * Icon name from registry (requires IconProvider)\n */\n name?: string;\n /**\n * Image URL for icon (e.g., PNG, JPG, or external SVG)\n */\n src?: string;\n /**\n * Custom icon element (takes precedence over name and src)\n */\n children?: React.ReactNode;\n /**\n * Size of the icon (px)\n */\n size?: number | string;\n /**\n * Color of the icon (only works with SVG icons, not image src)\n */\n color?: string;\n /**\n * Alt text for image icons\n */\n alt?: string;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n /**\n * Click handler\n */\n onClick?: (e: React.MouseEvent) => void;\n}\n\nconst IconContainer = styled.span<{\n $size: number | string;\n $color: string;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n height: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n color: ${({ $color }) => $color};\n flex-shrink: 0;\n line-height: 1;\n\n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n`;\n\n/**\n * Icon Component\n *\n * Renders icons from multiple sources with priority: children > src > name\n *\n * @example\n * // Using with IconProvider and registry\n * <Icon name=\"close\" size={16} />\n *\n * @example\n * // Using with image URL\n * <Icon src=\"/icons/custom-icon.svg\" size={24} />\n *\n * @example\n * // Using with custom icon element\n * <Icon><CustomSvg /></Icon>\n *\n * @example\n * // Using with imported icon component\n * import { CloseIcon } from '@officesdk/design/icons';\n * <Icon><CloseIcon /></Icon>\n */\nexport const Icon: React.FC<IconProps> = ({\n name,\n src,\n children,\n size = 16,\n color = 'currentColor',\n alt = 'icon',\n className,\n style,\n onClick,\n}) => {\n const contextRegistry = useIconRegistry();\n const globalRegistry = getGlobalIconRegistry();\n // Use context registry first, fallback to global registry\n const registry = contextRegistry || globalRegistry;\n\n // Priority: custom children > src > registry icon by name\n let iconElement: React.ReactNode = children;\n\n // If no children, try src\n if (!iconElement && src) {\n iconElement = (\n <img\n src={src}\n alt={alt}\n style={{ width: '100%', height: '100%', display: 'block' }}\n />\n );\n }\n\n // If no children and no src, try registry\n if (!iconElement && name && registry) {\n const IconComponent = registry[name];\n if (IconComponent) {\n iconElement = <IconComponent />;\n } else if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Icon \"${name}\" not found in registry. Make sure IconProvider is set up or call initUIConfig() with icons.`\n );\n }\n }\n\n if (!iconElement) {\n if (process.env.NODE_ENV !== 'production' && !children && !name && !src) {\n console.warn('Icon: one of \"name\", \"src\", or \"children\" must be provided');\n }\n return null;\n }\n\n return (\n <IconContainer\n $size={size}\n $color={color}\n className={className}\n style={style}\n onClick={onClick}\n >\n {iconElement}\n </IconContainer>\n );\n};\n\nIcon.displayName = 'Icon';\n\n","export { Icon } from './Icon';\nexport type { IconProps } from './Icon';\n\nexport { IconProvider, useIconRegistry } from './IconProvider';\nexport type { IconProviderProps, IconRegistry, IconComponent } from './IconProvider';\n\n\n\n","import React, { useEffect, useState } from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\nimport { Button } from '../Button';\nimport { getGlobalTheme } from '../utils/context';\nimport loadingGif from './loading.gif';\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'children' | 'onClick'> {\n /**\n * Toast variant type\n */\n variant?: 'success' | 'info' | 'error' | 'warn' | 'loading';\n /**\n * Toast message content (main text)\n */\n message: React.ReactNode;\n /**\n * Optional description text (shows below message in multiline mode)\n */\n description?: string;\n /**\n * Main action button text (blue color)\n */\n mainButtonText?: string;\n /**\n * Main action button click handler\n */\n onMainButtonClick?: () => void;\n /**\n * Secondary action button text (gray color)\n */\n secondaryButtonText?: string;\n /**\n * Secondary action button click handler\n */\n onSecondaryButtonClick?: () => void;\n /**\n * Whether to show close button\n */\n closable?: boolean;\n /**\n * Close button click handler\n */\n onClose?: () => void;\n /**\n * Auto close duration in milliseconds (0 to disable)\n */\n duration?: number;\n /**\n * Custom icon (overrides default variant icon)\n */\n icon?: React.ReactNode;\n /**\n * Whether to show icon\n */\n showIcon?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst ToastContainer = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn' | 'loading';\n}>`\n display: inline-flex;\n align-items: center;\n gap: 8px;\n border: 1px solid;\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.08);\n\n ${({ theme }) => {\n const baseConfig = theme.components.toast;\n return `\n padding: ${baseConfig.padding};\n border-radius: ${baseConfig.borderRadius};\n font-size: ${baseConfig.fontSize};\n font-weight: ${baseConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.toast[$variant];\n return `\n background: ${variantConfig.background};\n border-color: ${variantConfig.borderColor};\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn' | 'loading';\n $hasDescription: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $hasDescription }) => {\n const size = $hasDescription ? '28px' : '18px';\n return `\n width: ${size};\n height: ${size};\n `;\n }}\n`;\n\nconst ContentWrapper = styled.div<{ $hasDescription: boolean }>`\n display: flex;\n flex-direction: ${({ $hasDescription }) => ($hasDescription ? 'column' : 'row')};\n align-items: ${({ $hasDescription }) => ($hasDescription ? 'flex-start' : 'center')};\n gap: ${({ $hasDescription }) => ($hasDescription ? '2px' : '0')};\n flex: 1;\n`;\n\nconst Message = styled.span`\n font-size: 13px;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.gray['100']};\n`;\n\nconst Description = styled.span`\n font-size: 12px;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.transparency['60']};\n`;\n\nconst ActionGroup = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n`;\n\n// Default icons for each variant\nconst SuccessIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#4ea44b\" />\n <path\n d=\"M6 10L9 13L14 7\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#5ba0e7\" />\n <path d=\"M10 9V14M10 6H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#e95555\" />\n <path d=\"M7 7L13 13M13 7L7 13\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst WarnIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#ebe361\" />\n <path d=\"M10 6V11M10 14H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CloseIconSvg = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst LoadingIcon = () => (\n <img src={loadingGif} alt=\"Loading\" width=\"20\" height=\"20\" />\n);\n\n/**\n * Toast Component\n *\n * A notification message component with different variants\n *\n * @example\n * // Single line toast\n * <Toast variant=\"success\" message=\"信息反馈\" />\n *\n * @example\n * // Toast with buttons\n * <Toast\n * variant=\"info\"\n * message=\"信息反馈\"\n * mainButtonText=\"按钮名称\"\n * onMainButtonClick={() => console.log('Main clicked')}\n * secondaryButtonText=\"按钮名称\"\n * onSecondaryButtonClick={() => console.log('Secondary clicked')}\n * closable\n * />\n *\n * @example\n * // Multi-line toast with description\n * <Toast\n * variant=\"success\"\n * message=\"信息反馈\"\n * description=\"信息具体说明\"\n * mainButtonText=\"按钮名称\"\n * closable\n * />\n */\nexport const Toast: React.FC<ToastProps> = ({\n variant = 'info' as 'success' | 'info' | 'error' | 'warn' | 'loading',\n message,\n description,\n mainButtonText,\n onMainButtonClick,\n secondaryButtonText,\n onSecondaryButtonClick,\n closable = false,\n onClose,\n duration = 0,\n icon,\n showIcon = true,\n className,\n style,\n ...restProps\n}) => {\n const [visible, setVisible] = useState(true);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) {\n return null;\n }\n\n // Icon priority: props.icon > theme icon > default icon\n const getIconElement = () => {\n // 1. If icon prop is provided, use it\n if (icon) {\n return icon;\n }\n\n // 2. Try to get icon from theme\n const theme = getGlobalTheme();\n const themeIconUrl = theme?.components?.toast?.[variant]?.icon?.url;\n if (themeIconUrl) {\n return <Icon src={themeIconUrl} />;\n }\n\n // 3. Use default icon as fallback\n const defaultIcons = {\n success: <SuccessIcon />,\n info: <InfoIcon />,\n error: <ErrorIcon />,\n warn: <WarnIcon />,\n loading: <LoadingIcon />,\n };\n return defaultIcons[variant];\n };\n\n const iconElement = getIconElement();\n const hasDescription = !!description;\n const hasActions = !!(mainButtonText || secondaryButtonText || closable);\n\n return (\n <ToastContainer\n $variant={variant}\n className={className}\n style={style}\n role=\"alert\"\n aria-live=\"polite\"\n {...restProps}\n >\n {showIcon && (\n <IconWrapper $variant={variant} $hasDescription={hasDescription}>\n {iconElement}\n </IconWrapper>\n )}\n\n <ContentWrapper $hasDescription={hasDescription}>\n <Message>{message}</Message>\n {description && <Description>{description}</Description>}\n </ContentWrapper>\n\n {hasActions && (\n <ActionGroup>\n {mainButtonText && onMainButtonClick && (\n <Button variant=\"text\" colorType=\"guidance\" size=\"small\" onClick={onMainButtonClick}>\n {mainButtonText}\n </Button>\n )}\n\n {secondaryButtonText && onSecondaryButtonClick && (\n <Button\n variant=\"text\"\n colorType=\"default\"\n size=\"small\"\n onClick={onSecondaryButtonClick}\n >\n {secondaryButtonText}\n </Button>\n )}\n\n {closable && (\n <Button\n variant=\"icon\"\n colorType=\"default\"\n size=\"small\"\n onClick={handleClose}\n aria-label=\"Close\"\n icon={<CloseIconSvg />}\n iconBordered={false}\n />\n )}\n </ActionGroup>\n )}\n </ToastContainer>\n );\n};\n\nToast.displayName = 'Toast';\n","import React from 'react';\nimport { ToastProps } from './Toast';\nimport { Toast } from './Toast';\nimport { styled } from '../utils/styled';\n\ntype ToastPlacement =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\ninterface ToastItem extends Omit<ToastProps, 'onClose'> {\n id: string;\n placement?: ToastPlacement;\n}\n\ninterface ToastContainerConfig {\n placement?: ToastPlacement;\n maxCount?: number;\n defaultDuration?: number;\n}\n\ntype RenderFunction = (element: React.ReactElement, container: HTMLElement) => void;\n\ninterface ToastWrapperProps {\n $placement:\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n}\n\nconst ToastWrapper = styled.div<ToastWrapperProps>`\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n\n > * {\n pointer-events: auto;\n }\n\n ${({ $placement, theme }) => {\n const offset = theme.components?.toast?.offset || { vertical: '24px', horizontal: '24px' };\n const vertical = offset.vertical || '24px';\n const horizontal = offset.horizontal || '24px';\n\n const styles: Record<string, string> = {\n 'top-right': `\n top: ${vertical};\n right: ${horizontal};\n `,\n 'top-left': `\n top: ${vertical};\n left: ${horizontal};\n `,\n 'top-center': `\n top: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n 'bottom-right': `\n bottom: ${vertical};\n right: ${horizontal};\n `,\n 'bottom-left': `\n bottom: ${vertical};\n left: ${horizontal};\n `,\n 'bottom-center': `\n bottom: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n };\n\n return styles[$placement] || styles['top-right'];\n }}\n`;\n\nclass ToastManager {\n private toasts: ToastItem[] = [];\n private container: HTMLDivElement | null = null;\n private renderFunc: RenderFunction | null = null;\n private config: ToastContainerConfig = {\n placement: 'top-right',\n maxCount: 5,\n defaultDuration: 3000,\n };\n\n constructor() {\n // Try to get render function from global context\n this.tryGetRenderFunction();\n }\n\n /**\n * Try to get render function from global context\n */\n private tryGetRenderFunction() {\n if (typeof window !== 'undefined') {\n import('../utils/context')\n .then(({ getGlobalRenderFunction }) => {\n const renderFunc = getGlobalRenderFunction();\n if (renderFunc) {\n this.renderFunc = renderFunc;\n }\n })\n .catch(() => {\n // Context not available yet\n });\n }\n }\n\n /**\n * Set render function (from registerGlobalContext)\n */\n setRenderFunction(renderFunc: RenderFunction) {\n this.renderFunc = renderFunc;\n }\n\n /**\n * Initialize the toast container\n */\n private initialize() {\n if (this.container) return;\n\n if (!this.renderFunc) {\n console.warn('Toast render function not set. Please call registerGlobalContext first.');\n return;\n }\n\n // Create container element\n this.container = document.createElement('div');\n this.container.id = 'officesdk-toast-container';\n document.body.appendChild(this.container);\n\n this.render();\n }\n\n /**\n * Render toasts to DOM\n */\n private render() {\n if (!this.container || !this.renderFunc) return;\n\n const element = (\n <>\n {this.toasts.map((toast) => {\n return <ToastWrapper key={toast.id} $placement={toast.placement || 'top-center'}>\n <Toast {...toast} onClose={() => this.hide(toast.id)} />\n </ToastWrapper>\n })}\n </>\n );\n\n this.renderFunc(element, this.container);\n }\n\n /**\n * Configure toast container\n */\n configure(config: ToastContainerConfig) {\n this.config = { ...this.config, ...config };\n this.render();\n }\n\n /**\n * Show a toast\n */\n show(props: Omit<ToastProps, 'onClose'>): string {\n this.initialize();\n\n const id = `toast-${Date.now()}-${Math.random()}`;\n const newToast: ToastItem = {\n ...props,\n id,\n duration: props.duration ?? this.config.defaultDuration,\n };\n\n this.toasts = [...this.toasts, newToast].slice(-(this.config.maxCount || 5));\n this.render();\n\n return id;\n }\n\n /**\n * Hide a toast by id\n */\n hide(id: string) {\n this.toasts = this.toasts.filter((toast) => toast.id !== id);\n this.render();\n }\n\n /**\n * Hide all toasts\n */\n hideAll() {\n this.toasts = [];\n this.render();\n }\n\n /**\n * Show success toast\n */\n success(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'success', message });\n }\n\n /**\n * Show info toast\n */\n info(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'info', message });\n }\n\n /**\n * Show error toast\n */\n error(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'error', message });\n }\n\n /**\n * Show warning toast\n */\n warn(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'warn', message });\n }\n\n /**\n * Show loading toast\n */\n loading(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'loading', message });\n }\n\n /**\n * Destroy the toast container\n */\n destroy() {\n if (this.container) {\n // Clear container content\n if (this.renderFunc) {\n // Render empty to unmount components\n this.renderFunc(<></>, this.container);\n }\n // Remove from DOM\n if (this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n this.container = null;\n }\n this.toasts = [];\n }\n\n /**\n * Get current toasts\n */\n getToasts(): ToastItem[] {\n return this.toasts;\n }\n\n /**\n * Clear all toasts (for testing)\n */\n clear() {\n this.toasts = [];\n this.render();\n }\n}\n\n// Global singleton instance\nconst toastManager = new ToastManager();\n\n/**\n * Global toast object that can be used anywhere\n * No need to render ToastContainer component manually\n *\n * @example\n * import { toast } from '@officesdk/design';\n *\n * // Configure (optional)\n * toast.configure({\n * placement: 'top-right',\n * maxCount: 5,\n * defaultDuration: 3000,\n * });\n *\n * // Show toasts\n * toast.success('Operation successful!');\n * toast.error('Something went wrong');\n * toast.info('Info message', { duration: 5000 });\n * toast.warn('Warning message');\n *\n * const id = toast.show({ variant: 'info', message: 'Custom toast' });\n * toast.hide(id);\n * toast.hideAll();\n */\nexport const toast = {\n configure: (config: ToastContainerConfig) => toastManager.configure(config),\n show: (props: Omit<ToastProps, 'onClose'>) => toastManager.show(props),\n hide: (id: string) => toastManager.hide(id),\n hideAll: () => toastManager.hideAll(),\n success: (message: React.ReactNode, options?: Partial<ToastProps>) =>\n toastManager.success(message, options),\n info: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.info(message, options),\n error: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.error(message, options),\n warn: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.warn(message, options),\n loading: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.loading(message, options),\n destroy: () => toastManager.destroy(),\n};\n\n// Export manager for internal use\nexport { toastManager };\nexport type { ToastItem, ToastContainerConfig };\n","import type { Theme } from \"@officesdk/design/theme\";\nimport type React from \"react\";\nimport { lightTheme } from \"@officesdk/design/theme\";\nimport { createDefaultRenderFunction } from \"../UIConfigProvider/configManager\";\n\nfunction deepMerge<T extends Record<string, unknown>>(target: T, ...sources: Partial<T>[]): T {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key] as Record<string, unknown>, source[key] as Record<string, unknown>);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return deepMerge(target, ...sources);\n}\n\nfunction isObject(item: any): item is Record<string, unknown> {\n return item && typeof item === \"object\" && !Array.isArray(item);\n}\n\n\nconst globalTheme: Theme = lightTheme;\nexport const registerGlobalTheme = (theme: Theme) => {\n // Theme is a complex object type, cast to Record for deepMerge\n // Use double cast via unknown to satisfy TypeScript's type system\n deepMerge(\n globalTheme as unknown as Record<string, unknown>,\n theme as unknown as Record<string, unknown>\n );\n};\n\nexport const getGlobalTheme = (): Theme => {\n return globalTheme;\n};\n\n// Store render function globally to avoid circular dependency\nlet globalRenderFunction: ((element: React.ReactElement, container: HTMLElement) => void) | null = createDefaultRenderFunction();\n\nexport const getGlobalRenderFunction = () => globalRenderFunction;\n\n/**\n * Register global context\n *\n * Registers theme and render function to the global context.\n * Can be called multiple times (e.g., in tests) to update the theme.\n *\n * @param context - The context to register\n * @param context.theme - Theme configuration\n * @param context.render - Optional render function for toast (React 18+ uses createRoot, older versions use ReactDOM.render)\n */\nexport const registerGlobalContext = (context: {\n theme: Theme;\n render?: (element: React.ReactElement, container: HTMLElement) => void;\n}) => {\n if (context.theme) {\n registerGlobalTheme(context.theme);\n }\n\n if (context.render) {\n globalRenderFunction = context.render;\n // Immediately set render function if toastManager is already loaded\n // This avoids race conditions\n if (typeof window !== 'undefined') {\n // Use a small timeout to ensure toastManager is loaded\n setTimeout(() => {\n import('../Toast/toastManager').then(({ toastManager }) => {\n toastManager.setRenderFunction(context.render!);\n }).catch(() => {\n // toastManager not loaded yet, will be set when it loads\n });\n }, 0);\n }\n }\n};\n","import baseStyled, {\n ThemedStyledInterface\n} from 'styled-components';\nimport { getGlobalTheme } from './context';\nimport type { Theme } from '@officesdk/design/theme';\n\n// Helper function to wrap styled component and inject theme via defaultProps\nconst wrapWithTheme = (component: any) => {\n if (component && typeof component === 'object' ) {\n component.defaultProps = {\n ...component.defaultProps,\n get theme() {\n return getGlobalTheme()\n },\n };\n }\n return component;\n};\n\n// Create the main styled function\nconst styledFunction = (tag: any) => {\n return wrapWithTheme((baseStyled as any)(tag));\n};\n\n// Start with a copy of baseStyled to get all its properties\nconst styledWithBase = Object.assign(styledFunction, baseStyled);\n\n// Override each HTML tag method to inject theme via defaultProps\nObject.keys(baseStyled).forEach((key) => {\n const originalMethod = (baseStyled as any)[key];\n\n if (typeof originalMethod === 'function') {\n (styledWithBase as any)[key] = (...args: any[]) => {\n const component = originalMethod(...args);\n return wrapWithTheme(component);\n };\n }\n});\n\n// Export with proper typing\nexport const styled = styledWithBase as ThemedStyledInterface<Theme>;\n\n\n","import React from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant type\n * - 'icon': Square icon button without padding, size based on iconSize\n */\n variant?: 'solid' | 'outlined' | 'text' | 'icon';\n /**\n * Button color type\n * - 'status' is only available for 'text' variant\n */\n colorType?: 'default' | 'guidance' | 'alert' | 'status';\n /**\n * Button size\n */\n size?: 'small' | 'medium' | 'large' | 'extraLarge';\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in loading state\n */\n loading?: boolean;\n /**\n * Whether the button should take full width of its container\n */\n fullWidth?: boolean;\n /**\n * Icon to display with the button text\n * - If string: treated as icon src URL, rendered using Icon component\n * - If ReactNode: rendered directly\n */\n icon?: string | React.ReactNode;\n /**\n * Icon placement relative to text (only for text buttons)\n */\n iconPlacement?: 'before' | 'after';\n /**\n * Whether the icon button should have a border (only for variant='icon')\n */\n iconBordered?: boolean;\n}\n\nconst IconWrapper = styled.span<{ $size: ButtonProps['size']; $iconPlacement: 'before' | 'after' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, $iconPlacement, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n const marginSide = $iconPlacement === 'before' ? 'margin-right' : 'margin-left';\n\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n ${marginSide}: ${sizeConfig.iconGap};\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n `;\n }}\n`;\n\nconst TextWrapper = styled.span<{ $size: ButtonProps['size'] }>`\n ${({ $size, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n return `\n padding: ${sizeConfig.textPadding || '0'};\n `;\n }}\n`;\n\nconst IconOnlyWrapper = styled.span<{ $size: ButtonProps['size'] }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.onlyIcon || buttonConfig;\n return `\n width: ${sizeConfig.iconSize?.width || '14px'};\n height: ${sizeConfig.iconSize?.height || '14px'};\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n `;\n }}\n`;\n\nconst StyledButton = styled.button<{\n $variant: ButtonProps['variant'];\n $colorType: ButtonProps['colorType'];\n $size: ButtonProps['size'];\n $fullWidth: boolean;\n $iconBordered: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n border: none;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n\n /* Size variants */\n ${({ $size, $variant, theme }) => {\n const sizeName = $size || 'medium';\n const buttonConfig = theme.components.button[sizeName];\n\n // Icon variant: use onlyIcon config (square button with padding)\n if ($variant === 'icon') {\n const sizeConfig = buttonConfig?.onlyIcon || buttonConfig;\n return `\n padding: ${sizeConfig.padding || '7px'};\n border-radius: ${sizeConfig.borderRadius || theme.borderRadius.small};\n `;\n }\n\n // Other variants: use withIcon config\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n return `\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n min-height: ${sizeConfig.height};\n `;\n }}\n\n /* Variant and color type styles */\n ${({ $variant, $colorType, $iconBordered, theme }) => {\n // Handle icon variant buttons\n if ($variant === 'icon') {\n const baseVariant = $iconBordered ? 'outlined' : 'text';\n const styles = theme.components.button[baseVariant]['default'];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }\n\n const variant = $variant || 'solid';\n const colorType = $colorType || 'default';\n\n // Validate colorType for variant\n if (colorType === 'status' && variant !== 'text') {\n console.warn(\n `colorType 'status' is only available for 'text' variant. Falling back to 'default'.`\n );\n }\n\n const effectiveColorType = colorType === 'status' && variant !== 'text' ? 'default' : colorType;\n const styles =\n theme.components.button[variant][\n effectiveColorType as keyof (typeof theme.components.button)[typeof variant]\n ];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n font-weight: ${styles.fontWeight};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }}\n`;\n\n/**\n * Button Component\n *\n * @example\n * // Basic button\n * <Button>button</Button>\n *\n * @example\n * // Button with icon (string URL)\n * <Button icon=\"https://example.com/icon.svg\" iconPlacement=\"before\">button</Button>\n *\n * @example\n * // Button with icon (ReactNode)\n * <Button icon={<CustomIcon />} iconPlacement=\"after\">button</Button>\n *\n * @example\n * // Icon variant button (square, no padding)\n * <Button variant=\"icon\" icon={<CustomIcon />} iconBordered />\n *\n * @example\n * // Icon variant button without border\n * <Button variant=\"icon\" icon={<CustomIcon />} />\n */\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'solid',\n colorType = 'default',\n size = 'medium',\n disabled = false,\n loading = false,\n fullWidth = false,\n icon,\n iconPlacement = 'before',\n iconBordered = false,\n children,\n ...rest\n}) => {\n return (\n <StyledButton\n $variant={variant}\n $colorType={colorType}\n $size={size}\n $fullWidth={fullWidth}\n $iconBordered={iconBordered}\n disabled={disabled || loading}\n {...rest}\n >\n {loading ? (\n <TextWrapper $size={size}>Loading...</TextWrapper>\n ) : variant === 'icon' ? (\n // Icon variant: render icon with onlyIcon wrapper (uses onlyIcon config)\n <IconOnlyWrapper $size={size}>\n {typeof icon === 'string' ? <Icon src={icon} /> : icon || children}\n </IconOnlyWrapper>\n ) : (\n <>\n {icon && iconPlacement === 'before' && (\n <IconWrapper $size={size} $iconPlacement=\"before\">\n {typeof icon === 'string' ? <Icon src={icon} /> : icon}\n </IconWrapper>\n )}\n <TextWrapper $size={size}>{children}</TextWrapper>\n {icon && iconPlacement === 'after' && (\n <IconWrapper $size={size} $iconPlacement=\"after\">\n {typeof icon === 'string' ? <Icon src={icon} /> : icon}\n </IconWrapper>\n )}\n </>\n )}\n </StyledButton>\n );\n};\n\nButton.displayName = 'Button';\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface SliderProps {\n /**\n * Current value (0-100)\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment\n */\n step?: number;\n /**\n * Whether the slider is disabled\n */\n disabled?: boolean;\n /**\n * Callback when value changes\n */\n onChange?: (value: number) => void;\n /**\n * Callback when dragging starts\n */\n onDragStart?: () => void;\n /**\n * Callback when dragging ends\n */\n onDragEnd?: () => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SliderContainer = styled.div<{\n $disabled: boolean;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 18px;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n`;\n\nconst SliderTrack = styled.div<{\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: ${({ theme }) => theme.colors.palettes.transparency['20']};\n border-radius: 1000px;\n top: 50%;\n transform: translateY(-50%);\n`;\n\nconst SliderFill = styled.div<{\n $percentage: number;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n height: 2px;\n border-radius: 1px;\n top: 50%;\n transform: translateY(-50%);\n width: ${({ $percentage }) => $percentage}%;\n background: ${({ $disabled, theme }) =>\n $disabled\n ? theme.colors.palettes.transparency['10']\n : theme.colors.palettes.gray['100']};\n`;\n\nconst SliderThumb = styled.div<{\n $percentage: number;\n $disabled: boolean;\n $isDragging: boolean;\n}>`\n position: absolute;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.blue['5']};\n left: ${({ $percentage }) => $percentage}%;\n top: 50%;\n transform: translate(-50%, -50%);\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'grab')};\n transition: ${({ $isDragging }) => ($isDragging ? 'none' : 'left 0.1s ease')};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.1);\n\n ${({ $disabled }) =>\n !$disabled &&\n `\n &:hover {\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.15);\n }\n\n &:active {\n cursor: grabbing;\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.2);\n }\n `}\n`;\n\n/**\n * Slider Component\n *\n * A slider for selecting a value from a range\n *\n * @example\n * <Slider value={35} onChange={(val) => console.log(val)} />\n */\nexport const Slider: React.FC<SliderProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n onChange,\n onDragStart,\n onDragEnd,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(\n controlledValue ?? defaultValue\n );\n const [isDragging, setIsDragging] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Calculate percentage\n const percentage = ((value - min) / (max - min)) * 100;\n\n // Update value based on position\n const updateValue = useCallback(\n (clientX: number) => {\n if (!containerRef.current || disabled) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const newPercentage = Math.max(0, Math.min(100, (offsetX / rect.width) * 100));\n const rawValue = (newPercentage / 100) * (max - min) + min;\n\n // Apply step\n const steppedValue = Math.round(rawValue / step) * step;\n const clampedValue = Math.max(min, Math.min(max, steppedValue));\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [min, max, step, disabled, controlledValue, onChange]\n );\n\n // Handle mouse down\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.preventDefault();\n setIsDragging(true);\n onDragStart?.();\n updateValue(e.clientX);\n },\n [disabled, onDragStart, updateValue]\n );\n\n // Handle mouse move\n useEffect(() => {\n if (!isDragging) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n updateValue(e.clientX);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n onDragEnd?.();\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, updateValue, onDragEnd]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let newValue = value;\n\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n newValue = Math.max(min, value - step);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n newValue = Math.min(max, value + step);\n break;\n case 'Home':\n e.preventDefault();\n newValue = min;\n break;\n case 'End':\n e.preventDefault();\n newValue = max;\n break;\n default:\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [disabled, value, min, max, step, controlledValue, onChange]\n );\n\n return (\n <SliderContainer\n ref={containerRef}\n $disabled={disabled}\n className={className}\n style={style}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n >\n <SliderTrack $disabled={disabled} />\n <SliderFill $percentage={percentage} $disabled={disabled} />\n <SliderThumb\n $percentage={percentage}\n $disabled={disabled}\n $isDragging={isDragging}\n />\n </SliderContainer>\n );\n};\n\nSlider.displayName = 'Slider';\n\n","export { Slider } from './Slider';\nexport type { SliderProps } from './Slider';\n\n\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface NumberInputProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Unit text to display after the input\n */\n unit?: string;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Callback when value changes\n * @param fixedValue - The clamped value within min/max range (can be undefined if empty)\n * @param rawValue - The original input value before clamping (can be undefined if empty)\n */\n onChange?: (fixedValue: number | undefined, rawValue: number | undefined) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst NumberInputContainer = styled.div<{\n $size: 'small' | 'large';\n $disabled: boolean;\n $alert: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n background: white;\n border: 1px solid;\n border-radius: 2px;\n flex-shrink: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n height: 24px;\n width: 72px;\n `\n : `\n height: 32px;\n width: 80px;\n `}\n\n ${({ $disabled, $alert, $isFocused, theme }) => {\n if ($disabled) {\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n cursor: not-allowed;\n `;\n }\n if ($alert) {\n return `\n border-color: ${theme.colors.palettes.red['6']};\n `;\n }\n if ($isFocused) {\n return `\n border-color: ${theme.colors.palettes.transparency['30']};\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.04);\n `;\n }\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n\n &:hover {\n border-color: ${theme.colors.palettes.transparency['20']};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.04);\n }\n `;\n }}\n`;\n\nconst InputWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 8px;\n min-width: 0;\n gap: 4px;\n`;\n\nconst UnitText = styled.span<{ $size: 'small' | 'large'; $disabled: boolean }>`\n flex-shrink: 0;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n`;\n\nconst StyledInput = styled.input<{ $size: 'small' | 'large'; $disabled: boolean }>`\n width: 100%;\n border: none;\n outline: none;\n background: transparent;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n padding: 0;\n margin: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n cursor: not-allowed;\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n /* Remove number input arrows */\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &[type='number'] {\n appearance: textfield;\n -moz-appearance: textfield;\n }\n`;\n\nconst ButtonGroup = styled.div<{ $alert: boolean; $disabled: boolean }>`\n display: flex;\n flex-direction: column;\n height: 100%;\n border-left: 1px solid;\n flex-shrink: 0;\n\n ${({ $disabled, $alert, theme }) => {\n if ($disabled) {\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }\n if ($alert) {\n return `border-color: ${theme.colors.palettes.red['6']};`;\n }\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }}\n`;\n\nconst StepButton = styled.button<{ $position: 'up' | 'down'; $alert: boolean; $disabled: boolean }>`\n flex: 1 1 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 1px 8px;\n outline: none;\n min-height: 0;\n overflow: hidden;\n\n ${({ $position, $alert, $disabled, theme }) => {\n if ($position === 'up') {\n return `\n border-bottom: 1px solid ${\n $disabled\n ? theme.colors.palettes.transparency['10']\n : $alert\n ? theme.colors.palettes.red['6']\n : theme.colors.palettes.transparency['10']\n };\n `;\n }\n return '';\n }}\n\n ${({ $disabled, theme }) => {\n if ($disabled) {\n return `\n cursor: not-allowed;\n opacity: 0.4;\n `;\n }\n return `\n &:hover {\n background-color: ${theme.colors.palettes.transparency['5']};\n }\n\n &:active {\n background-color: ${theme.colors.palettes.transparency['10']};\n }\n `;\n }}\n\n svg {\n width: 14px;\n height: 14px;\n fill: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.gray['120']};\n }\n`;\n\nconst UpArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 4.5L10.5 8.5H3.5L7 4.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\nconst DownArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 9.5L3.5 5.5H10.5L7 9.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\n/**\n * NumberInput Component\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <NumberInput value={35} onChange={(val) => console.log(val)} />\n */\nexport const NumberInput: React.FC<NumberInputProps> = ({\n value: controlledValue,\n defaultValue,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n precision,\n formatter,\n parser,\n unit,\n placeholder,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number | undefined>(controlledValue ?? defaultValue);\n const [displayValue, setDisplayValue] = useState<string>('');\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Format value for display\n const formatValue = useCallback(\n (val: number | undefined): string => {\n if (val === undefined) {\n return '';\n }\n if (formatter) {\n return formatter(val);\n }\n if (precision !== undefined) {\n return val.toFixed(precision);\n }\n return String(val);\n },\n [formatter, precision]\n );\n\n // Parse display value to number\n const parseValue = useCallback(\n (displayVal: string): number | null => {\n if (parser) {\n return parser(displayVal);\n }\n const parsed = parseFloat(displayVal);\n return isNaN(parsed) ? null : parsed;\n },\n [parser]\n );\n\n // Update display value when value changes\n useEffect(() => {\n if (!isFocused) {\n setDisplayValue(formatValue(value));\n }\n }, [value, isFocused, formatValue]);\n\n // Clamp value to min/max\n const clampValue = useCallback(\n (val: number | undefined): number | undefined => {\n if (val === undefined) {\n return undefined;\n }\n return Math.max(min, Math.min(max, val));\n },\n [min, max]\n );\n\n // Handle value change\n const handleValueChange = useCallback(\n (newValue: number | undefined) => {\n const clampedValue = clampValue(newValue);\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue, newValue);\n },\n [clampValue, controlledValue, onChange]\n );\n\n // Increment value\n const increment = useCallback(() => {\n if (disabled) return;\n const currentValue = value ?? 0;\n handleValueChange(currentValue + step);\n }, [disabled, value, step, handleValueChange]);\n\n // Decrement value\n const decrement = useCallback(() => {\n if (disabled) return;\n const currentValue = value ?? 0;\n handleValueChange(currentValue - step);\n }, [disabled, value, step, handleValueChange]);\n\n // Handle input change\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setDisplayValue(e.target.value);\n }, []);\n\n // Handle input blur\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n const trimmedValue = displayValue.trim();\n if (trimmedValue === '') {\n handleValueChange(undefined);\n setDisplayValue('');\n } else {\n const parsed = parseValue(trimmedValue);\n if (parsed !== null) {\n handleValueChange(parsed);\n } else {\n setDisplayValue(formatValue(value));\n }\n }\n }, [displayValue, parseValue, handleValueChange, value, formatValue]);\n\n // Handle input focus\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n if (value !== undefined) {\n setDisplayValue(String(value));\n } else {\n setDisplayValue('');\n }\n }, [value]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n } else if (e.key === 'Enter') {\n inputRef.current?.blur();\n }\n },\n [increment, decrement]\n );\n\n return (\n <NumberInputContainer\n $size={size}\n $disabled={disabled}\n $alert={alert}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n <InputWrapper>\n <StyledInput\n ref={inputRef}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n $size={size}\n $disabled={disabled}\n />\n {unit && (\n <UnitText $size={size} $disabled={disabled}>\n {unit}\n </UnitText>\n )}\n </InputWrapper>\n\n <ButtonGroup $alert={alert} $disabled={disabled}>\n <StepButton\n type=\"button\"\n $position=\"up\"\n $alert={alert}\n $disabled={disabled}\n onClick={increment}\n disabled={disabled}\n tabIndex={-1}\n >\n <UpArrow />\n </StepButton>\n\n <StepButton\n type=\"button\"\n $position=\"down\"\n $alert={alert}\n $disabled={disabled}\n onClick={decrement}\n disabled={disabled}\n tabIndex={-1}\n >\n <DownArrow />\n </StepButton>\n </ButtonGroup>\n </NumberInputContainer>\n );\n};\n\nNumberInput.displayName = 'NumberInput';\n","export { NumberInput } from './NumberInput';\nexport type { NumberInputProps } from './NumberInput';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\nimport { Slider } from '../Slider';\nimport { NumberInput } from '../NumberInput';\n\nexport interface SpinButtonProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Whether to show the slider\n */\n showSlider?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Callback when value changes\n */\n onChange?: (value: number | null) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SpinButtonWrapper = styled.div<{\n $showSlider: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n gap: ${({ $showSlider }) => ($showSlider ? '0' : '0')};\n width: ${({ $showSlider }) => ($showSlider ? '100%' : 'auto')};\n`;\n\nconst SliderWrapper = styled.div<{\n $size: 'small' | 'large';\n}>`\n flex: 1;\n display: flex;\n align-items: center;\n padding: ${({ $size }) => ($size === 'small' ? '7px 0' : '7px 0')};\n padding-right: ${({ $size }) => ($size === 'small' ? '8px' : '8px')};\n min-width: 0;\n`;\n\n\n/**\n * SpinButton Component - Spin Button\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <SpinButton value={35} onChange={(val) => console.log(val)} />\n */\nexport const SpinButton: React.FC<SpinButtonProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n showSlider = false,\n precision,\n formatter,\n parser,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(controlledValue ?? defaultValue);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Handle value change from NumberInput or Slider\n // NumberInput passes (fixedValue, rawValue), Slider passes single value\n const handleValueChange = useCallback(\n (fixedValue: number | undefined | null, rawValue?: number | undefined) => {\n // Handle both NumberInput signature (fixedValue, rawValue) and Slider signature (single value)\n // If rawValue is undefined, it means this is from Slider (single value)\n // If rawValue is defined, it means this is from NumberInput (two parameters)\n const newValue = rawValue === undefined\n ? (fixedValue ?? 0) // Slider: single value\n : (fixedValue ?? 0); // NumberInput: use fixedValue\n\n if (newValue === null) {\n onChange?.(null);\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [controlledValue, onChange]\n );\n\n return (\n <SpinButtonWrapper $showSlider={showSlider} className={className} style={style}>\n {showSlider && (\n <SliderWrapper $size={size}>\n <Slider\n value={value}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onChange={handleValueChange}\n />\n </SliderWrapper>\n )}\n\n <NumberInput\n value={value}\n min={min}\n max={max}\n step={step}\n size={size}\n disabled={disabled}\n alert={alert}\n precision={precision}\n formatter={formatter}\n parser={parser}\n onChange={handleValueChange}\n />\n </SpinButtonWrapper>\n );\n};\n\nSpinButton.displayName = 'SpinButton';\n","export { Button } from './Button';\nexport type { ButtonProps } from './Button';\n\nexport { SpinButton } from './SpinButton';\nexport type { SpinButtonProps } from './SpinButton';\n\n","export { Button, SpinButton } from './Button';\nexport type { ButtonProps, SpinButtonProps } from './Button';\n\nexport { Switch } from './Switch';\nexport type { SwitchProps } from './Switch';\n\nexport { Radio } from './Radio';\nexport type { RadioProps } from './Radio';\n\nexport { Checkbox } from './Checkbox';\nexport type { CheckboxProps } from './Checkbox';\n\nexport { Slider } from './Slider';\nexport type { SliderProps } from './Slider';\n\nexport { Input, SearchInput, UnderlinedInput } from './Input';\nexport type { InputProps, SearchInputProps, UnderlinedInputProps } from './Input';\n\nexport { NumberInput } from './NumberInput';\nexport type { NumberInputProps } from './NumberInput';\n\nexport { Icon, IconProvider, useIconRegistry } from './Icon';\nexport type { IconProps, IconProviderProps, IconRegistry, IconComponent } from './Icon';\n\nexport { Toast, ToastContainer, useToast, toast } from './Toast';\nexport type { ToastProps, ToastContainerProps, ToastContainerConfig } from './Toast';\n\nexport { Tabs } from './Tabs';\nexport type { TabsProps, TabItem } from './Tabs';\n\nexport { Tooltip } from './Tooltip';\nexport type { TooltipProps } from './Tooltip';\n\nexport { ToolbarButton } from './ToolbarButton';\nexport type { ToolbarButtonProps } from './ToolbarButton';\n\nexport { DropdownButton, Menu, Dropdown, MenuGlobalStyles, DropdownGlobalStyles } from './dropdown';\nexport type { DropdownButtonProps, MenuProps, MenuItem, MenuGroup, MenuDivider, MenuItemType, DropdownProps } from './dropdown';\n\nexport {\n UIConfigProvider,\n useUIConfig,\n createUIConfig,\n mergeUIConfig,\n initUIConfig,\n getUIConfig,\n getGlobalIconRegistry,\n getGlobalToastConfig,\n} from './UIConfigProvider';\n\nexport type {\n UIConfigProviderProps,\n UIConfig,\n ToastConfig,\n ToastPosition,\n ZIndexConfig,\n AnimationConfig,\n A11yConfig,\n I18nConfig,\n} from './UIConfigProvider';\n\nexport { styled } from './utils/styled';\nexport { getGlobalTheme } from './utils/context';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface SwitchProps {\n /**\n * Whether the switch is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Size variant\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Whether the switch is disabled\n */\n disabled?: boolean;\n /**\n * Callback when checked state changes\n */\n onChange?: (checked: boolean) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SwitchContainer = styled.label<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n width: ${sizeConfig.container.width};\n height: ${sizeConfig.container.height};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst Track = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n border-radius: ${sizeConfig.track.borderRadius};\n width: ${sizeConfig.track.width};\n height: ${sizeConfig.track.height};\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.track.backgroundDisabled};\n box-shadow: ${stateConfig.track.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.track.background};\n box-shadow: ${stateConfig.track.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover {\n background: ${stateConfig.track.backgroundHover};\n box-shadow: ${stateConfig.track.boxShadowHover};\n }\n `;\n }}\n`;\n\nconst Thumb = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n top: 50%;\n border-style: solid;\n box-sizing: border-box;\n left: 0;\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, $checked, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n const thumbSize = sizeConfig.thumb.size;\n const thumbOffset = sizeConfig.thumb.offset;\n const thumbBorderRadius = sizeConfig.thumb.borderRadius;\n const thumbBorderWidth = sizeConfig.thumb.borderWidth;\n\n // Calculate thumb position based on track width\n const trackWidth = sizeConfig.container.width;\n const thumbSizeNum = parseFloat(thumbSize);\n const offsetNum = parseFloat(thumbOffset);\n const trackWidthNum = parseFloat(trackWidth);\n\n // Position from left (unchecked: offset, checked: trackWidth - thumbSize - offset)\n const leftPosition = $checked\n ? `${trackWidthNum - thumbSizeNum - offsetNum}px`\n : thumbOffset;\n\n return `\n width: ${thumbSize};\n height: ${thumbSize};\n border-radius: ${thumbBorderRadius};\n border-width: ${thumbBorderWidth};\n transform: translate(${leftPosition}, -50%);\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.thumb.backgroundDisabled};\n border-color: ${stateConfig.thumb.borderColorDisabled};\n box-shadow: ${stateConfig.thumb.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.thumb.background};\n border-color: ${stateConfig.thumb.borderColor};\n box-shadow: ${stateConfig.thumb.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover & {\n background: ${stateConfig.thumb.backgroundHover};\n border-color: ${stateConfig.thumb.borderColorHover};\n box-shadow: ${stateConfig.thumb.boxShadowHover};\n }\n `;\n }}\n`;\n\n/**\n * Switch Component\n *\n * A toggle switch for binary states\n *\n * @example\n * <Switch checked={true} onChange={(checked) => console.log(checked)} />\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n size = 'large',\n disabled = false,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n return (\n <SwitchContainer\n $size={size}\n $checked={checked}\n $disabled={disabled}\n className={className}\n style={style}\n >\n <HiddenInput\n type=\"checkbox\"\n checked={checked}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <Track\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <Thumb\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n </SwitchContainer>\n );\n};\n\nSwitch.displayName = 'Switch';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface RadioProps {\n /**\n * Whether the radio is checked\n * @default false\n */\n checked?: boolean;\n /**\n * Default checked state\n * @default false\n */\n defaultChecked?: boolean;\n /**\n * Whether the radio is disabled\n */\n disabled?: boolean;\n /**\n * Value of the radio\n */\n value?: string | number;\n /**\n * Name attribute for grouping radios\n */\n name?: string;\n /**\n * ID attribute for the radio (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * prevent default click event, if true, change event will not be triggered\n * @default false\n */\n clickPreventDefault?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst RadioContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.radio.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst RadioOuter = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ $checked, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.radio.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.radio.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n\n return `\n ${RadioContainer}:hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n ${RadioContainer}:active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst RadioInner = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n background: white;\n opacity: ${({ $checked }) => ($checked ? 1 : 0)};\n transition: opacity 0.2s ease;\n\n ${({ theme }) => {\n const dotSize = theme.components.radio.small.dotSize;\n return `\n width: ${dotSize};\n height: ${dotSize};\n `;\n }}\n`;\n\n/**\n * Radio Component\n *\n * A radio button for selecting one option from a group\n *\n * @example\n * <Radio checked={true} onChange={(e) => console.log(e.target.checked)} />\n */\nexport const Radio: React.FC<RadioProps> = ({\n clickPreventDefault = false,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n // Prevent event bubbling to avoid triggering parent element's click handlers\n if (clickPreventDefault) {\n e.preventDefault();\n }\n }, []);\n\n return (\n <RadioContainer\n $disabled={disabled}\n className={className}\n style={style}\n onClick={handleContainerClick}\n >\n <HiddenInput\n type=\"radio\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <RadioOuter\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <RadioInner\n $checked={checked}\n $disabled={disabled}\n />\n </RadioContainer>\n );\n};\n\nRadio.displayName = 'Radio';\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface CheckboxProps {\n /**\n * Whether the checkbox is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Whether the checkbox is in indeterminate state\n */\n indeterminate?: boolean;\n /**\n * Whether the checkbox is disabled\n */\n disabled?: boolean;\n /**\n * Value of the checkbox\n */\n value?: string | number;\n /**\n * Name attribute for the checkbox\n */\n name?: string;\n /**\n * ID attribute for the checkbox (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * prevent default click event, if true, change event will not be triggered\n * @default false\n */\n clickPreventDefault?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst CheckboxContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst CheckboxBox = styled.div<{\n $checked: boolean;\n $indeterminate: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 1px;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n border-radius: ${sizeConfig.borderRadius};\n `;\n }}\n\n ${({ $checked, $indeterminate, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.checkbox.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n if ($indeterminate) {\n const indeterminateConfig = theme.components.checkbox.indeterminate;\n return `\n background: ${indeterminateConfig.background};\n border-color: ${indeterminateConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.checkbox.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, $indeterminate, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n\n return `\n :hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n :active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $visible: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n transition: opacity 0.2s ease;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ theme }) => {\n const iconSize = theme.components.checkbox.small.iconSize;\n return `\n width: ${iconSize.width};\n height: ${iconSize.height};\n `;\n }}\n\n svg, img {\n display: block;\n }\n`;\n\nconst DefaultIndeterminateIcon = styled.div`\n width: 8px;\n height: 2px;\n background: white;\n`;\n\n/**\n * Checkbox Component\n *\n * A checkbox for selecting multiple options\n *\n * @example\n * <Checkbox checked={true} onChange={(e) => console.log(e.target.checked)} />\n *\n * @example\n * // Indeterminate state\n * <Checkbox indeterminate={true} />\n */\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n indeterminate = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n clickPreventDefault = false,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n // Set indeterminate property on the native input element\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n // Prevent event bubbling to avoid triggering parent element's click handlers\n if (clickPreventDefault) {\n e.preventDefault();\n }\n }, []);\n\n return (\n <CheckboxContainer\n $disabled={disabled}\n className={className}\n style={style}\n onClick={handleContainerClick}\n >\n <HiddenInput\n ref={inputRef}\n type=\"checkbox\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <CheckboxBox\n $checked={checked}\n $indeterminate={indeterminate}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n {!indeterminate && (\n <IconWrapper $visible={checked}>\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"#fff\">\n <path d=\"M1.05426 3.16164L0 4.27945L3.50904 8L10 1.11781L8.94573 0L3.50904 5.76438L1.05426 3.16164Z\" />\n </svg>\n </IconWrapper>\n )}\n {indeterminate && (\n <IconWrapper $visible={indeterminate}>\n <DefaultIndeterminateIcon />\n </IconWrapper>\n )}\n </CheckboxContainer>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\n","import React, { forwardRef, useState } from 'react';\nimport { styled } from '../utils/styled';\n\ntype InputSize = 'mini' | 'small' | 'medium' | 'large';\ntype LineType = 'outlined' | 'underlined' | 'borderless';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n /**\n * Input line type\n */\n lineType?: LineType;\n /**\n * Input size\n */\n size?: InputSize;\n /**\n * Whether the input has an error state\n */\n error?: boolean;\n /**\n * Whether the input is in readonly mode\n */\n readOnly?: boolean;\n /**\n * Node to display before the input\n */\n prefixNode?: React.ReactNode;\n /**\n * Node to display after the input\n */\n suffixNode?: React.ReactNode;\n /**\n * Whether to show clear button when input has value\n */\n clearable?: boolean;\n /**\n * Clear button click handler\n */\n onClear?: () => void;\n /**\n * Custom clear icon\n */\n clearIcon?: React.ReactNode;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\n /**\n * Custom input className\n */\n inputClassName?: string;\n /**\n * Custom input styles\n */\n inputStyle?: React.CSSProperties;\n}\n\nconst InputContainer = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n}>`\n display: inline-flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n `;\n }}\n`;\n\nconst InputWrapper = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n $error: boolean;\n $disabled: boolean;\n $readOnly: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n flex: 1;\n transition: all 0.2s ease;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n gap: ${sizeConfig.gap || '4px'};\n ${\n $lineType === 'outlined'\n ? `\n border-radius: ${sizeConfig.borderRadius};\n `\n : ''\n }\n `;\n }}\n\n ${({ $error, $disabled, $readOnly, $isFocused, $lineType, theme, $size }) => {\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const stateConfig = typeConfig?.state;\n if (!stateConfig) return '';\n\n let borderColor = stateConfig.borderColor;\n let background = stateConfig.background;\n let boxShadow = 'none';\n\n if ($disabled) {\n borderColor = stateConfig.borderColorDisabled;\n background = stateConfig.backgroundDisabled;\n } else if ($readOnly) {\n borderColor = stateConfig.borderColorReadonly || stateConfig.borderColor;\n background = stateConfig.backgroundReadonly || stateConfig.background;\n } else if ($error) {\n borderColor = stateConfig.borderColorError;\n background = $lineType === 'outlined' ? stateConfig.backgroundActive : stateConfig.background;\n } else if ($isFocused) {\n borderColor = stateConfig.borderColorActive;\n background = stateConfig.backgroundActive;\n if ($lineType === 'outlined') {\n const size = $size || 'medium';\n const sizeConfig = typeConfig?.[size];\n boxShadow = sizeConfig?.boxShadowActive || 'none';\n }\n }\n\n if ($lineType === 'borderless') {\n // borderless type: no border, no boxShadow\n return `\n border: none;\n background: transparent;\n box-shadow: none;\n\n &:hover:not(:disabled) {\n background: transparent;\n }\n `;\n } else if ($lineType === 'outlined') {\n return `\n border: 1px solid ${borderColor};\n background: ${background};\n box-shadow: ${boxShadow};\n\n &:hover:not(:disabled) {\n ${\n !$disabled && !$readOnly && !$isFocused\n ? `\n border-color: ${stateConfig.borderColorHover};\n background: ${stateConfig.backgroundHover};\n `\n : ''\n }\n }\n `;\n } else {\n // underlined type\n return `\n background: ${background};\n border-bottom: 1px solid ${$error ? borderColor : $isFocused ? borderColor : 'transparent'};\n\n &:hover:not(:disabled) {\n ${\n !$disabled && !$isFocused && !$error\n ? `\n border-bottom-color: ${stateConfig.borderColorHover};\n `\n : ''\n }\n }\n `;\n }\n }}\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n opacity: ${$disabled ? '0.6' : '1'};\n `}\n`;\n\nconst ContentBlock = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n}>`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n padding: ${sizeConfig.contentPadding || '0'};\n gap: ${sizeConfig.gap || '4px'};\n `;\n }}\n`;\n\nconst StyledInput = styled.input<{\n $size: InputSize;\n $lineType: LineType;\n $disabled: boolean;\n $readOnly: boolean;\n $isFocused: boolean;\n}>`\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n min-width: 0;\n padding: 0;\n margin: 0;\n font-family: inherit;\n\n ${({ $size, $lineType, $disabled, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n const stateConfig = typeConfig?.state;\n if (!sizeConfig || !stateConfig) return '';\n\n // textColorNormal is used for all states except disabled\n const textColor = $disabled ? stateConfig.textColorDisabled : stateConfig.textColorNormal;\n\n return `\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n color: ${textColor};\n `;\n }}\n\n &::placeholder {\n color: ${({ $isFocused, $lineType, theme }) => {\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const stateConfig = typeConfig?.state;\n return $isFocused\n ? stateConfig?.placeholderColorHover || 'rgba(65, 70, 75, 0.3)'\n : stateConfig?.placeholderColorNormal || 'rgba(65, 70, 75, 0.3)';\n }};\n }\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n `}\n\n ${({ $readOnly }) =>\n $readOnly &&\n `\n cursor: default;\n `}\n`;\n\nconst PrefixNode = styled.div<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\nconst SuffixNode = styled.div<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\nconst ClearButton = styled.button<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n margin: 0;\n outline: none;\n transition: opacity 0.2s ease;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n const clearIconSize = sizeConfig?.clearIcon?.size;\n if (!clearIconSize) return '';\n\n return `\n width: ${clearIconSize.width};\n height: ${clearIconSize.height};\n\n svg {\n width: ${clearIconSize.width};\n height: ${clearIconSize.height};\n }\n `;\n }}\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n`;\n\nconst AlertLine = styled.div`\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 1px;\n background-color: ${({ theme }) => theme.colors?.palettes?.red?.['6'] || '#E95555'};\n`;\n\nconst DefaultClearIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M8.00148 8.56042L11.3306 11.8884L11.8961 11.3226L8.56774 7.99531L11.8641 4.70566L11.299 4.1394L8.00196 7.42971L4.70055 4.12939L4.13495 4.69517L7.4357 7.99483L4.10889 11.3149L4.674 11.8812L8.00148 8.56042Z\"\n fill=\"#41464B\"\n fillOpacity=\"0.6\"\n />\n </svg>\n);\n\n/**\n * Input Component\n *\n * @example\n * // Basic outlined input (default)\n * <Input placeholder=\"Enter text\" />\n *\n * @example\n * // Underlined input\n * <Input lineType=\"underlined\" placeholder=\"Enter text\" />\n *\n * @example\n * // Input with prefix and suffix\n * <Input prefixNode={<SearchIcon />} suffixNode={<Icon />} />\n *\n * @example\n * // Input with clearable\n * <Input clearable onClear={() => console.log('cleared')} />\n *\n * @example\n * // Input with error state\n * <Input error placeholder=\"Enter text\" />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n lineType = 'outlined',\n size = 'medium',\n error = false,\n disabled = false,\n readOnly = false,\n prefixNode,\n suffixNode,\n clearable = false,\n onClear,\n clearIcon,\n className,\n style,\n inputClassName,\n inputStyle,\n onFocus,\n onBlur,\n value,\n onChange,\n ...rest\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState(\n value !== undefined ? value : (rest.defaultValue as string) || ''\n );\n\n // Controlled vs Uncontrolled\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const hasValue = !!currentValue && String(currentValue).length > 0;\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isControlled) {\n setInternalValue('');\n }\n\n // Trigger onChange event for controlled components\n if (onChange && ref && 'current' in ref && ref.current) {\n const syntheticEvent = {\n target: { ...ref.current, value: '' },\n currentTarget: ref.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n\n onClear?.();\n };\n\n // Show clear button when clearable and has value\n const shouldShowClearButton = clearable && hasValue && !disabled && !readOnly;\n const clearButtonNode = shouldShowClearButton ? (\n <ClearButton\n type=\"button\"\n $size={size}\n $lineType={lineType}\n onClick={handleClear}\n aria-label=\"Clear\"\n tabIndex={-1}\n >\n {clearIcon || <DefaultClearIcon />}\n </ClearButton>\n ) : null;\n\n return (\n <InputContainer $size={size} $lineType={lineType} className={className} style={style}>\n <InputWrapper\n $size={size}\n $lineType={lineType}\n $error={error}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n >\n {prefixNode && (\n <PrefixNode $size={size} $lineType={lineType}>\n {prefixNode}\n </PrefixNode>\n )}\n <ContentBlock $size={size} $lineType={lineType}>\n <StyledInput\n ref={ref}\n $size={size}\n $lineType={lineType}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n disabled={disabled}\n readOnly={readOnly}\n value={currentValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={inputClassName}\n style={inputStyle}\n {...rest}\n />\n {clearButtonNode}\n </ContentBlock>\n {suffixNode && (\n <SuffixNode $size={size} $lineType={lineType}>\n {suffixNode}\n </SuffixNode>\n )}\n </InputWrapper>\n {lineType === 'underlined' && error && <AlertLine />}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import React, { forwardRef } from 'react';\nimport { styled } from '../utils/styled';\nimport { Input, InputProps } from './Input';\nimport { Icon } from '../Icon';\nimport { getGlobalTheme } from '../utils/context';\n\nexport interface SearchInputProps extends Omit<InputProps, 'prefixNode' | 'suffixNode'> {\n /**\n * Line type (outlined or underlined)\n */\n lineType?: 'outlined' | 'underlined';\n /**\n * SearchInput size\n */\n size?: 'mini' | 'small' | 'medium' | 'large';\n /**\n * Whether to show the clear button when input has value\n */\n clearable?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom search icon (URL string or React node)\n */\n searchIcon?: string | React.ReactNode;\n}\n\nconst SearchIconWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors?.palettes?.transparency?.['100'] || '#41464b'};\n }\n`;\n\nconst DefaultSearchIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M7.92359 14.0468C9.40656 14.0468 10.7664 13.5197 11.826 12.6426L13.0034 13.8199C12.8604 14.2604 12.9638 14.7635 13.3138 15.1134L14.4012 16.2008C14.8981 16.6977 15.7036 16.6977 16.2004 16.2008C16.6973 15.704 16.6973 14.8985 16.2004 14.4017L15.113 13.3143C14.7549 12.9562 14.2364 12.8562 13.7887 13.0143L12.6234 11.849C13.5122 10.7862 14.0471 9.41727 14.0471 7.92343C14.0471 4.54158 11.3055 1.80005 7.92359 1.80005C4.54165 1.80005 1.80005 4.54158 1.80005 7.92343C1.80005 11.3053 4.54165 14.0468 7.92359 14.0468ZM7.92359 12.6968C10.56 12.6968 12.6971 10.5597 12.6971 7.92343C12.6971 5.2872 10.56 3.15005 7.92359 3.15005C5.2872 3.15005 3.15005 5.2872 3.15005 7.92343C3.15005 10.5597 5.2872 12.6968 7.92359 12.6968Z\" fill=\"#41464B\"/>\n </svg>\n);\n\n\n/**\n * SearchInput Component\n *\n * A wrapper around Input component with search icon and clear functionality\n *\n * @example\n * // Basic search input\n * <SearchInput placeholder=\"Search...\" />\n *\n * @example\n * // Underlined search input\n * <SearchInput lineType=\"underlined\" placeholder=\"Search...\" />\n *\n * @example\n * // Search input without clearable\n * <SearchInput clearable={false} placeholder=\"Search...\" />\n *\n * @example\n * // Different sizes\n * <SearchInput size=\"small\" placeholder=\"Search...\" />\n * <SearchInput size=\"medium\" placeholder=\"Search...\" />\n * <SearchInput size=\"large\" placeholder=\"Search...\" />\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n lineType = 'outlined',\n size = 'medium',\n clearable = true,\n onClear,\n searchIcon,\n ...rest\n },\n ref\n ) => {\n // Render search icon by priority:\n // 1. props.searchIcon (string or ReactNode)\n // 2. theme.components.inputSearch.searchIcon.url\n // 3. DefaultSearchIcon\n const getSearchIconElement = () => {\n // Priority 1: props.searchIcon\n if (searchIcon !== undefined) {\n if (typeof searchIcon === 'string') {\n return <Icon src={searchIcon} />;\n }\n return searchIcon;\n }\n\n // Priority 2: theme icon\n const theme = getGlobalTheme();\n const themeIconUrl = theme?.components?.inputSearch?.searchIcon?.url;\n if (themeIconUrl) {\n return <Icon src={themeIconUrl} />;\n }\n\n // Priority 3: default icon\n return <DefaultSearchIcon />;\n };\n\n const prefixNode = (\n <SearchIconWrapper>\n {getSearchIconElement()}\n </SearchIconWrapper>\n );\n\n return (\n <Input\n ref={ref}\n lineType={lineType}\n size={size}\n prefixNode={prefixNode}\n clearable={clearable}\n onClear={onClear}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = 'SearchInput';\n\n","// React is required for JSX transform (jsx: \"react\")\nimport React, { forwardRef } from 'react';\nimport { Input, InputProps } from './Input';\n\n/**\n * UnderlinedInput Component\n *\n * @deprecated Use <Input lineType=\"underlined\" /> instead\n *\n * This component is a simple alias for Input with lineType=\"underlined\"\n * and will be removed in a future version.\n *\n * @example\n * // Old way (deprecated)\n * <UnderlinedInput placeholder=\"Search...\" />\n *\n * // New way (recommended)\n * <Input lineType=\"underlined\" placeholder=\"Search...\" />\n */\nexport const UnderlinedInput = forwardRef<HTMLInputElement, Omit<InputProps, 'lineType'>>(\n (props, ref) => {\n // React is used implicitly by JSX transform\n void React;\n return <Input {...props} lineType=\"underlined\" ref={ref} />;\n }\n);\n\nUnderlinedInput.displayName = 'UnderlinedInput';\n\nexport type { InputProps as UnderlinedInputProps };\n","export { Toast } from './Toast';\nexport type { ToastProps } from './Toast';\n\nexport { ToastContainer, useToast } from './ToastContainer';\nexport type { ToastContainerProps } from './ToastContainer';\n\nexport { toast } from './toastManager';\nexport type { ToastContainerConfig } from './toastManager';\n\n","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\nimport { Toast, ToastProps } from './Toast';\n\ninterface ToastItem extends Omit<ToastProps, 'onClose'> {\n id: string;\n}\n\n\n\ninterface ToastContextValue {\n showToast: (props: Omit<ToastProps, 'onClose'>) => string;\n hideToast: (id: string) => void;\n success: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n info: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n error: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n warn: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n loading: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\ninterface ToastWrapperProps {\n $placement: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\n}\n\nconst ToastWrapper = styled.div<ToastWrapperProps>`\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n\n > * {\n pointer-events: auto;\n }\n\n ${({ $placement, theme }) => {\n const offset = theme.components?.toast?.offset || { vertical: '24px', horizontal: '24px' };\n const vertical = offset.vertical || '24px';\n const horizontal = offset.horizontal || '24px';\n\n const styles: Record<string, string> = {\n 'top-right': `\n top: ${vertical};\n right: ${horizontal};\n `,\n 'top-left': `\n top: ${vertical};\n left: ${horizontal};\n `,\n 'top-center': `\n top: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n 'bottom-right': `\n bottom: ${vertical};\n right: ${horizontal};\n `,\n 'bottom-left': `\n bottom: ${vertical};\n left: ${horizontal};\n `,\n 'bottom-center': `\n bottom: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n };\n\n return styles[$placement] || styles['top-right'];\n }}\n`;\n\nexport interface ToastContainerProps {\n placement?: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\n /**\n * Maximum number of toasts to show at once\n */\n maxCount?: number;\n /**\n * Default duration for auto-close (ms)\n */\n defaultDuration?: number;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * ToastContainer Component\n *\n * Provides toast context and manages toast display\n *\n * @example\n * <ToastContainer>\n * <App />\n * </ToastContainer>\n */\nexport const ToastContainer: React.FC<ToastContainerProps> = ({\n placement = 'top-right',\n maxCount = 5,\n defaultDuration = 3000,\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const showToast = useCallback((props: Omit<ToastProps, 'onClose'>) => {\n const id = `toast-${Date.now()}-${Math.random()}`;\n const newToast: ToastItem = {\n ...props,\n id,\n duration: props.duration ?? defaultDuration,\n };\n\n setToasts((prev) => {\n const updated = [...prev, newToast];\n // Limit to maxCount\n return updated.slice(-maxCount);\n });\n\n return id;\n }, [maxCount, defaultDuration]);\n\n const hideToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const success = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'success', message });\n }, [showToast]);\n\n const info = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'info', message });\n }, [showToast]);\n\n const error = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'error', message });\n }, [showToast]);\n\n const warn = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'warn', message });\n }, [showToast]);\n\n const loading = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'loading', message });\n }, [showToast]);\n\n const contextValue: ToastContextValue = {\n showToast,\n hideToast,\n success,\n info,\n error,\n warn,\n loading,\n };\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <ToastWrapper $placement={placement}>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n onClose={() => hideToast(toast.id)}\n />\n ))}\n </ToastWrapper>\n </ToastContext.Provider>\n );\n};\n\n/**\n * Hook to access toast methods\n *\n * @example\n * const toast = useToast();\n * toast.success('Operation successful!');\n * toast.error('Something went wrong');\n */\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within ToastContainer');\n }\n return context;\n};\n\nToastContainer.displayName = 'ToastContainer';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface TabItem {\n /**\n * Unique key for the tab\n */\n key: string;\n /**\n * Tab label\n */\n label: string;\n /**\n * Whether the tab is disabled\n */\n disabled?: boolean;\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n}\n\nexport interface TabsProps {\n /**\n * Tab items\n */\n items: TabItem[];\n /**\n * Active tab key\n */\n activeKey?: string;\n /**\n * Default active tab key\n */\n defaultActiveKey?: string;\n /**\n * Tab variant\n */\n variant?: 'line' | 'card';\n /**\n * Tab size\n */\n size?: 'large';\n /**\n * Callback when tab changes\n */\n onChange?: (key: string) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst TabContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TabList = styled.div<{\n $variant: 'line' | 'card';\n}>`\n display: flex;\n align-items: center;\n position: relative;\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n return `\n gap: ${variantConfig.layout.gap};\n `;\n }}\n\n ${({ $variant }) => {\n if ($variant === 'line') {\n return `\n border-bottom: 2px solid rgba(65, 70, 75, 0.1);\n `;\n }\n return '';\n }}\n`;\n\nconst TabItem = styled.button<{\n $variant: 'line' | 'card';\n $active: boolean;\n $disabled: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n border: none;\n outline: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n transition: all 0.2s ease;\n position: relative;\n white-space: nowrap;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.tab.large;\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n font-weight: ${sizeConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, $active, $disabled, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n if ($disabled) {\n return `\n background: ${itemConfig.backgroundDisabled};\n border-color: ${itemConfig.borderColorDisabled};\n color: ${itemConfig.colorDisabled};\n `;\n }\n\n if ($active) {\n return `\n background: ${itemConfig.backgroundActive};\n border-color: ${itemConfig.borderColorActive};\n color: ${itemConfig.colorActive};\n `;\n }\n\n return `\n background: ${itemConfig.background};\n border-color: ${itemConfig.borderColor};\n color: ${itemConfig.color};\n `;\n }}\n\n ${({ $variant, $disabled, theme }) => {\n if ($disabled) return '';\n\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n return `\n &:hover {\n background: ${itemConfig.backgroundHover};\n border-color: ${itemConfig.borderColorHover};\n color: ${itemConfig.colorHover};\n }\n `;\n }}\n\n ${({ $variant, $active }) => {\n if ($variant === 'line' && $active) {\n return `\n &::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n right: 0;\n height: 2px;\n background: currentColor;\n }\n `;\n }\n\n if ($variant === 'card') {\n return `\n border: 1px solid;\n ${\n $active\n ? `\n border-bottom-color: transparent;\n margin-bottom: -1px;\n `\n : ''\n }\n `;\n }\n\n return '';\n }}\n`;\n\n/**\n * Tab Component\n *\n * A tab component with line and card variants\n *\n * @example\n * <Tab\n * items={[\n * { key: '1', label: 'Tab 1' },\n * { key: '2', label: 'Tab 2' },\n * ]}\n * defaultActiveKey=\"1\"\n * />\n */\nexport const Tabs: React.FC<TabsProps> = ({\n items,\n activeKey: controlledActiveKey,\n defaultActiveKey,\n variant = 'line',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _size = 'large',\n onChange,\n className,\n style,\n}) => {\n const [internalActiveKey, setInternalActiveKey] = useState<string>(\n controlledActiveKey ?? defaultActiveKey ?? items[0]?.key ?? ''\n );\n\n const activeKey = controlledActiveKey !== undefined ? controlledActiveKey : internalActiveKey;\n\n const handleTabClick = useCallback(\n (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n\n onChange?.(key);\n },\n [controlledActiveKey, onChange]\n );\n\n return (\n <TabContainer className={className} style={style}>\n <TabList $variant={variant} role=\"tablist\">\n {items.map((item) => (\n <TabItem\n key={item.key}\n $variant={variant}\n $active={activeKey === item.key}\n $disabled={item.disabled || false}\n onClick={() => handleTabClick(item.key, item.disabled)}\n role=\"tab\"\n aria-selected={activeKey === item.key}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n type=\"button\"\n >\n {item.icon && <span>{item.icon}</span>}\n {item.label}\n </TabItem>\n ))}\n </TabList>\n </TabContainer>\n );\n};\n\nTabs.displayName = 'Tab';\n","import { createGlobalStyle } from 'styled-components';\nimport { getGlobalTheme } from '../utils/context';\n\nconst theme = getGlobalTheme()\n\n// Arrow size is 5px, tooltip needs space for the arrow to display\nconst arrowSize = 5;\nconst paddingDistance = `${arrowSize}px`; // 8px - space for arrow (5px) + gap (3px)\nconst arrowDistance = `${arrowSize}px`; // 3px - arrow positioned to overlap with content slightly\n\n// Tooltip global styles - includes base styles and all variant/size combinations\nexport const TooltipGlobalStyles = createGlobalStyle`\n /* Base tooltip container */\n .od-tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n visibility: visible;\n font-size: 12px;\n line-height: 1.5;\n opacity: 1;\n }\n\n .od-tooltip-hidden {\n display: none;\n }\n\n /* Tooltip content wrapper */\n .od-tooltip-content {\n position: relative;\n }\n\n /* Tooltip inner content */\n .od-tooltip-inner {\n padding: 6px 8px;\n text-align: left;\n white-space: nowrap;\n min-height: unset;\n text-align: center;\n }\n\n /* Tooltip arrow base */\n .od-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n\n .od-tooltip-placement-top,\n .od-tooltip-placement-topLeft,\n .od-tooltip-placement-topRight {\n padding-bottom: ${paddingDistance};\n }\n\n .od-tooltip-placement-right,\n .od-tooltip-placement-rightTop,\n .od-tooltip-placement-rightBottom {\n padding-left: ${paddingDistance};\n }\n\n .od-tooltip-placement-bottom,\n .od-tooltip-placement-bottomLeft,\n .od-tooltip-placement-bottomRight {\n padding-top: ${paddingDistance};\n }\n\n .od-tooltip-placement-left,\n .od-tooltip-placement-leftTop,\n .od-tooltip-placement-leftBottom {\n padding-right: ${paddingDistance};\n }\n\n /* Placement specific adjustments - position arrows close to content edge */\n .od-tooltip-placement-top .od-tooltip-arrow,\n .od-tooltip-placement-topLeft .od-tooltip-arrow,\n .od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n }\n\n .od-tooltip-placement-right .od-tooltip-arrow,\n .od-tooltip-placement-rightTop .od-tooltip-arrow,\n .od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n }\n\n .od-tooltip-placement-left .od-tooltip-arrow,\n .od-tooltip-placement-leftTop .od-tooltip-arrow,\n .od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n }\n\n .od-tooltip-placement-bottom .od-tooltip-arrow,\n .od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n }\n\n /* Alignment adjustments */\n .od-tooltip-placement-topLeft .od-tooltip-arrow,\n .od-tooltip-placement-bottomLeft .od-tooltip-arrow {\n left: 15%;\n }\n\n .od-tooltip-placement-topRight .od-tooltip-arrow,\n .od-tooltip-placement-bottomRight .od-tooltip-arrow {\n right: 15%;\n }\n\n .od-tooltip-placement-rightTop .od-tooltip-arrow,\n .od-tooltip-placement-leftTop .od-tooltip-arrow {\n top: 15%;\n }\n\n .od-tooltip-placement-rightBottom .od-tooltip-arrow,\n .od-tooltip-placement-leftBottom .od-tooltip-arrow {\n bottom: 15%;\n }\n\n .od-tooltip.od-tooltip-zoom-enter,\n .od-tooltip.od-tooltip-zoom-leave {\n display: block;\n }\n\n .od-tooltip-zoom-enter,\n .od-tooltip-zoom-appear {\n opacity: 0;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28);\n animation-play-state: paused;\n }\n\n .od-tooltip-zoom-leave {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05);\n animation-play-state: paused;\n }\n\n .od-tooltip-zoom-enter.od-tooltip-zoom-enter-active,\n .od-tooltip-zoom-appear.od-tooltip-zoom-appear-active {\n animation-name: rcToolTipZoomIn;\n animation-play-state: running;\n }\n\n .od-tooltip-zoom-leave.od-tooltip-zoom-leave-active {\n animation-name: rcToolTipZoomOut;\n animation-play-state: running;\n }\n\n @keyframes rcToolTipZoomIn {\n 0% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n 100% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n }\n\n @keyframes rcToolTipZoomOut {\n 0% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n 100% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n }\n\n /* Black variant */\n .tooltip-variant-black .od-tooltip-inner {\n background: ${() => theme.components.tooltip.black.background};\n border: 1px solid ${() => theme.components.tooltip.black.borderColor};\n color: ${() => theme.components.tooltip.black.color};\n border-radius: ${() => theme.components.tooltip.black.borderRadius};\n padding: ${() => theme.components.tooltip.black.padding};\n box-shadow: ${() => theme.components.tooltip.black.boxShadow};\n font-size: ${() => theme.components.tooltip.black.fontSize};\n line-height: ${() => theme.components.tooltip.black.lineHeight};\n font-weight: ${() => theme.components.tooltip.black.fontWeight};\n max-width: ${() => theme.components.tooltip.black.maxWidth};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-black.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.black.background};\n }\n\n /* White variant - small size */\n .tooltip-variant-white.tooltip-size-small .od-tooltip-inner {\n background: ${() => theme.components.tooltip.white.small.background};\n border: 1px solid ${() => theme.components.tooltip.white.small.borderColor};\n color: ${() => theme.components.tooltip.white.small.color};\n border-radius: ${() => theme.components.tooltip.white.small.borderRadius};\n padding: ${() => theme.components.tooltip.white.small.padding};\n box-shadow: ${() => theme.components.tooltip.white.small.boxShadow};\n font-size: ${() => theme.components.tooltip.white.small.fontSize};\n line-height: ${() => theme.components.tooltip.white.small.lineHeight};\n font-weight: ${() => theme.components.tooltip.white.small.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n /* White variant - large size */\n .tooltip-variant-white.tooltip-size-large .od-tooltip-inner {\n background: ${() => theme.components.tooltip.white.large.background};\n border: 1px solid ${() => theme.components.tooltip.white.large.borderColor};\n color: ${() => theme.components.tooltip.white.large.color};\n border-radius: ${() => theme.components.tooltip.white.large.borderRadius};\n padding: ${() => theme.components.tooltip.white.large.padding};\n box-shadow: ${() => theme.components.tooltip.white.large.boxShadow};\n font-size: ${() => theme.components.tooltip.white.large.fontSize};\n line-height: ${() => theme.components.tooltip.white.large.lineHeight};\n font-weight: ${() => theme.components.tooltip.white.large.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.white.large.borderColor};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.white.large.background};\n }\n`;\n","import React from 'react';\nimport type { ReactElement } from 'react';\nimport type { GlobalStyleComponent } from 'styled-components';\nimport { getGlobalRenderFunction } from './context';\n\nconst injectedStyles = new Set<string>();\n\n/**\n * Style Manager\n *\n * Manages global style injection on demand.\n * Styles are injected only once when first component is used.\n */\nexport const styleManager = {\n /**\n * Inject global styles on demand\n * @param id Unique identifier for the style (e.g., 'od-tooltip-styles')\n * @param StyleComponent The styled component to inject\n */\n inject: (id: string, StyleComponent: React.ComponentType<any> | GlobalStyleComponent<any, any>) => {\n if (injectedStyles.has(id) || typeof document === 'undefined') {\n return;\n }\n\n // Check if already in DOM\n if (document.getElementById(id)) {\n injectedStyles.add(id);\n return;\n }\n\n // Get render function from global context\n const renderFunction = getGlobalRenderFunction();\n if (!renderFunction) {\n console.warn(\n `Style injection failed for \"${id}\": render function not available. ` +\n `Please call initUIConfig() or use UIConfigProvider first.`\n );\n return;\n }\n\n // Create container and inject styles\n const container = document.createElement('div');\n container.id = id;\n document.head.appendChild(container);\n\n // Use global render function for consistency\n // Cast StyleComponent to any to avoid type issues with GlobalStyleComponent\n renderFunction(\n React.createElement(StyleComponent as React.ComponentType<any>) as ReactElement,\n container\n );\n\n injectedStyles.add(id);\n },\n\n /**\n * Check if styles have been injected\n */\n isInjected: (id: string): boolean => {\n return (\n injectedStyles.has(id) ||\n (typeof document !== 'undefined' && !!document.getElementById(id))\n );\n },\n\n /**\n * Reset injected styles (mainly for testing)\n */\n reset: () => {\n injectedStyles.clear();\n },\n};\n","import React, { useEffect } from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip';\nimport 'rc-tooltip/assets/bootstrap.css';\nimport { TooltipGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface TooltipProps extends Omit<Partial<RcTooltipProps>, 'prefixCls'> {\n /**\n * Tooltip content\n */\n content?: React.ReactNode;\n /**\n * Tooltip variant\n */\n variant?: 'black' | 'white';\n /**\n * Tooltip size (only for white variant)\n */\n size?: 'small' | 'large';\n /**\n * Children element that triggers the tooltip\n */\n children: React.ReactElement;\n /**\n * Function to get the container element for the tooltip\n */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n}\n/**\n * Tooltip Component\n *\n * Note: Coverage for this component may appear lower than expected due to\n * styled-components CSS-in-JS template literals (lines 68-200+) which are\n * not properly tracked by V8 coverage. The actual component logic is fully tested.\n *\n * @example\n * // Basic black tooltip\n * <Tooltip content=\"Tooltip text\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with small size\n * <Tooltip content=\"Tooltip text\" variant=\"white\" size=\"small\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with large size\n * <Tooltip content=\"Complex content\" variant=\"white\" size=\"large\">\n * <button>Hover me</button>\n * </Tooltip>\n */\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n variant = 'black',\n size = 'small',\n children,\n placement = 'top',\n trigger = ['hover'],\n overlay,\n overlayClassName,\n getPopupContainer,\n ...rest\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-tooltip-styles', TooltipGlobalStyles);\n }, []);\n\n const overlayContent = React.useMemo(() => <div>{content}</div>, [content]);\n\n // Generate className for variant/size combination\n const variantClass = `tooltip-variant-${variant}`;\n const sizeClass = variant === 'white' ? `tooltip-size-${size}` : '';\n const combinedClassName = [variantClass, sizeClass, overlayClassName].filter(Boolean).join(' ');\n\n const tooltipProps = {\n overlay: overlay ?? overlayContent,\n placement,\n trigger,\n destroyTooltipOnHide: false,\n overlayClassName: combinedClassName,\n ...(getPopupContainer && { getPopupContainer }),\n ...rest,\n };\n\n return (\n <RcTooltip {...tooltipProps} prefixCls=\"od-tooltip\">\n {children}\n </RcTooltip>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n","import React from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface ToolbarButtonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in active state\n */\n active?: boolean;\n /**\n * Icon to display\n */\n icon?: React.ReactNode;\n /**\n * Label text\n */\n label?: string;\n /**\n * Whether to show dropdown arrow\n */\n hasDropdown?: boolean;\n /**\n * Whether the dropdown section is clickable separately\n */\n splitDropdown?: boolean;\n /**\n * Click handler for main button\n */\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Click handler for dropdown section\n */\n onDropdownClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst ToolbarButtonContainer = styled.div<{\n $disabled: boolean;\n $active: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n border: 1px solid;\n border-radius: 2px;\n transition: border-color 0.15s ease;\n box-sizing: border-box;\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n border-color: ${config.border.borderColorDisabled};\n `;\n }\n if ($active) {\n return `\n border-color: ${config.border.borderColorActive};\n\n ${Divider} {\n background-color: ${config.border.borderColorActive};\n }\n `;\n }\n return `\n border-color: ${config.border.borderColor};\n\n &:hover {\n border-color: ${config.border.borderColorHover};\n box-shadow: ${config.boxShadow.boxShadowHover};\n ${Divider} {\n background-color: ${config.border.borderColorHover};\n }\n }\n\n button:active {\n box-shadow: ${config.boxShadow.boxShadowClick};\n ${Divider} {\n background-color: ${config.border.borderColorClick};\n }\n }\n `;\n }}\n`;\n\nconst MainButton = styled.button<{\n $disabled: boolean;\n $active: boolean;\n $hasLabel: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n cursor: pointer;\n outline: none;\n transition: background-color 0.15s ease;\n\n ${({ $hasLabel, theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n padding: ${$hasLabel ? config.layout.content.padding : config.layout.padding};\n `;\n }}\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n cursor: not-allowed;\n background: ${config.background.backgroundDisabled};\n `;\n }\n if ($active) {\n return `\n background: ${config.background.backgroundActive};\n `;\n }\n return `\n background: ${config.background.background};\n\n &:hover {\n background: ${config.background.backgroundHover};\n }\n\n &:active {\n background: ${config.background.backgroundClick};\n }\n `;\n }}\n`;\n\nconst IconWrapper = styled.span<{ $disabled: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n width: ${config.layout.content.iconSize.width};\n height: ${config.layout.content.iconSize.height};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n`;\n\nconst LabelText = styled.span<{ $disabled: boolean }>`\n font-family: 'PingFang SC', sans-serif;\n white-space: nowrap;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n font-size: ${config.typography.fontSize};\n font-weight: ${config.typography.fontWeight};\n line-height: 20px;\n padding: ${config.layout.content.padding};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n`;\n\nconst DropdownButton = styled.button<{\n $disabled: boolean;\n $active: boolean;\n $split: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n border: none;\n transition: background-color 0.15s ease;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n padding: 5px 0;\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n cursor: not-allowed;\n background: ${config.background.backgroundDisabled};\n `;\n }\n return `\n background: ${config.background.background};\n\n &:hover {\n background: ${config.background.backgroundHover};\n }\n\n &:active {\n background: ${config.background.backgroundClick};\n }\n `;\n }}\n`;\n\nconst DropdownArrow = styled.span<{ $disabled: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n width: ${config.layout.dropdown.iconSize.width};\n height: ${config.layout.dropdown.iconSize.height};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n\n svg {\n }\n`;\n\nconst Divider = styled.div<{\n $disabled: boolean;\n $active: boolean;\n}>`\n width: 1px;\n transition: background-color 0.15s ease;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n `;\n }}\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n background-color: ${config.border.borderColorDisabled};\n `;\n }\n if ($active) {\n return `\n background-color: ${config.border.borderColorActive};\n `;\n }\n return `\n background-color: ${config.border.borderColor};\n `;\n }}\n`;\n\nconst ArrowIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M8.1858 9.79353C8.08649 9.90387 7.91346 9.90387 7.81415 9.79353L4.77549 6.41724C4.6307 6.25636 4.74487 6 4.96132 6L11.0386 6C11.2551 6 11.3693 6.25636 11.2245 6.41724L8.1858 9.79353Z\"\n fill=\"#41464B\"\n fillOpacity=\"0.6\"\n />\n </svg>\n);\n\n/**\n * ToolbarButton Component\n *\n * A toolbar button with optional icon, label, and dropdown functionality\n *\n * @example\n * // Icon only button\n * <ToolbarButton icon={<Icon />} />\n *\n * @example\n * // Button with label and dropdown\n * <ToolbarButton icon={<Icon />} label=\"Format\" hasDropdown />\n *\n * @example\n * // Button with split dropdown\n * <ToolbarButton\n * icon={<Icon />}\n * label=\"Format\"\n * hasDropdown\n * splitDropdown\n * onClick={handleClick}\n * onDropdownClick={handleDropdownClick}\n * />\n */\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n disabled = false,\n active = false,\n icon,\n label,\n hasDropdown = false,\n splitDropdown = false,\n onClick,\n onDropdownClick,\n className,\n style,\n}) => {\n const handleMainClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n };\n\n const handleDropdownClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n e.stopPropagation();\n onDropdownClick?.(e);\n };\n\n // Single click area (no split dropdown)\n if (!splitDropdown && hasDropdown) {\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n <DropdownArrow $disabled={disabled}>\n <ArrowIcon />\n </DropdownArrow>\n </MainButton>\n </ToolbarButtonContainer>\n );\n }\n\n // Split dropdown (two click areas)\n if (splitDropdown && hasDropdown) {\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n </MainButton>\n\n <Divider $disabled={disabled} $active={active} />\n\n <DropdownButton\n $disabled={disabled}\n $active={active}\n $split={true}\n onClick={handleDropdownClick}\n disabled={disabled}\n >\n <DropdownArrow $disabled={disabled}>\n <ArrowIcon />\n </DropdownArrow>\n </DropdownButton>\n </ToolbarButtonContainer>\n );\n }\n\n // Simple button (no dropdown)\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n </MainButton>\n </ToolbarButtonContainer>\n );\n};\n\nToolbarButton.displayName = 'ToolbarButton';\n","import React, { forwardRef } from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\n\ntype DropdownButtonSize = 'large' | 'medium';\ntype DropdownButtonVariant = 'framed' | 'frameless';\n\nexport interface DropdownButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n /**\n * Button variant\n * - framed: with border (40px large)\n * - frameless: without border (28px medium)\n */\n variant?: DropdownButtonVariant;\n /**\n * Button size\n */\n size?: DropdownButtonSize;\n /**\n * Display value/label\n */\n value?: string;\n /**\n * Placeholder when no value\n */\n placeholder?: string;\n /**\n * Optional icon (URL string or ReactNode)\n */\n icon?: string | React.ReactNode;\n /**\n * Custom indicator/arrow icon\n */\n indicatorIcon?: React.ReactNode;\n /**\n * Whether the dropdown is open (controls arrow rotation)\n */\n open?: boolean;\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Error state\n */\n error?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n\n /**\n * Custom text style\n */\n textStyle?: React.CSSProperties;\n}\n\nconst DropdownButtonContainer = styled.button<{\n $variant: DropdownButtonVariant;\n $size: DropdownButtonSize;\n $disabled: boolean;\n $open: boolean;\n $error: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n border: none;\n outline: none;\n box-sizing: border-box;\n transition: all 0.2s ease;\n font-family: 'PingFang SC', sans-serif;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n gap: ${sizeConfig.gap};\n font-size: ${sizeConfig.fontSize};\n border-radius: ${sizeConfig.borderRadius};\n `;\n }}\n\n ${({ $variant, $disabled, $error, theme }) => {\n const config = theme.components?.dropdownButton;\n if (!config) return '';\n\n // Background\n let background = config.background.normal;\n if ($disabled) {\n background = config.background.disabled;\n }\n\n // Border for framed variant\n let border = 'none';\n\n if ($variant === 'framed') {\n const borderColor = $error\n ? theme.colors?.palettes?.red?.['6']\n : theme.colors?.palettes?.transparency?.['10'];\n border = `1px solid ${borderColor}`;\n }\n\n // Text color\n const color = $disabled ? config.color.disabled : config.color.normal;\n\n return `\n background: ${background};\n border: ${border};\n color: ${color};\n\n &:hover:not(:disabled) {\n background: ${config.background.hover};\n ${\n $variant === 'framed' && !$error\n ? `\n border-color: ${theme.colors?.palettes?.transparency?.['20']};\n `\n : ''\n }\n }\n\n &:active:not(:disabled) {\n background: ${config.background.active};\n ${\n $variant === 'framed' && !$error\n ? `\n border-color: ${theme.colors?.palettes?.transparency?.['30']};\n `\n : ''\n }\n }\n `;\n }}\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n `}\n`;\n\nconst IconWrapper = styled.div<{ $size: DropdownButtonSize }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n\n ${({ theme }) => {\n const config = theme.components?.dropdownButton;\n return `\n color: ${config?.color?.normal || '#41464b'};\n `;\n }}\n`;\n\nconst TextContent = styled.div<{ $disabled: boolean; $hasValue: boolean }>`\n flex: 1;\n min-width: 0; /* Important: allows flex item to shrink below content size */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n line-height: 20px;\n\n ${({ $hasValue, $disabled, theme }) => {\n const config = theme.components?.dropdownButton;\n const color = $disabled ? config?.color?.disabled : config?.color?.normal;\n\n return `\n color: ${color};\n ${!$hasValue ? `opacity: 0.3;` : ''}\n `;\n }}\n`;\n\nconst IndicatorWrapper = styled.div<{\n $size: DropdownButtonSize;\n $open: boolean;\n $disabled: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n width: ${sizeConfig.indicatorSize.width};\n height: ${sizeConfig.indicatorSize.height};\n `;\n }}\n\n ${({ $open, theme }) => {\n const config = theme.components?.dropdownButton?.indicator;\n const rotate = config?.rotate || '90deg';\n\n return `\n transform: rotate(${$open ? rotate : 0});\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components?.dropdownButton?.indicator?.opacity;\n const opacity = $disabled ? config?.disabled || '0.3' : config?.normal || '1';\n\n return `\n opacity: ${opacity};\n color: ${theme.components?.dropdownButton?.color?.normal || '#41464b'};\n `;\n }}\n`;\n\nconst DefaultArrowIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M11.5975 8.81186C11.7113 8.91146 11.7113 9.08854 11.5975 9.18814L7.72713 12.5747C7.56548 12.7161 7.3125 12.6013 7.3125 12.3866L7.3125 5.61344C7.3125 5.39865 7.56548 5.28386 7.72713 5.4253L11.5975 8.81186Z\"\n fill=\"#41464B\"\n />\n </svg>\n);\n\n/**\n * DropdownButton Component\n *\n * A button component for triggering dropdown menus\n *\n * @example\n * // Framed dropdown button (with border, 40px)\n * <DropdownButton variant=\"framed\" value=\"Option 1\" />\n *\n * @example\n * // Frameless dropdown button (no border, 28px)\n * <DropdownButton variant=\"frameless\" value=\"Option 1\" />\n *\n * @example\n * // With icon\n * <DropdownButton icon={<CustomIcon />} value=\"Option 1\" />\n *\n * @example\n * // Open state (arrow rotated)\n * <DropdownButton open value=\"Option 1\" />\n */\nexport const DropdownButton = forwardRef<HTMLButtonElement, DropdownButtonProps>(\n (\n {\n variant = 'framed',\n size,\n value,\n placeholder = 'Select...',\n icon,\n indicatorIcon,\n open = false,\n disabled = false,\n error = false,\n className,\n style,\n textStyle,\n onClick,\n ...rest\n },\n ref\n ) => {\n // Auto-determine size based on variant if not specified\n const effectiveSize = size || (variant === 'framed' ? 'large' : 'medium');\n const hasValue = !!value;\n\n // Render icon with priority: props.icon (string or ReactNode)\n const getIconElement = () => {\n if (!icon) return null;\n\n if (typeof icon === 'string') {\n return <Icon src={icon} />;\n }\n return icon;\n };\n\n const iconElement = getIconElement();\n\n return (\n <DropdownButtonContainer\n ref={ref}\n type=\"button\"\n $variant={variant}\n $size={effectiveSize}\n $disabled={disabled}\n $open={open}\n $error={error}\n disabled={disabled}\n onClick={onClick}\n className={className}\n style={style}\n {...rest}\n >\n {iconElement && <IconWrapper $size={effectiveSize}>{iconElement}</IconWrapper>}\n\n <TextContent $disabled={disabled} $hasValue={hasValue} style={textStyle}>\n {value || placeholder}\n </TextContent>\n\n <IndicatorWrapper $size={effectiveSize} $open={open} $disabled={disabled}>\n {indicatorIcon || <DefaultArrowIcon />}\n </IndicatorWrapper>\n </DropdownButtonContainer>\n );\n }\n);\n\nDropdownButton.displayName = 'DropdownButton';\n","import React, { useState, useMemo, useEffect } from 'react';\nimport RcMenu, { MenuItem as RcMenuItem, SubMenu as RcSubMenu, Divider as RcDivider, ItemGroup as RcItemGroup } from 'rc-menu';\nimport VirtualList from 'rc-virtual-list';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\nimport { Input } from '../Input';\nimport 'rc-menu/assets/index.css';\nimport { MenuGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface MenuItem {\n type?: 'item';\n key: string;\n label: string;\n description?: string; // Right-aligned text (shortcuts like \"Cmd+Ctrl+C\")\n icon?: string | React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n selectable?: boolean; // Whether this item can be selected (shows checkmark)\n children?: MenuItem[]; // SubMenu items\n onClick?: (key: string) => void;\n}\n\nexport interface MenuGroup {\n type: 'group';\n key: string;\n label: string;\n children: MenuItem[];\n}\n\nexport interface MenuDivider {\n type: 'divider';\n key: string;\n}\n\nexport type MenuItemType = MenuItem | MenuGroup | MenuDivider;\n\nexport interface MenuProps {\n /**\n * Menu items\n */\n items: MenuItemType[];\n /**\n * Currently selected key(s)\n */\n selectedKeys?: string[];\n /**\n * Open submenu keys (controlled)\n */\n openKeys?: string[];\n /**\n * Menu size\n */\n size?: 'medium' | 'large';\n /**\n * Whether to show search box\n */\n searchable?: boolean;\n /**\n * Search placeholder\n */\n searchPlaceholder?: string;\n /**\n * Max height for scrolling\n */\n maxHeight?: number;\n /**\n * Enable virtual scrolling\n */\n virtual?: boolean;\n /**\n * Whether to always reserve space for active icon (for description alignment)\n */\n reserveActiveIconSpace?: boolean;\n /**\n * Select handler\n */\n onSelect?: (key: string) => void;\n /**\n * Search handler\n */\n onSearch?: (value: string) => void;\n /**\n * Open keys change handler\n */\n onOpenChange?: (keys: string[]) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst MenuContainer = styled.div`\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n min-width: 220px;\n\n ${({ theme }) => {\n const dropdownConfig = theme.components?.dropdown;\n const menuConfig = theme.components?.menu;\n\n return `\n background: ${dropdownConfig?.background || '#fff'};\n border: ${menuConfig?.border?.width || '1px'} solid ${menuConfig?.border?.color || 'rgba(65, 70, 75, 0.1)'};\n border-radius: ${menuConfig?.border?.radius || '4px'};\n box-shadow: ${dropdownConfig?.boxShadow || '0 2px 8px rgba(0, 0, 0, 0.15)'};\n `;\n }}\n\n /* Ensure virtual list container has proper width */\n .rc-virtual-list {\n width: 100%;\n }\n\n .rc-virtual-list-holder {\n width: 100%;\n }\n\n .rc-virtual-list-holder-inner {\n width: 100%;\n }\n`;\n\nconst SearchBoxContainer = styled.div`\n padding: 8px 12px;\n border-bottom: 1px solid ${({ theme }) => theme.colors?.palettes?.transparency?.['10']};\n`;\n\nconst SearchIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M7.33333 12.6667C10.2789 12.6667 12.6667 10.2789 12.6667 7.33333C12.6667 4.38781 10.2789 2 7.33333 2C4.38781 2 2 4.38781 2 7.33333C2 10.2789 4.38781 12.6667 7.33333 12.6667Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 14L11.1 11.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// MenuItem content wrapper\nconst MenuItemContent = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n width: 100%;\n\n ${({ theme }) => {\n const config = theme.components?.menu?.menuItem;\n return `\n gap: ${config?.layout?.gap || '8px'};\n `;\n }}\n`;\n\n// Icon container\nconst IconContainer = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const iconSize = theme.components?.menu?.menuItem?.icon?.size;\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n\n svg, img {\n width: 100%;\n height: 100%;\n }\n `;\n }}\n`;\n\n// Content block (label + description, two-end alignment)\nconst ContentBlock = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-width: 0;\n`;\n\n// Label text\nconst LabelText = styled.div<{ $size: 'medium' | 'large'; $disabled: boolean }>`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: 20px;\n\n ${({ $size, $disabled, theme }) => {\n const config = theme.components?.menu?.menuItem;\n const sizeConfig = config?.size?.[$size];\n const colorConfig = config?.label?.color;\n\n const fontSize = sizeConfig?.label?.fontSize || '13px';\n const color = $disabled\n ? (colorConfig?.disabled || 'rgba(65, 70, 75, 0.3)')\n : (colorConfig?.normal || '#41464b');\n\n return `\n font-size: ${fontSize};\n color: ${color};\n `;\n }}\n`;\n\n// Description text (shortcuts, right-aligned)\nconst DescriptionText = styled.div<{ $size: 'medium' | 'large'; $disabled: boolean }>`\n flex: 0 0 auto;\n white-space: nowrap;\n line-height: 20px;\n text-align: right;\n\n ${({ $size, $disabled, theme }) => {\n const config = theme.components?.menu?.menuItem;\n const sizeConfig = config?.size?.[$size];\n const colorConfig = config?.description?.color;\n\n const fontSize = sizeConfig?.description?.fontSize || '10px';\n const color = $disabled\n ? (colorConfig?.disabled || 'rgba(65, 70, 75, 0.3)')\n : (colorConfig?.normal || 'rgba(65, 70, 75, 0.6)');\n\n return `\n font-size: ${fontSize};\n color: ${color};\n `;\n }}\n`;\n\n// Selected checkmark icon (with placeholder support)\nconst ActiveIconContainer = styled.div<{\n $size: 'medium' | 'large';\n $visible: boolean;\n $placeholder: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components?.menu?.menuItem?.size?.[$size];\n const iconSize = sizeConfig?.activeIcon?.size;\n\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n `;\n }}\n\n ${({ $visible, $placeholder }) => {\n if (!$visible && !$placeholder) {\n return 'display: none;';\n }\n if ($placeholder && !$visible) {\n return 'visibility: hidden;'; // Reserve space but invisible\n }\n return '';\n }}\n`;\n\n// Next level arrow icon\nconst NextLevelIconContainer = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components?.menu?.menuItem?.size?.[$size];\n const iconSize = sizeConfig?.nextLevelIcon?.size;\n\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n `;\n }}\n`;\n\nconst CheckmarkIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M14.25 5.25L7.125 12.375L3.75 9\"\n stroke=\"#41464B\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ArrowIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M6.75 4.5L11.25 9L6.75 13.5\"\n stroke=\"#41464B\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/**\n * Menu Component\n *\n * A menu component based on rc-menu with virtual scrolling support\n *\n * @example\n * // Basic menu\n * <Menu\n * items={[\n * { key: '1', label: 'Option 1' },\n * { key: '2', label: 'Option 2' },\n * ]}\n * onSelect={(key) => console.log(key)}\n * />\n *\n * @example\n * // Menu with groups and dividers\n * <Menu\n * items={[\n * { type: 'group', key: 'g1', label: 'Group A', children: [...] },\n * { type: 'divider', key: 'd1' },\n * { key: '1', label: 'Option 1' },\n * ]}\n * />\n *\n * @example\n * // Menu with search\n * <Menu\n * searchable\n * items={items}\n * onSearch={(value) => console.log(value)}\n * />\n */\nexport const Menu: React.FC<MenuProps> = ({\n items,\n selectedKeys = [],\n openKeys,\n size = 'large',\n searchable = false,\n searchPlaceholder = 'Enter search content',\n maxHeight = 300,\n virtual = false,\n reserveActiveIconSpace = true,\n onSelect,\n onSearch,\n onOpenChange,\n className,\n style,\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-menu-styles', MenuGlobalStyles);\n }, []);\n\n const [searchValue, setSearchValue] = useState('');\n\n const handleSearch = (value: string) => {\n setSearchValue(value);\n onSearch?.(value);\n };\n\n // Filter items based on search (supports recursive submenu search)\n const filteredItems = useMemo(() => {\n if (!searchValue) return items;\n\n const searchLower = searchValue.toLowerCase();\n\n const filterMenuItem = (item: MenuItem): MenuItem | null => {\n // If item itself matches, return it with all children\n if (item.label.toLowerCase().includes(searchLower) ||\n item.description?.toLowerCase().includes(searchLower)) {\n return item;\n }\n\n // If item has children, check if any child matches\n if (item.children && item.children.length > 0) {\n const filteredChildren = item.children\n .map(child => filterMenuItem(child))\n .filter(Boolean) as MenuItem[];\n\n if (filteredChildren.length > 0) {\n // Parent doesn't match but children do - return with filtered children\n return { ...item, children: filteredChildren };\n }\n }\n\n return null;\n };\n\n const filterItem = (item: MenuItemType): MenuItemType | null => {\n if (item.type === 'divider') return null;\n\n if (item.type === 'group') {\n // Filter group children\n const filteredChildren = item.children\n .map(child => filterMenuItem(child))\n .filter(Boolean) as MenuItem[];\n\n // Only show group if it has matching children\n if (filteredChildren.length > 0) {\n return { ...item, children: filteredChildren };\n }\n return null;\n }\n\n // Regular item with potential submenu\n return filterMenuItem(item);\n };\n\n return items\n .map(item => filterItem(item))\n .filter(Boolean) as MenuItemType[];\n }, [items, searchValue]);\n\n // Render menu item content\n const renderMenuItemContent = (item: MenuItem, reserveSpace: boolean) => {\n const isSelected = item.selected || selectedKeys.includes(item.key);\n const isSelectable = item.selectable !== false; // Default to true\n const shouldShowActiveIcon = isSelectable && isSelected;\n const shouldReserveSpace = reserveSpace || isSelectable;\n\n // Icon element\n const iconElement = item.icon ? (\n <IconContainer $size={size}>\n {typeof item.icon === 'string' ? <Icon src={item.icon} /> : item.icon}\n </IconContainer>\n ) : null;\n\n return (\n <MenuItemContent $size={size}>\n {iconElement}\n\n <ContentBlock>\n <LabelText $size={size} $disabled={!!item.disabled}>\n {item.label}\n </LabelText>\n\n {item.description && (\n <DescriptionText $size={size} $disabled={!!item.disabled}>\n {item.description}\n </DescriptionText>\n )}\n </ContentBlock>\n\n {/* Active icon - always reserve space if needed for alignment */}\n <ActiveIconContainer\n $size={size}\n $visible={shouldShowActiveIcon}\n $placeholder={shouldReserveSpace && !shouldShowActiveIcon}\n >\n {shouldShowActiveIcon && <CheckmarkIcon />}\n </ActiveIconContainer>\n\n {item.children && item.children.length > 0 && (\n <NextLevelIconContainer $size={size}>\n <ArrowIcon />\n </NextLevelIconContainer>\n )}\n </MenuItemContent>\n );\n };\n\n // Render item based on type\n const renderItem = (item: MenuItemType): React.ReactNode => {\n // Divider\n if (item.type === 'divider') {\n return <RcDivider key={item.key} />;\n }\n\n // Group\n if (item.type === 'group') {\n return (\n <RcItemGroup key={item.key} title={item.label}>\n {item.children.map(child => renderMenuItem(child))}\n </RcItemGroup>\n );\n }\n\n // Regular item\n return renderMenuItem(item);\n };\n\n // Render menu item (supports submenu)\n const renderMenuItem = (item: MenuItem): React.ReactNode => {\n // SubMenu\n if (item.children && item.children.length > 0) {\n return (\n <RcSubMenu\n key={item.key}\n title={renderMenuItemContent(item, reserveActiveIconSpace)}\n disabled={item.disabled}\n popupOffset={[5, 0]}\n >\n {item.children.map(child => renderMenuItem(child))}\n </RcSubMenu>\n );\n }\n\n // Regular item\n return (\n <RcMenuItem\n key={item.key}\n disabled={item.disabled}\n onClick={() => {\n item.onClick?.(item.key);\n onSelect?.(item.key);\n }}\n >\n {renderMenuItemContent(item, reserveActiveIconSpace)}\n </RcMenuItem>\n );\n };\n\n // Virtual list wrapper\n const itemHeight = size === 'medium' ? 28 : 36;\n\n // Force re-render when openKeys changes to close submenus\n const menuKey = openKeys?.join(',') || 'menu';\n\n return (\n <MenuContainer className={className} style={style}>\n {searchable && (\n <SearchBoxContainer>\n <Input\n lineType=\"underlined\"\n size=\"small\"\n placeholder={searchPlaceholder}\n value={searchValue}\n onChange={(e) => handleSearch(e.target.value)}\n clearable\n onClear={() => handleSearch('')}\n prefixNode={<SearchIcon />}\n />\n </SearchBoxContainer>\n )}\n\n {virtual && filteredItems.length > 10 ? (\n <VirtualList\n data={filteredItems}\n height={maxHeight}\n itemHeight={itemHeight}\n itemKey=\"key\"\n fullHeight={false}\n style={{ width: '100%' }}\n >\n {(item: MenuItemType) => (\n <RcMenu\n key={menuKey}\n prefixCls=\"od-menu\"\n mode=\"vertical\"\n selectedKeys={selectedKeys}\n openKeys={openKeys}\n onOpenChange={onOpenChange}\n triggerSubMenuAction=\"hover\"\n expandIcon={null}\n style={{\n border: 'none',\n background: 'transparent',\n padding: 0,\n }}\n >\n {renderItem(item)}\n </RcMenu>\n )}\n </VirtualList>\n ) : (\n <RcMenu\n key={menuKey}\n prefixCls=\"od-menu\"\n mode=\"vertical\"\n selectedKeys={selectedKeys}\n openKeys={openKeys}\n onOpenChange={onOpenChange}\n triggerSubMenuAction=\"hover\"\n expandIcon={null}\n style={{\n border: 'none',\n background: 'transparent',\n }}\n >\n {filteredItems.map(renderItem)}\n </RcMenu>\n )}\n </MenuContainer>\n );\n};\n\nMenu.displayName = 'Menu';\n\n","import { createGlobalStyle } from 'styled-components';\nimport { getGlobalTheme } from '../utils/context';\n\nconst theme = getGlobalTheme();\n\nexport const DropdownGlobalStyles = createGlobalStyle`\n /* Dropdown container */\n .od-dropdown {\n position: absolute;\n z-index: 1050;\n }\n\n .od-dropdown-hidden {\n display: none;\n }\n\n /* Dropdown slide animations */\n .od-dropdown-slide-up-enter,\n .od-dropdown-slide-up-appear {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-play-state: paused;\n }\n\n .od-dropdown-slide-up-leave {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-play-state: paused;\n }\n\n .od-dropdown-slide-up-enter.od-dropdown-slide-up-enter-active,\n .od-dropdown-slide-up-appear.od-dropdown-slide-up-appear-active {\n animation-name: rcDropdownSlideUpIn;\n animation-play-state: running;\n }\n\n .od-dropdown-slide-up-leave.od-dropdown-slide-up-leave-active {\n animation-name: rcDropdownSlideUpOut;\n animation-play-state: running;\n }\n\n @keyframes rcDropdownSlideUpIn {\n 0% {\n opacity: 0;\n transform: scaleY(0.8);\n }\n 100% {\n opacity: 1;\n transform: scaleY(1);\n }\n }\n\n @keyframes rcDropdownSlideUpOut {\n 0% {\n opacity: 1;\n transform: scaleY(1);\n }\n 100% {\n opacity: 0;\n transform: scaleY(0.8);\n }\n }\n`;\n\nexport const MenuGlobalStyles = createGlobalStyle`\n /* Base menu container */\n .od-menu {\n margin: 0;\n padding: ${() => theme.components?.dropdown?.padding || '4px 0'};\n list-style: none;\n outline: none;\n box-shadow: none;\n background: transparent;\n border: none;\n }\n\n .od-menu-hidden {\n display: none;\n }\n\n /* Menu item */\n .od-menu-item {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0;\n cursor: pointer;\n transition: background-color 0.15s ease;\n user-select: none;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n padding: ${config?.layout?.padding || '6px 12px'};\n background: ${config?.background?.normal || 'transparent'};\n `;\n }}\n }\n\n .od-menu-item:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.hover || 'rgba(65, 70, 75, 0.05)'};\n `;\n }}\n }\n\n .od-menu-item-active,\n .od-menu-item-selected {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.active || 'rgba(65, 70, 75, 0.1)'};\n `;\n }}\n }\n\n .od-menu-item-disabled {\n cursor: not-allowed;\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n .od-menu-item-disabled:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n /* SubMenu */\n .od-menu-submenu {\n position: relative;\n list-style: none;\n }\n\n .od-menu-submenu-title {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0;\n cursor: pointer;\n transition: background-color 0.15s ease;\n user-select: none;\n\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n padding: ${config?.layout?.padding || '6px 12px'};\n background: ${config?.background?.normal || 'transparent'};\n `;\n }}\n }\n\n .od-menu-submenu-title:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.hover || 'rgba(65, 70, 75, 0.05)'};\n `;\n }}\n }\n\n .od-menu-submenu-open > .od-menu-submenu-title {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.active || 'rgba(65, 70, 75, 0.1)'};\n `;\n }}\n }\n\n .od-menu-submenu-disabled .od-menu-submenu-title {\n cursor: not-allowed;\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n /* Submenu popup */\n .od-menu-submenu-popup {\n position: absolute;\n z-index: 1050;\n }\n\n /* Submenu popup positioning - add 5px gap */\n .od-menu-submenu-placement-rightTop,\n .od-menu-submenu-placement-rightBottom {\n padding-left: 5px;\n }\n\n .od-menu-submenu-placement-leftTop,\n .od-menu-submenu-placement-leftBottom {\n padding-right: 5px;\n }\n\n .od-menu-submenu > .od-menu {\n ${() => {\n const dropdownConfig = theme.components?.dropdown;\n const menuConfig = theme.components?.menu;\n\n return `\n background: ${dropdownConfig?.background || '#fff'};\n border: ${menuConfig?.border?.width || '1px'} solid ${menuConfig?.border?.color || 'rgba(65, 70, 75, 0.1)'};\n border-radius: ${menuConfig?.border?.radius || '4px'};\n box-shadow: ${dropdownConfig?.boxShadow || '0 2px 8px rgba(0, 0, 0, 0.15)'};\n `;\n }}\n }\n\n /* Item Group */\n .od-menu-item-group-title {\n padding: 8px 12px 4px;\n user-select: none;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.groupTitle;\n return `\n font-size: ${config?.fontSize || '12px'};\n font-weight: ${config?.fontWeight || '500'};\n color: ${config?.color || 'rgba(65, 70, 75, 0.6)'};\n line-height: 20px;\n `;\n }}\n }\n\n .od-menu-item-group-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n /* Divider */\n .od-menu-item-divider {\n overflow: hidden;\n line-height: 0;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.divider;\n return `\n height: ${config?.height || '1px'};\n background: ${config?.background || 'rgba(65, 70, 75, 0.1)'};\n margin: ${config?.margin || '4px 0'};\n `;\n }}\n }\n\n /* Animation */\n .od-menu-submenu-inline {\n border: 0;\n box-shadow: none;\n }\n\n .od-menu-submenu-inline > .od-menu {\n padding: 0;\n border: 0;\n box-shadow: none;\n }\n\n /* Collapse animation */\n .od-menu-submenu-inline-collapsed {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n\n .od-menu-submenu-inline-collapsed-active {\n max-height: 1000px;\n }\n`;\n\n","import React, { useState, useEffect } from 'react';\nimport RcDropdown from 'rc-dropdown';\nimport type { DropdownProps as RcDropdownProps } from 'rc-dropdown';\nimport 'rc-dropdown/assets/index.css';\nimport { DropdownGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface DropdownProps extends Omit<Partial<RcDropdownProps>, 'prefixCls' | 'placement'> {\n /**\n * Dropdown overlay content (usually a Menu component)\n */\n overlay?: React.ReactElement | (() => React.ReactElement);\n /**\n * Trigger action (click, hover, contextMenu)\n */\n trigger?: ('click' | 'hover' | 'contextMenu')[];\n /**\n * Placement of dropdown\n */\n placement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n /**\n * Whether dropdown is visible (controlled)\n */\n visible?: boolean;\n /**\n * Default visibility (uncontrolled)\n */\n defaultVisible?: boolean;\n /**\n * Callback when visibility changes\n */\n onVisibleChange?: (visible: boolean) => void;\n /**\n * Children element that triggers the dropdown\n */\n children: React.ReactElement;\n /**\n * Dropdown container class name\n */\n overlayClassName?: string;\n /**\n * Function to get the container element for the dropdown\n */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n}\n\n/**\n * Dropdown Component\n *\n * A dropdown container component based on rc-dropdown\n *\n * @example\n * // Basic dropdown with menu\n * <Dropdown\n * overlay={<Menu items={items} />}\n * trigger={['click']}\n * >\n * <DropdownButton value=\"Select\" />\n * </Dropdown>\n *\n * @example\n * // Controlled dropdown\n * <Dropdown\n * visible={open}\n * onVisibleChange={setOpen}\n * overlay={<Menu items={items} />}\n * >\n * <Button>Click me</Button>\n * </Dropdown>\n *\n * @example\n * // Custom trigger\n * <Dropdown\n * overlay={<Menu items={items} />}\n * trigger={['hover']}\n * placement=\"bottomLeft\"\n * >\n * <span>Hover me</span>\n * </Dropdown>\n */\nexport const Dropdown: React.FC<DropdownProps> = ({\n overlay,\n trigger = ['click'],\n placement = 'bottomLeft',\n visible: controlledVisible,\n defaultVisible = false,\n onVisibleChange,\n children,\n overlayClassName,\n getPopupContainer,\n ...rest\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-dropdown-styles', DropdownGlobalStyles);\n }, []);\n\n const [internalVisible, setInternalVisible] = useState(defaultVisible);\n\n const isControlled = controlledVisible !== undefined;\n const isVisible = isControlled ? controlledVisible : internalVisible;\n\n const handleVisibleChange = (visible: boolean) => {\n if (!isControlled) {\n setInternalVisible(visible);\n }\n onVisibleChange?.(visible);\n };\n\n return (\n <RcDropdown\n overlay={overlay || <div />}\n trigger={trigger}\n placement={placement}\n visible={isVisible}\n onVisibleChange={handleVisibleChange}\n prefixCls=\"od-dropdown\"\n overlayClassName={overlayClassName}\n getPopupContainer={getPopupContainer}\n {...rest}\n >\n {children}\n </RcDropdown>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\n","import React, { createContext, useContext, useEffect } from 'react';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { initUIConfig, getUIConfig } from './configManager';\nimport { registerGlobalContext } from '../utils/context';\n\nconst UIConfigContext = createContext<UIConfig | null>(null);\n\nexport interface UIConfigProviderProps {\n /**\n * UI configuration\n */\n config: UIConfig;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * UIConfigProvider Component (Optional, for React convenience)\n *\n * Unified provider for all UI components and global configurations.\n * Includes IconProvider, ToastContainer, and other settings.\n *\n * Note: Global styles (Tooltip, Menu, Dropdown) are now injected on-demand\n * when components are first used, so they are no longer included here.\n *\n * For non-React environments or when you want to avoid Provider nesting,\n * use initUIConfig() instead.\n *\n * @example\n * import { UIConfigProvider } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <UIConfigProvider config={{\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * maxCount: 5,\n * },\n * }}>\n * <App />\n * </UIConfigProvider>\n */\nexport const UIConfigProvider: React.FC<UIConfigProviderProps> = ({ config, children }) => {\n // Initialize global config on mount\n useEffect(() => {\n\n // Register render function first\n registerGlobalContext({\n theme: config.theme,\n render: config.renderFunction,\n });\n\n // Then initialize full config\n initUIConfig(config);\n }, [config]);\n\n const { icons = {} } = config;\n const toastConfig = {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n };\n\n return (\n <UIConfigContext.Provider value={config}>\n <IconProvider icons={icons}>\n <ToastContainer\n maxCount={toastConfig.maxCount}\n defaultDuration={toastConfig.defaultDuration}\n >\n {children}\n </ToastContainer>\n </IconProvider>\n </UIConfigContext.Provider>\n );\n};\n\n/**\n * Hook to access UI configuration\n *\n * Falls back to global config if context is not available.\n * This allows components to work even without UIConfigProvider when initUIConfig() is used.\n *\n * @example\n * const config = useUIConfig();\n * console.log(config?.theme);\n * console.log(config?.locale);\n */\nexport const useUIConfig = () => {\n const context = useContext(UIConfigContext);\n // Fallback to global config if context is not available\n return context || getUIConfig();\n};\n\nUIConfigProvider.displayName = 'UIConfigProvider';\n","import type { UIConfig } from './types';\n\n/**\n * Create UI configuration with default values\n *\n * @example\n * import { createUIConfig } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * const config = createUIConfig({\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * },\n * });\n */\nexport const createUIConfig = (config: UIConfig): UIConfig => {\n return {\n // Theme is required\n theme: config.theme,\n\n // Icons with default\n icons: config.icons ?? {},\n\n // Toast with defaults\n toast: {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n position: config.toast?.position ?? 'top-right',\n offset: {\n x: config.toast?.offset?.x ?? 24,\n y: config.toast?.offset?.y ?? 24,\n },\n },\n\n // Locale with default\n locale: config.locale ?? 'en-US',\n\n // I18n with defaults\n i18n: {\n toast: {\n closeLabel: config.i18n?.toast?.closeLabel ?? 'Close',\n },\n button: {\n loadingText: config.i18n?.button?.loadingText ?? 'Loading...',\n },\n common: {\n confirm: config.i18n?.common?.confirm ?? 'Confirm',\n cancel: config.i18n?.common?.cancel ?? 'Cancel',\n ok: config.i18n?.common?.ok ?? 'OK',\n },\n },\n\n // Z-index with defaults\n zIndex: {\n toast: config.zIndex?.toast ?? 9999,\n modal: config.zIndex?.modal ?? 10000,\n dropdown: config.zIndex?.dropdown ?? 1000,\n tooltip: config.zIndex?.tooltip ?? 1001,\n },\n\n // Animation with defaults\n animation: {\n duration: config.animation?.duration ?? 200,\n easing: config.animation?.easing ?? 'cubic-bezier(0.4, 0, 0.2, 1)',\n disabled: config.animation?.disabled ?? false,\n },\n\n // A11y with defaults\n a11y: {\n announceMessages: config.a11y?.announceMessages ?? true,\n focusVisible: config.a11y?.focusVisible ?? true,\n reduceMotion: config.a11y?.reduceMotion ?? false,\n },\n };\n};\n\n/**\n * Merge multiple configs (useful for extending base configs)\n */\nexport const mergeUIConfig = (baseConfig: UIConfig, ...configs: Partial<UIConfig>[]): UIConfig => {\n const merged = configs.reduce((acc, config) => ({\n ...acc,\n ...config,\n toast: { ...acc.toast, ...config.toast },\n i18n: { ...acc.i18n, ...config.i18n },\n zIndex: { ...acc.zIndex, ...config.zIndex },\n animation: { ...acc.animation, ...config.animation },\n a11y: { ...acc.a11y, ...config.a11y },\n }), baseConfig);\n\n return merged as UIConfig;\n};\n\n","export { UIConfigProvider, useUIConfig } from './UIConfigProvider';\nexport type { UIConfigProviderProps } from './UIConfigProvider';\n\nexport { createUIConfig, mergeUIConfig } from './createUIConfig';\n\nexport {\n initUIConfig,\n getUIConfig,\n getGlobalIconRegistry,\n getGlobalToastConfig,\n} from './configManager';\n\nexport type {\n UIConfig,\n ToastConfig,\n ToastPosition,\n ZIndexConfig,\n AnimationConfig,\n A11yConfig,\n I18nConfig,\n} from './types';\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/UIConfigProvider/configManager.ts","../../src/Icon/IconProvider.tsx","../../src/Icon/Icon.tsx","../../src/Icon/index.ts","../../src/Toast/Toast.tsx","../../src/Toast/toastManager.tsx","../../src/utils/context.ts","../../src/utils/styled.ts","../../src/Button/Button.tsx","../../src/Slider/Slider.tsx","../../src/Slider/index.ts","../../src/NumberInput/NumberInput.tsx","../../src/NumberInput/index.ts","../../src/Button/SpinButton.tsx","../../src/Button/index.ts","../../src/index.ts","../../src/Switch/Switch.tsx","../../src/Radio/Radio.tsx","../../src/Checkbox/Checkbox.tsx","../../src/Input/Input.tsx","../../src/Input/SearchInput.tsx","../../src/Input/UnderlinedInput.tsx","../../src/Toast/index.ts","../../src/Toast/ToastContainer.tsx","../../src/Tabs/Tabs.tsx","../../src/Tooltip/globalStyle.ts","../../src/utils/styleManager.ts","../../src/Tooltip/Tooltip.tsx","../../src/ToolbarButton/ToolbarButton.tsx","../../src/dropdown/DropdownButton.tsx","../../src/dropdown/Menu.tsx","../../src/dropdown/globalStyle.ts","../../src/dropdown/Dropdown.tsx","../../src/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts","../../src/UIConfigProvider/index.ts"],"names":["initUIConfig","getUIConfig","getGlobalIconRegistry","getGlobalToastConfig","ReactDOM","IconProvider","useIconRegistry","createContext","useContext","Icon","styled","React","init_Icon","Toast","init_Button","theme","useState","useEffect","getGlobalTheme","Button","toast","getGlobalRenderFunction","lightTheme","toastManager","baseStyled","IconWrapper","sizeConfig","styles","Slider","useRef","useCallback","init_Slider","NumberInput","init_NumberInput","SpinButton","HiddenInput","InputWrapper","StyledInput","forwardRef","ToastWrapper","ToastContainer","createGlobalStyle","RcTooltip","DropdownButton","IconContainer","ContentBlock","LabelText","ArrowIcon","useMemo","RcDivider","RcItemGroup","RcSubMenu","RcMenuItem","VirtualList","RcMenu","RcDropdown"],"mappings":"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","file":"index.js","sourcesContent":["import type React from 'react';\nimport type { UIConfig } from './types';\nimport { registerGlobalContext } from '../utils/context';\nimport ReactDOM from 'react-dom';\n\nlet globalConfig: UIConfig | null = null;\nlet globalIconRegistry: Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>> | null = null;\nlet globalToastConfig: { maxCount?: number; defaultDuration?: number } | null = null;\n\n/**\n * Create default render function\n * This will be registered via registerGlobalContext and can be retrieved via getGlobalRenderFunction\n */\nexport const createDefaultRenderFunction = (): (element: React.ReactElement, container: HTMLElement) => void => {\n return (element: React.ReactElement, container: HTMLElement) => {\n // Try React 18 createRoot first\n if ('createRoot' in ReactDOM) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { createRoot } = ReactDOM as any;\n const root = createRoot(container);\n root.render(element);\n } else {\n // Fallback to React 17 and below\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(element, container);\n }\n };\n};\n\n/**\n * Initialize UI configuration globally (non-React)\n *\n * This function allows you to configure the UI library without using React Provider components.\n * It's useful for:\n * - Non-React environments\n * - Avoiding Provider nesting (e.g., in Modal components)\n * - Setting up configuration before React app starts\n *\n * After calling this function, all components will automatically use the global configuration.\n * Global styles (Tooltip, Menu, Dropdown) will be injected on-demand when components are first used.\n *\n * @param config - UI configuration object\n * @param config.theme - Theme configuration (required)\n * @param config.icons - Icon registry mapping icon names to React components\n * @param config.toast - Toast configuration (maxCount, defaultDuration, etc.)\n * @param config.locale - Locale code (e.g., 'zh-CN', 'en-US')\n * @param config.i18n - Internationalization configuration\n * @param config.zIndex - Z-index layer management\n * @param config.animation - Animation configuration\n * @param config.a11y - Accessibility configuration\n *\n * @example\n * import { initUIConfig } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * // Initialize before React app starts\n * initUIConfig({\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * maxCount: 5,\n * defaultDuration: 3000,\n * },\n * });\n *\n * // Now you can use components without UIConfigProvider\n * function App() {\n * return <Button>Click me</Button>;\n * }\n *\n * @example\n * // Useful for Modal scenarios - no need to nest Provider\n * function Modal({ children }) {\n * return (\n * <Portal>\n * {children}\n * </Portal>\n * );\n * }\n *\n * @example\n * // Can be called multiple times to update config\n * initUIConfig({ theme: lightTheme });\n * // Later update icons\n * initUIConfig({ theme: lightTheme, icons: newIconRegistry });\n */\nexport const initUIConfig = (config: UIConfig) => {\n globalConfig = config;\n\n // Create and register render function\n const renderFunction = createDefaultRenderFunction();\n\n // Register theme and render function via existing mechanism\n registerGlobalContext({\n theme: config.theme,\n render: renderFunction,\n });\n\n globalIconRegistry = config.icons || null;\n globalToastConfig = {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n };\n};\n\n/**\n * Get global UI configuration\n */\nexport const getUIConfig = (): UIConfig | null => {\n return globalConfig;\n};\n\n/**\n * Get global icon registry\n */\nexport const getGlobalIconRegistry = () => {\n return globalIconRegistry;\n};\n\n/**\n * Get global toast config\n */\nexport const getGlobalToastConfig = () => {\n return globalToastConfig;\n};\n","import React, { createContext, useContext } from 'react';\n\nexport type IconComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>;\nexport type IconRegistry = Record<string, IconComponent>;\n\nconst IconContext = createContext<IconRegistry | null>(null);\n\nexport interface IconProviderProps {\n /**\n * Icon registry mapping icon names to React components\n * Import from @officesdk/design/icons\n */\n icons: IconRegistry;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * IconProvider Component\n *\n * Provides icon registry to child components via Context\n *\n * @example\n * import { IconProvider } from '@officesdk/design';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <IconProvider icons={iconRegistry}>\n * <App />\n * </IconProvider>\n */\nexport const IconProvider: React.FC<IconProviderProps> = ({\n icons,\n children,\n}) => {\n return (\n <IconContext.Provider value={icons}>\n {children}\n </IconContext.Provider>\n );\n};\n\n/**\n * Hook to access icon registry from context\n */\nexport const useIconRegistry = () => {\n return useContext(IconContext);\n};\n\nIconProvider.displayName = 'IconProvider';\n\n\n","import React from 'react';\nimport { styled } from '../utils/styled';\nimport { useIconRegistry } from './IconProvider';\nimport { getGlobalIconRegistry } from '../UIConfigProvider/configManager';\n\nexport interface IconProps {\n /**\n * Icon name from registry (requires IconProvider)\n */\n name?: string;\n /**\n * Image URL for icon (e.g., PNG, JPG, or external SVG)\n */\n src?: string;\n /**\n * Custom icon element (takes precedence over name and src)\n */\n children?: React.ReactNode;\n /**\n * Size of the icon (px)\n */\n size?: number | string;\n /**\n * Color of the icon (only works with SVG icons, not image src)\n */\n color?: string;\n /**\n * Alt text for image icons\n */\n alt?: string;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n /**\n * Click handler\n */\n onClick?: (e: React.MouseEvent) => void;\n}\n\nconst IconContainer = styled.span<{\n $size: number | string;\n $color: string;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n height: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n color: ${({ $color }) => $color};\n flex-shrink: 0;\n line-height: 1;\n\n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n`;\n\n/**\n * Icon Component\n *\n * Renders icons from multiple sources with priority: children > src > name\n *\n * @example\n * // Using with IconProvider and registry\n * <Icon name=\"close\" size={16} />\n *\n * @example\n * // Using with image URL\n * <Icon src=\"/icons/custom-icon.svg\" size={24} />\n *\n * @example\n * // Using with custom icon element\n * <Icon><CustomSvg /></Icon>\n *\n * @example\n * // Using with imported icon component\n * import { CloseIcon } from '@officesdk/design/icons';\n * <Icon><CloseIcon /></Icon>\n */\nexport const Icon: React.FC<IconProps> = ({\n name,\n src,\n children,\n size = 16,\n color = 'currentColor',\n alt = 'icon',\n className,\n style,\n onClick,\n}) => {\n const contextRegistry = useIconRegistry();\n const globalRegistry = getGlobalIconRegistry();\n // Use context registry first, fallback to global registry\n const registry = contextRegistry || globalRegistry;\n\n // Priority: custom children > src > registry icon by name\n let iconElement: React.ReactNode = children;\n\n // If no children, try src\n if (!iconElement && src) {\n iconElement = (\n <img\n src={src}\n alt={alt}\n style={{ width: '100%', height: '100%', display: 'block' }}\n />\n );\n }\n\n // If no children and no src, try registry\n if (!iconElement && name && registry) {\n const IconComponent = registry[name];\n if (IconComponent) {\n iconElement = <IconComponent />;\n } else if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Icon \"${name}\" not found in registry. Make sure IconProvider is set up or call initUIConfig() with icons.`\n );\n }\n }\n\n if (!iconElement) {\n if (process.env.NODE_ENV !== 'production' && !children && !name && !src) {\n console.warn('Icon: one of \"name\", \"src\", or \"children\" must be provided');\n }\n return null;\n }\n\n return (\n <IconContainer\n $size={size}\n $color={color}\n className={className}\n style={style}\n onClick={onClick}\n >\n {iconElement}\n </IconContainer>\n );\n};\n\nIcon.displayName = 'Icon';\n\n","export { Icon } from './Icon';\nexport type { IconProps } from './Icon';\n\nexport { IconProvider, useIconRegistry } from './IconProvider';\nexport type { IconProviderProps, IconRegistry, IconComponent } from './IconProvider';\n\n\n\n","import React, { useEffect, useState } from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\nimport { Button } from '../Button';\nimport { getGlobalTheme } from '../utils/context';\nimport loadingGif from './loading.gif';\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'children' | 'onClick'> {\n /**\n * Toast variant type\n */\n variant?: 'success' | 'info' | 'error' | 'warn' | 'loading';\n /**\n * Toast message content (main text)\n */\n message: React.ReactNode;\n /**\n * Optional description text (shows below message in multiline mode)\n */\n description?: string;\n /**\n * Main action button text (blue color)\n */\n mainButtonText?: string;\n /**\n * Main action button click handler\n */\n onMainButtonClick?: () => void;\n /**\n * Secondary action button text (gray color)\n */\n secondaryButtonText?: string;\n /**\n * Secondary action button click handler\n */\n onSecondaryButtonClick?: () => void;\n /**\n * Whether to show close button\n */\n closable?: boolean;\n /**\n * Close button click handler\n */\n onClose?: () => void;\n /**\n * Auto close duration in milliseconds (0 to disable)\n */\n duration?: number;\n /**\n * Custom icon (overrides default variant icon)\n */\n icon?: React.ReactNode;\n /**\n * Whether to show icon\n */\n showIcon?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst ToastContainer = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn' | 'loading';\n}>`\n display: inline-flex;\n align-items: center;\n gap: 8px;\n border: 1px solid;\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.08);\n\n ${({ theme }) => {\n const baseConfig = theme.components.toast;\n return `\n padding: ${baseConfig.padding};\n border-radius: ${baseConfig.borderRadius};\n font-size: ${baseConfig.fontSize};\n font-weight: ${baseConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.toast[$variant];\n return `\n background: ${variantConfig.background};\n border-color: ${variantConfig.borderColor};\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn' | 'loading';\n $hasDescription: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $hasDescription }) => {\n const size = $hasDescription ? '28px' : '18px';\n return `\n width: ${size};\n height: ${size};\n `;\n }}\n`;\n\nconst ContentWrapper = styled.div<{ $hasDescription: boolean }>`\n display: flex;\n flex-direction: ${({ $hasDescription }) => ($hasDescription ? 'column' : 'row')};\n align-items: ${({ $hasDescription }) => ($hasDescription ? 'flex-start' : 'center')};\n gap: ${({ $hasDescription }) => ($hasDescription ? '2px' : '0')};\n flex: 1;\n`;\n\nconst Message = styled.span`\n font-size: 13px;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.gray['100']};\n`;\n\nconst Description = styled.span`\n font-size: 12px;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.transparency['60']};\n`;\n\nconst ActionGroup = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n`;\n\n// Default icons for each variant\nconst SuccessIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#4ea44b\" />\n <path\n d=\"M6 10L9 13L14 7\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#5ba0e7\" />\n <path d=\"M10 9V14M10 6H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#e95555\" />\n <path d=\"M7 7L13 13M13 7L7 13\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst WarnIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#ebe361\" />\n <path d=\"M10 6V11M10 14H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CloseIconSvg = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst LoadingIcon = () => (\n <img src={loadingGif} alt=\"Loading\" width=\"20\" height=\"20\" />\n);\n\n/**\n * Toast Component\n *\n * A notification message component with different variants\n *\n * @example\n * // Single line toast\n * <Toast variant=\"success\" message=\"信息反馈\" />\n *\n * @example\n * // Toast with buttons\n * <Toast\n * variant=\"info\"\n * message=\"信息反馈\"\n * mainButtonText=\"按钮名称\"\n * onMainButtonClick={() => console.log('Main clicked')}\n * secondaryButtonText=\"按钮名称\"\n * onSecondaryButtonClick={() => console.log('Secondary clicked')}\n * closable\n * />\n *\n * @example\n * // Multi-line toast with description\n * <Toast\n * variant=\"success\"\n * message=\"信息反馈\"\n * description=\"信息具体说明\"\n * mainButtonText=\"按钮名称\"\n * closable\n * />\n */\nexport const Toast: React.FC<ToastProps> = ({\n variant = 'info' as 'success' | 'info' | 'error' | 'warn' | 'loading',\n message,\n description,\n mainButtonText,\n onMainButtonClick,\n secondaryButtonText,\n onSecondaryButtonClick,\n closable = false,\n onClose,\n duration = 0,\n icon,\n showIcon = true,\n className,\n style,\n ...restProps\n}) => {\n const [visible, setVisible] = useState(true);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) {\n return null;\n }\n\n // Icon priority: props.icon > theme icon > default icon\n const getIconElement = () => {\n // 1. If icon prop is provided, use it\n if (icon) {\n return icon;\n }\n\n // 2. Try to get icon from theme\n const theme = getGlobalTheme();\n const themeIconUrl = theme?.components?.toast?.[variant]?.icon?.url;\n if (themeIconUrl) {\n return <Icon src={themeIconUrl} />;\n }\n\n // 3. Use default icon as fallback\n const defaultIcons = {\n success: <SuccessIcon />,\n info: <InfoIcon />,\n error: <ErrorIcon />,\n warn: <WarnIcon />,\n loading: <LoadingIcon />,\n };\n return defaultIcons[variant];\n };\n\n const iconElement = getIconElement();\n const hasDescription = !!description;\n const hasActions = !!(mainButtonText || secondaryButtonText || closable);\n\n return (\n <ToastContainer\n $variant={variant}\n className={className}\n style={style}\n role=\"alert\"\n aria-live=\"polite\"\n {...restProps}\n >\n {showIcon && (\n <IconWrapper $variant={variant} $hasDescription={hasDescription}>\n {iconElement}\n </IconWrapper>\n )}\n\n <ContentWrapper $hasDescription={hasDescription}>\n <Message>{message}</Message>\n {description && <Description>{description}</Description>}\n </ContentWrapper>\n\n {hasActions && (\n <ActionGroup>\n {mainButtonText && onMainButtonClick && (\n <Button variant=\"text\" colorType=\"guidance\" size=\"small\" onClick={onMainButtonClick}>\n {mainButtonText}\n </Button>\n )}\n\n {secondaryButtonText && onSecondaryButtonClick && (\n <Button\n variant=\"text\"\n colorType=\"default\"\n size=\"small\"\n onClick={onSecondaryButtonClick}\n >\n {secondaryButtonText}\n </Button>\n )}\n\n {closable && (\n <Button\n variant=\"icon\"\n colorType=\"default\"\n size=\"small\"\n onClick={handleClose}\n aria-label=\"Close\"\n icon={<CloseIconSvg />}\n iconBordered={false}\n />\n )}\n </ActionGroup>\n )}\n </ToastContainer>\n );\n};\n\nToast.displayName = 'Toast';\n","import React from 'react';\nimport { ToastProps } from './Toast';\nimport { Toast } from './Toast';\nimport { styled } from '../utils/styled';\n\ntype ToastPlacement =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\ninterface ToastItem extends Omit<ToastProps, 'onClose'> {\n id: string;\n placement?: ToastPlacement;\n}\n\ninterface ToastContainerConfig {\n placement?: ToastPlacement;\n maxCount?: number;\n defaultDuration?: number;\n}\n\ntype RenderFunction = (element: React.ReactElement, container: HTMLElement) => void;\n\ninterface ToastWrapperProps {\n $placement:\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n}\n\nconst ToastWrapper = styled.div<ToastWrapperProps>`\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n\n > * {\n pointer-events: auto;\n }\n\n ${({ $placement, theme }) => {\n const offset = theme.components?.toast?.offset || { vertical: '24px', horizontal: '24px' };\n const vertical = offset.vertical || '24px';\n const horizontal = offset.horizontal || '24px';\n\n const styles: Record<string, string> = {\n 'top-right': `\n top: ${vertical};\n right: ${horizontal};\n `,\n 'top-left': `\n top: ${vertical};\n left: ${horizontal};\n `,\n 'top-center': `\n top: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n 'bottom-right': `\n bottom: ${vertical};\n right: ${horizontal};\n `,\n 'bottom-left': `\n bottom: ${vertical};\n left: ${horizontal};\n `,\n 'bottom-center': `\n bottom: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n };\n\n return styles[$placement] || styles['top-right'];\n }}\n`;\n\nclass ToastManager {\n private toasts: ToastItem[] = [];\n private container: HTMLDivElement | null = null;\n private renderFunc: RenderFunction | null = null;\n private config: ToastContainerConfig = {\n placement: 'top-right',\n maxCount: 5,\n defaultDuration: 3000,\n };\n\n constructor() {\n // Try to get render function from global context\n this.tryGetRenderFunction();\n }\n\n /**\n * Try to get render function from global context\n */\n private tryGetRenderFunction() {\n if (typeof window !== 'undefined') {\n import('../utils/context')\n .then(({ getGlobalRenderFunction }) => {\n const renderFunc = getGlobalRenderFunction();\n if (renderFunc) {\n this.renderFunc = renderFunc;\n }\n })\n .catch(() => {\n // Context not available yet\n });\n }\n }\n\n /**\n * Set render function (from registerGlobalContext)\n */\n setRenderFunction(renderFunc: RenderFunction) {\n this.renderFunc = renderFunc;\n }\n\n /**\n * Initialize the toast container\n */\n private initialize() {\n if (this.container) return;\n\n if (!this.renderFunc) {\n console.warn('Toast render function not set. Please call registerGlobalContext first.');\n return;\n }\n\n // Create container element\n this.container = document.createElement('div');\n this.container.id = 'officesdk-toast-container';\n document.body.appendChild(this.container);\n\n this.render();\n }\n\n /**\n * Render toasts to DOM\n */\n private render() {\n if (!this.container || !this.renderFunc) return;\n\n const element = (\n <>\n {this.toasts.map((toast) => {\n return <ToastWrapper key={toast.id} $placement={toast.placement || 'top-center'}>\n <Toast {...toast} onClose={() => this.hide(toast.id)} />\n </ToastWrapper>\n })}\n </>\n );\n\n this.renderFunc(element, this.container);\n }\n\n /**\n * Configure toast container\n */\n configure(config: ToastContainerConfig) {\n this.config = { ...this.config, ...config };\n this.render();\n }\n\n /**\n * Show a toast\n */\n show(props: Omit<ToastProps, 'onClose'>): string {\n this.initialize();\n\n const id = `toast-${Date.now()}-${Math.random()}`;\n const newToast: ToastItem = {\n ...props,\n id,\n duration: props.duration ?? this.config.defaultDuration,\n };\n\n this.toasts = [...this.toasts, newToast].slice(-(this.config.maxCount || 5));\n this.render();\n\n return id;\n }\n\n /**\n * Hide a toast by id\n */\n hide(id: string) {\n this.toasts = this.toasts.filter((toast) => toast.id !== id);\n this.render();\n }\n\n /**\n * Hide all toasts\n */\n hideAll() {\n this.toasts = [];\n this.render();\n }\n\n /**\n * Show success toast\n */\n success(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'success', message });\n }\n\n /**\n * Show info toast\n */\n info(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'info', message });\n }\n\n /**\n * Show error toast\n */\n error(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'error', message });\n }\n\n /**\n * Show warning toast\n */\n warn(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'warn', message });\n }\n\n /**\n * Show loading toast\n */\n loading(message: React.ReactNode, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'loading', message });\n }\n\n /**\n * Destroy the toast container\n */\n destroy() {\n if (this.container) {\n // Clear container content\n if (this.renderFunc) {\n // Render empty to unmount components\n this.renderFunc(<></>, this.container);\n }\n // Remove from DOM\n if (this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n this.container = null;\n }\n this.toasts = [];\n }\n\n /**\n * Get current toasts\n */\n getToasts(): ToastItem[] {\n return this.toasts;\n }\n\n /**\n * Clear all toasts (for testing)\n */\n clear() {\n this.toasts = [];\n this.render();\n }\n}\n\n// Global singleton instance\nconst toastManager = new ToastManager();\n\n/**\n * Global toast object that can be used anywhere\n * No need to render ToastContainer component manually\n *\n * @example\n * import { toast } from '@officesdk/design';\n *\n * // Configure (optional)\n * toast.configure({\n * placement: 'top-right',\n * maxCount: 5,\n * defaultDuration: 3000,\n * });\n *\n * // Show toasts\n * toast.success('Operation successful!');\n * toast.error('Something went wrong');\n * toast.info('Info message', { duration: 5000 });\n * toast.warn('Warning message');\n *\n * const id = toast.show({ variant: 'info', message: 'Custom toast' });\n * toast.hide(id);\n * toast.hideAll();\n */\nexport const toast = {\n configure: (config: ToastContainerConfig) => toastManager.configure(config),\n show: (props: Omit<ToastProps, 'onClose'>) => toastManager.show(props),\n hide: (id: string) => toastManager.hide(id),\n hideAll: () => toastManager.hideAll(),\n success: (message: React.ReactNode, options?: Partial<ToastProps>) =>\n toastManager.success(message, options),\n info: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.info(message, options),\n error: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.error(message, options),\n warn: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.warn(message, options),\n loading: (message: React.ReactNode, options?: Partial<ToastProps>) => toastManager.loading(message, options),\n destroy: () => toastManager.destroy(),\n};\n\n// Export manager for internal use\nexport { toastManager };\nexport type { ToastItem, ToastContainerConfig };\n","import type { Theme } from \"@officesdk/design/theme\";\nimport type React from \"react\";\nimport { lightTheme } from \"@officesdk/design/theme\";\nimport { createDefaultRenderFunction } from \"../UIConfigProvider/configManager\";\nimport { DeepPartial } from \"./type\";\n\nfunction deepMerge<T extends object>(target: T, ...sources: Partial<T>[]): T {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key] as object, source[key] as object);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return deepMerge(target, ...sources);\n}\n\nfunction isObject(item: any): item is object {\n return item && typeof item === \"object\" && !Array.isArray(item);\n}\n\n\n\nconst globalTheme: Theme = lightTheme;\nexport const registerGlobalTheme = (theme: DeepPartial<Theme>) => {\n // Theme is a complex object type, cast to Record for deepMerge\n // Use double cast via unknown to satisfy TypeScript's type system\n deepMerge(\n globalTheme as unknown as Record<string, unknown>,\n theme as unknown as Record<string, unknown>\n );\n};\n\nexport const getGlobalTheme = (): Theme => {\n return globalTheme;\n};\n\n// Store render function globally to avoid circular dependency\nlet globalRenderFunction: ((element: React.ReactElement, container: HTMLElement) => void) | null = createDefaultRenderFunction();\n\nexport const getGlobalRenderFunction = () => globalRenderFunction;\n\n/**\n * Register global context\n *\n * Registers theme and render function to the global context.\n * Can be called multiple times (e.g., in tests) to update the theme.\n *\n * @param context - The context to register\n * @param context.theme - Theme configuration\n * @param context.render - Optional render function for toast (React 18+ uses createRoot, older versions use ReactDOM.render)\n */\nexport const registerGlobalContext = (context: {\n theme: DeepPartial<Theme>;\n render?: (element: React.ReactElement, container: HTMLElement) => void;\n}) => {\n if (context.theme) {\n registerGlobalTheme(context.theme);\n }\n\n if (context.render) {\n globalRenderFunction = context.render;\n // Immediately set render function if toastManager is already loaded\n // This avoids race conditions\n if (typeof window !== 'undefined') {\n // Use a small timeout to ensure toastManager is loaded\n setTimeout(() => {\n import('../Toast/toastManager').then(({ toastManager }) => {\n toastManager.setRenderFunction(context.render!);\n }).catch(() => {\n // toastManager not loaded yet, will be set when it loads\n });\n }, 0);\n }\n }\n};\n","import baseStyled, {\n ThemedStyledInterface\n} from 'styled-components';\nimport { getGlobalTheme } from './context';\nimport type { Theme } from '@officesdk/design/theme';\n\n// Helper function to wrap styled component and inject theme via defaultProps\nconst wrapWithTheme = (component: any) => {\n if (component && typeof component === 'object' ) {\n component.defaultProps = {\n ...component.defaultProps,\n get theme() {\n return getGlobalTheme()\n },\n };\n }\n return component;\n};\n\n// Create the main styled function\nconst styledFunction = (tag: any) => {\n return wrapWithTheme((baseStyled as any)(tag));\n};\n\n// Start with a copy of baseStyled to get all its properties\nconst styledWithBase = Object.assign(styledFunction, baseStyled);\n\n// Override each HTML tag method to inject theme via defaultProps\nObject.keys(baseStyled).forEach((key) => {\n const originalMethod = (baseStyled as any)[key];\n\n if (typeof originalMethod === 'function') {\n (styledWithBase as any)[key] = (...args: any[]) => {\n const component = originalMethod(...args);\n return wrapWithTheme(component);\n };\n }\n});\n\n// Export with proper typing\nexport const styled = styledWithBase as ThemedStyledInterface<Theme>;\n\n\n","import React from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant type\n * - 'icon': Square icon button without padding, size based on iconSize\n */\n variant?: 'solid' | 'outlined' | 'text' | 'icon';\n /**\n * Button color type\n * - 'status' is only available for 'text' variant\n */\n colorType?: 'default' | 'guidance' | 'alert' | 'status';\n /**\n * Button size\n */\n size?: 'small' | 'medium' | 'large' | 'extraLarge';\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in loading state\n */\n loading?: boolean;\n /**\n * Whether the button should take full width of its container\n */\n fullWidth?: boolean;\n /**\n * Icon to display with the button text\n * - If string: treated as icon src URL, rendered using Icon component\n * - If ReactNode: rendered directly\n */\n icon?: string | React.ReactNode;\n /**\n * Icon placement relative to text (only for text buttons)\n */\n iconPlacement?: 'before' | 'after';\n /**\n * Whether the icon button should have a border (only for variant='icon')\n */\n iconBordered?: boolean;\n}\n\nconst IconWrapper = styled.span<{ $size: ButtonProps['size']; $iconPlacement: 'before' | 'after' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, $iconPlacement, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n const marginSide = $iconPlacement === 'before' ? 'margin-right' : 'margin-left';\n\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n ${marginSide}: ${sizeConfig.iconGap};\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n `;\n }}\n`;\n\nconst TextWrapper = styled.span<{ $size: ButtonProps['size'] }>`\n ${({ $size, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n return `\n padding: ${sizeConfig.textPadding || '0'};\n `;\n }}\n`;\n\nconst IconOnlyWrapper = styled.span<{ $size: ButtonProps['size'] }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const buttonConfig = theme.components.button[$size || 'medium'];\n const sizeConfig = buttonConfig?.onlyIcon || buttonConfig;\n return `\n width: ${sizeConfig.iconSize?.width || '14px'};\n height: ${sizeConfig.iconSize?.height || '14px'};\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n `;\n }}\n`;\n\nconst StyledButton = styled.button<{\n $variant: ButtonProps['variant'];\n $colorType: ButtonProps['colorType'];\n $size: ButtonProps['size'];\n $fullWidth: boolean;\n $iconBordered: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n border: none;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n\n /* Size variants */\n ${({ $size, $variant, theme }) => {\n const sizeName = $size || 'medium';\n const buttonConfig = theme.components.button[sizeName];\n\n // Icon variant: use onlyIcon config (square button with padding)\n if ($variant === 'icon') {\n const sizeConfig = buttonConfig?.onlyIcon || buttonConfig;\n return `\n padding: ${sizeConfig.padding || '7px'};\n border-radius: ${sizeConfig.borderRadius || theme.borderRadius.small};\n `;\n }\n\n // Other variants: use withIcon config\n const sizeConfig = buttonConfig?.withIcon || buttonConfig;\n return `\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n min-height: ${sizeConfig.height};\n `;\n }}\n\n /* Variant and color type styles */\n ${({ $variant, $colorType, $iconBordered, theme }) => {\n // Handle icon variant buttons\n if ($variant === 'icon') {\n const baseVariant = $iconBordered ? 'outlined' : 'text';\n const styles = theme.components.button[baseVariant]['default'];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }\n\n const variant = $variant || 'solid';\n const colorType = $colorType || 'default';\n\n // Validate colorType for variant\n if (colorType === 'status' && variant !== 'text') {\n console.warn(\n `colorType 'status' is only available for 'text' variant. Falling back to 'default'.`\n );\n }\n\n const effectiveColorType = colorType === 'status' && variant !== 'text' ? 'default' : colorType;\n const styles =\n theme.components.button[variant][\n effectiveColorType as keyof (typeof theme.components.button)[typeof variant]\n ];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n font-weight: ${styles.fontWeight};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }}\n`;\n\n/**\n * Button Component\n *\n * @example\n * // Basic button\n * <Button>button</Button>\n *\n * @example\n * // Button with icon (string URL)\n * <Button icon=\"https://example.com/icon.svg\" iconPlacement=\"before\">button</Button>\n *\n * @example\n * // Button with icon (ReactNode)\n * <Button icon={<CustomIcon />} iconPlacement=\"after\">button</Button>\n *\n * @example\n * // Icon variant button (square, no padding)\n * <Button variant=\"icon\" icon={<CustomIcon />} iconBordered />\n *\n * @example\n * // Icon variant button without border\n * <Button variant=\"icon\" icon={<CustomIcon />} />\n */\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'solid',\n colorType = 'default',\n size = 'medium',\n disabled = false,\n loading = false,\n fullWidth = false,\n icon,\n iconPlacement = 'before',\n iconBordered = false,\n children,\n ...rest\n}) => {\n return (\n <StyledButton\n $variant={variant}\n $colorType={colorType}\n $size={size}\n $fullWidth={fullWidth}\n $iconBordered={iconBordered}\n disabled={disabled || loading}\n {...rest}\n >\n {loading ? (\n <TextWrapper $size={size}>Loading...</TextWrapper>\n ) : variant === 'icon' ? (\n // Icon variant: render icon with onlyIcon wrapper (uses onlyIcon config)\n <IconOnlyWrapper $size={size}>\n {typeof icon === 'string' ? <Icon src={icon} /> : icon || children}\n </IconOnlyWrapper>\n ) : (\n <>\n {icon && iconPlacement === 'before' && (\n <IconWrapper $size={size} $iconPlacement=\"before\">\n {typeof icon === 'string' ? <Icon src={icon} /> : icon}\n </IconWrapper>\n )}\n <TextWrapper $size={size}>{children}</TextWrapper>\n {icon && iconPlacement === 'after' && (\n <IconWrapper $size={size} $iconPlacement=\"after\">\n {typeof icon === 'string' ? <Icon src={icon} /> : icon}\n </IconWrapper>\n )}\n </>\n )}\n </StyledButton>\n );\n};\n\nButton.displayName = 'Button';\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface SliderProps {\n /**\n * Current value (0-100)\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment\n */\n step?: number;\n /**\n * Whether the slider is disabled\n */\n disabled?: boolean;\n /**\n * Callback when value changes\n */\n onChange?: (value: number) => void;\n /**\n * Callback when dragging starts\n */\n onDragStart?: () => void;\n /**\n * Callback when dragging ends\n */\n onDragEnd?: () => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SliderContainer = styled.div<{\n $disabled: boolean;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 18px;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n`;\n\nconst SliderTrack = styled.div<{\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: ${({ theme }) => theme.colors.palettes.transparency['20']};\n border-radius: 1000px;\n top: 50%;\n transform: translateY(-50%);\n`;\n\nconst SliderFill = styled.div<{\n $percentage: number;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n height: 2px;\n border-radius: 1px;\n top: 50%;\n transform: translateY(-50%);\n width: ${({ $percentage }) => $percentage}%;\n background: ${({ $disabled, theme }) =>\n $disabled\n ? theme.colors.palettes.transparency['10']\n : theme.colors.palettes.gray['100']};\n`;\n\nconst SliderThumb = styled.div<{\n $percentage: number;\n $disabled: boolean;\n $isDragging: boolean;\n}>`\n position: absolute;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.blue['5']};\n left: ${({ $percentage }) => $percentage}%;\n top: 50%;\n transform: translate(-50%, -50%);\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'grab')};\n transition: ${({ $isDragging }) => ($isDragging ? 'none' : 'left 0.1s ease')};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.1);\n\n ${({ $disabled }) =>\n !$disabled &&\n `\n &:hover {\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.15);\n }\n\n &:active {\n cursor: grabbing;\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.2);\n }\n `}\n`;\n\n/**\n * Slider Component\n *\n * A slider for selecting a value from a range\n *\n * @example\n * <Slider value={35} onChange={(val) => console.log(val)} />\n */\nexport const Slider: React.FC<SliderProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n onChange,\n onDragStart,\n onDragEnd,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(\n controlledValue ?? defaultValue\n );\n const [isDragging, setIsDragging] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Calculate percentage\n const percentage = ((value - min) / (max - min)) * 100;\n\n // Update value based on position\n const updateValue = useCallback(\n (clientX: number) => {\n if (!containerRef.current || disabled) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const newPercentage = Math.max(0, Math.min(100, (offsetX / rect.width) * 100));\n const rawValue = (newPercentage / 100) * (max - min) + min;\n\n // Apply step\n const steppedValue = Math.round(rawValue / step) * step;\n const clampedValue = Math.max(min, Math.min(max, steppedValue));\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [min, max, step, disabled, controlledValue, onChange]\n );\n\n // Handle mouse down\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.preventDefault();\n setIsDragging(true);\n onDragStart?.();\n updateValue(e.clientX);\n },\n [disabled, onDragStart, updateValue]\n );\n\n // Handle mouse move\n useEffect(() => {\n if (!isDragging) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n updateValue(e.clientX);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n onDragEnd?.();\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, updateValue, onDragEnd]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let newValue = value;\n\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n newValue = Math.max(min, value - step);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n newValue = Math.min(max, value + step);\n break;\n case 'Home':\n e.preventDefault();\n newValue = min;\n break;\n case 'End':\n e.preventDefault();\n newValue = max;\n break;\n default:\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [disabled, value, min, max, step, controlledValue, onChange]\n );\n\n return (\n <SliderContainer\n ref={containerRef}\n $disabled={disabled}\n className={className}\n style={style}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n >\n <SliderTrack $disabled={disabled} />\n <SliderFill $percentage={percentage} $disabled={disabled} />\n <SliderThumb\n $percentage={percentage}\n $disabled={disabled}\n $isDragging={isDragging}\n />\n </SliderContainer>\n );\n};\n\nSlider.displayName = 'Slider';\n\n","export { Slider } from './Slider';\nexport type { SliderProps } from './Slider';\n\n\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface NumberInputProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Unit text to display after the input\n */\n unit?: string;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Callback when value changes\n * @param fixedValue - The clamped value within min/max range (can be undefined if empty)\n * @param rawValue - The original input value before clamping (can be undefined if empty)\n */\n onChange?: (fixedValue: number | undefined, rawValue: number | undefined) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst NumberInputContainer = styled.div<{\n $size: 'small' | 'large';\n $disabled: boolean;\n $alert: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n background: white;\n border: 1px solid;\n border-radius: 2px;\n flex-shrink: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n height: 24px;\n width: 72px;\n `\n : `\n height: 32px;\n width: 80px;\n `}\n\n ${({ $disabled, $alert, $isFocused, theme }) => {\n if ($disabled) {\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n cursor: not-allowed;\n `;\n }\n if ($alert) {\n return `\n border-color: ${theme.colors.palettes.red['6']};\n `;\n }\n if ($isFocused) {\n return `\n border-color: ${theme.colors.palettes.transparency['30']};\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.04);\n `;\n }\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n\n &:hover {\n border-color: ${theme.colors.palettes.transparency['20']};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.04);\n }\n `;\n }}\n`;\n\nconst InputWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 8px;\n min-width: 0;\n gap: 4px;\n`;\n\nconst UnitText = styled.span<{ $size: 'small' | 'large'; $disabled: boolean }>`\n flex-shrink: 0;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n`;\n\nconst StyledInput = styled.input<{ $size: 'small' | 'large'; $disabled: boolean }>`\n width: 100%;\n border: none;\n outline: none;\n background: transparent;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n padding: 0;\n margin: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n cursor: not-allowed;\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n /* Remove number input arrows */\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &[type='number'] {\n appearance: textfield;\n -moz-appearance: textfield;\n }\n`;\n\nconst ButtonGroup = styled.div<{ $alert: boolean; $disabled: boolean }>`\n display: flex;\n flex-direction: column;\n height: 100%;\n border-left: 1px solid;\n flex-shrink: 0;\n\n ${({ $disabled, $alert, theme }) => {\n if ($disabled) {\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }\n if ($alert) {\n return `border-color: ${theme.colors.palettes.red['6']};`;\n }\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }}\n`;\n\nconst StepButton = styled.button<{ $position: 'up' | 'down'; $alert: boolean; $disabled: boolean }>`\n flex: 1 1 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 1px 8px;\n outline: none;\n min-height: 0;\n overflow: hidden;\n\n ${({ $position, $alert, $disabled, theme }) => {\n if ($position === 'up') {\n return `\n border-bottom: 1px solid ${\n $disabled\n ? theme.colors.palettes.transparency['10']\n : $alert\n ? theme.colors.palettes.red['6']\n : theme.colors.palettes.transparency['10']\n };\n `;\n }\n return '';\n }}\n\n ${({ $disabled, theme }) => {\n if ($disabled) {\n return `\n cursor: not-allowed;\n opacity: 0.4;\n `;\n }\n return `\n &:hover {\n background-color: ${theme.colors.palettes.transparency['5']};\n }\n\n &:active {\n background-color: ${theme.colors.palettes.transparency['10']};\n }\n `;\n }}\n\n svg {\n width: 14px;\n height: 14px;\n fill: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.gray['120']};\n }\n`;\n\nconst UpArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 4.5L10.5 8.5H3.5L7 4.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\nconst DownArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 9.5L3.5 5.5H10.5L7 9.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\n/**\n * NumberInput Component\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <NumberInput value={35} onChange={(val) => console.log(val)} />\n */\nexport const NumberInput: React.FC<NumberInputProps> = ({\n value: controlledValue,\n defaultValue,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n precision,\n formatter,\n parser,\n unit,\n placeholder,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number | undefined>(controlledValue ?? defaultValue);\n const [displayValue, setDisplayValue] = useState<string>('');\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Format value for display\n const formatValue = useCallback(\n (val: number | undefined): string => {\n if (val === undefined) {\n return '';\n }\n if (formatter) {\n return formatter(val);\n }\n if (precision !== undefined) {\n return val.toFixed(precision);\n }\n return String(val);\n },\n [formatter, precision]\n );\n\n // Parse display value to number\n const parseValue = useCallback(\n (displayVal: string): number | null => {\n if (parser) {\n return parser(displayVal);\n }\n const parsed = parseFloat(displayVal);\n return isNaN(parsed) ? null : parsed;\n },\n [parser]\n );\n\n // Update display value when value changes\n useEffect(() => {\n if (!isFocused) {\n setDisplayValue(formatValue(value));\n }\n }, [value, isFocused, formatValue]);\n\n // Clamp value to min/max\n const clampValue = useCallback(\n (val: number | undefined): number | undefined => {\n if (val === undefined) {\n return undefined;\n }\n return Math.max(min, Math.min(max, val));\n },\n [min, max]\n );\n\n // Handle value change\n const handleValueChange = useCallback(\n (newValue: number | undefined) => {\n const clampedValue = clampValue(newValue);\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue, newValue);\n },\n [clampValue, controlledValue, onChange]\n );\n\n // Increment value\n const increment = useCallback(() => {\n if (disabled) return;\n const currentValue = value ?? 0;\n handleValueChange(currentValue + step);\n }, [disabled, value, step, handleValueChange]);\n\n // Decrement value\n const decrement = useCallback(() => {\n if (disabled) return;\n const currentValue = value ?? 0;\n handleValueChange(currentValue - step);\n }, [disabled, value, step, handleValueChange]);\n\n // Handle input change\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setDisplayValue(e.target.value);\n }, []);\n\n // Handle input blur\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n const trimmedValue = displayValue.trim();\n if (trimmedValue === '') {\n handleValueChange(undefined);\n setDisplayValue('');\n } else {\n const parsed = parseValue(trimmedValue);\n if (parsed !== null) {\n handleValueChange(parsed);\n } else {\n setDisplayValue(formatValue(value));\n }\n }\n }, [displayValue, parseValue, handleValueChange, value, formatValue]);\n\n // Handle input focus\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n if (value !== undefined) {\n setDisplayValue(String(value));\n } else {\n setDisplayValue('');\n }\n }, [value]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n } else if (e.key === 'Enter') {\n inputRef.current?.blur();\n }\n },\n [increment, decrement]\n );\n\n return (\n <NumberInputContainer\n $size={size}\n $disabled={disabled}\n $alert={alert}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n <InputWrapper>\n <StyledInput\n ref={inputRef}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n $size={size}\n $disabled={disabled}\n />\n {unit && (\n <UnitText $size={size} $disabled={disabled}>\n {unit}\n </UnitText>\n )}\n </InputWrapper>\n\n <ButtonGroup $alert={alert} $disabled={disabled}>\n <StepButton\n type=\"button\"\n $position=\"up\"\n $alert={alert}\n $disabled={disabled}\n onClick={increment}\n disabled={disabled}\n tabIndex={-1}\n >\n <UpArrow />\n </StepButton>\n\n <StepButton\n type=\"button\"\n $position=\"down\"\n $alert={alert}\n $disabled={disabled}\n onClick={decrement}\n disabled={disabled}\n tabIndex={-1}\n >\n <DownArrow />\n </StepButton>\n </ButtonGroup>\n </NumberInputContainer>\n );\n};\n\nNumberInput.displayName = 'NumberInput';\n","export { NumberInput } from './NumberInput';\nexport type { NumberInputProps } from './NumberInput';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\nimport { Slider } from '../Slider';\nimport { NumberInput } from '../NumberInput';\n\nexport interface SpinButtonProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Whether to show the slider\n */\n showSlider?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Callback when value changes\n */\n onChange?: (value: number | null) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SpinButtonWrapper = styled.div<{\n $showSlider: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n gap: ${({ $showSlider }) => ($showSlider ? '0' : '0')};\n width: ${({ $showSlider }) => ($showSlider ? '100%' : 'auto')};\n`;\n\nconst SliderWrapper = styled.div<{\n $size: 'small' | 'large';\n}>`\n flex: 1;\n display: flex;\n align-items: center;\n padding: ${({ $size }) => ($size === 'small' ? '7px 0' : '7px 0')};\n padding-right: ${({ $size }) => ($size === 'small' ? '8px' : '8px')};\n min-width: 0;\n`;\n\n\n/**\n * SpinButton Component - Spin Button\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <SpinButton value={35} onChange={(val) => console.log(val)} />\n */\nexport const SpinButton: React.FC<SpinButtonProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n showSlider = false,\n precision,\n formatter,\n parser,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(controlledValue ?? defaultValue);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Handle value change from NumberInput or Slider\n // NumberInput passes (fixedValue, rawValue), Slider passes single value\n const handleValueChange = useCallback(\n (fixedValue: number | undefined | null, rawValue?: number | undefined) => {\n // Handle both NumberInput signature (fixedValue, rawValue) and Slider signature (single value)\n // If rawValue is undefined, it means this is from Slider (single value)\n // If rawValue is defined, it means this is from NumberInput (two parameters)\n const newValue = rawValue === undefined\n ? (fixedValue ?? 0) // Slider: single value\n : (fixedValue ?? 0); // NumberInput: use fixedValue\n\n if (newValue === null) {\n onChange?.(null);\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [controlledValue, onChange]\n );\n\n return (\n <SpinButtonWrapper $showSlider={showSlider} className={className} style={style}>\n {showSlider && (\n <SliderWrapper $size={size}>\n <Slider\n value={value}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onChange={handleValueChange}\n />\n </SliderWrapper>\n )}\n\n <NumberInput\n value={value}\n min={min}\n max={max}\n step={step}\n size={size}\n disabled={disabled}\n alert={alert}\n precision={precision}\n formatter={formatter}\n parser={parser}\n onChange={handleValueChange}\n />\n </SpinButtonWrapper>\n );\n};\n\nSpinButton.displayName = 'SpinButton';\n","export { Button } from './Button';\nexport type { ButtonProps } from './Button';\n\nexport { SpinButton } from './SpinButton';\nexport type { SpinButtonProps } from './SpinButton';\n\n","export { Button, SpinButton } from './Button';\nexport type { ButtonProps, SpinButtonProps } from './Button';\n\nexport { Switch } from './Switch';\nexport type { SwitchProps } from './Switch';\n\nexport { Radio } from './Radio';\nexport type { RadioProps } from './Radio';\n\nexport { Checkbox } from './Checkbox';\nexport type { CheckboxProps } from './Checkbox';\n\nexport { Slider } from './Slider';\nexport type { SliderProps } from './Slider';\n\nexport { Input, SearchInput, UnderlinedInput } from './Input';\nexport type { InputProps, SearchInputProps, UnderlinedInputProps } from './Input';\n\nexport { NumberInput } from './NumberInput';\nexport type { NumberInputProps } from './NumberInput';\n\nexport { Icon, IconProvider, useIconRegistry } from './Icon';\nexport type { IconProps, IconProviderProps, IconRegistry, IconComponent } from './Icon';\n\nexport { Toast, ToastContainer, useToast, toast } from './Toast';\nexport type { ToastProps, ToastContainerProps, ToastContainerConfig } from './Toast';\n\nexport { Tabs } from './Tabs';\nexport type { TabsProps, TabItem } from './Tabs';\n\nexport { Tooltip } from './Tooltip';\nexport type { TooltipProps } from './Tooltip';\n\nexport { ToolbarButton } from './ToolbarButton';\nexport type { ToolbarButtonProps } from './ToolbarButton';\n\nexport { DropdownButton, Menu, Dropdown, MenuGlobalStyles, DropdownGlobalStyles } from './dropdown';\nexport type { DropdownButtonProps, MenuProps, MenuItem, MenuGroup, MenuDivider, MenuItemType, DropdownProps } from './dropdown';\n\nexport {\n UIConfigProvider,\n useUIConfig,\n createUIConfig,\n mergeUIConfig,\n initUIConfig,\n getUIConfig,\n getGlobalIconRegistry,\n getGlobalToastConfig,\n} from './UIConfigProvider';\n\nexport type {\n UIConfigProviderProps,\n UIConfig,\n ToastConfig,\n ToastPosition,\n ZIndexConfig,\n AnimationConfig,\n A11yConfig,\n I18nConfig,\n} from './UIConfigProvider';\n\nexport { styled } from './utils/styled';\nexport { getGlobalTheme } from './utils/context';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface SwitchProps {\n /**\n * Whether the switch is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Size variant\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Whether the switch is disabled\n */\n disabled?: boolean;\n /**\n * Callback when checked state changes\n */\n onChange?: (checked: boolean) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SwitchContainer = styled.label<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n width: ${sizeConfig.container.width};\n height: ${sizeConfig.container.height};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst Track = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n border-radius: ${sizeConfig.track.borderRadius};\n width: ${sizeConfig.track.width};\n height: ${sizeConfig.track.height};\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.track.backgroundDisabled};\n box-shadow: ${stateConfig.track.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.track.background};\n box-shadow: ${stateConfig.track.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover {\n background: ${stateConfig.track.backgroundHover};\n box-shadow: ${stateConfig.track.boxShadowHover};\n }\n `;\n }}\n`;\n\nconst Thumb = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n top: 50%;\n border-style: solid;\n box-sizing: border-box;\n left: 0;\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, $checked, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n const thumbSize = sizeConfig.thumb.size;\n const thumbOffset = sizeConfig.thumb.offset;\n const thumbBorderRadius = sizeConfig.thumb.borderRadius;\n const thumbBorderWidth = sizeConfig.thumb.borderWidth;\n\n // Calculate thumb position based on track width\n const trackWidth = sizeConfig.container.width;\n const thumbSizeNum = parseFloat(thumbSize);\n const offsetNum = parseFloat(thumbOffset);\n const trackWidthNum = parseFloat(trackWidth);\n\n // Position from left (unchecked: offset, checked: trackWidth - thumbSize - offset)\n const leftPosition = $checked\n ? `${trackWidthNum - thumbSizeNum - offsetNum}px`\n : thumbOffset;\n\n return `\n width: ${thumbSize};\n height: ${thumbSize};\n border-radius: ${thumbBorderRadius};\n border-width: ${thumbBorderWidth};\n transform: translate(${leftPosition}, -50%);\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.thumb.backgroundDisabled};\n border-color: ${stateConfig.thumb.borderColorDisabled};\n box-shadow: ${stateConfig.thumb.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.thumb.background};\n border-color: ${stateConfig.thumb.borderColor};\n box-shadow: ${stateConfig.thumb.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover & {\n background: ${stateConfig.thumb.backgroundHover};\n border-color: ${stateConfig.thumb.borderColorHover};\n box-shadow: ${stateConfig.thumb.boxShadowHover};\n }\n `;\n }}\n`;\n\n/**\n * Switch Component\n *\n * A toggle switch for binary states\n *\n * @example\n * <Switch checked={true} onChange={(checked) => console.log(checked)} />\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n size = 'large',\n disabled = false,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n return (\n <SwitchContainer\n $size={size}\n $checked={checked}\n $disabled={disabled}\n className={className}\n style={style}\n >\n <HiddenInput\n type=\"checkbox\"\n checked={checked}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <Track\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <Thumb\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n </SwitchContainer>\n );\n};\n\nSwitch.displayName = 'Switch';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface RadioProps {\n /**\n * Whether the radio is checked\n * @default false\n */\n checked?: boolean;\n /**\n * Default checked state\n * @default false\n */\n defaultChecked?: boolean;\n /**\n * Whether the radio is disabled\n */\n disabled?: boolean;\n /**\n * Value of the radio\n */\n value?: string | number;\n /**\n * Name attribute for grouping radios\n */\n name?: string;\n /**\n * ID attribute for the radio (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * prevent default click event, if true, change event will not be triggered\n * @default false\n */\n clickPreventDefault?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst RadioContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.radio.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst RadioOuter = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ $checked, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.radio.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.radio.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n\n return `\n :hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n :active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst RadioInner = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n background: white;\n opacity: ${({ $checked }) => ($checked ? 1 : 0)};\n transition: opacity 0.2s ease;\n\n ${({ theme }) => {\n const dotSize = theme.components.radio.small.dotSize;\n return `\n width: ${dotSize};\n height: ${dotSize};\n `;\n }}\n`;\n\n/**\n * Radio Component\n *\n * A radio button for selecting one option from a group\n *\n * @example\n * <Radio checked={true} onChange={(e) => console.log(e.target.checked)} />\n */\nexport const Radio: React.FC<RadioProps> = ({\n clickPreventDefault = false,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n // Prevent event bubbling to avoid triggering parent element's click handlers\n if (clickPreventDefault) {\n e.preventDefault();\n }\n }, []);\n\n return (\n <RadioContainer\n $disabled={disabled}\n className={className}\n style={style}\n onClick={handleContainerClick}\n >\n <HiddenInput\n type=\"radio\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <RadioOuter\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <RadioInner\n $checked={checked}\n $disabled={disabled}\n />\n </RadioContainer>\n );\n};\n\nRadio.displayName = 'Radio';\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface CheckboxProps {\n /**\n * Whether the checkbox is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Whether the checkbox is in indeterminate state\n */\n indeterminate?: boolean;\n /**\n * Whether the checkbox is disabled\n */\n disabled?: boolean;\n /**\n * Value of the checkbox\n */\n value?: string | number;\n /**\n * Name attribute for the checkbox\n */\n name?: string;\n /**\n * ID attribute for the checkbox (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * prevent default click event, if true, change event will not be triggered\n * @default false\n */\n clickPreventDefault?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst CheckboxContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst CheckboxBox = styled.div<{\n $checked: boolean;\n $indeterminate: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 1px;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n border-radius: ${sizeConfig.borderRadius};\n `;\n }}\n\n ${({ $checked, $indeterminate, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.checkbox.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n if ($indeterminate) {\n const indeterminateConfig = theme.components.checkbox.indeterminate;\n return `\n background: ${indeterminateConfig.background};\n border-color: ${indeterminateConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.checkbox.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, $indeterminate, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n\n return `\n :hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n :active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $visible: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n transition: opacity 0.2s ease;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ theme }) => {\n const iconSize = theme.components.checkbox.small.iconSize;\n return `\n width: ${iconSize.width};\n height: ${iconSize.height};\n `;\n }}\n\n svg, img {\n display: block;\n }\n`;\n\nconst DefaultIndeterminateIcon = styled.div`\n width: 8px;\n height: 2px;\n background: white;\n`;\n\n/**\n * Checkbox Component\n *\n * A checkbox for selecting multiple options\n *\n * @example\n * <Checkbox checked={true} onChange={(e) => console.log(e.target.checked)} />\n *\n * @example\n * // Indeterminate state\n * <Checkbox indeterminate={true} />\n */\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n indeterminate = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n clickPreventDefault = false,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n // Set indeterminate property on the native input element\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n // Prevent event bubbling to avoid triggering parent element's click handlers\n if (clickPreventDefault) {\n e.preventDefault();\n }\n }, []);\n\n return (\n <CheckboxContainer\n $disabled={disabled}\n className={className}\n style={style}\n onClick={handleContainerClick}\n >\n <HiddenInput\n ref={inputRef}\n type=\"checkbox\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <CheckboxBox\n $checked={checked}\n $indeterminate={indeterminate}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n {!indeterminate && (\n <IconWrapper $visible={checked}>\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"#fff\">\n <path d=\"M1.05426 3.16164L0 4.27945L3.50904 8L10 1.11781L8.94573 0L3.50904 5.76438L1.05426 3.16164Z\" />\n </svg>\n </IconWrapper>\n )}\n {indeterminate && (\n <IconWrapper $visible={indeterminate}>\n <DefaultIndeterminateIcon />\n </IconWrapper>\n )}\n </CheckboxContainer>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\n","import React, { forwardRef, useState } from 'react';\nimport { styled } from '../utils/styled';\n\ntype InputSize = 'mini' | 'small' | 'medium' | 'large';\ntype LineType = 'outlined' | 'underlined' | 'borderless';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n /**\n * Input line type\n */\n lineType?: LineType;\n /**\n * Input size\n */\n size?: InputSize;\n /**\n * Whether the input has an error state\n */\n error?: boolean;\n /**\n * Whether the input is in readonly mode\n */\n readOnly?: boolean;\n /**\n * Node to display before the input\n */\n prefixNode?: React.ReactNode;\n /**\n * Node to display after the input\n */\n suffixNode?: React.ReactNode;\n /**\n * Whether to show clear button when input has value\n */\n clearable?: boolean;\n /**\n * Clear button click handler\n */\n onClear?: () => void;\n /**\n * Custom clear icon\n */\n clearIcon?: React.ReactNode;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\n /**\n * Custom input className\n */\n inputClassName?: string;\n /**\n * Custom input styles\n */\n inputStyle?: React.CSSProperties;\n}\n\nconst InputContainer = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n}>`\n display: inline-flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n `;\n }}\n`;\n\nconst InputWrapper = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n $error: boolean;\n $disabled: boolean;\n $readOnly: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n flex: 1;\n transition: all 0.2s ease;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n gap: ${sizeConfig.gap || '4px'};\n ${\n $lineType === 'outlined'\n ? `\n border-radius: ${sizeConfig.borderRadius};\n `\n : ''\n }\n `;\n }}\n\n ${({ $error, $disabled, $readOnly, $isFocused, $lineType, theme, $size }) => {\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const stateConfig = typeConfig?.state;\n if (!stateConfig) return '';\n\n let borderColor = stateConfig.borderColor;\n let background = stateConfig.background;\n let boxShadow = 'none';\n\n if ($disabled) {\n borderColor = stateConfig.borderColorDisabled;\n background = stateConfig.backgroundDisabled;\n } else if ($readOnly) {\n borderColor = stateConfig.borderColorReadonly || stateConfig.borderColor;\n background = stateConfig.backgroundReadonly || stateConfig.background;\n } else if ($error) {\n borderColor = stateConfig.borderColorError;\n background = $lineType === 'outlined' ? stateConfig.backgroundActive : stateConfig.background;\n } else if ($isFocused) {\n borderColor = stateConfig.borderColorActive;\n background = stateConfig.backgroundActive;\n if ($lineType === 'outlined') {\n const size = $size || 'medium';\n const sizeConfig = typeConfig?.[size];\n boxShadow = sizeConfig?.boxShadowActive || 'none';\n }\n }\n\n if ($lineType === 'borderless') {\n // borderless type: no border, no boxShadow\n return `\n border: none;\n background: transparent;\n box-shadow: none;\n\n &:hover:not(:disabled) {\n background: transparent;\n }\n `;\n } else if ($lineType === 'outlined') {\n return `\n border: 1px solid ${borderColor};\n background: ${background};\n box-shadow: ${boxShadow};\n\n &:hover:not(:disabled) {\n ${\n !$disabled && !$readOnly && !$isFocused\n ? `\n border-color: ${stateConfig.borderColorHover};\n background: ${stateConfig.backgroundHover};\n `\n : ''\n }\n }\n `;\n } else {\n // underlined type\n return `\n background: ${background};\n border-bottom: 1px solid ${$error ? borderColor : $isFocused ? borderColor : 'transparent'};\n\n &:hover:not(:disabled) {\n ${\n !$disabled && !$isFocused && !$error\n ? `\n border-bottom-color: ${stateConfig.borderColorHover};\n `\n : ''\n }\n }\n `;\n }\n }}\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n opacity: ${$disabled ? '0.6' : '1'};\n `}\n`;\n\nconst ContentBlock = styled.div<{\n $size: InputSize;\n $lineType: LineType;\n}>`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n padding: ${sizeConfig.contentPadding || '0'};\n gap: ${sizeConfig.gap || '4px'};\n `;\n }}\n`;\n\nconst StyledInput = styled.input<{\n $size: InputSize;\n $lineType: LineType;\n $disabled: boolean;\n $readOnly: boolean;\n $isFocused: boolean;\n}>`\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n min-width: 0;\n padding: 0;\n margin: 0;\n font-family: inherit;\n\n ${({ $size, $lineType, $disabled, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n const stateConfig = typeConfig?.state;\n if (!sizeConfig || !stateConfig) return '';\n\n // textColorNormal is used for all states except disabled\n const textColor = $disabled ? stateConfig.textColorDisabled : stateConfig.textColorNormal;\n\n return `\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n color: ${textColor};\n `;\n }}\n\n &::placeholder {\n color: ${({ $isFocused, $lineType, theme }) => {\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const stateConfig = typeConfig?.state;\n return $isFocused\n ? stateConfig?.placeholderColorHover || 'rgba(65, 70, 75, 0.3)'\n : stateConfig?.placeholderColorNormal || 'rgba(65, 70, 75, 0.3)';\n }};\n }\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n `}\n\n ${({ $readOnly }) =>\n $readOnly &&\n `\n cursor: default;\n `}\n`;\n\nconst PrefixNode = styled.div<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\nconst SuffixNode = styled.div<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n if (!sizeConfig) return '';\n\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\nconst ClearButton = styled.button<{ $size: InputSize; $lineType: LineType }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n margin: 0;\n outline: none;\n transition: opacity 0.2s ease;\n\n ${({ $size, $lineType, theme }) => {\n const size = $size || 'medium';\n const typeConfig =\n $lineType === 'underlined'\n ? theme.components?.input?.underlined\n : theme.components?.input?.outlined;\n const sizeConfig = typeConfig?.[size];\n const clearIconSize = sizeConfig?.clearIcon?.size;\n if (!clearIconSize) return '';\n\n return `\n width: ${clearIconSize.width};\n height: ${clearIconSize.height};\n\n svg {\n width: ${clearIconSize.width};\n height: ${clearIconSize.height};\n }\n `;\n }}\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n`;\n\nconst AlertLine = styled.div`\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 1px;\n background-color: ${({ theme }) => theme.colors?.palettes?.red?.['6'] || '#E95555'};\n`;\n\nconst DefaultClearIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M8.00148 8.56042L11.3306 11.8884L11.8961 11.3226L8.56774 7.99531L11.8641 4.70566L11.299 4.1394L8.00196 7.42971L4.70055 4.12939L4.13495 4.69517L7.4357 7.99483L4.10889 11.3149L4.674 11.8812L8.00148 8.56042Z\"\n fill=\"#41464B\"\n fillOpacity=\"0.6\"\n />\n </svg>\n);\n\n/**\n * Input Component\n *\n * @example\n * // Basic outlined input (default)\n * <Input placeholder=\"Enter text\" />\n *\n * @example\n * // Underlined input\n * <Input lineType=\"underlined\" placeholder=\"Enter text\" />\n *\n * @example\n * // Input with prefix and suffix\n * <Input prefixNode={<SearchIcon />} suffixNode={<Icon />} />\n *\n * @example\n * // Input with clearable\n * <Input clearable onClear={() => console.log('cleared')} />\n *\n * @example\n * // Input with error state\n * <Input error placeholder=\"Enter text\" />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n lineType = 'outlined',\n size = 'medium',\n error = false,\n disabled = false,\n readOnly = false,\n prefixNode,\n suffixNode,\n clearable = false,\n onClear,\n clearIcon,\n className,\n style,\n inputClassName,\n inputStyle,\n onFocus,\n onBlur,\n value,\n onChange,\n ...rest\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState(\n value !== undefined ? value : (rest.defaultValue as string) || ''\n );\n\n // Controlled vs Uncontrolled\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const hasValue = !!currentValue && String(currentValue).length > 0;\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isControlled) {\n setInternalValue('');\n }\n\n // Trigger onChange event for controlled components\n if (onChange && ref && 'current' in ref && ref.current) {\n const syntheticEvent = {\n target: { ...ref.current, value: '' },\n currentTarget: ref.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n\n onClear?.();\n };\n\n // Show clear button when clearable and has value\n const shouldShowClearButton = clearable && hasValue && !disabled && !readOnly;\n const clearButtonNode = shouldShowClearButton ? (\n <ClearButton\n type=\"button\"\n $size={size}\n $lineType={lineType}\n onClick={handleClear}\n aria-label=\"Clear\"\n tabIndex={-1}\n >\n {clearIcon || <DefaultClearIcon />}\n </ClearButton>\n ) : null;\n\n return (\n <InputContainer $size={size} $lineType={lineType} className={className} style={style}>\n <InputWrapper\n $size={size}\n $lineType={lineType}\n $error={error}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n >\n {prefixNode && (\n <PrefixNode $size={size} $lineType={lineType}>\n {prefixNode}\n </PrefixNode>\n )}\n <ContentBlock $size={size} $lineType={lineType}>\n <StyledInput\n ref={ref}\n $size={size}\n $lineType={lineType}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n disabled={disabled}\n readOnly={readOnly}\n value={currentValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={inputClassName}\n style={inputStyle}\n {...rest}\n />\n {clearButtonNode}\n </ContentBlock>\n {suffixNode && (\n <SuffixNode $size={size} $lineType={lineType}>\n {suffixNode}\n </SuffixNode>\n )}\n </InputWrapper>\n {lineType === 'underlined' && error && <AlertLine />}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import React, { forwardRef } from 'react';\nimport { styled } from '../utils/styled';\nimport { Input, InputProps } from './Input';\nimport { Icon } from '../Icon';\nimport { getGlobalTheme } from '../utils/context';\n\nexport interface SearchInputProps extends Omit<InputProps, 'prefixNode' | 'suffixNode'> {\n /**\n * Line type (outlined or underlined)\n */\n lineType?: 'outlined' | 'underlined';\n /**\n * SearchInput size\n */\n size?: 'mini' | 'small' | 'medium' | 'large';\n /**\n * Whether to show the clear button when input has value\n */\n clearable?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom search icon (URL string or React node)\n */\n searchIcon?: string | React.ReactNode;\n}\n\nconst SearchIconWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors?.palettes?.transparency?.['100'] || '#41464b'};\n }\n`;\n\nconst DefaultSearchIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M7.92359 14.0468C9.40656 14.0468 10.7664 13.5197 11.826 12.6426L13.0034 13.8199C12.8604 14.2604 12.9638 14.7635 13.3138 15.1134L14.4012 16.2008C14.8981 16.6977 15.7036 16.6977 16.2004 16.2008C16.6973 15.704 16.6973 14.8985 16.2004 14.4017L15.113 13.3143C14.7549 12.9562 14.2364 12.8562 13.7887 13.0143L12.6234 11.849C13.5122 10.7862 14.0471 9.41727 14.0471 7.92343C14.0471 4.54158 11.3055 1.80005 7.92359 1.80005C4.54165 1.80005 1.80005 4.54158 1.80005 7.92343C1.80005 11.3053 4.54165 14.0468 7.92359 14.0468ZM7.92359 12.6968C10.56 12.6968 12.6971 10.5597 12.6971 7.92343C12.6971 5.2872 10.56 3.15005 7.92359 3.15005C5.2872 3.15005 3.15005 5.2872 3.15005 7.92343C3.15005 10.5597 5.2872 12.6968 7.92359 12.6968Z\" fill=\"#41464B\"/>\n </svg>\n);\n\n\n/**\n * SearchInput Component\n *\n * A wrapper around Input component with search icon and clear functionality\n *\n * @example\n * // Basic search input\n * <SearchInput placeholder=\"Search...\" />\n *\n * @example\n * // Underlined search input\n * <SearchInput lineType=\"underlined\" placeholder=\"Search...\" />\n *\n * @example\n * // Search input without clearable\n * <SearchInput clearable={false} placeholder=\"Search...\" />\n *\n * @example\n * // Different sizes\n * <SearchInput size=\"small\" placeholder=\"Search...\" />\n * <SearchInput size=\"medium\" placeholder=\"Search...\" />\n * <SearchInput size=\"large\" placeholder=\"Search...\" />\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n lineType = 'outlined',\n size = 'medium',\n clearable = true,\n onClear,\n searchIcon,\n ...rest\n },\n ref\n ) => {\n // Render search icon by priority:\n // 1. props.searchIcon (string or ReactNode)\n // 2. theme.components.inputSearch.searchIcon.url\n // 3. DefaultSearchIcon\n const getSearchIconElement = () => {\n // Priority 1: props.searchIcon\n if (searchIcon !== undefined) {\n if (typeof searchIcon === 'string') {\n return <Icon src={searchIcon} />;\n }\n return searchIcon;\n }\n\n // Priority 2: theme icon\n const theme = getGlobalTheme();\n const themeIconUrl = theme?.components?.inputSearch?.searchIcon?.url;\n if (themeIconUrl) {\n return <Icon src={themeIconUrl} />;\n }\n\n // Priority 3: default icon\n return <DefaultSearchIcon />;\n };\n\n const prefixNode = (\n <SearchIconWrapper>\n {getSearchIconElement()}\n </SearchIconWrapper>\n );\n\n return (\n <Input\n ref={ref}\n lineType={lineType}\n size={size}\n prefixNode={prefixNode}\n clearable={clearable}\n onClear={onClear}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = 'SearchInput';\n\n","// React is required for JSX transform (jsx: \"react\")\nimport React, { forwardRef } from 'react';\nimport { Input, InputProps } from './Input';\n\n/**\n * UnderlinedInput Component\n *\n * @deprecated Use <Input lineType=\"underlined\" /> instead\n *\n * This component is a simple alias for Input with lineType=\"underlined\"\n * and will be removed in a future version.\n *\n * @example\n * // Old way (deprecated)\n * <UnderlinedInput placeholder=\"Search...\" />\n *\n * // New way (recommended)\n * <Input lineType=\"underlined\" placeholder=\"Search...\" />\n */\nexport const UnderlinedInput = forwardRef<HTMLInputElement, Omit<InputProps, 'lineType'>>(\n (props, ref) => {\n // React is used implicitly by JSX transform\n void React;\n return <Input {...props} lineType=\"underlined\" ref={ref} />;\n }\n);\n\nUnderlinedInput.displayName = 'UnderlinedInput';\n\nexport type { InputProps as UnderlinedInputProps };\n","export { Toast } from './Toast';\nexport type { ToastProps } from './Toast';\n\nexport { ToastContainer, useToast } from './ToastContainer';\nexport type { ToastContainerProps } from './ToastContainer';\n\nexport { toast } from './toastManager';\nexport type { ToastContainerConfig } from './toastManager';\n\n","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\nimport { Toast, ToastProps } from './Toast';\n\ninterface ToastItem extends Omit<ToastProps, 'onClose'> {\n id: string;\n}\n\n\n\ninterface ToastContextValue {\n showToast: (props: Omit<ToastProps, 'onClose'>) => string;\n hideToast: (id: string) => void;\n success: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n info: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n error: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n warn: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n loading: (message: React.ReactNode, options?: Partial<ToastProps>) => string;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\ninterface ToastWrapperProps {\n $placement: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\n}\n\nconst ToastWrapper = styled.div<ToastWrapperProps>`\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n\n > * {\n pointer-events: auto;\n }\n\n ${({ $placement, theme }) => {\n const offset = theme.components?.toast?.offset || { vertical: '24px', horizontal: '24px' };\n const vertical = offset.vertical || '24px';\n const horizontal = offset.horizontal || '24px';\n\n const styles: Record<string, string> = {\n 'top-right': `\n top: ${vertical};\n right: ${horizontal};\n `,\n 'top-left': `\n top: ${vertical};\n left: ${horizontal};\n `,\n 'top-center': `\n top: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n 'bottom-right': `\n bottom: ${vertical};\n right: ${horizontal};\n `,\n 'bottom-left': `\n bottom: ${vertical};\n left: ${horizontal};\n `,\n 'bottom-center': `\n bottom: ${vertical};\n left: 50%;\n transform: translateX(-50%);\n `,\n };\n\n return styles[$placement] || styles['top-right'];\n }}\n`;\n\nexport interface ToastContainerProps {\n placement?: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\n /**\n * Maximum number of toasts to show at once\n */\n maxCount?: number;\n /**\n * Default duration for auto-close (ms)\n */\n defaultDuration?: number;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * ToastContainer Component\n *\n * Provides toast context and manages toast display\n *\n * @example\n * <ToastContainer>\n * <App />\n * </ToastContainer>\n */\nexport const ToastContainer: React.FC<ToastContainerProps> = ({\n placement = 'top-right',\n maxCount = 5,\n defaultDuration = 3000,\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const showToast = useCallback((props: Omit<ToastProps, 'onClose'>) => {\n const id = `toast-${Date.now()}-${Math.random()}`;\n const newToast: ToastItem = {\n ...props,\n id,\n duration: props.duration ?? defaultDuration,\n };\n\n setToasts((prev) => {\n const updated = [...prev, newToast];\n // Limit to maxCount\n return updated.slice(-maxCount);\n });\n\n return id;\n }, [maxCount, defaultDuration]);\n\n const hideToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const success = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'success', message });\n }, [showToast]);\n\n const info = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'info', message });\n }, [showToast]);\n\n const error = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'error', message });\n }, [showToast]);\n\n const warn = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'warn', message });\n }, [showToast]);\n\n const loading = useCallback((message: React.ReactNode, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'loading', message });\n }, [showToast]);\n\n const contextValue: ToastContextValue = {\n showToast,\n hideToast,\n success,\n info,\n error,\n warn,\n loading,\n };\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <ToastWrapper $placement={placement}>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n onClose={() => hideToast(toast.id)}\n />\n ))}\n </ToastWrapper>\n </ToastContext.Provider>\n );\n};\n\n/**\n * Hook to access toast methods\n *\n * @example\n * const toast = useToast();\n * toast.success('Operation successful!');\n * toast.error('Something went wrong');\n */\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within ToastContainer');\n }\n return context;\n};\n\nToastContainer.displayName = 'ToastContainer';\n\n","import React, { useState, useCallback } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface TabItem {\n /**\n * Unique key for the tab\n */\n key: string;\n /**\n * Tab label\n */\n label: string;\n /**\n * Whether the tab is disabled\n */\n disabled?: boolean;\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n}\n\nexport interface TabsProps {\n /**\n * Tab items\n */\n items: TabItem[];\n /**\n * Active tab key\n */\n activeKey?: string;\n /**\n * Default active tab key\n */\n defaultActiveKey?: string;\n /**\n * Tab variant\n */\n variant?: 'line' | 'card';\n /**\n * Tab size\n */\n size?: 'large';\n /**\n * Callback when tab changes\n */\n onChange?: (key: string) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst TabContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TabList = styled.div<{\n $variant: 'line' | 'card';\n}>`\n display: flex;\n align-items: center;\n position: relative;\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n return `\n gap: ${variantConfig.layout.gap};\n `;\n }}\n\n ${({ $variant }) => {\n if ($variant === 'line') {\n return `\n border-bottom: 2px solid rgba(65, 70, 75, 0.1);\n `;\n }\n return '';\n }}\n`;\n\nconst TabItem = styled.button<{\n $variant: 'line' | 'card';\n $active: boolean;\n $disabled: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n border: none;\n outline: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n transition: all 0.2s ease;\n position: relative;\n white-space: nowrap;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.tab.large;\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n font-weight: ${sizeConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, $active, $disabled, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n if ($disabled) {\n return `\n background: ${itemConfig.backgroundDisabled};\n border-color: ${itemConfig.borderColorDisabled};\n color: ${itemConfig.colorDisabled};\n `;\n }\n\n if ($active) {\n return `\n background: ${itemConfig.backgroundActive};\n border-color: ${itemConfig.borderColorActive};\n color: ${itemConfig.colorActive};\n `;\n }\n\n return `\n background: ${itemConfig.background};\n border-color: ${itemConfig.borderColor};\n color: ${itemConfig.color};\n `;\n }}\n\n ${({ $variant, $disabled, theme }) => {\n if ($disabled) return '';\n\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n return `\n &:hover {\n background: ${itemConfig.backgroundHover};\n border-color: ${itemConfig.borderColorHover};\n color: ${itemConfig.colorHover};\n }\n `;\n }}\n\n ${({ $variant, $active }) => {\n if ($variant === 'line' && $active) {\n return `\n &::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n right: 0;\n height: 2px;\n background: currentColor;\n }\n `;\n }\n\n if ($variant === 'card') {\n return `\n border: 1px solid;\n ${\n $active\n ? `\n border-bottom-color: transparent;\n margin-bottom: -1px;\n `\n : ''\n }\n `;\n }\n\n return '';\n }}\n`;\n\n/**\n * Tab Component\n *\n * A tab component with line and card variants\n *\n * @example\n * <Tab\n * items={[\n * { key: '1', label: 'Tab 1' },\n * { key: '2', label: 'Tab 2' },\n * ]}\n * defaultActiveKey=\"1\"\n * />\n */\nexport const Tabs: React.FC<TabsProps> = ({\n items,\n activeKey: controlledActiveKey,\n defaultActiveKey,\n variant = 'line',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _size = 'large',\n onChange,\n className,\n style,\n}) => {\n const [internalActiveKey, setInternalActiveKey] = useState<string>(\n controlledActiveKey ?? defaultActiveKey ?? items[0]?.key ?? ''\n );\n\n const activeKey = controlledActiveKey !== undefined ? controlledActiveKey : internalActiveKey;\n\n const handleTabClick = useCallback(\n (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n\n onChange?.(key);\n },\n [controlledActiveKey, onChange]\n );\n\n return (\n <TabContainer className={className} style={style}>\n <TabList $variant={variant} role=\"tablist\">\n {items.map((item) => (\n <TabItem\n key={item.key}\n $variant={variant}\n $active={activeKey === item.key}\n $disabled={item.disabled || false}\n onClick={() => handleTabClick(item.key, item.disabled)}\n role=\"tab\"\n aria-selected={activeKey === item.key}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n type=\"button\"\n >\n {item.icon && <span>{item.icon}</span>}\n {item.label}\n </TabItem>\n ))}\n </TabList>\n </TabContainer>\n );\n};\n\nTabs.displayName = 'Tab';\n","import { createGlobalStyle } from 'styled-components';\nimport { getGlobalTheme } from '../utils/context';\n\nconst theme = getGlobalTheme()\n\n// Arrow size is 5px, tooltip needs space for the arrow to display\nconst arrowSize = 5;\nconst paddingDistance = `${arrowSize}px`; // 8px - space for arrow (5px) + gap (3px)\nconst arrowDistance = `${arrowSize}px`; // 3px - arrow positioned to overlap with content slightly\n\n// Tooltip global styles - includes base styles and all variant/size combinations\nexport const TooltipGlobalStyles = createGlobalStyle`\n /* Base tooltip container */\n .od-tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n visibility: visible;\n font-size: 12px;\n line-height: 1.5;\n opacity: 1;\n }\n\n .od-tooltip-hidden {\n display: none;\n }\n\n /* Tooltip content wrapper */\n .od-tooltip-content {\n position: relative;\n }\n\n /* Tooltip inner content */\n .od-tooltip-inner {\n padding: 6px 8px;\n text-align: left;\n white-space: nowrap;\n min-height: unset;\n text-align: center;\n }\n\n /* Tooltip arrow base */\n .od-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n\n .od-tooltip-placement-top,\n .od-tooltip-placement-topLeft,\n .od-tooltip-placement-topRight {\n padding-bottom: ${paddingDistance};\n }\n\n .od-tooltip-placement-right,\n .od-tooltip-placement-rightTop,\n .od-tooltip-placement-rightBottom {\n padding-left: ${paddingDistance};\n }\n\n .od-tooltip-placement-bottom,\n .od-tooltip-placement-bottomLeft,\n .od-tooltip-placement-bottomRight {\n padding-top: ${paddingDistance};\n }\n\n .od-tooltip-placement-left,\n .od-tooltip-placement-leftTop,\n .od-tooltip-placement-leftBottom {\n padding-right: ${paddingDistance};\n }\n\n /* Placement specific adjustments - position arrows close to content edge */\n .od-tooltip-placement-top .od-tooltip-arrow,\n .od-tooltip-placement-topLeft .od-tooltip-arrow,\n .od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n }\n\n .od-tooltip-placement-right .od-tooltip-arrow,\n .od-tooltip-placement-rightTop .od-tooltip-arrow,\n .od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n }\n\n .od-tooltip-placement-left .od-tooltip-arrow,\n .od-tooltip-placement-leftTop .od-tooltip-arrow,\n .od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n }\n\n .od-tooltip-placement-bottom .od-tooltip-arrow,\n .od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n }\n\n /* Alignment adjustments */\n .od-tooltip-placement-topLeft .od-tooltip-arrow,\n .od-tooltip-placement-bottomLeft .od-tooltip-arrow {\n left: 15%;\n }\n\n .od-tooltip-placement-topRight .od-tooltip-arrow,\n .od-tooltip-placement-bottomRight .od-tooltip-arrow {\n right: 15%;\n }\n\n .od-tooltip-placement-rightTop .od-tooltip-arrow,\n .od-tooltip-placement-leftTop .od-tooltip-arrow {\n top: 15%;\n }\n\n .od-tooltip-placement-rightBottom .od-tooltip-arrow,\n .od-tooltip-placement-leftBottom .od-tooltip-arrow {\n bottom: 15%;\n }\n\n .od-tooltip.od-tooltip-zoom-enter,\n .od-tooltip.od-tooltip-zoom-leave {\n display: block;\n }\n\n .od-tooltip-zoom-enter,\n .od-tooltip-zoom-appear {\n opacity: 0;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28);\n animation-play-state: paused;\n }\n\n .od-tooltip-zoom-leave {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05);\n animation-play-state: paused;\n }\n\n .od-tooltip-zoom-enter.od-tooltip-zoom-enter-active,\n .od-tooltip-zoom-appear.od-tooltip-zoom-appear-active {\n animation-name: rcToolTipZoomIn;\n animation-play-state: running;\n }\n\n .od-tooltip-zoom-leave.od-tooltip-zoom-leave-active {\n animation-name: rcToolTipZoomOut;\n animation-play-state: running;\n }\n\n @keyframes rcToolTipZoomIn {\n 0% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n 100% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n }\n\n @keyframes rcToolTipZoomOut {\n 0% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n 100% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n }\n\n /* Black variant */\n .tooltip-variant-black .od-tooltip-inner {\n background: ${() => theme.components.tooltip.black.background};\n border: 1px solid ${() => theme.components.tooltip.black.borderColor};\n color: ${() => theme.components.tooltip.black.color};\n border-radius: ${() => theme.components.tooltip.black.borderRadius};\n padding: ${() => theme.components.tooltip.black.padding};\n box-shadow: ${() => theme.components.tooltip.black.boxShadow};\n font-size: ${() => theme.components.tooltip.black.fontSize};\n line-height: ${() => theme.components.tooltip.black.lineHeight};\n font-weight: ${() => theme.components.tooltip.black.fontWeight};\n max-width: ${() => theme.components.tooltip.black.maxWidth};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-black.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-black.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.black.background};\n }\n\n /* White variant - small size */\n .tooltip-variant-white.tooltip-size-small .od-tooltip-inner {\n background: ${() => theme.components.tooltip.white.small.background};\n border: 1px solid ${() => theme.components.tooltip.white.small.borderColor};\n color: ${() => theme.components.tooltip.white.small.color};\n border-radius: ${() => theme.components.tooltip.white.small.borderRadius};\n padding: ${() => theme.components.tooltip.white.small.padding};\n box-shadow: ${() => theme.components.tooltip.white.small.boxShadow};\n font-size: ${() => theme.components.tooltip.white.small.fontSize};\n line-height: ${() => theme.components.tooltip.white.small.lineHeight};\n font-weight: ${() => theme.components.tooltip.white.small.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n /* White variant - large size */\n .tooltip-variant-white.tooltip-size-large .od-tooltip-inner {\n background: ${() => theme.components.tooltip.white.large.background};\n border: 1px solid ${() => theme.components.tooltip.white.large.borderColor};\n color: ${() => theme.components.tooltip.white.large.color};\n border-radius: ${() => theme.components.tooltip.white.large.borderRadius};\n padding: ${() => theme.components.tooltip.white.large.padding};\n box-shadow: ${() => theme.components.tooltip.white.large.boxShadow};\n font-size: ${() => theme.components.tooltip.white.large.fontSize};\n line-height: ${() => theme.components.tooltip.white.large.lineHeight};\n font-weight: ${() => theme.components.tooltip.white.large.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-top .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-topLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-topRight .od-tooltip-arrow {\n bottom: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px 0;\n border-top-color: ${() => theme.components.tooltip.white.large.borderColor};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-right .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-rightTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-rightBottom .od-tooltip-arrow {\n left: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px ${arrowSize}px ${arrowSize}px 0;\n border-right-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-left .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-leftTop .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-leftBottom .od-tooltip-arrow {\n right: ${arrowDistance};\n margin-top: -${arrowSize}px;\n border-width: ${arrowSize}px 0 ${arrowSize}px ${arrowSize}px;\n border-left-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottom .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottomLeft .od-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.od-tooltip-placement-bottomRight .od-tooltip-arrow {\n top: ${arrowDistance};\n margin-left: -${arrowSize}px;\n border-width: 0 ${arrowSize}px ${arrowSize}px;\n border-bottom-color: ${() => theme.components.tooltip.white.large.background};\n }\n`;\n","import React from 'react';\nimport type { ReactElement } from 'react';\nimport type { GlobalStyleComponent } from 'styled-components';\nimport { getGlobalRenderFunction } from './context';\n\nconst injectedStyles = new Set<string>();\n\n/**\n * Style Manager\n *\n * Manages global style injection on demand.\n * Styles are injected only once when first component is used.\n */\nexport const styleManager = {\n /**\n * Inject global styles on demand\n * @param id Unique identifier for the style (e.g., 'od-tooltip-styles')\n * @param StyleComponent The styled component to inject\n */\n inject: (id: string, StyleComponent: React.ComponentType<any> | GlobalStyleComponent<any, any>) => {\n if (injectedStyles.has(id) || typeof document === 'undefined') {\n return;\n }\n\n // Check if already in DOM\n if (document.getElementById(id)) {\n injectedStyles.add(id);\n return;\n }\n\n // Get render function from global context\n const renderFunction = getGlobalRenderFunction();\n if (!renderFunction) {\n console.warn(\n `Style injection failed for \"${id}\": render function not available. ` +\n `Please call initUIConfig() or use UIConfigProvider first.`\n );\n return;\n }\n\n // Create container and inject styles\n const container = document.createElement('div');\n container.id = id;\n document.head.appendChild(container);\n\n // Use global render function for consistency\n // Cast StyleComponent to any to avoid type issues with GlobalStyleComponent\n renderFunction(\n React.createElement(StyleComponent as React.ComponentType<any>) as ReactElement,\n container\n );\n\n injectedStyles.add(id);\n },\n\n /**\n * Check if styles have been injected\n */\n isInjected: (id: string): boolean => {\n return (\n injectedStyles.has(id) ||\n (typeof document !== 'undefined' && !!document.getElementById(id))\n );\n },\n\n /**\n * Reset injected styles (mainly for testing)\n */\n reset: () => {\n injectedStyles.clear();\n },\n};\n","import React, { useEffect } from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip';\nimport 'rc-tooltip/assets/bootstrap.css';\nimport { TooltipGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface TooltipProps extends Omit<Partial<RcTooltipProps>, 'prefixCls'> {\n /**\n * Tooltip content\n */\n content?: React.ReactNode;\n /**\n * Tooltip variant\n */\n variant?: 'black' | 'white';\n /**\n * Tooltip size (only for white variant)\n */\n size?: 'small' | 'large';\n /**\n * Children element that triggers the tooltip\n */\n children: React.ReactElement;\n /**\n * Function to get the container element for the tooltip\n */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n}\n/**\n * Tooltip Component\n *\n * Note: Coverage for this component may appear lower than expected due to\n * styled-components CSS-in-JS template literals (lines 68-200+) which are\n * not properly tracked by V8 coverage. The actual component logic is fully tested.\n *\n * @example\n * // Basic black tooltip\n * <Tooltip content=\"Tooltip text\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with small size\n * <Tooltip content=\"Tooltip text\" variant=\"white\" size=\"small\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with large size\n * <Tooltip content=\"Complex content\" variant=\"white\" size=\"large\">\n * <button>Hover me</button>\n * </Tooltip>\n */\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n variant = 'black',\n size = 'small',\n children,\n placement = 'top',\n trigger = ['hover'],\n overlay,\n overlayClassName,\n getPopupContainer,\n ...rest\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-tooltip-styles', TooltipGlobalStyles);\n }, []);\n\n const overlayContent = React.useMemo(() => <div>{content}</div>, [content]);\n\n // Generate className for variant/size combination\n const variantClass = `tooltip-variant-${variant}`;\n const sizeClass = variant === 'white' ? `tooltip-size-${size}` : '';\n const combinedClassName = [variantClass, sizeClass, overlayClassName].filter(Boolean).join(' ');\n\n const tooltipProps = {\n overlay: overlay ?? overlayContent,\n placement,\n trigger,\n destroyTooltipOnHide: false,\n overlayClassName: combinedClassName,\n ...(getPopupContainer && { getPopupContainer }),\n ...rest,\n };\n\n return (\n <RcTooltip {...tooltipProps} prefixCls=\"od-tooltip\">\n {children}\n </RcTooltip>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n","import React from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface ToolbarButtonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in active state\n */\n active?: boolean;\n /**\n * Icon to display\n */\n icon?: React.ReactNode;\n /**\n * Label text\n */\n label?: string;\n /**\n * Whether to show dropdown arrow\n */\n hasDropdown?: boolean;\n /**\n * Whether the dropdown section is clickable separately\n */\n splitDropdown?: boolean;\n /**\n * Click handler for main button\n */\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Click handler for dropdown section\n */\n onDropdownClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst ToolbarButtonContainer = styled.div<{\n $disabled: boolean;\n $active: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n border: 1px solid;\n border-radius: 2px;\n transition: border-color 0.15s ease;\n box-sizing: border-box;\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n border-color: ${config.border.borderColorDisabled};\n `;\n }\n if ($active) {\n return `\n border-color: ${config.border.borderColorActive};\n\n ${Divider} {\n background-color: ${config.border.borderColorActive};\n }\n `;\n }\n return `\n border-color: ${config.border.borderColor};\n\n &:hover {\n border-color: ${config.border.borderColorHover};\n box-shadow: ${config.boxShadow.boxShadowHover};\n ${Divider} {\n background-color: ${config.border.borderColorHover};\n }\n }\n\n button:active {\n box-shadow: ${config.boxShadow.boxShadowClick};\n ${Divider} {\n background-color: ${config.border.borderColorClick};\n }\n }\n `;\n }}\n`;\n\nconst MainButton = styled.button<{\n $disabled: boolean;\n $active: boolean;\n $hasLabel: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n cursor: pointer;\n outline: none;\n transition: background-color 0.15s ease;\n\n ${({ $hasLabel, theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n padding: ${$hasLabel ? config.layout.content.padding : config.layout.padding};\n `;\n }}\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n cursor: not-allowed;\n background: ${config.background.backgroundDisabled};\n `;\n }\n if ($active) {\n return `\n background: ${config.background.backgroundActive};\n `;\n }\n return `\n background: ${config.background.background};\n\n &:hover {\n background: ${config.background.backgroundHover};\n }\n\n &:active {\n background: ${config.background.backgroundClick};\n }\n `;\n }}\n`;\n\nconst IconWrapper = styled.span<{ $disabled: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n width: ${config.layout.content.iconSize.width};\n height: ${config.layout.content.iconSize.height};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n`;\n\nconst LabelText = styled.span<{ $disabled: boolean }>`\n font-family: 'PingFang SC', sans-serif;\n white-space: nowrap;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n font-size: ${config.typography.fontSize};\n font-weight: ${config.typography.fontWeight};\n line-height: 20px;\n padding: ${config.layout.content.padding};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n`;\n\nconst DropdownButton = styled.button<{\n $disabled: boolean;\n $active: boolean;\n $split: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n border: none;\n transition: background-color 0.15s ease;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n padding: 5px 0;\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n cursor: not-allowed;\n background: ${config.background.backgroundDisabled};\n `;\n }\n return `\n background: ${config.background.background};\n\n &:hover {\n background: ${config.background.backgroundHover};\n }\n\n &:active {\n background: ${config.background.backgroundClick};\n }\n `;\n }}\n`;\n\nconst DropdownArrow = styled.span<{ $disabled: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n width: ${config.layout.dropdown.iconSize.width};\n height: ${config.layout.dropdown.iconSize.height};\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components.toolbarButton;\n return $disabled\n ? `\n color: ${config.color.colorDisabled};\n `\n : `\n color: ${config.color.color};\n `;\n }}\n\n svg {\n }\n`;\n\nconst Divider = styled.div<{\n $disabled: boolean;\n $active: boolean;\n}>`\n width: 1px;\n transition: background-color 0.15s ease;\n\n ${({ theme }) => {\n const config = theme.components.toolbarButton;\n return `\n height: ${config.layout.height};\n `;\n }}\n\n ${({ $disabled, $active, theme }) => {\n const config = theme.components.toolbarButton;\n\n if ($disabled) {\n return `\n background-color: ${config.border.borderColorDisabled};\n `;\n }\n if ($active) {\n return `\n background-color: ${config.border.borderColorActive};\n `;\n }\n return `\n background-color: ${config.border.borderColor};\n `;\n }}\n`;\n\nconst ArrowIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M8.1858 9.79353C8.08649 9.90387 7.91346 9.90387 7.81415 9.79353L4.77549 6.41724C4.6307 6.25636 4.74487 6 4.96132 6L11.0386 6C11.2551 6 11.3693 6.25636 11.2245 6.41724L8.1858 9.79353Z\"\n fill=\"#41464B\"\n fillOpacity=\"0.6\"\n />\n </svg>\n);\n\n/**\n * ToolbarButton Component\n *\n * A toolbar button with optional icon, label, and dropdown functionality\n *\n * @example\n * // Icon only button\n * <ToolbarButton icon={<Icon />} />\n *\n * @example\n * // Button with label and dropdown\n * <ToolbarButton icon={<Icon />} label=\"Format\" hasDropdown />\n *\n * @example\n * // Button with split dropdown\n * <ToolbarButton\n * icon={<Icon />}\n * label=\"Format\"\n * hasDropdown\n * splitDropdown\n * onClick={handleClick}\n * onDropdownClick={handleDropdownClick}\n * />\n */\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n disabled = false,\n active = false,\n icon,\n label,\n hasDropdown = false,\n splitDropdown = false,\n onClick,\n onDropdownClick,\n className,\n style,\n}) => {\n const handleMainClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n };\n\n const handleDropdownClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n e.stopPropagation();\n onDropdownClick?.(e);\n };\n\n // Single click area (no split dropdown)\n if (!splitDropdown && hasDropdown) {\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n <DropdownArrow $disabled={disabled}>\n <ArrowIcon />\n </DropdownArrow>\n </MainButton>\n </ToolbarButtonContainer>\n );\n }\n\n // Split dropdown (two click areas)\n if (splitDropdown && hasDropdown) {\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n </MainButton>\n\n <Divider $disabled={disabled} $active={active} />\n\n <DropdownButton\n $disabled={disabled}\n $active={active}\n $split={true}\n onClick={handleDropdownClick}\n disabled={disabled}\n >\n <DropdownArrow $disabled={disabled}>\n <ArrowIcon />\n </DropdownArrow>\n </DropdownButton>\n </ToolbarButtonContainer>\n );\n }\n\n // Simple button (no dropdown)\n return (\n <ToolbarButtonContainer\n className={className}\n style={style}\n $disabled={disabled}\n $active={active}\n >\n <MainButton\n $disabled={disabled}\n $active={active}\n $hasLabel={!!label}\n onClick={handleMainClick}\n disabled={disabled}\n >\n {icon && <IconWrapper $disabled={disabled}>{icon}</IconWrapper>}\n {label && <LabelText $disabled={disabled}>{label}</LabelText>}\n </MainButton>\n </ToolbarButtonContainer>\n );\n};\n\nToolbarButton.displayName = 'ToolbarButton';\n","import React, { forwardRef } from 'react';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\n\ntype DropdownButtonSize = 'large' | 'medium';\ntype DropdownButtonVariant = 'framed' | 'frameless';\n\nexport interface DropdownButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n /**\n * Button variant\n * - framed: with border (40px large)\n * - frameless: without border (28px medium)\n */\n variant?: DropdownButtonVariant;\n /**\n * Button size\n */\n size?: DropdownButtonSize;\n /**\n * Display value/label\n */\n value?: string;\n /**\n * Placeholder when no value\n */\n placeholder?: string;\n /**\n * Optional icon (URL string or ReactNode)\n */\n icon?: string | React.ReactNode;\n /**\n * Custom indicator/arrow icon\n */\n indicatorIcon?: React.ReactNode;\n /**\n * Whether the dropdown is open (controls arrow rotation)\n */\n open?: boolean;\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Error state\n */\n error?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n\n /**\n * Custom text style\n */\n textStyle?: React.CSSProperties;\n}\n\nconst DropdownButtonContainer = styled.button<{\n $variant: DropdownButtonVariant;\n $size: DropdownButtonSize;\n $disabled: boolean;\n $open: boolean;\n $error: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n border: none;\n outline: none;\n box-sizing: border-box;\n transition: all 0.2s ease;\n font-family: 'PingFang SC', sans-serif;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n gap: ${sizeConfig.gap};\n font-size: ${sizeConfig.fontSize};\n border-radius: ${sizeConfig.borderRadius};\n `;\n }}\n\n ${({ $variant, $disabled, $error, theme }) => {\n const config = theme.components?.dropdownButton;\n if (!config) return '';\n\n // Background\n let background = config.background.normal;\n if ($disabled) {\n background = config.background.disabled;\n }\n\n // Border for framed variant\n let border = 'none';\n\n if ($variant === 'framed') {\n const borderColor = $error\n ? theme.colors?.palettes?.red?.['6']\n : theme.colors?.palettes?.transparency?.['10'];\n border = `1px solid ${borderColor}`;\n }\n\n // Text color\n const color = $disabled ? config.color.disabled : config.color.normal;\n\n return `\n background: ${background};\n border: ${border};\n color: ${color};\n\n &:hover:not(:disabled) {\n background: ${config.background.hover};\n ${\n $variant === 'framed' && !$error\n ? `\n border-color: ${theme.colors?.palettes?.transparency?.['20']};\n `\n : ''\n }\n }\n\n &:active:not(:disabled) {\n background: ${config.background.active};\n ${\n $variant === 'framed' && !$error\n ? `\n border-color: ${theme.colors?.palettes?.transparency?.['30']};\n `\n : ''\n }\n }\n `;\n }}\n\n ${({ $disabled }) =>\n $disabled &&\n `\n cursor: not-allowed;\n `}\n`;\n\nconst IconWrapper = styled.div<{ $size: DropdownButtonSize }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n\n ${({ theme }) => {\n const config = theme.components?.dropdownButton;\n return `\n color: ${config?.color?.normal || '#41464b'};\n `;\n }}\n`;\n\nconst TextContent = styled.div<{ $disabled: boolean; $hasValue: boolean }>`\n flex: 1;\n min-width: 0; /* Important: allows flex item to shrink below content size */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n line-height: 20px;\n\n ${({ $hasValue, $disabled, theme }) => {\n const config = theme.components?.dropdownButton;\n const color = $disabled ? config?.color?.disabled : config?.color?.normal;\n\n return `\n color: ${color};\n ${!$hasValue ? `opacity: 0.3;` : ''}\n `;\n }}\n`;\n\nconst IndicatorWrapper = styled.div<{\n $size: DropdownButtonSize;\n $open: boolean;\n $disabled: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n\n ${({ $size, theme }) => {\n const config = theme.components?.dropdownButton;\n const sizeConfig = config?.size?.[$size];\n if (!sizeConfig) return '';\n\n return `\n width: ${sizeConfig.indicatorSize.width};\n height: ${sizeConfig.indicatorSize.height};\n `;\n }}\n\n ${({ $open, theme }) => {\n const config = theme.components?.dropdownButton?.indicator;\n const rotate = config?.rotate || '90deg';\n\n return `\n transform: rotate(${$open ? rotate : 0});\n `;\n }}\n\n ${({ $disabled, theme }) => {\n const config = theme.components?.dropdownButton?.indicator?.opacity;\n const opacity = $disabled ? config?.disabled || '0.3' : config?.normal || '1';\n\n return `\n opacity: ${opacity};\n color: ${theme.components?.dropdownButton?.color?.normal || '#41464b'};\n `;\n }}\n`;\n\nconst DefaultArrowIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M11.5975 8.81186C11.7113 8.91146 11.7113 9.08854 11.5975 9.18814L7.72713 12.5747C7.56548 12.7161 7.3125 12.6013 7.3125 12.3866L7.3125 5.61344C7.3125 5.39865 7.56548 5.28386 7.72713 5.4253L11.5975 8.81186Z\"\n fill=\"#41464B\"\n />\n </svg>\n);\n\n/**\n * DropdownButton Component\n *\n * A button component for triggering dropdown menus\n *\n * @example\n * // Framed dropdown button (with border, 40px)\n * <DropdownButton variant=\"framed\" value=\"Option 1\" />\n *\n * @example\n * // Frameless dropdown button (no border, 28px)\n * <DropdownButton variant=\"frameless\" value=\"Option 1\" />\n *\n * @example\n * // With icon\n * <DropdownButton icon={<CustomIcon />} value=\"Option 1\" />\n *\n * @example\n * // Open state (arrow rotated)\n * <DropdownButton open value=\"Option 1\" />\n */\nexport const DropdownButton = forwardRef<HTMLButtonElement, DropdownButtonProps>(\n (\n {\n variant = 'framed',\n size,\n value,\n placeholder = 'Select...',\n icon,\n indicatorIcon,\n open = false,\n disabled = false,\n error = false,\n className,\n style,\n textStyle,\n onClick,\n ...rest\n },\n ref\n ) => {\n // Auto-determine size based on variant if not specified\n const effectiveSize = size || (variant === 'framed' ? 'large' : 'medium');\n const hasValue = !!value;\n\n // Render icon with priority: props.icon (string or ReactNode)\n const getIconElement = () => {\n if (!icon) return null;\n\n if (typeof icon === 'string') {\n return <Icon src={icon} />;\n }\n return icon;\n };\n\n const iconElement = getIconElement();\n\n return (\n <DropdownButtonContainer\n ref={ref}\n type=\"button\"\n $variant={variant}\n $size={effectiveSize}\n $disabled={disabled}\n $open={open}\n $error={error}\n disabled={disabled}\n onClick={onClick}\n className={className}\n style={style}\n {...rest}\n >\n {iconElement && <IconWrapper $size={effectiveSize}>{iconElement}</IconWrapper>}\n\n <TextContent $disabled={disabled} $hasValue={hasValue} style={textStyle}>\n {value || placeholder}\n </TextContent>\n\n <IndicatorWrapper $size={effectiveSize} $open={open} $disabled={disabled}>\n {indicatorIcon || <DefaultArrowIcon />}\n </IndicatorWrapper>\n </DropdownButtonContainer>\n );\n }\n);\n\nDropdownButton.displayName = 'DropdownButton';\n","import React, { useState, useMemo, useEffect } from 'react';\nimport RcMenu, { MenuItem as RcMenuItem, SubMenu as RcSubMenu, Divider as RcDivider, ItemGroup as RcItemGroup } from 'rc-menu';\nimport VirtualList from 'rc-virtual-list';\nimport { styled } from '../utils/styled';\nimport { Icon } from '../Icon';\nimport { Input } from '../Input';\nimport 'rc-menu/assets/index.css';\nimport { MenuGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface MenuItem {\n type?: 'item';\n key: string;\n label: string;\n description?: string; // Right-aligned text (shortcuts like \"Cmd+Ctrl+C\")\n icon?: string | React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n selectable?: boolean; // Whether this item can be selected (shows checkmark)\n children?: MenuItem[]; // SubMenu items\n onClick?: (key: string) => void;\n}\n\nexport interface MenuGroup {\n type: 'group';\n key: string;\n label: string;\n children: MenuItem[];\n}\n\nexport interface MenuDivider {\n type: 'divider';\n key: string;\n}\n\nexport type MenuItemType = MenuItem | MenuGroup | MenuDivider;\n\nexport interface MenuProps {\n /**\n * Menu items\n */\n items: MenuItemType[];\n /**\n * Currently selected key(s)\n */\n selectedKeys?: string[];\n /**\n * Open submenu keys (controlled)\n */\n openKeys?: string[];\n /**\n * Menu size\n */\n size?: 'medium' | 'large';\n /**\n * Whether to show search box\n */\n searchable?: boolean;\n /**\n * Search placeholder\n */\n searchPlaceholder?: string;\n /**\n * Max height for scrolling\n */\n maxHeight?: number;\n /**\n * Enable virtual scrolling\n */\n virtual?: boolean;\n /**\n * Whether to always reserve space for active icon (for description alignment)\n */\n reserveActiveIconSpace?: boolean;\n /**\n * Select handler\n */\n onSelect?: (key: string) => void;\n /**\n * Search handler\n */\n onSearch?: (value: string) => void;\n /**\n * Open keys change handler\n */\n onOpenChange?: (keys: string[]) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst MenuContainer = styled.div`\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n min-width: 220px;\n\n ${({ theme }) => {\n const dropdownConfig = theme.components?.dropdown;\n const menuConfig = theme.components?.menu;\n\n return `\n background: ${dropdownConfig?.background || '#fff'};\n border: ${menuConfig?.border?.width || '1px'} solid ${menuConfig?.border?.color || 'rgba(65, 70, 75, 0.1)'};\n border-radius: ${menuConfig?.border?.radius || '4px'};\n box-shadow: ${dropdownConfig?.boxShadow || '0 2px 8px rgba(0, 0, 0, 0.15)'};\n `;\n }}\n\n /* Ensure virtual list container has proper width */\n .rc-virtual-list {\n width: 100%;\n }\n\n .rc-virtual-list-holder {\n width: 100%;\n }\n\n .rc-virtual-list-holder-inner {\n width: 100%;\n }\n`;\n\nconst SearchBoxContainer = styled.div`\n padding: 8px 12px;\n border-bottom: 1px solid ${({ theme }) => theme.colors?.palettes?.transparency?.['10']};\n`;\n\nconst SearchIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M7.33333 12.6667C10.2789 12.6667 12.6667 10.2789 12.6667 7.33333C12.6667 4.38781 10.2789 2 7.33333 2C4.38781 2 2 4.38781 2 7.33333C2 10.2789 4.38781 12.6667 7.33333 12.6667Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 14L11.1 11.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// MenuItem content wrapper\nconst MenuItemContent = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n width: 100%;\n\n ${({ theme }) => {\n const config = theme.components?.menu?.menuItem;\n return `\n gap: ${config?.layout?.gap || '8px'};\n `;\n }}\n`;\n\n// Icon container\nconst IconContainer = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ theme }) => {\n const iconSize = theme.components?.menu?.menuItem?.icon?.size;\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n\n svg, img {\n width: 100%;\n height: 100%;\n }\n `;\n }}\n`;\n\n// Content block (label + description, two-end alignment)\nconst ContentBlock = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-width: 0;\n`;\n\n// Label text\nconst LabelText = styled.div<{ $size: 'medium' | 'large'; $disabled: boolean }>`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: 20px;\n\n ${({ $size, $disabled, theme }) => {\n const config = theme.components?.menu?.menuItem;\n const sizeConfig = config?.size?.[$size];\n const colorConfig = config?.label?.color;\n\n const fontSize = sizeConfig?.label?.fontSize || '13px';\n const color = $disabled\n ? (colorConfig?.disabled || 'rgba(65, 70, 75, 0.3)')\n : (colorConfig?.normal || '#41464b');\n\n return `\n font-size: ${fontSize};\n color: ${color};\n `;\n }}\n`;\n\n// Description text (shortcuts, right-aligned)\nconst DescriptionText = styled.div<{ $size: 'medium' | 'large'; $disabled: boolean }>`\n flex: 0 0 auto;\n white-space: nowrap;\n line-height: 20px;\n text-align: right;\n\n ${({ $size, $disabled, theme }) => {\n const config = theme.components?.menu?.menuItem;\n const sizeConfig = config?.size?.[$size];\n const colorConfig = config?.description?.color;\n\n const fontSize = sizeConfig?.description?.fontSize || '10px';\n const color = $disabled\n ? (colorConfig?.disabled || 'rgba(65, 70, 75, 0.3)')\n : (colorConfig?.normal || 'rgba(65, 70, 75, 0.6)');\n\n return `\n font-size: ${fontSize};\n color: ${color};\n `;\n }}\n`;\n\n// Selected checkmark icon (with placeholder support)\nconst ActiveIconContainer = styled.div<{\n $size: 'medium' | 'large';\n $visible: boolean;\n $placeholder: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components?.menu?.menuItem?.size?.[$size];\n const iconSize = sizeConfig?.activeIcon?.size;\n\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n `;\n }}\n\n ${({ $visible, $placeholder }) => {\n if (!$visible && !$placeholder) {\n return 'display: none;';\n }\n if ($placeholder && !$visible) {\n return 'visibility: hidden;'; // Reserve space but invisible\n }\n return '';\n }}\n`;\n\n// Next level arrow icon\nconst NextLevelIconContainer = styled.div<{ $size: 'medium' | 'large' }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components?.menu?.menuItem?.size?.[$size];\n const iconSize = sizeConfig?.nextLevelIcon?.size;\n\n return `\n width: ${iconSize?.width || '18px'};\n height: ${iconSize?.height || '18px'};\n `;\n }}\n`;\n\nconst CheckmarkIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M14.25 5.25L7.125 12.375L3.75 9\"\n stroke=\"#41464B\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ArrowIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M6.75 4.5L11.25 9L6.75 13.5\"\n stroke=\"#41464B\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/**\n * Menu Component\n *\n * A menu component based on rc-menu with virtual scrolling support\n *\n * @example\n * // Basic menu\n * <Menu\n * items={[\n * { key: '1', label: 'Option 1' },\n * { key: '2', label: 'Option 2' },\n * ]}\n * onSelect={(key) => console.log(key)}\n * />\n *\n * @example\n * // Menu with groups and dividers\n * <Menu\n * items={[\n * { type: 'group', key: 'g1', label: 'Group A', children: [...] },\n * { type: 'divider', key: 'd1' },\n * { key: '1', label: 'Option 1' },\n * ]}\n * />\n *\n * @example\n * // Menu with search\n * <Menu\n * searchable\n * items={items}\n * onSearch={(value) => console.log(value)}\n * />\n */\nexport const Menu: React.FC<MenuProps> = ({\n items,\n selectedKeys = [],\n openKeys,\n size = 'large',\n searchable = false,\n searchPlaceholder = 'Enter search content',\n maxHeight = 300,\n virtual = false,\n reserveActiveIconSpace = true,\n onSelect,\n onSearch,\n onOpenChange,\n className,\n style,\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-menu-styles', MenuGlobalStyles);\n }, []);\n\n const [searchValue, setSearchValue] = useState('');\n\n const handleSearch = (value: string) => {\n setSearchValue(value);\n onSearch?.(value);\n };\n\n // Filter items based on search (supports recursive submenu search)\n const filteredItems = useMemo(() => {\n if (!searchValue) return items;\n\n const searchLower = searchValue.toLowerCase();\n\n const filterMenuItem = (item: MenuItem): MenuItem | null => {\n // If item itself matches, return it with all children\n if (item.label.toLowerCase().includes(searchLower) ||\n item.description?.toLowerCase().includes(searchLower)) {\n return item;\n }\n\n // If item has children, check if any child matches\n if (item.children && item.children.length > 0) {\n const filteredChildren = item.children\n .map(child => filterMenuItem(child))\n .filter(Boolean) as MenuItem[];\n\n if (filteredChildren.length > 0) {\n // Parent doesn't match but children do - return with filtered children\n return { ...item, children: filteredChildren };\n }\n }\n\n return null;\n };\n\n const filterItem = (item: MenuItemType): MenuItemType | null => {\n if (item.type === 'divider') return null;\n\n if (item.type === 'group') {\n // Filter group children\n const filteredChildren = item.children\n .map(child => filterMenuItem(child))\n .filter(Boolean) as MenuItem[];\n\n // Only show group if it has matching children\n if (filteredChildren.length > 0) {\n return { ...item, children: filteredChildren };\n }\n return null;\n }\n\n // Regular item with potential submenu\n return filterMenuItem(item);\n };\n\n return items\n .map(item => filterItem(item))\n .filter(Boolean) as MenuItemType[];\n }, [items, searchValue]);\n\n // Render menu item content\n const renderMenuItemContent = (item: MenuItem, reserveSpace: boolean) => {\n const isSelected = item.selected || selectedKeys.includes(item.key);\n const isSelectable = item.selectable !== false; // Default to true\n const shouldShowActiveIcon = isSelectable && isSelected;\n const shouldReserveSpace = reserveSpace || isSelectable;\n\n // Icon element\n const iconElement = item.icon ? (\n <IconContainer $size={size}>\n {typeof item.icon === 'string' ? <Icon src={item.icon} /> : item.icon}\n </IconContainer>\n ) : null;\n\n return (\n <MenuItemContent $size={size}>\n {iconElement}\n\n <ContentBlock>\n <LabelText $size={size} $disabled={!!item.disabled}>\n {item.label}\n </LabelText>\n\n {item.description && (\n <DescriptionText $size={size} $disabled={!!item.disabled}>\n {item.description}\n </DescriptionText>\n )}\n </ContentBlock>\n\n {/* Active icon - always reserve space if needed for alignment */}\n <ActiveIconContainer\n $size={size}\n $visible={shouldShowActiveIcon}\n $placeholder={shouldReserveSpace && !shouldShowActiveIcon}\n >\n {shouldShowActiveIcon && <CheckmarkIcon />}\n </ActiveIconContainer>\n\n {item.children && item.children.length > 0 && (\n <NextLevelIconContainer $size={size}>\n <ArrowIcon />\n </NextLevelIconContainer>\n )}\n </MenuItemContent>\n );\n };\n\n // Render item based on type\n const renderItem = (item: MenuItemType): React.ReactNode => {\n // Divider\n if (item.type === 'divider') {\n return <RcDivider key={item.key} />;\n }\n\n // Group\n if (item.type === 'group') {\n return (\n <RcItemGroup key={item.key} title={item.label}>\n {item.children.map(child => renderMenuItem(child))}\n </RcItemGroup>\n );\n }\n\n // Regular item\n return renderMenuItem(item);\n };\n\n // Render menu item (supports submenu)\n const renderMenuItem = (item: MenuItem): React.ReactNode => {\n // SubMenu\n if (item.children && item.children.length > 0) {\n return (\n <RcSubMenu\n key={item.key}\n title={renderMenuItemContent(item, reserveActiveIconSpace)}\n disabled={item.disabled}\n popupOffset={[5, 0]}\n >\n {item.children.map(child => renderMenuItem(child))}\n </RcSubMenu>\n );\n }\n\n // Regular item\n return (\n <RcMenuItem\n key={item.key}\n disabled={item.disabled}\n onClick={() => {\n item.onClick?.(item.key);\n onSelect?.(item.key);\n }}\n >\n {renderMenuItemContent(item, reserveActiveIconSpace)}\n </RcMenuItem>\n );\n };\n\n // Virtual list wrapper\n const itemHeight = size === 'medium' ? 28 : 36;\n\n // Force re-render when openKeys changes to close submenus\n const menuKey = openKeys?.join(',') || 'menu';\n\n return (\n <MenuContainer className={className} style={style}>\n {searchable && (\n <SearchBoxContainer>\n <Input\n lineType=\"underlined\"\n size=\"small\"\n placeholder={searchPlaceholder}\n value={searchValue}\n onChange={(e) => handleSearch(e.target.value)}\n clearable\n onClear={() => handleSearch('')}\n prefixNode={<SearchIcon />}\n />\n </SearchBoxContainer>\n )}\n\n {virtual && filteredItems.length > 10 ? (\n <VirtualList\n data={filteredItems}\n height={maxHeight}\n itemHeight={itemHeight}\n itemKey=\"key\"\n fullHeight={false}\n style={{ width: '100%' }}\n >\n {(item: MenuItemType) => (\n <RcMenu\n key={menuKey}\n prefixCls=\"od-menu\"\n mode=\"vertical\"\n selectedKeys={selectedKeys}\n openKeys={openKeys}\n onOpenChange={onOpenChange}\n triggerSubMenuAction=\"hover\"\n expandIcon={null}\n style={{\n border: 'none',\n background: 'transparent',\n padding: 0,\n }}\n >\n {renderItem(item)}\n </RcMenu>\n )}\n </VirtualList>\n ) : (\n <RcMenu\n key={menuKey}\n prefixCls=\"od-menu\"\n mode=\"vertical\"\n selectedKeys={selectedKeys}\n openKeys={openKeys}\n onOpenChange={onOpenChange}\n triggerSubMenuAction=\"hover\"\n expandIcon={null}\n style={{\n border: 'none',\n background: 'transparent',\n }}\n >\n {filteredItems.map(renderItem)}\n </RcMenu>\n )}\n </MenuContainer>\n );\n};\n\nMenu.displayName = 'Menu';\n\n","import { createGlobalStyle } from 'styled-components';\nimport { getGlobalTheme } from '../utils/context';\n\nconst theme = getGlobalTheme();\n\nexport const DropdownGlobalStyles = createGlobalStyle`\n /* Dropdown container */\n .od-dropdown {\n position: absolute;\n z-index: 1050;\n }\n\n .od-dropdown-hidden {\n display: none;\n }\n\n /* Dropdown slide animations */\n .od-dropdown-slide-up-enter,\n .od-dropdown-slide-up-appear {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-play-state: paused;\n }\n\n .od-dropdown-slide-up-leave {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-play-state: paused;\n }\n\n .od-dropdown-slide-up-enter.od-dropdown-slide-up-enter-active,\n .od-dropdown-slide-up-appear.od-dropdown-slide-up-appear-active {\n animation-name: rcDropdownSlideUpIn;\n animation-play-state: running;\n }\n\n .od-dropdown-slide-up-leave.od-dropdown-slide-up-leave-active {\n animation-name: rcDropdownSlideUpOut;\n animation-play-state: running;\n }\n\n @keyframes rcDropdownSlideUpIn {\n 0% {\n opacity: 0;\n transform: scaleY(0.8);\n }\n 100% {\n opacity: 1;\n transform: scaleY(1);\n }\n }\n\n @keyframes rcDropdownSlideUpOut {\n 0% {\n opacity: 1;\n transform: scaleY(1);\n }\n 100% {\n opacity: 0;\n transform: scaleY(0.8);\n }\n }\n`;\n\nexport const MenuGlobalStyles = createGlobalStyle`\n /* Base menu container */\n .od-menu {\n margin: 0;\n padding: ${() => theme.components?.dropdown?.padding || '4px 0'};\n list-style: none;\n outline: none;\n box-shadow: none;\n background: transparent;\n border: none;\n }\n\n .od-menu-hidden {\n display: none;\n }\n\n /* Menu item */\n .od-menu-item {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0;\n cursor: pointer;\n transition: background-color 0.15s ease;\n user-select: none;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n padding: ${config?.layout?.padding || '6px 12px'};\n background: ${config?.background?.normal || 'transparent'};\n `;\n }}\n }\n\n .od-menu-item:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.hover || 'rgba(65, 70, 75, 0.05)'};\n `;\n }}\n }\n\n .od-menu-item-active,\n .od-menu-item-selected {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.active || 'rgba(65, 70, 75, 0.1)'};\n `;\n }}\n }\n\n .od-menu-item-disabled {\n cursor: not-allowed;\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n .od-menu-item-disabled:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n /* SubMenu */\n .od-menu-submenu {\n position: relative;\n list-style: none;\n }\n\n .od-menu-submenu-title {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0;\n cursor: pointer;\n transition: background-color 0.15s ease;\n user-select: none;\n\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n padding: ${config?.layout?.padding || '6px 12px'};\n background: ${config?.background?.normal || 'transparent'};\n `;\n }}\n }\n\n .od-menu-submenu-title:hover {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.hover || 'rgba(65, 70, 75, 0.05)'};\n `;\n }}\n }\n\n .od-menu-submenu-open > .od-menu-submenu-title {\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.active || 'rgba(65, 70, 75, 0.1)'};\n `;\n }}\n }\n\n .od-menu-submenu-disabled .od-menu-submenu-title {\n cursor: not-allowed;\n ${() => {\n const config = theme.components?.menu?.menuItem;\n return `\n background: ${config?.background?.disabled || 'transparent'};\n `;\n }}\n }\n\n /* Submenu popup */\n .od-menu-submenu-popup {\n position: absolute;\n z-index: 1050;\n }\n\n /* Submenu popup positioning - add 5px gap */\n .od-menu-submenu-placement-rightTop,\n .od-menu-submenu-placement-rightBottom {\n padding-left: 5px;\n }\n\n .od-menu-submenu-placement-leftTop,\n .od-menu-submenu-placement-leftBottom {\n padding-right: 5px;\n }\n\n .od-menu-submenu > .od-menu {\n ${() => {\n const dropdownConfig = theme.components?.dropdown;\n const menuConfig = theme.components?.menu;\n\n return `\n background: ${dropdownConfig?.background || '#fff'};\n border: ${menuConfig?.border?.width || '1px'} solid ${menuConfig?.border?.color || 'rgba(65, 70, 75, 0.1)'};\n border-radius: ${menuConfig?.border?.radius || '4px'};\n box-shadow: ${dropdownConfig?.boxShadow || '0 2px 8px rgba(0, 0, 0, 0.15)'};\n `;\n }}\n }\n\n /* Item Group */\n .od-menu-item-group-title {\n padding: 8px 12px 4px;\n user-select: none;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.groupTitle;\n return `\n font-size: ${config?.fontSize || '12px'};\n font-weight: ${config?.fontWeight || '500'};\n color: ${config?.color || 'rgba(65, 70, 75, 0.6)'};\n line-height: 20px;\n `;\n }}\n }\n\n .od-menu-item-group-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n /* Divider */\n .od-menu-item-divider {\n overflow: hidden;\n line-height: 0;\n list-style: none;\n\n ${() => {\n const config = theme.components?.menu?.divider;\n return `\n height: ${config?.height || '1px'};\n background: ${config?.background || 'rgba(65, 70, 75, 0.1)'};\n margin: ${config?.margin || '4px 0'};\n `;\n }}\n }\n\n /* Animation */\n .od-menu-submenu-inline {\n border: 0;\n box-shadow: none;\n }\n\n .od-menu-submenu-inline > .od-menu {\n padding: 0;\n border: 0;\n box-shadow: none;\n }\n\n /* Collapse animation */\n .od-menu-submenu-inline-collapsed {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n\n .od-menu-submenu-inline-collapsed-active {\n max-height: 1000px;\n }\n`;\n\n","import React, { useState, useEffect } from 'react';\nimport RcDropdown from 'rc-dropdown';\nimport type { DropdownProps as RcDropdownProps } from 'rc-dropdown';\nimport 'rc-dropdown/assets/index.css';\nimport { DropdownGlobalStyles } from './globalStyle';\nimport { styleManager } from '../utils/styleManager';\n\nexport interface DropdownProps extends Omit<Partial<RcDropdownProps>, 'prefixCls' | 'placement'> {\n /**\n * Dropdown overlay content (usually a Menu component)\n */\n overlay?: React.ReactElement | (() => React.ReactElement);\n /**\n * Trigger action (click, hover, contextMenu)\n */\n trigger?: ('click' | 'hover' | 'contextMenu')[];\n /**\n * Placement of dropdown\n */\n placement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n /**\n * Whether dropdown is visible (controlled)\n */\n visible?: boolean;\n /**\n * Default visibility (uncontrolled)\n */\n defaultVisible?: boolean;\n /**\n * Callback when visibility changes\n */\n onVisibleChange?: (visible: boolean) => void;\n /**\n * Children element that triggers the dropdown\n */\n children: React.ReactElement;\n /**\n * Dropdown container class name\n */\n overlayClassName?: string;\n /**\n * Function to get the container element for the dropdown\n */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n}\n\n/**\n * Dropdown Component\n *\n * A dropdown container component based on rc-dropdown\n *\n * @example\n * // Basic dropdown with menu\n * <Dropdown\n * overlay={<Menu items={items} />}\n * trigger={['click']}\n * >\n * <DropdownButton value=\"Select\" />\n * </Dropdown>\n *\n * @example\n * // Controlled dropdown\n * <Dropdown\n * visible={open}\n * onVisibleChange={setOpen}\n * overlay={<Menu items={items} />}\n * >\n * <Button>Click me</Button>\n * </Dropdown>\n *\n * @example\n * // Custom trigger\n * <Dropdown\n * overlay={<Menu items={items} />}\n * trigger={['hover']}\n * placement=\"bottomLeft\"\n * >\n * <span>Hover me</span>\n * </Dropdown>\n */\nexport const Dropdown: React.FC<DropdownProps> = ({\n overlay,\n trigger = ['click'],\n placement = 'bottomLeft',\n visible: controlledVisible,\n defaultVisible = false,\n onVisibleChange,\n children,\n overlayClassName,\n getPopupContainer,\n ...rest\n}) => {\n // Inject styles on first render using styleManager\n useEffect(() => {\n styleManager.inject('od-dropdown-styles', DropdownGlobalStyles);\n }, []);\n\n const [internalVisible, setInternalVisible] = useState(defaultVisible);\n\n const isControlled = controlledVisible !== undefined;\n const isVisible = isControlled ? controlledVisible : internalVisible;\n\n const handleVisibleChange = (visible: boolean) => {\n if (!isControlled) {\n setInternalVisible(visible);\n }\n onVisibleChange?.(visible);\n };\n\n return (\n <RcDropdown\n overlay={overlay || <div />}\n trigger={trigger}\n placement={placement}\n visible={isVisible}\n onVisibleChange={handleVisibleChange}\n prefixCls=\"od-dropdown\"\n overlayClassName={overlayClassName}\n getPopupContainer={getPopupContainer}\n {...rest}\n >\n {children}\n </RcDropdown>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\n","import React, { createContext, useContext, useEffect } from 'react';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { initUIConfig, getUIConfig } from './configManager';\nimport { registerGlobalContext } from '../utils/context';\n\nconst UIConfigContext = createContext<UIConfig | null>(null);\n\nexport interface UIConfigProviderProps {\n /**\n * UI configuration\n */\n config: UIConfig;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * UIConfigProvider Component (Optional, for React convenience)\n *\n * Unified provider for all UI components and global configurations.\n * Includes IconProvider, ToastContainer, and other settings.\n *\n * Note: Global styles (Tooltip, Menu, Dropdown) are now injected on-demand\n * when components are first used, so they are no longer included here.\n *\n * For non-React environments or when you want to avoid Provider nesting,\n * use initUIConfig() instead.\n *\n * @example\n * import { UIConfigProvider } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <UIConfigProvider config={{\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * maxCount: 5,\n * },\n * }}>\n * <App />\n * </UIConfigProvider>\n */\nexport const UIConfigProvider: React.FC<UIConfigProviderProps> = ({ config, children }) => {\n // Initialize global config on mount\n useEffect(() => {\n\n // Register render function first\n registerGlobalContext({\n theme: config.theme,\n render: config.renderFunction,\n });\n\n // Then initialize full config\n initUIConfig(config);\n }, [config]);\n\n const { icons = {} } = config;\n const toastConfig = {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n };\n\n return (\n <UIConfigContext.Provider value={config}>\n <IconProvider icons={icons}>\n <ToastContainer\n maxCount={toastConfig.maxCount}\n defaultDuration={toastConfig.defaultDuration}\n >\n {children}\n </ToastContainer>\n </IconProvider>\n </UIConfigContext.Provider>\n );\n};\n\n/**\n * Hook to access UI configuration\n *\n * Falls back to global config if context is not available.\n * This allows components to work even without UIConfigProvider when initUIConfig() is used.\n *\n * @example\n * const config = useUIConfig();\n * console.log(config?.theme);\n * console.log(config?.locale);\n */\nexport const useUIConfig = () => {\n const context = useContext(UIConfigContext);\n // Fallback to global config if context is not available\n return context || getUIConfig();\n};\n\nUIConfigProvider.displayName = 'UIConfigProvider';\n","import type { UIConfig } from './types';\n\n/**\n * Create UI configuration with default values\n *\n * @example\n * import { createUIConfig } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * const config = createUIConfig({\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * },\n * });\n */\nexport const createUIConfig = (config: UIConfig): UIConfig => {\n return {\n // Theme is required\n theme: config.theme,\n\n // Icons with default\n icons: config.icons ?? {},\n\n // Toast with defaults\n toast: {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n position: config.toast?.position ?? 'top-right',\n offset: {\n x: config.toast?.offset?.x ?? 24,\n y: config.toast?.offset?.y ?? 24,\n },\n },\n\n // Locale with default\n locale: config.locale ?? 'en-US',\n\n // I18n with defaults\n i18n: {\n toast: {\n closeLabel: config.i18n?.toast?.closeLabel ?? 'Close',\n },\n button: {\n loadingText: config.i18n?.button?.loadingText ?? 'Loading...',\n },\n common: {\n confirm: config.i18n?.common?.confirm ?? 'Confirm',\n cancel: config.i18n?.common?.cancel ?? 'Cancel',\n ok: config.i18n?.common?.ok ?? 'OK',\n },\n },\n\n // Z-index with defaults\n zIndex: {\n toast: config.zIndex?.toast ?? 9999,\n modal: config.zIndex?.modal ?? 10000,\n dropdown: config.zIndex?.dropdown ?? 1000,\n tooltip: config.zIndex?.tooltip ?? 1001,\n },\n\n // Animation with defaults\n animation: {\n duration: config.animation?.duration ?? 200,\n easing: config.animation?.easing ?? 'cubic-bezier(0.4, 0, 0.2, 1)',\n disabled: config.animation?.disabled ?? false,\n },\n\n // A11y with defaults\n a11y: {\n announceMessages: config.a11y?.announceMessages ?? true,\n focusVisible: config.a11y?.focusVisible ?? true,\n reduceMotion: config.a11y?.reduceMotion ?? false,\n },\n };\n};\n\n/**\n * Merge multiple configs (useful for extending base configs)\n */\nexport const mergeUIConfig = (baseConfig: UIConfig, ...configs: Partial<UIConfig>[]): UIConfig => {\n const merged = configs.reduce((acc, config) => ({\n ...acc,\n ...config,\n toast: { ...acc.toast, ...config.toast },\n i18n: { ...acc.i18n, ...config.i18n },\n zIndex: { ...acc.zIndex, ...config.zIndex },\n animation: { ...acc.animation, ...config.animation },\n a11y: { ...acc.a11y, ...config.a11y },\n }), baseConfig);\n\n return merged as UIConfig;\n};\n\n","export { UIConfigProvider, useUIConfig } from './UIConfigProvider';\nexport type { UIConfigProviderProps } from './UIConfigProvider';\n\nexport { createUIConfig, mergeUIConfig } from './createUIConfig';\n\nexport {\n initUIConfig,\n getUIConfig,\n getGlobalIconRegistry,\n getGlobalToastConfig,\n} from './configManager';\n\nexport type {\n UIConfig,\n ToastConfig,\n ToastPosition,\n ZIndexConfig,\n AnimationConfig,\n A11yConfig,\n I18nConfig,\n} from './types';\n\n"]}
|