@officesdk/design 0.1.5 → 0.1.8
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 +103 -23
- package/dist/components/cjs/index.js +1474 -960
- package/dist/components/cjs/index.js.map +1 -1
- package/dist/components/esm/index.d.ts +103 -23
- package/dist/components/esm/index.js +1408 -885
- package/dist/components/esm/index.js.map +1 -1
- package/dist/theme/cjs/index.js +64 -66
- package/dist/theme/cjs/index.js.map +1 -1
- package/dist/theme/esm/index.js +64 -66
- package/dist/theme/esm/index.js.map +1 -1
- package/package.json +2 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/context.ts","../../src/utils/styled.ts","../../src/Button/Button.tsx","../../src/Slider/Slider.tsx","../../src/NumberInput/NumberInput.tsx","../../src/Button/SpinButton.tsx","../../src/Switch/Switch.tsx","../../src/Radio/Radio.tsx","../../src/Checkbox/Checkbox.tsx","../../src/Input/Input.tsx","../../src/Input/SearchInput.tsx","../../src/Icon/IconProvider.tsx","../../src/Icon/Icon.tsx","../../src/Toast/Toast.tsx","../../src/Toast/ToastContainer.tsx","../../src/Tabs/Tabs.tsx","../../src/Tooltip/Tooltip.tsx","../../src/Tooltip/globalStyle.ts","../../src/ToolbarButton/ToolbarButton.tsx","../../src/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts"],"names":["theme","baseStyled","styles","React","useState","useRef","useCallback","useEffect","HiddenInput","IconWrapper","InputWrapper","StyledInput","forwardRef","createContext","useContext","ToastContainer","RcTooltip","createGlobalStyle"],"mappings":"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","file":"index.js","sourcesContent":[" const globalTheme: Record<string, any> = {}\n\nconst registerGlobalTheme = (theme: Record<string, any>) => {\n // Replace the reference instead of mutating\n Object.assign(globalTheme, { ...globalTheme, ...theme });\n}\n\nexport const getGlobalTheme = () => {\n return globalTheme;\n}\n\n/**\n * Register global context\n *\n * Registers theme to the global context. Can be called multiple times\n * (e.g., in tests) to update the theme.\n *\n * @param context - The context to register\n */\nexport const registerGlobalContext = (context: { theme: Record<string, any> }) => {\n if (context.theme) {\n registerGlobalTheme(context.theme);\n }\n}\n\n","import baseStyled, {\n ThemedStyledInterface\n} from 'styled-components';\nimport { getGlobalTheme } from './context';\nimport type { CommonThemeConfig } from '@officesdk/editor-sdk-core/shared';\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<CommonThemeConfig>;\n\n\n","import React from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant type\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 before the button text\n */\n iconBefore?: React.ReactNode;\n /**\n * Icon to display after the button text\n */\n iconAfter?: React.ReactNode;\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']; $position: 'before' | 'after' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, $position, theme }) => {\n const sizeConfig = theme.components.button[$size || 'medium'];\n const marginSide = $position === '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 StyledButton = styled.button<{\n $variant: ButtonProps['variant'];\n $colorType: ButtonProps['colorType'];\n $size: ButtonProps['size'];\n $fullWidth: boolean;\n $isIconOnly: 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, $isIconOnly, theme }) => {\n const sizeConfig = theme.components.button[$size || 'medium'];\n\n if ($isIconOnly) {\n return `\n padding: 0;\n width: ${sizeConfig.height};\n height: ${sizeConfig.height};\n border-radius: ${sizeConfig.borderRadius};\n `;\n }\n\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, $isIconOnly, $iconBordered, theme }) => {\n // Handle icon-only buttons\n if ($variant === 'icon' || $isIconOnly) {\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 icons\n * <Button iconBefore={<Icon />}>button</Button>\n *\n * @example\n * // Icon-only button\n * <Button variant=\"icon\" iconBordered><Icon /></Button>\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 iconBefore,\n iconAfter,\n iconBordered = false,\n children,\n ...rest\n}) => {\n // Determine if this is an icon-only button\n const isIconOnly = variant === 'icon' || (!children && !!(iconBefore || iconAfter));\n\n // For icon-only buttons, use the icon as children\n const iconOnlyContent = iconBefore || iconAfter;\n\n return (\n <StyledButton\n $variant={variant}\n $colorType={colorType}\n $size={size}\n $fullWidth={fullWidth}\n $isIconOnly={isIconOnly}\n $iconBordered={iconBordered}\n disabled={disabled || loading}\n {...rest}\n >\n {loading ? (\n <>Loading...</>\n ) : isIconOnly ? (\n iconOnlyContent\n ) : (\n <>\n {iconBefore && (\n <IconWrapper $size={size} $position=\"before\">\n {iconBefore}\n </IconWrapper>\n )}\n {children}\n {iconAfter && (\n <IconWrapper $size={size} $position=\"after\">\n {iconAfter}\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","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 * 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 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 = 0,\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 onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(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): string => {\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): number => {\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) => {\n const clampedValue = clampValue(newValue);\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [clampValue, controlledValue, onChange]\n );\n\n // Increment value\n const increment = useCallback(() => {\n if (disabled) return;\n handleValueChange(value + step);\n }, [disabled, value, step, handleValueChange]);\n\n // Decrement value\n const decrement = useCallback(() => {\n if (disabled) return;\n handleValueChange(value - 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 parsed = parseValue(displayValue);\n if (parsed !== null) {\n handleValueChange(parsed);\n } else {\n setDisplayValue(formatValue(value));\n }\n }, [displayValue, parseValue, handleValueChange, value, formatValue]);\n\n // Handle input focus\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n setDisplayValue(String(value));\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 $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\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' ? '83px' : '72px')};\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 const handleValueChange = useCallback(\n (newValue: number | null) => {\n if (newValue === null) return;\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","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 transform: translateY(-50%);\n border-style: solid;\n box-sizing: border-box;\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 return `\n width: ${thumbSize};\n height: ${thumbSize};\n border-radius: ${thumbBorderRadius};\n border-width: ${thumbBorderWidth};\n ${$checked ? 'right' : 'left'}: ${thumbOffset};\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 */\n checked?: boolean;\n /**\n * Default checked state\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 * 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 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 return (\n <RadioContainer\n $disabled={disabled}\n className={className}\n style={style}\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 * 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 ${CheckboxContainer}:hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n ${CheckboxContainer}: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 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 return (\n <CheckboxContainer\n $disabled={disabled}\n className={className}\n style={style}\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 = 'small' | 'medium' | 'large' | 'extraLarge';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\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 * Custom className\n */\n className?: string;\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\n}\n\nconst InputWrapper = styled.div<{\n $size: InputSize;\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 transition: all 0.2s ease;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n height: ${sizeConfig.height};\n border-radius: ${sizeConfig.borderRadius};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n ${({ $error, $disabled, $readOnly, $isFocused, theme, $size }) => {\n const stateConfig = theme.components.input.outlined.state;\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;\n background = stateConfig.backgroundReadonly;\n } else if ($error) {\n borderColor = stateConfig.borderColorError;\n background = stateConfig.backgroundActive;\n } else if ($isFocused) {\n borderColor = stateConfig.borderColorActive;\n background = stateConfig.backgroundActive;\n const size = $size || 'medium';\n boxShadow = (theme.components.input.outlined as any)[size].boxShadowActive;\n }\n\n return `\n border: 1px solid ${borderColor};\n background: ${background};\n box-shadow: ${boxShadow};\n\n &:hover:not(:disabled) {\n ${!$disabled && !$readOnly && !$isFocused ? `\n border-color: ${stateConfig.borderColorHover};\n background: ${stateConfig.backgroundHover};\n ` : ''}\n }\n `;\n }}\n\n ${({ $disabled }) => $disabled && `\n cursor: not-allowed;\n opacity: 1;\n `}\n`;\n\nconst StyledInput = styled.input<{\n $size: InputSize;\n $disabled: boolean;\n $readOnly: 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 color: ${({ theme }) => theme.components.input.outlined.state.borderColorActive};\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n ${({ $disabled, theme }) => $disabled && `\n cursor: not-allowed;\n color: ${theme.colors.palettes.transparency['30']};\n `}\n\n ${({ $readOnly }) => $readOnly && `\n cursor: default;\n `}\n`;\n\nconst PrefixNode = styled.div<{ $size: InputSize }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-right: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\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 }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\n/**\n * Input Component\n *\n * @example\n * // Basic input\n * <Input placeholder=\"Enter text\" />\n *\n * @example\n * // Input with prefix and suffix\n * <Input prefixNode={<SearchIcon />} suffixNode={<CloseIcon />} />\n *\n * @example\n * // Input with error state\n * <Input error placeholder=\"Enter text\" />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'medium',\n error = false,\n disabled = false,\n readOnly = false,\n prefixNode,\n suffixNode,\n className,\n style,\n onFocus,\n onBlur,\n ...rest\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\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 return (\n <InputWrapper\n $size={size}\n $error={error}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n {prefixNode && <PrefixNode $size={size}>{prefixNode}</PrefixNode>}\n <StyledInput\n ref={ref}\n $size={size}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n disabled={disabled}\n readOnly={readOnly}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n />\n {suffixNode && <SuffixNode $size={size}>{suffixNode}</SuffixNode>}\n </InputWrapper>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import React, { forwardRef, useState } from 'react';\nimport { styled } from '../utils/styled';\nimport { Input, InputProps } from './Input';\n\nexport interface SearchInputProps extends Omit<InputProps, 'size' | 'prefixNode'> {\n /**\n * SearchInput size (only medium and large)\n */\n size?: 'extraLarge' | '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\n */\n searchIcon?: React.ReactNode;\n}\n\nconst SearchIconWrapper = styled.div<{ $size: 'extraLarge' | 'large' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n`;\n\nconst ClearButton = styled.button<{ $size: 'extraLarge' | 'large' }>`\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, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n`;\n\nconst DefaultSearchIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\nconst DefaultCloseIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4L4 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/**\n * SearchInput Component\n *\n * @example\n * // Basic search input\n * <SearchInput placeholder=\"Search...\" />\n *\n * @example\n * // Search input with clearable\n * <SearchInput clearable onClear={() => console.log('cleared')} />\n *\n * @example\n * // Large search input\n * <SearchInput size=\"large\" placeholder=\"Search...\" />\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n size = 'extraLarge',\n clearable = true,\n onClear,\n searchIcon,\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n ...rest\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\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 = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n onClear?.();\n };\n\n const prefixNode = (\n <SearchIconWrapper $size={size}>\n {searchIcon || <DefaultSearchIcon />}\n </SearchIconWrapper>\n );\n\n const suffixNode = clearable && currentValue && !disabled && !readOnly ? (\n <ClearButton\n $size={size}\n onClick={handleClear}\n type=\"button\"\n tabIndex={-1}\n >\n <DefaultCloseIcon />\n </ClearButton>\n ) : null;\n\n return (\n <Input\n ref={ref}\n size={size}\n prefixNode={prefixNode}\n suffixNode={suffixNode}\n value={isControlled ? value : internalValue}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = 'SearchInput';\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';\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 registry = useIconRegistry();\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(`Icon \"${name}\" not found in registry. Make sure IconProvider is set up.`);\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","import React, { useEffect, useState } from 'react';\nimport { styled } from '../utils/styled';\n\nexport interface ToastProps {\n /**\n * Toast variant type\n */\n variant?: 'success' | 'info' | 'error' | 'warn';\n /**\n * Toast message content\n */\n message: string;\n /**\n * Optional action button text\n */\n actionText?: string;\n /**\n * Action button click handler\n */\n onAction?: () => 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';\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';\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $variant, theme }) => {\n const iconConfig = theme.components.toast[$variant].icon;\n return `\n width: ${iconConfig.size.width};\n height: ${iconConfig.size.height};\n `;\n }}\n`;\n\nconst Message = styled.span`\n flex: 1;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.gray['120']};\n`;\n\nconst ActionButton = styled.button<{\n $variant: 'success' | 'info' | 'error' | 'warn';\n}>`\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n outline: none;\n\n ${({ $variant, theme }) => {\n const buttonConfig = theme.components.toast[$variant].button;\n return `\n font-size: ${buttonConfig.fontSize};\n font-weight: ${buttonConfig.fontWeight};\n color: ${buttonConfig.color};\n margin-left: ${buttonConfig.gap};\n `;\n }}\n\n &:hover {\n opacity: 0.8;\n }\n\n &:active {\n opacity: 0.6;\n }\n`;\n\nconst CloseButton = styled.button`\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${({ theme }) => theme.colors.palettes.gray['60']};\n flex-shrink: 0;\n outline: none;\n\n &:hover {\n color: ${({ theme }) => theme.colors.palettes.gray['100']};\n }\n\n &:active {\n color: ${({ theme }) => theme.colors.palettes.gray['120']};\n }\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 d=\"M6 10L9 13L14 7\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\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\n/**\n * Toast Component\n *\n * A notification message component with different variants\n *\n * @example\n * <Toast variant=\"success\" message=\"Operation successful!\" />\n *\n * @example\n * <Toast\n * variant=\"info\"\n * message=\"New update available\"\n * actionText=\"Update\"\n * onAction={() => console.log('Update clicked')}\n * closable\n * />\n */\nexport const Toast: React.FC<ToastProps> = ({\n variant = 'info' as 'success' | 'info' | 'error' | 'warn',\n message,\n actionText,\n onAction,\n closable = false,\n onClose,\n duration = 0,\n icon,\n showIcon = true,\n className,\n style,\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 // Default icons based on variant\n const defaultIcons = {\n success: <SuccessIcon />,\n info: <InfoIcon />,\n error: <ErrorIcon />,\n warn: <WarnIcon />,\n };\n\n const iconElement = icon || defaultIcons[variant];\n\n return (\n <ToastContainer\n $variant={variant}\n className={className}\n style={style}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {showIcon && (\n <IconWrapper $variant={variant}>\n {iconElement}\n </IconWrapper>\n )}\n\n <Message>{message}</Message>\n\n {actionText && onAction && (\n <ActionButton\n $variant={variant}\n onClick={onAction}\n type=\"button\"\n >\n {actionText}\n </ActionButton>\n )}\n\n {closable && (\n <CloseButton\n onClick={handleClose}\n type=\"button\"\n aria-label=\"Close\"\n >\n <CloseIconSvg />\n </CloseButton>\n )}\n </ToastContainer>\n );\n};\n\nToast.displayName = 'Toast';\n\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\ninterface ToastContextValue {\n showToast: (props: Omit<ToastProps, 'onClose'>) => string;\n hideToast: (id: string) => void;\n success: (message: string, options?: Partial<ToastProps>) => string;\n info: (message: string, options?: Partial<ToastProps>) => string;\n error: (message: string, options?: Partial<ToastProps>) => string;\n warn: (message: string, options?: Partial<ToastProps>) => string;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nconst ToastWrapper = styled.div`\n position: fixed;\n top: 24px;\n right: 24px;\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\nexport interface ToastContainerProps {\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 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: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'success', message });\n }, [showToast]);\n\n const info = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'info', message });\n }, [showToast]);\n\n const error = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'error', message });\n }, [showToast]);\n\n const warn = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'warn', message });\n }, [showToast]);\n\n const contextValue: ToastContextValue = {\n showToast,\n hideToast,\n success,\n info,\n error,\n warn,\n };\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <ToastWrapper>\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 React from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip';\nimport 'rc-tooltip/assets/bootstrap.css';\n\nexport interface TooltipProps extends Partial<RcTooltipProps> {\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 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}>\n {children}\n </RcTooltip>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n","import { createGlobalStyle } from 'styled-components';\nimport { getGlobalTheme } from '../utils/context';\n\nconst theme = getGlobalTheme()\n\nconst paddingDistance = '5px';\nconst positionDistance = '0';\n\n// Tooltip global styles - includes base styles and all variant/size combinations\nexport const TooltipGlobalStyles = createGlobalStyle`\n .rc-tooltip {\n opacity: 1;\n }\n\n .rc-tooltip-hidden {\n display: none;\n }\n\n .rc-tooltip-placement-top,\n .rc-tooltip-placement-topLeft,\n .rc-tooltip-placement-topRight {\n padding-bottom: ${paddingDistance};\n }\n\n .rc-tooltip-placement-right,\n .rc-tooltip-placement-rightTop,\n .rc-tooltip-placement-rightBottom {\n padding-left: ${paddingDistance};\n }\n\n .rc-tooltip-placement-bottom,\n .rc-tooltip-placement-bottomLeft,\n .rc-tooltip-placement-bottomRight {\n padding-top: ${paddingDistance};\n }\n\n .rc-tooltip-placement-left,\n .rc-tooltip-placement-leftTop,\n .rc-tooltip-placement-leftBottom {\n padding-right: ${paddingDistance};\n }\n\n .rc-tooltip-inner {\n word-wrap: break-word;\n min-height: unset;\n }\n\n .rc-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n\n .rc-tooltip.rc-tooltip-zoom-enter,\n .rc-tooltip.rc-tooltip-zoom-leave {\n display: block;\n }\n\n .rc-tooltip-zoom-enter,\n .rc-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 .rc-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 .rc-tooltip-zoom-enter.rc-tooltip-zoom-enter-active,\n .rc-tooltip-zoom-appear.rc-tooltip-zoom-appear-active {\n animation-name: rcToolTipZoomIn;\n animation-play-state: running;\n }\n\n .rc-tooltip-zoom-leave.rc-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 .rc-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.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${() => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${() => theme.components.tooltip.black.background};\n }\n\n /* White variant - small size */\n .tooltip-variant-white.tooltip-size-small .rc-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.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${() => theme.components.tooltip.white.small.background};\n }\n\n /* White variant - large size */\n .tooltip-variant-white.tooltip-size-large .rc-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.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${() => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${() => theme.components.tooltip.white.large.background};\n }\n`;\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, { createContext, useContext } from 'react';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { TooltipGlobalStyles } from '../Tooltip';\nimport { registerGlobalContext } from '../utils/context';\n\nconst UIConfigContext = createContext<UIConfig | null>(null);\n\n\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\n *\n * Unified provider for all UI components and global configurations\n * Includes ThemeProvider, IconProvider, ToastContainer, and other settings\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 registerGlobalContext({theme: config.theme});\n const { icons = {}, toast = {} } = config;\n\n const toastConfig = {\n maxCount: toast.maxCount ?? 5,\n defaultDuration: toast.defaultDuration ?? 3000,\n };\n\n const TooltipStyles = TooltipGlobalStyles as any;\n\n return (\n <UIConfigContext.Provider value={config}>\n <TooltipStyles />\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 * @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 if (!context) {\n throw new Error('useUIConfig must be used within UIConfigProvider');\n }\n return context;\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"]}
|
|
1
|
+
{"version":3,"sources":["../../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/Toast/index.ts","../../src/Toast/ToastContainer.tsx","../../src/Tabs/Tabs.tsx","../../src/Tooltip/Tooltip.tsx","../../src/Tooltip/globalStyle.ts","../../src/ToolbarButton/ToolbarButton.tsx","../../src/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts"],"names":["IconProvider","useIconRegistry","createContext","useContext","Icon","styled","React","init_Icon","Toast","init_Button","theme","useState","useEffect","getGlobalTheme","Button","toast","getGlobalRenderFunction","toastManager","baseStyled","IconWrapper","sizeConfig","styles","Slider","useRef","useCallback","init_Slider","NumberInput","init_NumberInput","SpinButton","HiddenInput","InputWrapper","StyledInput","forwardRef","ToastWrapper","ToastContainer","RcTooltip","createGlobalStyle","ReactDOM"],"mappings":"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","file":"index.js","sourcesContent":["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';\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 registry = useIconRegistry();\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(`Icon \"${name}\" not found in registry. Make sure IconProvider is set up.`);\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';\n\nexport interface ToastProps {\n /**\n * Toast variant type\n */\n variant?: 'success' | 'info' | 'error' | 'warn';\n /**\n * Toast message content (main text)\n */\n message: string;\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';\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';\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 d=\"M6 10L9 13L14 7\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\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\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',\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}) => {\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 };\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 >\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\n variant=\"text\"\n colorType=\"guidance\"\n size=\"small\"\n onClick={onMainButtonClick}\n >\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\n\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: string, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'success', message });\n }\n\n /**\n * Show info toast\n */\n info(message: string, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'info', message });\n }\n\n /**\n * Show error toast\n */\n error(message: string, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'error', message });\n }\n\n /**\n * Show warning toast\n */\n warn(message: string, options?: Partial<ToastProps>): string {\n return this.show({ ...options, variant: 'warn', 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: string, options?: Partial<ToastProps>) =>\n toastManager.success(message, options),\n info: (message: string, options?: Partial<ToastProps>) => toastManager.info(message, options),\n error: (message: string, options?: Partial<ToastProps>) => toastManager.error(message, options),\n warn: (message: string, options?: Partial<ToastProps>) => toastManager.warn(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\";\n\nconst globalTheme: Theme = {} as Theme;\n\nconst registerGlobalTheme = (theme: Theme) => {\n // Replace the reference instead of mutating\n Object.assign(globalTheme, { ...globalTheme, ...theme });\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 = null;\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 * 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 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 = 0,\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 onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(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): string => {\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): number => {\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) => {\n const clampedValue = clampValue(newValue);\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [clampValue, controlledValue, onChange]\n );\n\n // Increment value\n const increment = useCallback(() => {\n if (disabled) return;\n handleValueChange(value + step);\n }, [disabled, value, step, handleValueChange]);\n\n // Decrement value\n const decrement = useCallback(() => {\n if (disabled) return;\n handleValueChange(value - 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 parsed = parseValue(displayValue);\n if (parsed !== null) {\n handleValueChange(parsed);\n } else {\n setDisplayValue(formatValue(value));\n }\n }, [displayValue, parseValue, handleValueChange, value, formatValue]);\n\n // Handle input focus\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n setDisplayValue(String(value));\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 $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\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' ? '83px' : '72px')};\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 const handleValueChange = useCallback(\n (newValue: number | null) => {\n if (newValue === null) return;\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 } from './Input';\nexport type { InputProps, SearchInputProps } 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 { UIConfigProvider, useUIConfig, createUIConfig, mergeUIConfig } from './UIConfigProvider';\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 transform: translateY(-50%);\n border-style: solid;\n box-sizing: border-box;\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 return `\n width: ${thumbSize};\n height: ${thumbSize};\n border-radius: ${thumbBorderRadius};\n border-width: ${thumbBorderWidth};\n ${$checked ? 'right' : 'left'}: ${thumbOffset};\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 */\n checked?: boolean;\n /**\n * Default checked state\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 * 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 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 return (\n <RadioContainer\n $disabled={disabled}\n className={className}\n style={style}\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 * 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 ${CheckboxContainer}:hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n ${CheckboxContainer}: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 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 return (\n <CheckboxContainer\n $disabled={disabled}\n className={className}\n style={style}\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 = 'small' | 'medium' | 'large' | 'extraLarge';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\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 * Custom className\n */\n className?: string;\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\n}\n\nconst InputWrapper = styled.div<{\n $size: InputSize;\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 transition: all 0.2s ease;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n height: ${sizeConfig.height};\n border-radius: ${sizeConfig.borderRadius};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n ${({ $error, $disabled, $readOnly, $isFocused, theme, $size }) => {\n const stateConfig = theme.components.input.outlined.state;\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;\n background = stateConfig.backgroundReadonly;\n } else if ($error) {\n borderColor = stateConfig.borderColorError;\n background = stateConfig.backgroundActive;\n } else if ($isFocused) {\n borderColor = stateConfig.borderColorActive;\n background = stateConfig.backgroundActive;\n const size = $size || 'medium';\n boxShadow = (theme.components.input.outlined as any)[size].boxShadowActive;\n }\n\n return `\n border: 1px solid ${borderColor};\n background: ${background};\n box-shadow: ${boxShadow};\n\n &:hover:not(:disabled) {\n ${!$disabled && !$readOnly && !$isFocused ? `\n border-color: ${stateConfig.borderColorHover};\n background: ${stateConfig.backgroundHover};\n ` : ''}\n }\n `;\n }}\n\n ${({ $disabled }) => $disabled && `\n cursor: not-allowed;\n opacity: 1;\n `}\n`;\n\nconst StyledInput = styled.input<{\n $size: InputSize;\n $disabled: boolean;\n $readOnly: 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 color: ${({ theme }) => theme.components.input.outlined.state.borderColorActive};\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n ${({ $disabled, theme }) => $disabled && `\n cursor: not-allowed;\n color: ${theme.colors.palettes.transparency['30']};\n `}\n\n ${({ $readOnly }) => $readOnly && `\n cursor: default;\n `}\n`;\n\nconst PrefixNode = styled.div<{ $size: InputSize }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-right: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\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 }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\n/**\n * Input Component\n *\n * @example\n * // Basic input\n * <Input placeholder=\"Enter text\" />\n *\n * @example\n * // Input with prefix and suffix\n * <Input prefixNode={<SearchIcon />} suffixNode={<CloseIcon />} />\n *\n * @example\n * // Input with error state\n * <Input error placeholder=\"Enter text\" />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'medium',\n error = false,\n disabled = false,\n readOnly = false,\n prefixNode,\n suffixNode,\n className,\n style,\n onFocus,\n onBlur,\n ...rest\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\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 return (\n <InputWrapper\n $size={size}\n $error={error}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n {prefixNode && <PrefixNode $size={size}>{prefixNode}</PrefixNode>}\n <StyledInput\n ref={ref}\n $size={size}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n disabled={disabled}\n readOnly={readOnly}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n />\n {suffixNode && <SuffixNode $size={size}>{suffixNode}</SuffixNode>}\n </InputWrapper>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import React, { forwardRef, useState } from 'react';\nimport { styled } from '../utils/styled';\nimport { Input, InputProps } from './Input';\n\nexport interface SearchInputProps extends Omit<InputProps, 'size' | 'prefixNode'> {\n /**\n * SearchInput size (only medium and large)\n */\n size?: 'extraLarge' | '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\n */\n searchIcon?: React.ReactNode;\n}\n\nconst SearchIconWrapper = styled.div<{ $size: 'extraLarge' | 'large' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n`;\n\nconst ClearButton = styled.button<{ $size: 'extraLarge' | 'large' }>`\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, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n`;\n\nconst DefaultSearchIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\nconst DefaultCloseIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4L4 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/**\n * SearchInput Component\n *\n * @example\n * // Basic search input\n * <SearchInput placeholder=\"Search...\" />\n *\n * @example\n * // Search input with clearable\n * <SearchInput clearable onClear={() => console.log('cleared')} />\n *\n * @example\n * // Large search input\n * <SearchInput size=\"large\" placeholder=\"Search...\" />\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n size = 'extraLarge',\n clearable = true,\n onClear,\n searchIcon,\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n ...rest\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\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 = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n onClear?.();\n };\n\n const prefixNode = (\n <SearchIconWrapper $size={size}>\n {searchIcon || <DefaultSearchIcon />}\n </SearchIconWrapper>\n );\n\n const suffixNode = clearable && currentValue && !disabled && !readOnly ? (\n <ClearButton\n $size={size}\n onClick={handleClear}\n type=\"button\"\n tabIndex={-1}\n >\n <DefaultCloseIcon />\n </ClearButton>\n ) : null;\n\n return (\n <Input\n ref={ref}\n size={size}\n prefixNode={prefixNode}\n suffixNode={suffixNode}\n value={isControlled ? value : internalValue}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = 'SearchInput';\n\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: string, options?: Partial<ToastProps>) => string;\n info: (message: string, options?: Partial<ToastProps>) => string;\n error: (message: string, options?: Partial<ToastProps>) => string;\n warn: (message: string, 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: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'success', message });\n }, [showToast]);\n\n const info = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'info', message });\n }, [showToast]);\n\n const error = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'error', message });\n }, [showToast]);\n\n const warn = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'warn', message });\n }, [showToast]);\n\n const contextValue: ToastContextValue = {\n showToast,\n hideToast,\n success,\n info,\n error,\n warn,\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 React from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip';\nimport 'rc-tooltip/assets/bootstrap.css';\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 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 { 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 text-decoration: none;\n word-wrap: break-word;\n min-height: unset;\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 { 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, { createContext, useContext } from 'react';\nimport ReactDOM from 'react-dom';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { TooltipGlobalStyles } from '../Tooltip';\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\n *\n * Unified provider for all UI components and global configurations\n * Includes ThemeProvider, IconProvider, ToastContainer, and other settings\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 const { icons = {}, toast = {} } = config;\n\n // Create a compatible render function\n const renderFunction = (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 // Register global context with theme and render function immediately\n // This must happen before any styled components are rendered\n registerGlobalContext({\n theme: config.theme,\n render: renderFunction,\n });\n\n const toastConfig = {\n maxCount: toast.maxCount ?? 5,\n defaultDuration: toast.defaultDuration ?? 3000,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const TooltipStyles = TooltipGlobalStyles as any;\n\n return (\n <UIConfigContext.Provider value={config}>\n <TooltipStyles />\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 * @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 if (!context) {\n throw new Error('useUIConfig must be used within UIConfigProvider');\n }\n return context;\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"]}
|