@officesdk/design 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/components/cjs/index.js.map +1 -0
  2. package/dist/components/{index.mjs → esm/index.js} +2 -2
  3. package/dist/components/esm/index.js.map +1 -0
  4. package/dist/icons/cjs/index.js.map +1 -0
  5. package/dist/icons/{index.mjs → esm/index.js} +2 -2
  6. package/dist/icons/esm/index.js.map +1 -0
  7. package/dist/theme/cjs/index.js.map +1 -0
  8. package/dist/theme/{index.mjs → esm/index.js} +2 -2
  9. package/dist/theme/esm/index.js.map +1 -0
  10. package/dist/utils/cjs/index.js.map +1 -0
  11. package/dist/utils/{index.mjs → esm/index.js} +2 -2
  12. package/dist/utils/esm/index.js.map +1 -0
  13. package/package.json +20 -20
  14. package/dist/components/index.js.map +0 -1
  15. package/dist/components/index.mjs.map +0 -1
  16. package/dist/icons/index.js.map +0 -1
  17. package/dist/icons/index.mjs.map +0 -1
  18. package/dist/index.d.mts +0 -2
  19. package/dist/index.d.ts +0 -2
  20. package/dist/index.js +0 -2
  21. package/dist/index.mjs +0 -2
  22. package/dist/theme/index.js.map +0 -1
  23. package/dist/theme/index.mjs.map +0 -1
  24. package/dist/utils/index.js.map +0 -1
  25. package/dist/utils/index.mjs.map +0 -1
  26. /package/dist/components/{index.d.ts → cjs/index.d.ts} +0 -0
  27. /package/dist/components/{index.js → cjs/index.js} +0 -0
  28. /package/dist/components/{index.d.mts → esm/index.d.ts} +0 -0
  29. /package/dist/icons/{index.d.ts → cjs/index.d.ts} +0 -0
  30. /package/dist/icons/{index.js → cjs/index.js} +0 -0
  31. /package/dist/icons/{index.d.mts → esm/index.d.ts} +0 -0
  32. /package/dist/theme/{index.d.ts → cjs/index.d.ts} +0 -0
  33. /package/dist/theme/{index.js → cjs/index.js} +0 -0
  34. /package/dist/theme/{index.d.mts → esm/index.d.ts} +0 -0
  35. /package/dist/utils/{index.d.ts → cjs/index.d.ts} +0 -0
  36. /package/dist/utils/{index.js → cjs/index.js} +0 -0
  37. /package/dist/utils/{index.d.mts → esm/index.d.mts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Button/Button.tsx","../../src/Slider/Slider.tsx","../../src/NumberInput/NumberInput.tsx","../../src/Button/SpinButton.tsx","../../src/Switch/Switch.tsx","../../src/Radio/Radio.tsx","../../src/Checkbox/Checkbox.tsx","../../src/Input/Input.tsx","../../src/Input/SearchInput.tsx","../../src/Icon/IconProvider.tsx","../../src/Icon/Icon.tsx","../../src/Toast/Toast.tsx","../../src/Toast/ToastContainer.tsx","../../src/Tabs/Tabs.tsx","../../src/Tooltip/Tooltip.tsx","../../src/Tooltip/globalStyle.ts","../../src/UIConfigProvider/UIConfigProvider.tsx","../../src/UIConfigProvider/createUIConfig.ts"],"names":["styled","styles","React","useState","useRef","useCallback","useEffect","HiddenInput","IconWrapper","InputWrapper","StyledInput","forwardRef","createContext","useContext","ToastContainer","RcTooltip","createGlobalStyle","ThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant type\n */\n variant?: 'solid' | 'outlined' | 'text' | 'icon';\n /**\n * Button color type\n * - 'status' is only available for 'text' variant\n */\n colorType?: 'default' | 'guidance' | 'alert' | 'status';\n /**\n * Button size\n */\n size?: 'small' | 'medium' | 'large' | 'extraLarge';\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in loading state\n */\n loading?: boolean;\n /**\n * Whether the button should take full width of its container\n */\n fullWidth?: boolean;\n /**\n * Icon to display before the button text\n */\n iconBefore?: React.ReactNode;\n /**\n * Icon to display after the button text\n */\n iconAfter?: React.ReactNode;\n /**\n * Whether the icon button should have a border (only for variant='icon')\n */\n iconBordered?: boolean;\n}\n\nconst IconWrapper = styled.span<{ $size: ButtonProps['size']; $position: 'before' | 'after' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, $position, theme }) => {\n const sizeConfig = theme.components.button[$size || 'medium'];\n const marginSide = $position === 'before' ? 'margin-right' : 'margin-left';\n\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n ${marginSide}: ${sizeConfig.iconGap};\n\n svg, img {\n width: 100%;\n height: 100%;\n display: block;\n }\n `;\n }}\n`;\n\nconst StyledButton = styled.button<{\n $variant: ButtonProps['variant'];\n $colorType: ButtonProps['colorType'];\n $size: ButtonProps['size'];\n $fullWidth: boolean;\n $isIconOnly: boolean;\n $iconBordered: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n border: none;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n\n /* Size variants */\n ${({ $size, $isIconOnly, theme }) => {\n const sizeConfig = theme.components.button[$size || 'medium'];\n\n if ($isIconOnly) {\n return `\n padding: 0;\n width: ${sizeConfig.height};\n height: ${sizeConfig.height};\n border-radius: ${sizeConfig.borderRadius};\n `;\n }\n\n return `\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n min-height: ${sizeConfig.height};\n `;\n }}\n\n /* Variant and color type styles */\n ${({ $variant, $colorType, $isIconOnly, $iconBordered, theme }) => {\n // Handle icon-only buttons\n if ($variant === 'icon' || $isIconOnly) {\n const baseVariant = $iconBordered ? 'outlined' : 'text';\n const styles = theme.components.button[baseVariant]['default'];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }\n\n const variant = $variant || 'solid';\n const colorType = $colorType || 'default';\n\n // Validate colorType for variant\n if (colorType === 'status' && variant !== 'text') {\n console.warn(`colorType 'status' is only available for 'text' variant. Falling back to 'default'.`);\n }\n\n const effectiveColorType = (colorType === 'status' && variant !== 'text') ? 'default' : colorType;\n const styles = theme.components.button[variant][effectiveColorType as keyof typeof theme.components.button[typeof variant]];\n\n return `\n background: ${styles.background};\n color: ${styles.color};\n border: 1px solid ${styles.borderColor};\n box-shadow: ${styles.boxShadow};\n font-weight: ${styles.fontWeight};\n\n &:hover:not(:disabled) {\n background: ${styles.backgroundHover};\n color: ${styles.colorHover};\n border-color: ${styles.borderColorHover};\n box-shadow: ${styles.boxShadowHover};\n }\n\n &:active:not(:disabled) {\n background: ${styles.backgroundActive};\n color: ${styles.colorActive};\n border-color: ${styles.borderColorActive};\n box-shadow: ${styles.boxShadowActive};\n }\n\n &:disabled {\n background: ${styles.backgroundDisabled};\n color: ${styles.colorDisabled};\n border-color: ${styles.borderColorDisabled};\n box-shadow: ${styles.boxShadowDisabled};\n cursor: not-allowed;\n }\n `;\n }}\n`;\n\n/**\n * Button Component\n *\n * @example\n * // Basic button\n * <Button>button</Button>\n *\n * @example\n * // Button with icons\n * <Button iconBefore={<Icon />}>button</Button>\n *\n * @example\n * // Icon-only button\n * <Button variant=\"icon\" iconBordered><Icon /></Button>\n */\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'solid',\n colorType = 'default',\n size = 'medium',\n disabled = false,\n loading = false,\n fullWidth = false,\n iconBefore,\n iconAfter,\n iconBordered = false,\n children,\n ...rest\n}) => {\n // Determine if this is an icon-only button\n const isIconOnly = variant === 'icon' || (!children && !!(iconBefore || iconAfter));\n\n // For icon-only buttons, use the icon as children\n const iconOnlyContent = iconBefore || iconAfter;\n\n return (\n <StyledButton\n $variant={variant}\n $colorType={colorType}\n $size={size}\n $fullWidth={fullWidth}\n $isIconOnly={isIconOnly}\n $iconBordered={iconBordered}\n disabled={disabled || loading}\n {...rest}\n >\n {loading ? (\n <>Loading...</>\n ) : isIconOnly ? (\n iconOnlyContent\n ) : (\n <>\n {iconBefore && (\n <IconWrapper $size={size} $position=\"before\">\n {iconBefore}\n </IconWrapper>\n )}\n {children}\n {iconAfter && (\n <IconWrapper $size={size} $position=\"after\">\n {iconAfter}\n </IconWrapper>\n )}\n </>\n )}\n </StyledButton>\n );\n};\n\nButton.displayName = 'Button';\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\n\nexport interface SliderProps {\n /**\n * Current value (0-100)\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment\n */\n step?: number;\n /**\n * Whether the slider is disabled\n */\n disabled?: boolean;\n /**\n * Callback when value changes\n */\n onChange?: (value: number) => void;\n /**\n * Callback when dragging starts\n */\n onDragStart?: () => void;\n /**\n * Callback when dragging ends\n */\n onDragEnd?: () => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SliderContainer = styled.div<{\n $disabled: boolean;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 18px;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n`;\n\nconst SliderTrack = styled.div<{\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: ${({ theme }) => theme.colors.palettes.transparency['20']};\n border-radius: 1000px;\n top: 50%;\n transform: translateY(-50%);\n`;\n\nconst SliderFill = styled.div<{\n $percentage: number;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 0;\n height: 2px;\n border-radius: 1px;\n top: 50%;\n transform: translateY(-50%);\n width: ${({ $percentage }) => $percentage}%;\n background: ${({ $disabled, theme }) =>\n $disabled\n ? theme.colors.palettes.transparency['10']\n : theme.colors.palettes.gray['100']};\n`;\n\nconst SliderThumb = styled.div<{\n $percentage: number;\n $disabled: boolean;\n $isDragging: boolean;\n}>`\n position: absolute;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.blue['5']};\n left: ${({ $percentage }) => $percentage}%;\n top: 50%;\n transform: translate(-50%, -50%);\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'grab')};\n transition: ${({ $isDragging }) => ($isDragging ? 'none' : 'left 0.1s ease')};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.1);\n\n ${({ $disabled }) =>\n !$disabled &&\n `\n &:hover {\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.15);\n }\n\n &:active {\n cursor: grabbing;\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.2);\n }\n `}\n`;\n\n/**\n * Slider Component\n *\n * A slider for selecting a value from a range\n *\n * @example\n * <Slider value={35} onChange={(val) => console.log(val)} />\n */\nexport const Slider: React.FC<SliderProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n onChange,\n onDragStart,\n onDragEnd,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(\n controlledValue ?? defaultValue\n );\n const [isDragging, setIsDragging] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Calculate percentage\n const percentage = ((value - min) / (max - min)) * 100;\n\n // Update value based on position\n const updateValue = useCallback(\n (clientX: number) => {\n if (!containerRef.current || disabled) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const newPercentage = Math.max(0, Math.min(100, (offsetX / rect.width) * 100));\n const rawValue = (newPercentage / 100) * (max - min) + min;\n\n // Apply step\n const steppedValue = Math.round(rawValue / step) * step;\n const clampedValue = Math.max(min, Math.min(max, steppedValue));\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [min, max, step, disabled, controlledValue, onChange]\n );\n\n // Handle mouse down\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.preventDefault();\n setIsDragging(true);\n onDragStart?.();\n updateValue(e.clientX);\n },\n [disabled, onDragStart, updateValue]\n );\n\n // Handle mouse move\n useEffect(() => {\n if (!isDragging) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n updateValue(e.clientX);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n onDragEnd?.();\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, updateValue, onDragEnd]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let newValue = value;\n\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n newValue = Math.max(min, value - step);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n newValue = Math.min(max, value + step);\n break;\n case 'Home':\n e.preventDefault();\n newValue = min;\n break;\n case 'End':\n e.preventDefault();\n newValue = max;\n break;\n default:\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [disabled, value, min, max, step, controlledValue, onChange]\n );\n\n return (\n <SliderContainer\n ref={containerRef}\n $disabled={disabled}\n className={className}\n style={style}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n >\n <SliderTrack $disabled={disabled} />\n <SliderFill $percentage={percentage} $disabled={disabled} />\n <SliderThumb\n $percentage={percentage}\n $disabled={disabled}\n $isDragging={isDragging}\n />\n </SliderContainer>\n );\n};\n\nSlider.displayName = 'Slider';\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\n\nexport interface NumberInputProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Unit text to display after the input\n */\n unit?: string;\n /**\n * Callback when value changes\n */\n onChange?: (value: number | null) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst NumberInputContainer = styled.div<{\n $size: 'small' | 'large';\n $disabled: boolean;\n $alert: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n background: white;\n border: 1px solid;\n border-radius: 2px;\n flex-shrink: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n height: 24px;\n width: 72px;\n `\n : `\n height: 32px;\n width: 80px;\n `}\n\n ${({ $disabled, $alert, $isFocused, theme }) => {\n if ($disabled) {\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n cursor: not-allowed;\n `;\n }\n if ($alert) {\n return `\n border-color: ${theme.colors.palettes.red['6']};\n `;\n }\n if ($isFocused) {\n return `\n border-color: ${theme.colors.palettes.transparency['30']};\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.04);\n `;\n }\n return `\n border-color: ${theme.colors.palettes.transparency['10']};\n\n &:hover {\n border-color: ${theme.colors.palettes.transparency['20']};\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.04);\n }\n `;\n }}\n`;\n\nconst InputWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 8px;\n min-width: 0;\n gap: 4px;\n`;\n\nconst UnitText = styled.span<{ $size: 'small' | 'large'; $disabled: boolean }>`\n flex-shrink: 0;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n`;\n\nconst StyledInput = styled.input<{ $size: 'small' | 'large'; $disabled: boolean }>`\n width: 100%;\n border: none;\n outline: none;\n background: transparent;\n font-family: 'PingFang SC', sans-serif;\n font-weight: 400;\n line-height: 20px;\n padding: 0;\n margin: 0;\n\n ${({ $size }) =>\n $size === 'small'\n ? `\n font-size: 12px;\n `\n : `\n font-size: 13px;\n `}\n\n ${({ $disabled, theme }) =>\n $disabled\n ? `\n color: ${theme.colors.palettes.transparency['30']};\n cursor: not-allowed;\n `\n : `\n color: ${theme.colors.palettes.gray['120']};\n `}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n /* Remove number input arrows */\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &[type='number'] {\n appearance: textfield;\n -moz-appearance: textfield;\n }\n`;\n\nconst ButtonGroup = styled.div<{ $alert: boolean; $disabled: boolean }>`\n display: flex;\n flex-direction: column;\n height: 100%;\n border-left: 1px solid;\n flex-shrink: 0;\n\n ${({ $disabled, $alert, theme }) => {\n if ($disabled) {\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }\n if ($alert) {\n return `border-color: ${theme.colors.palettes.red['6']};`;\n }\n return `border-color: ${theme.colors.palettes.transparency['10']};`;\n }}\n`;\n\nconst StepButton = styled.button<{ $position: 'up' | 'down'; $alert: boolean; $disabled: boolean }>`\n flex: 1 1 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 1px 8px;\n outline: none;\n min-height: 0;\n overflow: hidden;\n\n ${({ $position, $alert, $disabled, theme }) => {\n if ($position === 'up') {\n return `\n border-bottom: 1px solid ${\n $disabled\n ? theme.colors.palettes.transparency['10']\n : $alert\n ? theme.colors.palettes.red['6']\n : theme.colors.palettes.transparency['10']\n };\n `;\n }\n return '';\n }}\n\n ${({ $disabled, theme }) => {\n if ($disabled) {\n return `\n cursor: not-allowed;\n opacity: 0.4;\n `;\n }\n return `\n &:hover {\n background-color: ${theme.colors.palettes.transparency['5']};\n }\n\n &:active {\n background-color: ${theme.colors.palettes.transparency['10']};\n }\n `;\n }}\n\n svg {\n width: 14px;\n height: 14px;\n fill: ${({ $disabled, theme }) =>\n $disabled ? theme.colors.palettes.transparency['30'] : theme.colors.palettes.gray['120']};\n }\n`;\n\nconst UpArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 4.5L10.5 8.5H3.5L7 4.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\nconst DownArrow = () => (\n <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 9.5L3.5 5.5H10.5L7 9.5Z\" fill=\"currentColor\" />\n </svg>\n);\n\n/**\n * NumberInput Component\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <NumberInput value={35} onChange={(val) => console.log(val)} />\n */\nexport const NumberInput: React.FC<NumberInputProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n precision,\n formatter,\n parser,\n unit,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(controlledValue ?? defaultValue);\n const [displayValue, setDisplayValue] = useState<string>('');\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Format value for display\n const formatValue = useCallback(\n (val: number): string => {\n if (formatter) {\n return formatter(val);\n }\n if (precision !== undefined) {\n return val.toFixed(precision);\n }\n return String(val);\n },\n [formatter, precision]\n );\n\n // Parse display value to number\n const parseValue = useCallback(\n (displayVal: string): number | null => {\n if (parser) {\n return parser(displayVal);\n }\n const parsed = parseFloat(displayVal);\n return isNaN(parsed) ? null : parsed;\n },\n [parser]\n );\n\n // Update display value when value changes\n useEffect(() => {\n if (!isFocused) {\n setDisplayValue(formatValue(value));\n }\n }, [value, isFocused, formatValue]);\n\n // Clamp value to min/max\n const clampValue = useCallback(\n (val: number): number => {\n return Math.max(min, Math.min(max, val));\n },\n [min, max]\n );\n\n // Handle value change\n const handleValueChange = useCallback(\n (newValue: number) => {\n const clampedValue = clampValue(newValue);\n\n if (controlledValue === undefined) {\n setInternalValue(clampedValue);\n }\n\n onChange?.(clampedValue);\n },\n [clampValue, controlledValue, onChange]\n );\n\n // Increment value\n const increment = useCallback(() => {\n if (disabled) return;\n handleValueChange(value + step);\n }, [disabled, value, step, handleValueChange]);\n\n // Decrement value\n const decrement = useCallback(() => {\n if (disabled) return;\n handleValueChange(value - step);\n }, [disabled, value, step, handleValueChange]);\n\n // Handle input change\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setDisplayValue(e.target.value);\n }, []);\n\n // Handle input blur\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n const parsed = parseValue(displayValue);\n if (parsed !== null) {\n handleValueChange(parsed);\n } else {\n setDisplayValue(formatValue(value));\n }\n }, [displayValue, parseValue, handleValueChange, value, formatValue]);\n\n // Handle input focus\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n setDisplayValue(String(value));\n }, [value]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n } else if (e.key === 'Enter') {\n inputRef.current?.blur();\n }\n },\n [increment, decrement]\n );\n\n return (\n <NumberInputContainer\n $size={size}\n $disabled={disabled}\n $alert={alert}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n <InputWrapper>\n <StyledInput\n ref={inputRef}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n $size={size}\n $disabled={disabled}\n />\n {unit && (\n <UnitText $size={size} $disabled={disabled}>\n {unit}\n </UnitText>\n )}\n </InputWrapper>\n\n <ButtonGroup $alert={alert} $disabled={disabled}>\n <StepButton\n type=\"button\"\n $position=\"up\"\n $alert={alert}\n $disabled={disabled}\n onClick={increment}\n disabled={disabled}\n tabIndex={-1}\n >\n <UpArrow />\n </StepButton>\n\n <StepButton\n type=\"button\"\n $position=\"down\"\n $alert={alert}\n $disabled={disabled}\n onClick={decrement}\n disabled={disabled}\n tabIndex={-1}\n >\n <DownArrow />\n </StepButton>\n </ButtonGroup>\n </NumberInputContainer>\n );\n};\n\nNumberInput.displayName = 'NumberInput';\n\n","import React, { useState, useCallback } from 'react';\nimport styled from 'styled-components';\nimport { Slider } from '../Slider';\nimport { NumberInput } from '../NumberInput';\n\nexport interface SpinButtonProps {\n /**\n * Current value\n */\n value?: number;\n /**\n * Default value\n */\n defaultValue?: number;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step increment/decrement\n */\n step?: number;\n /**\n * Size variant\n */\n size?: 'small' | 'large';\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether to show alert state (red border)\n */\n alert?: boolean;\n /**\n * Whether to show the slider\n */\n showSlider?: boolean;\n /**\n * Number of decimal places\n */\n precision?: number;\n /**\n * Format the display value\n */\n formatter?: (value: number) => string;\n /**\n * Parse the input value\n */\n parser?: (displayValue: string) => number;\n /**\n * Callback when value changes\n */\n onChange?: (value: number | null) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SpinButtonWrapper = styled.div<{\n $showSlider: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n gap: ${({ $showSlider }) => ($showSlider ? '0' : '0')};\n width: ${({ $showSlider }) => ($showSlider ? '100%' : 'auto')};\n`;\n\nconst SliderWrapper = styled.div<{\n $size: 'small' | 'large';\n}>`\n flex: 1;\n display: flex;\n align-items: center;\n padding: ${({ $size }) => ($size === 'small' ? '7px 0' : '7px 0')};\n padding-right: ${({ $size }) => ($size === 'small' ? '83px' : '72px')};\n min-width: 0;\n`;\n\n\n/**\n * SpinButton Component - Spin Button\n *\n * A numeric input with increment/decrement buttons\n *\n * @example\n * <SpinButton value={35} onChange={(val) => console.log(val)} />\n */\nexport const SpinButton: React.FC<SpinButtonProps> = ({\n value: controlledValue,\n defaultValue = 0,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = 'large',\n disabled = false,\n alert = false,\n showSlider = false,\n precision,\n formatter,\n parser,\n onChange,\n className,\n style,\n}) => {\n const [internalValue, setInternalValue] = useState<number>(controlledValue ?? defaultValue);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n // Handle value change from NumberInput or Slider\n const handleValueChange = useCallback(\n (newValue: number | null) => {\n if (newValue === null) return;\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n\n onChange?.(newValue);\n },\n [controlledValue, onChange]\n );\n\n return (\n <SpinButtonWrapper $showSlider={showSlider} className={className} style={style}>\n {showSlider && (\n <SliderWrapper $size={size}>\n <Slider\n value={value}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onChange={handleValueChange}\n />\n </SliderWrapper>\n )}\n\n <NumberInput\n value={value}\n min={min}\n max={max}\n step={step}\n size={size}\n disabled={disabled}\n alert={alert}\n precision={precision}\n formatter={formatter}\n parser={parser}\n onChange={handleValueChange}\n />\n </SpinButtonWrapper>\n );\n};\n\nSpinButton.displayName = 'SpinButton';\n","import React, { useState, useCallback } from 'react';\nimport styled from 'styled-components';\n\nexport interface SwitchProps {\n /**\n * Whether the switch is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Size variant\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Whether the switch is disabled\n */\n disabled?: boolean;\n /**\n * Callback when checked state changes\n */\n onChange?: (checked: boolean) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst SwitchContainer = styled.label<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n width: ${sizeConfig.container.width};\n height: ${sizeConfig.container.height};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst Track = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n return `\n border-radius: ${sizeConfig.track.borderRadius};\n width: ${sizeConfig.track.width};\n height: ${sizeConfig.track.height};\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.track.backgroundDisabled};\n box-shadow: ${stateConfig.track.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.track.background};\n box-shadow: ${stateConfig.track.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover {\n background: ${stateConfig.track.backgroundHover};\n box-shadow: ${stateConfig.track.boxShadowHover};\n }\n `;\n }}\n`;\n\nconst Thumb = styled.div<{\n $size: 'small' | 'medium' | 'large';\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-style: solid;\n box-sizing: border-box;\n transition: ${({ theme }) => theme.components.switch.transition || 'all 0.2s ease'};\n\n ${({ $size, $checked, theme }) => {\n const sizeConfig = theme.components.switch[$size];\n const thumbSize = sizeConfig.thumb.size;\n const thumbOffset = sizeConfig.thumb.offset;\n const thumbBorderRadius = sizeConfig.thumb.borderRadius;\n const thumbBorderWidth = sizeConfig.thumb.borderWidth;\n\n return `\n width: ${thumbSize};\n height: ${thumbSize};\n border-radius: ${thumbBorderRadius};\n border-width: ${thumbBorderWidth};\n ${$checked ? 'right' : 'left'}: ${thumbOffset};\n `;\n }}\n\n ${({ $checked, $disabled, theme }) => {\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n if ($disabled) {\n return `\n background: ${stateConfig.thumb.backgroundDisabled};\n border-color: ${stateConfig.thumb.borderColorDisabled};\n box-shadow: ${stateConfig.thumb.boxShadowDisabled};\n `;\n }\n\n return `\n background: ${stateConfig.thumb.background};\n border-color: ${stateConfig.thumb.borderColor};\n box-shadow: ${stateConfig.thumb.boxShadow};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked ? theme.components.switch.on : theme.components.switch.off;\n\n return `\n :hover & {\n background: ${stateConfig.thumb.backgroundHover};\n border-color: ${stateConfig.thumb.borderColorHover};\n box-shadow: ${stateConfig.thumb.boxShadowHover};\n }\n `;\n }}\n`;\n\n/**\n * Switch Component\n *\n * A toggle switch for binary states\n *\n * @example\n * <Switch checked={true} onChange={(checked) => console.log(checked)} />\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n size = 'large',\n disabled = false,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n return (\n <SwitchContainer\n $size={size}\n $checked={checked}\n $disabled={disabled}\n className={className}\n style={style}\n >\n <HiddenInput\n type=\"checkbox\"\n checked={checked}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <Track\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <Thumb\n $size={size}\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n </SwitchContainer>\n );\n};\n\nSwitch.displayName = 'Switch';\n\n","import React, { useState, useCallback } from 'react';\nimport styled from 'styled-components';\n\nexport interface RadioProps {\n /**\n * Whether the radio is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Whether the radio is disabled\n */\n disabled?: boolean;\n /**\n * Value of the radio\n */\n value?: string | number;\n /**\n * Name attribute for grouping radios\n */\n name?: string;\n /**\n * ID attribute for the radio (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst RadioContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.radio.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst RadioOuter = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ $checked, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.radio.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.radio.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked\n ? theme.components.radio.checked\n : theme.components.radio.unchecked;\n\n return `\n ${RadioContainer}:hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n ${RadioContainer}:active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst RadioInner = styled.div<{\n $checked: boolean;\n $disabled: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n background: white;\n opacity: ${({ $checked }) => ($checked ? 1 : 0)};\n transition: opacity 0.2s ease;\n\n ${({ theme }) => {\n const dotSize = theme.components.radio.small.dotSize;\n return `\n width: ${dotSize};\n height: ${dotSize};\n `;\n }}\n`;\n\n/**\n * Radio Component\n *\n * A radio button for selecting one option from a group\n *\n * @example\n * <Radio checked={true} onChange={(e) => console.log(e.target.checked)} />\n */\nexport const Radio: React.FC<RadioProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n return (\n <RadioContainer\n $disabled={disabled}\n className={className}\n style={style}\n >\n <HiddenInput\n type=\"radio\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <RadioOuter\n $checked={checked}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n <RadioInner\n $checked={checked}\n $disabled={disabled}\n />\n </RadioContainer>\n );\n};\n\nRadio.displayName = 'Radio';\n\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\n\nexport interface CheckboxProps {\n /**\n * Whether the checkbox is checked\n */\n checked?: boolean;\n /**\n * Default checked state\n */\n defaultChecked?: boolean;\n /**\n * Whether the checkbox is in indeterminate state\n */\n indeterminate?: boolean;\n /**\n * Whether the checkbox is disabled\n */\n disabled?: boolean;\n /**\n * Value of the checkbox\n */\n value?: string | number;\n /**\n * Name attribute for the checkbox\n */\n name?: string;\n /**\n * ID attribute for the checkbox (used with htmlFor in labels)\n */\n id?: string;\n /**\n * Callback when checked state changes\n */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst CheckboxContainer = styled.label<{\n $disabled: boolean;\n}>`\n position: relative;\n display: inline-block;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n width: ${sizeConfig.size};\n height: ${sizeConfig.size};\n `;\n }}\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst CheckboxBox = styled.div<{\n $checked: boolean;\n $indeterminate: boolean;\n $disabled: boolean;\n $isFocused: boolean;\n}>`\n position: absolute;\n inset: 1px;\n border: 1px solid;\n transition: all 0.2s ease;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.checkbox.small;\n return `\n border-radius: ${sizeConfig.borderRadius};\n `;\n }}\n\n ${({ $checked, $indeterminate, $disabled, theme }) => {\n if ($disabled) {\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n return `\n background: ${stateConfig.backgroundDisabled};\n border-color: ${stateConfig.borderColorDisabled};\n `;\n }\n\n if ($checked) {\n const checkedConfig = theme.components.checkbox.checked;\n return `\n background: ${checkedConfig.background};\n border-color: ${checkedConfig.borderColor};\n `;\n }\n\n if ($indeterminate) {\n const indeterminateConfig = theme.components.checkbox.indeterminate;\n return `\n background: ${indeterminateConfig.background};\n border-color: ${indeterminateConfig.borderColor};\n `;\n }\n\n const uncheckedConfig = theme.components.checkbox.unchecked;\n return `\n background: ${uncheckedConfig.background};\n border-color: ${uncheckedConfig.borderColor};\n `;\n }}\n\n ${({ $disabled, $checked, $indeterminate, theme }) => {\n if ($disabled) return '';\n\n const stateConfig = $checked || $indeterminate\n ? theme.components.checkbox.checked\n : theme.components.checkbox.unchecked;\n\n return `\n ${CheckboxContainer}:hover & {\n background: ${stateConfig.backgroundHover};\n border-color: ${stateConfig.borderColorHover};\n }\n\n ${CheckboxContainer}:active & {\n border-color: ${stateConfig.borderColorActive};\n }\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $visible: boolean;\n}>`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n transition: opacity 0.2s ease;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ theme }) => {\n const iconSize = theme.components.checkbox.small.iconSize;\n return `\n width: ${iconSize.width};\n height: ${iconSize.height};\n `;\n }}\n\n svg, img {\n display: block;\n }\n`;\n\nconst DefaultIndeterminateIcon = styled.div`\n width: 8px;\n height: 2px;\n background: white;\n`;\n\n/**\n * Checkbox Component\n *\n * A checkbox for selecting multiple options\n *\n * @example\n * <Checkbox checked={true} onChange={(e) => console.log(e.target.checked)} />\n *\n * @example\n * // Indeterminate state\n * <Checkbox indeterminate={true} />\n */\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n indeterminate = false,\n disabled = false,\n value,\n name,\n id,\n onChange,\n className,\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState<boolean>(\n controlledChecked ?? defaultChecked\n );\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const checked = controlledChecked !== undefined ? controlledChecked : internalChecked;\n\n // Set indeterminate property on the native input element\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (controlledChecked === undefined) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(e);\n },\n [disabled, controlledChecked, onChange]\n );\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n return (\n <CheckboxContainer\n $disabled={disabled}\n className={className}\n style={style}\n >\n <HiddenInput\n ref={inputRef}\n type=\"checkbox\"\n id={id}\n checked={checked}\n value={value}\n name={name}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n />\n <CheckboxBox\n $checked={checked}\n $indeterminate={indeterminate}\n $disabled={disabled}\n $isFocused={isFocused}\n />\n {!indeterminate && (\n <IconWrapper $visible={checked}>\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"#fff\">\n <path d=\"M1.05426 3.16164L0 4.27945L3.50904 8L10 1.11781L8.94573 0L3.50904 5.76438L1.05426 3.16164Z\" />\n </svg>\n </IconWrapper>\n )}\n {indeterminate && (\n <IconWrapper $visible={indeterminate}>\n <DefaultIndeterminateIcon />\n </IconWrapper>\n )}\n </CheckboxContainer>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\n","import React, { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\n\ntype InputSize = 'small' | 'medium' | 'large' | 'extraLarge';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n /**\n * Input size\n */\n size?: InputSize;\n /**\n * Whether the input has an error state\n */\n error?: boolean;\n /**\n * Whether the input is in readonly mode\n */\n readOnly?: boolean;\n /**\n * Node to display before the input\n */\n prefixNode?: React.ReactNode;\n /**\n * Node to display after the input\n */\n suffixNode?: React.ReactNode;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties;\n}\n\nconst InputWrapper = styled.div<{\n $size: InputSize;\n $error: boolean;\n $disabled: boolean;\n $readOnly: boolean;\n $isFocused: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n transition: all 0.2s ease;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n height: ${sizeConfig.height};\n border-radius: ${sizeConfig.borderRadius};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n ${({ $error, $disabled, $readOnly, $isFocused, theme, $size }) => {\n const stateConfig = theme.components.input.outlined.state;\n\n let borderColor = stateConfig.borderColor;\n let background = stateConfig.background;\n let boxShadow = 'none';\n\n if ($disabled) {\n borderColor = stateConfig.borderColorDisabled;\n background = stateConfig.backgroundDisabled;\n } else if ($readOnly) {\n borderColor = stateConfig.borderColorReadonly;\n background = stateConfig.backgroundReadonly;\n } else if ($error) {\n borderColor = stateConfig.borderColorError;\n background = stateConfig.backgroundActive;\n } else if ($isFocused) {\n borderColor = stateConfig.borderColorActive;\n background = stateConfig.backgroundActive;\n const size = $size || 'medium';\n boxShadow = (theme.components.input.outlined as any)[size].boxShadowActive;\n }\n\n return `\n border: 1px solid ${borderColor};\n background: ${background};\n box-shadow: ${boxShadow};\n\n &:hover:not(:disabled) {\n ${!$disabled && !$readOnly && !$isFocused ? `\n border-color: ${stateConfig.borderColorHover};\n background: ${stateConfig.backgroundHover};\n ` : ''}\n }\n `;\n }}\n\n ${({ $disabled }) => $disabled && `\n cursor: not-allowed;\n opacity: 1;\n `}\n`;\n\nconst StyledInput = styled.input<{\n $size: InputSize;\n $disabled: boolean;\n $readOnly: boolean;\n}>`\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n min-width: 0;\n padding: 0;\n margin: 0;\n font-family: inherit;\n color: ${({ theme }) => theme.components.input.outlined.state.borderColorActive};\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n `;\n }}\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.palettes.transparency['30']};\n }\n\n ${({ $disabled, theme }) => $disabled && `\n cursor: not-allowed;\n color: ${theme.colors.palettes.transparency['30']};\n `}\n\n ${({ $readOnly }) => $readOnly && `\n cursor: default;\n `}\n`;\n\nconst PrefixNode = styled.div<{ $size: InputSize }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-right: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\nconst SuffixNode = styled.div<{ $size: InputSize }>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: 4px;\n\n ${({ $size, theme }) => {\n const size = $size || 'medium';\n const sizeConfig = (theme.components.input.outlined as any)[size];\n return `\n svg, img {\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n }\n `;\n }}\n`;\n\n/**\n * Input Component\n *\n * @example\n * // Basic input\n * <Input placeholder=\"Enter text\" />\n *\n * @example\n * // Input with prefix and suffix\n * <Input prefixNode={<SearchIcon />} suffixNode={<CloseIcon />} />\n *\n * @example\n * // Input with error state\n * <Input error placeholder=\"Enter text\" />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'medium',\n error = false,\n disabled = false,\n readOnly = false,\n prefixNode,\n suffixNode,\n className,\n style,\n onFocus,\n onBlur,\n ...rest\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n return (\n <InputWrapper\n $size={size}\n $error={error}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n $isFocused={isFocused}\n className={className}\n style={style}\n >\n {prefixNode && <PrefixNode $size={size}>{prefixNode}</PrefixNode>}\n <StyledInput\n ref={ref}\n $size={size}\n $disabled={!!disabled}\n $readOnly={!!readOnly}\n disabled={disabled}\n readOnly={readOnly}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n />\n {suffixNode && <SuffixNode $size={size}>{suffixNode}</SuffixNode>}\n </InputWrapper>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import React, { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Input, InputProps } from './Input';\n\nexport interface SearchInputProps extends Omit<InputProps, 'size' | 'prefixNode'> {\n /**\n * SearchInput size (only medium and large)\n */\n size?: 'extraLarge' | 'large';\n /**\n * Whether to show the clear button when input has value\n */\n clearable?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom search icon\n */\n searchIcon?: React.ReactNode;\n}\n\nconst SearchIconWrapper = styled.div<{ $size: 'extraLarge' | 'large' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n`;\n\nconst ClearButton = styled.button<{ $size: 'extraLarge' | 'large' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n margin: 0;\n outline: none;\n transition: opacity 0.2s ease;\n\n ${({ $size, theme }) => {\n const sizeConfig = theme.components.input.outlined[$size === 'extraLarge' ? 'extraLarge' : 'large'];\n return `\n width: ${sizeConfig.iconSize.width};\n height: ${sizeConfig.iconSize.height};\n `;\n }}\n\n svg {\n width: 100%;\n height: 100%;\n color: ${({ theme }) => theme.colors.palettes.transparency['100']};\n }\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n`;\n\nconst DefaultSearchIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.33333 12.6667C10.2789 12.6667 12.6667 10.2789 12.6667 7.33333C12.6667 4.38781 10.2789 2 7.33333 2C4.38781 2 2 4.38781 2 7.33333C2 10.2789 4.38781 12.6667 7.33333 12.6667Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 14L11.1 11.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst DefaultCloseIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4L4 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/**\n * SearchInput Component\n *\n * @example\n * // Basic search input\n * <SearchInput placeholder=\"Search...\" />\n *\n * @example\n * // Search input with clearable\n * <SearchInput clearable onClear={() => console.log('cleared')} />\n *\n * @example\n * // Large search input\n * <SearchInput size=\"large\" placeholder=\"Search...\" />\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n size = 'extraLarge',\n clearable = true,\n onClear,\n searchIcon,\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n ...rest\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n onClear?.();\n };\n\n const prefixNode = (\n <SearchIconWrapper $size={size}>\n {searchIcon || <DefaultSearchIcon />}\n </SearchIconWrapper>\n );\n\n const suffixNode = clearable && currentValue && !disabled && !readOnly ? (\n <ClearButton\n $size={size}\n onClick={handleClear}\n type=\"button\"\n tabIndex={-1}\n >\n <DefaultCloseIcon />\n </ClearButton>\n ) : null;\n\n return (\n <Input\n ref={ref}\n size={size}\n prefixNode={prefixNode}\n suffixNode={suffixNode}\n value={isControlled ? value : internalValue}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = 'SearchInput';\n\n","import React, { createContext, useContext } from 'react';\n\nexport type IconComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>;\nexport type IconRegistry = Record<string, IconComponent>;\n\nconst IconContext = createContext<IconRegistry | null>(null);\n\nexport interface IconProviderProps {\n /**\n * Icon registry mapping icon names to React components\n * Import from @officesdk/design/icons\n */\n icons: IconRegistry;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * IconProvider Component\n *\n * Provides icon registry to child components via Context\n *\n * @example\n * import { IconProvider } from '@officesdk/design';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <IconProvider icons={iconRegistry}>\n * <App />\n * </IconProvider>\n */\nexport const IconProvider: React.FC<IconProviderProps> = ({\n icons,\n children,\n}) => {\n return (\n <IconContext.Provider value={icons}>\n {children}\n </IconContext.Provider>\n );\n};\n\n/**\n * Hook to access icon registry from context\n */\nexport const useIconRegistry = () => {\n return useContext(IconContext);\n};\n\nIconProvider.displayName = 'IconProvider';\n\n\n","import React from 'react';\nimport styled from 'styled-components';\nimport { useIconRegistry } from './IconProvider';\n\nexport interface IconProps {\n /**\n * Icon name from registry (requires IconProvider)\n */\n name?: string;\n /**\n * Image URL for icon (e.g., PNG, JPG, or external SVG)\n */\n src?: string;\n /**\n * Custom icon element (takes precedence over name and src)\n */\n children?: React.ReactNode;\n /**\n * Size of the icon (px)\n */\n size?: number | string;\n /**\n * Color of the icon (only works with SVG icons, not image src)\n */\n color?: string;\n /**\n * Alt text for image icons\n */\n alt?: string;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n /**\n * Click handler\n */\n onClick?: (e: React.MouseEvent) => void;\n}\n\nconst IconContainer = styled.span<{\n $size: number | string;\n $color: string;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n height: ${({ $size }) => typeof $size === 'number' ? `${$size}px` : $size};\n color: ${({ $color }) => $color};\n flex-shrink: 0;\n line-height: 1;\n\n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n`;\n\n/**\n * Icon Component\n *\n * Renders icons from multiple sources with priority: children > src > name\n *\n * @example\n * // Using with IconProvider and registry\n * <Icon name=\"close\" size={16} />\n *\n * @example\n * // Using with image URL\n * <Icon src=\"/icons/custom-icon.svg\" size={24} />\n *\n * @example\n * // Using with custom icon element\n * <Icon><CustomSvg /></Icon>\n *\n * @example\n * // Using with imported icon component\n * import { CloseIcon } from '@officesdk/design/icons';\n * <Icon><CloseIcon /></Icon>\n */\nexport const Icon: React.FC<IconProps> = ({\n name,\n src,\n children,\n size = 16,\n color = 'currentColor',\n alt = 'icon',\n className,\n style,\n onClick,\n}) => {\n const registry = useIconRegistry();\n\n // Priority: custom children > src > registry icon by name\n let iconElement: React.ReactNode = children;\n\n // If no children, try src\n if (!iconElement && src) {\n iconElement = (\n <img\n src={src}\n alt={alt}\n style={{ width: '100%', height: '100%', display: 'block' }}\n />\n );\n }\n\n // If no children and no src, try registry\n if (!iconElement && name && registry) {\n const IconComponent = registry[name];\n if (IconComponent) {\n iconElement = <IconComponent />;\n } else if (process.env.NODE_ENV !== 'production') {\n console.warn(`Icon \"${name}\" not found in registry. Make sure IconProvider is set up.`);\n }\n }\n\n if (!iconElement) {\n if (process.env.NODE_ENV !== 'production' && !children && !name && !src) {\n console.warn('Icon: one of \"name\", \"src\", or \"children\" must be provided');\n }\n return null;\n }\n\n return (\n <IconContainer\n $size={size}\n $color={color}\n className={className}\n style={style}\n onClick={onClick}\n >\n {iconElement}\n </IconContainer>\n );\n};\n\nIcon.displayName = 'Icon';\n\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nexport interface ToastProps {\n /**\n * Toast variant type\n */\n variant?: 'success' | 'info' | 'error' | 'warn';\n /**\n * Toast message content\n */\n message: string;\n /**\n * Optional action button text\n */\n actionText?: string;\n /**\n * Action button click handler\n */\n onAction?: () => void;\n /**\n * Whether to show close button\n */\n closable?: boolean;\n /**\n * Close button click handler\n */\n onClose?: () => void;\n /**\n * Auto close duration in milliseconds (0 to disable)\n */\n duration?: number;\n /**\n * Custom icon (overrides default variant icon)\n */\n icon?: React.ReactNode;\n /**\n * Whether to show icon\n */\n showIcon?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst ToastContainer = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn';\n}>`\n display: inline-flex;\n align-items: center;\n gap: 8px;\n border: 1px solid;\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.08);\n\n ${({ theme }) => {\n const baseConfig = theme.components.toast;\n return `\n padding: ${baseConfig.padding};\n border-radius: ${baseConfig.borderRadius};\n font-size: ${baseConfig.fontSize};\n font-weight: ${baseConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.toast[$variant];\n return `\n background: ${variantConfig.background};\n border-color: ${variantConfig.borderColor};\n `;\n }}\n`;\n\nconst IconWrapper = styled.div<{\n $variant: 'success' | 'info' | 'error' | 'warn';\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n ${({ $variant, theme }) => {\n const iconConfig = theme.components.toast[$variant].icon;\n return `\n width: ${iconConfig.size.width};\n height: ${iconConfig.size.height};\n `;\n }}\n`;\n\nconst Message = styled.span`\n flex: 1;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.palettes.gray['120']};\n`;\n\nconst ActionButton = styled.button<{\n $variant: 'success' | 'info' | 'error' | 'warn';\n}>`\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n outline: none;\n\n ${({ $variant, theme }) => {\n const buttonConfig = theme.components.toast[$variant].button;\n return `\n font-size: ${buttonConfig.fontSize};\n font-weight: ${buttonConfig.fontWeight};\n color: ${buttonConfig.color};\n margin-left: ${buttonConfig.gap};\n `;\n }}\n\n &:hover {\n opacity: 0.8;\n }\n\n &:active {\n opacity: 0.6;\n }\n`;\n\nconst CloseButton = styled.button`\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${({ theme }) => theme.colors.palettes.gray['60']};\n flex-shrink: 0;\n outline: none;\n\n &:hover {\n color: ${({ theme }) => theme.colors.palettes.gray['100']};\n }\n\n &:active {\n color: ${({ theme }) => theme.colors.palettes.gray['120']};\n }\n`;\n\n// Default icons for each variant\nconst SuccessIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#4ea44b\"/>\n <path d=\"M6 10L9 13L14 7\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#5ba0e7\"/>\n <path d=\"M10 9V14M10 6H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#e95555\"/>\n <path d=\"M7 7L13 13M13 7L7 13\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst WarnIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#ebe361\"/>\n <path d=\"M10 6V11M10 14H10.01\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst CloseIconSvg = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n);\n\n/**\n * Toast Component\n *\n * A notification message component with different variants\n *\n * @example\n * <Toast variant=\"success\" message=\"Operation successful!\" />\n *\n * @example\n * <Toast\n * variant=\"info\"\n * message=\"New update available\"\n * actionText=\"Update\"\n * onAction={() => console.log('Update clicked')}\n * closable\n * />\n */\nexport const Toast: React.FC<ToastProps> = ({\n variant = 'info' as 'success' | 'info' | 'error' | 'warn',\n message,\n actionText,\n onAction,\n closable = false,\n onClose,\n duration = 0,\n icon,\n showIcon = true,\n className,\n style,\n}) => {\n const [visible, setVisible] = useState(true);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) {\n return null;\n }\n\n // Default icons based on variant\n const defaultIcons = {\n success: <SuccessIcon />,\n info: <InfoIcon />,\n error: <ErrorIcon />,\n warn: <WarnIcon />,\n };\n\n const iconElement = icon || defaultIcons[variant];\n\n return (\n <ToastContainer\n $variant={variant}\n className={className}\n style={style}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {showIcon && (\n <IconWrapper $variant={variant}>\n {iconElement}\n </IconWrapper>\n )}\n\n <Message>{message}</Message>\n\n {actionText && onAction && (\n <ActionButton\n $variant={variant}\n onClick={onAction}\n type=\"button\"\n >\n {actionText}\n </ActionButton>\n )}\n\n {closable && (\n <CloseButton\n onClick={handleClose}\n type=\"button\"\n aria-label=\"Close\"\n >\n <CloseIconSvg />\n </CloseButton>\n )}\n </ToastContainer>\n );\n};\n\nToast.displayName = 'Toast';\n\n\n","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport styled from 'styled-components';\nimport { Toast, ToastProps } from './Toast';\n\ninterface ToastItem extends Omit<ToastProps, 'onClose'> {\n id: string;\n}\n\ninterface ToastContextValue {\n showToast: (props: Omit<ToastProps, 'onClose'>) => string;\n hideToast: (id: string) => void;\n success: (message: string, options?: Partial<ToastProps>) => string;\n info: (message: string, options?: Partial<ToastProps>) => string;\n error: (message: string, options?: Partial<ToastProps>) => string;\n warn: (message: string, options?: Partial<ToastProps>) => string;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nconst ToastWrapper = styled.div`\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n\n > * {\n pointer-events: auto;\n }\n`;\n\nexport interface ToastContainerProps {\n /**\n * Maximum number of toasts to show at once\n */\n maxCount?: number;\n /**\n * Default duration for auto-close (ms)\n */\n defaultDuration?: number;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * ToastContainer Component\n *\n * Provides toast context and manages toast display\n *\n * @example\n * <ToastContainer>\n * <App />\n * </ToastContainer>\n */\nexport const ToastContainer: React.FC<ToastContainerProps> = ({\n maxCount = 5,\n defaultDuration = 3000,\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const showToast = useCallback((props: Omit<ToastProps, 'onClose'>) => {\n const id = `toast-${Date.now()}-${Math.random()}`;\n const newToast: ToastItem = {\n ...props,\n id,\n duration: props.duration ?? defaultDuration,\n };\n\n setToasts((prev) => {\n const updated = [...prev, newToast];\n // Limit to maxCount\n return updated.slice(-maxCount);\n });\n\n return id;\n }, [maxCount, defaultDuration]);\n\n const hideToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const success = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'success', message });\n }, [showToast]);\n\n const info = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'info', message });\n }, [showToast]);\n\n const error = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'error', message });\n }, [showToast]);\n\n const warn = useCallback((message: string, options?: Partial<ToastProps>) => {\n return showToast({ ...options, variant: 'warn', message });\n }, [showToast]);\n\n const contextValue: ToastContextValue = {\n showToast,\n hideToast,\n success,\n info,\n error,\n warn,\n };\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <ToastWrapper>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n onClose={() => hideToast(toast.id)}\n />\n ))}\n </ToastWrapper>\n </ToastContext.Provider>\n );\n};\n\n/**\n * Hook to access toast methods\n *\n * @example\n * const toast = useToast();\n * toast.success('Operation successful!');\n * toast.error('Something went wrong');\n */\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within ToastContainer');\n }\n return context;\n};\n\nToastContainer.displayName = 'ToastContainer';\n\n","import React, { useState, useCallback } from 'react';\nimport styled from 'styled-components';\n\nexport interface TabItem {\n /**\n * Unique key for the tab\n */\n key: string;\n /**\n * Tab label\n */\n label: string;\n /**\n * Whether the tab is disabled\n */\n disabled?: boolean;\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n}\n\nexport interface TabsProps {\n /**\n * Tab items\n */\n items: TabItem[];\n /**\n * Active tab key\n */\n activeKey?: string;\n /**\n * Default active tab key\n */\n defaultActiveKey?: string;\n /**\n * Tab variant\n */\n variant?: 'line' | 'card';\n /**\n * Tab size\n */\n size?: 'large';\n /**\n * Callback when tab changes\n */\n onChange?: (key: string) => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\nconst TabContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TabList = styled.div<{\n $variant: 'line' | 'card';\n}>`\n display: flex;\n align-items: center;\n position: relative;\n\n ${({ $variant, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n return `\n gap: ${variantConfig.layout.gap};\n `;\n }}\n\n ${({ $variant }) => {\n if ($variant === 'line') {\n return `\n border-bottom: 2px solid rgba(65, 70, 75, 0.1);\n `;\n }\n return '';\n }}\n`;\n\nconst TabItem = styled.button<{\n $variant: 'line' | 'card';\n $active: boolean;\n $disabled: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n border: none;\n outline: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n transition: all 0.2s ease;\n position: relative;\n white-space: nowrap;\n\n ${({ theme }) => {\n const sizeConfig = theme.components.tab.large;\n return `\n height: ${sizeConfig.height};\n padding: ${sizeConfig.padding};\n font-size: ${sizeConfig.fontSize};\n line-height: ${sizeConfig.lineHeight};\n border-radius: ${sizeConfig.borderRadius};\n font-weight: ${sizeConfig.fontWeight};\n `;\n }}\n\n ${({ $variant, $active, $disabled, theme }) => {\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n if ($disabled) {\n return `\n background: ${itemConfig.backgroundDisabled};\n border-color: ${itemConfig.borderColorDisabled};\n color: ${itemConfig.colorDisabled};\n `;\n }\n\n if ($active) {\n return `\n background: ${itemConfig.backgroundActive};\n border-color: ${itemConfig.borderColorActive};\n color: ${itemConfig.colorActive};\n `;\n }\n\n return `\n background: ${itemConfig.background};\n border-color: ${itemConfig.borderColor};\n color: ${itemConfig.color};\n `;\n }}\n\n ${({ $variant, $disabled, theme }) => {\n if ($disabled) return '';\n\n const variantConfig = theme.components.tab[$variant];\n const itemConfig = variantConfig.item;\n\n return `\n &:hover {\n background: ${itemConfig.backgroundHover};\n border-color: ${itemConfig.borderColorHover};\n color: ${itemConfig.colorHover};\n }\n `;\n }}\n\n ${({ $variant, $active }) => {\n if ($variant === 'line' && $active) {\n return `\n &::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n right: 0;\n height: 2px;\n background: currentColor;\n }\n `;\n }\n\n if ($variant === 'card') {\n return `\n border: 1px solid;\n ${\n $active\n ? `\n border-bottom-color: transparent;\n margin-bottom: -1px;\n `\n : ''\n }\n `;\n }\n\n return '';\n }}\n`;\n\n/**\n * Tab Component\n *\n * A tab component with line and card variants\n *\n * @example\n * <Tab\n * items={[\n * { key: '1', label: 'Tab 1' },\n * { key: '2', label: 'Tab 2' },\n * ]}\n * defaultActiveKey=\"1\"\n * />\n */\nexport const Tabs: React.FC<TabsProps> = ({\n items,\n activeKey: controlledActiveKey,\n defaultActiveKey,\n variant = 'line',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _size = 'large',\n onChange,\n className,\n style,\n}) => {\n const [internalActiveKey, setInternalActiveKey] = useState<string>(\n controlledActiveKey ?? defaultActiveKey ?? items[0]?.key ?? ''\n );\n\n const activeKey = controlledActiveKey !== undefined ? controlledActiveKey : internalActiveKey;\n\n const handleTabClick = useCallback(\n (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n\n onChange?.(key);\n },\n [controlledActiveKey, onChange]\n );\n\n return (\n <TabContainer className={className} style={style}>\n <TabList $variant={variant} role=\"tablist\">\n {items.map((item) => (\n <TabItem\n key={item.key}\n $variant={variant}\n $active={activeKey === item.key}\n $disabled={item.disabled || false}\n onClick={() => handleTabClick(item.key, item.disabled)}\n role=\"tab\"\n aria-selected={activeKey === item.key}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n type=\"button\"\n >\n {item.icon && <span>{item.icon}</span>}\n {item.label}\n </TabItem>\n ))}\n </TabList>\n </TabContainer>\n );\n};\n\nTabs.displayName = 'Tab';\n","import React from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip';\nimport 'rc-tooltip/assets/bootstrap.css';\n\nexport interface TooltipProps extends Partial<RcTooltipProps> {\n /**\n * Tooltip content\n */\n content: React.ReactNode;\n /**\n * Tooltip variant\n */\n variant?: 'black' | 'white';\n /**\n * Tooltip size (only for white variant)\n */\n size?: 'small' | 'large';\n /**\n * Children element that triggers the tooltip\n */\n children: React.ReactElement;\n /**\n * Function to get the container element for the tooltip\n */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n}\n/**\n * Tooltip Component\n *\n * Note: Coverage for this component may appear lower than expected due to\n * styled-components CSS-in-JS template literals (lines 68-200+) which are\n * not properly tracked by V8 coverage. The actual component logic is fully tested.\n *\n * @example\n * // Basic black tooltip\n * <Tooltip content=\"Tooltip text\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with small size\n * <Tooltip content=\"Tooltip text\" variant=\"white\" size=\"small\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // White tooltip with large size\n * <Tooltip content=\"Complex content\" variant=\"white\" size=\"large\">\n * <button>Hover me</button>\n * </Tooltip>\n */\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n variant = 'black',\n size = 'small',\n children,\n placement = 'top',\n trigger = ['hover'],\n overlay,\n overlayClassName,\n getPopupContainer,\n ...rest\n}) => {\n const overlayContent = React.useMemo(() => <div>{content}</div>, [content]);\n\n // Generate className for variant/size combination\n const variantClass = `tooltip-variant-${variant}`;\n const sizeClass = variant === 'white' ? `tooltip-size-${size}` : '';\n const combinedClassName = [variantClass, sizeClass, overlayClassName].filter(Boolean).join(' ');\n\n const tooltipProps = {\n overlay: overlay ?? overlayContent,\n placement,\n trigger,\n destroyTooltipOnHide: false,\n overlayClassName: combinedClassName,\n ...(getPopupContainer && { getPopupContainer }),\n ...rest,\n };\n\n return (\n <RcTooltip {...tooltipProps}>\n {children}\n </RcTooltip>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n","import { createGlobalStyle } from 'styled-components';\n\n\nconst paddingDistance = '5px';\nconst positionDistance = '0'\n\n// Tooltip global styles - includes base styles and all variant/size combinations\nexport const TooltipGlobalStyles = createGlobalStyle`\n .rc-tooltip {\n opacity: 1;\n }\n\n .rc-tooltip-hidden {\n display: none;\n }\n\n .rc-tooltip-placement-top,\n .rc-tooltip-placement-topLeft,\n .rc-tooltip-placement-topRight {\n padding-bottom: ${paddingDistance};\n }\n\n .rc-tooltip-placement-right,\n .rc-tooltip-placement-rightTop,\n .rc-tooltip-placement-rightBottom {\n padding-left: ${paddingDistance};\n }\n\n .rc-tooltip-placement-bottom,\n .rc-tooltip-placement-bottomLeft,\n .rc-tooltip-placement-bottomRight {\n padding-top: ${paddingDistance};\n }\n\n .rc-tooltip-placement-left,\n .rc-tooltip-placement-leftTop,\n .rc-tooltip-placement-leftBottom {\n padding-right: ${paddingDistance};\n }\n\n .rc-tooltip-inner {\n word-wrap: break-word;\n min-height: unset;\n }\n\n .rc-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n\n .rc-tooltip.rc-tooltip-zoom-enter,\n .rc-tooltip.rc-tooltip-zoom-leave {\n display: block;\n }\n\n .rc-tooltip-zoom-enter,\n .rc-tooltip-zoom-appear {\n opacity: 0;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28);\n animation-play-state: paused;\n }\n\n .rc-tooltip-zoom-leave {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05);\n animation-play-state: paused;\n }\n\n .rc-tooltip-zoom-enter.rc-tooltip-zoom-enter-active,\n .rc-tooltip-zoom-appear.rc-tooltip-zoom-appear-active {\n animation-name: rcToolTipZoomIn;\n animation-play-state: running;\n }\n\n .rc-tooltip-zoom-leave.rc-tooltip-zoom-leave-active {\n animation-name: rcToolTipZoomOut;\n animation-play-state: running;\n }\n\n @keyframes rcToolTipZoomIn {\n 0% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n 100% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n }\n\n @keyframes rcToolTipZoomOut {\n 0% {\n opacity: 1;\n transform-origin: 50% 50%;\n transform: scale(1, 1);\n }\n 100% {\n opacity: 0;\n transform-origin: 50% 50%;\n transform: scale(0, 0);\n }\n }\n\n /* Black variant */\n .tooltip-variant-black .rc-tooltip-inner {\n background: ${({ theme }) => theme.components.tooltip.black.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.black.borderColor};\n color: ${({ theme }) => theme.components.tooltip.black.color};\n border-radius: ${({ theme }) => theme.components.tooltip.black.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.black.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.black.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.black.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.black.lineHeight};\n font-weight: ${({ theme }) => theme.components.tooltip.black.fontWeight};\n max-width: ${({ theme }) => theme.components.tooltip.black.maxWidth};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-black.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${({ theme }) => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${({ theme }) => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${({ theme }) => theme.components.tooltip.black.background};\n }\n\n .tooltip-variant-black.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-black.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${({ theme }) => theme.components.tooltip.black.background};\n }\n\n /* White variant - small size */\n .tooltip-variant-white.tooltip-size-small .rc-tooltip-inner {\n background: ${({ theme }) => theme.components.tooltip.white.small.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.white.small.borderColor};\n color: ${({ theme }) => theme.components.tooltip.white.small.color};\n border-radius: ${({ theme }) => theme.components.tooltip.white.small.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.white.small.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.white.small.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.white.small.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.white.small.lineHeight};\n font-weight: ${({ theme }) => theme.components.tooltip.white.small.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${({ theme }) => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${({ theme }) => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${({ theme }) => theme.components.tooltip.white.small.background};\n }\n\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-small.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${({ theme }) => theme.components.tooltip.white.small.background};\n }\n\n /* White variant - large size */\n .tooltip-variant-white.tooltip-size-large .rc-tooltip-inner {\n background: ${({ theme }) => theme.components.tooltip.white.large.background};\n border: 1px solid ${({ theme }) => theme.components.tooltip.white.large.borderColor};\n color: ${({ theme }) => theme.components.tooltip.white.large.color};\n border-radius: ${({ theme }) => theme.components.tooltip.white.large.borderRadius};\n padding: ${({ theme }) => theme.components.tooltip.white.large.padding};\n box-shadow: ${({ theme }) => theme.components.tooltip.white.large.boxShadow};\n font-size: ${({ theme }) => theme.components.tooltip.white.large.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.white.large.lineHeight};\n font-weight: ${({ theme }) => theme.components.tooltip.white.large.fontWeight};\n text-align: left;\n text-decoration: none;\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-top .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-topLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-topRight .rc-tooltip-arrow {\n bottom: ${positionDistance};\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: ${({ theme }) => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-right .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-rightTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-rightBottom .rc-tooltip-arrow {\n left: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: ${({ theme }) => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-left .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-leftTop .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-leftBottom .rc-tooltip-arrow {\n right: ${positionDistance};\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: ${({ theme }) => theme.components.tooltip.white.large.background};\n }\n\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottom .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottomLeft .rc-tooltip-arrow,\n .tooltip-variant-white.tooltip-size-large.rc-tooltip-placement-bottomRight .rc-tooltip-arrow {\n top: ${positionDistance};\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: ${({ theme }) => theme.components.tooltip.white.large.background};\n }\n`;\n","import React, { createContext, useContext } from 'react';\nimport { ThemeProvider, } from 'styled-components';\nimport { IconProvider } from '../Icon/IconProvider';\nimport { ToastContainer } from '../Toast/ToastContainer';\nimport type { UIConfig } from './types';\nimport { TooltipGlobalStyles } from '../Tooltip';\n\nconst UIConfigContext = createContext<UIConfig | null>(null);\n\nexport interface UIConfigProviderProps {\n /**\n * UI configuration\n */\n config: UIConfig;\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * UIConfigProvider Component\n *\n * Unified provider for all UI components and global configurations\n * Includes ThemeProvider, IconProvider, ToastContainer, and other settings\n *\n * @example\n * import { UIConfigProvider } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * <UIConfigProvider config={{\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * maxCount: 5,\n * },\n * }}>\n * <App />\n * </UIConfigProvider>\n */\nexport const UIConfigProvider: React.FC<UIConfigProviderProps> = ({\n config,\n children,\n}) => {\n const {\n theme,\n icons = {},\n toast = {},\n } = config;\n\n const toastConfig = {\n maxCount: toast.maxCount ?? 5,\n defaultDuration: toast.defaultDuration ?? 3000,\n };\n\n const Provider = ThemeProvider as any;\n\n const TooltipStyles = TooltipGlobalStyles as any;\n\n return (\n <UIConfigContext.Provider value={config}>\n <Provider theme={theme}>\n <TooltipStyles />\n <IconProvider icons={icons}>\n <ToastContainer\n maxCount={toastConfig.maxCount}\n defaultDuration={toastConfig.defaultDuration}\n >\n {children}\n </ToastContainer>\n </IconProvider>\n </Provider>\n </UIConfigContext.Provider>\n );\n};\n\n/**\n * Hook to access UI configuration\n *\n * @example\n * const config = useUIConfig();\n * console.log(config.theme);\n * console.log(config.locale);\n */\nexport const useUIConfig = () => {\n const context = useContext(UIConfigContext);\n if (!context) {\n throw new Error('useUIConfig must be used within UIConfigProvider');\n }\n return context;\n};\n\nUIConfigProvider.displayName = 'UIConfigProvider';\n\n","import type { UIConfig } from './types';\n\n/**\n * Create UI configuration with default values\n *\n * @example\n * import { createUIConfig } from '@officesdk/design';\n * import { lightTheme } from '@officesdk/design/theme';\n * import { iconRegistry } from '@officesdk/design/icons';\n *\n * const config = createUIConfig({\n * theme: lightTheme,\n * icons: iconRegistry,\n * toast: {\n * defaultDuration: 3000,\n * },\n * });\n */\nexport const createUIConfig = (config: UIConfig): UIConfig => {\n return {\n // Theme is required\n theme: config.theme,\n\n // Icons with default\n icons: config.icons ?? {},\n\n // Toast with defaults\n toast: {\n maxCount: config.toast?.maxCount ?? 5,\n defaultDuration: config.toast?.defaultDuration ?? 3000,\n position: config.toast?.position ?? 'top-right',\n offset: {\n x: config.toast?.offset?.x ?? 24,\n y: config.toast?.offset?.y ?? 24,\n },\n },\n\n // Locale with default\n locale: config.locale ?? 'en-US',\n\n // I18n with defaults\n i18n: {\n toast: {\n closeLabel: config.i18n?.toast?.closeLabel ?? 'Close',\n },\n button: {\n loadingText: config.i18n?.button?.loadingText ?? 'Loading...',\n },\n common: {\n confirm: config.i18n?.common?.confirm ?? 'Confirm',\n cancel: config.i18n?.common?.cancel ?? 'Cancel',\n ok: config.i18n?.common?.ok ?? 'OK',\n },\n },\n\n // Z-index with defaults\n zIndex: {\n toast: config.zIndex?.toast ?? 9999,\n modal: config.zIndex?.modal ?? 10000,\n dropdown: config.zIndex?.dropdown ?? 1000,\n tooltip: config.zIndex?.tooltip ?? 1001,\n },\n\n // Animation with defaults\n animation: {\n duration: config.animation?.duration ?? 200,\n easing: config.animation?.easing ?? 'cubic-bezier(0.4, 0, 0.2, 1)',\n disabled: config.animation?.disabled ?? false,\n },\n\n // A11y with defaults\n a11y: {\n announceMessages: config.a11y?.announceMessages ?? true,\n focusVisible: config.a11y?.focusVisible ?? true,\n reduceMotion: config.a11y?.reduceMotion ?? false,\n },\n };\n};\n\n/**\n * Merge multiple configs (useful for extending base configs)\n */\nexport const mergeUIConfig = (baseConfig: UIConfig, ...configs: Partial<UIConfig>[]): UIConfig => {\n const merged = configs.reduce((acc, config) => ({\n ...acc,\n ...config,\n toast: { ...acc.toast, ...config.toast },\n i18n: { ...acc.i18n, ...config.i18n },\n zIndex: { ...acc.zIndex, ...config.zIndex },\n animation: { ...acc.animation, ...config.animation },\n a11y: { ...acc.a11y, ...config.a11y },\n }), baseConfig);\n\n return merged as UIConfig;\n};\n\n"]}
@@ -2453,5 +2453,5 @@ var mergeUIConfig = (baseConfig, ...configs) => {
2453
2453
  };
2454
2454
 
2455
2455
  export { Button, Checkbox, Icon, IconProvider, Input, NumberInput, Radio, SearchInput, Slider, SpinButton, Switch, Tabs, Toast, ToastContainer2 as ToastContainer, Tooltip, UIConfigProvider, createUIConfig, mergeUIConfig, useIconRegistry, useToast, useUIConfig };
2456
- //# sourceMappingURL=index.mjs.map
2457
- //# sourceMappingURL=index.mjs.map
2456
+ //# sourceMappingURL=index.js.map
2457
+ //# sourceMappingURL=index.js.map