@officesdk/design 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Button/Button.tsx","../src/Slider/Slider.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/UIConfigProvider/UIConfigProvider.tsx","../src/UIConfigProvider/createUIConfig.ts"],"names":["styled","styles","React","useState","useRef","useCallback","useEffect","HiddenInput","IconWrapper","InputWrapper","StyledInput","forwardRef","createContext","ToastContainer","useContext"],"mappings":"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","file":"index.mjs","sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\n\nexport interface ButtonProps {\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 * Click event handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Button content\n */\n children?: React.ReactNode;\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\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 onClick,\n children,\n className,\n style\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 onClick={onClick}\n className={className}\n style={style}\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';\nimport { Slider } from '../Slider';\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\nconst SpinButtonContainer = 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`;\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 -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 * 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 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 <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={(val) => handleValueChange(val)}\n />\n </SliderWrapper>\n )}\n\n <SpinButtonContainer $size={size} $disabled={disabled} $alert={alert} $isFocused={isFocused}>\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 </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 </SpinButtonContainer>\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 { createGlobalStyle } from 'styled-components';\nimport 'rc-tooltip/assets/bootstrap.css';\n\nexport interface TooltipProps extends Omit<RcTooltipProps, 'overlay'> {\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\nconst TooltipGlobalStyles = createGlobalStyle<{\n $variant: 'black' | 'white';\n $size?: 'small' | 'large';\n}>`\n .rc-tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n visibility: visible;\n font-size: 12px;\n line-height: 1.5;\n opacity: 0;\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: 8px;\n }\n\n .rc-tooltip-placement-right,\n .rc-tooltip-placement-rightTop,\n .rc-tooltip-placement-rightBottom {\n padding-left: 8px;\n }\n\n .rc-tooltip-placement-bottom,\n .rc-tooltip-placement-bottomLeft,\n .rc-tooltip-placement-bottomRight {\n padding-top: 8px;\n }\n\n .rc-tooltip-placement-left,\n .rc-tooltip-placement-leftTop,\n .rc-tooltip-placement-leftBottom {\n padding-right: 8px;\n }\n\n .rc-tooltip-inner {\n /* istanbul ignore next - styled-components CSS generation */\n ${({ $variant, $size, theme }) => {\n if ($variant === 'black') {\n const config = theme.components.tooltip.black;\n return `\n background: ${config.background};\n border: 1px solid ${config.borderColor};\n color: ${config.color};\n border-radius: ${config.borderRadius};\n padding: ${config.padding};\n box-shadow: ${config.boxShadow};\n font-size: ${config.fontSize};\n line-height: ${config.lineHeight};\n font-weight: ${config.fontWeight};\n max-width: ${config.maxWidth};\n text-align: left;\n text-decoration: none;\n word-wrap: break-word;\n `;\n } else {\n const sizeConfig = theme.components.tooltip.white[$size || 'small'];\n return `\n background: ${sizeConfig.background};\n border: 1px solid ${sizeConfig.borderColor};\n color: ${sizeConfig.color};\n border-radius: ${sizeConfig.borderRadius};\n padding: ${sizeConfig.padding};\n box-shadow: ${sizeConfig.boxShadow};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n font-weight: ${sizeConfig.fontWeight};\n text-align: left;\n text-decoration: none;\n word-wrap: break-word;\n `;\n }\n }}\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 /* istanbul ignore next - styled-components CSS generation */\n ${({ $variant, theme }) => {\n const bgColor =\n $variant === 'black'\n ? theme.components?.tooltip?.black?.background\n : theme.components?.tooltip?.white?.small?.background;\n\n return `\n .rc-tooltip-placement-top .rc-tooltip-arrow,\n .rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: 3px;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${bgColor};\n }\n\n .rc-tooltip-placement-right .rc-tooltip-arrow,\n .rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: 3px;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${bgColor};\n }\n\n .rc-tooltip-placement-left .rc-tooltip-arrow,\n .rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: 3px;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${bgColor};\n }\n\n .rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: 3px;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${bgColor};\n }\n `;\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\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 ...rest\n}) => {\n const GlobalStyles = TooltipGlobalStyles as unknown as React.ComponentType<{\n $variant: 'black' | 'white';\n $size?: 'small' | 'large';\n }>;\n\n return (\n <>\n <GlobalStyles $variant={variant} $size={size} />\n <RcTooltip overlay={<div>{content}</div>} placement={placement} trigger={trigger} {...rest}>\n {children}\n </RcTooltip>\n </>\n );\n};\n\nTooltip.displayName = 'Tooltip';\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';\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 return (\n <UIConfigContext.Provider value={config}>\n <Provider theme={theme}>\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"]}
@@ -0,0 +1,93 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { SVGProps } from 'react';
3
+
4
+ declare const WorkbenchIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
5
+ declare const FormatBrushIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
6
+ declare const ClearFormatIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
7
+ declare const CopyIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
8
+ declare const PasteIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
9
+ declare const CutIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
10
+ declare const DeleteIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
11
+ declare const SelectAllIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
12
+ declare const UndoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
13
+ declare const RedoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
14
+ declare const SaveIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
15
+ declare const CheckIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
16
+ declare const HideIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
17
+ declare const PrintIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
18
+ declare const FilterIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
19
+ declare const SortIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
20
+ declare const SettingsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
21
+ declare const CloseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
22
+ declare const MenuIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
23
+ declare const BackIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
24
+ declare const ListIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
25
+ declare const GridIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
26
+ declare const SearchIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
27
+ declare const EditIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
28
+ declare const ShareIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
29
+ declare const DownloadIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
30
+ declare const UploadIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
31
+ declare const IndentIncreaseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
32
+ declare const IndentDecreaseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
33
+ declare const AlignLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
34
+ declare const AlignCenterIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
35
+ declare const AlignRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
36
+ declare const AlignJustifyIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
37
+ declare const ListBulletIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
38
+ declare const ListNumberIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
39
+ declare const BoldIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
40
+ declare const ItalicIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
41
+ declare const UnderlineIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
42
+ declare const StrikethroughIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
43
+ declare const LinkIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
44
+ declare const ImageIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
45
+ declare const RotateLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
46
+ declare const RotateRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
47
+ declare const FlipHorizontalIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
48
+ declare const FlipVerticalIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
49
+ declare const TableIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
50
+ declare const FreezeIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
51
+ declare const MergeCellsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
52
+ declare const SplitCellsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
53
+ declare const ArrowUpIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
54
+ declare const ArrowDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
55
+ declare const ArrowLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
56
+ declare const ArrowRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
57
+ declare const ChevronUpIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
58
+ declare const ChevronDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
59
+ declare const PlusIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
60
+ declare const MinusIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
61
+ declare const MoreIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
62
+ declare const RefreshIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
63
+ declare const FullscreenIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
64
+ declare const ExitFullscreenIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
65
+ declare const SuccessIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
66
+ declare const ErrorIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
67
+ declare const WarningIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
68
+ declare const InfoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
69
+ declare const LoadingIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
70
+
71
+ type IconComponent = React.FC<SVGProps<SVGSVGElement>>;
72
+ type IconRegistry = Record<string, IconComponent>;
73
+ type GeneralIconName = 'workbench' | 'format-brush' | 'clear-format' | 'copy' | 'paste' | 'cut' | 'delete' | 'select-all' | 'undo' | 'redo' | 'save' | 'check' | 'hide' | 'print';
74
+ type MainSiteIconName = 'filter' | 'sort' | 'settings' | 'close' | 'menu' | 'back' | 'list' | 'grid' | 'search' | 'edit' | 'share' | 'download' | 'upload';
75
+ type TextIconName = 'indent-increase' | 'indent-decrease' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list-bullet' | 'list-number' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'link';
76
+ type ImageIconName = 'image' | 'rotate-left' | 'rotate-right' | 'flip-horizontal' | 'flip-vertical';
77
+ type TableIconName = 'table' | 'freeze' | 'merge-cells' | 'split-cells';
78
+ type ArrowIconName = 'arrow-up' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'chevron-up' | 'chevron-down';
79
+ type UtilityIconName = 'plus' | 'minus' | 'more' | 'refresh' | 'fullscreen' | 'exit-fullscreen';
80
+ type StatusIconName = 'success' | 'error' | 'warning' | 'info' | 'loading';
81
+ type IconName = GeneralIconName | MainSiteIconName | TextIconName | ImageIconName | TableIconName | ArrowIconName | UtilityIconName | StatusIconName;
82
+
83
+ /**
84
+ * Built-in icon registry
85
+ * Maps icon names to React components
86
+ */
87
+ declare const iconRegistry: IconRegistry;
88
+ /**
89
+ * Get icon component by name
90
+ */
91
+ declare const getIcon: (name: string) => IconComponent;
92
+
93
+ export { AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BackIcon, BoldIcon, CheckIcon, ChevronDownIcon, ChevronUpIcon, ClearFormatIcon, CloseIcon, CopyIcon, CutIcon, DeleteIcon, DownloadIcon, EditIcon, ErrorIcon, ExitFullscreenIcon, FilterIcon, FlipHorizontalIcon, FlipVerticalIcon, FormatBrushIcon, FreezeIcon, FullscreenIcon, GridIcon, HideIcon, type IconComponent, type IconName, type IconRegistry, ImageIcon, IndentDecreaseIcon, IndentIncreaseIcon, InfoIcon, ItalicIcon, LinkIcon, ListBulletIcon, ListIcon, ListNumberIcon, LoadingIcon, MenuIcon, MergeCellsIcon, MinusIcon, MoreIcon, PasteIcon, PlusIcon, PrintIcon, RedoIcon, RefreshIcon, RotateLeftIcon, RotateRightIcon, SaveIcon, SearchIcon, SelectAllIcon, SettingsIcon, ShareIcon, SortIcon, SplitCellsIcon, StrikethroughIcon, SuccessIcon, TableIcon, UnderlineIcon, UndoIcon, UploadIcon, WarningIcon, WorkbenchIcon, getIcon, iconRegistry };
@@ -0,0 +1,93 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { SVGProps } from 'react';
3
+
4
+ declare const WorkbenchIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
5
+ declare const FormatBrushIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
6
+ declare const ClearFormatIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
7
+ declare const CopyIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
8
+ declare const PasteIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
9
+ declare const CutIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
10
+ declare const DeleteIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
11
+ declare const SelectAllIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
12
+ declare const UndoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
13
+ declare const RedoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
14
+ declare const SaveIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
15
+ declare const CheckIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
16
+ declare const HideIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
17
+ declare const PrintIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
18
+ declare const FilterIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
19
+ declare const SortIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
20
+ declare const SettingsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
21
+ declare const CloseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
22
+ declare const MenuIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
23
+ declare const BackIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
24
+ declare const ListIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
25
+ declare const GridIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
26
+ declare const SearchIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
27
+ declare const EditIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
28
+ declare const ShareIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
29
+ declare const DownloadIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
30
+ declare const UploadIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
31
+ declare const IndentIncreaseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
32
+ declare const IndentDecreaseIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
33
+ declare const AlignLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
34
+ declare const AlignCenterIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
35
+ declare const AlignRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
36
+ declare const AlignJustifyIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
37
+ declare const ListBulletIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
38
+ declare const ListNumberIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
39
+ declare const BoldIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
40
+ declare const ItalicIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
41
+ declare const UnderlineIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
42
+ declare const StrikethroughIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
43
+ declare const LinkIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
44
+ declare const ImageIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
45
+ declare const RotateLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
46
+ declare const RotateRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
47
+ declare const FlipHorizontalIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
48
+ declare const FlipVerticalIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
49
+ declare const TableIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
50
+ declare const FreezeIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
51
+ declare const MergeCellsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
52
+ declare const SplitCellsIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
53
+ declare const ArrowUpIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
54
+ declare const ArrowDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
55
+ declare const ArrowLeftIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
56
+ declare const ArrowRightIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
57
+ declare const ChevronUpIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
58
+ declare const ChevronDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
59
+ declare const PlusIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
60
+ declare const MinusIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
61
+ declare const MoreIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
62
+ declare const RefreshIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
63
+ declare const FullscreenIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
64
+ declare const ExitFullscreenIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
65
+ declare const SuccessIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
66
+ declare const ErrorIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
67
+ declare const WarningIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
68
+ declare const InfoIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
69
+ declare const LoadingIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
70
+
71
+ type IconComponent = React.FC<SVGProps<SVGSVGElement>>;
72
+ type IconRegistry = Record<string, IconComponent>;
73
+ type GeneralIconName = 'workbench' | 'format-brush' | 'clear-format' | 'copy' | 'paste' | 'cut' | 'delete' | 'select-all' | 'undo' | 'redo' | 'save' | 'check' | 'hide' | 'print';
74
+ type MainSiteIconName = 'filter' | 'sort' | 'settings' | 'close' | 'menu' | 'back' | 'list' | 'grid' | 'search' | 'edit' | 'share' | 'download' | 'upload';
75
+ type TextIconName = 'indent-increase' | 'indent-decrease' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list-bullet' | 'list-number' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'link';
76
+ type ImageIconName = 'image' | 'rotate-left' | 'rotate-right' | 'flip-horizontal' | 'flip-vertical';
77
+ type TableIconName = 'table' | 'freeze' | 'merge-cells' | 'split-cells';
78
+ type ArrowIconName = 'arrow-up' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'chevron-up' | 'chevron-down';
79
+ type UtilityIconName = 'plus' | 'minus' | 'more' | 'refresh' | 'fullscreen' | 'exit-fullscreen';
80
+ type StatusIconName = 'success' | 'error' | 'warning' | 'info' | 'loading';
81
+ type IconName = GeneralIconName | MainSiteIconName | TextIconName | ImageIconName | TableIconName | ArrowIconName | UtilityIconName | StatusIconName;
82
+
83
+ /**
84
+ * Built-in icon registry
85
+ * Maps icon names to React components
86
+ */
87
+ declare const iconRegistry: IconRegistry;
88
+ /**
89
+ * Get icon component by name
90
+ */
91
+ declare const getIcon: (name: string) => IconComponent;
92
+
93
+ export { AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BackIcon, BoldIcon, CheckIcon, ChevronDownIcon, ChevronUpIcon, ClearFormatIcon, CloseIcon, CopyIcon, CutIcon, DeleteIcon, DownloadIcon, EditIcon, ErrorIcon, ExitFullscreenIcon, FilterIcon, FlipHorizontalIcon, FlipVerticalIcon, FormatBrushIcon, FreezeIcon, FullscreenIcon, GridIcon, HideIcon, type IconComponent, type IconName, type IconRegistry, ImageIcon, IndentDecreaseIcon, IndentIncreaseIcon, InfoIcon, ItalicIcon, LinkIcon, ListBulletIcon, ListIcon, ListNumberIcon, LoadingIcon, MenuIcon, MergeCellsIcon, MinusIcon, MoreIcon, PasteIcon, PlusIcon, PrintIcon, RedoIcon, RefreshIcon, RotateLeftIcon, RotateRightIcon, SaveIcon, SearchIcon, SelectAllIcon, SettingsIcon, ShareIcon, SortIcon, SplitCellsIcon, StrikethroughIcon, SuccessIcon, TableIcon, UnderlineIcon, UndoIcon, UploadIcon, WarningIcon, WorkbenchIcon, getIcon, iconRegistry };