@officesdk/design 0.1.1 → 0.1.3

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} +74 -2
  2. package/dist/components/{index.js → cjs/index.js} +257 -177
  3. package/dist/components/cjs/index.js.map +1 -0
  4. package/dist/components/{index.d.mts → esm/index.d.ts} +74 -2
  5. package/dist/components/{index.mjs → esm/index.js} +198 -119
  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/cjs/index.js.map +1 -0
  11. package/dist/theme/{index.mjs → esm/index.js} +2 -2
  12. package/dist/theme/esm/index.js.map +1 -0
  13. package/dist/utils/cjs/index.js.map +1 -0
  14. package/dist/utils/{index.mjs → esm/index.js} +2 -2
  15. package/dist/utils/esm/index.js.map +1 -0
  16. package/package.json +20 -20
  17. package/dist/components/index.js.map +0 -1
  18. package/dist/components/index.mjs.map +0 -1
  19. package/dist/icons/index.js.map +0 -1
  20. package/dist/icons/index.mjs.map +0 -1
  21. package/dist/index.d.mts +0 -2
  22. package/dist/index.d.ts +0 -2
  23. package/dist/index.js +0 -2
  24. package/dist/index.mjs +0 -2
  25. package/dist/theme/index.js.map +0 -1
  26. package/dist/theme/index.mjs.map +0 -1
  27. package/dist/utils/index.js.map +0 -1
  28. package/dist/utils/index.mjs.map +0 -1
  29. /package/dist/icons/{index.d.ts → cjs/index.d.ts} +0 -0
  30. /package/dist/icons/{index.js → cjs/index.js} +0 -0
  31. /package/dist/icons/{index.d.mts → esm/index.d.ts} +0 -0
  32. /package/dist/theme/{index.d.ts → cjs/index.d.ts} +0 -0
  33. /package/dist/theme/{index.js → cjs/index.js} +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/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/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts"],"names":["styled","styles","React","useState","useRef","useCallback","useEffect","HiddenInput","IconWrapper","InputWrapper","StyledInput","forwardRef","createContext","useContext","ToastContainer","RcTooltip","createGlobalStyle","ThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\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(`colorType 'status' is only available for 'text' variant. Falling back to 'default'.`);\n }\n\n const effectiveColorType = (colorType === 'status' && variant !== 'text') ? 'default' : colorType;\n const styles = theme.components.button[variant][effectiveColorType as keyof typeof theme.components.button[typeof variant]];\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\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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 'styled-components';\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';\n\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 }) => theme.components.tooltip.black.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.black.borderColor};\n color: ${({ theme }) => theme.components.tooltip.black.color};\n border-radius: ${({ theme }) => theme.components.tooltip.black.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.black.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.black.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.black.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.black.lineHeight};\n font-weight: ${({ theme }) => theme.components.tooltip.black.fontWeight};\n max-width: ${({ theme }) => 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 }) => 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 }) => 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 }) => 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 }) => 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 }) => theme.components.tooltip.white.small.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.white.small.borderColor};\n color: ${({ theme }) => theme.components.tooltip.white.small.color};\n border-radius: ${({ theme }) => theme.components.tooltip.white.small.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.white.small.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.white.small.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.white.small.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.white.small.lineHeight};\n font-weight: ${({ theme }) => 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 }) => 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 }) => 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 }) => 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 }) => 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 }) => theme.components.tooltip.white.large.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.white.large.borderColor};\n color: ${({ theme }) => theme.components.tooltip.white.large.color};\n border-radius: ${({ theme }) => theme.components.tooltip.white.large.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.white.large.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.white.large.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.white.large.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.white.large.lineHeight};\n font-weight: ${({ theme }) => 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 }) => 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 }) => 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 }) => 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 }) => theme.components.tooltip.white.large.background};\n }\n`;\n","import React, { createContext, useContext } from 'react';\nimport { ThemeProvider, } from 'styled-components';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { TooltipGlobalStyles } from '../Tooltip';\n\nconst UIConfigContext = createContext<UIConfig | null>(null);\n\nexport interface UIConfigProviderProps {\n /**\n * UI configuration\n */\n config: UIConfig;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * UIConfigProvider Component\n *\n * Unified provider for all UI components and global configurations\n * Includes ThemeProvider, IconProvider, ToastContainer, and other settings\n *\n * @example\n * import { UIConfigProvider } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <UIConfigProvider config={{\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * maxCount: 5,\n * },\n * }}>\n * <App />\n * </UIConfigProvider>\n */\nexport const UIConfigProvider: React.FC<UIConfigProviderProps> = ({\n config,\n children,\n}) => {\n const {\n theme,\n icons = {},\n toast = {},\n } = config;\n\n const toastConfig = {\n maxCount: toast.maxCount ?? 5,\n defaultDuration: toast.defaultDuration ?? 3000,\n };\n\n const Provider = ThemeProvider as any;\n\n const TooltipStyles = TooltipGlobalStyles as any;\n\n return (\n <UIConfigContext.Provider value={config}>\n <Provider theme={theme}>\n <TooltipStyles />\n <IconProvider icons={icons}>\n <ToastContainer\n maxCount={toastConfig.maxCount}\n defaultDuration={toastConfig.defaultDuration}\n >\n {children}\n </ToastContainer>\n </IconProvider>\n </Provider>\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\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"]}
