@officesdk/design 0.1.2 → 0.1.5

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.
Files changed (37) hide show
  1. package/dist/components/{index.d.ts → cjs/index.d.ts} +76 -2
  2. package/dist/components/{index.js → cjs/index.js} +596 -212
  3. package/dist/components/cjs/index.js.map +1 -0
  4. package/dist/components/{index.d.mts → esm/index.d.ts} +76 -2
  5. package/dist/components/{index.mjs → esm/index.js} +594 -213
  6. package/dist/components/esm/index.js.map +1 -0
  7. package/dist/icons/cjs/index.js.map +1 -0
  8. package/dist/icons/{index.mjs → esm/index.js} +2 -2
  9. package/dist/icons/esm/index.js.map +1 -0
  10. package/dist/theme/{index.js → cjs/index.js} +56 -1
  11. package/dist/theme/cjs/index.js.map +1 -0
  12. package/dist/theme/{index.mjs → esm/index.js} +58 -3
  13. package/dist/theme/esm/index.js.map +1 -0
  14. package/dist/utils/cjs/index.js.map +1 -0
  15. package/dist/utils/{index.mjs → esm/index.js} +2 -2
  16. package/dist/utils/esm/index.js.map +1 -0
  17. package/package.json +24 -21
  18. package/dist/components/index.js.map +0 -1
  19. package/dist/components/index.mjs.map +0 -1
  20. package/dist/icons/index.js.map +0 -1
  21. package/dist/icons/index.mjs.map +0 -1
  22. package/dist/index.d.mts +0 -2
  23. package/dist/index.d.ts +0 -2
  24. package/dist/index.js +0 -2
  25. package/dist/index.mjs +0 -2
  26. package/dist/theme/index.js.map +0 -1
  27. package/dist/theme/index.mjs.map +0 -1
  28. package/dist/utils/index.js.map +0 -1
  29. package/dist/utils/index.mjs.map +0 -1
  30. /package/dist/icons/{index.d.ts → cjs/index.d.ts} +0 -0
  31. /package/dist/icons/{index.js → cjs/index.js} +0 -0
  32. /package/dist/icons/{index.d.mts → esm/index.d.ts} +0 -0
  33. /package/dist/theme/{index.d.ts → cjs/index.d.ts} +0 -0
  34. /package/dist/theme/{index.d.mts → esm/index.d.ts} +0 -0
  35. /package/dist/utils/{index.d.ts → cjs/index.d.ts} +0 -0
  36. /package/dist/utils/{index.js → cjs/index.js} +0 -0
  37. /package/dist/utils/{index.d.mts → esm/index.d.mts} +0 -0
@@ -0,0 +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,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import { TooltipProps as TooltipProps$1 } from 'rc-tooltip/lib/Tooltip';
3
+ import { ThemedStyledInterface } from 'styled-components';
4
+ import { CommonThemeConfig } from '@officesdk/editor-sdk-core/shared';
3
5
 
4
6
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
7
  /**
@@ -758,7 +760,7 @@ interface TooltipProps extends Partial<TooltipProps$1> {
758
760
  /**
759
761
  * Tooltip content
760
762
  */
761
- content: React.ReactNode;
763
+ content?: React.ReactNode;
762
764
  /**
763
765
  * Tooltip variant
764
766
  */
@@ -803,6 +805,74 @@ interface TooltipProps extends Partial<TooltipProps$1> {
803
805
  */
804
806
  declare const Tooltip: React.FC<TooltipProps>;
805
807
 
808
+ interface ToolbarButtonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'> {
809
+ /**
810
+ * Whether the button is disabled
811
+ */
812
+ disabled?: boolean;
813
+ /**
814
+ * Whether the button is in active state
815
+ */
816
+ active?: boolean;
817
+ /**
818
+ * Icon to display
819
+ */
820
+ icon?: React.ReactNode;
821
+ /**
822
+ * Label text
823
+ */
824
+ label?: string;
825
+ /**
826
+ * Whether to show dropdown arrow
827
+ */
828
+ hasDropdown?: boolean;
829
+ /**
830
+ * Whether the dropdown section is clickable separately
831
+ */
832
+ splitDropdown?: boolean;
833
+ /**
834
+ * Click handler for main button
835
+ */
836
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
837
+ /**
838
+ * Click handler for dropdown section
839
+ */
840
+ onDropdownClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
841
+ /**
842
+ * Custom className
843
+ */
844
+ className?: string;
845
+ /**
846
+ * Custom style
847
+ */
848
+ style?: React.CSSProperties;
849
+ }
850
+ /**
851
+ * ToolbarButton Component
852
+ *
853
+ * A toolbar button with optional icon, label, and dropdown functionality
854
+ *
855
+ * @example
856
+ * // Icon only button
857
+ * <ToolbarButton icon={<Icon />} />
858
+ *
859
+ * @example
860
+ * // Button with label and dropdown
861
+ * <ToolbarButton icon={<Icon />} label="Format" hasDropdown />
862
+ *
863
+ * @example
864
+ * // Button with split dropdown
865
+ * <ToolbarButton
866
+ * icon={<Icon />}
867
+ * label="Format"
868
+ * hasDropdown
869
+ * splitDropdown
870
+ * onClick={handleClick}
871
+ * onDropdownClick={handleDropdownClick}
872
+ * />
873
+ */
874
+ declare const ToolbarButton: React.FC<ToolbarButtonProps>;
875
+
806
876
  type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
807
877
  interface ToastConfig {
808
878
  /**
@@ -993,4 +1063,8 @@ declare const createUIConfig: (config: UIConfig) => UIConfig;
993
1063
  */
994
1064
  declare const mergeUIConfig: (baseConfig: UIConfig, ...configs: Partial<UIConfig>[]) => UIConfig;
995
1065
 
996
- export { type A11yConfig, type AnimationConfig, Button, type ButtonProps, Checkbox, type CheckboxProps, type I18nConfig, Icon, type IconComponent, type IconProps, IconProvider, type IconProviderProps, type IconRegistry, Input, type InputProps, NumberInput, type NumberInputProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Slider, type SliderProps, SpinButton, type SpinButtonProps, Switch, type SwitchProps, type TabItem, Tabs, type TabsProps, Toast, type ToastConfig, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, Tooltip, type TooltipProps, type UIConfig, UIConfigProvider, type UIConfigProviderProps, type ZIndexConfig, createUIConfig, mergeUIConfig, useIconRegistry, useToast, useUIConfig };
1066
+ declare const styled: ThemedStyledInterface<CommonThemeConfig>;
1067
+
1068
+ declare const getGlobalTheme: () => Record<string, any>;
1069
+
1070
+ export { type A11yConfig, type AnimationConfig, Button, type ButtonProps, Checkbox, type CheckboxProps, type I18nConfig, Icon, type IconComponent, type IconProps, IconProvider, type IconProviderProps, type IconRegistry, Input, type InputProps, NumberInput, type NumberInputProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Slider, type SliderProps, SpinButton, type SpinButtonProps, Switch, type SwitchProps, type TabItem, Tabs, type TabsProps, Toast, type ToastConfig, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, ToolbarButton, type ToolbarButtonProps, Tooltip, type TooltipProps, type UIConfig, UIConfigProvider, type UIConfigProviderProps, type ZIndexConfig, createUIConfig, getGlobalTheme, mergeUIConfig, styled, useIconRegistry, useToast, useUIConfig };