@@ -412,6 +412,78 @@ interface SearchInputProps extends Omit<InputProps, 'size' | 'prefixNode'> {
412
412
  */
413
413
  declare const SearchInput: React.ForwardRefExoticComponent<SearchInputProps & React.RefAttributes<HTMLInputElement>>;
414
414
 
415
+ interface NumberInputProps {
416
+ /**
417
+ * Current value
418
+ */
419
+ value?: number;
420
+ /**
421
+ * Default value
422
+ */
423
+ defaultValue?: number;
424
+ /**
425
+ * Minimum value
426
+ */
427
+ min?: number;
428
+ /**
429
+ * Maximum value
430
+ */
431
+ max?: number;
432
+ /**
433
+ * Step increment/decrement
434
+ */
435
+ step?: number;
436
+ /**
437
+ * Size variant
438
+ */
439
+ size?: 'small' | 'large';
440
+ /**
441
+ * Whether the input is disabled
442
+ */
443
+ disabled?: boolean;
444
+ /**
445
+ * Whether to show alert state (red border)
446
+ */
447
+ alert?: boolean;
448
+ /**
449
+ * Number of decimal places
450
+ */
451
+ precision?: number;
452
+ /**
453
+ * Format the display value
454
+ */
455
+ formatter?: (value: number) => string;
456
+ /**
457
+ * Parse the input value
458
+ */
459
+ parser?: (displayValue: string) => number;
460
+ /**
461
+ * Unit text to display after the input
462
+ */
463
+ unit?: string;
464
+ /**
465
+ * Callback when value changes
466
+ */
467
+ onChange?: (value: number | null) => void;
468
+ /**
469
+ * Custom className
470
+ */
471
+ className?: string;
472
+ /**
473
+ * Custom style
474
+ */
475
+ style?: React.CSSProperties;
476
+ }
477
+ /**
478
+ * NumberInput Component
479
+ *
480
+ * A numeric input with increment/decrement buttons
481
+ *
482
+ * @example
483
+ * <NumberInput value={35} onChange={(val) => console.log(val)} />
484
+ */
485
+ declare const NumberInput: React.FC<NumberInputProps>;
486
+
415
487
  interface IconProps {
416
488
  /**
417
489
  * Icon name from registry (requires IconProvider)
@@ -682,7 +754,7 @@ interface TabsProps {
682
754
  */
683
755
  declare const Tabs: React.FC<TabsProps>;
684
756
 
685
- interface TooltipProps extends TooltipProps$1 {
757
+ interface TooltipProps extends Partial<TooltipProps$1> {
686
758
  /**
687
759
  * Tooltip content
688
760
  */
@@ -921,4 +993,4 @@ declare const createUIConfig: (config: UIConfig) => UIConfig;
921
993
  */
922
994
  declare const mergeUIConfig: (baseConfig: UIConfig, ...configs: Partial<UIConfig>[]) => UIConfig;
923
995
 
924
- 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, 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 };
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 };